DXGKARG_SUBMITCOMMAND結構(d3dkmddi.h)
DXGKARG_SUBMITCOMMAND 結構描述顯示迷你埠驅動程式在呼叫 dxgkDdiSubmitCommand 期間提交至硬體命令執行單位的直接記憶體存取 (DMA) 緩衝區。
語法
typedef struct _DXGKARG_SUBMITCOMMAND {
union {
HANDLE hDevice;
HANDLE hContext;
};
UINT DmaBufferSegmentId;
PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
UINT DmaBufferSize;
UINT DmaBufferSubmissionStartOffset;
UINT DmaBufferSubmissionEndOffset;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
UINT DmaBufferPrivateDataSubmissionStartOffset;
UINT DmaBufferPrivateDataSubmissionEndOffset;
UINT SubmissionFenceId;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
DXGK_SUBMITCOMMANDFLAGS Flags;
UINT EngineOrdinal;
D3DGPU_VIRTUAL_ADDRESS DmaBufferVirtualAddress;
UINT NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;
成員
hDevice
[in]如果驅動程式不是多引擎感知(也就是驅動程式不支持內容建立),hDevice 是提交要求源自的顯示裝置(圖形內容)的句柄。 裝置句柄會提供給驅動程式的 DxgkDdiSubmitCommand 函式,該聯集包含 DXGKARG_SUBMITCOMMAND。
對於某些分頁作業,hDevice 為 NULL(例如,在電源管理期間收回整個畫面緩衝區內容的分頁作業)。 分頁作業會以 旗標 成員中的 分頁 位欄位字段旗標表示。
hContext
[in]如果驅動程式具有多引擎感知功能(也就是驅動程式支持內容建立),則為提交要求源自之裝置內容的句柄。 內容句柄會提供給驅動程式的 DxgkDdiSubmitCommand 函式,該函式 DXGKARG_SUBMITCOMMAND 包含。
對於某些分頁作業,hContext 為 NULL(例如,在電源管理期間收回整個畫面緩衝區內容的分頁作業)。 分頁作業會以 旗標 成員中的 分頁 位欄位字段旗標表示。
DmaBufferSegmentId
[in]DMA 緩衝區分頁到的記憶體區段標識碼。
如果驅動程式指示不要將 DMA 緩衝區對應至區段,則標識碼可以是零,方法是將 DXGK_CONTEXTINFO 結構的 DmaBufferSegmentSet 成員設定為 0,以呼叫驅動程式 的 dxgkDdiCreateContext 函式。 如果 DmaBufferSegmentId 為零,則 DMA 緩衝區會配置為系統記憶體的連續區塊。
DmaBufferPhysicalAddress
[in]PHYSICAL_ADDRESS數據類型(定義為LARGE_INTEGER),表示 DMA 緩衝區分頁所在的實體位址。
如果 DmaBufferSegmentId 為零,DmaBufferPhysicalAddress 是 DMA 緩衝區所在系統記憶體中的實體位址。
如果 DmaBufferSegmentId 為非零,DmaBufferPhysicalAddress 是 DMA 緩衝區的區段實體位址;也就是說,位址會指向 光圈區段的實體位址, 這是實體記憶體中定義的連續地址空間(DXGK_SEGMENTDESCRIPTOR。BaseAddress + DmaBuffer.SegmentOffset)。
請注意,DmaBufferPhysicalAddress 一律是指 DMA 緩衝區的開頭,即使驅動程式可能需要修補或提交不包含 DMA 緩衝區開頭的 DMA 緩衝區區段(也就是說,如果 DmaBufferSubmissionStartOffset 成員為非零)。
DmaBufferSize
[in]DMA 緩衝區的大小,以位元組為單位。
DmaBufferSize 代表 DMA 緩衝區的整個長度;不過,修補或送出的要求可能只參考 DMA 緩衝區的一部分。
DmaBufferSubmissionStartOffset
[in]位移,以位元組為單位,從 DMA 緩衝區的開頭到需要修補或送出之 DMA 緩衝區部分的開頭。 在修補時間收到的位移符合提交時間收到的位移。
DmaBufferSubmissionEndOffset
[in]位移,以位元組為單位,從 DMA 緩衝區的開頭到需要修補或送出之 DMA 緩衝區部分的結尾。 在修補時間收到的位移符合提交時間收到的位移。
pDmaBufferPrivateData
[in]驅動程式駐地私用數據的指標,與在 DxgkDdiRender、DxgkDdiPresent或 DxgkDdiPatch 函式期間填入的 DMA 緩衝區相關聯。
對於分頁作業,單一分頁緩衝區會用於多個獨立提交。 在該案例中,驅動程式可以藉由在呼叫其 DxgkDdiBuildPagingBuffer 函式時傳回適當的私人驅動程式數據指標,讓所有提交的單一驅動程式私人數據範圍,或針對每個提交傳回一個。
DmaBufferPrivateDataSize
[in]pDmaBufferPrivateData 以位元組為單位指向的私人驅動程序數據大小。
DmaBufferPrivateDataSize 代表私人驅動程序數據緩衝區的整個長度;不過,與目前提交相關聯的部分可能較小。
當此成員為零時,KMD 不應該驗證私人數據。
DmaBufferPrivateDataSubmissionStartOffset
[in]位移,以位元組為單位,從 DMA 緩衝區私用數據開頭 pDmaBufferPrivateData 指定與目前提交相關聯之私用數據部分的開頭。 DmaBufferPrivateDataSubmissionStartOffset 對非paging 要求一律為零。
DmaBufferPrivateDataSubmissionEndOffset
[in]位移,以位元組為單位,從 pDmaBufferPrivateData 的 DMA 緩衝區私用數據開頭, 指定到與目前提交相關聯之私人數據部分的結尾。
SubmissionFenceId
[in]驅動程式可以寫入通道緩衝區中柵欄命令的唯一標識碼,這是 DMA 緩衝區已排入佇列以執行圖形處理器 (GPU) 的緩衝區。 如需這些識別碼類型的詳細資訊,請參閱 提供柵欄識別碼。
VidPnSourceId
[in]視訊簡訊簡訊 (VidPN) 拓撲路徑中,以零起始的視訊呈現來源標識碼,用於翻轉作業。 只有當 Flip 或 FlipWithNoWait 位字段旗標在 Flags 成員中設定時,這個成員才有效。
FlipInterval
[in]D3DDDI_FLIPINTERVAL_TYPE型別值,指出翻轉間隔(也就是說,如果翻轉發生在零、一、二、三或四個垂直同步之後)。 只有在 旗標 成員中設定 Flip 位欄位字段旗標時,FlipInterval 才有效 。
Flags
[in]DXGK_SUBMITCOMMANDFLAGS 結構,識別要送出之 DMA 緩衝區的相關信息。
EngineOrdinal
[in]保留供日後使用。
DmaBufferVirtualAddress
這個成員是保留的,而且應該設定為零。 從 Windows 7 開始支援。
NodeOrdinal
建立內容之節點之以零起始的索引。 識別內容為 NULL 時的節點。 從 Windows 8 開始支援。
言論
顯示迷你埠驅動程式的 DxgkDdiSubmitCommand 函式必須注意,多個進程可以存取 hDevice 成員同時指定的裝置物件。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista (WDDM 1.0) |
標頭 | d3dkmddi.h (包括 D3dkmddi.h) |