ld_raw (sm5 - asm)

Lectura de acceso aleatorio de componentes de 1 a 4 32 bits desde un búfer sin procesar.

ld_raw dest[.mask], srcByteOffset[.select_component], src0[.swizzle]
Elemento Descripción
Dest
[in] Dirección del resultado de la operación.
srcByteOffset
[in] Especifica el desplazamiento desde el que se va a leer.
src0
[in] Componente que se va a leer.

Comentarios

src0 debe ser:

  • Cualquier fase del sombreador: SRV (t#)ld st
  • Sombreador de cálculo o sombreador de píxeles: UAV (u#)
  • Sombreador de proceso: memoria compartida del grupo de subprocesos (g#)

srcByteOffset especifica el valor base de 32 bits en memoria para una ventana de 4 valores secuenciales de 32 bits en los que se pueden leer los datos, en función del swizzle y mask en otros parámetros.

Los datos leídos del búfer sin procesar son equivalentes al siguiente pseudocódigo: donde tenemos el desplazamiento, la dirección, el puntero al contenido del búfer, el intervalo del origen y los datos almacenados linealmente.

                    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);

Fuera de los límites que se direcciona en u#/t# de cualquier componente de 32 bits determinado devuelve 0 para ese componente.

Fuera de los límites que se direccionan en g# (los límites de ese g#concreto, en lugar de toda la memoria compartida) para cualquier componente de 32 bits determinado devuelve un resultado indefinido.

cs_4_0 y cs_4_1 admiten esta instrucción para UAV y SRV.

Esta instrucción se aplica a las siguientes fases del sombreador:

Vértice Casco Dominio Geometría Píxel Compute
X x X x x x

Dado que las UMV están disponibles en todas las fases del sombreador para Direct3D 11.1, esta instrucción se aplica a todas las fases del sombreador para los UMV para el entorno de ejecución de Direct3D 11.1, que está disponible a partir de Windows 8.

Vértice Casco Dominio Geometría Píxel Compute
X x X x x X

Modelo de sombreador mínimo

Esta instrucción se admite en los siguientes modelos de sombreador:

Modelo de sombreador Compatible
Modelo de sombreador 5
Modelo de sombreador 4.1 No
Modelo de sombreador 4 No
Modelo de sombreador 3 (DirectX HLSL) No
Modelo de sombreador 2 (DirectX HLSL) No
Modelo de sombreador 1 (DirectX HLSL) No

cs_4_0 y cs_4_1 admiten esta instrucción para UAV y SRV.

Ensamblado del modelo de sombreador 5 (DirectX HLSL)