D3DDDI_MAPGPUVIRTUALADDRESS 結構 (d3dukmdt.h)
D3DDDI_MAPGPUVIRTUALADDRESS結構會與 pfnMapGpuVirtualAddressCb 搭配使用,以將 GPU 虛擬位址範圍對應至特定配置範圍,或將它放入 Invalid 或 Zero 狀態。
語法
typedef struct D3DDDI_MAPGPUVIRTUALADDRESS {
D3DKMT_HANDLE hPagingQueue;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS MinimumAddress;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS MaximumAddress;
D3DKMT_HANDLE hAllocation;
D3DKMT_ALIGN64 D3DGPU_SIZE_T OffsetInPages;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInPages;
D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
D3DKMT_ALIGN64 UINT64 DriverProtection;
UINT Reserved0;
D3DKMT_ALIGN64 UINT64 Reserved1;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS VirtualAddress;
D3DKMT_ALIGN64 UINT64 PagingFenceValue;
} D3DDDI_MAPGPUVIRTUALADDRESS;
成員
hPagingQueue
裝置分頁佇列的句柄,用於作業。
BaseAddress
(選擇性) 如果非 NULL,視訊記憶體管理員會嘗試使用此地址作為對應的基位址。 如果 BaseAddress 到 BaseAddress+Size 的範圍沒有可用,則必須屬於先前透過呼叫 pfnReserveGpuVirtualAddressCb 或 pfnMapGpuVirtualAddressCb 取得的範圍。
BaseAddress 值是以位元組為單位,且必須對齊 CPU 分頁界限。 如果指定 NULL,視訊記憶體管理員會挑選指定 MinimumAddress 和 MaximumAddress 內配置的基礎位址。
MinimumAddress
(選擇性) 指定要針對對應範圍考慮的最低 GPU 虛擬位址。
MinimumAddress 值是以位元組為單位,且必須對齊 4KB 頁面。 當BaseAddress!= NULL 時,會忽略此參數。
MaximumAddress
(選擇性) 指定要針對對應範圍考慮的最大 GPU 虛擬位址。 視訊記憶體管理員會保證 BaseAddress+Size<= MaximumAddress。 如果 MaximumAddress 設定為 NULL,則視訊記憶體管理員將不會套用任何限制。
MaximumAddress 值是以位元組為單位,且必須對齊 4KB 頁面。 當BaseAddress!= NULL 時,會忽略此參數。
hAllocation
對應至 GPU 虛擬位址空間之配置的句柄。 指定 Protection.NoAccess 或 Protection.Zero 時,必須為 NULL。
OffsetInPages
指定必須對應的指定配置內起始頁的位移,以 4KB 為單位。
SizeInPages
以 4KB 頁面指定要對應的範圍大小。
Protection
D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE結構,指定對應之 GPU 虛擬位址上的保護。
DriverProtection
指定與所配置 VA 範圍相關聯的驅動程式特定 64 位保護值。 指定的驅動程式保護將用於呼叫 DxgkDdiUpdatePageTable ,以取得對應至此虛擬位址範圍的分頁表專案。
Reserved0
這個成員是保留的,而且應該設定為零。
Reserved1
這個成員是保留的,而且應該設定為零。
VirtualAddress
指派給配置的虛擬位址。
PagingFenceValue
當地圖作業在 GPU 上完成時,視訊記憶體管理員發出訊號的裝置分頁柵欄值。 使用者模式驅動程式必須確定此柵欄已淘汰或明確等候該柵欄上的 CPU 或 GPU,然後才允許 GPU 存取對應的範圍,或可能發生無法復原的錯誤。 可能會傳回零柵欄值,這表示作業已完成。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
最低支援的伺服器 | Windows Server 2016 |
標頭 | d3dukmdt.h (包含 D3dumddi.h、D3dkmddi.h) |