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 を含む) |