ld_structured (sm5 - asm)
Baca akses acak komponen 1-4 32bit dari buffer terstruktur.
ld_structured dest[.mask], srcAddress[.select_component], srcByteOffset[.select_component], src0[.swizzle] |
---|
Item | Deskripsi |
---|---|
Dest |
[in] Alamat hasil operasi. |
srcAddress |
[in] Menentukan indeks struktur yang akan dibaca. |
srcByteOffset |
[in] Menentukan offset byte dalam struktur untuk mulai membaca. |
src0 |
Buffer untuk dibaca. Parameter ini harus berupa SRV (t#), UAV (u#). Dalam shader komputasi juga dapat berupa grup utas memori bersama (g#). |
Keterangan
Data yang dibaca dari struktur setara dengan pseudocode berikut: di mana kita memiliki offset, alamat, penunjuk ke konten buffer, langkah sumber, dan data yang disimpan secara linier.
BYTE *BufferContents; // from SRV or UAV
UINT BufferStride; // from base resource
UINT srcAddress, srcByteOffset; // from source registers
BYTE *ReadLocation; // value to calculate
ReadLocation = BufferContents
+ BufferStride * srcAddress
+ srcByteOffset;
UINT32 Temp[4]; // used to make code shorter
// apply the source resource swizzle on source data
Temp = read_and_swizzle(ReadLocation, srcSwizzle);
// write the components to the output based on mask
ApplyWriteMask(dstRegister, dstWriteMask, Temp);
Pseudocode ini menunjukkan bagaimana fungsi operasi, tetapi data aktual tidak harus disimpan secara linier. Jika data tidak disimpan secara linier, operasi aktual instruksi harus sesuai dengan perilaku operasi di atas.
Alamat di luar batas pada u#/t# dari komponen 32-bit tertentu mengembalikan 0 untuk komponen tersebut, kecuali jika srcByteOffset, ditambah swizzle adalah apa yang menyebabkan akses keluar dari batas ke Anda#/t#, nilai yang dikembalikan untuk semua komponen tidak terdefinisi.
Di luar batas alamat pada g# (batas g#tertentu, dibandingkan dengan semua memori bersama) untuk komponen 32-bit tertentu mengembalikan hasil yang tidak terdefinisi.
srcByteOffset adalah argumen terpisah dari srcAddress karena biasanya harfiah. Pemisahan parameter ini belum dilakukan untuk atomik pada memori terstruktur.
cs_4_0 dan cs_4_1 mendukung instruksi ini untuk UAV, SRV, dan TGSM.
Instruksi ini berlaku untuk tahap shader berikut:
Puncak | Hull | Domain | Geometri | Pixel | Compute |
---|---|---|---|---|---|
X | X | X | X | X | X |
Karena UAV tersedia di semua tahap shader untuk Direct3D 11.1, instruksi ini berlaku untuk semua tahap shader untuk UAV 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 |
cs_4_0 dan cs_4_1 mendukung instruksi ini untuk UAV, SRV, dan TGSM.