D3D12_RESOURCE_DESC構造体 (d3d12.h)
テクスチャなどのリソースについて説明します。 この構造は広く使用されています。
構文
typedef struct D3D12_RESOURCE_DESC {
D3D12_RESOURCE_DIMENSION Dimension;
UINT64 Alignment;
UINT64 Width;
UINT Height;
UINT16 DepthOrArraySize;
UINT16 MipLevels;
DXGI_FORMAT Format;
DXGI_SAMPLE_DESC SampleDesc;
D3D12_TEXTURE_LAYOUT Layout;
D3D12_RESOURCE_FLAGS Flags;
} D3D12_RESOURCE_DESC;
メンバーズ
Dimension
D3D12_RESOURCE_DIMENSIONの 1 つのメンバー。リソースのディメンション (D3D12_RESOURCE_DIMENSION_TEXTURE1Dなど)、またはバッファー ((D3D12_RESOURCE_DIMENSION_BUFFER) であるかどうかを指定します。
Alignment
配置を指定します。
Width
リソースの幅を指定します。
Height
リソースの高さを指定します。
DepthOrArraySize
リソースの深さを 3D の場合は指定し、1D リソースまたは 2D リソースの配列の場合は配列サイズを指定します。
MipLevels
MIP レベルの数を指定します。
Format
DXGI_FORMATの 1 つのメンバーを指定します。
SampleDesc
DXGI_SAMPLE_DESC 構造体を指定します。
Layout
D3D12_TEXTURE_LAYOUTの 1 つのメンバーを指定します。
Flags
D3D12_RESOURCE_FLAGS 列挙定数としてのビットごとの OR フラグ。
備考
この構造体は次の場合に使用します。
- ID3D12Resource::GetDesc
- ID3D12Device::GetResourceAllocationInfo
- ID3D12Device::CreateCommittedResource
- ID3D12Device::CreatePlacedResource
- ID3D12Device::CreateReservedResource
- ID3D12Device::GetCopyableFootprints
- ヘルパー関数の数は、D3D12のヘルパー構造体と関数
参照してください。
2 つの一般的なリソースはバッファーとテクスチャであり、どちらもこの構造を使用しますが、フィールドの使用方法は大きく異なります。
バッファー
バッファーは連続したメモリ領域です。 Width は、予約済みリソースの D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT の MaxGPUVirtualAddressBitsPerResource フィールドまたはコミットされたリソースの MaxGPUVirtualAddressBitsPerProcess フィールドのいずれかになります。 ただし、GPU 仮想アドレス空間の枯渇、メモリ常駐の予算 (IDXGIAdapter3::QueryVideoMemoryInfo配置 は、64 KB (D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) または 0 (実質的には 64 KB) である必要があります。
書式 はDXGI_FORMAT_UNKNOWNする必要があります。
SampleDesc.Count
Layout はD3D12_TEXTURE_LAYOUT_ROW_MAJORする必要があります。バッファー メモリ レイアウトはアプリケーションによって認識され、行メジャー テクスチャ データはバッファーを介してマーシャリングされるのが一般的です。
フラグ は、マイナー例外を除き、バッファーのアプリケーションによって正確に入力される必要があります。 ただし、アプリケーションでは、バッファーへの効率への影響を気にすることなく、最大限の機能サポートを使用できます。 flags フィールドは、テクスチャに関連するプロパティを制御するためのものです。
テクスチャ
テクスチャは、連続するメモリ領域のテクセルの多次元配置であり、レンダリングとサンプリングの帯域幅を最大化するために大幅に最適化されています。 テクスチャ サイズは予測が難しく、アダプターごとに異なります。 アプリケーションでは、ID3D12Device::GetResourceAllocationInfo を使用して、サイズを正確に把握する必要があります。TEXTURE1D、TEXTURE2D、およびTEXTURE3Dは、すべての形式で直交的にサポートされるわけではありません。 D3D12_FORMAT_SUPPORT1でのD3D12_FORMAT_SUPPORT1_TEXTURE1D、D3D12_FORMAT_SUPPORT1_TEXTURE2D、およびD3D12_FORMAT_SUPPORT1_TEXTURE3Dの使用を参照してください。
Width、Height、DepthOrArraySize は、1 から、特定のフィーチャー レベルとテクスチャ ディメンションでサポートされる最大ディメンションの間である必要があります。 ただし、GPU 仮想アドレス空間の枯渇、メモリ常駐の予算 (IDXGIAdapter3::QueryVideoMemoryInfo
- TEXTURE1Dの場合:
- 幅 は、11_0 未満の機能レベルと、機能レベル 11_0 以上のD3D11_REQ_TEXTURE1D_U_DIMENSIONのD3D10_REQ_TEXTURE1D_U_DIMENSION以下にする必要があります。
- Height は 1 である必要があります。
- DepthOrArraySize は配列サイズとして解釈され、11_0 未満の機能レベルと機能レベル 11_0 以上のD3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSIONのD3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION以下である必要があります。
- TEXTURE2Dの場合:
- 幅 と 高さ は、11_0 未満のフィーチャ レベルと、D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSIONまたはフィーチャ レベル 11_0 以上のD3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION以下である必要があります。
- DepthOrArraySize は配列サイズとして解釈され、11_0 未満の機能レベルと、機能レベル 11_0 以上のD3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSIONのD3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION以下である必要があります。
- TEXTURE3Dの場合:
- 幅 と 高さ と DepthOrArraySize は、11_0 未満の機能レベルと、機能レベル 11_0 以上のD3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSIONのD3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION以下にする必要があります。
- DepthOrArraySize
は深度として解釈されます。
配置
配置 は、0、4 KB、64 KB、または 4 MB のいずれかです。配置 が 0 に設定されている場合、ランタイムは MSAA テクスチャに 4 MB、それ以外のすべてに 64 KB を使用します。 アプリケーションでは、テクスチャが小さい場合に、いくつかのテクスチャタイプに対して、これらのデフォルトよりも小さいアラインメントを選択できます。 不明なレイアウトと MSAA を持つテクスチャは、64 KB の配置で作成できます (以下で詳しく説明する小さいサイズの制限に合格した場合)。
MSAA を使用せず、レンダー ターゲットフラグも深度ステンシル フラグも持たない不明なレイアウトのテクスチャは、4KB の配置で作成できます (再び、小さいサイズの制限を渡します)。
アプリケーションは、最も詳細なミップ レベルの推定サイズが、より大きいアラインメント制限以下の合計である場合に、より小さいアラインメント されたリソースを作成できます。 ランタイムは、標準的なスウィズルと D3D12 タイル リソースのサイズを模倣する、サイズ推定のアーキテクチャに依存しないメカニズムを使用します。 ただし、タイル のサイズは、このような計算に対するより小さな配置制限になります。 たとえば、レンダー ターゲット以外のテクスチャと深度ステンシル以外のテクスチャを使用すると、ランタイムは 4 KB のほぼ等辺的なタイル図形を想定し、最も詳細なミップ レベルに必要なタイルの数を計算します。 タイルの数が 16 以下の場合、アプリケーションは 4 KB の整列されたリソースを作成できます。 そのため、幅と高さが特定の形式と MSAA に対して十分に小さい限り、任意の配列サイズと任意の数のミップ レベルの mipped tex2d 配列を 4 KB にすることができます。
MipLevels
形式ごとの制限については、D3D12_FORMAT_SUPPORT1 の D3D12_FORMAT_SUPPORT1_MIP フィールドを参照してください。 MSAA リソース、D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTERを持つテクスチャ、およびすべてのミップ レベルを排除D3D12_HEAP_FLAG_ALLOW_DISPLAYヒープ。
形式
形式 は、デバイスの機能レベルでサポートされている有効な形式である必要があります。SampleDesc の
SampleDesc.Count 1 より大きいか、0 以外の 品質 は、TEXTURE2DおよびD3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGETまたはD3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCILが設定されている場合にのみサポートされます。以下はサポートされていません。
- D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE、
- D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS、
- D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS、
- D3D12_HEAP_FLAG_ALLOW_DISPLAY
必要条件
要件 | 価値 |
---|---|
ヘッダー | d3d12.h |
関連項目
コア構造 の