Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2020-03-19 13:35:06 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2020-03-19 13:35:29 +0300
commita3d3c80dd74a9a0bf57745ee4ddda79c65db1c5e (patch)
treed25177a70bf8faf014da958be8a4e0a994d915b9 /shaders-hlsl-no-opt
parent65aa0c35d6c2044e4be25e13e6f070caf9b75f31 (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.comp55
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