DXGKCB_CREATECONTEXTALLOCATION回呼函式 (d3dkmddi.h)
DXGKCB_CREATECONTEXTALLOCATION 配置 GPU 內容或裝置特定內容。
語法
DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;
NTSTATUS DxgkcbCreatecontextallocation(
[in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}
參數
[in/out] unnamedParam1
DXGKARGCB_CREATECONTEXTALLOCATION 結構的指標,指定要配置之內容的屬性。
傳回值
如果成功,DXGKCB_CREATECONTEXTALLOCATION 會傳回 STATUS_SUCCESS。 否則,它會傳回 Ntstatus.h中定義的其中一個錯誤碼。
言論
從 WDDM 1.2 開始,顯示迷你埠驅動程式可以配置 GPU 特定內容(GPU 內容設定)或裝置特定內容(裝置內容配置)。
GPU 內容配置可讓 GPU 儲存 DMA 緩衝區的內容狀態,而 DMA 緩衝區會先佔其執行中間。 驅動程式會建立與 GPU 內容相關聯的配置,以在必要時儲存其狀態。 作系統可確保內容配置位於 GPU 的硬體執行佇列中之前,此內容中的命令才會常駐。 內容會保持常駐狀態,直到將來自另一個內容的命令放在硬體執行佇列中為止。
此外,作系統支援延遲 GPU 內容切換,方法是假設硬體內容狀態會在完成屬於內容的命令之後保留在 GPU 上。 如此一來,只有當來自不同內容的命令提交至硬體佇列時,才會在 GPU 上切換內容。
DXGKCB_XXX 函式是由 Dxgkrnl實作。 若要使用此回呼函式,請設定 DXGKARGCB_ALLOCATEPAGESFORMDL 的成員,然後透過 DXGKRNL_INTERFACE呼叫 DxgkCbCreateContextAllocation。
GPU 內容配置
GPU 內容配置只能針對非系統內容進行。 顯示迷你埠驅動程式會呼叫 DxgkDdiCreateContext來建立這些內容。 若要建立非系統內容,驅動程式會將 DXGK_CREATECONTEXTFLAGS 結構的 SystemContext 成員設定為零,並在 pCreateContext 參數的 pCreateContext 參數中傳遞此結構的指標。
裝置內容配置遵循類似的模型,不同之處在於它會針對屬於其相關聯之裝置的任何內容維持常駐狀態。 此模型可讓驅動程式使用 GPU 內容設定來儲存 GPU 內容儲存區域 (CSA) 數據,並使用裝置內容配置來儲存頁面數據表數據。
裝置內容配置
裝置內容配置只能針對非系統裝置進行。 顯示迷你埠驅動程式會呼叫 DxgkDdiCreateDevice來建立這些裝置。 若要建立非系統裝置,驅動程式會將 DXGK_CREATEDEVICEFLAGS 結構的 Flags.SystemDevice 成員設定為零,並在 pCreateDevice 參數 中傳遞此結構的指標。
顯示迷你連接埠驅動程式會呼叫 DXGKCB_DESTROYCONTEXTALLOCATION,以釋放透過 dxgkCbCreateContextAllocation 設定的內容資源。
目的地內容配置的虛擬位址
為了確保作系統為目的地內容配置設定有效的 (非 NULL) 虛擬位址 (InitContextResource->Destination->VirtualAddressDXGKARG_BUILDPAGINGBUFFER 結構的成員),當顯示迷你埠驅動程式呼叫 DxgkCbCreateContextAllocation 它必須:
- 設定 DXGK_ALLOCATIONINFOFLAGS 結構的 CpuVisible 和 Protected 成員。
- 設定 DXGKARGCB_CREATECONTEXTALLOCATION 結構的 SupportedSegmentSet 成員,只配置到光圈區段的頁面。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 (WDDM 1.2) |
支援的最低伺服器 | Windows Server 2012 |
目標平臺 | 桌面 |
標頭 | d3dkmddi.h (包括 D3dkmddi.h) |
IRQL | PASSIVE_LEVEL |
另請參閱
DXGKARGCB_CREATECONTEXTALLOCATION