diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-03-19 13:35:06 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-03-19 13:35:29 +0300 |
commit | a3d3c80dd74a9a0bf57745ee4ddda79c65db1c5e (patch) | |
tree | d25177a70bf8faf014da958be8a4e0a994d915b9 /shaders-hlsl-no-opt | |
parent | 65aa0c35d6c2044e4be25e13e6f070caf9b75f31 (diff) |
GLSL/HLSL: Implement nonuniform qualifier for image atomics.
Diffstat (limited to 'shaders-hlsl-no-opt')
-rw-r--r-- | shaders-hlsl-no-opt/asm/comp/image-atomic-nonuniform.asm.sm51.nonuniformresource.comp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/shaders-hlsl-no-opt/asm/comp/image-atomic-nonuniform.asm.sm51.nonuniformresource.comp b/shaders-hlsl-no-opt/asm/comp/image-atomic-nonuniform.asm.sm51.nonuniformresource.comp new file mode 100644 index 00000000..5dad9dd5 --- /dev/null +++ b/shaders-hlsl-no-opt/asm/comp/image-atomic-nonuniform.asm.sm51.nonuniformresource.comp @@ -0,0 +1,55 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 32 +; Schema: 0 + OpCapability Shader + OpCapability ShaderNonUniform + OpCapability RuntimeDescriptorArray + OpCapability StorageImageArrayNonUniformIndexing + OpExtension "SPV_EXT_descriptor_indexing" + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID + OpExecutionMode %main LocalSize 1 1 1 + OpSource GLSL 450 + OpSourceExtension "GL_EXT_nonuniform_qualifier" + OpName %main "main" + OpName %uImage "uImage" + OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" + OpDecorate %uImage DescriptorSet 0 + OpDecorate %uImage Binding 0 + OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId + OpDecorate %30 NonUniform + %void = OpTypeVoid + %3 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %7 = OpTypeImage %uint 2D 0 0 0 2 R32ui +%_runtimearr_7 = OpTypeRuntimeArray %7 +%_ptr_UniformConstant__runtimearr_7 = OpTypePointer UniformConstant %_runtimearr_7 + %uImage = OpVariable %_ptr_UniformConstant__runtimearr_7 UniformConstant + %v3uint = OpTypeVector %uint 3 +%_ptr_Input_v3uint = OpTypePointer Input %v3uint +%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input + %uint_2 = OpConstant %uint 2 +%_ptr_Input_uint = OpTypePointer Input %uint +%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7 + %v2uint = OpTypeVector %uint 2 + %int = OpTypeInt 32 1 + %v2int = OpTypeVector %int 2 + %uint_1 = OpConstant %uint 1 + %uint_0 = OpConstant %uint 0 +%_ptr_Image_uint = OpTypePointer Image %uint + %main = OpFunction %void None %3 + %5 = OpLabel + %16 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_2 + %17 = OpLoad %uint %16 + %18 = OpCopyObject %uint %17 + %20 = OpAccessChain %_ptr_UniformConstant_7 %uImage %18 + %22 = OpLoad %v3uint %gl_GlobalInvocationID + %23 = OpVectorShuffle %v2uint %22 %22 0 1 + %26 = OpBitcast %v2int %23 + %30 = OpImageTexelPointer %_ptr_Image_uint %20 %26 %uint_0 + %31 = OpAtomicIAdd %uint %30 %uint_1 %uint_0 %uint_1 + OpReturn + OpFunctionEnd |