Skip to content

Instantly share code, notes, and snippets.

@seanbaxter
Created September 22, 2020 02:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seanbaxter/624c236a809f692116ff3f67a6b68038 to your computer and use it in GitHub Desktop.
Save seanbaxter/624c236a809f692116ff3f67a6b68038 to your computer and use it in GitHub Desktop.
segfault in NVIDIA driver loading spv
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <gl3w/GL/gl3w.h>
#include <GLFW/glfw3.h>
void debug_callback(GLenum source, GLenum type, GLuint id, GLenum severity,
GLsizei length, const GLchar* message, const void* user_param) {
printf("GOT DEBUG CALLBACK: %s\n", message);
exit(1);
}
std::vector<char> load_file(const char* name) {
FILE* f = fopen(name, "r");
if(!f) {
printf("CANNOT LOAD %s\n", name);
return { };
}
fseek(f, 0, SEEK_END);
size_t len = ftell(f);
fseek(f, 0, SEEK_SET);
printf("%s: %zu bytes\n", name, len);
std::vector<char> data(len);
fread(data.data(), 1, len, f);
fclose(f);
return data;
}
int main() {
glfwInit();
glfwWindowHint(GLFW_DOUBLEBUFFER, 1);
glfwWindowHint(GLFW_DEPTH_BITS, 24);
glfwWindowHint(GLFW_STENCIL_BITS, 8);
glfwWindowHint(GLFW_SAMPLES, 8); // HQ 4x multisample.
// glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
GLFWwindow* window = glfwCreateWindow(800, 600, "crashola", nullptr, nullptr);
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
gl3wInit();
int width, height;
glfwGetWindowSize(window, &width, &height);
glViewport(0, 0, width, height);
printf("%d\n", gl3wIsSupported(4, 6));
// Load the binary.
GLuint ts = glCreateShader(GL_TASK_SHADER_NV);
GLuint ms = glCreateShader(GL_MESH_SHADER_NV);
GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
GLuint shaders[] { ts, ms, fs };
std::vector<char> spv_data = load_file("shader.spv");
glShaderBinary(3, shaders, GL_SHADER_BINARY_FORMAT_SPIR_V_ARB,
spv_data.data(), spv_data.size());
if(int error = glGetError()) {
printf("glGetError = %d\n", error);
char text[1024];
glGetShaderInfoLog(ts, 1024, nullptr, text);
puts(text);
}
glSpecializeShader(ts, "_Z9task_mainv", 0, nullptr, nullptr);
printf("ts specialized\n");
glSpecializeShader(ms, "_Z9mesh_mainv", 0, nullptr, nullptr);
printf("ms specialized\n");
glSpecializeShader(fs, "_Z9frag_mainv", 0, nullptr, nullptr);
printf("fs specialized\n");
return 0;
}
; SPIR-V
; Version: 1.5
; Generator: Khronos; 0
; Bound: 967
; Schema: 0
OpCapability MeshShadingNV
OpCapability Shader
OpCapability Int8
OpCapability Int64
OpCapability GroupNonUniformBallot
OpCapability GroupNonUniformShuffleRelative
OpExtension "GL_EXT_scalar_block_layout"
OpExtension "SPV_NV_mesh_shader"
%245 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint TaskNV %_Z9task_mainv "_Z9task_mainv" %_ZZ9task_mainvE6values %glcomp_LocalInvocationID %glcomp_WorkGroupID %meshlets %glmesh_TaskCount %uniforms
OpEntryPoint MeshNV %_Z9mesh_mainv "_Z9mesh_mainv" %glcomp_LocalInvocationID %glcomp_WorkGroupID %meshlets %uniforms %_ZZ9mesh_mainvE7corners %marching_cubes_lookup %glmesh_PrimitiveCount %glmesh_Output %_Z16shader_out_arrayILj0EDv3_fE %_Z16shader_out_arrayILj1EDv3_fE
OpEntryPoint Fragment %_Z9frag_mainv "_Z9frag_mainv" %uniforms %_Z9shader_inILj0EDv3_fE %_Z9shader_inILj1EDv3_fE %sky_box %_Z10shader_outILi0EDv4_fE
OpExecutionMode %_Z9task_mainv LocalSize 32 1 1
OpExecutionMode %_Z9mesh_mainv OutputTrianglesNV
OpExecutionMode %_Z9mesh_mainv OutputVertices 12
OpExecutionMode %_Z9mesh_mainv OutputPrimitivesNV 5
OpExecutionMode %_Z9mesh_mainv LocalSize 32 1 1
OpExecutionMode %_Z9frag_mainv OriginUpperLeft
OpName %_ZZ9task_mainvE6values "_ZZ9task_mainvE6values"
OpName %glcomp_LocalInvocationID "glcomp_LocalInvocationID"
OpName %glcomp_WorkGroupID "glcomp_WorkGroupID"
OpName %MeshletData "MeshletData"
OpMemberName %MeshletData 0 "id"
OpName %meshlets "meshlets"
OpName %glmesh_TaskCount "glmesh_TaskCount"
OpName %uniforms_t "uniforms_t"
OpMemberName %uniforms_t 0 "view_proj"
OpMemberName %uniforms_t 1 "camera_pos"
OpMemberName %uniforms_t 2 "balls"
OpName %uniforms "uniforms"
OpName %_ZZ9mesh_mainvE7corners "_ZZ9mesh_mainvE7corners"
OpName %marching_cubes_lookup_t "marching_cubes_lookup_t"
OpMemberName %marching_cubes_lookup_t 0 "indices"
OpMemberName %marching_cubes_lookup_t 1 "vertices"
OpMemberName %marching_cubes_lookup_t 2 "triangle_count"
OpMemberName %marching_cubes_lookup_t 3 "vertex_count"
OpName %marching_cubes_lookup "marching_cubes_lookup"
OpName %glmesh_PrimitiveCount "glmesh_PrimitiveCount"
OpName %gl_PerVertex "gl_PerVertex"
OpMemberName %gl_PerVertex 0 "Position"
OpMemberName %gl_PerVertex 1 "PointSize"
OpMemberName %gl_PerVertex 2 "ClipDistance"
OpMemberName %gl_PerVertex 3 "CullDistance"
OpName %glmesh_Output "glmesh_Output"
OpName %_Z16shader_out_arrayILj0EDv3_fE "_Z16shader_out_arrayILj0EDv3_fE"
OpName %_Z16shader_out_arrayILj1EDv3_fE "_Z16shader_out_arrayILj1EDv3_fE"
OpName %_Z9shader_inILj0EDv3_fE "_Z9shader_inILj0EDv3_fE"
OpName %_Z9shader_inILj1EDv3_fE "_Z9shader_inILj1EDv3_fE"
OpName %samplerCube "samplerCube"
OpName %sky_box "sky_box"
OpName %_Z10shader_outILi0EDv4_fE "_Z10shader_outILi0EDv4_fE"
OpName %constants_t "constants_t"
OpMemberName %constants_t 0 "num_balls"
OpMemberName %constants_t 1 "log_grid_size"
OpName %constants_num_balls "constants.num_balls"
OpName %constants_log_grid_size "constants.log_grid_size"
OpName %_Z9task_mainv "_Z9task_mainv"
OpName %marching_cubes_lookup_t_0 "marching_cubes_lookup_t"
OpMemberName %marching_cubes_lookup_t_0 0 "indices"
OpMemberName %marching_cubes_lookup_t_0 1 "vertices"
OpMemberName %marching_cubes_lookup_t_0 2 "triangle_count"
OpMemberName %marching_cubes_lookup_t_0 3 "vertex_count"
OpName %_Z9mesh_mainv "_Z9mesh_mainv"
OpName %_Z9frag_mainv "_Z9frag_mainv"
OpDecorate %glcomp_LocalInvocationID BuiltIn LocalInvocationId
OpDecorate %glcomp_WorkGroupID BuiltIn WorkgroupId
OpMemberDecorate %MeshletData 0 Offset 0
OpDecorate %meshlets PerTaskNV
OpDecorate %glmesh_TaskCount BuiltIn TaskCountNV
OpDecorate %_arr_v4float_uint_128 ArrayStride 16
OpDecorate %uniforms_t Block
OpMemberDecorate %uniforms_t 0 Offset 0
OpMemberDecorate %uniforms_t 0 ColMajor
OpMemberDecorate %uniforms_t 0 MatrixStride 16
OpMemberDecorate %uniforms_t 1 Offset 64
OpMemberDecorate %uniforms_t 2 Offset 80
OpDecorate %uniforms Binding 0
OpDecorate %uniforms DescriptorSet 0
OpDecorate %_arr_uint_uint_4 ArrayStride 4
OpDecorate %_arr_uchar_uint_12 ArrayStride 1
OpDecorate %marching_cubes_lookup_t Block
OpMemberDecorate %marching_cubes_lookup_t 0 Offset 0
OpMemberDecorate %marching_cubes_lookup_t 1 Offset 16
OpMemberDecorate %marching_cubes_lookup_t 2 Offset 28
OpMemberDecorate %marching_cubes_lookup_t 3 Offset 29
OpDecorate %marching_cubes_lookup Binding 0
OpDecorate %marching_cubes_lookup DescriptorSet 0
OpDecorate %glmesh_PrimitiveCount BuiltIn PrimitiveCountNV
OpDecorate %gl_PerVertex Block
OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
OpDecorate %_Z16shader_out_arrayILj0EDv3_fE Location 0
OpDecorate %_Z16shader_out_arrayILj1EDv3_fE Location 1
OpDecorate %_Z9shader_inILj0EDv3_fE Location 0
OpDecorate %_Z9shader_inILj1EDv3_fE Location 1
OpDecorate %sky_box Binding 0
OpDecorate %sky_box DescriptorSet 0
OpDecorate %_Z10shader_outILi0EDv4_fE Location 0
OpMemberDecorate %constants_t 0 Offset 0
OpMemberDecorate %constants_t 1 Offset 4
OpDecorate %constants_num_balls SpecId 0
OpDecorate %constants_log_grid_size SpecId 1
OpMemberDecorate %marching_cubes_lookup_t_0 0 Offset 0
OpMemberDecorate %marching_cubes_lookup_t_0 1 Offset 16
OpMemberDecorate %marching_cubes_lookup_t_0 2 Offset 28
OpMemberDecorate %marching_cubes_lookup_t_0 3 Offset 29
%uint = OpTypeInt 32 0
%uint_5 = OpConstant %uint 5
%_arr_uint_uint_5 = OpTypeArray %uint %uint_5
%_arr__arr_uint_uint_5_uint_5 = OpTypeArray %_arr_uint_uint_5 %uint_5
%_arr__arr__arr_uint_uint_5_uint_5_uint_5 = OpTypeArray %_arr__arr_uint_uint_5_uint_5 %uint_5
%_ptr_Workgroup__arr__arr__arr_uint_uint_5_uint_5_uint_5 = OpTypePointer Workgroup %_arr__arr__arr_uint_uint_5_uint_5_uint_5
%_ZZ9task_mainvE6values = OpVariable %_ptr_Workgroup__arr__arr__arr_uint_uint_5_uint_5_uint_5 Workgroup
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%glcomp_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input
%glcomp_WorkGroupID = OpVariable %_ptr_Input_v3uint Input
%MeshletData = OpTypeStruct %uint
%_runtimearr_MeshletData = OpTypeRuntimeArray %MeshletData
%_ptr_Output__runtimearr_MeshletData = OpTypePointer Output %_runtimearr_MeshletData
%meshlets = OpVariable %_ptr_Output__runtimearr_MeshletData Output
%_ptr_Output_uint = OpTypePointer Output %uint
%glmesh_TaskCount = OpVariable %_ptr_Output_uint Output
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%mat4v4float = OpTypeMatrix %v4float 4
%v3float = OpTypeVector %float 3
%uint_128 = OpConstant %uint 128
%_arr_v4float_uint_128 = OpTypeArray %v4float %uint_128
%uniforms_t = OpTypeStruct %mat4v4float %v3float %_arr_v4float_uint_128
%_ptr_Uniform_uniforms_t = OpTypePointer Uniform %uniforms_t
%uniforms = OpVariable %_ptr_Uniform_uniforms_t Uniform
%uint_8 = OpConstant %uint 8
%_arr_v4float_uint_8 = OpTypeArray %v4float %uint_8
%_ptr_Workgroup__arr_v4float_uint_8 = OpTypePointer Workgroup %_arr_v4float_uint_8
%_ZZ9mesh_mainvE7corners = OpVariable %_ptr_Workgroup__arr_v4float_uint_8 Workgroup
%uint_4 = OpConstant %uint 4
%_arr_uint_uint_4 = OpTypeArray %uint %uint_4
%uchar = OpTypeInt 8 0
%uint_12 = OpConstant %uint 12
%_arr_uchar_uint_12 = OpTypeArray %uchar %uint_12
%marching_cubes_lookup_t = OpTypeStruct %_arr_uint_uint_4 %_arr_uchar_uint_12 %uchar %uchar
%uint_256 = OpConstant %uint 256
%_arr_marching_cubes_lookup_t_uint_256 = OpTypeArray %marching_cubes_lookup_t %uint_256
%_ptr_StorageBuffer__arr_marching_cubes_lookup_t_uint_256 = OpTypePointer StorageBuffer %_arr_marching_cubes_lookup_t_uint_256
%marching_cubes_lookup = OpVariable %_ptr_StorageBuffer__arr_marching_cubes_lookup_t_uint_256 StorageBuffer
%glmesh_PrimitiveCount = OpVariable %_ptr_Output_uint Output
%uint_1 = OpConstant %uint 1
%_arr_float_uint_1 = OpTypeArray %float %uint_1
%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
%_runtimearr_gl_PerVertex = OpTypeRuntimeArray %gl_PerVertex
%_ptr_Output__runtimearr_gl_PerVertex = OpTypePointer Output %_runtimearr_gl_PerVertex
%glmesh_Output = OpVariable %_ptr_Output__runtimearr_gl_PerVertex Output
%_runtimearr_v3float = OpTypeRuntimeArray %v3float
%_ptr_Output__runtimearr_v3float = OpTypePointer Output %_runtimearr_v3float
%_Z16shader_out_arrayILj0EDv3_fE = OpVariable %_ptr_Output__runtimearr_v3float Output
%_Z16shader_out_arrayILj1EDv3_fE = OpVariable %_ptr_Output__runtimearr_v3float Output
%_ptr_Input_v3float = OpTypePointer Input %v3float
%_Z9shader_inILj0EDv3_fE = OpVariable %_ptr_Input_v3float Input
%_Z9shader_inILj1EDv3_fE = OpVariable %_ptr_Input_v3float Input
%58 = OpTypeImage %float Cube 0 0 0 1 Unknown
%samplerCube = OpTypeSampledImage %58
%_ptr_UniformConstant_samplerCube = OpTypePointer UniformConstant %samplerCube
%sky_box = OpVariable %_ptr_UniformConstant_samplerCube UniformConstant
%_ptr_Output_v4float = OpTypePointer Output %v4float
%_Z10shader_outILi0EDv4_fE = OpVariable %_ptr_Output_v4float Output
%void = OpTypeVoid
%65 = OpTypeFunction %void
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%_ptr_Function_uint = OpTypePointer Function %uint
%_ptr_Function_v3uint = OpTypePointer Function %v3uint
%_ptr_Function_float = OpTypePointer Function %float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%constants_t = OpTypeStruct %int %int
%_ptr_Function_constants_t = OpTypePointer Function %constants_t
%bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%v4uint = OpTypeVector %uint 4
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
%_ptr_Input_uint = OpTypePointer Input %uint
%int_0 = OpConstant %int 0
%constants_num_balls = OpSpecConstant %int 16
%constants_log_grid_size = OpSpecConstant %int 7
%125 = OpSpecConstantComposite %constants_t %constants_num_balls %constants_log_grid_size
%int_1 = OpConstant %int 1
%int_4 = OpConstant %int 4
%int_2 = OpConstant %int 2
%uint_0 = OpConstant %uint 0
%uint_2 = OpConstant %uint 2
%146 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_2
%152 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4
%uint_125 = OpConstant %uint 125
%uint_205 = OpConstant %uint 205
%uint_10 = OpConstant %uint 10
%float_1 = OpConstant %float 1
%float_n1 = OpConstant %float -1
%_ptr_Uniform__arr_v4float_uint_128 = OpTypePointer Uniform %_arr_v4float_uint_128
%long = OpTypeInt 64 1
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_ptr_Uniform_float = OpTypePointer Uniform %float
%int_3 = OpConstant %int 3
%float_0_5 = OpConstant %float 0.5
%243 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
%float_0_00100000005 = OpConstant %float 0.00100000005
%float_0 = OpConstant %float 0
%_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 = OpTypePointer Workgroup %_arr__arr_uint_uint_5_uint_5
%_ptr_Workgroup__arr_uint_uint_5 = OpTypePointer Workgroup %_arr_uint_uint_5
%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
%uint_32 = OpConstant %uint 32
%uint_64 = OpConstant %uint 64
%uint_3 = OpConstant %uint 3
%uint_6 = OpConstant %uint 6
%uint_7 = OpConstant %uint 7
%uint_255 = OpConstant %uint 255
%false = OpConstantFalse %bool
%_ptr_Output_MeshletData = OpTypePointer Output %MeshletData
%marching_cubes_lookup_t_0 = OpTypeStruct %_arr_uint_uint_4 %_arr_uchar_uint_12 %uchar %uchar
%_ptr_Function_marching_cubes_lookup_t_0 = OpTypePointer Function %marching_cubes_lookup_t_0
%v3int = OpTypeVector %int 3
%626 = OpConstantComposite %v3int %int_1 %int_2 %int_4
%v3bool = OpTypeVector %bool 3
%629 = OpConstantComposite %v3int %int_0 %int_0 %int_0
%float_0_0625 = OpConstant %float 0.0625
%int_8 = OpConstant %int 8
%uint_16 = OpConstant %uint 16
%uint_24 = OpConstant %uint 24
%_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float
%int_264 = OpConstant %int 264
%_ptr_StorageBuffer_marching_cubes_lookup_t = OpTypePointer StorageBuffer %marching_cubes_lookup_t
%_ptr_Function_uchar = OpTypePointer Function %uchar
%_ptr_Function__arr_uchar_uint_12 = OpTypePointer Function %_arr_uchar_uint_12
%_ptr_Workgroup_float = OpTypePointer Workgroup %float
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
%_ptr_Output_v3float = OpTypePointer Output %v3float
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%float_1_12 = OpConstant %float 1.12
%float_2 = OpConstant %float 2
%float_5 = OpConstant %float 5
%float_0_25 = OpConstant %float 0.25
%_Z9task_mainv = OpFunction %void None %65
%66 = OpLabel
%69 = OpVariable %_ptr_Function_int Function
%70 = OpVariable %_ptr_Function_int Function
%72 = OpVariable %_ptr_Function_uint Function
%74 = OpVariable %_ptr_Function_v3uint Function
%76 = OpVariable %_ptr_Function_float Function
%77 = OpVariable %_ptr_Function_float Function
%79 = OpVariable %_ptr_Function_v3float Function
%80 = OpVariable %_ptr_Function_v3float Function
%83 = OpVariable %_ptr_Function_constants_t Function
%84 = OpVariable %_ptr_Function_int Function
%85 = OpVariable %_ptr_Function_float Function
%86 = OpVariable %_ptr_Function_v3float Function
%87 = OpVariable %_ptr_Function_float Function
%88 = OpVariable %_ptr_Function_v3uint Function
%89 = OpVariable %_ptr_Function_uint Function
%90 = OpVariable %_ptr_Function_uint Function
%91 = OpVariable %_ptr_Function_uint Function
%92 = OpVariable %_ptr_Function_uint Function
%93 = OpVariable %_ptr_Function_v3uint Function
%94 = OpVariable %_ptr_Function_constants_t Function
%95 = OpVariable %_ptr_Function_uint Function
%96 = OpVariable %_ptr_Function_uint Function
%97 = OpVariable %_ptr_Function_uint Function
%98 = OpVariable %_ptr_Function_uint Function
%99 = OpVariable %_ptr_Function_uint Function
%100 = OpVariable %_ptr_Function_v3float Function
%101 = OpVariable %_ptr_Function_constants_t Function
%102 = OpVariable %_ptr_Function_uint Function
%103 = OpVariable %_ptr_Function_uint Function
%104 = OpVariable %_ptr_Function_uint Function
%105 = OpVariable %_ptr_Function_uint Function
%106 = OpVariable %_ptr_Function_uint Function
%107 = OpVariable %_ptr_Function_uint Function
%110 = OpVariable %_ptr_Function_bool Function
%113 = OpVariable %_ptr_Function_v4uint Function
%114 = OpVariable %_ptr_Function_uint Function
%115 = OpVariable %_ptr_Function_uint Function
%116 = OpVariable %_ptr_Function_constants_t Function
%119 = OpAccessChain %_ptr_Input_uint %glcomp_LocalInvocationID %int_0
%120 = OpLoad %uint %119
OpStore %91 %120
%121 = OpAccessChain %_ptr_Input_uint %glcomp_WorkGroupID %int_0
%122 = OpLoad %uint %121
OpStore %92 %122
OpStore %94 %125
%126 = OpLoad %uint %92
OpStore %90 %126
%128 = OpAccessChain %_ptr_Function_int %94 %int_1
%129 = OpLoad %int %128
%130 = OpShiftLeftLogical %int %int_1 %129
OpStore %70 %130
%131 = OpLoad %int %70
%133 = OpSDiv %int %131 %int_4
%134 = OpISub %int %133 %int_1
%135 = OpBitcast %uint %134
OpStore %89 %135
%136 = OpLoad %uint %90
%137 = OpCompositeConstruct %v3uint %136 %136 %136
%138 = OpAccessChain %_ptr_Function_int %94 %int_1
%139 = OpLoad %int %138
%141 = OpISub %int %139 %int_2
%142 = OpBitcast %uint %141
%143 = OpCompositeConstruct %v3uint %142 %142 %142
%147 = OpIMul %v3uint %146 %143
%148 = OpShiftRightLogical %v3uint %137 %147
%149 = OpLoad %uint %89
%150 = OpCompositeConstruct %v3uint %149 %149 %149
%151 = OpBitwiseAnd %v3uint %148 %150
%153 = OpIMul %v3uint %151 %152
OpStore %88 %153
%154 = OpLoad %v3uint %88
OpStore %93 %154
%155 = OpLoad %uint %91
OpStore %95 %155
OpBranch %156
%156 = OpLabel
%157 = OpLoad %uint %95
%159 = OpULessThan %bool %157 %uint_125
OpLoopMerge %160 %161 None
OpBranchConditional %159 %161 %160
%161 = OpLabel
%162 = OpLoad %uint %95
%164 = OpIMul %uint %uint_205 %162
%166 = OpShiftRightLogical %uint %164 %uint_10
OpStore %96 %166
%167 = OpLoad %uint %95
%168 = OpLoad %uint %96
%169 = OpIMul %uint %uint_5 %168
%170 = OpISub %uint %167 %169
OpStore %97 %170
%171 = OpLoad %uint %96
%172 = OpIMul %uint %uint_205 %171
%173 = OpShiftRightLogical %uint %172 %uint_10
OpStore %98 %173
%174 = OpLoad %uint %96
%175 = OpLoad %uint %98
%176 = OpIMul %uint %uint_5 %175
%177 = OpISub %uint %174 %176
OpStore %99 %177
%178 = OpAccessChain %_ptr_Function_uint %93 %int_0
%179 = OpLoad %uint %178
%180 = OpLoad %uint %97
%181 = OpIAdd %uint %179 %180
%182 = OpConvertUToF %float %181
%183 = OpAccessChain %_ptr_Function_uint %93 %int_1
%184 = OpLoad %uint %183
%185 = OpLoad %uint %99
%186 = OpIAdd %uint %184 %185
%187 = OpConvertUToF %float %186
%188 = OpAccessChain %_ptr_Function_uint %93 %int_2
%189 = OpLoad %uint %188
%190 = OpLoad %uint %98
%191 = OpIAdd %uint %189 %190
%192 = OpConvertUToF %float %191
%193 = OpCompositeConstruct %v3float %182 %187 %192
OpStore %101 %125
%194 = OpAccessChain %_ptr_Function_int %101 %int_1
%195 = OpLoad %int %194
%196 = OpShiftLeftLogical %int %int_1 %195
OpStore %69 %196
%197 = OpLoad %int %69
%198 = OpConvertSToF %float %197
%200 = OpFDiv %float %float_1 %198
OpStore %87 %200
%201 = OpLoad %float %87
%202 = OpVectorTimesScalar %v3float %193 %201
OpStore %100 %202
%203 = OpLoad %v3float %100
OpStore %86 %203
OpStore %85 %float_n1
OpStore %84 %int_0
OpBranch %205
%205 = OpLabel
%206 = OpLoad %int %84
OpStore %83 %125
%207 = OpAccessChain %_ptr_Function_int %83 %int_0
%208 = OpLoad %int %207
%209 = OpSLessThan %bool %206 %208
OpLoopMerge %210 %211 None
OpBranchConditional %209 %211 %210
%211 = OpLabel
%213 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2
%214 = OpLoad %int %84
%216 = OpSConvert %long %214
%217 = OpSConvert %int %216
%219 = OpAccessChain %_ptr_Uniform_v4float %213 %217
%220 = OpLoad %v4float %219
%221 = OpVectorShuffle %v3float %220 %220 0 1 2
%222 = OpLoad %v3float %86
%223 = OpFSub %v3float %221 %222
OpStore %80 %223
%224 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2
%225 = OpLoad %int %84
%226 = OpSConvert %long %225
%227 = OpSConvert %int %226
%228 = OpAccessChain %_ptr_Uniform_v4float %224 %227
%231 = OpAccessChain %_ptr_Uniform_float %228 %int_3
%232 = OpLoad %float %231
%233 = OpLoad %v3float %80
%234 = OpLoad %v3float %80
%235 = OpDot %float %233 %234
%236 = OpFDiv %float %232 %235
%237 = OpLoad %float %85
%238 = OpFAdd %float %237 %236
OpStore %85 %238
%239 = OpLoad %int %84
%240 = OpIAdd %int %239 %int_1
OpStore %84 %240
OpBranch %205
%210 = OpLabel
%241 = OpLoad %v3float %86
%244 = OpFSub %v3float %241 %243
%246 = OpExtInst %v3float %245 FAbs %244
OpStore %79 %246
%247 = OpAccessChain %_ptr_Function_float %79 %int_0
%248 = OpLoad %float %247
%249 = OpAccessChain %_ptr_Function_float %79 %int_1
%250 = OpLoad %float %249
%251 = OpAccessChain %_ptr_Function_float %79 %int_2
%252 = OpLoad %float %251
%253 = OpExtInst %float %245 FMax %250 %252
%254 = OpExtInst %float %245 FMax %248 %253
OpStore %77 %254
%255 = OpLoad %float %85
%256 = OpLoad %float %77
%257 = OpFSub %float %float_0_5 %256
%258 = OpFMul %float %float_0_5 %257
%259 = OpExtInst %float %245 FMin %258 %float_1
%260 = OpFMul %float %255 %259
%262 = OpFSub %float %260 %float_0_00100000005
OpStore %85 %262
%263 = OpLoad %float %85
OpStore %76 %263
%264 = OpLoad %float %76
%266 = OpFOrdGreaterThan %bool %264 %float_0
%267 = OpSelect %uint %266 %uint_1 %uint_0
%268 = OpLoad %uint %98
%269 = OpSConvert %long %268
%270 = OpSConvert %int %269
%272 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %270
%273 = OpLoad %uint %99
%274 = OpSConvert %long %273
%275 = OpSConvert %int %274
%277 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %272 %275
%278 = OpLoad %uint %97
%279 = OpSConvert %long %278
%280 = OpSConvert %int %279
%282 = OpAccessChain %_ptr_Workgroup_uint %277 %280
OpStore %282 %267
%283 = OpLoad %uint %95
%285 = OpIAdd %uint %283 %uint_32
OpStore %95 %285
OpBranch %156
%160 = OpLabel
OpStore %102 %uint_0
%286 = OpLoad %uint %91
OpStore %103 %286
OpBranch %287
%287 = OpLabel
%288 = OpLoad %uint %103
%290 = OpULessThan %bool %288 %uint_64
OpLoopMerge %291 %292 None
OpBranchConditional %290 %293 %291
%293 = OpLabel
%294 = OpLoad %uint %103
%296 = OpBitwiseAnd %uint %294 %uint_3
OpStore %104 %296
%297 = OpLoad %uint %103
%298 = OpShiftRightLogical %uint %297 %uint_2
%299 = OpBitwiseAnd %uint %298 %uint_3
OpStore %105 %299
%300 = OpLoad %uint %103
%301 = OpShiftRightLogical %uint %300 %uint_4
OpStore %106 %301
%302 = OpLoad %uint %106
%303 = OpIAdd %uint %302 %uint_0
%304 = OpSConvert %long %303
%305 = OpSConvert %int %304
%306 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %305
%307 = OpLoad %uint %105
%308 = OpIAdd %uint %307 %uint_0
%309 = OpSConvert %long %308
%310 = OpSConvert %int %309
%311 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %306 %310
%312 = OpLoad %uint %104
%313 = OpIAdd %uint %312 %uint_0
%314 = OpSConvert %long %313
%315 = OpSConvert %int %314
%316 = OpAccessChain %_ptr_Workgroup_uint %311 %315
%317 = OpLoad %uint %316
%318 = OpShiftLeftLogical %uint %317 %uint_0
OpStore %107 %318
%319 = OpLoad %uint %106
%320 = OpIAdd %uint %319 %uint_0
%321 = OpSConvert %long %320
%322 = OpSConvert %int %321
%323 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %322
%324 = OpLoad %uint %105
%325 = OpIAdd %uint %324 %uint_0
%326 = OpSConvert %long %325
%327 = OpSConvert %int %326
%328 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %323 %327
%329 = OpLoad %uint %104
%330 = OpIAdd %uint %329 %uint_1
%331 = OpSConvert %long %330
%332 = OpSConvert %int %331
%333 = OpAccessChain %_ptr_Workgroup_uint %328 %332
%334 = OpLoad %uint %333
%335 = OpShiftLeftLogical %uint %334 %uint_1
%336 = OpLoad %uint %107
%337 = OpBitwiseOr %uint %336 %335
OpStore %107 %337
%338 = OpLoad %uint %106
%339 = OpIAdd %uint %338 %uint_0
%340 = OpSConvert %long %339
%341 = OpSConvert %int %340
%342 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %341
%343 = OpLoad %uint %105
%344 = OpIAdd %uint %343 %uint_1
%345 = OpSConvert %long %344
%346 = OpSConvert %int %345
%347 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %342 %346
%348 = OpLoad %uint %104
%349 = OpIAdd %uint %348 %uint_0
%350 = OpSConvert %long %349
%351 = OpSConvert %int %350
%352 = OpAccessChain %_ptr_Workgroup_uint %347 %351
%353 = OpLoad %uint %352
%354 = OpShiftLeftLogical %uint %353 %uint_2
%355 = OpLoad %uint %107
%356 = OpBitwiseOr %uint %355 %354
OpStore %107 %356
%357 = OpLoad %uint %106
%358 = OpIAdd %uint %357 %uint_0
%359 = OpSConvert %long %358
%360 = OpSConvert %int %359
%361 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %360
%362 = OpLoad %uint %105
%363 = OpIAdd %uint %362 %uint_1
%364 = OpSConvert %long %363
%365 = OpSConvert %int %364
%366 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %361 %365
%367 = OpLoad %uint %104
%368 = OpIAdd %uint %367 %uint_1
%369 = OpSConvert %long %368
%370 = OpSConvert %int %369
%371 = OpAccessChain %_ptr_Workgroup_uint %366 %370
%372 = OpLoad %uint %371
%373 = OpShiftLeftLogical %uint %372 %uint_3
%374 = OpLoad %uint %107
%375 = OpBitwiseOr %uint %374 %373
OpStore %107 %375
%376 = OpLoad %uint %106
%377 = OpIAdd %uint %376 %uint_1
%378 = OpSConvert %long %377
%379 = OpSConvert %int %378
%380 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %379
%381 = OpLoad %uint %105
%382 = OpIAdd %uint %381 %uint_0
%383 = OpSConvert %long %382
%384 = OpSConvert %int %383
%385 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %380 %384
%386 = OpLoad %uint %104
%387 = OpIAdd %uint %386 %uint_0
%388 = OpSConvert %long %387
%389 = OpSConvert %int %388
%390 = OpAccessChain %_ptr_Workgroup_uint %385 %389
%391 = OpLoad %uint %390
%392 = OpShiftLeftLogical %uint %391 %uint_4
%393 = OpLoad %uint %107
%394 = OpBitwiseOr %uint %393 %392
OpStore %107 %394
%395 = OpLoad %uint %106
%396 = OpIAdd %uint %395 %uint_1
%397 = OpSConvert %long %396
%398 = OpSConvert %int %397
%399 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %398
%400 = OpLoad %uint %105
%401 = OpIAdd %uint %400 %uint_0
%402 = OpSConvert %long %401
%403 = OpSConvert %int %402
%404 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %399 %403
%405 = OpLoad %uint %104
%406 = OpIAdd %uint %405 %uint_1
%407 = OpSConvert %long %406
%408 = OpSConvert %int %407
%409 = OpAccessChain %_ptr_Workgroup_uint %404 %408
%410 = OpLoad %uint %409
%411 = OpShiftLeftLogical %uint %410 %uint_5
%412 = OpLoad %uint %107
%413 = OpBitwiseOr %uint %412 %411
OpStore %107 %413
%414 = OpLoad %uint %106
%415 = OpIAdd %uint %414 %uint_1
%416 = OpSConvert %long %415
%417 = OpSConvert %int %416
%418 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %417
%419 = OpLoad %uint %105
%420 = OpIAdd %uint %419 %uint_1
%421 = OpSConvert %long %420
%422 = OpSConvert %int %421
%423 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %418 %422
%424 = OpLoad %uint %104
%425 = OpIAdd %uint %424 %uint_0
%426 = OpSConvert %long %425
%427 = OpSConvert %int %426
%428 = OpAccessChain %_ptr_Workgroup_uint %423 %427
%429 = OpLoad %uint %428
%431 = OpShiftLeftLogical %uint %429 %uint_6
%432 = OpLoad %uint %107
%433 = OpBitwiseOr %uint %432 %431
OpStore %107 %433
%434 = OpLoad %uint %106
%435 = OpIAdd %uint %434 %uint_1
%436 = OpSConvert %long %435
%437 = OpSConvert %int %436
%438 = OpAccessChain %_ptr_Workgroup__arr__arr_uint_uint_5_uint_5 %_ZZ9task_mainvE6values %437
%439 = OpLoad %uint %105
%440 = OpIAdd %uint %439 %uint_1
%441 = OpSConvert %long %440
%442 = OpSConvert %int %441
%443 = OpAccessChain %_ptr_Workgroup__arr_uint_uint_5 %438 %442
%444 = OpLoad %uint %104
%445 = OpIAdd %uint %444 %uint_1
%446 = OpSConvert %long %445
%447 = OpSConvert %int %446
%448 = OpAccessChain %_ptr_Workgroup_uint %443 %447
%449 = OpLoad %uint %448
%451 = OpShiftLeftLogical %uint %449 %uint_7
%452 = OpLoad %uint %107
%453 = OpBitwiseOr %uint %452 %451
OpStore %107 %453
%454 = OpLoad %uint %107
%455 = OpINotEqual %bool %454 %uint_0
OpSelectionMerge %456 None
OpBranchConditional %455 %457 %456
%291 = OpLabel
%458 = OpLoad %uint %91
%459 = OpINotEqual %bool %458 %uint_0
%460 = OpLogicalNot %bool %459
OpSelectionMerge %461 None
OpBranchConditional %460 %462 %463
%457 = OpLabel
%464 = OpLoad %uint %107
%466 = OpINotEqual %bool %464 %uint_255
OpBranch %456
%456 = OpLabel
%468 = OpPhi %bool %false %293 %466 %457
OpStore %110 %468
%469 = OpLoad %bool %110
%470 = OpGroupNonUniformBallot %v4uint %uint_3 %469
OpStore %113 %470
%471 = OpLoad %bool %110
OpSelectionMerge %472 None
OpBranchConditional %471 %473 %474
%473 = OpLabel
%475 = OpAccessChain %_ptr_Function_uint %113 %int_0
%476 = OpLoad %uint %475
%477 = OpLoad %uint %91
%478 = OpBitcast %int %477
%479 = OpShiftLeftLogical %int %int_1 %478
%480 = OpISub %int %479 %int_1
%481 = OpBitcast %uint %480
%482 = OpBitwiseAnd %uint %476 %481
%483 = OpBitCount %int %482
%484 = OpBitcast %uint %483
OpStore %114 %484
OpStore %116 %125
%485 = OpLoad %v3uint %93
%486 = OpLoad %uint %104
%487 = OpLoad %uint %105
%488 = OpLoad %uint %106
%489 = OpCompositeConstruct %v3uint %486 %487 %488
%490 = OpIAdd %v3uint %485 %489
OpStore %74 %490
%491 = OpAccessChain %_ptr_Function_uint %74 %int_2
%492 = OpLoad %uint %491
%493 = OpAccessChain %_ptr_Function_int %116 %int_1
%494 = OpLoad %int %493
%495 = OpBitcast %uint %494
%496 = OpShiftLeftLogical %uint %492 %495
%497 = OpAccessChain %_ptr_Function_uint %74 %int_1
%498 = OpLoad %uint %497
%499 = OpIAdd %uint %496 %498
%500 = OpAccessChain %_ptr_Function_int %116 %int_1
%501 = OpLoad %int %500
%502 = OpBitcast %uint %501
%503 = OpShiftLeftLogical %uint %499 %502
%504 = OpAccessChain %_ptr_Function_uint %74 %int_0
%505 = OpLoad %uint %504
%506 = OpIAdd %uint %503 %505
OpStore %72 %506
%507 = OpLoad %uint %72
OpStore %115 %507
%508 = OpLoad %uint %115
%509 = OpLoad %uint %102
%510 = OpLoad %uint %114
%511 = OpIAdd %uint %509 %510
%512 = OpSConvert %long %511
%513 = OpSConvert %int %512
%515 = OpAccessChain %_ptr_Output_MeshletData %meshlets %513
%516 = OpAccessChain %_ptr_Output_uint %515 %int_0
OpStore %516 %508
OpBranch %472
%474 = OpLabel
OpBranch %472
%472 = OpLabel
%517 = OpAccessChain %_ptr_Function_uint %113 %int_0
%518 = OpLoad %uint %517
%519 = OpBitCount %int %518
%520 = OpBitcast %uint %519
%521 = OpLoad %uint %102
%522 = OpIAdd %uint %521 %520
OpStore %102 %522
OpBranch %292
%292 = OpLabel
%523 = OpLoad %uint %103
%524 = OpIAdd %uint %523 %uint_32
OpStore %103 %524
OpBranch %287
%462 = OpLabel
%525 = OpLoad %uint %102
OpStore %glmesh_TaskCount %525
OpBranch %461
%463 = OpLabel
OpBranch %461
%461 = OpLabel
OpReturn
OpFunctionEnd
%_Z9mesh_mainv = OpFunction %void None %65
%526 = OpLabel
%527 = OpVariable %_ptr_Function_int Function
%528 = OpVariable %_ptr_Function_int Function
%529 = OpVariable %_ptr_Function_int Function
%530 = OpVariable %_ptr_Function_int Function
%531 = OpVariable %_ptr_Function_float Function
%532 = OpVariable %_ptr_Function_float Function
%533 = OpVariable %_ptr_Function_v3float Function
%534 = OpVariable %_ptr_Function_v3float Function
%535 = OpVariable %_ptr_Function_constants_t Function
%536 = OpVariable %_ptr_Function_int Function
%537 = OpVariable %_ptr_Function_float Function
%538 = OpVariable %_ptr_Function_v3float Function
%539 = OpVariable %_ptr_Function_float Function
%540 = OpVariable %_ptr_Function_float Function
%541 = OpVariable %_ptr_Function_float Function
%542 = OpVariable %_ptr_Function_v3uint Function
%543 = OpVariable %_ptr_Function_uint Function
%544 = OpVariable %_ptr_Function_uint Function
%545 = OpVariable %_ptr_Function_int Function
%546 = OpVariable %_ptr_Function_int Function
%547 = OpVariable %_ptr_Function_v3uint Function
%548 = OpVariable %_ptr_Function_constants_t Function
%549 = OpVariable %_ptr_Function_v3float Function
%550 = OpVariable %_ptr_Function_constants_t Function
%551 = OpVariable %_ptr_Function_v3float Function
%552 = OpVariable %_ptr_Function_constants_t Function
%553 = OpVariable %_ptr_Function_v3float Function
%554 = OpVariable %_ptr_Function_float Function
%555 = OpVariable %_ptr_Function_constants_t Function
%556 = OpVariable %_ptr_Function_int Function
%557 = OpVariable %_ptr_Function_float Function
%558 = OpVariable %_ptr_Function_v3float Function
%559 = OpVariable %_ptr_Function_uint Function
%562 = OpVariable %_ptr_Function_marching_cubes_lookup_t_0 Function
%563 = OpVariable %_ptr_Function_uint Function
%564 = OpVariable %_ptr_Function_uint Function
%565 = OpVariable %_ptr_Function_uint Function
%566 = OpVariable %_ptr_Function_v3float Function
%567 = OpVariable %_ptr_Function_v3float Function
%568 = OpVariable %_ptr_Function_float Function
%569 = OpVariable %_ptr_Function_v3float Function
%570 = OpVariable %_ptr_Function_v3float Function
%571 = OpVariable %_ptr_Function_int Function
%572 = OpAccessChain %_ptr_Input_uint %glcomp_LocalInvocationID %int_0
%573 = OpLoad %uint %572
%574 = OpBitcast %int %573
OpStore %545 %574
%575 = OpAccessChain %_ptr_Input_uint %glcomp_WorkGroupID %int_0
%576 = OpLoad %uint %575
%577 = OpSConvert %long %576
%578 = OpSConvert %int %577
%579 = OpAccessChain %_ptr_Output_MeshletData %meshlets %578
%580 = OpAccessChain %_ptr_Output_uint %579 %int_0
%581 = OpLoad %uint %580
%582 = OpBitcast %int %581
OpStore %546 %582
OpStore %548 %125
%583 = OpLoad %int %546
%584 = OpBitcast %uint %583
OpStore %544 %584
%585 = OpAccessChain %_ptr_Function_int %548 %int_1
%586 = OpLoad %int %585
%587 = OpShiftLeftLogical %int %int_1 %586
OpStore %530 %587
%588 = OpLoad %int %530
%589 = OpISub %int %588 %int_1
%590 = OpBitcast %uint %589
OpStore %543 %590
%591 = OpLoad %uint %544
%592 = OpCompositeConstruct %v3uint %591 %591 %591
%593 = OpAccessChain %_ptr_Function_int %548 %int_1
%594 = OpLoad %int %593
%595 = OpBitcast %uint %594
%596 = OpCompositeConstruct %v3uint %595 %595 %595
%597 = OpIMul %v3uint %146 %596
%598 = OpLoad %uint %543
%599 = OpCompositeConstruct %v3uint %598 %598 %598
%600 = OpBitwiseAnd %v3uint %597 %599
%601 = OpShiftRightLogical %v3uint %592 %600
OpStore %542 %601
%602 = OpLoad %v3uint %542
OpStore %547 %602
%603 = OpLoad %v3uint %547
%604 = OpConvertUToF %v3float %603
OpStore %550 %125
%605 = OpAccessChain %_ptr_Function_int %550 %int_1
%606 = OpLoad %int %605
%607 = OpShiftLeftLogical %int %int_1 %606
OpStore %529 %607
%608 = OpLoad %int %529
%609 = OpConvertSToF %float %608
%610 = OpFDiv %float %float_1 %609
OpStore %541 %610
%611 = OpLoad %float %541
%612 = OpVectorTimesScalar %v3float %604 %611
OpStore %549 %612
%613 = OpLoad %v3float %549
OpStore %552 %125
%614 = OpAccessChain %_ptr_Function_int %552 %int_1
%615 = OpLoad %int %614
%616 = OpShiftLeftLogical %int %int_1 %615
OpStore %528 %616
%617 = OpLoad %int %528
%618 = OpConvertSToF %float %617
%619 = OpFDiv %float %float_1 %618
OpStore %540 %619
%620 = OpLoad %float %540
%621 = OpCompositeConstruct %v3float %620 %620 %620
%622 = OpFAdd %v3float %613 %621
OpStore %551 %622
%623 = OpLoad %int %545
%625 = OpCompositeConstruct %v3int %623 %623 %623
%627 = OpBitwiseAnd %v3int %625 %626
%630 = OpIEqual %v3bool %627 %629
%631 = OpLoad %v3float %551
%632 = OpLoad %v3float %549
%633 = OpSelect %v3float %630 %631 %632
OpStore %553 %633
OpStore %555 %125
%634 = OpAccessChain %_ptr_Function_int %555 %int_1
%635 = OpLoad %int %634
%636 = OpShiftLeftLogical %int %int_1 %635
OpStore %527 %636
%637 = OpLoad %int %527
%638 = OpConvertSToF %float %637
%639 = OpFDiv %float %float_1 %638
OpStore %539 %639
%640 = OpLoad %float %539
%642 = OpFMul %float %float_0_0625 %640
OpStore %554 %642
%643 = OpLoad %int %545
%645 = OpSDiv %int %643 %int_8
OpStore %556 %645
%646 = OpLoad %int %556
%647 = OpIEqual %bool %int_1 %646
OpSelectionMerge %648 None
OpBranchConditional %647 %649 %650
%649 = OpLabel
%651 = OpLoad %float %554
OpBranch %648
%650 = OpLabel
OpBranch %648
%648 = OpLabel
%652 = OpPhi %float %651 %649 %float_0 %650
%653 = OpAccessChain %_ptr_Function_float %553 %int_0
%654 = OpLoad %float %653
%655 = OpFAdd %float %654 %652
OpStore %653 %655
%656 = OpLoad %int %556
%657 = OpIEqual %bool %int_2 %656
OpSelectionMerge %658 None
OpBranchConditional %657 %659 %660
%659 = OpLabel
%661 = OpLoad %float %554
OpBranch %658
%660 = OpLabel
OpBranch %658
%658 = OpLabel
%662 = OpPhi %float %661 %659 %float_0 %660
%663 = OpAccessChain %_ptr_Function_float %553 %int_1
%664 = OpLoad %float %663
%665 = OpFAdd %float %664 %662
OpStore %663 %665
%666 = OpLoad %int %556
%667 = OpIEqual %bool %int_3 %666
OpSelectionMerge %668 None
OpBranchConditional %667 %669 %670
%669 = OpLabel
%671 = OpLoad %float %554
OpBranch %668
%670 = OpLabel
OpBranch %668
%668 = OpLabel
%672 = OpPhi %float %671 %669 %float_0 %670
%673 = OpAccessChain %_ptr_Function_float %553 %int_2
%674 = OpLoad %float %673
%675 = OpFAdd %float %674 %672
OpStore %673 %675
%676 = OpLoad %v3float %553
OpStore %538 %676
OpStore %537 %float_n1
OpStore %536 %int_0
OpBranch %677
%677 = OpLabel
%678 = OpLoad %int %536
OpStore %535 %125
%679 = OpAccessChain %_ptr_Function_int %535 %int_0
%680 = OpLoad %int %679
%681 = OpSLessThan %bool %678 %680
OpLoopMerge %682 %683 None
OpBranchConditional %681 %683 %682
%683 = OpLabel
%684 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2
%685 = OpLoad %int %536
%686 = OpSConvert %long %685
%687 = OpSConvert %int %686
%688 = OpAccessChain %_ptr_Uniform_v4float %684 %687
%689 = OpLoad %v4float %688
%690 = OpVectorShuffle %v3float %689 %689 0 1 2
%691 = OpLoad %v3float %538
%692 = OpFSub %v3float %690 %691
OpStore %534 %692
%693 = OpAccessChain %_ptr_Uniform__arr_v4float_uint_128 %uniforms %int_2
%694 = OpLoad %int %536
%695 = OpSConvert %long %694
%696 = OpSConvert %int %695
%697 = OpAccessChain %_ptr_Uniform_v4float %693 %696
%698 = OpAccessChain %_ptr_Uniform_float %697 %int_3
%699 = OpLoad %float %698
%700 = OpLoad %v3float %534
%701 = OpLoad %v3float %534
%702 = OpDot %float %700 %701
%703 = OpFDiv %float %699 %702
%704 = OpLoad %float %537
%705 = OpFAdd %float %704 %703
OpStore %537 %705
%706 = OpLoad %int %536
%707 = OpIAdd %int %706 %int_1
OpStore %536 %707
OpBranch %677
%682 = OpLabel
%708 = OpLoad %v3float %538
%709 = OpFSub %v3float %708 %243
%710 = OpExtInst %v3float %245 FAbs %709
OpStore %533 %710
%711 = OpAccessChain %_ptr_Function_float %533 %int_0
%712 = OpLoad %float %711
%713 = OpAccessChain %_ptr_Function_float %533 %int_1
%714 = OpLoad %float %713
%715 = OpAccessChain %_ptr_Function_float %533 %int_2
%716 = OpLoad %float %715
%717 = OpExtInst %float %245 FMax %714 %716
%718 = OpExtInst %float %245 FMax %712 %717
OpStore %532 %718
%719 = OpLoad %float %537
%720 = OpLoad %float %532
%721 = OpFSub %float %float_0_5 %720
%722 = OpFMul %float %float_0_5 %721
%723 = OpExtInst %float %245 FMin %722 %float_1
%724 = OpFMul %float %719 %723
%725 = OpFSub %float %724 %float_0_00100000005
OpStore %537 %725
%726 = OpLoad %float %537
OpStore %531 %726
%727 = OpLoad %float %531
OpStore %557 %727
%728 = OpLoad %float %557
%729 = OpGroupNonUniformShuffleDown %float %uint_3 %728 %uint_8
%730 = OpLoad %float %557
%732 = OpGroupNonUniformShuffleDown %float %uint_3 %730 %uint_16
%733 = OpLoad %float %557
%735 = OpGroupNonUniformShuffleDown %float %uint_3 %733 %uint_24
%736 = OpCompositeConstruct %v3float %729 %732 %735
OpStore %558 %736
%737 = OpLoad %int %545
%738 = OpSLessThan %bool %737 %int_8
OpSelectionMerge %739 None
OpBranchConditional %738 %740 %741
%740 = OpLabel
%742 = OpLoad %float %557
%743 = OpCompositeConstruct %v3float %742 %742 %742
%744 = OpLoad %v3float %558
%745 = OpFSub %v3float %743 %744
%746 = OpExtInst %v3float %245 Normalize %745
%747 = OpLoad %float %557
%748 = OpCompositeConstruct %v4float %746 %747
%749 = OpLoad %int %545
%750 = OpSConvert %long %749
%751 = OpSConvert %int %750
%753 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %751
OpStore %753 %748
OpBranch %739
%741 = OpLabel
OpBranch %739
%739 = OpLabel
OpControlBarrier %int_2 %int_2 %int_264
%755 = OpLoad %float %557
%756 = OpFOrdGreaterThan %bool %755 %float_0
%757 = OpGroupNonUniformBallot %v4uint %uint_3 %756
%758 = OpCompositeExtract %uint %757 0
%759 = OpBitwiseAnd %uint %uint_255 %758
OpStore %559 %759
%760 = OpLoad %uint %559
%761 = OpSConvert %long %760
%762 = OpSConvert %int %761
%764 = OpAccessChain %_ptr_StorageBuffer_marching_cubes_lookup_t %marching_cubes_lookup %762
%765 = OpLoad %marching_cubes_lookup_t %764
%766 = OpCopyLogical %marching_cubes_lookup_t_0 %765
OpStore %562 %766
%767 = OpLoad %int %545
%768 = OpINotEqual %bool %767 %int_0
%769 = OpLogicalNot %bool %768
OpSelectionMerge %770 None
OpBranchConditional %769 %771 %772
%771 = OpLabel
%774 = OpAccessChain %_ptr_Function_uchar %562 %int_2
%775 = OpLoad %uchar %774
%776 = OpUConvert %uint %775
OpStore %glmesh_PrimitiveCount %776
OpBranch %770
%772 = OpLabel
OpBranch %770
%770 = OpLabel
%777 = OpLoad %int %545
%778 = OpAccessChain %_ptr_Function_uchar %562 %int_3
%779 = OpLoad %uchar %778
%780 = OpSConvert %int %779
%781 = OpSLessThan %bool %777 %780
OpSelectionMerge %782 None
OpBranchConditional %781 %783 %784
%783 = OpLabel
%786 = OpAccessChain %_ptr_Function__arr_uchar_uint_12 %562 %int_1
%787 = OpLoad %int %545
%788 = OpSConvert %long %787
%789 = OpSConvert %int %788
%790 = OpAccessChain %_ptr_Function_uchar %786 %789
%791 = OpLoad %uchar %790
%792 = OpUConvert %uint %791
OpStore %563 %792
%793 = OpLoad %uint %563
%794 = OpBitwiseAnd %uint %793 %uint_7
OpStore %564 %794
%795 = OpLoad %uint %563
%796 = OpShiftRightLogical %uint %795 %uint_3
OpStore %565 %796
%797 = OpLoad %uint %564
%798 = OpBitcast %int %797
%799 = OpCompositeConstruct %v3int %798 %798 %798
%800 = OpBitwiseAnd %v3int %799 %626
%801 = OpIEqual %v3bool %800 %629
%802 = OpLoad %v3float %551
%803 = OpLoad %v3float %549
%804 = OpSelect %v3float %801 %802 %803
OpStore %566 %804
%805 = OpLoad %uint %565
%806 = OpBitcast %int %805
%807 = OpCompositeConstruct %v3int %806 %806 %806
%808 = OpBitwiseAnd %v3int %807 %626
%809 = OpIEqual %v3bool %808 %629
%810 = OpLoad %v3float %551
%811 = OpLoad %v3float %549
%812 = OpSelect %v3float %809 %810 %811
OpStore %567 %812
%813 = OpLoad %uint %564
%814 = OpSConvert %long %813
%815 = OpSConvert %int %814
%816 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %815
%818 = OpAccessChain %_ptr_Workgroup_float %816 %int_3
%819 = OpLoad %float %818
%820 = OpLoad %uint %564
%821 = OpSConvert %long %820
%822 = OpSConvert %int %821
%823 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %822
%824 = OpAccessChain %_ptr_Workgroup_float %823 %int_3
%825 = OpLoad %float %824
%826 = OpLoad %uint %565
%827 = OpSConvert %long %826
%828 = OpSConvert %int %827
%829 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %828
%830 = OpAccessChain %_ptr_Workgroup_float %829 %int_3
%831 = OpLoad %float %830
%832 = OpFSub %float %825 %831
%833 = OpFDiv %float %819 %832
OpStore %568 %833
%834 = OpLoad %v3float %566
%835 = OpLoad %v3float %567
%836 = OpLoad %float %568
%837 = OpCompositeConstruct %v3float %836 %836 %836
%838 = OpExtInst %v3float %245 FMix %834 %835 %837
OpStore %569 %838
%839 = OpLoad %uint %564
%840 = OpSConvert %long %839
%841 = OpSConvert %int %840
%842 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %841
%843 = OpLoad %v4float %842
%844 = OpVectorShuffle %v3float %843 %843 0 1 2
%845 = OpLoad %uint %565
%846 = OpSConvert %long %845
%847 = OpSConvert %int %846
%848 = OpAccessChain %_ptr_Workgroup_v4float %_ZZ9mesh_mainvE7corners %847
%849 = OpLoad %v4float %848
%850 = OpVectorShuffle %v3float %849 %849 0 1 2
%851 = OpLoad %float %568
%852 = OpCompositeConstruct %v3float %851 %851 %851
%853 = OpExtInst %v3float %245 FMix %844 %850 %852
OpStore %570 %853
%855 = OpAccessChain %_ptr_Uniform_mat4v4float %uniforms %int_0
%856 = OpLoad %mat4v4float %855
%857 = OpLoad %v3float %569
%858 = OpCompositeConstruct %v4float %857 %float_1
%859 = OpMatrixTimesVector %v4float %856 %858
%860 = OpLoad %int %545
%861 = OpSConvert %long %860
%862 = OpSConvert %int %861
%864 = OpAccessChain %_ptr_Output_gl_PerVertex %glmesh_Output %862
%865 = OpAccessChain %_ptr_Output_v4float %864 %int_0
OpStore %865 %859
%866 = OpLoad %v3float %569
%867 = OpLoad %int %545
%868 = OpSConvert %long %867
%869 = OpSConvert %int %868
%871 = OpAccessChain %_ptr_Output_v3float %_Z16shader_out_arrayILj0EDv3_fE %869
OpStore %871 %866
%872 = OpLoad %v3float %570
%873 = OpLoad %int %545
%874 = OpSConvert %long %873
%875 = OpSConvert %int %874
%876 = OpAccessChain %_ptr_Output_v3float %_Z16shader_out_arrayILj1EDv3_fE %875
OpStore %876 %872
OpBranch %782
%784 = OpLabel
OpBranch %782
%782 = OpLabel
%877 = OpAccessChain %_ptr_Function_uchar %562 %int_2
%878 = OpLoad %uchar %877
%879 = OpSConvert %int %878
%880 = OpIMul %int %int_3 %879
OpStore %571 %880
%881 = OpLoad %int %545
%882 = OpIMul %int %int_4 %881
%883 = OpLoad %int %571
%884 = OpSLessThan %bool %882 %883
OpSelectionMerge %885 None
OpBranchConditional %884 %886 %887
%886 = OpLabel
OpBranch %885
%887 = OpLabel
OpBranch %885
%885 = OpLabel
OpReturn
OpFunctionEnd
%_Z9frag_mainv = OpFunction %void None %65
%888 = OpLabel
%889 = OpVariable %_ptr_Function_v3float Function
%890 = OpVariable %_ptr_Function_v3float Function
%891 = OpVariable %_ptr_Function_float Function
%892 = OpVariable %_ptr_Function_float Function
%893 = OpVariable %_ptr_Function_float Function
%894 = OpVariable %_ptr_Function_float Function
%895 = OpVariable %_ptr_Function_v3float Function
%896 = OpVariable %_ptr_Function_v3float Function
%897 = OpVariable %_ptr_Function_v3float Function
%898 = OpVariable %_ptr_Function_v3float Function
%899 = OpVariable %_ptr_Function_v3float Function
%900 = OpVariable %_ptr_Function_v3float Function
%901 = OpLoad %v3float %_Z9shader_inILj0EDv3_fE
%903 = OpAccessChain %_ptr_Uniform_v3float %uniforms %int_1
%904 = OpLoad %v3float %903
%905 = OpFSub %v3float %901 %904
OpStore %889 %905
%906 = OpLoad %v3float %_Z9shader_inILj1EDv3_fE
%907 = OpExtInst %v3float %245 Normalize %906
OpStore %890 %907
OpStore %891 %float_1_12
%909 = OpLoad %v3float %889
%910 = OpLoad %v3float %890
%911 = OpDot %float %909 %910
OpStore %892 %911
%912 = OpLoad %float %891
%913 = OpLoad %float %892
%914 = OpFMul %float %912 %913
OpStore %893 %914
%915 = OpLoad %float %893
%916 = OpLoad %float %893
%917 = OpFMul %float %915 %916
%918 = OpLoad %float %891
%919 = OpLoad %float %891
%920 = OpFMul %float %918 %919
%921 = OpFSub %float %float_1 %920
%922 = OpFAdd %float %917 %921
%923 = OpExtInst %float %245 FClamp %922 %float_0 %float_1
OpStore %894 %923
%924 = OpLoad %v3float %889
%925 = OpLoad %v3float %890
%926 = OpLoad %float %892
%928 = OpFMul %float %float_2 %926
%929 = OpVectorTimesScalar %v3float %925 %928
%930 = OpFSub %v3float %924 %929
OpStore %895 %930
%931 = OpLoad %v3float %889
%932 = OpLoad %float %891
%933 = OpVectorTimesScalar %v3float %931 %932
%934 = OpLoad %v3float %890
%935 = OpLoad %float %893
%936 = OpLoad %float %894
%937 = OpExtInst %float %245 Sqrt %936
%938 = OpFAdd %float %935 %937
%939 = OpVectorTimesScalar %v3float %934 %938
%940 = OpFSub %v3float %933 %939
OpStore %896 %940
%941 = OpLoad %samplerCube %sky_box
%942 = OpLoad %v3float %895
%943 = OpImageSampleImplicitLod %v4float %941 %942 None
%944 = OpVectorShuffle %v3float %943 %943 0 1 2
OpStore %897 %944
%945 = OpLoad %samplerCube %sky_box
%946 = OpLoad %v3float %896
%947 = OpImageSampleImplicitLod %v4float %945 %946 None
%948 = OpVectorShuffle %v3float %947 %947 0 1 2
OpStore %898 %948
%949 = OpLoad %v3float %897
%950 = OpLoad %v3float %898
%951 = OpLoad %float %894
%952 = OpCompositeConstruct %v3float %951 %951 %951
%953 = OpExtInst %v3float %245 FMix %949 %950 %952
OpStore %899 %953
%954 = OpLoad %v3float %890
%955 = OpExtInst %v3float %245 FAbs %954
%956 = OpLoad %float %894
%957 = OpFSub %float %float_1 %956
%959 = OpExtInst %float %245 Pow %957 %float_5
%961 = OpFMul %float %float_0_25 %959
%962 = OpVectorTimesScalar %v3float %955 %961
OpStore %900 %962
%963 = OpLoad %v3float %899
%964 = OpLoad %v3float %900
%965 = OpFAdd %v3float %963 %964
%966 = OpCompositeConstruct %v4float %965 %float_1
OpStore %_Z10shader_outILi0EDv4_fE %966
OpReturn
OpFunctionEnd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment