DXGKARG_PRESENT 結構 (d3dkmddi.h)
DXGKARG_PRESENT 結構描述來源對主要複製作業。
語法
typedef struct _DXGKARG_PRESENT {
[out] VOID *pDmaBuffer;
[in] UINT DmaSize;
[in] VOID *pDmaBufferPrivateData;
[in] UINT DmaBufferPrivateDataSize;
union {
[in] DXGK_ALLOCATIONLIST *pAllocationList;
[in] DXGK_PRESENTALLOCATIONINFO *pAllocationInfo;
[in] DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
};
#if ...
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
[in] UINT PatchLocationListOutSize;
[in] DXGK_ALLOCATIONLIST *pAllocationList;
#else
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
[in] UINT PatchLocationListOutSize;
#endif
[in/out] UINT MultipassOffset;
[in] UINT Color;
[in] RECT DstRect;
[in] RECT SrcRect;
[in] UINT SubRectCnt;
[in] const RECT *pDstSubRects;
[in] D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
[in] DXGK_PRESENTFLAGS Flags;
[in] UINT DmaBufferSegmentId;
[in] PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
[in] UINT Reserved;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT NumSrcAllocations;
UINT NumDstAllocations;
UINT PrivateDriverDataSize;
PVOID pPrivateDriverData;
} DXGKARG_PRESENT;
成員
[out] pDmaBuffer
DMA 緩衝區開頭的指標,其對齊 4 KB。 此緩衝區可以透過 DMA 傳送至圖形硬體。 在顯示迷你埠驅動程式從 DxgkDdiPresent 函式傳回之前,驅動程式應該將 pDmaBuffer 設定為下一個空白位元組,後面接著驅動程式寫入的最後一個字節,或者驅動程式應該指向緩衝區空間以外的位置 (一個字節,) 沒有可用的空間。 如果緩衝區夠大,這個位置就是正確的。
[in] DmaSize
pDmaBuffer 指向之 DMA 緩衝區的大小,以位元組為單位。
[in] pDmaBufferPrivateData
與 pDmaBuffer 指向之 DMA 緩衝區相關聯的驅動程式駐留私人數據結構的指標。
[in] DmaBufferPrivateDataSize
pDmaBufferPrivateData 指向目前作業之私用數據結構中的位元元組數目。
[in] pAllocationList
描述複製作業來源、目的地或兩者之 DXGK_ALLOCATIONLIST 結構的陣列。 驅動程式會透過 pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (元素的 hDeviceSpecificAllocation 成員存取來源配置句柄,也就是元素 1) 。 驅動程式會透過 pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (元素的 hDeviceSpecificAllocation 成員存取目的地配置句柄,也就是元素 2) 。
配置清單中的元素中指定的句柄是驅動程式的 DxgkDdiOpenAllocation 函式在開啟配置時所傳回的裝置特定句柄。 如果作業沒有來源或目的地,則個別元素的 hDeviceSpecificAllocation 成員為 NULL。 此成員從 Windows 7 開始可供使用。
注意
配置清單中第一個專案的 hDeviceSpecificAllocation 成員 (元素 0) 一律為 NULL。
[in] pAllocationInfo
保留供系統使用。 顯示迷你埠驅動程序應該忽略此成員。 此成員從 Windows 7 開始可供使用。
[in] pPresentMultiPlaneOverlayInfo
DXGK_PRESENTMULTIPLANEOVERLAYINFO類型結構的指標,指定要顯示之 VidPN 輸入和重疊平面的資訊。
從 Windows 8 開始支援。
[in/out] pPatchLocationListOut
顯示迷你埠驅動程式填滿之修補程式位置清單 的D3DDDI_PATCHLOCATIONLIST 結構陣列。 在驅動程式從對 DxgkDdiPresent 函式的呼叫傳回之前,驅動程式必須將 pPatchLocationListOut 設定為下一個D3DDDI_PATCHLOCATIONLIST元素,該元素緊接在驅動程式更新的最後一個D3DDDI_PATCHLOCATIONLIST元素後面。
[in] PatchLocationListOutSize
pPatchLocationListOut 所指定修補程式位置清單中的元素數目。 顯示迷你埠驅動程式不需要填滿整個清單中的所有元素;驅動程式只能使用描述 DMA 緩衝區內修補程式位置所需的元素。
[in/out] MultipassOffset
如果顯示迷你埠驅動程式的 DxgkDdiPresent 函式必須傳回STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER以取得新的 DMA 緩衝區,則指定複製作業的進度的 UINT 值。 當驅動程式的 DxgkDdiPresent 函式第一次使用新的 RECT 清單呼叫時, MultipassOffset 會初始化為零。 在驅動程式從 DxgkDdiPresent 呼叫傳回之前,驅動程式會設定 MultipassOffset ,以顯示具有相同命令緩衝區之後續 DxgkDdiPresent 呼叫的複製進度。 Microsoft DirectX 圖形核心子系統不會進一步變更值。
[in] Color
色彩填滿作業中的A8R8G8B8色彩,該作業是由 Flags 成員中設定的 ColorFill 位字段旗標所指定,或是由 SrcColorKey 或 DstColorKey 位欄位字段旗標指定的色彩索引鍵作業所指定。 請注意,隨時只會設定其中一個 ColorFill、 SrcColorKey 和 DstColorKey 位字段旗標。
如果主要格式為 palettized RGB,Color 會包含調色盤索引,而不是 來自D3DDDIFORMAT 列舉類型的D3DDDIFMT_A8R8G8B8值。
[in] DstRect
用來計算延展因數之目的地矩形的 RECT 結構。
[in] SrcRect
用來計算延展因數的來源矩形 RECT 結構。
[in] SubRectCnt
pDstSubRects 指定之數位列中的目的地子矩形數目。
[in] pDstSubRects
DxgkDdiPresent 函式所複製目的地子矩形清單的 RECT 結構數位。
[in] FlipInterval
D3DDDI_FLIPINTERVAL_TYPE型別值,表示翻轉間隔 (也就是說,如果翻轉發生在零、一、二、三或四個垂直同步) 。
[in] Flags
DXGK_PRESENTFLAGS 結構,可識別要執行的位字段旗標中目前作業的類型。 請注意,Flags 中的 ColorFill、SrcColorKey 和 DstColorKey 位字段旗標互斥。
[in] DmaBufferSegmentId
DMA 緩衝區分頁所在的記憶體區段標識碼。 如果標識符為零,則 DMA 緩衝區無法正確分頁。
[in] DmaBufferPhysicalAddress
PHYSICAL_ADDRESS數據類型 (,定義為LARGE_INTEGER) ,表示 DMA 緩衝區分頁所在的實體位址。 如果實體位址為零,則 DMA 緩衝區無法正確分頁。
[in] Reserved
保留供系統使用。 驅動程式應該忽略此成員。
DmaBufferGpuVirtualAddress
D3DGPU_VIRTUAL_ADDRESS數據類型,指出 DMA 緩衝區分頁所在的虛擬位址。 如果實體位址為零,則 DMA 緩衝區無法正確分頁。
NumSrcAllocations
來源中的內容配置數目。
NumDstAllocations
目的地中的內容配置數目。
PrivateDriverDataSize
pPrivateDriverData 的大小。
pPrivateDriverData
包含選擇性私人驅動程序數據的緩衝區指標。
備註
SrcRect 和 DstRect 成員指定的來源和目的地矩形區域比率是用來計算延展因數。 驅動程式在執行複製作業時,可以考慮延展因數計算。
不需要驅動程式才能執行任何裁剪。 Microsoft DirectX 圖形核心子系統會將 pDstSubRects 成員指定的目的地子矩形清單預先省略至 DstRect 成員所指定目的地矩形的座標,以及螢幕 (主要) 。 請注意,如果 pDstSubRects 中提供目的地子矩形的清單,驅動程式應該只使用 SrcRect 和 DstRect 來計算延展因數,而且應該使用目的地子矩形的座標進行實際複製作業。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
標頭 | d3dkmddi.h (include D3dkmddi.h) |