dcl_uav_structured (sm5 - asm)
シェーダーで使用する順序なしのアクセス ビュー (UAV) を宣言します。
dcl_uav_structured[_glc] dstUAV, structByteStride |
---|
Item | 説明 |
---|---|
dstUAV |
[入力]UAV。 |
structByteStride |
[入力]構造体のサイズ (バイト単位)。 |
注釈
dstUAV は、API で UAV スロット # にバインドする必要がある、指定されたストライドを持つ構造化バッファーの UnorderedAccessView への参照として宣言された u# レジスタです。
構造体の内容には型がありません。メモリに対して実行される操作では、データが型を持つものとして暗黙的に解釈される場合があります。
structByteStride は、宣言されるバッファー内の構造体のサイズ (バイト単位) です。 これは、0 より大きい値である必要があります。 structByteStride は uint 型であり、4 の倍数である必要があります。
構造化 u# を参照する命令は 2D アドレスを受け取ります。ここで、最初のコンポーネントは [構造体] を選択し、2 番目のコンポーネントは [struct 内のオフセット (アラインされたバイト数)] を選択します。
_glc フラグは、"グローバルに一貫性のある" を意味します。 _glcが存在しないということは、UAV がコンピューティング シェーダーで "グループコヒーレント" としてのみ宣言されているか、単一ピクセル シェーダー呼び出しで "ローカルに一貫性がある" として宣言されていることを意味します。
_opc フラグは、順序保持カウンターです。 これは、UAV がスロット # (u#) にバインドされている場合は、COUNTER フラグを使用して作成されている必要があることを示します。 つまり、シェーダー のimm_atomic_alloc 操作または imm_atomic_consume 操作は、UAV 内の場所への永続的な参照としてシェーダーで使用できる値を持つカウンターを操作します。 シェーダーが終了した後は、データの順序を変更できません。
_opc フラグがないということは、シェーダーがimm_atomic_alloc または imm_atomic_consume 命令を使用し、UAV がスロット # (u) にバインドされている場合は、APPEND フラグを使用して作成されている必要があります。これにより、シェーダー呼び出し後に順序が保持されることを保証しないカウンターが提供されます。
_opc フラグが存在せず、シェーダーに imm_atomic_alloc または imm_atomic_consume 命令が含まれていない場合、スロット # (u) にバインドされた UAV が COUNTER フラグ (このシェーダーでは使用されません)、フラグなし (カウンターなし) で作成できますが、APPEND フラグは使用されません。
Note
cs_4_0とcs_4_1では dcl_tgsm_structuredがサポートされますが、 dcl_tgsm_rawはサポートされていません。
この命令は、次のシェーダー ステージに適用されます。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
X | X |
UAV は Direct3D 11.1 のすべてのシェーダー ステージで使用できるため、この命令は Direct3D 11.1 ランタイムのすべてのシェーダー ステージに適用されます。これは、Windows 8以降で使用できます。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
X | X | X | X | X | X |
最小シェーダー モデル
この命令は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | no |
シェーダー モデル 4 | no |
シェーダー モデル 3 (DirectX HLSL) | no |
シェーダー モデル 2 (DirectX HLSL) | no |
シェーダー モデル 1 (DirectX HLSL) | no |
Note
この命令は、cs_4_0とcs_4_1でサポートされています。