次の方法で共有


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
シェーダー モデル 4
シェーダー モデル 3 (DirectX HLSL)
シェーダー モデル 2 (DirectX HLSL)
シェーダー モデル 1 (DirectX HLSL)

シェーダー モデル 5 アセンブリ (DirectX HLSL)