ld_raw (sm5 - asm)

Zufälliger Lesezugriff von 1-4 32-Bit-Komponenten aus einem Rohpuffer.

ld_raw dest[.mask], srcByteOffset[.select_component], src0[.swizzle]
Element BESCHREIBUNG
Dest
[in] Die Adresse des Ergebnisses des Vorgangs.
srcByteOffset
[in] Gibt den Offset an, aus dem gelesen werden soll.
src0
[in] Die zu lesende Komponente.

Hinweise

src0 muss wie folgt sein:

  • Beliebige Shaderphase: SRV (t#)ld st
  • Compute-Shader oder Pixelshader: UAV (u#)
  • Compute-Shader: Freigegebener Arbeitsspeicher der Threadgruppe (g#)

srcByteOffset gibt den 32-Bit-Basiswert im Arbeitsspeicher für ein Fenster mit vier sequenziellen 32-Bit-Werten an, in dem Daten gelesen werden können, abhängig vom Swizzle und der Maske für andere Parameter.

Die aus dem Rohdatenpuffer gelesenen Daten entsprechen dem folgenden Pseudocode: Wobei der Offset, die Adresse, der Zeiger auf den Pufferinhalt, der Schritt der Quelle und die daten linear gespeichert sind.

                    BYTE *BufferContents;         // from src0
                    UINT srcByteOffset;           // from srcByteOffset
                    BYTE *ReadLocation;           // value to calculate
                    ReadLocation = BufferContents 
                                + 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);

Bei der Adressierung außerhalb der Grenzen für u#/t# einer bestimmten 32-Bit-Komponente wird für diese Komponente 0 zurückgegeben.

Die Adressierung außerhalb der Grenzen für g# (die Grenzen dieses bestimmten g#, im Gegensatz zum gesamten freigegebenen Speicher) für eine bestimmte 32-Bit-Komponente gibt ein undefiniertes Ergebnis zurück.

cs_4_0 und cs_4_1 unterstützen diese Anweisung für UAV und SRV.

Diese Anweisung gilt für die folgenden Shaderphasen:

Scheitelpunkt Hull Domain Geometrie Pixel Compute
X X X X X X

Da UAVs in allen Shaderphasen für Direct3D 11.1 verfügbar sind, gilt diese Anweisung für alle Shaderphasen für UAVs für die Direct3D 11.1-Runtime, die ab Windows 8 verfügbar ist.

Scheitelpunkt Hull Domain Geometrie Pixel Compute
X X X X X X

Minimales Shadermodell

Diese Anweisung wird in den folgenden Shadermodellen unterstützt:

Shadermodell Unterstützt
Shadermodell 5 ja
Shadermodell 4.1 Nein
Shadermodell 4 Nein
Shadermodell 3 (DirectX HLSL) Nein
Shadermodell 2 (DirectX HLSL) Nein
Shadermodell 1 (DirectX HLSL) Nein

cs_4_0 und cs_4_1 unterstützen diese Anweisung für UAV und SRV.

Assembly des Shadermodells 5 (DirectX HLSL)