store_raw (sm5 - asm)
1 から 4 個の 32 ビット コンポーネントをタイプレス メモリにランダムアクセスで書き込みます。
store_raw dest[.write_mask], dstByteOffset[.select_component], src0[.swizzle] |
---|
Item | 説明 |
---|---|
Dest |
[入力]メモリ アドレス。 |
dstByteOffset |
[入力]オフセット。 |
src0 |
[入力]書き込むコンポーネント。 |
注釈
この命令は、 src0 から dest に書き込まれた 1 から 4 個のコンポーネント *32 ビット コンポーネントを dstByteOffset のオフセットで実行します。 フォーマット変換は行われません。
dest は UAV (u#) である必要があります。コンピューティング シェーダーでは、スレッド グループ共有メモリ (g#) にすることもできます。
dstByteOffset は、他のパラメーターのスウィズルとマスクに応じて、データを書き込む可能性がある 4 つの連続する 32 ビット値のウィンドウに対して、メモリ内の基本 32 ビット値を指定します。
書き込まれるデータの場所は、アドレス、バッファーの内容へのポインター、および線形に格納されたデータを示す次の擬似コードと同じです。
BYTE *BufferContents; // from src0
UINT dstByteOffset; // source register
BYTE *WriteLocation; // value to calculate
// calculate writing location
WriteLocation = BufferContents
+ dstByteOffset;
// calculate the number of components to write
switch (dstWriteMask)
{
x: WriteComponents = 1; break;
xy: WriteComponents = 2; break;
xyz: WriteComponents = 3; break;
xyzw: WriteComponents = 4; break;
default: // only these masks are valid
}
// copy the data from the source register with
// the swizzle applied
memcpy(WriteLocation, swizzle(src0, src0.swizzle),
WriteComponents * sizeof(UINT32));
この擬似コードは、操作がどのように機能するかを示しますが、実際のデータを線形的に格納する必要はありません。 dest には、次のいずれかの書き込みマスクのみを指定できます: .x、.xy、.xyz、.xyzw。 書き込みマスクは、ギャップなしで書き込む 32 ビット コンポーネントの数を決定します。
u# での範囲外アドレス指定は、範囲外のメモリに何も書き込まれなかったことを意味します。境界内のすべての部分が正しく書き込まれます。
指定された 32 ビット コンポーネントに対する g# での範囲外アドレス指定 (すべての共有メモリではなく、その特定の g# の境界) により、すべての共有メモリのコンテンツ全体が未定義になります。
cs_4_0とcs_4_1は、UAV のこの命令をサポートします。
この命令は、次のシェーダー ステージに適用されます。
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 | X |
シェーダー モデル 4 | X |
シェーダー モデル 3 (DirectX HLSL) | X |
シェーダー モデル 2 (DirectX HLSL) | X |
シェーダー モデル 1 (DirectX HLSL) | X |