d3d:d3d12:descriptor
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
d3d:d3d12:descriptor [2015/09/20 16:10] – oga | d3d:d3d12:descriptor [2015/09/20 16:21] – [Descriptor] oga | ||
---|---|---|---|
行 1: | 行 1: | ||
====== RootSignature と Descriptor ====== | ====== RootSignature と Descriptor ====== | ||
+ | ===== Descriptor ===== | ||
+ | リソースの情報を格納した構造体です。 | ||
+ | GPU メモリに確保され、GPU が直接リソースを参照するために用いられます。 | ||
+ | |||
+ | Descriptor を格納するメモリは DescriptorHeap から確保されます。 | ||
+ | DescriptorHeap は GPU Memory に確保すると同時に System Memory にもミラーが作られ、CPU と GPU 両方からアクセスできるようになっています。 | ||
+ | |||
+ | - Descriptor の作成時 : CreateShaderResourceView 等 (CPU の Descriptor Address) | ||
+ | - 描画時 : SetGraphicsRootDescriptorTable (GPU の Descriptor Address) | ||
+ | |||
+ | |||
+ | Descriptor が必要なリソースは下記の通り | ||
+ | |||
+ | * ConstantBufferView | ||
+ | * ShaderResourceView (Texture) | ||
+ | * UnorderedAccessView | ||
+ | * Sampler | ||
+ | * RenderTargetView | ||
+ | * DepthStencilView | ||
+ | |||
+ | Descriptor が消費する Heap のメモリ量は GPU によって異なります。下記の表の単位は byte です。 | ||
+ | |||
+ | ^ GPU ^ FeatureLevel | ||
+ | | RADEON GCN 1.1 | 12_0 | 32 | 16 | 32 | 144 | | ||
+ | | GeForce Maxwell GM2 | 12_1 | 32 | 32 | 32 | 8 | | ||
+ | | Intel HD Graphcis Gen8 | 11_1 | 64 | 16 | 32 | 128 | | ||
+ | |||
+ | |||
+ | 古い D3D11 世代の GPU では Descriptor Handle が仮想的な実装になっている可能性があります。 | ||
+ | |||
+ | |||
+ | ===== ID3D12RootSignature ===== | ||
+ | |||
+ | リソースとシェーダーの対応付けを行うための API Slot を定義します。また Slot と Shader Register の対応付けも行います。 | ||
+ | D3D12 の API Slot と Register との対応付けはプログラマブルで自由に設計できます。 | ||
+ | |||
+ | RootSignature のサイズは固定で、最大 64エントリ (DWORD) のみ。 | ||
+ | |||
+ | * Cost 1 : DescriptorTable | ||
+ | * Cost 2 : Descriptor 直接 | ||
+ | * Cost 1 : Constant (32bit 単位で1、例えば float4 なら Cost4 になる) | ||
+ | |||
+ | 例えば RootSignature を ConstantBuffer の 32bit 直値だけで埋めるなら最大で 64個まで入ります。float4x4 を 4つ分。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== RootSignature と API ===== | ||
+ | |||
+ | Shader にパラメータを渡す方法のまとめ。 | ||
行 27: | 行 81: | ||
+ | ===== API による速度の違い ===== | ||
+ | 速度差の調査 | ||
d3d/d3d12/descriptor.txt · 最終更新: 2015/09/22 17:19 by oga