1 OpCapability Shader 2 %1 = OpExtInstImport "GLSL.std.450" 3 OpMemoryModel Logical GLSL450 4 OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %bufferIndex 5 OpExecutionMode %_entrypoint_v OriginUpperLeft 6 OpName %SomeData "SomeData" 7 OpMemberName %SomeData 0 "a" 8 OpMemberName %SomeData 1 "b" 9 OpName %storageBuffer "storageBuffer" 10 OpMemberName %storageBuffer 0 "offset" 11 OpMemberName %storageBuffer 1 "inputData" 12 OpName %outputBuffer "outputBuffer" 13 OpMemberName %outputBuffer 0 "outputData" 14 OpName %sk_FragColor "sk_FragColor" 15 OpName %bufferIndex "bufferIndex" 16 OpName %_entrypoint_v "_entrypoint_v" 17 OpName %main "main" 18 OpMemberDecorate %SomeData 0 Offset 0 19 OpMemberDecorate %SomeData 1 Offset 16 20 OpDecorate %_runtimearr_SomeData ArrayStride 32 21 OpMemberDecorate %storageBuffer 0 Offset 0 22 OpMemberDecorate %storageBuffer 1 Offset 16 23 OpMemberDecorate %storageBuffer 1 RelaxedPrecision 24 OpDecorate %storageBuffer BufferBlock 25 OpDecorate %3 Binding 0 26 OpDecorate %3 DescriptorSet 0 27 OpMemberDecorate %outputBuffer 0 Offset 0 28 OpMemberDecorate %outputBuffer 0 RelaxedPrecision 29 OpDecorate %outputBuffer BufferBlock 30 OpDecorate %12 Binding 1 31 OpDecorate %12 DescriptorSet 0 32 OpDecorate %sk_FragColor RelaxedPrecision 33 OpDecorate %sk_FragColor Location 0 34 OpDecorate %sk_FragColor Index 0 35 OpDecorate %bufferIndex Location 2 36 OpDecorate %bufferIndex Flat 37 OpDecorate %39 RelaxedPrecision 38 %uint = OpTypeInt 32 0 39 %float = OpTypeFloat 32 40 %v4float = OpTypeVector %float 4 41 %v2float = OpTypeVector %float 2 42 %SomeData = OpTypeStruct %v4float %v2float 43%_runtimearr_SomeData = OpTypeRuntimeArray %SomeData 44%storageBuffer = OpTypeStruct %uint %_runtimearr_SomeData 45%_ptr_Uniform_storageBuffer = OpTypePointer Uniform %storageBuffer 46 %3 = OpVariable %_ptr_Uniform_storageBuffer Uniform 47%outputBuffer = OpTypeStruct %_runtimearr_SomeData 48%_ptr_Uniform_outputBuffer = OpTypePointer Uniform %outputBuffer 49 %12 = OpVariable %_ptr_Uniform_outputBuffer Uniform 50%_ptr_Output_v4float = OpTypePointer Output %v4float 51%sk_FragColor = OpVariable %_ptr_Output_v4float Output 52 %int = OpTypeInt 32 1 53%_ptr_Input_int = OpTypePointer Input %int 54%bufferIndex = OpVariable %_ptr_Input_int Input 55 %void = OpTypeVoid 56 %22 = OpTypeFunction %void 57 %float_0 = OpConstant %float 0 58 %25 = OpConstantComposite %v2float %float_0 %float_0 59%_ptr_Function_v2float = OpTypePointer Function %v2float 60 %29 = OpTypeFunction %v4float %_ptr_Function_v2float 61 %int_1 = OpConstant %int 1 62 %int_0 = OpConstant %int 0 63%_ptr_Uniform_uint = OpTypePointer Uniform %uint 64%_ptr_Uniform_SomeData = OpTypePointer Uniform %SomeData 65%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 66%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float 67%_entrypoint_v = OpFunction %void None %22 68 %23 = OpLabel 69 %26 = OpVariable %_ptr_Function_v2float Function 70 OpStore %26 %25 71 %28 = OpFunctionCall %v4float %main %26 72 OpStore %sk_FragColor %28 73 OpReturn 74 OpFunctionEnd 75 %main = OpFunction %v4float None %29 76 %30 = OpFunctionParameter %_ptr_Function_v2float 77 %31 = OpLabel 78 %34 = OpAccessChain %_ptr_Uniform_uint %3 %int_0 79 %36 = OpLoad %uint %34 80 %37 = OpAccessChain %_ptr_Uniform_SomeData %3 %int_1 %36 81 %39 = OpLoad %SomeData %37 82 %40 = OpAccessChain %_ptr_Uniform_uint %3 %int_0 83 %41 = OpLoad %uint %40 84 %42 = OpAccessChain %_ptr_Uniform_SomeData %12 %int_0 %41 85 OpStore %42 %39 86 %43 = OpLoad %int %bufferIndex 87 %44 = OpAccessChain %_ptr_Uniform_v4float %3 %int_1 %43 %int_0 88 %46 = OpLoad %v4float %44 89 %47 = OpLoad %int %bufferIndex 90 %48 = OpAccessChain %_ptr_Uniform_v2float %3 %int_1 %47 %int_1 91 %50 = OpLoad %v2float %48 92 %51 = OpCompositeExtract %float %50 0 93 %52 = OpVectorTimesScalar %v4float %46 %51 94 OpReturnValue %52 95 OpFunctionEnd 96