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
指定した仮想アドレス範囲を、0 状態または無効な 状態 設定します。
Unmap.BaseAddress
0 状態に戻す GPU 仮想アドレス範囲の BaseAddress を指定します。 値はバイト単位で、4 KB のアラインが必要です。
Unmap.SizeInBytes
解放する範囲のサイズをバイト単位で指定します。 値は 4 KB に揃える必要があります。
Unmap.Protection
定義は、マッピング解除後のページ テーブルエントリの状態です。0 または noAccess します。
Copy
コピー操作では、ソース GPU 仮想アドレス範囲から宛先範囲にすべてのマッピングがコピーされます。 ソースと宛先の範囲は交差できます。 両方の範囲が予約済み (ゼロ) の仮想アドレス範囲に属している必要があります。
BaseAddress
ソース仮想アドレス範囲の開始仮想アドレスを指定します。 値はバイト単位で、4 KB のアラインが必要です。
Copy.SourceAddress
Copy.SizeInBytes
コピーする範囲のサイズをバイト単位で指定します。 値は 4 KB に揃える必要があります。
Copy.DestAddress
宛先仮想アドレス範囲の開始仮想アドレスを指定します。 値はバイト単位で、4 KB のアラインが必要です。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 |
サポートされる最小サーバー | Windows Server 2016 |
ヘッダー | d3dukmdt.h (D3dumddi.h、D3dkmddi.h を含む) |
関連項目
pfnReserveGpuVirtualAddressCb の
pfnUpdateGpuVirtualAddressCb の