共用方式為


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]驅動程式駐地私用數據的指標,與在 DxgkDdiRenderDxgkDdiPresentDxgkDdiPatch 函式期間填入的 DMA 緩衝區相關聯。

對於分頁作業,單一分頁緩衝區會用於多個獨立提交。 在該案例中,驅動程式可以藉由在呼叫其 DxgkDdiBuildPagingBuffer 函式時傳回適當的私人驅動程式數據指標,讓所有提交的單一驅動程式私人數據範圍,或針對每個提交傳回一個。

DmaBufferPrivateDataSize

[in]pDmaBufferPrivateData 以位元組為單位指向的私人驅動程序數據大小。

DmaBufferPrivateDataSize 代表私人驅動程序數據緩衝區的整個長度;不過,與目前提交相關聯的部分可能較小。

當此成員為零時,KMD 不應該驗證私人數據。

DmaBufferPrivateDataSubmissionStartOffset

[in]位移,以位元組為單位,從 DMA 緩衝區私用數據開頭 pDmaBufferPrivateData 指定與目前提交相關聯之私用數據部分的開頭。 DmaBufferPrivateDataSubmissionStartOffset 對非paging 要求一律為零。

DmaBufferPrivateDataSubmissionEndOffset

[in]位移,以位元組為單位,從 pDmaBufferPrivateData 的 DMA 緩衝區私用數據開頭, 指定到與目前提交相關聯之私人數據部分的結尾。

SubmissionFenceId

[in]驅動程式可以寫入通道緩衝區中柵欄命令的唯一標識碼,這是 DMA 緩衝區已排入佇列以執行圖形處理器 (GPU) 的緩衝區。 如需這些識別碼類型的詳細資訊,請參閱 提供柵欄識別碼

VidPnSourceId

[in]視訊簡訊簡訊 (VidPN) 拓撲路徑中,以零起始的視訊呈現來源標識碼,用於翻轉作業。 只有當 FlipFlipWithNoWait 位字段旗標在 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)

另請參閱

D3DDDI_FLIPINTERVAL_TYPE

DXGK_CONTEXTINFO

DXGK_SUBMITCOMMANDFLAGS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiBuildPagingBuffer

DxgkDdiCreateContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender

DxgkDdiSubmitCommand