imm_atomic_and (sm5 - asm)

立即原子按位 AND 到内存。 返回内存中 AND 之前的值。

imm_atomic_and dst0[.single_component_mask], dst1, dstAddress[.swizzle], src0[.select_component]
说明
dst0
[in]包含来自 dst1 的值,该值在 AND 之前。
dst1
[in]无序访问视图 (UAV) (u#) 。 在计算着色器中,这也可以是线程组共享内存 (g#) 。
dstAddress
[in]目标内存。
src0
具有 dst 的 AND 值。

备注

此指令执行操作数 src0 的 32 位与 dst1 的单个分量 32 位与每个组件地址 dstAddress 的 32 位 AND。

如果 dst1 是 u#,则它可能已声明为原始、类型化或结构化。 如果已键入,则必须将其声明为 UINT/SINT,绑定资源格式为 R32_UINT/_SINT。

如果 dst1 为 g#,则必须将其声明为原始或结构化。

将 AND 返回到 dst0 之前 dst1 内存中的值。

整个操作以原子方式执行。

从地址获取的组件数由 dst1 处声明的资源的维数决定。

如果着色器调用处于非活动状态,例如,如果像素在执行之前已被丢弃,或者像素/样本调用仅存在以充当派生的真实像素/样本的帮助程序,则此指令根本不会更改 dst1 内存,并且返回的值未定义。

u# 上的超出边界寻址会导致不会将任何内容写入内存,除非 u# 是结构化的,并且结构 (地址) 的第二个组件中的字节偏移导致越界访问,则 UAV 的整个内容将变得未定义。

u# 或 g# 上的越界寻址会导致未定义的结果返回到 dst0 中的着色器。

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

顶点 外壳 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)

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