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 (,例如,在電源管理) 期間收回整個畫面緩衝區內容的分頁作業。 分頁作業是由 Flags 成員中的分頁位欄位字段旗標來表示。
hContext
[in]如果驅動程式是多引擎感知 (,則驅動程式支援建立內容) ,這是提交要求源自的裝置內容的句柄。 內容句柄會提供給驅動程式的 DxgkDdiSubmitCommand 函式,該聯集DXGKARG_SUBMITCOMMAND包含。
對於某些分頁作業, hContext 是 NULL (,例如,在電源管理) 期間收回整個畫面緩衝區內容的分頁作業。 分頁作業是由 Flags 成員中的分頁位欄位字段旗標來表示。
DmaBufferSegmentId
[in]已分頁 DMA 緩衝區的記憶體區段標識碼。
如果驅動程式指出不要將 DMA 緩衝區對應至區段,則標識碼可以是零,方法是在呼叫驅動程式的 DxgkDdiCreateContext 函式中,將DXGK_CONTEXTINFO結構的 DmaBufferSegmentSet 成員設定為 0。 如果 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] pDmaBufferPrivateData 從 DMA 緩衝區私用數據的開頭開始,以位元組為單位,指定為與目前提交相關聯的私人數據部分的開頭。 非paging 要求的 DmaBufferPrivateDataSubmissionStartOffset 一律為零。
DmaBufferPrivateDataSubmissionEndOffset
[in]從 pDmaBufferPrivateData 指定之 DMA 緩衝區私用數據的開頭到與目前提交相關聯的私人數據部分結尾的位移,以位元組為單位。
SubmissionFenceId
[in]驅動程式可以在通道緩衝區中寫入柵欄命令的唯一標識碼,這是將 DMA 緩衝區排入佇列的緩衝區, (GPU) 執行。 如需這些標識碼類型的詳細資訊,請參閱 提供柵欄標識碼。
VidPnSourceId
[in]視訊呈現網路路徑中視訊簡訊簡訊的以零為起始的標識碼, (VidPN) 拓撲進行翻轉作業。 只有在 Flags 成員中設定 Flip 或 FlipWithNoWait 位欄位旗標時,這個成員才有效。
FlipInterval
[in] D3DDDI_FLIPINTERVAL_TYPE型別值,表示翻轉間隔 (也就是說,如果翻轉發生在零、一、二、三或四個垂直同步) 。 FlipInterval 只有在 Flip 位字段旗標設定 (,也就是 Flags 成員中的 TRUE) 時才有效。
Flags
[in] DXGK_SUBMITCOMMANDFLAGS 結構,可識別要提交之 DMA 緩衝區的相關信息。
EngineOrdinal
[in] 保留供日後使用。
DmaBufferVirtualAddress
這個成員是保留的,而且應該設定為零。 從 Windows 7 開始支援。
NodeOrdinal
建立內容之節點之以零起始的索引。 識別內容為 NULL 時的節點。 從 Windows 8 開始支援。
備註
顯示迷你埠驅動程式的 DxgkDdiSubmitCommand 函式必須注意,多個進程可以存取 hDevice 成員同時指定的裝置物件。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista (WDDM 1.0) |
標頭 | d3dkmddi.h (include D3dkmddi.h) |