OpCapability Shader OpMemoryModel Logical GLSL450 OpEntryPoint GLCompute %main "main" OpExecutionMode %main LocalSize 1 1 1 OpName %Block "Block" OpName %SSBO "SSBO" OpName %SSBO_Var "ssbo" OpName %UBO_Var "ubo" OpDecorate %SSBO_Var Binding 0 OpDecorate %SSBO_Var DescriptorSet 0 OpDecorate %UBO_Var Binding 1 OpDecorate %UBO_Var DescriptorSet 0 OpMemberDecorate %SSBO 0 Offset 0 OpMemberDecorate %Block 0 Offset 0 OpMemberDecorate %Block 1 Offset 16 OpDecorate %BlockArray ArrayStride 32 OpDecorate %arr_uvec2_2 ArrayStride 8 OpDecorate %SSBO Block %uint = OpTypeInt 32 0 %uint_0 = OpConstant %uint 0 %uint_1 = OpConstant %uint 1 %uint_2 = OpConstant %uint 2 %uint_3 = OpConstant %uint 3 %uvec2 = OpTypeVector %uint 2 %arr_uvec2_2 = OpTypeArray %uvec2 %uint_2 %arr_uvec2_2_ptr = OpTypePointer StorageBuffer %arr_uvec2_2 %arr_uvec2_2_ptr_const = OpTypePointer Uniform %arr_uvec2_2 %arr_uvec2_2_ptr_func = OpTypePointer Function %arr_uvec2_2 %arr_uvec2_2_ptr_workgroup = OpTypePointer Workgroup %arr_uvec2_2 %wg = OpVariable %arr_uvec2_2_ptr_workgroup Workgroup %Block = OpTypeStruct %arr_uvec2_2 %arr_uvec2_2 %Block_ptr = OpTypePointer StorageBuffer %Block %BlockArray = OpTypeArray %Block %uint_3 %SSBO = OpTypeStruct %BlockArray %SSBO_Ptr = OpTypePointer StorageBuffer %SSBO %SSBO_Var = OpVariable %SSBO_Ptr StorageBuffer %UBO_Ptr = OpTypePointer Uniform %SSBO %UBO_Var = OpVariable %UBO_Ptr Uniform %void = OpTypeVoid %func_type = OpTypeFunction %void %main = OpFunction %void None %func_type %25 = OpLabel %func = OpVariable %arr_uvec2_2_ptr_func Function ; Copy device array to temporary. %ptr = OpAccessChain %Block_ptr %SSBO_Var %uint_0 %uint_0 %ptr_arr_1 = OpAccessChain %arr_uvec2_2_ptr %SSBO_Var %uint_0 %uint_0 %uint_1 %loaded_array = OpLoad %arr_uvec2_2 %ptr_arr_1 %constructed = OpCompositeConstruct %Block %loaded_array %loaded_array OpStore %ptr %constructed OpReturn OpFunctionEnd