1e5c31af7Sopenharmony_ci#!amber 2e5c31af7Sopenharmony_ci 3e5c31af7Sopenharmony_ci# Copyright 2020 Google LLC 4e5c31af7Sopenharmony_ci# 5e5c31af7Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 6e5c31af7Sopenharmony_ci# you may not use this file except in compliance with the License. 7e5c31af7Sopenharmony_ci# You may obtain a copy of the License at 8e5c31af7Sopenharmony_ci# 9e5c31af7Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 10e5c31af7Sopenharmony_ci# 11e5c31af7Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 12e5c31af7Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 13e5c31af7Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e5c31af7Sopenharmony_ci# See the License for the specific language governing permissions and 15e5c31af7Sopenharmony_ci# limitations under the License. 16e5c31af7Sopenharmony_ci 17e5c31af7Sopenharmony_ci 18e5c31af7Sopenharmony_ci# A test for a bug found by the GraphicsFuzz project. 19e5c31af7Sopenharmony_ci 20e5c31af7Sopenharmony_ci# Short description: Equivalent shaders, one with an additional access chain 21e5c31af7Sopenharmony_ci 22e5c31af7Sopenharmony_ci# The test passes because both shaders render the same image. 23e5c31af7Sopenharmony_ci 24e5c31af7Sopenharmony_ciSHADER vertex texgen_vert PASSTHROUGH 25e5c31af7Sopenharmony_ci 26e5c31af7Sopenharmony_ciSHADER fragment texgen_frag GLSL 27e5c31af7Sopenharmony_ci#version 430 28e5c31af7Sopenharmony_ciprecision highp float; 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_cilayout(location = 0) out vec4 _GLF_color; 31e5c31af7Sopenharmony_ci 32e5c31af7Sopenharmony_civoid main() 33e5c31af7Sopenharmony_ci{ 34e5c31af7Sopenharmony_ci _GLF_color = vec4( 35e5c31af7Sopenharmony_ci floor(gl_FragCoord.x) * (1.0 / 255.0), 36e5c31af7Sopenharmony_ci (int(gl_FragCoord.x) ^ int(gl_FragCoord.y)) * (1.0 / 255.0), 37e5c31af7Sopenharmony_ci floor(gl_FragCoord.y) * (1.0 / 255.0), 38e5c31af7Sopenharmony_ci 1.0); 39e5c31af7Sopenharmony_ci} 40e5c31af7Sopenharmony_ciEND 41e5c31af7Sopenharmony_ciBUFFER default_texture FORMAT B8G8R8A8_UNORM 42e5c31af7Sopenharmony_ci 43e5c31af7Sopenharmony_ciPIPELINE graphics texgen_pipeline 44e5c31af7Sopenharmony_ci ATTACH texgen_vert 45e5c31af7Sopenharmony_ci ATTACH texgen_frag 46e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 47e5c31af7Sopenharmony_ci BIND BUFFER default_texture AS color LOCATION 0 48e5c31af7Sopenharmony_ciEND 49e5c31af7Sopenharmony_ci 50e5c31af7Sopenharmony_ciCLEAR_COLOR texgen_pipeline 0 0 0 255 51e5c31af7Sopenharmony_ciCLEAR texgen_pipeline 52e5c31af7Sopenharmony_ciRUN texgen_pipeline DRAW_RECT POS 0 0 SIZE 256 256 53e5c31af7Sopenharmony_ci 54e5c31af7Sopenharmony_ciSHADER vertex reference_vertex_shader PASSTHROUGH 55e5c31af7Sopenharmony_ci 56e5c31af7Sopenharmony_ciSHADER fragment reference_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 57e5c31af7Sopenharmony_ci; SPIR-V 58e5c31af7Sopenharmony_ci; Version: 1.0 59e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 60e5c31af7Sopenharmony_ci; Bound: 254 61e5c31af7Sopenharmony_ci; Schema: 0 62e5c31af7Sopenharmony_ci OpCapability Shader 63e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 64e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 65e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %115 %130 66e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 67e5c31af7Sopenharmony_ci OpSource ESSL 320 68e5c31af7Sopenharmony_ci OpName %4 "main" 69e5c31af7Sopenharmony_ci OpName %115 "gl_FragCoord" 70e5c31af7Sopenharmony_ci OpName %130 "_GLF_color" 71e5c31af7Sopenharmony_ci OpName %134 "tex" 72e5c31af7Sopenharmony_ci OpDecorate %115 BuiltIn FragCoord 73e5c31af7Sopenharmony_ci OpDecorate %130 Location 0 74e5c31af7Sopenharmony_ci OpDecorate %134 RelaxedPrecision 75e5c31af7Sopenharmony_ci OpDecorate %134 DescriptorSet 0 76e5c31af7Sopenharmony_ci OpDecorate %134 Binding 0 77e5c31af7Sopenharmony_ci OpDecorate %135 RelaxedPrecision 78e5c31af7Sopenharmony_ci OpDecorate %137 RelaxedPrecision 79e5c31af7Sopenharmony_ci %2 = OpTypeVoid 80e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 81e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 82e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 83e5c31af7Sopenharmony_ci %19 = OpConstant %6 0.318309873 84e5c31af7Sopenharmony_ci %22 = OpConstant %6 0.00100000005 85e5c31af7Sopenharmony_ci %23 = OpTypeBool 86e5c31af7Sopenharmony_ci %27 = OpConstant %6 0 87e5c31af7Sopenharmony_ci %32 = OpTypeInt 32 0 88e5c31af7Sopenharmony_ci %36 = OpConstant %32 0 89e5c31af7Sopenharmony_ci %55 = OpConstant %6 0.970000029 90e5c31af7Sopenharmony_ci %56 = OpConstant %6 0.189999998 91e5c31af7Sopenharmony_ci %73 = OpConstant %6 0.5 92e5c31af7Sopenharmony_ci %81 = OpConstant %6 1 93e5c31af7Sopenharmony_ci %98 = OpConstantComposite %7 %73 %73 94e5c31af7Sopenharmony_ci %113 = OpTypeVector %6 4 95e5c31af7Sopenharmony_ci %114 = OpTypePointer Input %113 96e5c31af7Sopenharmony_ci %115 = OpVariable %114 Input 97e5c31af7Sopenharmony_ci %118 = OpConstant %6 0.00390625 98e5c31af7Sopenharmony_ci %124 = OpConstant %6 256 99e5c31af7Sopenharmony_ci %129 = OpTypePointer Output %113 100e5c31af7Sopenharmony_ci %130 = OpVariable %129 Output 101e5c31af7Sopenharmony_ci %131 = OpTypeImage %6 2D 0 0 0 1 Unknown 102e5c31af7Sopenharmony_ci %132 = OpTypeSampledImage %131 103e5c31af7Sopenharmony_ci %133 = OpTypePointer UniformConstant %132 104e5c31af7Sopenharmony_ci %134 = OpVariable %133 UniformConstant 105e5c31af7Sopenharmony_ci %253 = OpConstantComposite %7 %118 %118 106e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 107e5c31af7Sopenharmony_ci %5 = OpLabel 108e5c31af7Sopenharmony_ci %116 = OpLoad %113 %115 109e5c31af7Sopenharmony_ci %117 = OpVectorShuffle %7 %116 %116 0 1 110e5c31af7Sopenharmony_ci %119 = OpVectorTimesScalar %7 %117 %118 111e5c31af7Sopenharmony_ci %160 = OpFSub %7 %119 %98 112e5c31af7Sopenharmony_ci %162 = OpExtInst %6 %1 Length %160 113e5c31af7Sopenharmony_ci OpSelectionMerge %235 None 114e5c31af7Sopenharmony_ci OpSwitch %36 %176 115e5c31af7Sopenharmony_ci %176 = OpLabel 116e5c31af7Sopenharmony_ci %179 = OpFOrdLessThan %23 %162 %22 117e5c31af7Sopenharmony_ci OpSelectionMerge %181 None 118e5c31af7Sopenharmony_ci OpBranchConditional %179 %180 %181 119e5c31af7Sopenharmony_ci %180 = OpLabel 120e5c31af7Sopenharmony_ci OpBranch %235 121e5c31af7Sopenharmony_ci %181 = OpLabel 122e5c31af7Sopenharmony_ci %183 = OpExtInst %7 %1 FAbs %160 123e5c31af7Sopenharmony_ci %185 = OpCompositeExtract %6 %183 1 124e5c31af7Sopenharmony_ci %187 = OpCompositeExtract %6 %183 0 125e5c31af7Sopenharmony_ci %188 = OpFOrdGreaterThan %23 %185 %187 126e5c31af7Sopenharmony_ci OpSelectionMerge %201 None 127e5c31af7Sopenharmony_ci OpBranchConditional %188 %189 %195 128e5c31af7Sopenharmony_ci %189 = OpLabel 129e5c31af7Sopenharmony_ci %194 = OpFDiv %6 %187 %185 130e5c31af7Sopenharmony_ci OpBranch %201 131e5c31af7Sopenharmony_ci %195 = OpLabel 132e5c31af7Sopenharmony_ci %200 = OpFDiv %6 %185 %187 133e5c31af7Sopenharmony_ci OpBranch %201 134e5c31af7Sopenharmony_ci %201 = OpLabel 135e5c31af7Sopenharmony_ci %247 = OpPhi %6 %194 %189 %200 %195 136e5c31af7Sopenharmony_ci %203 = OpFMul %6 %56 %247 137e5c31af7Sopenharmony_ci %205 = OpFMul %6 %203 %247 138e5c31af7Sopenharmony_ci %206 = OpFSub %6 %55 %205 139e5c31af7Sopenharmony_ci %208 = OpFMul %6 %206 %247 140e5c31af7Sopenharmony_ci %210 = OpFMul %6 %208 %19 141e5c31af7Sopenharmony_ci %215 = OpFOrdLessThan %23 %185 %187 142e5c31af7Sopenharmony_ci OpSelectionMerge %219 None 143e5c31af7Sopenharmony_ci OpBranchConditional %215 %216 %219 144e5c31af7Sopenharmony_ci %216 = OpLabel 145e5c31af7Sopenharmony_ci %218 = OpFSub %6 %73 %210 146e5c31af7Sopenharmony_ci OpBranch %219 147e5c31af7Sopenharmony_ci %219 = OpLabel 148e5c31af7Sopenharmony_ci %248 = OpPhi %6 %210 %201 %218 %216 149e5c31af7Sopenharmony_ci %221 = OpCompositeExtract %6 %160 0 150e5c31af7Sopenharmony_ci %222 = OpFOrdLessThan %23 %221 %27 151e5c31af7Sopenharmony_ci OpSelectionMerge %226 None 152e5c31af7Sopenharmony_ci OpBranchConditional %222 %223 %226 153e5c31af7Sopenharmony_ci %223 = OpLabel 154e5c31af7Sopenharmony_ci %225 = OpFSub %6 %81 %248 155e5c31af7Sopenharmony_ci OpBranch %226 156e5c31af7Sopenharmony_ci %226 = OpLabel 157e5c31af7Sopenharmony_ci %249 = OpPhi %6 %248 %219 %225 %223 158e5c31af7Sopenharmony_ci %228 = OpCompositeExtract %6 %160 1 159e5c31af7Sopenharmony_ci %229 = OpFOrdLessThan %23 %228 %27 160e5c31af7Sopenharmony_ci OpSelectionMerge %233 None 161e5c31af7Sopenharmony_ci OpBranchConditional %229 %230 %233 162e5c31af7Sopenharmony_ci %230 = OpLabel 163e5c31af7Sopenharmony_ci %232 = OpFNegate %6 %249 164e5c31af7Sopenharmony_ci OpBranch %233 165e5c31af7Sopenharmony_ci %233 = OpLabel 166e5c31af7Sopenharmony_ci %250 = OpPhi %6 %249 %226 %232 %230 167e5c31af7Sopenharmony_ci OpBranch %235 168e5c31af7Sopenharmony_ci %235 = OpLabel 169e5c31af7Sopenharmony_ci %251 = OpPhi %6 %27 %180 %250 %233 170e5c31af7Sopenharmony_ci %167 = OpCompositeConstruct %7 %162 %251 171e5c31af7Sopenharmony_ci %125 = OpVectorTimesScalar %7 %167 %124 172e5c31af7Sopenharmony_ci %126 = OpExtInst %7 %1 Floor %125 173e5c31af7Sopenharmony_ci %128 = OpFMul %7 %126 %253 174e5c31af7Sopenharmony_ci %135 = OpLoad %132 %134 175e5c31af7Sopenharmony_ci %137 = OpImageSampleImplicitLod %113 %135 %128 176e5c31af7Sopenharmony_ci %140 = OpCompositeExtract %6 %137 0 177e5c31af7Sopenharmony_ci %141 = OpCompositeExtract %6 %137 1 178e5c31af7Sopenharmony_ci %142 = OpCompositeExtract %6 %137 2 179e5c31af7Sopenharmony_ci %143 = OpCompositeConstruct %113 %140 %141 %142 %81 180e5c31af7Sopenharmony_ci OpStore %130 %143 181e5c31af7Sopenharmony_ci OpReturn 182e5c31af7Sopenharmony_ci OpFunctionEnd 183e5c31af7Sopenharmony_ciEND 184e5c31af7Sopenharmony_ci 185e5c31af7Sopenharmony_ci# uniforms for reference 186e5c31af7Sopenharmony_ci 187e5c31af7Sopenharmony_ci# tex 188e5c31af7Sopenharmony_ciSAMPLER reference_tex 189e5c31af7Sopenharmony_ci 190e5c31af7Sopenharmony_ci 191e5c31af7Sopenharmony_ciBUFFER reference_framebuffer FORMAT B8G8R8A8_UNORM 192e5c31af7Sopenharmony_ci 193e5c31af7Sopenharmony_ciPIPELINE graphics reference_pipeline 194e5c31af7Sopenharmony_ci ATTACH reference_vertex_shader 195e5c31af7Sopenharmony_ci ATTACH reference_fragment_shader 196e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 197e5c31af7Sopenharmony_ci BIND BUFFER reference_framebuffer AS color LOCATION 0 198e5c31af7Sopenharmony_ci BIND BUFFER default_texture AS combined_image_sampler SAMPLER reference_tex DESCRIPTOR_SET 0 BINDING 0 199e5c31af7Sopenharmony_ciEND 200e5c31af7Sopenharmony_ciCLEAR_COLOR reference_pipeline 0 0 0 255 201e5c31af7Sopenharmony_ci 202e5c31af7Sopenharmony_ciCLEAR reference_pipeline 203e5c31af7Sopenharmony_ciRUN reference_pipeline DRAW_RECT POS 0 0 SIZE 256 256 204e5c31af7Sopenharmony_ci 205e5c31af7Sopenharmony_ci 206e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH 207e5c31af7Sopenharmony_ci 208e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 209e5c31af7Sopenharmony_ci; SPIR-V 210e5c31af7Sopenharmony_ci; Version: 1.0 211e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 10 212e5c31af7Sopenharmony_ci; Bound: 529 213e5c31af7Sopenharmony_ci; Schema: 0 214e5c31af7Sopenharmony_ci OpCapability Shader 215e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 216e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 217e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %115 %130 218e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 219e5c31af7Sopenharmony_ci OpSource ESSL 320 220e5c31af7Sopenharmony_ci OpName %4 "main" 221e5c31af7Sopenharmony_ci OpName %115 "gl_FragCoord" 222e5c31af7Sopenharmony_ci OpName %130 "_GLF_color" 223e5c31af7Sopenharmony_ci OpName %134 "tex" 224e5c31af7Sopenharmony_ci OpDecorate %115 BuiltIn FragCoord 225e5c31af7Sopenharmony_ci OpDecorate %130 Location 0 226e5c31af7Sopenharmony_ci OpDecorate %134 RelaxedPrecision 227e5c31af7Sopenharmony_ci OpDecorate %134 DescriptorSet 0 228e5c31af7Sopenharmony_ci OpDecorate %134 Binding 0 229e5c31af7Sopenharmony_ci OpDecorate %135 RelaxedPrecision 230e5c31af7Sopenharmony_ci OpDecorate %137 RelaxedPrecision 231e5c31af7Sopenharmony_ci %2 = OpTypeVoid 232e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 233e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 234e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 235e5c31af7Sopenharmony_ci %19 = OpConstant %6 0.318309873 236e5c31af7Sopenharmony_ci %22 = OpConstant %6 0.00100000005 237e5c31af7Sopenharmony_ci %23 = OpTypeBool 238e5c31af7Sopenharmony_ci %27 = OpConstant %6 0 239e5c31af7Sopenharmony_ci %32 = OpTypeInt 32 0 240e5c31af7Sopenharmony_ci %36 = OpConstant %32 0 241e5c31af7Sopenharmony_ci %55 = OpConstant %6 0.970000029 242e5c31af7Sopenharmony_ci %56 = OpConstant %6 0.189999998 243e5c31af7Sopenharmony_ci %73 = OpConstant %6 0.5 244e5c31af7Sopenharmony_ci %81 = OpConstant %6 1 245e5c31af7Sopenharmony_ci %98 = OpConstantComposite %7 %73 %73 246e5c31af7Sopenharmony_ci %113 = OpTypeVector %6 4 247e5c31af7Sopenharmony_ci %114 = OpTypePointer Input %113 248e5c31af7Sopenharmony_ci %115 = OpVariable %114 Input 249e5c31af7Sopenharmony_ci %118 = OpConstant %6 0.00390625 250e5c31af7Sopenharmony_ci %124 = OpConstant %6 256 251e5c31af7Sopenharmony_ci %129 = OpTypePointer Output %113 252e5c31af7Sopenharmony_ci %130 = OpVariable %129 Output 253e5c31af7Sopenharmony_ci %131 = OpTypeImage %6 2D 0 0 0 1 Unknown 254e5c31af7Sopenharmony_ci %132 = OpTypeSampledImage %131 255e5c31af7Sopenharmony_ci %133 = OpTypePointer UniformConstant %132 256e5c31af7Sopenharmony_ci %134 = OpVariable %133 UniformConstant 257e5c31af7Sopenharmony_ci %253 = OpConstantComposite %7 %118 %118 258e5c31af7Sopenharmony_ci %379 = OpTypeInt 32 1 259e5c31af7Sopenharmony_ci %380 = OpConstant %379 3 260e5c31af7Sopenharmony_ci %383 = OpConstant %379 0 261e5c31af7Sopenharmony_ci %384 = OpTypePointer Input %6 262e5c31af7Sopenharmony_ci %475 = OpConstantFalse %23 263e5c31af7Sopenharmony_ci %526 = OpTypePointer Function %23 264e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 265e5c31af7Sopenharmony_ci %5 = OpLabel 266e5c31af7Sopenharmony_ci %527 = OpVariable %526 Function %475 267e5c31af7Sopenharmony_ci %116 = OpLoad %113 %115 268e5c31af7Sopenharmony_ci %117 = OpVectorShuffle %7 %116 %116 0 1 269e5c31af7Sopenharmony_ci %119 = OpVectorTimesScalar %7 %117 %118 270e5c31af7Sopenharmony_ci %160 = OpFSub %7 %119 %98 271e5c31af7Sopenharmony_ci %162 = OpExtInst %6 %1 Length %160 272e5c31af7Sopenharmony_ci OpSelectionMerge %235 None 273e5c31af7Sopenharmony_ci OpSwitch %36 %176 274e5c31af7Sopenharmony_ci %176 = OpLabel 275e5c31af7Sopenharmony_ci %179 = OpFOrdLessThan %23 %162 %22 276e5c31af7Sopenharmony_ci OpSelectionMerge %181 None 277e5c31af7Sopenharmony_ci OpBranchConditional %179 %180 %181 278e5c31af7Sopenharmony_ci %180 = OpLabel 279e5c31af7Sopenharmony_ci OpBranch %235 280e5c31af7Sopenharmony_ci %181 = OpLabel 281e5c31af7Sopenharmony_ci %183 = OpExtInst %7 %1 FAbs %160 282e5c31af7Sopenharmony_ci %185 = OpCompositeExtract %6 %183 1 283e5c31af7Sopenharmony_ci %187 = OpCompositeExtract %6 %183 0 284e5c31af7Sopenharmony_ci %188 = OpFOrdGreaterThan %23 %185 %187 285e5c31af7Sopenharmony_ci OpSelectionMerge %201 None 286e5c31af7Sopenharmony_ci OpBranchConditional %188 %189 %195 287e5c31af7Sopenharmony_ci %189 = OpLabel 288e5c31af7Sopenharmony_ci %194 = OpFDiv %6 %187 %185 289e5c31af7Sopenharmony_ci OpBranch %201 290e5c31af7Sopenharmony_ci %195 = OpLabel 291e5c31af7Sopenharmony_ci %200 = OpFDiv %6 %185 %187 292e5c31af7Sopenharmony_ci OpBranch %201 293e5c31af7Sopenharmony_ci %201 = OpLabel 294e5c31af7Sopenharmony_ci %247 = OpPhi %6 %194 %189 %200 %195 295e5c31af7Sopenharmony_ci %203 = OpFMul %6 %56 %247 296e5c31af7Sopenharmony_ci %205 = OpFMul %6 %203 %247 297e5c31af7Sopenharmony_ci %206 = OpFSub %6 %55 %205 298e5c31af7Sopenharmony_ci %208 = OpFMul %6 %206 %247 299e5c31af7Sopenharmony_ci %210 = OpFMul %6 %208 %19 300e5c31af7Sopenharmony_ci %215 = OpFOrdLessThan %23 %185 %187 301e5c31af7Sopenharmony_ci OpSelectionMerge %219 None 302e5c31af7Sopenharmony_ci OpBranchConditional %215 %216 %219 303e5c31af7Sopenharmony_ci %216 = OpLabel 304e5c31af7Sopenharmony_ci %218 = OpFSub %6 %73 %210 305e5c31af7Sopenharmony_ci OpBranch %219 306e5c31af7Sopenharmony_ci %219 = OpLabel 307e5c31af7Sopenharmony_ci %248 = OpPhi %6 %210 %201 %218 %216 308e5c31af7Sopenharmony_ci %221 = OpCompositeExtract %6 %160 0 309e5c31af7Sopenharmony_ci %222 = OpFOrdLessThan %23 %221 %27 310e5c31af7Sopenharmony_ci OpSelectionMerge %226 None 311e5c31af7Sopenharmony_ci OpBranchConditional %222 %223 %226 312e5c31af7Sopenharmony_ci %223 = OpLabel 313e5c31af7Sopenharmony_ci %225 = OpFSub %6 %81 %248 314e5c31af7Sopenharmony_ci OpBranch %226 315e5c31af7Sopenharmony_ci %226 = OpLabel 316e5c31af7Sopenharmony_ci %249 = OpPhi %6 %248 %219 %225 %223 317e5c31af7Sopenharmony_ci %228 = OpCompositeExtract %6 %160 1 318e5c31af7Sopenharmony_ci %229 = OpFOrdLessThan %23 %228 %27 319e5c31af7Sopenharmony_ci OpSelectionMerge %233 None 320e5c31af7Sopenharmony_ci OpBranchConditional %229 %230 %233 321e5c31af7Sopenharmony_ci %230 = OpLabel 322e5c31af7Sopenharmony_ci %232 = OpFNegate %6 %249 323e5c31af7Sopenharmony_ci OpBranch %233 324e5c31af7Sopenharmony_ci %233 = OpLabel 325e5c31af7Sopenharmony_ci %250 = OpPhi %6 %249 %226 %232 %230 326e5c31af7Sopenharmony_ci OpBranch %235 327e5c31af7Sopenharmony_ci %235 = OpLabel 328e5c31af7Sopenharmony_ci %251 = OpPhi %6 %27 %180 %250 %233 329e5c31af7Sopenharmony_ci %167 = OpCompositeConstruct %7 %162 %251 330e5c31af7Sopenharmony_ci %125 = OpVectorTimesScalar %7 %167 %124 331e5c31af7Sopenharmony_ci %126 = OpExtInst %7 %1 Floor %125 332e5c31af7Sopenharmony_ci %128 = OpFMul %7 %126 %253 333e5c31af7Sopenharmony_ci %135 = OpLoad %132 %134 334e5c31af7Sopenharmony_ci %137 = OpImageSampleImplicitLod %113 %135 %128 335e5c31af7Sopenharmony_ci %140 = OpCompositeExtract %6 %137 0 336e5c31af7Sopenharmony_ci %141 = OpCompositeExtract %6 %137 1 337e5c31af7Sopenharmony_ci %142 = OpCompositeExtract %6 %137 2 338e5c31af7Sopenharmony_ci OpStore %527 %179 339e5c31af7Sopenharmony_ci %528 = OpLoad %23 %527 340e5c31af7Sopenharmony_ci %381 = OpULessThanEqual %23 %383 %380 341e5c31af7Sopenharmony_ci %382 = OpSelect %379 %381 %383 %380 342e5c31af7Sopenharmony_ci %385 = OpAccessChain %384 %115 %382 343e5c31af7Sopenharmony_ci %143 = OpCompositeConstruct %113 %140 %141 %142 %81 344e5c31af7Sopenharmony_ci OpStore %130 %143 345e5c31af7Sopenharmony_ci OpReturn 346e5c31af7Sopenharmony_ci OpFunctionEnd 347e5c31af7Sopenharmony_ciEND 348e5c31af7Sopenharmony_ci 349e5c31af7Sopenharmony_ci# uniforms for variant 350e5c31af7Sopenharmony_ci 351e5c31af7Sopenharmony_ci# tex 352e5c31af7Sopenharmony_ciSAMPLER variant_tex 353e5c31af7Sopenharmony_ci 354e5c31af7Sopenharmony_ci 355e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM 356e5c31af7Sopenharmony_ci 357e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline 358e5c31af7Sopenharmony_ci ATTACH variant_vertex_shader 359e5c31af7Sopenharmony_ci ATTACH variant_fragment_shader 360e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 361e5c31af7Sopenharmony_ci BIND BUFFER variant_framebuffer AS color LOCATION 0 362e5c31af7Sopenharmony_ci BIND BUFFER default_texture AS combined_image_sampler SAMPLER variant_tex DESCRIPTOR_SET 0 BINDING 0 363e5c31af7Sopenharmony_ciEND 364e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255 365e5c31af7Sopenharmony_ci 366e5c31af7Sopenharmony_ciCLEAR variant_pipeline 367e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256 368e5c31af7Sopenharmony_ci 369e5c31af7Sopenharmony_ciEXPECT reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_framebuffer TOLERANCE 0.005 370