共用方式為


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。

從BaseAddressBaseAddress+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 是取消對應之後的分頁表項目狀態,可以是 ZeroNoAccess

Copy

複製作業會將來源 GPU 虛擬位址範圍的所有對應複製到目的地範圍。 允許來源和目的地範圍交集。 這兩個範圍都必須屬於保留 (零) 虛擬位址範圍。

BaseAddress

指定來源虛擬位址範圍的起始虛擬位址。 此值以位元組為單位,且必須對齊 4KB。

Copy.SourceAddress

Copy.SizeInBytes

指定要複製之範圍的大小,以位元組為單位。 此值必須對齊 4KB。

Copy.DestAddress

指定目的地虛擬位址範圍的起始虛擬位址。 此值以位元組為單位,且必須對齊 4KB。

規格需求

需求
最低支援的用戶端 Windows 10
最低支援的伺服器 Windows Server 2016
標頭 d3dukmdt.h (包含 D3dumddi.h、D3dkmddi.h)

另請參閱

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb