1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint Fragment %main "main" 5 OpExecutionMode %main OriginUpperLeft 6 OpName %StructB "StructB" 7 OpMemberName %StructB 0 "val" 8 OpName %StructA "StructA" 9 OpMemberName %StructA 0 "structB" 10 OpMemberName %StructA 1 "val" 11 OpName %testStorageBuffer "testStorageBuffer" 12 OpMemberName %testStorageBuffer 0 "testStructA" 13 OpMemberName %testStorageBuffer 1 "testArr" 14 OpName %testSecondStorageBuffer "testSecondStorageBuffer" 15 OpMemberName %testSecondStorageBuffer 0 "testStructArr" 16 OpName %foo_fff_testArr "foo_fff_testArr" 17 OpName %bar_fSf_testStructArr "bar_fSf_testStructArr" 18 OpName %main "main" 19 OpMemberDecorate %StructB 0 Offset 0 20 OpMemberDecorate %StructA 0 Offset 0 21 OpMemberDecorate %StructA 0 RelaxedPrecision 22 OpMemberDecorate %StructA 1 Offset 4 23 OpDecorate %_runtimearr_float ArrayStride 4 24 OpMemberDecorate %testStorageBuffer 0 Offset 0 25 OpMemberDecorate %testStorageBuffer 0 RelaxedPrecision 26 OpMemberDecorate %testStorageBuffer 1 Offset 8 27 OpDecorate %testStorageBuffer BufferBlock 28 OpDecorate %5 Binding 0 29 OpDecorate %5 DescriptorSet 0 30 OpDecorate %_runtimearr_StructA ArrayStride 8 31 OpMemberDecorate %testSecondStorageBuffer 0 Offset 0 32 OpMemberDecorate %testSecondStorageBuffer 0 RelaxedPrecision 33 OpDecorate %testSecondStorageBuffer BufferBlock 34 OpDecorate %12 Binding 1 35 OpDecorate %12 DescriptorSet 0 36 %float = OpTypeFloat 32 37 %StructB = OpTypeStruct %float 38 %StructA = OpTypeStruct %StructB %float 39%_runtimearr_float = OpTypeRuntimeArray %float 40%testStorageBuffer = OpTypeStruct %StructA %_runtimearr_float 41%_ptr_Uniform_testStorageBuffer = OpTypePointer Uniform %testStorageBuffer 42 %5 = OpVariable %_ptr_Uniform_testStorageBuffer Uniform 43%_runtimearr_StructA = OpTypeRuntimeArray %StructA 44%testSecondStorageBuffer = OpTypeStruct %_runtimearr_StructA 45%_ptr_Uniform_testSecondStorageBuffer = OpTypePointer Uniform %testSecondStorageBuffer 46 %12 = OpVariable %_ptr_Uniform_testSecondStorageBuffer Uniform 47%_ptr_Function_float = OpTypePointer Function %float 48 %17 = OpTypeFunction %float %_ptr_Function_float 49 %int = OpTypeInt 32 1 50 %int_1 = OpConstant %int 1 51%_ptr_Uniform_float = OpTypePointer Uniform %float 52 %int_0 = OpConstant %int 0 53 %void = OpTypeVoid 54 %35 = OpTypeFunction %void 55%foo_fff_testArr = OpFunction %float None %17 56 %18 = OpFunctionParameter %_ptr_Function_float 57 %19 = OpLabel 58 %22 = OpLoad %float %18 59 %23 = OpConvertFToS %int %22 60 %24 = OpAccessChain %_ptr_Uniform_float %5 %int_1 %23 61 %26 = OpLoad %float %24 62 OpReturnValue %26 63 OpFunctionEnd 64%bar_fSf_testStructArr = OpFunction %float None %17 65 %27 = OpFunctionParameter %_ptr_Function_float 66 %28 = OpLabel 67 %30 = OpLoad %float %27 68 %31 = OpConvertFToS %int %30 69 %32 = OpAccessChain %_ptr_Uniform_float %12 %int_0 %31 %int_0 %int_0 70 %33 = OpLoad %float %32 71 OpReturnValue %33 72 OpFunctionEnd 73 %main = OpFunction %void None %35 74 %36 = OpLabel 75 %39 = OpVariable %_ptr_Function_float Function 76 %43 = OpVariable %_ptr_Function_float Function 77 %47 = OpVariable %_ptr_Function_float Function 78 %37 = OpAccessChain %_ptr_Uniform_float %5 %int_0 %int_1 79 %38 = OpLoad %float %37 80 OpStore %39 %38 81 %40 = OpFunctionCall %float %foo_fff_testArr %39 82 %41 = OpAccessChain %_ptr_Uniform_float %5 %int_0 %int_0 %int_0 83 %42 = OpLoad %float %41 84 OpStore %43 %42 85 %44 = OpFunctionCall %float %foo_fff_testArr %43 86 %45 = OpAccessChain %_ptr_Uniform_float %5 %int_0 %int_0 %int_0 87 %46 = OpLoad %float %45 88 OpStore %47 %46 89 %48 = OpFunctionCall %float %bar_fSf_testStructArr %47 90 OpReturn 91 OpFunctionEnd 92