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>2019-01-04 18:08:10 +0300
committerGitHub <noreply@github.com>2019-01-04 18:08:10 +0300
commit211abfb7ef6f300606c8b28c31c97969a9835fb9 (patch)
tree2ba9a02e4c6ce5494ba5866e9a4a707566e9b249 /shaders
parenta1249ecc600dd8e23e2eb66308595550e420d593 (diff)
parent9728f9c1b704061098219d05fe1cb8d4aaec06b6 (diff)
Merge pull request #799 from KhronosGroup/fix-780
Use correct block-name / other-name aliasing rules.
Diffstat (limited to 'shaders')
-rw-r--r--shaders/asm/comp/block-name-alias-global.asm.comp119
1 files changed, 119 insertions, 0 deletions
diff --git a/shaders/asm/comp/block-name-alias-global.asm.comp b/shaders/asm/comp/block-name-alias-global.asm.comp
new file mode 100644
index 00000000..85f6cc04
--- /dev/null
+++ b/shaders/asm/comp/block-name-alias-global.asm.comp
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.0
+; Generator: Khronos Glslang Reference Front End; 7
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ %1 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID
+ OpExecutionMode %main LocalSize 1 1 1
+ OpSource GLSL 450
+ OpName %main "main"
+ OpName %Foo "A"
+ OpMemberName %Foo 0 "a"
+ OpMemberName %Foo 1 "b"
+ OpName %A "A"
+ OpMemberName %A 0 "Data"
+ OpName %C1 "C1"
+ OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
+ OpName %Foo_0 "A"
+ OpMemberName %Foo_0 0 "a"
+ OpMemberName %Foo_0 1 "b"
+ OpName %A_0 "A"
+ OpMemberName %A_0 0 "Data"
+ OpName %C2 "C2"
+ OpName %B "B"
+ OpMemberName %B 0 "Data"
+ OpName %C3 "C3"
+ OpName %B_0 "B"
+ OpMemberName %B_0 0 "Data"
+ OpName %C4 "C4"
+ OpMemberDecorate %Foo 0 Offset 0
+ OpMemberDecorate %Foo 1 Offset 4
+ OpDecorate %_runtimearr_Foo ArrayStride 8
+ OpMemberDecorate %A 0 Offset 0
+ OpDecorate %A BufferBlock
+ OpDecorate %C1 DescriptorSet 0
+ OpDecorate %C1 Binding 1
+ OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
+ OpMemberDecorate %Foo_0 0 Offset 0
+ OpMemberDecorate %Foo_0 1 Offset 4
+ OpDecorate %_arr_Foo_0_uint_1024 ArrayStride 16
+ OpMemberDecorate %A_0 0 Offset 0
+ OpDecorate %A_0 Block
+ OpDecorate %C2 DescriptorSet 0
+ OpDecorate %C2 Binding 2
+ OpDecorate %_runtimearr_Foo_0 ArrayStride 8
+ OpMemberDecorate %B 0 Offset 0
+ OpDecorate %B BufferBlock
+ OpDecorate %C3 DescriptorSet 0
+ OpDecorate %C3 Binding 0
+ OpDecorate %_arr_Foo_0_uint_1024_0 ArrayStride 16
+ OpMemberDecorate %B_0 0 Offset 0
+ OpDecorate %B_0 Block
+ OpDecorate %C4 DescriptorSet 0
+ OpDecorate %C4 Binding 3
+ %void = OpTypeVoid
+ %3 = OpTypeFunction %void
+ %int = OpTypeInt 32 1
+ %Foo = OpTypeStruct %int %int
+%_runtimearr_Foo = OpTypeRuntimeArray %Foo
+ %A = OpTypeStruct %_runtimearr_Foo
+%_ptr_Uniform_A = OpTypePointer Uniform %A
+ %C1 = OpVariable %_ptr_Uniform_A Uniform
+ %int_0 = OpConstant %int 0
+ %uint = OpTypeInt 32 0
+ %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
+ %uint_0 = OpConstant %uint 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+ %Foo_0 = OpTypeStruct %int %int
+ %uint_1024 = OpConstant %uint 1024
+%_arr_Foo_0_uint_1024 = OpTypeArray %Foo_0 %uint_1024
+ %A_0 = OpTypeStruct %_arr_Foo_0_uint_1024
+%_ptr_Uniform_A_0 = OpTypePointer Uniform %A_0
+ %C2 = OpVariable %_ptr_Uniform_A_0 Uniform
+%_ptr_Uniform_Foo_0 = OpTypePointer Uniform %Foo_0
+%_ptr_Uniform_Foo = OpTypePointer Uniform %Foo
+%_ptr_Uniform_int = OpTypePointer Uniform %int
+ %int_1 = OpConstant %int 1
+%_runtimearr_Foo_0 = OpTypeRuntimeArray %Foo
+ %B = OpTypeStruct %_runtimearr_Foo_0
+%_ptr_Uniform_B = OpTypePointer Uniform %B
+ %C3 = OpVariable %_ptr_Uniform_B Uniform
+%_arr_Foo_0_uint_1024_0 = OpTypeArray %Foo_0 %uint_1024
+ %B_0 = OpTypeStruct %_arr_Foo_0_uint_1024_0
+%_ptr_Uniform_B_0 = OpTypePointer Uniform %B_0
+ %C4 = OpVariable %_ptr_Uniform_B_0 Uniform
+ %main = OpFunction %void None %3
+ %5 = OpLabel
+ %19 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+ %20 = OpLoad %uint %19
+ %27 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+ %28 = OpLoad %uint %27
+ %30 = OpAccessChain %_ptr_Uniform_Foo_0 %C2 %int_0 %28
+ %31 = OpLoad %Foo_0 %30
+ %33 = OpAccessChain %_ptr_Uniform_Foo %C1 %int_0 %20
+ %34 = OpCompositeExtract %int %31 0
+ %36 = OpAccessChain %_ptr_Uniform_int %33 %int_0
+ OpStore %36 %34
+ %37 = OpCompositeExtract %int %31 1
+ %39 = OpAccessChain %_ptr_Uniform_int %33 %int_1
+ OpStore %39 %37
+ %44 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+ %45 = OpLoad %uint %44
+ %50 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
+ %51 = OpLoad %uint %50
+ %52 = OpAccessChain %_ptr_Uniform_Foo_0 %C4 %int_0 %51
+ %53 = OpLoad %Foo_0 %52
+ %54 = OpAccessChain %_ptr_Uniform_Foo %C3 %int_0 %45
+ %55 = OpCompositeExtract %int %53 0
+ %56 = OpAccessChain %_ptr_Uniform_int %54 %int_0
+ OpStore %56 %55
+ %57 = OpCompositeExtract %int %53 1
+ %58 = OpAccessChain %_ptr_Uniform_int %54 %int_1
+ OpStore %58 %57
+ OpReturn
+ OpFunctionEnd