D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION 結構 (d3dukmdt.h)
D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION 描述虛擬位址更新作業。
語法
typedef struct _D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION {
D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION_TYPE OperationType;
union {
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DKMT_HANDLE hAllocation;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationOffsetInBytes;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationSizeInBytes;
} Map;
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DKMT_HANDLE hAllocation;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationOffsetInBytes;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationSizeInBytes;
D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
D3DKMT_ALIGN64 UINT64 DriverProtection;
} MapProtect;
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
} Unmap;
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS SourceAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS DestAddress;
} Copy;
};
} D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION;
成員
OperationType
Map
將指定的虛擬位址範圍對應至指定的配置範圍。 配置不需要在提交時或對應時駐留。 讀寫保護會設定為頁面。 頁面的 DriverProtection 設定為零。
Map.BaseAddress
指定要更新之 GPU 虛擬位址範圍的 BaseAddress 。 此值以位元組為單位,且必須對齊 4KB。
從BaseAddress到BaseAddress+SizeInBytes的整個範圍必須處於保留 (零) 或對應狀態,或 pfnUpdateGpuVirtualAddressCb 作業將會失敗。 所有作業的虛擬位址範圍都必須屬於相同 pfnReserveGpuVirtualAddressCb 呼叫所保留的虛擬位址範圍。
Map.SizeInBytes
指定要更新之範圍的大小,以位元組為單位。 此值必須對齊 4KB。
Map.hAllocation
指定範圍必須對應的配置。
Map.AllocationOffsetInBytes
指定要對應之配置中第一頁的位移,以位元組為單位。 此值必須對齊 4KB。
Map.AllocationSizeInBytes
指定要對應之配置範圍的大小,以位元組為單位。 此值必須對齊 4KB,且必須小於 Map.SizeInBytes。 如果此值為零,則會使用 Map.SizeInBytes 。
當此值大於 Map.SizeInBytes 時, Map.SizeInBytes 必須是它的倍數。 在此情況下 ,Map.SizeInBytes/Map.AllocationSizeInBytes 虛擬位址範圍將會對應至相同的配置範圍。
MapProtect
將指定的虛擬位址範圍對應至指定的配置範圍。 配置不需要在提交時或對應時駐留。 頁面保護是在作業中指定。
MapProtect.BaseAddress
指定要更新之 GPU 虛擬位址範圍的 BaseAddress 。 此值以位元組為單位,且必須對齊 4KB。
從BaseAddress到BaseAddress+SizeInBytes的整個範圍必須處於保留 (零) 或對應狀態,或 pfnUpdateGpuVirtualAddressCb 將會失敗。 所有作業的虛擬位址範圍都必須屬於相同 pfnReserveGpuVirtualAddressCb 呼叫所保留的虛擬位址範圍。
MapProtect.SizeInBytes
指定要更新之範圍的大小,以位元組為單位。 此值必須對齊 4KB。
MapProtect.hAllocation
指定範圍必須對應的配置。
MapProtect.AllocationOffsetInBytes
指定要對應之配置中第一頁的位移,以位元組為單位。 此值必須對齊 4KB。
MapProtect.AllocationSizeInBytes
指定要對應之配置範圍的大小,以位元組為單位。 此值必須對齊 4KB,且必須小於 Map。SizeInBytes。 如果此值為零,則會使用 Map.SizeInBytes 。
當此值小於 Map.SizeInBytes 時, Map.SizeInBytes 必須是它的倍數。 在此情況下 ,Map.SizeInBytes/Map.AllocationSizeInBytes 虛擬位址範圍將會對應至相同的配置範圍。
MapProtect.Protection
指定頁面的 API 定義保護。
MapProtect.DriverProtection
指定頁面的驅動程式特定保護。
Unmap
將指定的虛擬位址範圍放入 零 狀態或 無效 狀態。
Unmap.BaseAddress
指定要回到零狀態的 GPU 虛擬位址範圍的 BaseAddress。 此值以位元組為單位,且必須對齊 4KB。
Unmap.SizeInBytes
指定要釋放之範圍的大小,以位元組為單位。 此值必須對齊 4KB。
Unmap.Protection
Defines 是取消對應之後的分頁表項目狀態,可以是 Zero 或 NoAccess。
Copy
複製作業會將來源 GPU 虛擬位址範圍的所有對應複製到目的地範圍。 允許來源和目的地範圍交集。 這兩個範圍都必須屬於保留 (零) 虛擬位址範圍。
BaseAddress
指定來源虛擬位址範圍的起始虛擬位址。 此值以位元組為單位,且必須對齊 4KB。
Copy.SourceAddress
Copy.SizeInBytes
指定要複製之範圍的大小,以位元組為單位。 此值必須對齊 4KB。
Copy.DestAddress
指定目的地虛擬位址範圍的起始虛擬位址。 此值以位元組為單位,且必須對齊 4KB。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
最低支援的伺服器 | Windows Server 2016 |
標頭 | d3dukmdt.h (包含 D3dumddi.h、D3dkmddi.h) |