skia2/tests/sksl/shared/GaussianBlur.asm.frag
John Stiles d8fc95dc02 Add default uniform set value to SkSL Program settings.
This allows uniforms to be specified without an explicit `layout(set=N)`
modifier. They will assume a default set value instead.

This turns out to fix a handful of tests in Metal/SPIR-V which were
written with GLSL in mind, or adapted from real generated GLSL code, and
didn't have layout information specified on their uniforms. It will also
make it easier to write SkSL tests using uniforms that can compile
either as a runtime effect or as plain Metal/SPIR-V code.

Change-Id: Id79ec06f278b913a45c09c2e6211195dc98b42c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/359838
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-01-27 00:52:16 +00:00

806 lines
29 KiB
JavaScript

OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %sk_FragColor %sk_Clockwise %vLocalCoord_Stage0
OpExecutionMode %main OriginUpperLeft
OpName %uniformBuffer "uniformBuffer"
OpMemberName %uniformBuffer 0 "sk_RTAdjust"
OpMemberName %uniformBuffer 1 "uIncrement_Stage1_c0"
OpMemberName %uniformBuffer 2 "uKernel_Stage1_c0"
OpMemberName %uniformBuffer 3 "umatrix_Stage1_c0_c0"
OpMemberName %uniformBuffer 4 "uborder_Stage1_c0_c0_c0"
OpMemberName %uniformBuffer 5 "usubset_Stage1_c0_c0_c0"
OpMemberName %uniformBuffer 6 "unorm_Stage1_c0_c0_c0"
OpName %sk_FragColor "sk_FragColor"
OpName %sk_Clockwise "sk_Clockwise"
OpName %uTextureSampler_0_Stage1 "uTextureSampler_0_Stage1"
OpName %vLocalCoord_Stage0 "vLocalCoord_Stage0"
OpName %MatrixEffect_Stage1_c0_c0 "MatrixEffect_Stage1_c0_c0"
OpName %_1_coords "_1_coords"
OpName %_2_inCoord "_2_inCoord"
OpName %_3_subsetCoord "_3_subsetCoord"
OpName %_4_clampedCoord "_4_clampedCoord"
OpName %_5_textureColor "_5_textureColor"
OpName %_6_snappedX "_6_snappedX"
OpName %main "main"
OpName %output_Stage1 "output_Stage1"
OpName %_8_output "_8_output"
OpName %_9_coord "_9_coord"
OpName %_10_coordSampled "_10_coordSampled"
OpDecorate %_arr_v4float_int_7 ArrayStride 16
OpMemberDecorate %uniformBuffer 0 Offset 0
OpMemberDecorate %uniformBuffer 1 Offset 16
OpMemberDecorate %uniformBuffer 1 RelaxedPrecision
OpMemberDecorate %uniformBuffer 2 Offset 32
OpMemberDecorate %uniformBuffer 2 RelaxedPrecision
OpMemberDecorate %uniformBuffer 3 Offset 144
OpMemberDecorate %uniformBuffer 3 ColMajor
OpMemberDecorate %uniformBuffer 3 MatrixStride 16
OpMemberDecorate %uniformBuffer 4 Offset 192
OpMemberDecorate %uniformBuffer 4 RelaxedPrecision
OpMemberDecorate %uniformBuffer 5 Offset 208
OpMemberDecorate %uniformBuffer 6 Offset 224
OpDecorate %uniformBuffer Block
OpDecorate %4 Binding 0
OpDecorate %4 DescriptorSet 0
OpDecorate %sk_FragColor RelaxedPrecision
OpDecorate %sk_FragColor Location 0
OpDecorate %sk_FragColor Index 0
OpDecorate %sk_Clockwise RelaxedPrecision
OpDecorate %sk_Clockwise BuiltIn FrontFacing
OpDecorate %uTextureSampler_0_Stage1 RelaxedPrecision
OpDecorate %uTextureSampler_0_Stage1 Binding 0
OpDecorate %uTextureSampler_0_Stage1 DescriptorSet 0
OpDecorate %vLocalCoord_Stage0 Location 0
OpDecorate %67 RelaxedPrecision
OpDecorate %100 RelaxedPrecision
OpDecorate %101 RelaxedPrecision
OpDecorate %114 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
OpDecorate %128 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %134 RelaxedPrecision
OpDecorate %137 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %149 RelaxedPrecision
OpDecorate %152 RelaxedPrecision
OpDecorate %158 RelaxedPrecision
OpDecorate %161 RelaxedPrecision
OpDecorate %164 RelaxedPrecision
OpDecorate %167 RelaxedPrecision
OpDecorate %173 RelaxedPrecision
OpDecorate %176 RelaxedPrecision
OpDecorate %179 RelaxedPrecision
OpDecorate %182 RelaxedPrecision
OpDecorate %188 RelaxedPrecision
OpDecorate %191 RelaxedPrecision
OpDecorate %194 RelaxedPrecision
OpDecorate %197 RelaxedPrecision
OpDecorate %203 RelaxedPrecision
OpDecorate %206 RelaxedPrecision
OpDecorate %209 RelaxedPrecision
OpDecorate %212 RelaxedPrecision
OpDecorate %218 RelaxedPrecision
OpDecorate %221 RelaxedPrecision
OpDecorate %224 RelaxedPrecision
OpDecorate %227 RelaxedPrecision
OpDecorate %233 RelaxedPrecision
OpDecorate %236 RelaxedPrecision
OpDecorate %239 RelaxedPrecision
OpDecorate %242 RelaxedPrecision
OpDecorate %248 RelaxedPrecision
OpDecorate %251 RelaxedPrecision
OpDecorate %254 RelaxedPrecision
OpDecorate %257 RelaxedPrecision
OpDecorate %263 RelaxedPrecision
OpDecorate %266 RelaxedPrecision
OpDecorate %269 RelaxedPrecision
OpDecorate %272 RelaxedPrecision
OpDecorate %278 RelaxedPrecision
OpDecorate %281 RelaxedPrecision
OpDecorate %284 RelaxedPrecision
OpDecorate %287 RelaxedPrecision
OpDecorate %293 RelaxedPrecision
OpDecorate %296 RelaxedPrecision
OpDecorate %299 RelaxedPrecision
OpDecorate %302 RelaxedPrecision
OpDecorate %308 RelaxedPrecision
OpDecorate %311 RelaxedPrecision
OpDecorate %314 RelaxedPrecision
OpDecorate %317 RelaxedPrecision
OpDecorate %323 RelaxedPrecision
OpDecorate %326 RelaxedPrecision
OpDecorate %329 RelaxedPrecision
OpDecorate %332 RelaxedPrecision
OpDecorate %338 RelaxedPrecision
OpDecorate %341 RelaxedPrecision
OpDecorate %344 RelaxedPrecision
OpDecorate %347 RelaxedPrecision
OpDecorate %353 RelaxedPrecision
OpDecorate %356 RelaxedPrecision
OpDecorate %359 RelaxedPrecision
OpDecorate %362 RelaxedPrecision
OpDecorate %368 RelaxedPrecision
OpDecorate %371 RelaxedPrecision
OpDecorate %374 RelaxedPrecision
OpDecorate %377 RelaxedPrecision
OpDecorate %383 RelaxedPrecision
OpDecorate %386 RelaxedPrecision
OpDecorate %389 RelaxedPrecision
OpDecorate %392 RelaxedPrecision
OpDecorate %398 RelaxedPrecision
OpDecorate %401 RelaxedPrecision
OpDecorate %404 RelaxedPrecision
OpDecorate %407 RelaxedPrecision
OpDecorate %413 RelaxedPrecision
OpDecorate %416 RelaxedPrecision
OpDecorate %419 RelaxedPrecision
OpDecorate %422 RelaxedPrecision
OpDecorate %428 RelaxedPrecision
OpDecorate %431 RelaxedPrecision
OpDecorate %434 RelaxedPrecision
OpDecorate %437 RelaxedPrecision
OpDecorate %443 RelaxedPrecision
OpDecorate %446 RelaxedPrecision
OpDecorate %449 RelaxedPrecision
OpDecorate %452 RelaxedPrecision
OpDecorate %458 RelaxedPrecision
OpDecorate %461 RelaxedPrecision
OpDecorate %464 RelaxedPrecision
OpDecorate %467 RelaxedPrecision
OpDecorate %473 RelaxedPrecision
OpDecorate %476 RelaxedPrecision
OpDecorate %479 RelaxedPrecision
OpDecorate %482 RelaxedPrecision
OpDecorate %488 RelaxedPrecision
OpDecorate %491 RelaxedPrecision
OpDecorate %494 RelaxedPrecision
OpDecorate %496 RelaxedPrecision
OpDecorate %497 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%v2float = OpTypeVector %float 2
%int = OpTypeInt 32 1
%int_7 = OpConstant %int 7
%_arr_v4float_int_7 = OpTypeArray %v4float %int_7
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%uniformBuffer = OpTypeStruct %v4float %v2float %_arr_v4float_int_7 %mat3v3float %v4float %v4float %v4float
%_ptr_Uniform_uniformBuffer = OpTypePointer Uniform %uniformBuffer
%4 = OpVariable %_ptr_Uniform_uniformBuffer Uniform
%_ptr_Output_v4float = OpTypePointer Output %v4float
%sk_FragColor = OpVariable %_ptr_Output_v4float Output
%bool = OpTypeBool
%_ptr_Input_bool = OpTypePointer Input %bool
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%23 = OpTypeImage %float 2D 0 0 0 1 Unknown
%22 = OpTypeSampledImage %23
%_ptr_UniformConstant_22 = OpTypePointer UniformConstant %22
%uTextureSampler_0_Stage1 = OpVariable %_ptr_UniformConstant_22 UniformConstant
%_ptr_Input_v2float = OpTypePointer Input %v2float
%vLocalCoord_Stage0 = OpVariable %_ptr_Input_v2float Input
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%26 = OpTypeFunction %v4float %_ptr_Function_v4float %_ptr_Function_v2float
%int_3 = OpConstant %int 3
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%float_1 = OpConstant %float 1
%int_6 = OpConstant %int 6
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_ptr_Function_float = OpTypePointer Function %float
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%float_0_00100000005 = OpConstant %float 0.00100000005
%float_0_5 = OpConstant %float 0.5
%true = OpConstantTrue %bool
%int_5 = OpConstant %int 5
%int_4 = OpConstant %int 4
%void = OpTypeVoid
%103 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%108 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%float_12 = OpConstant %float 12
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%118 = OpConstantComposite %v2float %float_0 %float_0
%121 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%int_2 = OpConstant %int 2
%MatrixEffect_Stage1_c0_c0 = OpFunction %v4float None %26
%29 = OpFunctionParameter %_ptr_Function_v4float
%30 = OpFunctionParameter %_ptr_Function_v2float
%31 = OpLabel
%_1_coords = OpVariable %_ptr_Function_v2float Function
%_2_inCoord = OpVariable %_ptr_Function_v2float Function
%_3_subsetCoord = OpVariable %_ptr_Function_v2float Function
%_4_clampedCoord = OpVariable %_ptr_Function_v2float Function
%_5_textureColor = OpVariable %_ptr_Function_v4float Function
%_6_snappedX = OpVariable %_ptr_Function_float Function
%34 = OpAccessChain %_ptr_Uniform_mat3v3float %4 %int_3
%36 = OpLoad %mat3v3float %34
%37 = OpLoad %v2float %30
%38 = OpCompositeExtract %float %37 0
%39 = OpCompositeExtract %float %37 1
%41 = OpCompositeConstruct %v3float %38 %39 %float_1
%42 = OpMatrixTimesVector %v3float %36 %41
%43 = OpVectorShuffle %v2float %42 %42 0 1
OpStore %_1_coords %43
%45 = OpLoad %v2float %_1_coords
OpStore %_2_inCoord %45
%46 = OpLoad %v2float %_2_inCoord
%48 = OpAccessChain %_ptr_Uniform_v4float %4 %int_6
%50 = OpLoad %v4float %48
%51 = OpVectorShuffle %v2float %50 %50 0 1
%52 = OpFMul %v2float %46 %51
OpStore %_2_inCoord %52
%54 = OpLoad %v2float %_2_inCoord
%55 = OpCompositeExtract %float %54 0
%56 = OpAccessChain %_ptr_Function_float %_3_subsetCoord %int_0
OpStore %56 %55
%59 = OpLoad %v2float %_2_inCoord
%60 = OpCompositeExtract %float %59 1
%61 = OpAccessChain %_ptr_Function_float %_3_subsetCoord %int_1
OpStore %61 %60
%64 = OpLoad %v2float %_3_subsetCoord
OpStore %_4_clampedCoord %64
%67 = OpLoad %22 %uTextureSampler_0_Stage1
%68 = OpLoad %v2float %_4_clampedCoord
%69 = OpAccessChain %_ptr_Uniform_v4float %4 %int_6
%70 = OpLoad %v4float %69
%71 = OpVectorShuffle %v2float %70 %70 2 3
%72 = OpFMul %v2float %68 %71
%66 = OpImageSampleImplicitLod %v4float %67 %72
OpStore %_5_textureColor %66
%75 = OpLoad %v2float %_2_inCoord
%76 = OpCompositeExtract %float %75 0
%78 = OpFAdd %float %76 %float_0_00100000005
%74 = OpExtInst %float %1 Floor %78
%80 = OpFAdd %float %74 %float_0_5
OpStore %_6_snappedX %80
%82 = OpLoad %float %_6_snappedX
%84 = OpAccessChain %_ptr_Uniform_v4float %4 %int_5
%85 = OpLoad %v4float %84
%86 = OpCompositeExtract %float %85 0
%87 = OpFOrdLessThan %bool %82 %86
OpSelectionMerge %89 None
OpBranchConditional %87 %89 %88
%88 = OpLabel
%90 = OpLoad %float %_6_snappedX
%91 = OpAccessChain %_ptr_Uniform_v4float %4 %int_5
%92 = OpLoad %v4float %91
%93 = OpCompositeExtract %float %92 2
%94 = OpFOrdGreaterThan %bool %90 %93
OpBranch %89
%89 = OpLabel
%95 = OpPhi %bool %true %31 %94 %88
OpSelectionMerge %97 None
OpBranchConditional %95 %96 %97
%96 = OpLabel
%99 = OpAccessChain %_ptr_Uniform_v4float %4 %int_4
%100 = OpLoad %v4float %99
OpStore %_5_textureColor %100
OpBranch %97
%97 = OpLabel
%101 = OpLoad %v4float %_5_textureColor
OpReturnValue %101
OpFunctionEnd
%main = OpFunction %void None %103
%104 = OpLabel
%output_Stage1 = OpVariable %_ptr_Function_v4float Function
%_8_output = OpVariable %_ptr_Function_v4float Function
%_9_coord = OpVariable %_ptr_Function_v2float Function
%_10_coordSampled = OpVariable %_ptr_Function_v2float Function
%122 = OpVariable %_ptr_Function_v4float Function
%124 = OpVariable %_ptr_Function_v2float Function
%138 = OpVariable %_ptr_Function_v4float Function
%140 = OpVariable %_ptr_Function_v2float Function
%153 = OpVariable %_ptr_Function_v4float Function
%155 = OpVariable %_ptr_Function_v2float Function
%168 = OpVariable %_ptr_Function_v4float Function
%170 = OpVariable %_ptr_Function_v2float Function
%183 = OpVariable %_ptr_Function_v4float Function
%185 = OpVariable %_ptr_Function_v2float Function
%198 = OpVariable %_ptr_Function_v4float Function
%200 = OpVariable %_ptr_Function_v2float Function
%213 = OpVariable %_ptr_Function_v4float Function
%215 = OpVariable %_ptr_Function_v2float Function
%228 = OpVariable %_ptr_Function_v4float Function
%230 = OpVariable %_ptr_Function_v2float Function
%243 = OpVariable %_ptr_Function_v4float Function
%245 = OpVariable %_ptr_Function_v2float Function
%258 = OpVariable %_ptr_Function_v4float Function
%260 = OpVariable %_ptr_Function_v2float Function
%273 = OpVariable %_ptr_Function_v4float Function
%275 = OpVariable %_ptr_Function_v2float Function
%288 = OpVariable %_ptr_Function_v4float Function
%290 = OpVariable %_ptr_Function_v2float Function
%303 = OpVariable %_ptr_Function_v4float Function
%305 = OpVariable %_ptr_Function_v2float Function
%318 = OpVariable %_ptr_Function_v4float Function
%320 = OpVariable %_ptr_Function_v2float Function
%333 = OpVariable %_ptr_Function_v4float Function
%335 = OpVariable %_ptr_Function_v2float Function
%348 = OpVariable %_ptr_Function_v4float Function
%350 = OpVariable %_ptr_Function_v2float Function
%363 = OpVariable %_ptr_Function_v4float Function
%365 = OpVariable %_ptr_Function_v2float Function
%378 = OpVariable %_ptr_Function_v4float Function
%380 = OpVariable %_ptr_Function_v2float Function
%393 = OpVariable %_ptr_Function_v4float Function
%395 = OpVariable %_ptr_Function_v2float Function
%408 = OpVariable %_ptr_Function_v4float Function
%410 = OpVariable %_ptr_Function_v2float Function
%423 = OpVariable %_ptr_Function_v4float Function
%425 = OpVariable %_ptr_Function_v2float Function
%438 = OpVariable %_ptr_Function_v4float Function
%440 = OpVariable %_ptr_Function_v2float Function
%453 = OpVariable %_ptr_Function_v4float Function
%455 = OpVariable %_ptr_Function_v2float Function
%468 = OpVariable %_ptr_Function_v4float Function
%470 = OpVariable %_ptr_Function_v2float Function
%483 = OpVariable %_ptr_Function_v4float Function
%485 = OpVariable %_ptr_Function_v2float Function
OpStore %_8_output %108
%110 = OpLoad %v2float %vLocalCoord_Stage0
%112 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%114 = OpLoad %v2float %112
%115 = OpVectorTimesScalar %v2float %114 %float_12
%116 = OpFSub %v2float %110 %115
OpStore %_9_coord %116
OpStore %_10_coordSampled %118
%119 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %119
%120 = OpLoad %v4float %_8_output
OpStore %122 %121
%123 = OpLoad %v2float %_10_coordSampled
OpStore %124 %123
%125 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %122 %124
%127 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0
%128 = OpLoad %v4float %127
%129 = OpCompositeExtract %float %128 0
%130 = OpVectorTimesScalar %v4float %125 %129
%131 = OpFAdd %v4float %120 %130
OpStore %_8_output %131
%132 = OpLoad %v2float %_9_coord
%133 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%134 = OpLoad %v2float %133
%135 = OpFAdd %v2float %132 %134
OpStore %_9_coord %135
%136 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %136
%137 = OpLoad %v4float %_8_output
OpStore %138 %121
%139 = OpLoad %v2float %_10_coordSampled
OpStore %140 %139
%141 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %138 %140
%142 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0
%143 = OpLoad %v4float %142
%144 = OpCompositeExtract %float %143 1
%145 = OpVectorTimesScalar %v4float %141 %144
%146 = OpFAdd %v4float %137 %145
OpStore %_8_output %146
%147 = OpLoad %v2float %_9_coord
%148 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%149 = OpLoad %v2float %148
%150 = OpFAdd %v2float %147 %149
OpStore %_9_coord %150
%151 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %151
%152 = OpLoad %v4float %_8_output
OpStore %153 %121
%154 = OpLoad %v2float %_10_coordSampled
OpStore %155 %154
%156 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %153 %155
%157 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0
%158 = OpLoad %v4float %157
%159 = OpCompositeExtract %float %158 2
%160 = OpVectorTimesScalar %v4float %156 %159
%161 = OpFAdd %v4float %152 %160
OpStore %_8_output %161
%162 = OpLoad %v2float %_9_coord
%163 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%164 = OpLoad %v2float %163
%165 = OpFAdd %v2float %162 %164
OpStore %_9_coord %165
%166 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %166
%167 = OpLoad %v4float %_8_output
OpStore %168 %121
%169 = OpLoad %v2float %_10_coordSampled
OpStore %170 %169
%171 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %168 %170
%172 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0
%173 = OpLoad %v4float %172
%174 = OpCompositeExtract %float %173 3
%175 = OpVectorTimesScalar %v4float %171 %174
%176 = OpFAdd %v4float %167 %175
OpStore %_8_output %176
%177 = OpLoad %v2float %_9_coord
%178 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%179 = OpLoad %v2float %178
%180 = OpFAdd %v2float %177 %179
OpStore %_9_coord %180
%181 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %181
%182 = OpLoad %v4float %_8_output
OpStore %183 %121
%184 = OpLoad %v2float %_10_coordSampled
OpStore %185 %184
%186 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %183 %185
%187 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1
%188 = OpLoad %v4float %187
%189 = OpCompositeExtract %float %188 0
%190 = OpVectorTimesScalar %v4float %186 %189
%191 = OpFAdd %v4float %182 %190
OpStore %_8_output %191
%192 = OpLoad %v2float %_9_coord
%193 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%194 = OpLoad %v2float %193
%195 = OpFAdd %v2float %192 %194
OpStore %_9_coord %195
%196 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %196
%197 = OpLoad %v4float %_8_output
OpStore %198 %121
%199 = OpLoad %v2float %_10_coordSampled
OpStore %200 %199
%201 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %198 %200
%202 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1
%203 = OpLoad %v4float %202
%204 = OpCompositeExtract %float %203 1
%205 = OpVectorTimesScalar %v4float %201 %204
%206 = OpFAdd %v4float %197 %205
OpStore %_8_output %206
%207 = OpLoad %v2float %_9_coord
%208 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%209 = OpLoad %v2float %208
%210 = OpFAdd %v2float %207 %209
OpStore %_9_coord %210
%211 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %211
%212 = OpLoad %v4float %_8_output
OpStore %213 %121
%214 = OpLoad %v2float %_10_coordSampled
OpStore %215 %214
%216 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %213 %215
%217 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1
%218 = OpLoad %v4float %217
%219 = OpCompositeExtract %float %218 2
%220 = OpVectorTimesScalar %v4float %216 %219
%221 = OpFAdd %v4float %212 %220
OpStore %_8_output %221
%222 = OpLoad %v2float %_9_coord
%223 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%224 = OpLoad %v2float %223
%225 = OpFAdd %v2float %222 %224
OpStore %_9_coord %225
%226 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %226
%227 = OpLoad %v4float %_8_output
OpStore %228 %121
%229 = OpLoad %v2float %_10_coordSampled
OpStore %230 %229
%231 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %228 %230
%232 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1
%233 = OpLoad %v4float %232
%234 = OpCompositeExtract %float %233 3
%235 = OpVectorTimesScalar %v4float %231 %234
%236 = OpFAdd %v4float %227 %235
OpStore %_8_output %236
%237 = OpLoad %v2float %_9_coord
%238 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%239 = OpLoad %v2float %238
%240 = OpFAdd %v2float %237 %239
OpStore %_9_coord %240
%241 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %241
%242 = OpLoad %v4float %_8_output
OpStore %243 %121
%244 = OpLoad %v2float %_10_coordSampled
OpStore %245 %244
%246 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %243 %245
%247 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2
%248 = OpLoad %v4float %247
%249 = OpCompositeExtract %float %248 0
%250 = OpVectorTimesScalar %v4float %246 %249
%251 = OpFAdd %v4float %242 %250
OpStore %_8_output %251
%252 = OpLoad %v2float %_9_coord
%253 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%254 = OpLoad %v2float %253
%255 = OpFAdd %v2float %252 %254
OpStore %_9_coord %255
%256 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %256
%257 = OpLoad %v4float %_8_output
OpStore %258 %121
%259 = OpLoad %v2float %_10_coordSampled
OpStore %260 %259
%261 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %258 %260
%262 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2
%263 = OpLoad %v4float %262
%264 = OpCompositeExtract %float %263 1
%265 = OpVectorTimesScalar %v4float %261 %264
%266 = OpFAdd %v4float %257 %265
OpStore %_8_output %266
%267 = OpLoad %v2float %_9_coord
%268 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%269 = OpLoad %v2float %268
%270 = OpFAdd %v2float %267 %269
OpStore %_9_coord %270
%271 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %271
%272 = OpLoad %v4float %_8_output
OpStore %273 %121
%274 = OpLoad %v2float %_10_coordSampled
OpStore %275 %274
%276 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %273 %275
%277 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2
%278 = OpLoad %v4float %277
%279 = OpCompositeExtract %float %278 2
%280 = OpVectorTimesScalar %v4float %276 %279
%281 = OpFAdd %v4float %272 %280
OpStore %_8_output %281
%282 = OpLoad %v2float %_9_coord
%283 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%284 = OpLoad %v2float %283
%285 = OpFAdd %v2float %282 %284
OpStore %_9_coord %285
%286 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %286
%287 = OpLoad %v4float %_8_output
OpStore %288 %121
%289 = OpLoad %v2float %_10_coordSampled
OpStore %290 %289
%291 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %288 %290
%292 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2
%293 = OpLoad %v4float %292
%294 = OpCompositeExtract %float %293 3
%295 = OpVectorTimesScalar %v4float %291 %294
%296 = OpFAdd %v4float %287 %295
OpStore %_8_output %296
%297 = OpLoad %v2float %_9_coord
%298 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%299 = OpLoad %v2float %298
%300 = OpFAdd %v2float %297 %299
OpStore %_9_coord %300
%301 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %301
%302 = OpLoad %v4float %_8_output
OpStore %303 %121
%304 = OpLoad %v2float %_10_coordSampled
OpStore %305 %304
%306 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %303 %305
%307 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3
%308 = OpLoad %v4float %307
%309 = OpCompositeExtract %float %308 0
%310 = OpVectorTimesScalar %v4float %306 %309
%311 = OpFAdd %v4float %302 %310
OpStore %_8_output %311
%312 = OpLoad %v2float %_9_coord
%313 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%314 = OpLoad %v2float %313
%315 = OpFAdd %v2float %312 %314
OpStore %_9_coord %315
%316 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %316
%317 = OpLoad %v4float %_8_output
OpStore %318 %121
%319 = OpLoad %v2float %_10_coordSampled
OpStore %320 %319
%321 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %318 %320
%322 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3
%323 = OpLoad %v4float %322
%324 = OpCompositeExtract %float %323 1
%325 = OpVectorTimesScalar %v4float %321 %324
%326 = OpFAdd %v4float %317 %325
OpStore %_8_output %326
%327 = OpLoad %v2float %_9_coord
%328 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%329 = OpLoad %v2float %328
%330 = OpFAdd %v2float %327 %329
OpStore %_9_coord %330
%331 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %331
%332 = OpLoad %v4float %_8_output
OpStore %333 %121
%334 = OpLoad %v2float %_10_coordSampled
OpStore %335 %334
%336 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %333 %335
%337 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3
%338 = OpLoad %v4float %337
%339 = OpCompositeExtract %float %338 2
%340 = OpVectorTimesScalar %v4float %336 %339
%341 = OpFAdd %v4float %332 %340
OpStore %_8_output %341
%342 = OpLoad %v2float %_9_coord
%343 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%344 = OpLoad %v2float %343
%345 = OpFAdd %v2float %342 %344
OpStore %_9_coord %345
%346 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %346
%347 = OpLoad %v4float %_8_output
OpStore %348 %121
%349 = OpLoad %v2float %_10_coordSampled
OpStore %350 %349
%351 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %348 %350
%352 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3
%353 = OpLoad %v4float %352
%354 = OpCompositeExtract %float %353 3
%355 = OpVectorTimesScalar %v4float %351 %354
%356 = OpFAdd %v4float %347 %355
OpStore %_8_output %356
%357 = OpLoad %v2float %_9_coord
%358 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%359 = OpLoad %v2float %358
%360 = OpFAdd %v2float %357 %359
OpStore %_9_coord %360
%361 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %361
%362 = OpLoad %v4float %_8_output
OpStore %363 %121
%364 = OpLoad %v2float %_10_coordSampled
OpStore %365 %364
%366 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %363 %365
%367 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4
%368 = OpLoad %v4float %367
%369 = OpCompositeExtract %float %368 0
%370 = OpVectorTimesScalar %v4float %366 %369
%371 = OpFAdd %v4float %362 %370
OpStore %_8_output %371
%372 = OpLoad %v2float %_9_coord
%373 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%374 = OpLoad %v2float %373
%375 = OpFAdd %v2float %372 %374
OpStore %_9_coord %375
%376 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %376
%377 = OpLoad %v4float %_8_output
OpStore %378 %121
%379 = OpLoad %v2float %_10_coordSampled
OpStore %380 %379
%381 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %378 %380
%382 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4
%383 = OpLoad %v4float %382
%384 = OpCompositeExtract %float %383 1
%385 = OpVectorTimesScalar %v4float %381 %384
%386 = OpFAdd %v4float %377 %385
OpStore %_8_output %386
%387 = OpLoad %v2float %_9_coord
%388 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%389 = OpLoad %v2float %388
%390 = OpFAdd %v2float %387 %389
OpStore %_9_coord %390
%391 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %391
%392 = OpLoad %v4float %_8_output
OpStore %393 %121
%394 = OpLoad %v2float %_10_coordSampled
OpStore %395 %394
%396 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %393 %395
%397 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4
%398 = OpLoad %v4float %397
%399 = OpCompositeExtract %float %398 2
%400 = OpVectorTimesScalar %v4float %396 %399
%401 = OpFAdd %v4float %392 %400
OpStore %_8_output %401
%402 = OpLoad %v2float %_9_coord
%403 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%404 = OpLoad %v2float %403
%405 = OpFAdd %v2float %402 %404
OpStore %_9_coord %405
%406 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %406
%407 = OpLoad %v4float %_8_output
OpStore %408 %121
%409 = OpLoad %v2float %_10_coordSampled
OpStore %410 %409
%411 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %408 %410
%412 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4
%413 = OpLoad %v4float %412
%414 = OpCompositeExtract %float %413 3
%415 = OpVectorTimesScalar %v4float %411 %414
%416 = OpFAdd %v4float %407 %415
OpStore %_8_output %416
%417 = OpLoad %v2float %_9_coord
%418 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%419 = OpLoad %v2float %418
%420 = OpFAdd %v2float %417 %419
OpStore %_9_coord %420
%421 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %421
%422 = OpLoad %v4float %_8_output
OpStore %423 %121
%424 = OpLoad %v2float %_10_coordSampled
OpStore %425 %424
%426 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %423 %425
%427 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5
%428 = OpLoad %v4float %427
%429 = OpCompositeExtract %float %428 0
%430 = OpVectorTimesScalar %v4float %426 %429
%431 = OpFAdd %v4float %422 %430
OpStore %_8_output %431
%432 = OpLoad %v2float %_9_coord
%433 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%434 = OpLoad %v2float %433
%435 = OpFAdd %v2float %432 %434
OpStore %_9_coord %435
%436 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %436
%437 = OpLoad %v4float %_8_output
OpStore %438 %121
%439 = OpLoad %v2float %_10_coordSampled
OpStore %440 %439
%441 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %438 %440
%442 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5
%443 = OpLoad %v4float %442
%444 = OpCompositeExtract %float %443 1
%445 = OpVectorTimesScalar %v4float %441 %444
%446 = OpFAdd %v4float %437 %445
OpStore %_8_output %446
%447 = OpLoad %v2float %_9_coord
%448 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%449 = OpLoad %v2float %448
%450 = OpFAdd %v2float %447 %449
OpStore %_9_coord %450
%451 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %451
%452 = OpLoad %v4float %_8_output
OpStore %453 %121
%454 = OpLoad %v2float %_10_coordSampled
OpStore %455 %454
%456 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %453 %455
%457 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5
%458 = OpLoad %v4float %457
%459 = OpCompositeExtract %float %458 2
%460 = OpVectorTimesScalar %v4float %456 %459
%461 = OpFAdd %v4float %452 %460
OpStore %_8_output %461
%462 = OpLoad %v2float %_9_coord
%463 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%464 = OpLoad %v2float %463
%465 = OpFAdd %v2float %462 %464
OpStore %_9_coord %465
%466 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %466
%467 = OpLoad %v4float %_8_output
OpStore %468 %121
%469 = OpLoad %v2float %_10_coordSampled
OpStore %470 %469
%471 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %468 %470
%472 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5
%473 = OpLoad %v4float %472
%474 = OpCompositeExtract %float %473 3
%475 = OpVectorTimesScalar %v4float %471 %474
%476 = OpFAdd %v4float %467 %475
OpStore %_8_output %476
%477 = OpLoad %v2float %_9_coord
%478 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%479 = OpLoad %v2float %478
%480 = OpFAdd %v2float %477 %479
OpStore %_9_coord %480
%481 = OpLoad %v2float %_9_coord
OpStore %_10_coordSampled %481
%482 = OpLoad %v4float %_8_output
OpStore %483 %121
%484 = OpLoad %v2float %_10_coordSampled
OpStore %485 %484
%486 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %483 %485
%487 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_6
%488 = OpLoad %v4float %487
%489 = OpCompositeExtract %float %488 0
%490 = OpVectorTimesScalar %v4float %486 %489
%491 = OpFAdd %v4float %482 %490
OpStore %_8_output %491
%492 = OpLoad %v2float %_9_coord
%493 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1
%494 = OpLoad %v2float %493
%495 = OpFAdd %v2float %492 %494
OpStore %_9_coord %495
%496 = OpLoad %v4float %_8_output
OpStore %output_Stage1 %496
%497 = OpLoad %v4float %output_Stage1
OpStore %sk_FragColor %497
OpReturn
OpFunctionEnd