ld _ structured (sm5 - asm)
Zufälliger Lesezugriff von 1-4 32-Bit-Komponenten aus einem strukturierten Puffer.
| : ld _ structured dst0 [ .mask ] , srcAddress [ .select component , _ ] srcByteOffset [ .select component , _ ] src0 [ .swizzle] |
|---|
| Element | Beschreibung |
|---|---|
| dst0 |
[in ] Die Adresse der Ergebnisse des Vorgangs. |
| srcAddress |
[in ] Gibt den Index der zu lesenden Struktur an. |
| srcByteOffset |
[in ] Gibt den Byteoffset in der -Struktur an, von der aus gelesen werden soll. |
| src0 |
Der Puffer, aus dem gelesen werden soll. Dieser Parameter muss ein SRV (t # ), UAV (u # ) sein. Im Compute-Shader kann es sich auch um gemeinsam genutzten Threadgruppenspeicher (g ) # sein. |
Hinweise
Die aus der -Struktur gelesenen Daten entsprechen dem folgenden Pseudocode: hier haben wir den Offset, die Adresse, den Zeiger auf den Pufferinhalt, den Schritt der Quelle und die linear gespeicherten Daten.
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 * srcByteOffset
+ srcOffset;
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);
Dieser Pseudocode zeigt, wie der Vorgang funktioniert, aber die tatsächlichen Daten müssen nicht linear gespeichert werden. Wenn die Daten nicht linear gespeichert werden, muss der tatsächliche Vorgang der Anweisung mit dem Verhalten des oben genannten Vorgangs übereinstimmen.
Die Adressierung außerhalb der Grenzen für u /t einer bestimmten 32-Bit-Komponente gibt 0 für diese Komponente zurück, außer wenn # # srcByteOffset und swizzle den Zugriff außerhalb der Grenzen für # Sie /t verursacht, ist der zurückgegebene Wert für alle Komponenten # nicht definiert.
Die Adressierung für g (die Grenzen dieses bestimmten g im Gegensatz zum freigegebenen Speicher) für eine bestimmte # 32-Bit-Komponente gibt ein nicht definiertes # Ergebnis zurück.
srcByteOffset ist ein separates Argument von srcAddress, da es sich im Allgemeinen um ein Literal handelt. Diese Parametertrennung wurde für Atomardaten im strukturierten Speicher nicht durchgeführt.
cs _ 4 _ 0 und cs _ 4 1 unterstützen diese Anweisung für _ UAV, SRV und TGSM.
Diese Anweisung gilt für die folgenden Shaderstufen:
| Scheitelpunkt | Rumpf | Domäne | Geometrie | Pixel | Compute |
|---|---|---|---|---|---|
| X | X | X | X | X | X |
Da UAVs in allen Shaderstufen für Direct3D 11.1 verfügbar sind, gilt diese Anweisung für alle Shaderstufen für UAVs für die Direct3D 11.1-Runtime, die ab Windows 8.
| Scheitelpunkt | Rumpf | Domäne | 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, SRV und TGSM.