| ; |
| ; vertex_main |
| ; |
| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 1 |
| ; Bound: 417 |
| ; Schema: 0 |
| OpCapability Shader |
| %42 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint Vertex %vertex_main "vertex_main" %vertex_main_position_Output %vertex_main___point_size_Output |
| OpName %arg_0_plane0 "arg_0_plane0" |
| OpName %arg_0_plane1 "arg_0_plane1" |
| OpMemberName %arg_0_params_block_tint_explicit_layout 0 "inner" |
| OpName %arg_0_params_block_tint_explicit_layout "arg_0_params_block_tint_explicit_layout" |
| OpName %vertex_main_position_Output "vertex_main_position_Output" |
| OpName %vertex_main___point_size_Output "vertex_main___point_size_Output" |
| OpName %textureLoad2d "textureLoad2d" |
| OpName %texture_plane0 "texture_plane0" |
| OpName %texture_plane1 "texture_plane1" |
| OpMemberName %tint_ExternalTextureParams 0 "numPlanes" |
| OpMemberName %tint_ExternalTextureParams 1 "doYuvToRgbConversionOnly" |
| OpMemberName %tint_ExternalTextureParams 2 "yuvToRgbConversionMatrix" |
| OpMemberName %tint_GammaTransferParams 0 "G" |
| OpMemberName %tint_GammaTransferParams 1 "A" |
| OpMemberName %tint_GammaTransferParams 2 "B" |
| OpMemberName %tint_GammaTransferParams 3 "C" |
| OpMemberName %tint_GammaTransferParams 4 "D" |
| OpMemberName %tint_GammaTransferParams 5 "E" |
| OpMemberName %tint_GammaTransferParams 6 "F" |
| OpMemberName %tint_GammaTransferParams 7 "padding" |
| OpName %tint_GammaTransferParams "tint_GammaTransferParams" |
| OpMemberName %tint_ExternalTextureParams 3 "gammaDecodeParams" |
| OpMemberName %tint_ExternalTextureParams 4 "gammaEncodeParams" |
| OpMemberName %tint_ExternalTextureParams 5 "gamutConversionMatrix" |
| OpMemberName %tint_ExternalTextureParams 6 "sampleTransform" |
| OpMemberName %tint_ExternalTextureParams 7 "loadTransform" |
| OpMemberName %tint_ExternalTextureParams 8 "samplePlane0RectMin" |
| OpMemberName %tint_ExternalTextureParams 9 "samplePlane0RectMax" |
| OpMemberName %tint_ExternalTextureParams 10 "samplePlane1RectMin" |
| OpMemberName %tint_ExternalTextureParams 11 "samplePlane1RectMax" |
| OpMemberName %tint_ExternalTextureParams 12 "apparentSize" |
| OpMemberName %tint_ExternalTextureParams 13 "plane1CoordFactor" |
| OpName %tint_ExternalTextureParams "tint_ExternalTextureParams" |
| OpName %texture_params "texture_params" |
| OpName %coords "coords" |
| OpName %doTextureLoad "doTextureLoad" |
| OpName %res "res" |
| OpName %vertex_main_inner "vertex_main_inner" |
| OpName %tint_TextureLoadExternal "tint_TextureLoadExternal" |
| OpName %plane_0 "plane_0" |
| OpName %plane_1 "plane_1" |
| OpName %params "params" |
| OpName %coords_0 "coords" |
| OpName %tint_GammaCorrection "tint_GammaCorrection" |
| OpName %v "v" |
| OpName %params_0 "params" |
| OpName %start_byte_offset "start_byte_offset" |
| OpName %start_byte_offset_0 "start_byte_offset" |
| OpName %start_byte_offset_1 "start_byte_offset" |
| OpName %start_byte_offset_2 "start_byte_offset" |
| OpName %start_byte_offset_3 "start_byte_offset" |
| OpName %vertex_main "vertex_main" |
| OpDecorate %arg_0_plane0 DescriptorSet 1 |
| OpDecorate %arg_0_plane0 Binding 0 |
| OpDecorate %arg_0_plane1 DescriptorSet 1 |
| OpDecorate %arg_0_plane1 Binding 1 |
| OpDecorate %_arr_v4uint_uint_17 ArrayStride 16 |
| OpMemberDecorate %arg_0_params_block_tint_explicit_layout 0 Offset 0 |
| OpDecorate %arg_0_params_block_tint_explicit_layout Block |
| OpDecorate %6 DescriptorSet 1 |
| OpDecorate %6 Binding 2 |
| OpDecorate %6 NonWritable |
| OpDecorate %vertex_main_position_Output BuiltIn Position |
| OpDecorate %vertex_main___point_size_Output BuiltIn PointSize |
| %float = OpTypeFloat 32 |
| %3 = OpTypeImage %float 2D 0 0 0 1 Unknown |
| %_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 |
| %arg_0_plane0 = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %arg_0_plane1 = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %uint = OpTypeInt 32 0 |
| %v4uint = OpTypeVector %uint 4 |
| %uint_17 = OpConstant %uint 17 |
| %_arr_v4uint_uint_17 = OpTypeArray %v4uint %uint_17 |
| %arg_0_params_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_17 |
| %_ptr_Uniform_arg_0_params_block_tint_explicit_layout = OpTypePointer Uniform %arg_0_params_block_tint_explicit_layout |
| %6 = OpVariable %_ptr_Uniform_arg_0_params_block_tint_explicit_layout Uniform |
| %v4float = OpTypeVector %float 4 |
| %_ptr_Output_v4float = OpTypePointer Output %v4float |
| %vertex_main_position_Output = OpVariable %_ptr_Output_v4float Output |
| %_ptr_Output_float = OpTypePointer Output %float |
| %vertex_main___point_size_Output = OpVariable %_ptr_Output_float Output |
| %mat3v4float = OpTypeMatrix %v4float 3 |
| %tint_GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint |
| %v3float = OpTypeVector %float 3 |
| %mat3v3float = OpTypeMatrix %v3float 3 |
| %v2float = OpTypeVector %float 2 |
| %mat3v2float = OpTypeMatrix %v2float 3 |
| %v2uint = OpTypeVector %uint 2 |
| %tint_ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %tint_GammaTransferParams %tint_GammaTransferParams %mat3v3float %mat3v2float %mat3v2float %v2float %v2float %v2float %v2float %v2uint %v2float |
| %int = OpTypeInt 32 1 |
| %v2int = OpTypeVector %int 2 |
| %33 = OpTypeFunction %v4float %3 %3 %tint_ExternalTextureParams %v2int |
| %uint_1 = OpConstant %uint 1 |
| %37 = OpConstantComposite %v2uint %uint_1 %uint_1 |
| %void = OpTypeVoid |
| %47 = OpTypeFunction %void |
| %uint_0 = OpConstant %uint 0 |
| %55 = OpConstantNull %v2int |
| %_ptr_Function_v4float = OpTypePointer Function %v4float |
| %59 = OpTypeFunction %v4float |
| %62 = OpConstantNull %v4float |
| %67 = OpTypeFunction %v4float %3 %3 %tint_ExternalTextureParams %v2uint |
| %float_1 = OpConstant %float 1 |
| %bool = OpTypeBool |
| %115 = OpTypeFunction %v3float %v3float %tint_GammaTransferParams |
| %v3bool = OpTypeVector %bool 3 |
| %143 = OpTypeFunction %tint_ExternalTextureParams %uint |
| %uint_16 = OpConstant %uint 16 |
| %_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint |
| %uint_15 = OpConstant %uint 15 |
| %uint_2 = OpConstant %uint 2 |
| %uint_4 = OpConstant %uint 4 |
| %uint_64 = OpConstant %uint 64 |
| %uint_96 = OpConstant %uint 96 |
| %uint_128 = OpConstant %uint 128 |
| %uint_176 = OpConstant %uint 176 |
| %uint_200 = OpConstant %uint 200 |
| %uint_224 = OpConstant %uint 224 |
| %v2bool = OpTypeVector %bool 2 |
| %uint_232 = OpConstant %uint 232 |
| %uint_240 = OpConstant %uint 240 |
| %uint_248 = OpConstant %uint 248 |
| %uint_256 = OpConstant %uint 256 |
| %uint_264 = OpConstant %uint 264 |
| %264 = OpTypeFunction %mat3v4float %uint |
| %uint_32 = OpConstant %uint 32 |
| %283 = OpTypeFunction %tint_GammaTransferParams %uint |
| %uint_8 = OpConstant %uint 8 |
| %uint_12 = OpConstant %uint 12 |
| %uint_20 = OpConstant %uint 20 |
| %uint_24 = OpConstant %uint 24 |
| %uint_28 = OpConstant %uint 28 |
| %354 = OpTypeFunction %mat3v3float %uint |
| %v3uint = OpTypeVector %uint 3 |
| %376 = OpTypeFunction %mat3v2float %uint |
| %textureLoad2d = OpFunction %v4float None %33 |
| %texture_plane0 = OpFunctionParameter %3 |
| %texture_plane1 = OpFunctionParameter %3 |
| %texture_params = OpFunctionParameter %tint_ExternalTextureParams |
| %coords = OpFunctionParameter %v2int |
| %34 = OpLabel |
| %35 = OpCompositeExtract %v2uint %texture_params 12 |
| %36 = OpIAdd %v2uint %35 %37 |
| %39 = OpISub %v2uint %36 %37 |
| %40 = OpBitcast %v2uint %coords |
| %41 = OpExtInst %v2uint %42 UMin %40 %39 |
| %43 = OpFunctionCall %v4float %tint_TextureLoadExternal %texture_plane0 %texture_plane1 %texture_params %41 |
| OpReturnValue %43 |
| OpFunctionEnd |
| %doTextureLoad = OpFunction %void None %47 |
| %48 = OpLabel |
| %res = OpVariable %_ptr_Function_v4float Function |
| %49 = OpLoad %3 %arg_0_plane0 None |
| %50 = OpLoad %3 %arg_0_plane1 None |
| %51 = OpFunctionCall %tint_ExternalTextureParams %52 %uint_0 |
| %54 = OpFunctionCall %v4float %textureLoad2d %49 %50 %51 %55 |
| OpStore %res %54 |
| OpReturn |
| OpFunctionEnd |
| %vertex_main_inner = OpFunction %v4float None %59 |
| %60 = OpLabel |
| %61 = OpFunctionCall %void %doTextureLoad |
| OpReturnValue %62 |
| OpFunctionEnd |
| %tint_TextureLoadExternal = OpFunction %v4float None %67 |
| %plane_0 = OpFunctionParameter %3 |
| %plane_1 = OpFunctionParameter %3 |
| %params = OpFunctionParameter %tint_ExternalTextureParams |
| %coords_0 = OpFunctionParameter %v2uint |
| %68 = OpLabel |
| %69 = OpCompositeExtract %uint %params 1 |
| %70 = OpCompositeExtract %mat3v4float %params 2 |
| %71 = OpCompositeExtract %mat3v2float %params 7 |
| %72 = OpCompositeExtract %v2uint %params 12 |
| %73 = OpCompositeExtract %v2float %params 13 |
| %74 = OpExtInst %v2uint %42 UMin %coords_0 %72 |
| %75 = OpConvertUToF %v2float %74 |
| %76 = OpCompositeConstruct %v3float %75 %float_1 |
| %78 = OpMatrixTimesVector %v2float %71 %76 |
| %79 = OpExtInst %v2float %42 RoundEven %78 |
| %80 = OpConvertFToU %v2uint %79 |
| %81 = OpCompositeExtract %uint %params 0 |
| %82 = OpIEqual %bool %81 %uint_1 |
| OpSelectionMerge %84 None |
| OpBranchConditional %82 %85 %86 |
| %85 = OpLabel |
| %99 = OpImageFetch %v4float %plane_0 %80 Lod %uint_0 |
| %88 = OpVectorShuffle %v3float %99 %99 0 1 2 |
| %91 = OpCompositeExtract %float %99 3 |
| OpBranch %84 |
| %86 = OpLabel |
| %100 = OpImageFetch %v4float %plane_0 %80 Lod %uint_0 |
| %101 = OpCompositeExtract %float %100 0 |
| %102 = OpFMul %v2float %79 %73 |
| %103 = OpConvertFToU %v2uint %102 |
| %104 = OpImageFetch %v4float %plane_1 %103 Lod %uint_0 |
| %105 = OpVectorShuffle %v2float %104 %104 0 1 |
| %106 = OpCompositeConstruct %v4float %101 %105 %float_1 |
| %89 = OpVectorTimesMatrix %v3float %106 %70 |
| OpBranch %84 |
| %84 = OpLabel |
| %87 = OpPhi %v3float %88 %85 %89 %86 |
| %90 = OpPhi %float %91 %85 %float_1 %86 |
| %92 = OpIEqual %bool %69 %uint_0 |
| OpSelectionMerge %93 None |
| OpBranchConditional %92 %94 %95 |
| %94 = OpLabel |
| %107 = OpCompositeExtract %tint_GammaTransferParams %params 3 |
| %108 = OpCompositeExtract %tint_GammaTransferParams %params 4 |
| %109 = OpCompositeExtract %mat3v3float %params 5 |
| %110 = OpFunctionCall %v3float %tint_GammaCorrection %87 %107 |
| %112 = OpMatrixTimesVector %v3float %109 %110 |
| %97 = OpFunctionCall %v3float %tint_GammaCorrection %112 %108 |
| OpBranch %93 |
| %95 = OpLabel |
| OpBranch %93 |
| %93 = OpLabel |
| %96 = OpPhi %v3float %97 %94 %87 %95 |
| %98 = OpCompositeConstruct %v4float %96 %90 |
| OpReturnValue %98 |
| OpFunctionEnd |
| %tint_GammaCorrection = OpFunction %v3float None %115 |
| %v = OpFunctionParameter %v3float |
| %params_0 = OpFunctionParameter %tint_GammaTransferParams |
| %116 = OpLabel |
| %117 = OpCompositeExtract %float %params_0 0 |
| %118 = OpCompositeExtract %float %params_0 1 |
| %119 = OpCompositeExtract %float %params_0 2 |
| %120 = OpCompositeExtract %float %params_0 3 |
| %121 = OpCompositeExtract %float %params_0 4 |
| %122 = OpCompositeExtract %float %params_0 5 |
| %123 = OpCompositeExtract %float %params_0 6 |
| %124 = OpCompositeConstruct %v3float %117 %117 %117 |
| %125 = OpCompositeConstruct %v3float %121 %121 %121 |
| %126 = OpExtInst %v3float %42 FAbs %v |
| %127 = OpExtInst %v3float %42 FSign %v |
| %128 = OpFOrdLessThan %v3bool %126 %125 |
| %130 = OpVectorTimesScalar %v3float %126 %120 |
| %131 = OpCompositeConstruct %v3float %123 %123 %123 |
| %132 = OpFAdd %v3float %130 %131 |
| %133 = OpFMul %v3float %127 %132 |
| %134 = OpVectorTimesScalar %v3float %126 %118 |
| %135 = OpCompositeConstruct %v3float %119 %119 %119 |
| %136 = OpFAdd %v3float %134 %135 |
| %137 = OpExtInst %v3float %42 Pow %136 %124 |
| %138 = OpCompositeConstruct %v3float %122 %122 %122 |
| %139 = OpFAdd %v3float %137 %138 |
| %140 = OpFMul %v3float %127 %139 |
| %141 = OpSelect %v3float %128 %133 %140 |
| OpReturnValue %141 |
| OpFunctionEnd |
| %52 = OpFunction %tint_ExternalTextureParams None %143 |
| %start_byte_offset = OpFunctionParameter %uint |
| %144 = OpLabel |
| %145 = OpUDiv %uint %start_byte_offset %uint_16 |
| %147 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %145 |
| %149 = OpBitwiseAnd %uint %start_byte_offset %uint_15 |
| %151 = OpShiftRightLogical %uint %149 %uint_2 |
| %153 = OpLoad %v4uint %147 None |
| %154 = OpVectorExtractDynamic %uint %153 %151 |
| %155 = OpIAdd %uint %uint_4 %start_byte_offset |
| %157 = OpUDiv %uint %155 %uint_16 |
| %158 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %157 |
| %159 = OpBitwiseAnd %uint %155 %uint_15 |
| %160 = OpShiftRightLogical %uint %159 %uint_2 |
| %161 = OpLoad %v4uint %158 None |
| %162 = OpVectorExtractDynamic %uint %161 %160 |
| %163 = OpIAdd %uint %uint_16 %start_byte_offset |
| %164 = OpFunctionCall %mat3v4float %165 %163 |
| %166 = OpIAdd %uint %uint_64 %start_byte_offset |
| %168 = OpFunctionCall %tint_GammaTransferParams %169 %166 |
| %170 = OpIAdd %uint %uint_96 %start_byte_offset |
| %172 = OpFunctionCall %tint_GammaTransferParams %169 %170 |
| %173 = OpIAdd %uint %uint_128 %start_byte_offset |
| %175 = OpFunctionCall %mat3v3float %176 %173 |
| %177 = OpIAdd %uint %uint_176 %start_byte_offset |
| %179 = OpFunctionCall %mat3v2float %180 %177 |
| %181 = OpIAdd %uint %uint_200 %start_byte_offset |
| %183 = OpFunctionCall %mat3v2float %180 %181 |
| %184 = OpIAdd %uint %uint_224 %start_byte_offset |
| %186 = OpUDiv %uint %184 %uint_16 |
| %187 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %186 |
| %188 = OpBitwiseAnd %uint %184 %uint_15 |
| %189 = OpShiftRightLogical %uint %188 %uint_2 |
| %190 = OpLoad %v4uint %187 None |
| %191 = OpVectorShuffle %v2uint %190 %190 2 3 |
| %192 = OpVectorShuffle %v2uint %190 %190 0 1 |
| %193 = OpIEqual %bool %189 %uint_2 |
| %195 = OpCompositeConstruct %v2bool %193 %193 |
| %196 = OpSelect %v2uint %195 %191 %192 |
| %197 = OpBitcast %v2float %196 |
| %198 = OpIAdd %uint %uint_232 %start_byte_offset |
| %200 = OpUDiv %uint %198 %uint_16 |
| %201 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %200 |
| %202 = OpBitwiseAnd %uint %198 %uint_15 |
| %203 = OpShiftRightLogical %uint %202 %uint_2 |
| %204 = OpLoad %v4uint %201 None |
| %205 = OpVectorShuffle %v2uint %204 %204 2 3 |
| %206 = OpVectorShuffle %v2uint %204 %204 0 1 |
| %207 = OpIEqual %bool %203 %uint_2 |
| %208 = OpCompositeConstruct %v2bool %207 %207 |
| %209 = OpSelect %v2uint %208 %205 %206 |
| %210 = OpBitcast %v2float %209 |
| %211 = OpIAdd %uint %uint_240 %start_byte_offset |
| %213 = OpUDiv %uint %211 %uint_16 |
| %214 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %213 |
| %215 = OpBitwiseAnd %uint %211 %uint_15 |
| %216 = OpShiftRightLogical %uint %215 %uint_2 |
| %217 = OpLoad %v4uint %214 None |
| %218 = OpVectorShuffle %v2uint %217 %217 2 3 |
| %219 = OpVectorShuffle %v2uint %217 %217 0 1 |
| %220 = OpIEqual %bool %216 %uint_2 |
| %221 = OpCompositeConstruct %v2bool %220 %220 |
| %222 = OpSelect %v2uint %221 %218 %219 |
| %223 = OpBitcast %v2float %222 |
| %224 = OpIAdd %uint %uint_248 %start_byte_offset |
| %226 = OpUDiv %uint %224 %uint_16 |
| %227 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %226 |
| %228 = OpBitwiseAnd %uint %224 %uint_15 |
| %229 = OpShiftRightLogical %uint %228 %uint_2 |
| %230 = OpLoad %v4uint %227 None |
| %231 = OpVectorShuffle %v2uint %230 %230 2 3 |
| %232 = OpVectorShuffle %v2uint %230 %230 0 1 |
| %233 = OpIEqual %bool %229 %uint_2 |
| %234 = OpCompositeConstruct %v2bool %233 %233 |
| %235 = OpSelect %v2uint %234 %231 %232 |
| %236 = OpBitcast %v2float %235 |
| %237 = OpIAdd %uint %uint_256 %start_byte_offset |
| %239 = OpUDiv %uint %237 %uint_16 |
| %240 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %239 |
| %241 = OpBitwiseAnd %uint %237 %uint_15 |
| %242 = OpShiftRightLogical %uint %241 %uint_2 |
| %243 = OpLoad %v4uint %240 None |
| %244 = OpVectorShuffle %v2uint %243 %243 2 3 |
| %245 = OpVectorShuffle %v2uint %243 %243 0 1 |
| %246 = OpIEqual %bool %242 %uint_2 |
| %247 = OpCompositeConstruct %v2bool %246 %246 |
| %248 = OpSelect %v2uint %247 %244 %245 |
| %249 = OpIAdd %uint %uint_264 %start_byte_offset |
| %251 = OpUDiv %uint %249 %uint_16 |
| %252 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %251 |
| %253 = OpBitwiseAnd %uint %249 %uint_15 |
| %254 = OpShiftRightLogical %uint %253 %uint_2 |
| %255 = OpLoad %v4uint %252 None |
| %256 = OpVectorShuffle %v2uint %255 %255 2 3 |
| %257 = OpVectorShuffle %v2uint %255 %255 0 1 |
| %258 = OpIEqual %bool %254 %uint_2 |
| %259 = OpCompositeConstruct %v2bool %258 %258 |
| %260 = OpSelect %v2uint %259 %256 %257 |
| %261 = OpBitcast %v2float %260 |
| %262 = OpCompositeConstruct %tint_ExternalTextureParams %154 %162 %164 %168 %172 %175 %179 %183 %197 %210 %223 %236 %248 %261 |
| OpReturnValue %262 |
| OpFunctionEnd |
| %165 = OpFunction %mat3v4float None %264 |
| %start_byte_offset_0 = OpFunctionParameter %uint |
| %265 = OpLabel |
| %266 = OpUDiv %uint %start_byte_offset_0 %uint_16 |
| %267 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %266 |
| %268 = OpLoad %v4uint %267 None |
| %269 = OpBitcast %v4float %268 |
| %270 = OpIAdd %uint %uint_16 %start_byte_offset_0 |
| %271 = OpUDiv %uint %270 %uint_16 |
| %272 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %271 |
| %273 = OpLoad %v4uint %272 None |
| %274 = OpBitcast %v4float %273 |
| %275 = OpIAdd %uint %uint_32 %start_byte_offset_0 |
| %277 = OpUDiv %uint %275 %uint_16 |
| %278 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %277 |
| %279 = OpLoad %v4uint %278 None |
| %280 = OpBitcast %v4float %279 |
| %281 = OpCompositeConstruct %mat3v4float %269 %274 %280 |
| OpReturnValue %281 |
| OpFunctionEnd |
| %169 = OpFunction %tint_GammaTransferParams None %283 |
| %start_byte_offset_1 = OpFunctionParameter %uint |
| %284 = OpLabel |
| %285 = OpUDiv %uint %start_byte_offset_1 %uint_16 |
| %286 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %285 |
| %287 = OpBitwiseAnd %uint %start_byte_offset_1 %uint_15 |
| %288 = OpShiftRightLogical %uint %287 %uint_2 |
| %289 = OpLoad %v4uint %286 None |
| %290 = OpVectorExtractDynamic %uint %289 %288 |
| %291 = OpBitcast %float %290 |
| %292 = OpIAdd %uint %uint_4 %start_byte_offset_1 |
| %293 = OpUDiv %uint %292 %uint_16 |
| %294 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %293 |
| %295 = OpBitwiseAnd %uint %292 %uint_15 |
| %296 = OpShiftRightLogical %uint %295 %uint_2 |
| %297 = OpLoad %v4uint %294 None |
| %298 = OpVectorExtractDynamic %uint %297 %296 |
| %299 = OpBitcast %float %298 |
| %300 = OpIAdd %uint %uint_8 %start_byte_offset_1 |
| %302 = OpUDiv %uint %300 %uint_16 |
| %303 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %302 |
| %304 = OpBitwiseAnd %uint %300 %uint_15 |
| %305 = OpShiftRightLogical %uint %304 %uint_2 |
| %306 = OpLoad %v4uint %303 None |
| %307 = OpVectorExtractDynamic %uint %306 %305 |
| %308 = OpBitcast %float %307 |
| %309 = OpIAdd %uint %uint_12 %start_byte_offset_1 |
| %311 = OpUDiv %uint %309 %uint_16 |
| %312 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %311 |
| %313 = OpBitwiseAnd %uint %309 %uint_15 |
| %314 = OpShiftRightLogical %uint %313 %uint_2 |
| %315 = OpLoad %v4uint %312 None |
| %316 = OpVectorExtractDynamic %uint %315 %314 |
| %317 = OpBitcast %float %316 |
| %318 = OpIAdd %uint %uint_16 %start_byte_offset_1 |
| %319 = OpUDiv %uint %318 %uint_16 |
| %320 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %319 |
| %321 = OpBitwiseAnd %uint %318 %uint_15 |
| %322 = OpShiftRightLogical %uint %321 %uint_2 |
| %323 = OpLoad %v4uint %320 None |
| %324 = OpVectorExtractDynamic %uint %323 %322 |
| %325 = OpBitcast %float %324 |
| %326 = OpIAdd %uint %uint_20 %start_byte_offset_1 |
| %328 = OpUDiv %uint %326 %uint_16 |
| %329 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %328 |
| %330 = OpBitwiseAnd %uint %326 %uint_15 |
| %331 = OpShiftRightLogical %uint %330 %uint_2 |
| %332 = OpLoad %v4uint %329 None |
| %333 = OpVectorExtractDynamic %uint %332 %331 |
| %334 = OpBitcast %float %333 |
| %335 = OpIAdd %uint %uint_24 %start_byte_offset_1 |
| %337 = OpUDiv %uint %335 %uint_16 |
| %338 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %337 |
| %339 = OpBitwiseAnd %uint %335 %uint_15 |
| %340 = OpShiftRightLogical %uint %339 %uint_2 |
| %341 = OpLoad %v4uint %338 None |
| %342 = OpVectorExtractDynamic %uint %341 %340 |
| %343 = OpBitcast %float %342 |
| %344 = OpIAdd %uint %uint_28 %start_byte_offset_1 |
| %346 = OpUDiv %uint %344 %uint_16 |
| %347 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %346 |
| %348 = OpBitwiseAnd %uint %344 %uint_15 |
| %349 = OpShiftRightLogical %uint %348 %uint_2 |
| %350 = OpLoad %v4uint %347 None |
| %351 = OpVectorExtractDynamic %uint %350 %349 |
| %352 = OpCompositeConstruct %tint_GammaTransferParams %291 %299 %308 %317 %325 %334 %343 %351 |
| OpReturnValue %352 |
| OpFunctionEnd |
| %176 = OpFunction %mat3v3float None %354 |
| %start_byte_offset_2 = OpFunctionParameter %uint |
| %355 = OpLabel |
| %356 = OpUDiv %uint %start_byte_offset_2 %uint_16 |
| %357 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %356 |
| %358 = OpLoad %v4uint %357 None |
| %359 = OpVectorShuffle %v3uint %358 %358 0 1 2 |
| %361 = OpBitcast %v3float %359 |
| %362 = OpIAdd %uint %uint_16 %start_byte_offset_2 |
| %363 = OpUDiv %uint %362 %uint_16 |
| %364 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %363 |
| %365 = OpLoad %v4uint %364 None |
| %366 = OpVectorShuffle %v3uint %365 %365 0 1 2 |
| %367 = OpBitcast %v3float %366 |
| %368 = OpIAdd %uint %uint_32 %start_byte_offset_2 |
| %369 = OpUDiv %uint %368 %uint_16 |
| %370 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %369 |
| %371 = OpLoad %v4uint %370 None |
| %372 = OpVectorShuffle %v3uint %371 %371 0 1 2 |
| %373 = OpBitcast %v3float %372 |
| %374 = OpCompositeConstruct %mat3v3float %361 %367 %373 |
| OpReturnValue %374 |
| OpFunctionEnd |
| %180 = OpFunction %mat3v2float None %376 |
| %start_byte_offset_3 = OpFunctionParameter %uint |
| %377 = OpLabel |
| %378 = OpUDiv %uint %start_byte_offset_3 %uint_16 |
| %379 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %378 |
| %380 = OpBitwiseAnd %uint %start_byte_offset_3 %uint_15 |
| %381 = OpShiftRightLogical %uint %380 %uint_2 |
| %382 = OpLoad %v4uint %379 None |
| %383 = OpVectorShuffle %v2uint %382 %382 2 3 |
| %384 = OpVectorShuffle %v2uint %382 %382 0 1 |
| %385 = OpIEqual %bool %381 %uint_2 |
| %386 = OpCompositeConstruct %v2bool %385 %385 |
| %387 = OpSelect %v2uint %386 %383 %384 |
| %388 = OpBitcast %v2float %387 |
| %389 = OpIAdd %uint %uint_8 %start_byte_offset_3 |
| %390 = OpUDiv %uint %389 %uint_16 |
| %391 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %390 |
| %392 = OpBitwiseAnd %uint %389 %uint_15 |
| %393 = OpShiftRightLogical %uint %392 %uint_2 |
| %394 = OpLoad %v4uint %391 None |
| %395 = OpVectorShuffle %v2uint %394 %394 2 3 |
| %396 = OpVectorShuffle %v2uint %394 %394 0 1 |
| %397 = OpIEqual %bool %393 %uint_2 |
| %398 = OpCompositeConstruct %v2bool %397 %397 |
| %399 = OpSelect %v2uint %398 %395 %396 |
| %400 = OpBitcast %v2float %399 |
| %401 = OpIAdd %uint %uint_16 %start_byte_offset_3 |
| %402 = OpUDiv %uint %401 %uint_16 |
| %403 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %402 |
| %404 = OpBitwiseAnd %uint %401 %uint_15 |
| %405 = OpShiftRightLogical %uint %404 %uint_2 |
| %406 = OpLoad %v4uint %403 None |
| %407 = OpVectorShuffle %v2uint %406 %406 2 3 |
| %408 = OpVectorShuffle %v2uint %406 %406 0 1 |
| %409 = OpIEqual %bool %405 %uint_2 |
| %410 = OpCompositeConstruct %v2bool %409 %409 |
| %411 = OpSelect %v2uint %410 %407 %408 |
| %412 = OpBitcast %v2float %411 |
| %413 = OpCompositeConstruct %mat3v2float %388 %400 %412 |
| OpReturnValue %413 |
| OpFunctionEnd |
| %vertex_main = OpFunction %void None %47 |
| %415 = OpLabel |
| %416 = OpFunctionCall %v4float %vertex_main_inner |
| OpStore %vertex_main_position_Output %416 None |
| OpStore %vertex_main___point_size_Output %float_1 None |
| OpReturn |
| OpFunctionEnd |
| ; |
| ; fragment_main |
| ; |
| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 1 |
| ; Bound: 408 |
| ; Schema: 0 |
| OpCapability Shader |
| %38 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint Fragment %fragment_main "fragment_main" |
| OpExecutionMode %fragment_main OriginUpperLeft |
| OpName %arg_0_plane0 "arg_0_plane0" |
| OpName %arg_0_plane1 "arg_0_plane1" |
| OpMemberName %arg_0_params_block_tint_explicit_layout 0 "inner" |
| OpName %arg_0_params_block_tint_explicit_layout "arg_0_params_block_tint_explicit_layout" |
| OpName %textureLoad2d "textureLoad2d" |
| OpName %texture_plane0 "texture_plane0" |
| OpName %texture_plane1 "texture_plane1" |
| OpMemberName %tint_ExternalTextureParams 0 "numPlanes" |
| OpMemberName %tint_ExternalTextureParams 1 "doYuvToRgbConversionOnly" |
| OpMemberName %tint_ExternalTextureParams 2 "yuvToRgbConversionMatrix" |
| OpMemberName %tint_GammaTransferParams 0 "G" |
| OpMemberName %tint_GammaTransferParams 1 "A" |
| OpMemberName %tint_GammaTransferParams 2 "B" |
| OpMemberName %tint_GammaTransferParams 3 "C" |
| OpMemberName %tint_GammaTransferParams 4 "D" |
| OpMemberName %tint_GammaTransferParams 5 "E" |
| OpMemberName %tint_GammaTransferParams 6 "F" |
| OpMemberName %tint_GammaTransferParams 7 "padding" |
| OpName %tint_GammaTransferParams "tint_GammaTransferParams" |
| OpMemberName %tint_ExternalTextureParams 3 "gammaDecodeParams" |
| OpMemberName %tint_ExternalTextureParams 4 "gammaEncodeParams" |
| OpMemberName %tint_ExternalTextureParams 5 "gamutConversionMatrix" |
| OpMemberName %tint_ExternalTextureParams 6 "sampleTransform" |
| OpMemberName %tint_ExternalTextureParams 7 "loadTransform" |
| OpMemberName %tint_ExternalTextureParams 8 "samplePlane0RectMin" |
| OpMemberName %tint_ExternalTextureParams 9 "samplePlane0RectMax" |
| OpMemberName %tint_ExternalTextureParams 10 "samplePlane1RectMin" |
| OpMemberName %tint_ExternalTextureParams 11 "samplePlane1RectMax" |
| OpMemberName %tint_ExternalTextureParams 12 "apparentSize" |
| OpMemberName %tint_ExternalTextureParams 13 "plane1CoordFactor" |
| OpName %tint_ExternalTextureParams "tint_ExternalTextureParams" |
| OpName %texture_params "texture_params" |
| OpName %coords "coords" |
| OpName %doTextureLoad "doTextureLoad" |
| OpName %res "res" |
| OpName %fragment_main "fragment_main" |
| OpName %tint_TextureLoadExternal "tint_TextureLoadExternal" |
| OpName %plane_0 "plane_0" |
| OpName %plane_1 "plane_1" |
| OpName %params "params" |
| OpName %coords_0 "coords" |
| OpName %tint_GammaCorrection "tint_GammaCorrection" |
| OpName %v "v" |
| OpName %params_0 "params" |
| OpName %start_byte_offset "start_byte_offset" |
| OpName %start_byte_offset_0 "start_byte_offset" |
| OpName %start_byte_offset_1 "start_byte_offset" |
| OpName %start_byte_offset_2 "start_byte_offset" |
| OpName %start_byte_offset_3 "start_byte_offset" |
| OpDecorate %arg_0_plane0 DescriptorSet 1 |
| OpDecorate %arg_0_plane0 Binding 0 |
| OpDecorate %arg_0_plane1 DescriptorSet 1 |
| OpDecorate %arg_0_plane1 Binding 1 |
| OpDecorate %_arr_v4uint_uint_17 ArrayStride 16 |
| OpMemberDecorate %arg_0_params_block_tint_explicit_layout 0 Offset 0 |
| OpDecorate %arg_0_params_block_tint_explicit_layout Block |
| OpDecorate %6 DescriptorSet 1 |
| OpDecorate %6 Binding 2 |
| OpDecorate %6 NonWritable |
| %float = OpTypeFloat 32 |
| %3 = OpTypeImage %float 2D 0 0 0 1 Unknown |
| %_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 |
| %arg_0_plane0 = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %arg_0_plane1 = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %uint = OpTypeInt 32 0 |
| %v4uint = OpTypeVector %uint 4 |
| %uint_17 = OpConstant %uint 17 |
| %_arr_v4uint_uint_17 = OpTypeArray %v4uint %uint_17 |
| %arg_0_params_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_17 |
| %_ptr_Uniform_arg_0_params_block_tint_explicit_layout = OpTypePointer Uniform %arg_0_params_block_tint_explicit_layout |
| %6 = OpVariable %_ptr_Uniform_arg_0_params_block_tint_explicit_layout Uniform |
| %v4float = OpTypeVector %float 4 |
| %mat3v4float = OpTypeMatrix %v4float 3 |
| %tint_GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint |
| %v3float = OpTypeVector %float 3 |
| %mat3v3float = OpTypeMatrix %v3float 3 |
| %v2float = OpTypeVector %float 2 |
| %mat3v2float = OpTypeMatrix %v2float 3 |
| %v2uint = OpTypeVector %uint 2 |
| %tint_ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %tint_GammaTransferParams %tint_GammaTransferParams %mat3v3float %mat3v2float %mat3v2float %v2float %v2float %v2float %v2float %v2uint %v2float |
| %int = OpTypeInt 32 1 |
| %v2int = OpTypeVector %int 2 |
| %29 = OpTypeFunction %v4float %3 %3 %tint_ExternalTextureParams %v2int |
| %uint_1 = OpConstant %uint 1 |
| %33 = OpConstantComposite %v2uint %uint_1 %uint_1 |
| %void = OpTypeVoid |
| %43 = OpTypeFunction %void |
| %uint_0 = OpConstant %uint 0 |
| %51 = OpConstantNull %v2int |
| %_ptr_Function_v4float = OpTypePointer Function %v4float |
| %61 = OpTypeFunction %v4float %3 %3 %tint_ExternalTextureParams %v2uint |
| %float_1 = OpConstant %float 1 |
| %bool = OpTypeBool |
| %109 = OpTypeFunction %v3float %v3float %tint_GammaTransferParams |
| %v3bool = OpTypeVector %bool 3 |
| %137 = OpTypeFunction %tint_ExternalTextureParams %uint |
| %uint_16 = OpConstant %uint 16 |
| %_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint |
| %uint_15 = OpConstant %uint 15 |
| %uint_2 = OpConstant %uint 2 |
| %uint_4 = OpConstant %uint 4 |
| %uint_64 = OpConstant %uint 64 |
| %uint_96 = OpConstant %uint 96 |
| %uint_128 = OpConstant %uint 128 |
| %uint_176 = OpConstant %uint 176 |
| %uint_200 = OpConstant %uint 200 |
| %uint_224 = OpConstant %uint 224 |
| %v2bool = OpTypeVector %bool 2 |
| %uint_232 = OpConstant %uint 232 |
| %uint_240 = OpConstant %uint 240 |
| %uint_248 = OpConstant %uint 248 |
| %uint_256 = OpConstant %uint 256 |
| %uint_264 = OpConstant %uint 264 |
| %258 = OpTypeFunction %mat3v4float %uint |
| %uint_32 = OpConstant %uint 32 |
| %277 = OpTypeFunction %tint_GammaTransferParams %uint |
| %uint_8 = OpConstant %uint 8 |
| %uint_12 = OpConstant %uint 12 |
| %uint_20 = OpConstant %uint 20 |
| %uint_24 = OpConstant %uint 24 |
| %uint_28 = OpConstant %uint 28 |
| %348 = OpTypeFunction %mat3v3float %uint |
| %v3uint = OpTypeVector %uint 3 |
| %370 = OpTypeFunction %mat3v2float %uint |
| %textureLoad2d = OpFunction %v4float None %29 |
| %texture_plane0 = OpFunctionParameter %3 |
| %texture_plane1 = OpFunctionParameter %3 |
| %texture_params = OpFunctionParameter %tint_ExternalTextureParams |
| %coords = OpFunctionParameter %v2int |
| %30 = OpLabel |
| %31 = OpCompositeExtract %v2uint %texture_params 12 |
| %32 = OpIAdd %v2uint %31 %33 |
| %35 = OpISub %v2uint %32 %33 |
| %36 = OpBitcast %v2uint %coords |
| %37 = OpExtInst %v2uint %38 UMin %36 %35 |
| %39 = OpFunctionCall %v4float %tint_TextureLoadExternal %texture_plane0 %texture_plane1 %texture_params %37 |
| OpReturnValue %39 |
| OpFunctionEnd |
| %doTextureLoad = OpFunction %void None %43 |
| %44 = OpLabel |
| %res = OpVariable %_ptr_Function_v4float Function |
| %45 = OpLoad %3 %arg_0_plane0 None |
| %46 = OpLoad %3 %arg_0_plane1 None |
| %47 = OpFunctionCall %tint_ExternalTextureParams %48 %uint_0 |
| %50 = OpFunctionCall %v4float %textureLoad2d %45 %46 %47 %51 |
| OpStore %res %50 |
| OpReturn |
| OpFunctionEnd |
| %fragment_main = OpFunction %void None %43 |
| %55 = OpLabel |
| %56 = OpFunctionCall %void %doTextureLoad |
| OpReturn |
| OpFunctionEnd |
| %tint_TextureLoadExternal = OpFunction %v4float None %61 |
| %plane_0 = OpFunctionParameter %3 |
| %plane_1 = OpFunctionParameter %3 |
| %params = OpFunctionParameter %tint_ExternalTextureParams |
| %coords_0 = OpFunctionParameter %v2uint |
| %62 = OpLabel |
| %63 = OpCompositeExtract %uint %params 1 |
| %64 = OpCompositeExtract %mat3v4float %params 2 |
| %65 = OpCompositeExtract %mat3v2float %params 7 |
| %66 = OpCompositeExtract %v2uint %params 12 |
| %67 = OpCompositeExtract %v2float %params 13 |
| %68 = OpExtInst %v2uint %38 UMin %coords_0 %66 |
| %69 = OpConvertUToF %v2float %68 |
| %70 = OpCompositeConstruct %v3float %69 %float_1 |
| %72 = OpMatrixTimesVector %v2float %65 %70 |
| %73 = OpExtInst %v2float %38 RoundEven %72 |
| %74 = OpConvertFToU %v2uint %73 |
| %75 = OpCompositeExtract %uint %params 0 |
| %76 = OpIEqual %bool %75 %uint_1 |
| OpSelectionMerge %78 None |
| OpBranchConditional %76 %79 %80 |
| %79 = OpLabel |
| %93 = OpImageFetch %v4float %plane_0 %74 Lod %uint_0 |
| %82 = OpVectorShuffle %v3float %93 %93 0 1 2 |
| %85 = OpCompositeExtract %float %93 3 |
| OpBranch %78 |
| %80 = OpLabel |
| %94 = OpImageFetch %v4float %plane_0 %74 Lod %uint_0 |
| %95 = OpCompositeExtract %float %94 0 |
| %96 = OpFMul %v2float %73 %67 |
| %97 = OpConvertFToU %v2uint %96 |
| %98 = OpImageFetch %v4float %plane_1 %97 Lod %uint_0 |
| %99 = OpVectorShuffle %v2float %98 %98 0 1 |
| %100 = OpCompositeConstruct %v4float %95 %99 %float_1 |
| %83 = OpVectorTimesMatrix %v3float %100 %64 |
| OpBranch %78 |
| %78 = OpLabel |
| %81 = OpPhi %v3float %82 %79 %83 %80 |
| %84 = OpPhi %float %85 %79 %float_1 %80 |
| %86 = OpIEqual %bool %63 %uint_0 |
| OpSelectionMerge %87 None |
| OpBranchConditional %86 %88 %89 |
| %88 = OpLabel |
| %101 = OpCompositeExtract %tint_GammaTransferParams %params 3 |
| %102 = OpCompositeExtract %tint_GammaTransferParams %params 4 |
| %103 = OpCompositeExtract %mat3v3float %params 5 |
| %104 = OpFunctionCall %v3float %tint_GammaCorrection %81 %101 |
| %106 = OpMatrixTimesVector %v3float %103 %104 |
| %91 = OpFunctionCall %v3float %tint_GammaCorrection %106 %102 |
| OpBranch %87 |
| %89 = OpLabel |
| OpBranch %87 |
| %87 = OpLabel |
| %90 = OpPhi %v3float %91 %88 %81 %89 |
| %92 = OpCompositeConstruct %v4float %90 %84 |
| OpReturnValue %92 |
| OpFunctionEnd |
| %tint_GammaCorrection = OpFunction %v3float None %109 |
| %v = OpFunctionParameter %v3float |
| %params_0 = OpFunctionParameter %tint_GammaTransferParams |
| %110 = OpLabel |
| %111 = OpCompositeExtract %float %params_0 0 |
| %112 = OpCompositeExtract %float %params_0 1 |
| %113 = OpCompositeExtract %float %params_0 2 |
| %114 = OpCompositeExtract %float %params_0 3 |
| %115 = OpCompositeExtract %float %params_0 4 |
| %116 = OpCompositeExtract %float %params_0 5 |
| %117 = OpCompositeExtract %float %params_0 6 |
| %118 = OpCompositeConstruct %v3float %111 %111 %111 |
| %119 = OpCompositeConstruct %v3float %115 %115 %115 |
| %120 = OpExtInst %v3float %38 FAbs %v |
| %121 = OpExtInst %v3float %38 FSign %v |
| %122 = OpFOrdLessThan %v3bool %120 %119 |
| %124 = OpVectorTimesScalar %v3float %120 %114 |
| %125 = OpCompositeConstruct %v3float %117 %117 %117 |
| %126 = OpFAdd %v3float %124 %125 |
| %127 = OpFMul %v3float %121 %126 |
| %128 = OpVectorTimesScalar %v3float %120 %112 |
| %129 = OpCompositeConstruct %v3float %113 %113 %113 |
| %130 = OpFAdd %v3float %128 %129 |
| %131 = OpExtInst %v3float %38 Pow %130 %118 |
| %132 = OpCompositeConstruct %v3float %116 %116 %116 |
| %133 = OpFAdd %v3float %131 %132 |
| %134 = OpFMul %v3float %121 %133 |
| %135 = OpSelect %v3float %122 %127 %134 |
| OpReturnValue %135 |
| OpFunctionEnd |
| %48 = OpFunction %tint_ExternalTextureParams None %137 |
| %start_byte_offset = OpFunctionParameter %uint |
| %138 = OpLabel |
| %139 = OpUDiv %uint %start_byte_offset %uint_16 |
| %141 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %139 |
| %143 = OpBitwiseAnd %uint %start_byte_offset %uint_15 |
| %145 = OpShiftRightLogical %uint %143 %uint_2 |
| %147 = OpLoad %v4uint %141 None |
| %148 = OpVectorExtractDynamic %uint %147 %145 |
| %149 = OpIAdd %uint %uint_4 %start_byte_offset |
| %151 = OpUDiv %uint %149 %uint_16 |
| %152 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %151 |
| %153 = OpBitwiseAnd %uint %149 %uint_15 |
| %154 = OpShiftRightLogical %uint %153 %uint_2 |
| %155 = OpLoad %v4uint %152 None |
| %156 = OpVectorExtractDynamic %uint %155 %154 |
| %157 = OpIAdd %uint %uint_16 %start_byte_offset |
| %158 = OpFunctionCall %mat3v4float %159 %157 |
| %160 = OpIAdd %uint %uint_64 %start_byte_offset |
| %162 = OpFunctionCall %tint_GammaTransferParams %163 %160 |
| %164 = OpIAdd %uint %uint_96 %start_byte_offset |
| %166 = OpFunctionCall %tint_GammaTransferParams %163 %164 |
| %167 = OpIAdd %uint %uint_128 %start_byte_offset |
| %169 = OpFunctionCall %mat3v3float %170 %167 |
| %171 = OpIAdd %uint %uint_176 %start_byte_offset |
| %173 = OpFunctionCall %mat3v2float %174 %171 |
| %175 = OpIAdd %uint %uint_200 %start_byte_offset |
| %177 = OpFunctionCall %mat3v2float %174 %175 |
| %178 = OpIAdd %uint %uint_224 %start_byte_offset |
| %180 = OpUDiv %uint %178 %uint_16 |
| %181 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %180 |
| %182 = OpBitwiseAnd %uint %178 %uint_15 |
| %183 = OpShiftRightLogical %uint %182 %uint_2 |
| %184 = OpLoad %v4uint %181 None |
| %185 = OpVectorShuffle %v2uint %184 %184 2 3 |
| %186 = OpVectorShuffle %v2uint %184 %184 0 1 |
| %187 = OpIEqual %bool %183 %uint_2 |
| %189 = OpCompositeConstruct %v2bool %187 %187 |
| %190 = OpSelect %v2uint %189 %185 %186 |
| %191 = OpBitcast %v2float %190 |
| %192 = OpIAdd %uint %uint_232 %start_byte_offset |
| %194 = OpUDiv %uint %192 %uint_16 |
| %195 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %194 |
| %196 = OpBitwiseAnd %uint %192 %uint_15 |
| %197 = OpShiftRightLogical %uint %196 %uint_2 |
| %198 = OpLoad %v4uint %195 None |
| %199 = OpVectorShuffle %v2uint %198 %198 2 3 |
| %200 = OpVectorShuffle %v2uint %198 %198 0 1 |
| %201 = OpIEqual %bool %197 %uint_2 |
| %202 = OpCompositeConstruct %v2bool %201 %201 |
| %203 = OpSelect %v2uint %202 %199 %200 |
| %204 = OpBitcast %v2float %203 |
| %205 = OpIAdd %uint %uint_240 %start_byte_offset |
| %207 = OpUDiv %uint %205 %uint_16 |
| %208 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %207 |
| %209 = OpBitwiseAnd %uint %205 %uint_15 |
| %210 = OpShiftRightLogical %uint %209 %uint_2 |
| %211 = OpLoad %v4uint %208 None |
| %212 = OpVectorShuffle %v2uint %211 %211 2 3 |
| %213 = OpVectorShuffle %v2uint %211 %211 0 1 |
| %214 = OpIEqual %bool %210 %uint_2 |
| %215 = OpCompositeConstruct %v2bool %214 %214 |
| %216 = OpSelect %v2uint %215 %212 %213 |
| %217 = OpBitcast %v2float %216 |
| %218 = OpIAdd %uint %uint_248 %start_byte_offset |
| %220 = OpUDiv %uint %218 %uint_16 |
| %221 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %220 |
| %222 = OpBitwiseAnd %uint %218 %uint_15 |
| %223 = OpShiftRightLogical %uint %222 %uint_2 |
| %224 = OpLoad %v4uint %221 None |
| %225 = OpVectorShuffle %v2uint %224 %224 2 3 |
| %226 = OpVectorShuffle %v2uint %224 %224 0 1 |
| %227 = OpIEqual %bool %223 %uint_2 |
| %228 = OpCompositeConstruct %v2bool %227 %227 |
| %229 = OpSelect %v2uint %228 %225 %226 |
| %230 = OpBitcast %v2float %229 |
| %231 = OpIAdd %uint %uint_256 %start_byte_offset |
| %233 = OpUDiv %uint %231 %uint_16 |
| %234 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %233 |
| %235 = OpBitwiseAnd %uint %231 %uint_15 |
| %236 = OpShiftRightLogical %uint %235 %uint_2 |
| %237 = OpLoad %v4uint %234 None |
| %238 = OpVectorShuffle %v2uint %237 %237 2 3 |
| %239 = OpVectorShuffle %v2uint %237 %237 0 1 |
| %240 = OpIEqual %bool %236 %uint_2 |
| %241 = OpCompositeConstruct %v2bool %240 %240 |
| %242 = OpSelect %v2uint %241 %238 %239 |
| %243 = OpIAdd %uint %uint_264 %start_byte_offset |
| %245 = OpUDiv %uint %243 %uint_16 |
| %246 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %245 |
| %247 = OpBitwiseAnd %uint %243 %uint_15 |
| %248 = OpShiftRightLogical %uint %247 %uint_2 |
| %249 = OpLoad %v4uint %246 None |
| %250 = OpVectorShuffle %v2uint %249 %249 2 3 |
| %251 = OpVectorShuffle %v2uint %249 %249 0 1 |
| %252 = OpIEqual %bool %248 %uint_2 |
| %253 = OpCompositeConstruct %v2bool %252 %252 |
| %254 = OpSelect %v2uint %253 %250 %251 |
| %255 = OpBitcast %v2float %254 |
| %256 = OpCompositeConstruct %tint_ExternalTextureParams %148 %156 %158 %162 %166 %169 %173 %177 %191 %204 %217 %230 %242 %255 |
| OpReturnValue %256 |
| OpFunctionEnd |
| %159 = OpFunction %mat3v4float None %258 |
| %start_byte_offset_0 = OpFunctionParameter %uint |
| %259 = OpLabel |
| %260 = OpUDiv %uint %start_byte_offset_0 %uint_16 |
| %261 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %260 |
| %262 = OpLoad %v4uint %261 None |
| %263 = OpBitcast %v4float %262 |
| %264 = OpIAdd %uint %uint_16 %start_byte_offset_0 |
| %265 = OpUDiv %uint %264 %uint_16 |
| %266 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %265 |
| %267 = OpLoad %v4uint %266 None |
| %268 = OpBitcast %v4float %267 |
| %269 = OpIAdd %uint %uint_32 %start_byte_offset_0 |
| %271 = OpUDiv %uint %269 %uint_16 |
| %272 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %271 |
| %273 = OpLoad %v4uint %272 None |
| %274 = OpBitcast %v4float %273 |
| %275 = OpCompositeConstruct %mat3v4float %263 %268 %274 |
| OpReturnValue %275 |
| OpFunctionEnd |
| %163 = OpFunction %tint_GammaTransferParams None %277 |
| %start_byte_offset_1 = OpFunctionParameter %uint |
| %278 = OpLabel |
| %279 = OpUDiv %uint %start_byte_offset_1 %uint_16 |
| %280 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %279 |
| %281 = OpBitwiseAnd %uint %start_byte_offset_1 %uint_15 |
| %282 = OpShiftRightLogical %uint %281 %uint_2 |
| %283 = OpLoad %v4uint %280 None |
| %284 = OpVectorExtractDynamic %uint %283 %282 |
| %285 = OpBitcast %float %284 |
| %286 = OpIAdd %uint %uint_4 %start_byte_offset_1 |
| %287 = OpUDiv %uint %286 %uint_16 |
| %288 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %287 |
| %289 = OpBitwiseAnd %uint %286 %uint_15 |
| %290 = OpShiftRightLogical %uint %289 %uint_2 |
| %291 = OpLoad %v4uint %288 None |
| %292 = OpVectorExtractDynamic %uint %291 %290 |
| %293 = OpBitcast %float %292 |
| %294 = OpIAdd %uint %uint_8 %start_byte_offset_1 |
| %296 = OpUDiv %uint %294 %uint_16 |
| %297 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %296 |
| %298 = OpBitwiseAnd %uint %294 %uint_15 |
| %299 = OpShiftRightLogical %uint %298 %uint_2 |
| %300 = OpLoad %v4uint %297 None |
| %301 = OpVectorExtractDynamic %uint %300 %299 |
| %302 = OpBitcast %float %301 |
| %303 = OpIAdd %uint %uint_12 %start_byte_offset_1 |
| %305 = OpUDiv %uint %303 %uint_16 |
| %306 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %305 |
| %307 = OpBitwiseAnd %uint %303 %uint_15 |
| %308 = OpShiftRightLogical %uint %307 %uint_2 |
| %309 = OpLoad %v4uint %306 None |
| %310 = OpVectorExtractDynamic %uint %309 %308 |
| %311 = OpBitcast %float %310 |
| %312 = OpIAdd %uint %uint_16 %start_byte_offset_1 |
| %313 = OpUDiv %uint %312 %uint_16 |
| %314 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %313 |
| %315 = OpBitwiseAnd %uint %312 %uint_15 |
| %316 = OpShiftRightLogical %uint %315 %uint_2 |
| %317 = OpLoad %v4uint %314 None |
| %318 = OpVectorExtractDynamic %uint %317 %316 |
| %319 = OpBitcast %float %318 |
| %320 = OpIAdd %uint %uint_20 %start_byte_offset_1 |
| %322 = OpUDiv %uint %320 %uint_16 |
| %323 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %322 |
| %324 = OpBitwiseAnd %uint %320 %uint_15 |
| %325 = OpShiftRightLogical %uint %324 %uint_2 |
| %326 = OpLoad %v4uint %323 None |
| %327 = OpVectorExtractDynamic %uint %326 %325 |
| %328 = OpBitcast %float %327 |
| %329 = OpIAdd %uint %uint_24 %start_byte_offset_1 |
| %331 = OpUDiv %uint %329 %uint_16 |
| %332 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %331 |
| %333 = OpBitwiseAnd %uint %329 %uint_15 |
| %334 = OpShiftRightLogical %uint %333 %uint_2 |
| %335 = OpLoad %v4uint %332 None |
| %336 = OpVectorExtractDynamic %uint %335 %334 |
| %337 = OpBitcast %float %336 |
| %338 = OpIAdd %uint %uint_28 %start_byte_offset_1 |
| %340 = OpUDiv %uint %338 %uint_16 |
| %341 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %340 |
| %342 = OpBitwiseAnd %uint %338 %uint_15 |
| %343 = OpShiftRightLogical %uint %342 %uint_2 |
| %344 = OpLoad %v4uint %341 None |
| %345 = OpVectorExtractDynamic %uint %344 %343 |
| %346 = OpCompositeConstruct %tint_GammaTransferParams %285 %293 %302 %311 %319 %328 %337 %345 |
| OpReturnValue %346 |
| OpFunctionEnd |
| %170 = OpFunction %mat3v3float None %348 |
| %start_byte_offset_2 = OpFunctionParameter %uint |
| %349 = OpLabel |
| %350 = OpUDiv %uint %start_byte_offset_2 %uint_16 |
| %351 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %350 |
| %352 = OpLoad %v4uint %351 None |
| %353 = OpVectorShuffle %v3uint %352 %352 0 1 2 |
| %355 = OpBitcast %v3float %353 |
| %356 = OpIAdd %uint %uint_16 %start_byte_offset_2 |
| %357 = OpUDiv %uint %356 %uint_16 |
| %358 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %357 |
| %359 = OpLoad %v4uint %358 None |
| %360 = OpVectorShuffle %v3uint %359 %359 0 1 2 |
| %361 = OpBitcast %v3float %360 |
| %362 = OpIAdd %uint %uint_32 %start_byte_offset_2 |
| %363 = OpUDiv %uint %362 %uint_16 |
| %364 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %363 |
| %365 = OpLoad %v4uint %364 None |
| %366 = OpVectorShuffle %v3uint %365 %365 0 1 2 |
| %367 = OpBitcast %v3float %366 |
| %368 = OpCompositeConstruct %mat3v3float %355 %361 %367 |
| OpReturnValue %368 |
| OpFunctionEnd |
| %174 = OpFunction %mat3v2float None %370 |
| %start_byte_offset_3 = OpFunctionParameter %uint |
| %371 = OpLabel |
| %372 = OpUDiv %uint %start_byte_offset_3 %uint_16 |
| %373 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %372 |
| %374 = OpBitwiseAnd %uint %start_byte_offset_3 %uint_15 |
| %375 = OpShiftRightLogical %uint %374 %uint_2 |
| %376 = OpLoad %v4uint %373 None |
| %377 = OpVectorShuffle %v2uint %376 %376 2 3 |
| %378 = OpVectorShuffle %v2uint %376 %376 0 1 |
| %379 = OpIEqual %bool %375 %uint_2 |
| %380 = OpCompositeConstruct %v2bool %379 %379 |
| %381 = OpSelect %v2uint %380 %377 %378 |
| %382 = OpBitcast %v2float %381 |
| %383 = OpIAdd %uint %uint_8 %start_byte_offset_3 |
| %384 = OpUDiv %uint %383 %uint_16 |
| %385 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %384 |
| %386 = OpBitwiseAnd %uint %383 %uint_15 |
| %387 = OpShiftRightLogical %uint %386 %uint_2 |
| %388 = OpLoad %v4uint %385 None |
| %389 = OpVectorShuffle %v2uint %388 %388 2 3 |
| %390 = OpVectorShuffle %v2uint %388 %388 0 1 |
| %391 = OpIEqual %bool %387 %uint_2 |
| %392 = OpCompositeConstruct %v2bool %391 %391 |
| %393 = OpSelect %v2uint %392 %389 %390 |
| %394 = OpBitcast %v2float %393 |
| %395 = OpIAdd %uint %uint_16 %start_byte_offset_3 |
| %396 = OpUDiv %uint %395 %uint_16 |
| %397 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %396 |
| %398 = OpBitwiseAnd %uint %395 %uint_15 |
| %399 = OpShiftRightLogical %uint %398 %uint_2 |
| %400 = OpLoad %v4uint %397 None |
| %401 = OpVectorShuffle %v2uint %400 %400 2 3 |
| %402 = OpVectorShuffle %v2uint %400 %400 0 1 |
| %403 = OpIEqual %bool %399 %uint_2 |
| %404 = OpCompositeConstruct %v2bool %403 %403 |
| %405 = OpSelect %v2uint %404 %401 %402 |
| %406 = OpBitcast %v2float %405 |
| %407 = OpCompositeConstruct %mat3v2float %382 %394 %406 |
| OpReturnValue %407 |
| OpFunctionEnd |
| ; |
| ; compute_main |
| ; |
| ; SPIR-V |
| ; Version: 1.3 |
| ; Generator: Google Tint Compiler; 1 |
| ; Bound: 408 |
| ; Schema: 0 |
| OpCapability Shader |
| %38 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint GLCompute %compute_main "compute_main" |
| OpExecutionMode %compute_main LocalSize 1 1 1 |
| OpName %arg_0_plane0 "arg_0_plane0" |
| OpName %arg_0_plane1 "arg_0_plane1" |
| OpMemberName %arg_0_params_block_tint_explicit_layout 0 "inner" |
| OpName %arg_0_params_block_tint_explicit_layout "arg_0_params_block_tint_explicit_layout" |
| OpName %textureLoad2d "textureLoad2d" |
| OpName %texture_plane0 "texture_plane0" |
| OpName %texture_plane1 "texture_plane1" |
| OpMemberName %tint_ExternalTextureParams 0 "numPlanes" |
| OpMemberName %tint_ExternalTextureParams 1 "doYuvToRgbConversionOnly" |
| OpMemberName %tint_ExternalTextureParams 2 "yuvToRgbConversionMatrix" |
| OpMemberName %tint_GammaTransferParams 0 "G" |
| OpMemberName %tint_GammaTransferParams 1 "A" |
| OpMemberName %tint_GammaTransferParams 2 "B" |
| OpMemberName %tint_GammaTransferParams 3 "C" |
| OpMemberName %tint_GammaTransferParams 4 "D" |
| OpMemberName %tint_GammaTransferParams 5 "E" |
| OpMemberName %tint_GammaTransferParams 6 "F" |
| OpMemberName %tint_GammaTransferParams 7 "padding" |
| OpName %tint_GammaTransferParams "tint_GammaTransferParams" |
| OpMemberName %tint_ExternalTextureParams 3 "gammaDecodeParams" |
| OpMemberName %tint_ExternalTextureParams 4 "gammaEncodeParams" |
| OpMemberName %tint_ExternalTextureParams 5 "gamutConversionMatrix" |
| OpMemberName %tint_ExternalTextureParams 6 "sampleTransform" |
| OpMemberName %tint_ExternalTextureParams 7 "loadTransform" |
| OpMemberName %tint_ExternalTextureParams 8 "samplePlane0RectMin" |
| OpMemberName %tint_ExternalTextureParams 9 "samplePlane0RectMax" |
| OpMemberName %tint_ExternalTextureParams 10 "samplePlane1RectMin" |
| OpMemberName %tint_ExternalTextureParams 11 "samplePlane1RectMax" |
| OpMemberName %tint_ExternalTextureParams 12 "apparentSize" |
| OpMemberName %tint_ExternalTextureParams 13 "plane1CoordFactor" |
| OpName %tint_ExternalTextureParams "tint_ExternalTextureParams" |
| OpName %texture_params "texture_params" |
| OpName %coords "coords" |
| OpName %doTextureLoad "doTextureLoad" |
| OpName %res "res" |
| OpName %compute_main "compute_main" |
| OpName %tint_TextureLoadExternal "tint_TextureLoadExternal" |
| OpName %plane_0 "plane_0" |
| OpName %plane_1 "plane_1" |
| OpName %params "params" |
| OpName %coords_0 "coords" |
| OpName %tint_GammaCorrection "tint_GammaCorrection" |
| OpName %v "v" |
| OpName %params_0 "params" |
| OpName %start_byte_offset "start_byte_offset" |
| OpName %start_byte_offset_0 "start_byte_offset" |
| OpName %start_byte_offset_1 "start_byte_offset" |
| OpName %start_byte_offset_2 "start_byte_offset" |
| OpName %start_byte_offset_3 "start_byte_offset" |
| OpDecorate %arg_0_plane0 DescriptorSet 1 |
| OpDecorate %arg_0_plane0 Binding 0 |
| OpDecorate %arg_0_plane1 DescriptorSet 1 |
| OpDecorate %arg_0_plane1 Binding 1 |
| OpDecorate %_arr_v4uint_uint_17 ArrayStride 16 |
| OpMemberDecorate %arg_0_params_block_tint_explicit_layout 0 Offset 0 |
| OpDecorate %arg_0_params_block_tint_explicit_layout Block |
| OpDecorate %6 DescriptorSet 1 |
| OpDecorate %6 Binding 2 |
| OpDecorate %6 NonWritable |
| %float = OpTypeFloat 32 |
| %3 = OpTypeImage %float 2D 0 0 0 1 Unknown |
| %_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3 |
| %arg_0_plane0 = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %arg_0_plane1 = OpVariable %_ptr_UniformConstant_3 UniformConstant |
| %uint = OpTypeInt 32 0 |
| %v4uint = OpTypeVector %uint 4 |
| %uint_17 = OpConstant %uint 17 |
| %_arr_v4uint_uint_17 = OpTypeArray %v4uint %uint_17 |
| %arg_0_params_block_tint_explicit_layout = OpTypeStruct %_arr_v4uint_uint_17 |
| %_ptr_Uniform_arg_0_params_block_tint_explicit_layout = OpTypePointer Uniform %arg_0_params_block_tint_explicit_layout |
| %6 = OpVariable %_ptr_Uniform_arg_0_params_block_tint_explicit_layout Uniform |
| %v4float = OpTypeVector %float 4 |
| %mat3v4float = OpTypeMatrix %v4float 3 |
| %tint_GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint |
| %v3float = OpTypeVector %float 3 |
| %mat3v3float = OpTypeMatrix %v3float 3 |
| %v2float = OpTypeVector %float 2 |
| %mat3v2float = OpTypeMatrix %v2float 3 |
| %v2uint = OpTypeVector %uint 2 |
| %tint_ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %tint_GammaTransferParams %tint_GammaTransferParams %mat3v3float %mat3v2float %mat3v2float %v2float %v2float %v2float %v2float %v2uint %v2float |
| %int = OpTypeInt 32 1 |
| %v2int = OpTypeVector %int 2 |
| %29 = OpTypeFunction %v4float %3 %3 %tint_ExternalTextureParams %v2int |
| %uint_1 = OpConstant %uint 1 |
| %33 = OpConstantComposite %v2uint %uint_1 %uint_1 |
| %void = OpTypeVoid |
| %43 = OpTypeFunction %void |
| %uint_0 = OpConstant %uint 0 |
| %51 = OpConstantNull %v2int |
| %_ptr_Function_v4float = OpTypePointer Function %v4float |
| %61 = OpTypeFunction %v4float %3 %3 %tint_ExternalTextureParams %v2uint |
| %float_1 = OpConstant %float 1 |
| %bool = OpTypeBool |
| %109 = OpTypeFunction %v3float %v3float %tint_GammaTransferParams |
| %v3bool = OpTypeVector %bool 3 |
| %137 = OpTypeFunction %tint_ExternalTextureParams %uint |
| %uint_16 = OpConstant %uint 16 |
| %_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint |
| %uint_15 = OpConstant %uint 15 |
| %uint_2 = OpConstant %uint 2 |
| %uint_4 = OpConstant %uint 4 |
| %uint_64 = OpConstant %uint 64 |
| %uint_96 = OpConstant %uint 96 |
| %uint_128 = OpConstant %uint 128 |
| %uint_176 = OpConstant %uint 176 |
| %uint_200 = OpConstant %uint 200 |
| %uint_224 = OpConstant %uint 224 |
| %v2bool = OpTypeVector %bool 2 |
| %uint_232 = OpConstant %uint 232 |
| %uint_240 = OpConstant %uint 240 |
| %uint_248 = OpConstant %uint 248 |
| %uint_256 = OpConstant %uint 256 |
| %uint_264 = OpConstant %uint 264 |
| %258 = OpTypeFunction %mat3v4float %uint |
| %uint_32 = OpConstant %uint 32 |
| %277 = OpTypeFunction %tint_GammaTransferParams %uint |
| %uint_8 = OpConstant %uint 8 |
| %uint_12 = OpConstant %uint 12 |
| %uint_20 = OpConstant %uint 20 |
| %uint_24 = OpConstant %uint 24 |
| %uint_28 = OpConstant %uint 28 |
| %348 = OpTypeFunction %mat3v3float %uint |
| %v3uint = OpTypeVector %uint 3 |
| %370 = OpTypeFunction %mat3v2float %uint |
| %textureLoad2d = OpFunction %v4float None %29 |
| %texture_plane0 = OpFunctionParameter %3 |
| %texture_plane1 = OpFunctionParameter %3 |
| %texture_params = OpFunctionParameter %tint_ExternalTextureParams |
| %coords = OpFunctionParameter %v2int |
| %30 = OpLabel |
| %31 = OpCompositeExtract %v2uint %texture_params 12 |
| %32 = OpIAdd %v2uint %31 %33 |
| %35 = OpISub %v2uint %32 %33 |
| %36 = OpBitcast %v2uint %coords |
| %37 = OpExtInst %v2uint %38 UMin %36 %35 |
| %39 = OpFunctionCall %v4float %tint_TextureLoadExternal %texture_plane0 %texture_plane1 %texture_params %37 |
| OpReturnValue %39 |
| OpFunctionEnd |
| %doTextureLoad = OpFunction %void None %43 |
| %44 = OpLabel |
| %res = OpVariable %_ptr_Function_v4float Function |
| %45 = OpLoad %3 %arg_0_plane0 None |
| %46 = OpLoad %3 %arg_0_plane1 None |
| %47 = OpFunctionCall %tint_ExternalTextureParams %48 %uint_0 |
| %50 = OpFunctionCall %v4float %textureLoad2d %45 %46 %47 %51 |
| OpStore %res %50 |
| OpReturn |
| OpFunctionEnd |
| %compute_main = OpFunction %void None %43 |
| %55 = OpLabel |
| %56 = OpFunctionCall %void %doTextureLoad |
| OpReturn |
| OpFunctionEnd |
| %tint_TextureLoadExternal = OpFunction %v4float None %61 |
| %plane_0 = OpFunctionParameter %3 |
| %plane_1 = OpFunctionParameter %3 |
| %params = OpFunctionParameter %tint_ExternalTextureParams |
| %coords_0 = OpFunctionParameter %v2uint |
| %62 = OpLabel |
| %63 = OpCompositeExtract %uint %params 1 |
| %64 = OpCompositeExtract %mat3v4float %params 2 |
| %65 = OpCompositeExtract %mat3v2float %params 7 |
| %66 = OpCompositeExtract %v2uint %params 12 |
| %67 = OpCompositeExtract %v2float %params 13 |
| %68 = OpExtInst %v2uint %38 UMin %coords_0 %66 |
| %69 = OpConvertUToF %v2float %68 |
| %70 = OpCompositeConstruct %v3float %69 %float_1 |
| %72 = OpMatrixTimesVector %v2float %65 %70 |
| %73 = OpExtInst %v2float %38 RoundEven %72 |
| %74 = OpConvertFToU %v2uint %73 |
| %75 = OpCompositeExtract %uint %params 0 |
| %76 = OpIEqual %bool %75 %uint_1 |
| OpSelectionMerge %78 None |
| OpBranchConditional %76 %79 %80 |
| %79 = OpLabel |
| %93 = OpImageFetch %v4float %plane_0 %74 Lod %uint_0 |
| %82 = OpVectorShuffle %v3float %93 %93 0 1 2 |
| %85 = OpCompositeExtract %float %93 3 |
| OpBranch %78 |
| %80 = OpLabel |
| %94 = OpImageFetch %v4float %plane_0 %74 Lod %uint_0 |
| %95 = OpCompositeExtract %float %94 0 |
| %96 = OpFMul %v2float %73 %67 |
| %97 = OpConvertFToU %v2uint %96 |
| %98 = OpImageFetch %v4float %plane_1 %97 Lod %uint_0 |
| %99 = OpVectorShuffle %v2float %98 %98 0 1 |
| %100 = OpCompositeConstruct %v4float %95 %99 %float_1 |
| %83 = OpVectorTimesMatrix %v3float %100 %64 |
| OpBranch %78 |
| %78 = OpLabel |
| %81 = OpPhi %v3float %82 %79 %83 %80 |
| %84 = OpPhi %float %85 %79 %float_1 %80 |
| %86 = OpIEqual %bool %63 %uint_0 |
| OpSelectionMerge %87 None |
| OpBranchConditional %86 %88 %89 |
| %88 = OpLabel |
| %101 = OpCompositeExtract %tint_GammaTransferParams %params 3 |
| %102 = OpCompositeExtract %tint_GammaTransferParams %params 4 |
| %103 = OpCompositeExtract %mat3v3float %params 5 |
| %104 = OpFunctionCall %v3float %tint_GammaCorrection %81 %101 |
| %106 = OpMatrixTimesVector %v3float %103 %104 |
| %91 = OpFunctionCall %v3float %tint_GammaCorrection %106 %102 |
| OpBranch %87 |
| %89 = OpLabel |
| OpBranch %87 |
| %87 = OpLabel |
| %90 = OpPhi %v3float %91 %88 %81 %89 |
| %92 = OpCompositeConstruct %v4float %90 %84 |
| OpReturnValue %92 |
| OpFunctionEnd |
| %tint_GammaCorrection = OpFunction %v3float None %109 |
| %v = OpFunctionParameter %v3float |
| %params_0 = OpFunctionParameter %tint_GammaTransferParams |
| %110 = OpLabel |
| %111 = OpCompositeExtract %float %params_0 0 |
| %112 = OpCompositeExtract %float %params_0 1 |
| %113 = OpCompositeExtract %float %params_0 2 |
| %114 = OpCompositeExtract %float %params_0 3 |
| %115 = OpCompositeExtract %float %params_0 4 |
| %116 = OpCompositeExtract %float %params_0 5 |
| %117 = OpCompositeExtract %float %params_0 6 |
| %118 = OpCompositeConstruct %v3float %111 %111 %111 |
| %119 = OpCompositeConstruct %v3float %115 %115 %115 |
| %120 = OpExtInst %v3float %38 FAbs %v |
| %121 = OpExtInst %v3float %38 FSign %v |
| %122 = OpFOrdLessThan %v3bool %120 %119 |
| %124 = OpVectorTimesScalar %v3float %120 %114 |
| %125 = OpCompositeConstruct %v3float %117 %117 %117 |
| %126 = OpFAdd %v3float %124 %125 |
| %127 = OpFMul %v3float %121 %126 |
| %128 = OpVectorTimesScalar %v3float %120 %112 |
| %129 = OpCompositeConstruct %v3float %113 %113 %113 |
| %130 = OpFAdd %v3float %128 %129 |
| %131 = OpExtInst %v3float %38 Pow %130 %118 |
| %132 = OpCompositeConstruct %v3float %116 %116 %116 |
| %133 = OpFAdd %v3float %131 %132 |
| %134 = OpFMul %v3float %121 %133 |
| %135 = OpSelect %v3float %122 %127 %134 |
| OpReturnValue %135 |
| OpFunctionEnd |
| %48 = OpFunction %tint_ExternalTextureParams None %137 |
| %start_byte_offset = OpFunctionParameter %uint |
| %138 = OpLabel |
| %139 = OpUDiv %uint %start_byte_offset %uint_16 |
| %141 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %139 |
| %143 = OpBitwiseAnd %uint %start_byte_offset %uint_15 |
| %145 = OpShiftRightLogical %uint %143 %uint_2 |
| %147 = OpLoad %v4uint %141 None |
| %148 = OpVectorExtractDynamic %uint %147 %145 |
| %149 = OpIAdd %uint %uint_4 %start_byte_offset |
| %151 = OpUDiv %uint %149 %uint_16 |
| %152 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %151 |
| %153 = OpBitwiseAnd %uint %149 %uint_15 |
| %154 = OpShiftRightLogical %uint %153 %uint_2 |
| %155 = OpLoad %v4uint %152 None |
| %156 = OpVectorExtractDynamic %uint %155 %154 |
| %157 = OpIAdd %uint %uint_16 %start_byte_offset |
| %158 = OpFunctionCall %mat3v4float %159 %157 |
| %160 = OpIAdd %uint %uint_64 %start_byte_offset |
| %162 = OpFunctionCall %tint_GammaTransferParams %163 %160 |
| %164 = OpIAdd %uint %uint_96 %start_byte_offset |
| %166 = OpFunctionCall %tint_GammaTransferParams %163 %164 |
| %167 = OpIAdd %uint %uint_128 %start_byte_offset |
| %169 = OpFunctionCall %mat3v3float %170 %167 |
| %171 = OpIAdd %uint %uint_176 %start_byte_offset |
| %173 = OpFunctionCall %mat3v2float %174 %171 |
| %175 = OpIAdd %uint %uint_200 %start_byte_offset |
| %177 = OpFunctionCall %mat3v2float %174 %175 |
| %178 = OpIAdd %uint %uint_224 %start_byte_offset |
| %180 = OpUDiv %uint %178 %uint_16 |
| %181 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %180 |
| %182 = OpBitwiseAnd %uint %178 %uint_15 |
| %183 = OpShiftRightLogical %uint %182 %uint_2 |
| %184 = OpLoad %v4uint %181 None |
| %185 = OpVectorShuffle %v2uint %184 %184 2 3 |
| %186 = OpVectorShuffle %v2uint %184 %184 0 1 |
| %187 = OpIEqual %bool %183 %uint_2 |
| %189 = OpCompositeConstruct %v2bool %187 %187 |
| %190 = OpSelect %v2uint %189 %185 %186 |
| %191 = OpBitcast %v2float %190 |
| %192 = OpIAdd %uint %uint_232 %start_byte_offset |
| %194 = OpUDiv %uint %192 %uint_16 |
| %195 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %194 |
| %196 = OpBitwiseAnd %uint %192 %uint_15 |
| %197 = OpShiftRightLogical %uint %196 %uint_2 |
| %198 = OpLoad %v4uint %195 None |
| %199 = OpVectorShuffle %v2uint %198 %198 2 3 |
| %200 = OpVectorShuffle %v2uint %198 %198 0 1 |
| %201 = OpIEqual %bool %197 %uint_2 |
| %202 = OpCompositeConstruct %v2bool %201 %201 |
| %203 = OpSelect %v2uint %202 %199 %200 |
| %204 = OpBitcast %v2float %203 |
| %205 = OpIAdd %uint %uint_240 %start_byte_offset |
| %207 = OpUDiv %uint %205 %uint_16 |
| %208 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %207 |
| %209 = OpBitwiseAnd %uint %205 %uint_15 |
| %210 = OpShiftRightLogical %uint %209 %uint_2 |
| %211 = OpLoad %v4uint %208 None |
| %212 = OpVectorShuffle %v2uint %211 %211 2 3 |
| %213 = OpVectorShuffle %v2uint %211 %211 0 1 |
| %214 = OpIEqual %bool %210 %uint_2 |
| %215 = OpCompositeConstruct %v2bool %214 %214 |
| %216 = OpSelect %v2uint %215 %212 %213 |
| %217 = OpBitcast %v2float %216 |
| %218 = OpIAdd %uint %uint_248 %start_byte_offset |
| %220 = OpUDiv %uint %218 %uint_16 |
| %221 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %220 |
| %222 = OpBitwiseAnd %uint %218 %uint_15 |
| %223 = OpShiftRightLogical %uint %222 %uint_2 |
| %224 = OpLoad %v4uint %221 None |
| %225 = OpVectorShuffle %v2uint %224 %224 2 3 |
| %226 = OpVectorShuffle %v2uint %224 %224 0 1 |
| %227 = OpIEqual %bool %223 %uint_2 |
| %228 = OpCompositeConstruct %v2bool %227 %227 |
| %229 = OpSelect %v2uint %228 %225 %226 |
| %230 = OpBitcast %v2float %229 |
| %231 = OpIAdd %uint %uint_256 %start_byte_offset |
| %233 = OpUDiv %uint %231 %uint_16 |
| %234 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %233 |
| %235 = OpBitwiseAnd %uint %231 %uint_15 |
| %236 = OpShiftRightLogical %uint %235 %uint_2 |
| %237 = OpLoad %v4uint %234 None |
| %238 = OpVectorShuffle %v2uint %237 %237 2 3 |
| %239 = OpVectorShuffle %v2uint %237 %237 0 1 |
| %240 = OpIEqual %bool %236 %uint_2 |
| %241 = OpCompositeConstruct %v2bool %240 %240 |
| %242 = OpSelect %v2uint %241 %238 %239 |
| %243 = OpIAdd %uint %uint_264 %start_byte_offset |
| %245 = OpUDiv %uint %243 %uint_16 |
| %246 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %245 |
| %247 = OpBitwiseAnd %uint %243 %uint_15 |
| %248 = OpShiftRightLogical %uint %247 %uint_2 |
| %249 = OpLoad %v4uint %246 None |
| %250 = OpVectorShuffle %v2uint %249 %249 2 3 |
| %251 = OpVectorShuffle %v2uint %249 %249 0 1 |
| %252 = OpIEqual %bool %248 %uint_2 |
| %253 = OpCompositeConstruct %v2bool %252 %252 |
| %254 = OpSelect %v2uint %253 %250 %251 |
| %255 = OpBitcast %v2float %254 |
| %256 = OpCompositeConstruct %tint_ExternalTextureParams %148 %156 %158 %162 %166 %169 %173 %177 %191 %204 %217 %230 %242 %255 |
| OpReturnValue %256 |
| OpFunctionEnd |
| %159 = OpFunction %mat3v4float None %258 |
| %start_byte_offset_0 = OpFunctionParameter %uint |
| %259 = OpLabel |
| %260 = OpUDiv %uint %start_byte_offset_0 %uint_16 |
| %261 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %260 |
| %262 = OpLoad %v4uint %261 None |
| %263 = OpBitcast %v4float %262 |
| %264 = OpIAdd %uint %uint_16 %start_byte_offset_0 |
| %265 = OpUDiv %uint %264 %uint_16 |
| %266 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %265 |
| %267 = OpLoad %v4uint %266 None |
| %268 = OpBitcast %v4float %267 |
| %269 = OpIAdd %uint %uint_32 %start_byte_offset_0 |
| %271 = OpUDiv %uint %269 %uint_16 |
| %272 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %271 |
| %273 = OpLoad %v4uint %272 None |
| %274 = OpBitcast %v4float %273 |
| %275 = OpCompositeConstruct %mat3v4float %263 %268 %274 |
| OpReturnValue %275 |
| OpFunctionEnd |
| %163 = OpFunction %tint_GammaTransferParams None %277 |
| %start_byte_offset_1 = OpFunctionParameter %uint |
| %278 = OpLabel |
| %279 = OpUDiv %uint %start_byte_offset_1 %uint_16 |
| %280 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %279 |
| %281 = OpBitwiseAnd %uint %start_byte_offset_1 %uint_15 |
| %282 = OpShiftRightLogical %uint %281 %uint_2 |
| %283 = OpLoad %v4uint %280 None |
| %284 = OpVectorExtractDynamic %uint %283 %282 |
| %285 = OpBitcast %float %284 |
| %286 = OpIAdd %uint %uint_4 %start_byte_offset_1 |
| %287 = OpUDiv %uint %286 %uint_16 |
| %288 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %287 |
| %289 = OpBitwiseAnd %uint %286 %uint_15 |
| %290 = OpShiftRightLogical %uint %289 %uint_2 |
| %291 = OpLoad %v4uint %288 None |
| %292 = OpVectorExtractDynamic %uint %291 %290 |
| %293 = OpBitcast %float %292 |
| %294 = OpIAdd %uint %uint_8 %start_byte_offset_1 |
| %296 = OpUDiv %uint %294 %uint_16 |
| %297 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %296 |
| %298 = OpBitwiseAnd %uint %294 %uint_15 |
| %299 = OpShiftRightLogical %uint %298 %uint_2 |
| %300 = OpLoad %v4uint %297 None |
| %301 = OpVectorExtractDynamic %uint %300 %299 |
| %302 = OpBitcast %float %301 |
| %303 = OpIAdd %uint %uint_12 %start_byte_offset_1 |
| %305 = OpUDiv %uint %303 %uint_16 |
| %306 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %305 |
| %307 = OpBitwiseAnd %uint %303 %uint_15 |
| %308 = OpShiftRightLogical %uint %307 %uint_2 |
| %309 = OpLoad %v4uint %306 None |
| %310 = OpVectorExtractDynamic %uint %309 %308 |
| %311 = OpBitcast %float %310 |
| %312 = OpIAdd %uint %uint_16 %start_byte_offset_1 |
| %313 = OpUDiv %uint %312 %uint_16 |
| %314 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %313 |
| %315 = OpBitwiseAnd %uint %312 %uint_15 |
| %316 = OpShiftRightLogical %uint %315 %uint_2 |
| %317 = OpLoad %v4uint %314 None |
| %318 = OpVectorExtractDynamic %uint %317 %316 |
| %319 = OpBitcast %float %318 |
| %320 = OpIAdd %uint %uint_20 %start_byte_offset_1 |
| %322 = OpUDiv %uint %320 %uint_16 |
| %323 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %322 |
| %324 = OpBitwiseAnd %uint %320 %uint_15 |
| %325 = OpShiftRightLogical %uint %324 %uint_2 |
| %326 = OpLoad %v4uint %323 None |
| %327 = OpVectorExtractDynamic %uint %326 %325 |
| %328 = OpBitcast %float %327 |
| %329 = OpIAdd %uint %uint_24 %start_byte_offset_1 |
| %331 = OpUDiv %uint %329 %uint_16 |
| %332 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %331 |
| %333 = OpBitwiseAnd %uint %329 %uint_15 |
| %334 = OpShiftRightLogical %uint %333 %uint_2 |
| %335 = OpLoad %v4uint %332 None |
| %336 = OpVectorExtractDynamic %uint %335 %334 |
| %337 = OpBitcast %float %336 |
| %338 = OpIAdd %uint %uint_28 %start_byte_offset_1 |
| %340 = OpUDiv %uint %338 %uint_16 |
| %341 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %340 |
| %342 = OpBitwiseAnd %uint %338 %uint_15 |
| %343 = OpShiftRightLogical %uint %342 %uint_2 |
| %344 = OpLoad %v4uint %341 None |
| %345 = OpVectorExtractDynamic %uint %344 %343 |
| %346 = OpCompositeConstruct %tint_GammaTransferParams %285 %293 %302 %311 %319 %328 %337 %345 |
| OpReturnValue %346 |
| OpFunctionEnd |
| %170 = OpFunction %mat3v3float None %348 |
| %start_byte_offset_2 = OpFunctionParameter %uint |
| %349 = OpLabel |
| %350 = OpUDiv %uint %start_byte_offset_2 %uint_16 |
| %351 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %350 |
| %352 = OpLoad %v4uint %351 None |
| %353 = OpVectorShuffle %v3uint %352 %352 0 1 2 |
| %355 = OpBitcast %v3float %353 |
| %356 = OpIAdd %uint %uint_16 %start_byte_offset_2 |
| %357 = OpUDiv %uint %356 %uint_16 |
| %358 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %357 |
| %359 = OpLoad %v4uint %358 None |
| %360 = OpVectorShuffle %v3uint %359 %359 0 1 2 |
| %361 = OpBitcast %v3float %360 |
| %362 = OpIAdd %uint %uint_32 %start_byte_offset_2 |
| %363 = OpUDiv %uint %362 %uint_16 |
| %364 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %363 |
| %365 = OpLoad %v4uint %364 None |
| %366 = OpVectorShuffle %v3uint %365 %365 0 1 2 |
| %367 = OpBitcast %v3float %366 |
| %368 = OpCompositeConstruct %mat3v3float %355 %361 %367 |
| OpReturnValue %368 |
| OpFunctionEnd |
| %174 = OpFunction %mat3v2float None %370 |
| %start_byte_offset_3 = OpFunctionParameter %uint |
| %371 = OpLabel |
| %372 = OpUDiv %uint %start_byte_offset_3 %uint_16 |
| %373 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %372 |
| %374 = OpBitwiseAnd %uint %start_byte_offset_3 %uint_15 |
| %375 = OpShiftRightLogical %uint %374 %uint_2 |
| %376 = OpLoad %v4uint %373 None |
| %377 = OpVectorShuffle %v2uint %376 %376 2 3 |
| %378 = OpVectorShuffle %v2uint %376 %376 0 1 |
| %379 = OpIEqual %bool %375 %uint_2 |
| %380 = OpCompositeConstruct %v2bool %379 %379 |
| %381 = OpSelect %v2uint %380 %377 %378 |
| %382 = OpBitcast %v2float %381 |
| %383 = OpIAdd %uint %uint_8 %start_byte_offset_3 |
| %384 = OpUDiv %uint %383 %uint_16 |
| %385 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %384 |
| %386 = OpBitwiseAnd %uint %383 %uint_15 |
| %387 = OpShiftRightLogical %uint %386 %uint_2 |
| %388 = OpLoad %v4uint %385 None |
| %389 = OpVectorShuffle %v2uint %388 %388 2 3 |
| %390 = OpVectorShuffle %v2uint %388 %388 0 1 |
| %391 = OpIEqual %bool %387 %uint_2 |
| %392 = OpCompositeConstruct %v2bool %391 %391 |
| %393 = OpSelect %v2uint %392 %389 %390 |
| %394 = OpBitcast %v2float %393 |
| %395 = OpIAdd %uint %uint_16 %start_byte_offset_3 |
| %396 = OpUDiv %uint %395 %uint_16 |
| %397 = OpAccessChain %_ptr_Uniform_v4uint %6 %uint_0 %396 |
| %398 = OpBitwiseAnd %uint %395 %uint_15 |
| %399 = OpShiftRightLogical %uint %398 %uint_2 |
| %400 = OpLoad %v4uint %397 None |
| %401 = OpVectorShuffle %v2uint %400 %400 2 3 |
| %402 = OpVectorShuffle %v2uint %400 %400 0 1 |
| %403 = OpIEqual %bool %399 %uint_2 |
| %404 = OpCompositeConstruct %v2bool %403 %403 |
| %405 = OpSelect %v2uint %404 %401 %402 |
| %406 = OpBitcast %v2float %405 |
| %407 = OpCompositeConstruct %mat3v2float %382 %394 %406 |
| OpReturnValue %407 |
| OpFunctionEnd |