store_raw (sm5 - asm)

將 1-4 32 位元件的隨機存取寫入到無類型記憶體中。

store_raw dest[.write_mask], dstByteOffset[.select_component], src0[.swizzle]
項目 描述
dest
[in]記憶體位址。
dstByteOffset
[in]位移。
src0
[in]要寫入的元件。

備註

此指令會執行從src0寫入的 1-4 元件 *32 位元件,以在 dstByteOffset中的位移處執行 dest。 沒有格式轉換。

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、.xyz、.xyz、.xyzw。 寫入遮罩會決定要寫入且沒有間距的 32 位元件數目。

u# 上的界限外定址表示不會寫入超出界限記憶體;系結中的任何部分都會正確寫入。

在 g# 上定址超出範圍 (該特定 g# 的界限,相對於任何指定 32 位元件的所有共用記憶體) ,都會使所有共用記憶體的整個內容變成未定義。

cs_4_0和cs_4_1支援此 UAV 指示。

本指示適用于下列著色器階段:

頂點 船體 網域 幾何形狀 像素 計算
X X

由於 Direct3D 11.1 的所有著色器階段都提供 UAV,因此本指示適用于 Direct3D 11.1 執行時間的所有著色器階段,從 Windows 8 開始提供。

頂點 船體 網域 幾何形狀 像素 計算
X X X X X X

最小著色器模型

下列著色器模型支援此指示:

著色器模型 支援
著色器模型 5
著色器模型 4.1
著色器模型 4
著色器模型 3 (DirectX HLSL)
著色器模型 2 (DirectX HLSL)
著色器模型 1 (DirectX HLSL)

著色器模型 5 元件 (DirectX HLSL)