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: Three shaders diff: new variable used and mutated 21e5c31af7Sopenharmony_ci 22e5c31af7Sopenharmony_ci# The test renders three images using semantically equivalent shaders, and then 23e5c31af7Sopenharmony_ci# checks that the images are similar. 24e5c31af7Sopenharmony_ci# The test passes because the shaders have the same semantics and so the images 25e5c31af7Sopenharmony_ci# should be the same. 26e5c31af7Sopenharmony_ci 27e5c31af7Sopenharmony_ciSHADER vertex reference_vertex_shader PASSTHROUGH 28e5c31af7Sopenharmony_ci 29e5c31af7Sopenharmony_ciSHADER fragment reference_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 30e5c31af7Sopenharmony_ci; SPIR-V 31e5c31af7Sopenharmony_ci; Version: 1.0 32e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7 33e5c31af7Sopenharmony_ci; Bound: 286 34e5c31af7Sopenharmony_ci; Schema: 0 35e5c31af7Sopenharmony_ci OpCapability Shader 36e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 37e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 38e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %165 %180 39e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 40e5c31af7Sopenharmony_ci OpSource ESSL 320 41e5c31af7Sopenharmony_ci OpName %4 "main" 42e5c31af7Sopenharmony_ci OpName %165 "gl_FragCoord" 43e5c31af7Sopenharmony_ci OpName %168 "buf0" 44e5c31af7Sopenharmony_ci OpMemberName %168 0 "resolution" 45e5c31af7Sopenharmony_ci OpName %170 "" 46e5c31af7Sopenharmony_ci OpName %180 "_GLF_color" 47e5c31af7Sopenharmony_ci OpDecorate %165 BuiltIn FragCoord 48e5c31af7Sopenharmony_ci OpMemberDecorate %168 0 Offset 0 49e5c31af7Sopenharmony_ci OpDecorate %168 Block 50e5c31af7Sopenharmony_ci OpDecorate %170 DescriptorSet 0 51e5c31af7Sopenharmony_ci OpDecorate %170 Binding 0 52e5c31af7Sopenharmony_ci OpDecorate %180 Location 0 53e5c31af7Sopenharmony_ci %2 = OpTypeVoid 54e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 55e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 56e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 57e5c31af7Sopenharmony_ci %9 = OpTypeVector %6 4 58e5c31af7Sopenharmony_ci %10 = OpTypePointer Function %9 59e5c31af7Sopenharmony_ci %11 = OpTypeBool 60e5c31af7Sopenharmony_ci %21 = OpTypeInt 32 0 61e5c31af7Sopenharmony_ci %22 = OpConstant %21 0 62e5c31af7Sopenharmony_ci %23 = OpTypePointer Function %6 63e5c31af7Sopenharmony_ci %31 = OpConstantFalse %11 64e5c31af7Sopenharmony_ci %33 = OpConstant %21 1 65e5c31af7Sopenharmony_ci %66 = OpConstantTrue %11 66e5c31af7Sopenharmony_ci %70 = OpConstant %6 0.5 67e5c31af7Sopenharmony_ci %71 = OpConstant %6 1 68e5c31af7Sopenharmony_ci %72 = OpConstantComposite %9 %70 %70 %71 %71 69e5c31af7Sopenharmony_ci %73 = OpTypeInt 32 1 70e5c31af7Sopenharmony_ci %76 = OpConstant %73 0 71e5c31af7Sopenharmony_ci %83 = OpConstant %73 8 72e5c31af7Sopenharmony_ci %85 = OpConstant %21 8 73e5c31af7Sopenharmony_ci %86 = OpTypeArray %9 %85 74e5c31af7Sopenharmony_ci %87 = OpConstant %6 4 75e5c31af7Sopenharmony_ci %88 = OpConstant %6 20 76e5c31af7Sopenharmony_ci %89 = OpConstantComposite %9 %87 %87 %88 %87 77e5c31af7Sopenharmony_ci %90 = OpConstantComposite %9 %87 %87 %87 %88 78e5c31af7Sopenharmony_ci %91 = OpConstantComposite %9 %87 %88 %88 %87 79e5c31af7Sopenharmony_ci %92 = OpConstant %6 8 80e5c31af7Sopenharmony_ci %93 = OpConstantComposite %9 %88 %87 %87 %92 81e5c31af7Sopenharmony_ci %94 = OpConstant %6 6 82e5c31af7Sopenharmony_ci %95 = OpConstant %6 2 83e5c31af7Sopenharmony_ci %96 = OpConstantComposite %9 %92 %94 %87 %95 84e5c31af7Sopenharmony_ci %97 = OpConstant %6 12 85e5c31af7Sopenharmony_ci %98 = OpConstantComposite %9 %95 %97 %95 %87 86e5c31af7Sopenharmony_ci %99 = OpConstant %6 16 87e5c31af7Sopenharmony_ci %100 = OpConstantComposite %9 %99 %95 %87 %87 88e5c31af7Sopenharmony_ci %101 = OpConstant %6 22 89e5c31af7Sopenharmony_ci %102 = OpConstantComposite %9 %97 %101 %87 %87 90e5c31af7Sopenharmony_ci %103 = OpConstantComposite %86 %89 %90 %91 %93 %96 %98 %100 %102 91e5c31af7Sopenharmony_ci %108 = OpTypePointer Function %86 92e5c31af7Sopenharmony_ci %115 = OpConstant %21 16 93e5c31af7Sopenharmony_ci %116 = OpTypeArray %9 %115 94e5c31af7Sopenharmony_ci %117 = OpConstant %6 0 95e5c31af7Sopenharmony_ci %118 = OpConstantComposite %9 %117 %117 %117 %71 96e5c31af7Sopenharmony_ci %119 = OpConstantComposite %9 %70 %117 %117 %71 97e5c31af7Sopenharmony_ci %120 = OpConstantComposite %9 %117 %70 %117 %71 98e5c31af7Sopenharmony_ci %121 = OpConstantComposite %9 %70 %70 %117 %71 99e5c31af7Sopenharmony_ci %122 = OpConstantComposite %9 %117 %117 %70 %71 100e5c31af7Sopenharmony_ci %123 = OpConstantComposite %9 %70 %117 %70 %71 101e5c31af7Sopenharmony_ci %124 = OpConstantComposite %9 %117 %70 %70 %71 102e5c31af7Sopenharmony_ci %125 = OpConstantComposite %9 %70 %70 %70 %71 103e5c31af7Sopenharmony_ci %126 = OpConstantComposite %9 %71 %117 %117 %71 104e5c31af7Sopenharmony_ci %127 = OpConstantComposite %9 %117 %71 %117 %71 105e5c31af7Sopenharmony_ci %128 = OpConstantComposite %9 %71 %71 %117 %71 106e5c31af7Sopenharmony_ci %129 = OpConstantComposite %9 %117 %117 %71 %71 107e5c31af7Sopenharmony_ci %130 = OpConstantComposite %9 %71 %117 %71 %71 108e5c31af7Sopenharmony_ci %131 = OpConstantComposite %9 %117 %71 %71 %71 109e5c31af7Sopenharmony_ci %132 = OpConstantComposite %9 %71 %71 %71 %71 110e5c31af7Sopenharmony_ci %133 = OpConstantComposite %116 %118 %119 %120 %121 %122 %123 %124 %125 %118 %126 %127 %128 %129 %130 %131 %132 111e5c31af7Sopenharmony_ci %146 = OpConstant %73 9 112e5c31af7Sopenharmony_ci %149 = OpConstant %73 11 113e5c31af7Sopenharmony_ci %151 = OpConstant %73 16 114e5c31af7Sopenharmony_ci %153 = OpTypePointer Function %116 115e5c31af7Sopenharmony_ci %158 = OpConstant %73 1 116e5c31af7Sopenharmony_ci %164 = OpTypePointer Input %9 117e5c31af7Sopenharmony_ci %165 = OpVariable %164 Input 118e5c31af7Sopenharmony_ci %168 = OpTypeStruct %7 119e5c31af7Sopenharmony_ci %169 = OpTypePointer Uniform %168 120e5c31af7Sopenharmony_ci %170 = OpVariable %169 Uniform 121e5c31af7Sopenharmony_ci %171 = OpTypePointer Uniform %7 122e5c31af7Sopenharmony_ci %176 = OpConstant %6 32 123e5c31af7Sopenharmony_ci %179 = OpTypePointer Output %9 124e5c31af7Sopenharmony_ci %180 = OpVariable %179 Output 125e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 126e5c31af7Sopenharmony_ci %5 = OpLabel 127e5c31af7Sopenharmony_ci %199 = OpVariable %108 Function 128e5c31af7Sopenharmony_ci %200 = OpVariable %108 Function 129e5c31af7Sopenharmony_ci %201 = OpVariable %108 Function 130e5c31af7Sopenharmony_ci %202 = OpVariable %153 Function 131e5c31af7Sopenharmony_ci %166 = OpLoad %9 %165 132e5c31af7Sopenharmony_ci %167 = OpVectorShuffle %7 %166 %166 0 1 133e5c31af7Sopenharmony_ci %172 = OpAccessChain %171 %170 %76 134e5c31af7Sopenharmony_ci %173 = OpLoad %7 %172 135e5c31af7Sopenharmony_ci %174 = OpFDiv %7 %167 %173 136e5c31af7Sopenharmony_ci %177 = OpVectorTimesScalar %7 %174 %176 137e5c31af7Sopenharmony_ci %178 = OpExtInst %7 %1 Floor %177 138e5c31af7Sopenharmony_ci OpBranch %205 139e5c31af7Sopenharmony_ci %205 = OpLabel 140e5c31af7Sopenharmony_ci %280 = OpPhi %9 %72 %5 %285 %233 141e5c31af7Sopenharmony_ci %279 = OpPhi %73 %76 %5 %235 %233 142e5c31af7Sopenharmony_ci %208 = OpSLessThan %11 %279 %83 143e5c31af7Sopenharmony_ci OpLoopMerge %236 %233 None 144e5c31af7Sopenharmony_ci OpBranchConditional %208 %209 %236 145e5c31af7Sopenharmony_ci %209 = OpLabel 146e5c31af7Sopenharmony_ci OpStore %199 %103 147e5c31af7Sopenharmony_ci %212 = OpAccessChain %10 %199 %279 148e5c31af7Sopenharmony_ci %213 = OpLoad %9 %212 149e5c31af7Sopenharmony_ci OpSelectionMerge %277 None 150e5c31af7Sopenharmony_ci OpSwitch %22 %242 151e5c31af7Sopenharmony_ci %242 = OpLabel 152e5c31af7Sopenharmony_ci %244 = OpCompositeExtract %6 %178 0 153e5c31af7Sopenharmony_ci %246 = OpCompositeExtract %6 %213 0 154e5c31af7Sopenharmony_ci %247 = OpFOrdLessThan %11 %244 %246 155e5c31af7Sopenharmony_ci OpSelectionMerge %249 None 156e5c31af7Sopenharmony_ci OpBranchConditional %247 %248 %249 157e5c31af7Sopenharmony_ci %248 = OpLabel 158e5c31af7Sopenharmony_ci OpBranch %277 159e5c31af7Sopenharmony_ci %249 = OpLabel 160e5c31af7Sopenharmony_ci %251 = OpCompositeExtract %6 %178 1 161e5c31af7Sopenharmony_ci %253 = OpCompositeExtract %6 %213 1 162e5c31af7Sopenharmony_ci %254 = OpFOrdLessThan %11 %251 %253 163e5c31af7Sopenharmony_ci OpSelectionMerge %256 None 164e5c31af7Sopenharmony_ci OpBranchConditional %254 %255 %256 165e5c31af7Sopenharmony_ci %255 = OpLabel 166e5c31af7Sopenharmony_ci OpBranch %277 167e5c31af7Sopenharmony_ci %256 = OpLabel 168e5c31af7Sopenharmony_ci %262 = OpCompositeExtract %6 %213 2 169e5c31af7Sopenharmony_ci %263 = OpFAdd %6 %246 %262 170e5c31af7Sopenharmony_ci %264 = OpFOrdGreaterThan %11 %244 %263 171e5c31af7Sopenharmony_ci OpSelectionMerge %266 None 172e5c31af7Sopenharmony_ci OpBranchConditional %264 %265 %266 173e5c31af7Sopenharmony_ci %265 = OpLabel 174e5c31af7Sopenharmony_ci OpBranch %277 175e5c31af7Sopenharmony_ci %266 = OpLabel 176e5c31af7Sopenharmony_ci %272 = OpCompositeExtract %6 %213 3 177e5c31af7Sopenharmony_ci %273 = OpFAdd %6 %253 %272 178e5c31af7Sopenharmony_ci %274 = OpFOrdGreaterThan %11 %251 %273 179e5c31af7Sopenharmony_ci OpSelectionMerge %276 None 180e5c31af7Sopenharmony_ci OpBranchConditional %274 %275 %276 181e5c31af7Sopenharmony_ci %275 = OpLabel 182e5c31af7Sopenharmony_ci OpBranch %277 183e5c31af7Sopenharmony_ci %276 = OpLabel 184e5c31af7Sopenharmony_ci OpBranch %277 185e5c31af7Sopenharmony_ci %277 = OpLabel 186e5c31af7Sopenharmony_ci %282 = OpPhi %11 %31 %248 %31 %255 %31 %265 %31 %275 %66 %276 187e5c31af7Sopenharmony_ci OpSelectionMerge %232 None 188e5c31af7Sopenharmony_ci OpBranchConditional %282 %215 %232 189e5c31af7Sopenharmony_ci %215 = OpLabel 190e5c31af7Sopenharmony_ci OpStore %200 %103 191e5c31af7Sopenharmony_ci %217 = OpAccessChain %23 %200 %279 %22 192e5c31af7Sopenharmony_ci %218 = OpLoad %6 %217 193e5c31af7Sopenharmony_ci %219 = OpConvertFToS %73 %218 194e5c31af7Sopenharmony_ci OpStore %201 %103 195e5c31af7Sopenharmony_ci %221 = OpAccessChain %23 %201 %279 %33 196e5c31af7Sopenharmony_ci %222 = OpLoad %6 %221 197e5c31af7Sopenharmony_ci %223 = OpConvertFToS %73 %222 198e5c31af7Sopenharmony_ci %224 = OpIMul %73 %219 %223 199e5c31af7Sopenharmony_ci %226 = OpIMul %73 %279 %146 200e5c31af7Sopenharmony_ci %227 = OpIAdd %73 %224 %226 201e5c31af7Sopenharmony_ci %228 = OpIAdd %73 %227 %149 202e5c31af7Sopenharmony_ci %229 = OpSMod %73 %228 %151 203e5c31af7Sopenharmony_ci OpStore %202 %133 204e5c31af7Sopenharmony_ci %230 = OpAccessChain %10 %202 %229 205e5c31af7Sopenharmony_ci %231 = OpLoad %9 %230 206e5c31af7Sopenharmony_ci OpBranch %232 207e5c31af7Sopenharmony_ci %232 = OpLabel 208e5c31af7Sopenharmony_ci %285 = OpPhi %9 %280 %277 %231 %215 209e5c31af7Sopenharmony_ci OpBranch %233 210e5c31af7Sopenharmony_ci %233 = OpLabel 211e5c31af7Sopenharmony_ci %235 = OpIAdd %73 %279 %158 212e5c31af7Sopenharmony_ci OpBranch %205 213e5c31af7Sopenharmony_ci %236 = OpLabel 214e5c31af7Sopenharmony_ci OpStore %180 %280 215e5c31af7Sopenharmony_ci OpReturn 216e5c31af7Sopenharmony_ci OpFunctionEnd 217e5c31af7Sopenharmony_ciEND 218e5c31af7Sopenharmony_ci 219e5c31af7Sopenharmony_ci# uniforms for reference 220e5c31af7Sopenharmony_ci 221e5c31af7Sopenharmony_ci# resolution 222e5c31af7Sopenharmony_ciBUFFER reference_resolution DATA_TYPE vec2<float> STD140 DATA 223e5c31af7Sopenharmony_ci 256.0 256.0 224e5c31af7Sopenharmony_ciEND 225e5c31af7Sopenharmony_ci 226e5c31af7Sopenharmony_ciBUFFER reference_framebuffer FORMAT B8G8R8A8_UNORM 227e5c31af7Sopenharmony_ci 228e5c31af7Sopenharmony_ciPIPELINE graphics reference_pipeline 229e5c31af7Sopenharmony_ci ATTACH reference_vertex_shader 230e5c31af7Sopenharmony_ci ATTACH reference_fragment_shader 231e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 232e5c31af7Sopenharmony_ci BIND BUFFER reference_framebuffer AS color LOCATION 0 233e5c31af7Sopenharmony_ci BIND BUFFER reference_resolution AS uniform DESCRIPTOR_SET 0 BINDING 0 234e5c31af7Sopenharmony_ciEND 235e5c31af7Sopenharmony_ciCLEAR_COLOR reference_pipeline 0 0 0 255 236e5c31af7Sopenharmony_ci 237e5c31af7Sopenharmony_ciCLEAR reference_pipeline 238e5c31af7Sopenharmony_ciRUN reference_pipeline DRAW_RECT POS 0 0 SIZE 256 256 239e5c31af7Sopenharmony_ci 240e5c31af7Sopenharmony_ci 241e5c31af7Sopenharmony_ciSHADER vertex variant_vertex_shader PASSTHROUGH 242e5c31af7Sopenharmony_ci 243e5c31af7Sopenharmony_ciSHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 244e5c31af7Sopenharmony_ci; SPIR-V 245e5c31af7Sopenharmony_ci; Version: 1.0 246e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7 247e5c31af7Sopenharmony_ci; Bound: 517 248e5c31af7Sopenharmony_ci; Schema: 0 249e5c31af7Sopenharmony_ci OpCapability Shader 250e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 251e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 252e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %165 %180 253e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 254e5c31af7Sopenharmony_ci OpSource ESSL 320 255e5c31af7Sopenharmony_ci OpName %4 "main" 256e5c31af7Sopenharmony_ci OpName %165 "gl_FragCoord" 257e5c31af7Sopenharmony_ci OpName %168 "buf0" 258e5c31af7Sopenharmony_ci OpMemberName %168 0 "resolution" 259e5c31af7Sopenharmony_ci OpName %170 "" 260e5c31af7Sopenharmony_ci OpName %180 "_GLF_color" 261e5c31af7Sopenharmony_ci OpDecorate %165 BuiltIn FragCoord 262e5c31af7Sopenharmony_ci OpMemberDecorate %168 0 Offset 0 263e5c31af7Sopenharmony_ci OpDecorate %168 Block 264e5c31af7Sopenharmony_ci OpDecorate %170 DescriptorSet 0 265e5c31af7Sopenharmony_ci OpDecorate %170 Binding 0 266e5c31af7Sopenharmony_ci OpDecorate %180 Location 0 267e5c31af7Sopenharmony_ci %2 = OpTypeVoid 268e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 269e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 270e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 271e5c31af7Sopenharmony_ci %9 = OpTypeVector %6 4 272e5c31af7Sopenharmony_ci %10 = OpTypePointer Function %9 273e5c31af7Sopenharmony_ci %11 = OpTypeBool 274e5c31af7Sopenharmony_ci %21 = OpTypeInt 32 0 275e5c31af7Sopenharmony_ci %22 = OpConstant %21 0 276e5c31af7Sopenharmony_ci %23 = OpTypePointer Function %6 277e5c31af7Sopenharmony_ci %31 = OpConstantFalse %11 278e5c31af7Sopenharmony_ci %33 = OpConstant %21 1 279e5c31af7Sopenharmony_ci %66 = OpConstantTrue %11 280e5c31af7Sopenharmony_ci %70 = OpConstant %6 0.5 281e5c31af7Sopenharmony_ci %71 = OpConstant %6 1 282e5c31af7Sopenharmony_ci %72 = OpConstantComposite %9 %70 %70 %71 %71 283e5c31af7Sopenharmony_ci %73 = OpTypeInt 32 1 284e5c31af7Sopenharmony_ci %76 = OpConstant %73 0 285e5c31af7Sopenharmony_ci %83 = OpConstant %73 8 286e5c31af7Sopenharmony_ci %85 = OpConstant %21 8 287e5c31af7Sopenharmony_ci %86 = OpTypeArray %9 %85 288e5c31af7Sopenharmony_ci %87 = OpConstant %6 4 289e5c31af7Sopenharmony_ci %88 = OpConstant %6 20 290e5c31af7Sopenharmony_ci %89 = OpConstantComposite %9 %87 %87 %88 %87 291e5c31af7Sopenharmony_ci %90 = OpConstantComposite %9 %87 %87 %87 %88 292e5c31af7Sopenharmony_ci %91 = OpConstantComposite %9 %87 %88 %88 %87 293e5c31af7Sopenharmony_ci %92 = OpConstant %6 8 294e5c31af7Sopenharmony_ci %93 = OpConstantComposite %9 %88 %87 %87 %92 295e5c31af7Sopenharmony_ci %94 = OpConstant %6 6 296e5c31af7Sopenharmony_ci %95 = OpConstant %6 2 297e5c31af7Sopenharmony_ci %96 = OpConstantComposite %9 %92 %94 %87 %95 298e5c31af7Sopenharmony_ci %97 = OpConstant %6 12 299e5c31af7Sopenharmony_ci %98 = OpConstantComposite %9 %95 %97 %95 %87 300e5c31af7Sopenharmony_ci %99 = OpConstant %6 16 301e5c31af7Sopenharmony_ci %100 = OpConstantComposite %9 %99 %95 %87 %87 302e5c31af7Sopenharmony_ci %101 = OpConstant %6 22 303e5c31af7Sopenharmony_ci %102 = OpConstantComposite %9 %97 %101 %87 %87 304e5c31af7Sopenharmony_ci %103 = OpConstantComposite %86 %89 %90 %91 %93 %96 %98 %100 %102 305e5c31af7Sopenharmony_ci %108 = OpTypePointer Function %86 306e5c31af7Sopenharmony_ci %115 = OpConstant %21 16 307e5c31af7Sopenharmony_ci %116 = OpTypeArray %9 %115 308e5c31af7Sopenharmony_ci %117 = OpConstant %6 0 309e5c31af7Sopenharmony_ci %118 = OpConstantComposite %9 %117 %117 %117 %71 310e5c31af7Sopenharmony_ci %119 = OpConstantComposite %9 %70 %117 %117 %71 311e5c31af7Sopenharmony_ci %120 = OpConstantComposite %9 %117 %70 %117 %71 312e5c31af7Sopenharmony_ci %121 = OpConstantComposite %9 %70 %70 %117 %71 313e5c31af7Sopenharmony_ci %122 = OpConstantComposite %9 %117 %117 %70 %71 314e5c31af7Sopenharmony_ci %123 = OpConstantComposite %9 %70 %117 %70 %71 315e5c31af7Sopenharmony_ci %124 = OpConstantComposite %9 %117 %70 %70 %71 316e5c31af7Sopenharmony_ci %125 = OpConstantComposite %9 %70 %70 %70 %71 317e5c31af7Sopenharmony_ci %126 = OpConstantComposite %9 %71 %117 %117 %71 318e5c31af7Sopenharmony_ci %127 = OpConstantComposite %9 %117 %71 %117 %71 319e5c31af7Sopenharmony_ci %128 = OpConstantComposite %9 %71 %71 %117 %71 320e5c31af7Sopenharmony_ci %129 = OpConstantComposite %9 %117 %117 %71 %71 321e5c31af7Sopenharmony_ci %130 = OpConstantComposite %9 %71 %117 %71 %71 322e5c31af7Sopenharmony_ci %131 = OpConstantComposite %9 %117 %71 %71 %71 323e5c31af7Sopenharmony_ci %132 = OpConstantComposite %9 %71 %71 %71 %71 324e5c31af7Sopenharmony_ci %133 = OpConstantComposite %116 %118 %119 %120 %121 %122 %123 %124 %125 %118 %126 %127 %128 %129 %130 %131 %132 325e5c31af7Sopenharmony_ci %146 = OpConstant %73 9 326e5c31af7Sopenharmony_ci %149 = OpConstant %73 11 327e5c31af7Sopenharmony_ci %151 = OpConstant %73 16 328e5c31af7Sopenharmony_ci %153 = OpTypePointer Function %116 329e5c31af7Sopenharmony_ci %158 = OpConstant %73 1 330e5c31af7Sopenharmony_ci %164 = OpTypePointer Input %9 331e5c31af7Sopenharmony_ci %165 = OpVariable %164 Input 332e5c31af7Sopenharmony_ci %168 = OpTypeStruct %7 333e5c31af7Sopenharmony_ci %169 = OpTypePointer Uniform %168 334e5c31af7Sopenharmony_ci %170 = OpVariable %169 Uniform 335e5c31af7Sopenharmony_ci %171 = OpTypePointer Uniform %7 336e5c31af7Sopenharmony_ci %176 = OpConstant %6 32 337e5c31af7Sopenharmony_ci %179 = OpTypePointer Output %9 338e5c31af7Sopenharmony_ci %180 = OpVariable %179 Output 339e5c31af7Sopenharmony_ci %386 = OpConstantComposite %9 %117 %117 %117 %117 340e5c31af7Sopenharmony_ci %387 = OpConstantComposite %86 %386 %386 %386 %386 %386 %386 %386 %386 341e5c31af7Sopenharmony_ci %498 = OpConstant %6 0 342e5c31af7Sopenharmony_ci %499 = OpConstantComposite %9 %498 %498 %498 %498 343e5c31af7Sopenharmony_ci %503 = OpConstantComposite %86 %499 %499 %499 %499 %499 %499 %499 %499 344e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 345e5c31af7Sopenharmony_ci %5 = OpLabel 346e5c31af7Sopenharmony_ci %389 = OpVariable %108 Function %387 347e5c31af7Sopenharmony_ci %199 = OpVariable %108 Function 348e5c31af7Sopenharmony_ci %200 = OpVariable %108 Function 349e5c31af7Sopenharmony_ci %201 = OpVariable %108 Function 350e5c31af7Sopenharmony_ci %202 = OpVariable %153 Function 351e5c31af7Sopenharmony_ci OpStore %389 %103 352e5c31af7Sopenharmony_ci %388 = OpLoad %86 %389 353e5c31af7Sopenharmony_ci %166 = OpLoad %9 %165 354e5c31af7Sopenharmony_ci %167 = OpVectorShuffle %7 %166 %166 0 1 355e5c31af7Sopenharmony_ci %172 = OpAccessChain %171 %170 %76 356e5c31af7Sopenharmony_ci %173 = OpLoad %7 %172 357e5c31af7Sopenharmony_ci %174 = OpFDiv %7 %167 %173 358e5c31af7Sopenharmony_ci %177 = OpVectorTimesScalar %7 %174 %176 359e5c31af7Sopenharmony_ci %178 = OpExtInst %7 %1 Floor %177 360e5c31af7Sopenharmony_ci OpBranch %205 361e5c31af7Sopenharmony_ci %205 = OpLabel 362e5c31af7Sopenharmony_ci %280 = OpPhi %9 %72 %5 %285 %233 363e5c31af7Sopenharmony_ci %279 = OpPhi %73 %76 %5 %235 %233 364e5c31af7Sopenharmony_ci %208 = OpSLessThan %11 %279 %83 365e5c31af7Sopenharmony_ci OpLoopMerge %236 %233 None 366e5c31af7Sopenharmony_ci OpBranchConditional %208 %209 %236 367e5c31af7Sopenharmony_ci %209 = OpLabel 368e5c31af7Sopenharmony_ci OpStore %199 %388 369e5c31af7Sopenharmony_ci %212 = OpAccessChain %10 %199 %279 370e5c31af7Sopenharmony_ci %213 = OpLoad %9 %212 371e5c31af7Sopenharmony_ci OpSelectionMerge %277 None 372e5c31af7Sopenharmony_ci OpSwitch %22 %242 373e5c31af7Sopenharmony_ci %242 = OpLabel 374e5c31af7Sopenharmony_ci %244 = OpCompositeExtract %6 %178 0 375e5c31af7Sopenharmony_ci %246 = OpCompositeExtract %6 %213 0 376e5c31af7Sopenharmony_ci %247 = OpFOrdLessThan %11 %244 %246 377e5c31af7Sopenharmony_ci OpSelectionMerge %249 None 378e5c31af7Sopenharmony_ci OpBranchConditional %247 %248 %249 379e5c31af7Sopenharmony_ci %248 = OpLabel 380e5c31af7Sopenharmony_ci OpBranch %277 381e5c31af7Sopenharmony_ci %249 = OpLabel 382e5c31af7Sopenharmony_ci %251 = OpCompositeExtract %6 %178 1 383e5c31af7Sopenharmony_ci %253 = OpCompositeExtract %6 %213 1 384e5c31af7Sopenharmony_ci %254 = OpFOrdLessThan %11 %251 %253 385e5c31af7Sopenharmony_ci OpSelectionMerge %256 None 386e5c31af7Sopenharmony_ci OpBranchConditional %254 %255 %256 387e5c31af7Sopenharmony_ci %255 = OpLabel 388e5c31af7Sopenharmony_ci OpBranch %277 389e5c31af7Sopenharmony_ci %256 = OpLabel 390e5c31af7Sopenharmony_ci %262 = OpCompositeExtract %6 %213 2 391e5c31af7Sopenharmony_ci %263 = OpFAdd %6 %246 %262 392e5c31af7Sopenharmony_ci %264 = OpFOrdGreaterThan %11 %244 %263 393e5c31af7Sopenharmony_ci OpSelectionMerge %266 None 394e5c31af7Sopenharmony_ci OpBranchConditional %264 %265 %266 395e5c31af7Sopenharmony_ci %265 = OpLabel 396e5c31af7Sopenharmony_ci OpBranch %277 397e5c31af7Sopenharmony_ci %266 = OpLabel 398e5c31af7Sopenharmony_ci %272 = OpCompositeExtract %6 %213 3 399e5c31af7Sopenharmony_ci %273 = OpFAdd %6 %253 %272 400e5c31af7Sopenharmony_ci %274 = OpFOrdGreaterThan %11 %251 %273 401e5c31af7Sopenharmony_ci OpSelectionMerge %276 None 402e5c31af7Sopenharmony_ci OpBranchConditional %274 %275 %276 403e5c31af7Sopenharmony_ci %275 = OpLabel 404e5c31af7Sopenharmony_ci OpBranch %277 405e5c31af7Sopenharmony_ci %276 = OpLabel 406e5c31af7Sopenharmony_ci OpBranch %277 407e5c31af7Sopenharmony_ci %277 = OpLabel 408e5c31af7Sopenharmony_ci %282 = OpPhi %11 %31 %248 %31 %255 %31 %265 %31 %275 %66 %276 409e5c31af7Sopenharmony_ci OpSelectionMerge %232 None 410e5c31af7Sopenharmony_ci OpBranchConditional %282 %215 %232 411e5c31af7Sopenharmony_ci %215 = OpLabel 412e5c31af7Sopenharmony_ci OpStore %200 %103 413e5c31af7Sopenharmony_ci %217 = OpAccessChain %23 %200 %279 %22 414e5c31af7Sopenharmony_ci %218 = OpLoad %6 %217 415e5c31af7Sopenharmony_ci %219 = OpConvertFToS %73 %218 416e5c31af7Sopenharmony_ci OpStore %201 %103 417e5c31af7Sopenharmony_ci %221 = OpAccessChain %23 %201 %279 %33 418e5c31af7Sopenharmony_ci %222 = OpLoad %6 %221 419e5c31af7Sopenharmony_ci %516 = OpLoad %86 %389 420e5c31af7Sopenharmony_ci OpStore %389 %503 421e5c31af7Sopenharmony_ci OpStore %389 %516 422e5c31af7Sopenharmony_ci %223 = OpConvertFToS %73 %222 423e5c31af7Sopenharmony_ci %224 = OpIMul %73 %219 %223 424e5c31af7Sopenharmony_ci %226 = OpIMul %73 %279 %146 425e5c31af7Sopenharmony_ci %227 = OpIAdd %73 %224 %226 426e5c31af7Sopenharmony_ci %228 = OpIAdd %73 %227 %149 427e5c31af7Sopenharmony_ci %229 = OpSMod %73 %228 %151 428e5c31af7Sopenharmony_ci OpStore %202 %133 429e5c31af7Sopenharmony_ci %230 = OpAccessChain %10 %202 %229 430e5c31af7Sopenharmony_ci %231 = OpLoad %9 %230 431e5c31af7Sopenharmony_ci OpBranch %232 432e5c31af7Sopenharmony_ci %232 = OpLabel 433e5c31af7Sopenharmony_ci %285 = OpPhi %9 %280 %277 %231 %215 434e5c31af7Sopenharmony_ci OpBranch %233 435e5c31af7Sopenharmony_ci %233 = OpLabel 436e5c31af7Sopenharmony_ci %235 = OpIAdd %73 %279 %158 437e5c31af7Sopenharmony_ci OpBranch %205 438e5c31af7Sopenharmony_ci %236 = OpLabel 439e5c31af7Sopenharmony_ci OpStore %180 %280 440e5c31af7Sopenharmony_ci OpReturn 441e5c31af7Sopenharmony_ci OpFunctionEnd 442e5c31af7Sopenharmony_ciEND 443e5c31af7Sopenharmony_ci 444e5c31af7Sopenharmony_ci# uniforms for variant 445e5c31af7Sopenharmony_ci 446e5c31af7Sopenharmony_ci# resolution 447e5c31af7Sopenharmony_ciBUFFER variant_resolution DATA_TYPE vec2<float> STD140 DATA 448e5c31af7Sopenharmony_ci 256.0 256.0 449e5c31af7Sopenharmony_ciEND 450e5c31af7Sopenharmony_ci 451e5c31af7Sopenharmony_ciBUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM 452e5c31af7Sopenharmony_ci 453e5c31af7Sopenharmony_ciPIPELINE graphics variant_pipeline 454e5c31af7Sopenharmony_ci ATTACH variant_vertex_shader 455e5c31af7Sopenharmony_ci ATTACH variant_fragment_shader 456e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 457e5c31af7Sopenharmony_ci BIND BUFFER variant_framebuffer AS color LOCATION 0 458e5c31af7Sopenharmony_ci BIND BUFFER variant_resolution AS uniform DESCRIPTOR_SET 0 BINDING 0 459e5c31af7Sopenharmony_ciEND 460e5c31af7Sopenharmony_ciCLEAR_COLOR variant_pipeline 0 0 0 255 461e5c31af7Sopenharmony_ci 462e5c31af7Sopenharmony_ciCLEAR variant_pipeline 463e5c31af7Sopenharmony_ciRUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256 464e5c31af7Sopenharmony_ci 465e5c31af7Sopenharmony_ci 466e5c31af7Sopenharmony_ciSHADER vertex variant_2_vertex_shader PASSTHROUGH 467e5c31af7Sopenharmony_ci 468e5c31af7Sopenharmony_ciSHADER fragment variant_2_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 469e5c31af7Sopenharmony_ci; SPIR-V 470e5c31af7Sopenharmony_ci; Version: 1.0 471e5c31af7Sopenharmony_ci; Generator: Khronos Glslang Reference Front End; 7 472e5c31af7Sopenharmony_ci; Bound: 504 473e5c31af7Sopenharmony_ci; Schema: 0 474e5c31af7Sopenharmony_ci OpCapability Shader 475e5c31af7Sopenharmony_ci %1 = OpExtInstImport "GLSL.std.450" 476e5c31af7Sopenharmony_ci OpMemoryModel Logical GLSL450 477e5c31af7Sopenharmony_ci OpEntryPoint Fragment %4 "main" %165 %180 478e5c31af7Sopenharmony_ci OpExecutionMode %4 OriginUpperLeft 479e5c31af7Sopenharmony_ci OpSource ESSL 320 480e5c31af7Sopenharmony_ci OpName %4 "main" 481e5c31af7Sopenharmony_ci OpName %165 "gl_FragCoord" 482e5c31af7Sopenharmony_ci OpName %168 "buf0" 483e5c31af7Sopenharmony_ci OpMemberName %168 0 "resolution" 484e5c31af7Sopenharmony_ci OpName %170 "" 485e5c31af7Sopenharmony_ci OpName %180 "_GLF_color" 486e5c31af7Sopenharmony_ci OpDecorate %165 BuiltIn FragCoord 487e5c31af7Sopenharmony_ci OpMemberDecorate %168 0 Offset 0 488e5c31af7Sopenharmony_ci OpDecorate %168 Block 489e5c31af7Sopenharmony_ci OpDecorate %170 DescriptorSet 0 490e5c31af7Sopenharmony_ci OpDecorate %170 Binding 0 491e5c31af7Sopenharmony_ci OpDecorate %180 Location 0 492e5c31af7Sopenharmony_ci %2 = OpTypeVoid 493e5c31af7Sopenharmony_ci %3 = OpTypeFunction %2 494e5c31af7Sopenharmony_ci %6 = OpTypeFloat 32 495e5c31af7Sopenharmony_ci %7 = OpTypeVector %6 2 496e5c31af7Sopenharmony_ci %9 = OpTypeVector %6 4 497e5c31af7Sopenharmony_ci %10 = OpTypePointer Function %9 498e5c31af7Sopenharmony_ci %11 = OpTypeBool 499e5c31af7Sopenharmony_ci %21 = OpTypeInt 32 0 500e5c31af7Sopenharmony_ci %22 = OpConstant %21 0 501e5c31af7Sopenharmony_ci %23 = OpTypePointer Function %6 502e5c31af7Sopenharmony_ci %31 = OpConstantFalse %11 503e5c31af7Sopenharmony_ci %33 = OpConstant %21 1 504e5c31af7Sopenharmony_ci %66 = OpConstantTrue %11 505e5c31af7Sopenharmony_ci %70 = OpConstant %6 0.5 506e5c31af7Sopenharmony_ci %71 = OpConstant %6 1 507e5c31af7Sopenharmony_ci %72 = OpConstantComposite %9 %70 %70 %71 %71 508e5c31af7Sopenharmony_ci %73 = OpTypeInt 32 1 509e5c31af7Sopenharmony_ci %76 = OpConstant %73 0 510e5c31af7Sopenharmony_ci %83 = OpConstant %73 8 511e5c31af7Sopenharmony_ci %85 = OpConstant %21 8 512e5c31af7Sopenharmony_ci %86 = OpTypeArray %9 %85 513e5c31af7Sopenharmony_ci %87 = OpConstant %6 4 514e5c31af7Sopenharmony_ci %88 = OpConstant %6 20 515e5c31af7Sopenharmony_ci %89 = OpConstantComposite %9 %87 %87 %88 %87 516e5c31af7Sopenharmony_ci %90 = OpConstantComposite %9 %87 %87 %87 %88 517e5c31af7Sopenharmony_ci %91 = OpConstantComposite %9 %87 %88 %88 %87 518e5c31af7Sopenharmony_ci %92 = OpConstant %6 8 519e5c31af7Sopenharmony_ci %93 = OpConstantComposite %9 %88 %87 %87 %92 520e5c31af7Sopenharmony_ci %94 = OpConstant %6 6 521e5c31af7Sopenharmony_ci %95 = OpConstant %6 2 522e5c31af7Sopenharmony_ci %96 = OpConstantComposite %9 %92 %94 %87 %95 523e5c31af7Sopenharmony_ci %97 = OpConstant %6 12 524e5c31af7Sopenharmony_ci %98 = OpConstantComposite %9 %95 %97 %95 %87 525e5c31af7Sopenharmony_ci %99 = OpConstant %6 16 526e5c31af7Sopenharmony_ci %100 = OpConstantComposite %9 %99 %95 %87 %87 527e5c31af7Sopenharmony_ci %101 = OpConstant %6 22 528e5c31af7Sopenharmony_ci %102 = OpConstantComposite %9 %97 %101 %87 %87 529e5c31af7Sopenharmony_ci %103 = OpConstantComposite %86 %89 %90 %91 %93 %96 %98 %100 %102 530e5c31af7Sopenharmony_ci %108 = OpTypePointer Function %86 531e5c31af7Sopenharmony_ci %115 = OpConstant %21 16 532e5c31af7Sopenharmony_ci %116 = OpTypeArray %9 %115 533e5c31af7Sopenharmony_ci %117 = OpConstant %6 0 534e5c31af7Sopenharmony_ci %118 = OpConstantComposite %9 %117 %117 %117 %71 535e5c31af7Sopenharmony_ci %119 = OpConstantComposite %9 %70 %117 %117 %71 536e5c31af7Sopenharmony_ci %120 = OpConstantComposite %9 %117 %70 %117 %71 537e5c31af7Sopenharmony_ci %121 = OpConstantComposite %9 %70 %70 %117 %71 538e5c31af7Sopenharmony_ci %122 = OpConstantComposite %9 %117 %117 %70 %71 539e5c31af7Sopenharmony_ci %123 = OpConstantComposite %9 %70 %117 %70 %71 540e5c31af7Sopenharmony_ci %124 = OpConstantComposite %9 %117 %70 %70 %71 541e5c31af7Sopenharmony_ci %125 = OpConstantComposite %9 %70 %70 %70 %71 542e5c31af7Sopenharmony_ci %126 = OpConstantComposite %9 %71 %117 %117 %71 543e5c31af7Sopenharmony_ci %127 = OpConstantComposite %9 %117 %71 %117 %71 544e5c31af7Sopenharmony_ci %128 = OpConstantComposite %9 %71 %71 %117 %71 545e5c31af7Sopenharmony_ci %129 = OpConstantComposite %9 %117 %117 %71 %71 546e5c31af7Sopenharmony_ci %130 = OpConstantComposite %9 %71 %117 %71 %71 547e5c31af7Sopenharmony_ci %131 = OpConstantComposite %9 %117 %71 %71 %71 548e5c31af7Sopenharmony_ci %132 = OpConstantComposite %9 %71 %71 %71 %71 549e5c31af7Sopenharmony_ci %133 = OpConstantComposite %116 %118 %119 %120 %121 %122 %123 %124 %125 %118 %126 %127 %128 %129 %130 %131 %132 550e5c31af7Sopenharmony_ci %146 = OpConstant %73 9 551e5c31af7Sopenharmony_ci %149 = OpConstant %73 11 552e5c31af7Sopenharmony_ci %151 = OpConstant %73 16 553e5c31af7Sopenharmony_ci %153 = OpTypePointer Function %116 554e5c31af7Sopenharmony_ci %158 = OpConstant %73 1 555e5c31af7Sopenharmony_ci %164 = OpTypePointer Input %9 556e5c31af7Sopenharmony_ci %165 = OpVariable %164 Input 557e5c31af7Sopenharmony_ci %168 = OpTypeStruct %7 558e5c31af7Sopenharmony_ci %169 = OpTypePointer Uniform %168 559e5c31af7Sopenharmony_ci %170 = OpVariable %169 Uniform 560e5c31af7Sopenharmony_ci %171 = OpTypePointer Uniform %7 561e5c31af7Sopenharmony_ci %176 = OpConstant %6 32 562e5c31af7Sopenharmony_ci %179 = OpTypePointer Output %9 563e5c31af7Sopenharmony_ci %180 = OpVariable %179 Output 564e5c31af7Sopenharmony_ci %386 = OpConstantComposite %9 %117 %117 %117 %117 565e5c31af7Sopenharmony_ci %387 = OpConstantComposite %86 %386 %386 %386 %386 %386 %386 %386 %386 566e5c31af7Sopenharmony_ci %498 = OpConstant %6 0 567e5c31af7Sopenharmony_ci %499 = OpConstantComposite %9 %498 %498 %498 %498 568e5c31af7Sopenharmony_ci %503 = OpConstantComposite %86 %499 %499 %499 %499 %499 %499 %499 %499 569e5c31af7Sopenharmony_ci %4 = OpFunction %2 None %3 570e5c31af7Sopenharmony_ci %5 = OpLabel 571e5c31af7Sopenharmony_ci %389 = OpVariable %108 Function %387 572e5c31af7Sopenharmony_ci %199 = OpVariable %108 Function 573e5c31af7Sopenharmony_ci %200 = OpVariable %108 Function 574e5c31af7Sopenharmony_ci %201 = OpVariable %108 Function 575e5c31af7Sopenharmony_ci %202 = OpVariable %153 Function 576e5c31af7Sopenharmony_ci OpStore %389 %103 577e5c31af7Sopenharmony_ci %388 = OpLoad %86 %389 578e5c31af7Sopenharmony_ci %166 = OpLoad %9 %165 579e5c31af7Sopenharmony_ci %167 = OpVectorShuffle %7 %166 %166 0 1 580e5c31af7Sopenharmony_ci %172 = OpAccessChain %171 %170 %76 581e5c31af7Sopenharmony_ci %173 = OpLoad %7 %172 582e5c31af7Sopenharmony_ci %174 = OpFDiv %7 %167 %173 583e5c31af7Sopenharmony_ci %177 = OpVectorTimesScalar %7 %174 %176 584e5c31af7Sopenharmony_ci %178 = OpExtInst %7 %1 Floor %177 585e5c31af7Sopenharmony_ci OpBranch %205 586e5c31af7Sopenharmony_ci %205 = OpLabel 587e5c31af7Sopenharmony_ci %280 = OpPhi %9 %72 %5 %285 %233 588e5c31af7Sopenharmony_ci %279 = OpPhi %73 %76 %5 %235 %233 589e5c31af7Sopenharmony_ci %208 = OpSLessThan %11 %279 %83 590e5c31af7Sopenharmony_ci OpLoopMerge %236 %233 None 591e5c31af7Sopenharmony_ci OpBranchConditional %208 %209 %236 592e5c31af7Sopenharmony_ci %209 = OpLabel 593e5c31af7Sopenharmony_ci OpStore %199 %388 594e5c31af7Sopenharmony_ci %212 = OpAccessChain %10 %199 %279 595e5c31af7Sopenharmony_ci %213 = OpLoad %9 %212 596e5c31af7Sopenharmony_ci OpSelectionMerge %277 None 597e5c31af7Sopenharmony_ci OpSwitch %22 %242 598e5c31af7Sopenharmony_ci %242 = OpLabel 599e5c31af7Sopenharmony_ci %244 = OpCompositeExtract %6 %178 0 600e5c31af7Sopenharmony_ci %246 = OpCompositeExtract %6 %213 0 601e5c31af7Sopenharmony_ci %247 = OpFOrdLessThan %11 %244 %246 602e5c31af7Sopenharmony_ci OpSelectionMerge %249 None 603e5c31af7Sopenharmony_ci OpBranchConditional %247 %248 %249 604e5c31af7Sopenharmony_ci %248 = OpLabel 605e5c31af7Sopenharmony_ci OpBranch %277 606e5c31af7Sopenharmony_ci %249 = OpLabel 607e5c31af7Sopenharmony_ci %251 = OpCompositeExtract %6 %178 1 608e5c31af7Sopenharmony_ci %253 = OpCompositeExtract %6 %213 1 609e5c31af7Sopenharmony_ci %254 = OpFOrdLessThan %11 %251 %253 610e5c31af7Sopenharmony_ci OpSelectionMerge %256 None 611e5c31af7Sopenharmony_ci OpBranchConditional %254 %255 %256 612e5c31af7Sopenharmony_ci %255 = OpLabel 613e5c31af7Sopenharmony_ci OpBranch %277 614e5c31af7Sopenharmony_ci %256 = OpLabel 615e5c31af7Sopenharmony_ci %262 = OpCompositeExtract %6 %213 2 616e5c31af7Sopenharmony_ci %263 = OpFAdd %6 %246 %262 617e5c31af7Sopenharmony_ci %264 = OpFOrdGreaterThan %11 %244 %263 618e5c31af7Sopenharmony_ci OpSelectionMerge %266 None 619e5c31af7Sopenharmony_ci OpBranchConditional %264 %265 %266 620e5c31af7Sopenharmony_ci %265 = OpLabel 621e5c31af7Sopenharmony_ci OpBranch %277 622e5c31af7Sopenharmony_ci %266 = OpLabel 623e5c31af7Sopenharmony_ci %272 = OpCompositeExtract %6 %213 3 624e5c31af7Sopenharmony_ci %273 = OpFAdd %6 %253 %272 625e5c31af7Sopenharmony_ci %274 = OpFOrdGreaterThan %11 %251 %273 626e5c31af7Sopenharmony_ci OpSelectionMerge %276 None 627e5c31af7Sopenharmony_ci OpBranchConditional %274 %275 %276 628e5c31af7Sopenharmony_ci %275 = OpLabel 629e5c31af7Sopenharmony_ci OpBranch %277 630e5c31af7Sopenharmony_ci %276 = OpLabel 631e5c31af7Sopenharmony_ci OpBranch %277 632e5c31af7Sopenharmony_ci %277 = OpLabel 633e5c31af7Sopenharmony_ci %282 = OpPhi %11 %31 %248 %31 %255 %31 %265 %31 %275 %66 %276 634e5c31af7Sopenharmony_ci OpSelectionMerge %232 None 635e5c31af7Sopenharmony_ci OpBranchConditional %282 %215 %232 636e5c31af7Sopenharmony_ci %215 = OpLabel 637e5c31af7Sopenharmony_ci OpStore %200 %103 638e5c31af7Sopenharmony_ci %217 = OpAccessChain %23 %200 %279 %22 639e5c31af7Sopenharmony_ci %218 = OpLoad %6 %217 640e5c31af7Sopenharmony_ci %219 = OpConvertFToS %73 %218 641e5c31af7Sopenharmony_ci OpStore %201 %103 642e5c31af7Sopenharmony_ci %221 = OpAccessChain %23 %201 %279 %33 643e5c31af7Sopenharmony_ci %222 = OpLoad %6 %221 644e5c31af7Sopenharmony_ci %223 = OpConvertFToS %73 %222 645e5c31af7Sopenharmony_ci %224 = OpIMul %73 %219 %223 646e5c31af7Sopenharmony_ci %226 = OpIMul %73 %279 %146 647e5c31af7Sopenharmony_ci %227 = OpIAdd %73 %224 %226 648e5c31af7Sopenharmony_ci %228 = OpIAdd %73 %227 %149 649e5c31af7Sopenharmony_ci %229 = OpSMod %73 %228 %151 650e5c31af7Sopenharmony_ci OpStore %202 %133 651e5c31af7Sopenharmony_ci %230 = OpAccessChain %10 %202 %229 652e5c31af7Sopenharmony_ci %231 = OpLoad %9 %230 653e5c31af7Sopenharmony_ci OpBranch %232 654e5c31af7Sopenharmony_ci %232 = OpLabel 655e5c31af7Sopenharmony_ci %285 = OpPhi %9 %280 %277 %231 %215 656e5c31af7Sopenharmony_ci OpBranch %233 657e5c31af7Sopenharmony_ci %233 = OpLabel 658e5c31af7Sopenharmony_ci %235 = OpIAdd %73 %279 %158 659e5c31af7Sopenharmony_ci OpBranch %205 660e5c31af7Sopenharmony_ci %236 = OpLabel 661e5c31af7Sopenharmony_ci OpStore %180 %280 662e5c31af7Sopenharmony_ci OpReturn 663e5c31af7Sopenharmony_ci OpFunctionEnd 664e5c31af7Sopenharmony_ciEND 665e5c31af7Sopenharmony_ci 666e5c31af7Sopenharmony_ci# uniforms for variant_2 667e5c31af7Sopenharmony_ci 668e5c31af7Sopenharmony_ci# resolution 669e5c31af7Sopenharmony_ciBUFFER variant_2_resolution DATA_TYPE vec2<float> STD140 DATA 670e5c31af7Sopenharmony_ci 256.0 256.0 671e5c31af7Sopenharmony_ciEND 672e5c31af7Sopenharmony_ci 673e5c31af7Sopenharmony_ciBUFFER variant_2_framebuffer FORMAT B8G8R8A8_UNORM 674e5c31af7Sopenharmony_ci 675e5c31af7Sopenharmony_ciPIPELINE graphics variant_2_pipeline 676e5c31af7Sopenharmony_ci ATTACH variant_2_vertex_shader 677e5c31af7Sopenharmony_ci ATTACH variant_2_fragment_shader 678e5c31af7Sopenharmony_ci FRAMEBUFFER_SIZE 256 256 679e5c31af7Sopenharmony_ci BIND BUFFER variant_2_framebuffer AS color LOCATION 0 680e5c31af7Sopenharmony_ci BIND BUFFER variant_2_resolution AS uniform DESCRIPTOR_SET 0 BINDING 0 681e5c31af7Sopenharmony_ciEND 682e5c31af7Sopenharmony_ciCLEAR_COLOR variant_2_pipeline 0 0 0 255 683e5c31af7Sopenharmony_ci 684e5c31af7Sopenharmony_ciCLEAR variant_2_pipeline 685e5c31af7Sopenharmony_ciRUN variant_2_pipeline DRAW_RECT POS 0 0 SIZE 256 256 686e5c31af7Sopenharmony_ci 687e5c31af7Sopenharmony_ciEXPECT reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_framebuffer TOLERANCE 0.005 688e5c31af7Sopenharmony_ciEXPECT reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_2_framebuffer TOLERANCE 0.005 689