store_raw (sm5 - asm)
Penulisan akses acak komponen 1-4 32bit ke dalam memori tanpa jenis.
store_raw dest[.write_mask], dstByteOffset[.select_component], src0[.swizzle] |
---|
Item | Deskripsi |
---|---|
Dest |
[in] Alamat memori. |
dstByteOffset |
[in] Offset. |
src0 |
[in] Komponen yang akan ditulis. |
Keterangan
Instruksi ini melakukan komponen 1-4 *komponen 32-bit yang ditulis dari src0 ke tujuan pada offset di dstByteOffset. Tidak ada konversi format.
dest harus UAV (u#), atau di shader komputasi juga dapat berupa memori bersama grup utas (g#).
dstByteOffset menentukan nilai dasar 32-bit dalam memori untuk jendela 4 nilai 32-bit berurutan di mana data dapat ditulis, tergantung pada swizzle dan mask pada parameter lain.
Lokasi data yang ditulis setara dengan pseudocode berikut yang menunjukkan alamat, penunjuk ke konten buffer, dan data yang disimpan secara linear.
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));
Pseudocode ini menunjukkan bagaimana fungsi operasi, tetapi data aktual tidak harus disimpan secara linier. dest hanya dapat memiliki masker tulis yang merupakan salah satu dari berikut ini: .x, .xy, .xyz, .xyzw. Masker tulis menentukan jumlah komponen 32bit untuk ditulis tanpa celah.
Di luar batas alamat pada u# berarti tidak ada yang ditulis ke memori di luar batas; setiap bagian yang berada dalam batas ditulis dengan benar.
Di luar batas alamat pada g# (batas g#tertentu, dibandingkan dengan semua memori bersama) untuk komponen 32-bit tertentu menyebabkan seluruh konten semua memori bersama menjadi tidak terdefinisi.
cs_4_0 dan cs_4_1 mendukung instruksi ini untuk UAV.
Instruksi ini berlaku untuk tahap shader berikut:
Puncak | Hull | Domain | Geometri | Pixel | Compute |
---|---|---|---|---|---|
X | X |
Karena UAV tersedia di semua tahap shader untuk Direct3D 11.1, instruksi ini berlaku untuk semua tahap shader untuk runtime Direct3D 11.1, yang tersedia dimulai dengan Windows 8.
Puncak | Hull | Domain | Geometri | Pixel | Compute |
---|---|---|---|---|---|
X | X | X | X | X | X |
Minimum Shader Model
Instruksi ini didukung dalam model shader berikut:
Shader Model | Didukung |
---|---|
Model Shader 5 | ya |
Model Shader 4.1 | tidak |
Model Shader 4 | tidak |
Shader Model 3 (DirectX HLSL) | tidak |
Shader Model 2 (DirectX HLSL) | tidak |
Shader Model 1 (DirectX HLSL) | tidak |