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 結構的陣列。 驅動程式會透過 hDeviceSpecificAllocation pAllocationList [DXGK_PRESENT_SOURCE_INDEX] 元素的成員來存取來源配置句柄(也就是元素 1)。 驅動程式會透過 hDeviceSpecificAllocation pAllocationList [DXGK_PRESENT_DESTINATION_INDEX] 元素的成員來存取目的地配置句柄(也就是元素 2)。
配置清單元素中指定的句柄是驅動程式在開啟配置時所傳回 DxgkDdiOpenAllocation 函式的裝置特定句柄。 如果作業沒有來源或目的地,則個別元素的 hDeviceSpecificAllocation 成員會 NULL。 此成員從 Windows 7 開始提供。
注意
配置清單 (元素 0) 中第一個專案 成員 hDeviceSpecificAllocation 一律 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色彩,由 ColorFill 位欄位字段旗標在 Flags 成員中設定,或是由 SrcColorKey 或 DstColorKey 位欄位旗標所指定的色彩索引鍵作業。 請注意,隨時只會設定其中一個 ColorFill、SrcColorKey和 DstColorKey 位欄位字段旗標。
如果主要格式為 palettized RGB,Color 包含調色盤索引,而不是來自 D3DDDIFORMAT 列舉類型的D3DDDIFMT_A8R8G8B8值。
[in] DstRect
用來計算延展因數之目的矩形的 RECT 結構。
[in] SrcRect
來源矩形的 RECT 結構,用來計算延展因數。
[in] SubRectCnt
pDstSubRects 指定之陣列中的目的地子矩形數目。
[in] pDstSubRects
目的地子矩形清單的 RECT 結構數位,DxgkDdiPresent 函式會複製到其中。
[in] FlipInterval
D3DDDI_FLIPINTERVAL_TYPE型別值,指出翻轉間隔(也就是說,如果翻轉發生在零、一、二、三或四個垂直同步之後)。
[in] Flags
DXGK_PRESENTFLAGS 結構,識別要執行的目前作業類型,以位字段旗標表示。 請注意,ColorFill、SrcColorKey和 Flags 中的 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 (包括 D3dkmddi.h) |