dcl_uav_structured (sm5 - asm)

(UAV) 声明无序访问视图供着色器使用。

dcl_uav_structured[_glc] dstUAV, structByteStride
说明
dstUAV
[in]UAV。
structByteStride
[in]结构的大小(以字节为单位)。

备注

dstUAV 是一个 u# 寄存器,声明为对具有指定步幅的结构化缓冲区的 UnorderedAccessView 的引用,该步幅必须绑定到 API 上的 UAV 槽 #。

结构的内容没有类型:对内存执行的操作可能会隐式地将数据解释为具有 类型。

structByteStride 是所声明的缓冲区中结构的大小(以字节为单位)。 此值必须大于零。 structByteStride 的类型为 uint,必须是 4 的倍数。

引用结构化 u# 的指令采用 2D 地址,其中第一个组件选取 [结构],第二个组件选取 [结构中的偏移量,以对齐字节为单位]。

_glc标志表示“全局一致”。 缺少_glc意味着 UAV 仅在计算着色器中声明为“组一致”,或在单个像素着色器调用中声明为“本地一致”。

_opc标志是顺序保留计数器。 它指示如果 UAV 绑定到槽 # (u#) ,则必须使用 COUNTER 标志创建它。 这意味着,着色器中的 imm_atomic_allocimm_atomic_consume 操作操作操作计数器,其值可以在着色器中用作对 UAV 中某个位置的永久引用。 着色器结束后,无法对数据重新排序。

缺少_opc标志意味着,如果着色器使用imm_atomic_allocimm_atomic_consume 指令,并且 UAV 绑定到槽 # (u) ,则必须使用 APPEND 标志创建,该标志提供不保证在着色器调用后保留顺序的计数器。

如果_opc标志不存在,并且着色器不包含 imm_atomic_allocimm_atomic_consume 指令,则允许使用 COUNTER 标志创建绑定到槽 # (u) 的 UAV, (计数器将被此着色器) 使用,没有标志 (没有计数器) ,但不使用 APPEND 标志。

注意

cs_4_0和cs_4_1支持 dcl_tgsm_structured,但不支持 dcl_tgsm_raw

此指令适用于以下着色器阶段:

顶点 外壳 Geometry 像素 计算
X X

由于 UAV 可用于 Direct3D 11.1 的所有着色器阶段,因此此指令适用于 Direct3D 11.1 运行时的所有着色器阶段,该阶段从Windows 8开始可用。

顶点 外壳 Geometry 像素 计算
X X X X X X

最小着色器模型

以下着色器模型中支持此指令:

着色器模型 支持
着色器模型 5
着色器模型 4.1
着色器模型 4
着色器模型 3 (DirectX HLSL)
着色器模型 2 (DirectX HLSL)
着色器模型 1 (DirectX HLSL)

注意

cs_4_0 和 cs_4_1 支持此说明。

着色器模型 5 程序集 (DirectX HLSL)