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) |