d3d:d3d12
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| d3d:d3d12 [2015/06/20 21:37] – [Direct3D 12 (DirectX 12)] oga | d3d:d3d12 [2015/06/20 21:39] (現在) – 削除 oga | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== Direct3D 12 (DirectX 12) 詳細 ====== | ||
| - | |||
| - | |||
| - | * [[https:// | ||
| - | |||
| - | |||
| - | ===== GPU の対応 ===== | ||
| - | |||
| - | |||
| - | ^ ^ RADEON R3 8400 ^ GeForce 750 ti ^ HD 4600 ^ | ||
| - | ^ ::: ^ GCN ^ Maxwell | ||
| - | | D3D12_FEATURE_LEVELS | ||
| - | | DoublePrecisionFloatShaderOps | ||
| - | | OutputMergerLogicOp | ||
| - | | MinPrecisionSupport | ||
| - | | TiledResourcesTier | ||
| - | | ResourceBindingTier | ||
| - | | PSSpecifiedStencilRefSupported | ||
| - | | TypedUAVLoadAdditionalFormats | ||
| - | | ROVsSupported | ||
| - | | ConservativeRasterizationTier | ||
| - | | MaxGPUVirtualAddressBitsPerResource | ||
| - | | StandardSwizzle64KBSupported | ||
| - | | CrossNodeSharingTier | ||
| - | | CrossAdapterRowMajorTextureSupported | ||
| - | | VPAndRTArrayIndexFromAnyShaderFeedingRaster.. | ||
| - | | ResourceHeapTier | ||
| - | |||
| - | |||
| - | |||
| - | ===== API ===== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ==== Descriptor ==== | ||
| - | |||
| - | リソースの情報を格納した構造体。 | ||
| - | GPU メモリに確保され、GPU がリソースを参照するために用いられます。 | ||
| - | |||
| - | Descriptor を格納するメモリは DescriptorHeap から確保されます。 | ||
| - | DescriptorHeap は連続領域で、GPU にテーブルとして渡します。 | ||
| - | |||
| - | Descriptor が必要なリソースは下記の通り | ||
| - | |||
| - | * ConstantBufferView | ||
| - | * ShaderResourceView (Texture) | ||
| - | * UnorderedAccessView | ||
| - | * Sampler | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ==== ID3D12RootSignature ==== | ||
| - | |||
| - | リソースとシェーダーの対応付けを行うためのテーブルを定義します。 | ||
| - | C言語の struct のようなもので、レジスタとのバインド状態を指定します。 | ||
| - | あくまで対応付けのテンプレートであり、実際のバインド状態そのものは CommandList に入ります。 | ||
| - | |||
| - | RootSignature のサイズは固定で、最大 16エントリ (DWORD) のみ。 | ||
| - | |||
| - | * 1 DWORD : DescriptorTable | ||
| - | * 4 DWORD : Descriptor 直接 | ||
| - | * 1 DWORD : Constant (int 32bit) | ||
| - | |||
| - | 直接 Descriptor を格納すると 4個しか入らないので DescriptorTable と組み合わせて使う。 | ||
| - | |||
| - | Descriptor/ | ||
| - | |||
| - | * b0~ CBV ConstantBufferView | ||
| - | * t0~ SRV ShaderResourceView | ||
| - | * u0~ UAV UnorderedAccessView | ||
| - | * s0~ Sampler | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ==== Texture の転送 ==== | ||
| - | |||
| - | Buffer, Texture の転送もアプリケーション側で管理する必要があります。 | ||
| - | |||
| - | GPU 側の VRAM を直接 Map することはできません。 | ||
| - | 一旦 Map 可能な Buffer (Shared) に書き込み、GPU の Copy 命令 (DMA) で転送を行います。 | ||
| - | 本来 UMA 環境では Copy しなくても良いはずですが、Texture はメモリアクセス最適化のためにタイリング (swizzle) が必要なのでやはり Copy を行います。 | ||
| - | |||
| - | |||
| - | - Texture (または GPU 側 Buffer) 作成 (COPY_DEST) | ||
| - | - Buffer 作成 (COPY_SRC) | ||
| - | - レイアウト取得 (GetCopyableFootprints()) | ||
| - | - レイアウトにそって Buffer にデータを書き込み | ||
| - | - 転送用 CommandList を作成 | ||
| - | - CommandBuffer で CopyTextureRegion() 等の Copy 命令作成 | ||
| - | - 転送用 CommandQueue で CommandList を実行 | ||
| - | - CommandQueue に転送完了 Sginal (Fence) を設定 | ||
| - | - Fence で転送完了を確認したら不要な Buffer を Release | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
d3d/d3d12.1434803860.txt.gz · 最終更新: by oga
