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 は 0 に設定されます。

Map.BaseAddress

更新する GPU 仮想アドレス範囲の BaseAddress を指定します。 値はバイト単位で、4 KB のアラインメントが必要です。

BaseAddress から BaseAddress+SizeInBytes までの範囲全体が予約済み (ゼロ) またはマップされた状態である必要があります。または、pfnUpdateGpuVirtualAddressCb 操作が失敗します。 すべての操作の仮想アドレス範囲は、同じ pfnReserveGpuVirtualAddressCb 呼び出しによって予約されている仮想アドレス範囲に属している必要があります。

Map.SizeInBytes

更新する範囲のサイズをバイト単位で指定します。 値は 4 KB に揃える必要があります。

Map.hAllocation

範囲をマップする必要がある割り当てを指定します。

Map.AllocationOffsetInBytes

マップする割り当ての最初のページへのオフセットをバイト単位で指定します。 値は 4 KB に揃える必要があります。

Map.AllocationSizeInBytes

マップする割り当て範囲のサイズをバイト単位で指定します。 値は 4 KB に揃え、 Map.SizeInBytes より小さくする必要があります。 この値が 0 の場合は、 Map.SizeInBytes が使用されます。

この値が Map.SizeInBytes より大きい場合、 Map.SizeInBytes はその倍数である必要があります。 この場合、 Map.SizeInBytes/Map.AllocationSizeInBytes 仮想アドレス範囲は同じ割り当て範囲にマップされます。

MapProtect

指定された仮想アドレス範囲を特定の割り当て範囲にマップします。 割り当ては、送信時またはマッピング時に常駐する必要はありません。 ページ保護は、操作で指定されます。

MapProtect.BaseAddress

更新する GPU 仮想アドレス範囲の BaseAddress を指定します。 値はバイト単位で、4 KB のアラインメントが必要です。

BaseAddress から BaseAddress+SizeInBytes までの範囲全体が予約済み (ゼロ) またはマップされた状態である必要があります。または、pfnUpdateGpuVirtualAddressCb は失敗します。 すべての操作の仮想アドレス範囲は、同じ pfnReserveGpuVirtualAddressCb 呼び出しによって予約されている仮想アドレス範囲に属している必要があります。

MapProtect.SizeInBytes

更新する範囲のサイズをバイト単位で指定します。 値は 4 KB に揃える必要があります。

MapProtect.hAllocation

範囲をマップする必要がある割り当てを指定します。

MapProtect.AllocationOffsetInBytes

マップする割り当ての最初のページへのオフセットをバイト単位で指定します。 値は 4 KB に揃える必要があります。

MapProtect.AllocationSizeInBytes

マップする割り当て範囲のサイズをバイト単位で指定します。 値は 4 KB に揃え、Map より小さくする必要があります。SizeInBytes。 この値が 0 の場合は、 Map.SizeInBytes が使用されます。

この値が Map.SizeInBytes より小さい場合、 Map.SizeInBytes はその倍数である必要があります。 この場合、 Map.SizeInBytes/Map.AllocationSizeInBytes 仮想アドレス範囲は同じ割り当て範囲にマップされます。

MapProtect.Protection

ページの API 定義の保護を指定します。

MapProtect.DriverProtection

ページのドライバー固有の保護を指定します。

Unmap

指定した仮想アドレス範囲を ゼロ 状態または 無効な 状態にします。

Unmap.BaseAddress

ゼロ状態に戻す GPU 仮想アドレス範囲の BaseAddress を指定します。 値はバイト単位で、4 KB のアラインメントが必要です。

Unmap.SizeInBytes

解放する範囲のサイズをバイト単位で指定します。 値は 4 KB に揃える必要があります。

Unmap.Protection

Defines は、マッピング解除後のページ テーブルエントリの状態 ( Zero または NoAccess) です

Copy

コピー操作では、ソース GPU 仮想アドレス範囲から宛先範囲にすべてのマッピングがコピーされます。 ソースと宛先の範囲は交差できます。 両方の範囲は、予約済み (ゼロ) の仮想アドレス範囲に属している必要があります。

BaseAddress

ソース仮想アドレス範囲の開始仮想アドレスを指定します。 値はバイト単位で、4 KB のアラインメントが必要です。

Copy.SourceAddress

Copy.SizeInBytes

コピーする範囲のサイズをバイト単位で指定します。 値は 4 KB に揃える必要があります。

Copy.DestAddress

宛先仮想アドレス範囲の開始仮想アドレスを指定します。 値はバイト単位で、4 KB のアラインメントが必要です。

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー Windows Server 2016
Header d3dukmdt.h (D3dumddi.h、D3dkmddi.h を含む)

こちらもご覧ください

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb