次の方法で共有


D3D12_RESOURCE_STATES列挙 (d3d12.h)

リソースの使用方法に関するリソースの状態を指定する定数を定義します。

構文

typedef enum D3D12_RESOURCE_STATES {
  D3D12_RESOURCE_STATE_COMMON = 0,
  D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
  D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000,
  D3D12_RESOURCE_STATE_GENERIC_READ,
  D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE,
  D3D12_RESOURCE_STATE_PRESENT = 0,
  D3D12_RESOURCE_STATE_PREDICATION = 0x200,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
} ;

定数

 
D3D12_RESOURCE_STATE_COMMON
値: 0
アプリケーションは、さまざまな種類のグラフィックス エンジンでリソースにアクセスする場合にのみ、この状態に移行する必要があります。

具体的には、リソースは、COPY キューで使用される前 (以前は DIRECT/COMPUTE で使用されていた場合)、DIRECT/COMPUTE で使用される前 (以前に COPY で使用されていた場合) に共通の状態である必要があります。 この制限は、DIRECT キューと COMPUTE キューの間でデータにアクセスする場合には存在しません。

暗黙的な状態遷移を使用することで、COMMON 状態はコピー キュー上のあらゆる用途に利用できます。 詳細については、「 マルチエンジン同期」で「共通」を見つけます。

さらに、テクスチャが CPU に表示されるヒープで最初に作成されたと仮定して、CPU アクセスを有効にするには、テクスチャが共通状態である必要があります。
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
値: 0x1
サブリソースは、GPU によって頂点バッファーまたは定数バッファーとしてアクセスされる場合、この状態である必要があります。 これは読み取り専用の状態です。
D3D12_RESOURCE_STATE_INDEX_BUFFER
値: 0x2
サブリソースは、インデックス バッファーとして 3D パイプラインからアクセスされる場合、この状態である必要があります。 これは読み取り専用の状態です。
D3D12_RESOURCE_STATE_RENDER_TARGET
値: 0x4
リソースはレンダー ターゲットとして使用されます。 サブリソースは、レンダリング時、または ID3D12GraphicsCommandList::ClearRenderTargetView でクリアされるときに、この状態である必要があります。

これは書き込み専用の状態です。 レンダー ターゲットからシェーダー リソースとして読み取る場合、リソースは D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE または D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCEのいずれかに存在する必要があります。
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
値: 0x8
リソースは、順序付けられていないアクセスに使用されます。 サブリソースは、順序付けられていないアクセス ビューを介して GPU によってアクセスされる場合に、この状態である必要があります。 サブリソースは、 ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt または ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat でクリアされる場合にも、この状態である必要があります。 これは読み取り/書き込み状態です。
D3D12_RESOURCE_STATE_DEPTH_WRITE
値: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE は、他の状態と相互に排他的な状態です。 ID3D12GraphicsCommandList::ClearDepthStencilView は、特定のサブリソースをクリアする必要があることをフラグ (D3D12_CLEAR_FLAGS参照) が示している場合 (それ以外の場合はサブリソースの状態は重要ではありません)、または PSO で深度書き込みが有効になっているときに書き込み可能な深度ステンシル ビューで使用する場合 (「D3D12_DSV_FLAGS」を参照) に使用する必要があります (「D3D12_DEPTH_STENCIL_DESC」を参照)。
D3D12_RESOURCE_STATE_DEPTH_READ
値: 0x20
DEPTH_READは、他の状態と組み合わせることができる状態です。 サブリソースが読み取り専用の深度ステンシル ビューにある場合、または D3D12_DEPTH_STENCIL_DESC の深度書き込みが無効になっている場合に使用する必要があります。 他の読み取り状態 ( たとえば、D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE) と組み合わせて、深度テストまたはステンシル テストにリソースを使用し、同じ描画呼び出し内でシェーダーからアクセスできます。 描画呼び出しによって深度が書き込まれる場合、または clear コマンドが無効な場合に使用します。
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
値: 0x40
このリソースは、ピクセル シェーダー以外のシェーダーで使用されます。 サブリソースは、シェーダー リソース ビューを介して任意のステージ (ピクセル シェーダー ステージを除く) によって読み取られる前に、この状態である必要があります。 フラグが設定されている限り、このフラグを持つピクセル シェーダーでリソース D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE 引き続き使用できます。 これは読み取り専用の状態です。
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
値: 0x80
このリソースはピクセル シェーダーで使用されます。 サブリソースは、シェーダー リソース ビューを介してピクセル シェーダーによって読み取られる前に、この状態である必要があります。 これは読み取り専用の状態です。
D3D12_RESOURCE_STATE_STREAM_OUT
値: 0x100
リソースはストリーム出力と共に使用されます。 サブリソースは、ストリームアウト ターゲットとして 3D パイプラインからアクセスされる場合に、この状態である必要があります。 これは書き込み専用の状態です。
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
値: 0x200
リソースは間接引数として使用されます。
サブリソースは、間接描画メソッド ID3D12GraphicsCommandList::ExecuteIndirect に渡される引数バッファーとして使用される場合、この状態である必要があります。
これは読み取り専用の状態です。
D3D12_RESOURCE_STATE_COPY_DEST
値: 0x400
リソースは、コピー操作のコピー先として使用されます。
サブリソースは、コピー操作または blt 操作のコピー先として使用される場合、この状態である必要があります。
これは書き込み専用の状態です。
D3D12_RESOURCE_STATE_COPY_SOURCE
値: 0x800
リソースは、コピー操作のソースとして使用されます。
サブリソースは、コピー操作のソースまたは blt 操作として使用される場合、この状態である必要があります。
これは読み取り専用の状態です。
D3D12_RESOURCE_STATE_RESOLVE_DEST
値: 0x1000
リソースは、解決操作の宛先として使用されます。
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
値: 0x2000
リソースは、解決操作のソースとして使用されます。
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
値: 0x400000
これを初期状態としてバッファーを作成すると、リソースがレイトレーシング アクセラレーション構造であることを示します。これは、 id3D12GraphicsCommandList4::BuildRaytracingAccelerationStructureID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure、または ID3D12Device::CreateShaderResourceView使用 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTUREディメンション用です。

D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE状態に使用するリソースは、その状態で作成し、その状態から切り替える必要はありません。 また、その状態で作成されたリソースが移行されることもありません。 詳細については、GitHub の DirectX レイトレーシング (DXR) 機能仕様の 「アクセラレーション構造のメモリ制限 」を参照してください。

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
値: 0x1000000
Windows 10 以降、バージョン 1903 (10.0;ビルド 18362) は、リソースが可変レート シェーディング (VRS) の画面空間シェーディング レート イメージであることを示します。 詳細については、「 可変レート シェーディング (VRS)」を参照してください。
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READは、他の読み取り状態ビットの論理的に OR の組み合わせです。 これは、アップロード ヒープに必要な開始状態です。 一般に、アプリケーションでは、可能な限りD3D12_RESOURCE_STATE_GENERIC_READへの移行を避ける必要があります。これにより、キャッシュのフラッシュが早まったり、リソース レイアウトが変更されたり (圧縮/圧縮解除など)、不要なパイプラインの停止が発生したりする可能性があるためです。 代わりに、実際に使用されている状態にのみリソースを移行する必要があります。
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE と同等です。
D3D12_RESOURCE_STATE_PRESENT
値: 0
D3D12_RESOURCE_STATE_COMMONと同義です。
D3D12_RESOURCE_STATE_PREDICATION
値: 0x200
リソースは Predication に使用されます。
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
値: 0x10000
リソースは、デコード操作のソースとして使用されます。 たとえば、圧縮されたビットストリームの読み取りとデコード参照からの読み取りなどです。
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
値: 0x20000
リソースは、デコード操作の宛先として使用されます。 この状態は、デコード出力とヒストグラムに使用されます。
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
値: 0x40000
このリソースは、ビデオ処理中にビデオ データを読み取るために使用されます。つまり、リソースは、ビデオ エンコード (圧縮) などの処理操作でソースとして使用されます。
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
値: 0x80000
このリソースは、ビデオ処理中にビデオ データを書き込むのに使用されます。つまり、リソースは、ビデオ エンコード (圧縮) などの処理操作の宛先として使用されます。
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
値: 0x200000
リソースは、エンコード操作のソースとして使用されます。 この状態は、モーション推定の入力と参照に使用されます。
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
値: 0x800000
このリソースは、エンコード操作の宛先として使用されます。 この状態は、リゾルブ モーション ベクター ヒープ操作のターゲット テクスチャに使用されます。

解説

この列挙型は、次のメソッドで使用されます。

必要条件

   
ヘッダー d3d12.h

関連項目