7eba247864
Found some other issues. Had some bugs with variable writes not properly invalidating if writes came from split access chains.
91 lines
4.3 KiB
GLSL
91 lines
4.3 KiB
GLSL
; SPIR-V
|
|
; Version: 1.0
|
|
; Generator: Khronos Glslang Reference Front End; 3
|
|
; Bound: 42
|
|
; Schema: 0
|
|
OpCapability Geometry
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Geometry %main "main" %gl_in %_
|
|
OpExecutionMode %main Triangles
|
|
OpExecutionMode %main Invocations 1
|
|
OpExecutionMode %main OutputTriangleStrip
|
|
OpExecutionMode %main OutputVertices 5
|
|
OpSource GLSL 440
|
|
OpName %main "main"
|
|
OpName %Data "Data"
|
|
OpMemberName %Data 0 "ApiPerspectivePosition"
|
|
OpName %Copy_struct_Data_vf41_3__ "Copy(struct-Data-vf41[3];"
|
|
OpName %inputStream "inputStream"
|
|
OpName %gl_PerVertex "gl_PerVertex"
|
|
OpMemberName %gl_PerVertex 0 "gl_Position"
|
|
OpMemberName %gl_PerVertex 1 "gl_PointSize"
|
|
OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
|
|
OpName %gl_in "gl_in"
|
|
OpName %inputStream_0 "inputStream"
|
|
OpName %param "param"
|
|
OpName %gl_PerVertex_0 "gl_PerVertex"
|
|
OpMemberName %gl_PerVertex_0 0 "gl_Position"
|
|
OpMemberName %gl_PerVertex_0 1 "gl_PointSize"
|
|
OpMemberName %gl_PerVertex_0 2 "gl_ClipDistance"
|
|
OpName %_ ""
|
|
OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
|
|
OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
|
|
OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
|
|
OpDecorate %gl_PerVertex Block
|
|
OpMemberDecorate %gl_PerVertex_0 0 BuiltIn Position
|
|
OpMemberDecorate %gl_PerVertex_0 1 BuiltIn PointSize
|
|
OpMemberDecorate %gl_PerVertex_0 2 BuiltIn ClipDistance
|
|
OpDecorate %gl_PerVertex_0 Block
|
|
%void = OpTypeVoid
|
|
%3 = OpTypeFunction %void
|
|
%float = OpTypeFloat 32
|
|
%v4float = OpTypeVector %float 4
|
|
%Data = OpTypeStruct %v4float
|
|
%uint = OpTypeInt 32 0
|
|
%uint_3 = OpConstant %uint 3
|
|
%_arr_Data_uint_3 = OpTypeArray %Data %uint_3
|
|
%_ptr_Function__Data = OpTypePointer Function %Data
|
|
%_ptr_Function__arr_Data_uint_3 = OpTypePointer Function %_arr_Data_uint_3
|
|
%13 = OpTypeFunction %void %_ptr_Function__arr_Data_uint_3
|
|
%int = OpTypeInt 32 1
|
|
%int_0 = OpConstant %int 0
|
|
%uint_1 = OpConstant %uint 1
|
|
%_arr_float_uint_1 = OpTypeArray %float %uint_1
|
|
%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1
|
|
%_arr_gl_PerVertex_uint_3 = OpTypeArray %gl_PerVertex %uint_3
|
|
%_ptr_Input__arr_gl_PerVertex_uint_3 = OpTypePointer Input %_arr_gl_PerVertex_uint_3
|
|
%gl_in = OpVariable %_ptr_Input__arr_gl_PerVertex_uint_3 Input
|
|
%_ptr_Input_v4float = OpTypePointer Input %v4float
|
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
%gl_PerVertex_0 = OpTypeStruct %v4float %float %_arr_float_uint_1
|
|
%_ptr_Output_gl_PerVertex_0 = OpTypePointer Output %gl_PerVertex_0
|
|
%_ = OpVariable %_ptr_Output_gl_PerVertex_0 Output
|
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
%main = OpFunction %void None %3
|
|
%5 = OpLabel
|
|
%inputStream_0 = OpVariable %_ptr_Function__arr_Data_uint_3 Function
|
|
%param = OpVariable %_ptr_Function__arr_Data_uint_3 Function
|
|
%32 = OpLoad %_arr_Data_uint_3 %inputStream_0
|
|
OpStore %param %32
|
|
%33 = OpFunctionCall %void %Copy_struct_Data_vf41_3__ %param
|
|
%34 = OpLoad %_arr_Data_uint_3 %param
|
|
OpStore %inputStream_0 %34
|
|
%59 = OpAccessChain %_ptr_Function__Data %inputStream_0 %int_0
|
|
%38 = OpAccessChain %_ptr_Function_v4float %59 %int_0
|
|
%39 = OpLoad %v4float %38
|
|
%41 = OpAccessChain %_ptr_Output_v4float %_ %int_0
|
|
OpStore %41 %39
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%Copy_struct_Data_vf41_3__ = OpFunction %void None %13
|
|
%inputStream = OpFunctionParameter %_ptr_Function__arr_Data_uint_3
|
|
%16 = OpLabel
|
|
%26 = OpAccessChain %_ptr_Input_v4float %gl_in %int_0 %int_0
|
|
%27 = OpLoad %v4float %26
|
|
%28 = OpAccessChain %_ptr_Function__Data %inputStream %int_0
|
|
%29 = OpAccessChain %_ptr_Function_v4float %28 %int_0
|
|
OpStore %29 %27
|
|
OpReturn
|
|
OpFunctionEnd
|