1#!amber 2 3# Copyright 2020 The Amber Authors. 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# https://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17# AmberScript generated by GraphicsFuzz 18 19SHADER vertex gfz_vert PASSTHROUGH 20 21SHADER fragment gfz_frag SPIRV-ASM 22; SPIR-V 23; Version: 1.0 24; Generator: Khronos Glslang Reference Front End; 7 25; Bound: 417 26; Schema: 0 27 OpCapability Shader 28 %1 = OpExtInstImport "GLSL.std.450" 29 OpMemoryModel Logical GLSL450 30 OpEntryPoint Fragment %4 "main" %370 %405 31 OpExecutionMode %4 OriginUpperLeft 32 OpSource ESSL 310 33 OpName %4 "main" 34 OpName %9 "resolution" 35 OpName %16 "sums" 36 OpName %23 "c" 37 OpName %33 "r" 38 OpName %42 "buf0" 39 OpMemberName %42 0 "m22" 40 OpName %44 "" 41 OpName %65 "c" 42 OpName %73 "r" 43 OpName %84 "buf1" 44 OpMemberName %84 0 "m23" 45 OpName %86 "" 46 OpName %104 "c" 47 OpName %112 "r" 48 OpName %123 "buf2" 49 OpMemberName %123 0 "m24" 50 OpName %125 "" 51 OpName %143 "c" 52 OpName %151 "r" 53 OpName %160 "buf3" 54 OpMemberName %160 0 "m32" 55 OpName %162 "" 56 OpName %180 "c" 57 OpName %188 "r" 58 OpName %197 "buf4" 59 OpMemberName %197 0 "m33" 60 OpName %199 "" 61 OpName %218 "c" 62 OpName %226 "r" 63 OpName %235 "buf5" 64 OpMemberName %235 0 "m34" 65 OpName %237 "" 66 OpName %256 "c" 67 OpName %264 "r" 68 OpName %273 "buf6" 69 OpMemberName %273 0 "m42" 70 OpName %275 "" 71 OpName %294 "c" 72 OpName %302 "r" 73 OpName %311 "buf7" 74 OpMemberName %311 0 "m43" 75 OpName %313 "" 76 OpName %332 "c" 77 OpName %340 "r" 78 OpName %349 "buf8" 79 OpMemberName %349 0 "m44" 80 OpName %351 "" 81 OpName %368 "region_x" 82 OpName %370 "gl_FragCoord" 83 OpName %382 "region_y" 84 OpName %391 "overall_region" 85 OpName %405 "_GLF_color" 86 OpDecorate %23 RelaxedPrecision 87 OpDecorate %29 RelaxedPrecision 88 OpDecorate %33 RelaxedPrecision 89 OpDecorate %39 RelaxedPrecision 90 OpMemberDecorate %42 0 ColMajor 91 OpMemberDecorate %42 0 Offset 0 92 OpMemberDecorate %42 0 MatrixStride 16 93 OpDecorate %42 Block 94 OpDecorate %44 DescriptorSet 0 95 OpDecorate %44 Binding 0 96 OpDecorate %45 RelaxedPrecision 97 OpDecorate %46 RelaxedPrecision 98 OpDecorate %54 RelaxedPrecision 99 OpDecorate %56 RelaxedPrecision 100 OpDecorate %57 RelaxedPrecision 101 OpDecorate %58 RelaxedPrecision 102 OpDecorate %65 RelaxedPrecision 103 OpDecorate %71 RelaxedPrecision 104 OpDecorate %73 RelaxedPrecision 105 OpDecorate %79 RelaxedPrecision 106 OpMemberDecorate %84 0 ColMajor 107 OpMemberDecorate %84 0 Offset 0 108 OpMemberDecorate %84 0 MatrixStride 16 109 OpDecorate %84 Block 110 OpDecorate %86 DescriptorSet 0 111 OpDecorate %86 Binding 1 112 OpDecorate %87 RelaxedPrecision 113 OpDecorate %88 RelaxedPrecision 114 OpDecorate %95 RelaxedPrecision 115 OpDecorate %96 RelaxedPrecision 116 OpDecorate %97 RelaxedPrecision 117 OpDecorate %98 RelaxedPrecision 118 OpDecorate %104 RelaxedPrecision 119 OpDecorate %110 RelaxedPrecision 120 OpDecorate %112 RelaxedPrecision 121 OpDecorate %118 RelaxedPrecision 122 OpMemberDecorate %123 0 ColMajor 123 OpMemberDecorate %123 0 Offset 0 124 OpMemberDecorate %123 0 MatrixStride 16 125 OpDecorate %123 Block 126 OpDecorate %125 DescriptorSet 0 127 OpDecorate %125 Binding 2 128 OpDecorate %126 RelaxedPrecision 129 OpDecorate %127 RelaxedPrecision 130 OpDecorate %134 RelaxedPrecision 131 OpDecorate %135 RelaxedPrecision 132 OpDecorate %136 RelaxedPrecision 133 OpDecorate %137 RelaxedPrecision 134 OpDecorate %143 RelaxedPrecision 135 OpDecorate %149 RelaxedPrecision 136 OpDecorate %151 RelaxedPrecision 137 OpDecorate %157 RelaxedPrecision 138 OpMemberDecorate %160 0 ColMajor 139 OpMemberDecorate %160 0 Offset 0 140 OpMemberDecorate %160 0 MatrixStride 16 141 OpDecorate %160 Block 142 OpDecorate %162 DescriptorSet 0 143 OpDecorate %162 Binding 3 144 OpDecorate %163 RelaxedPrecision 145 OpDecorate %164 RelaxedPrecision 146 OpDecorate %171 RelaxedPrecision 147 OpDecorate %172 RelaxedPrecision 148 OpDecorate %173 RelaxedPrecision 149 OpDecorate %174 RelaxedPrecision 150 OpDecorate %180 RelaxedPrecision 151 OpDecorate %186 RelaxedPrecision 152 OpDecorate %188 RelaxedPrecision 153 OpDecorate %194 RelaxedPrecision 154 OpMemberDecorate %197 0 ColMajor 155 OpMemberDecorate %197 0 Offset 0 156 OpMemberDecorate %197 0 MatrixStride 16 157 OpDecorate %197 Block 158 OpDecorate %199 DescriptorSet 0 159 OpDecorate %199 Binding 4 160 OpDecorate %200 RelaxedPrecision 161 OpDecorate %201 RelaxedPrecision 162 OpDecorate %208 RelaxedPrecision 163 OpDecorate %209 RelaxedPrecision 164 OpDecorate %210 RelaxedPrecision 165 OpDecorate %211 RelaxedPrecision 166 OpDecorate %218 RelaxedPrecision 167 OpDecorate %224 RelaxedPrecision 168 OpDecorate %226 RelaxedPrecision 169 OpDecorate %232 RelaxedPrecision 170 OpMemberDecorate %235 0 ColMajor 171 OpMemberDecorate %235 0 Offset 0 172 OpMemberDecorate %235 0 MatrixStride 16 173 OpDecorate %235 Block 174 OpDecorate %237 DescriptorSet 0 175 OpDecorate %237 Binding 5 176 OpDecorate %238 RelaxedPrecision 177 OpDecorate %239 RelaxedPrecision 178 OpDecorate %246 RelaxedPrecision 179 OpDecorate %247 RelaxedPrecision 180 OpDecorate %248 RelaxedPrecision 181 OpDecorate %249 RelaxedPrecision 182 OpDecorate %256 RelaxedPrecision 183 OpDecorate %262 RelaxedPrecision 184 OpDecorate %264 RelaxedPrecision 185 OpDecorate %270 RelaxedPrecision 186 OpMemberDecorate %273 0 ColMajor 187 OpMemberDecorate %273 0 Offset 0 188 OpMemberDecorate %273 0 MatrixStride 16 189 OpDecorate %273 Block 190 OpDecorate %275 DescriptorSet 0 191 OpDecorate %275 Binding 6 192 OpDecorate %276 RelaxedPrecision 193 OpDecorate %277 RelaxedPrecision 194 OpDecorate %284 RelaxedPrecision 195 OpDecorate %285 RelaxedPrecision 196 OpDecorate %286 RelaxedPrecision 197 OpDecorate %287 RelaxedPrecision 198 OpDecorate %294 RelaxedPrecision 199 OpDecorate %300 RelaxedPrecision 200 OpDecorate %302 RelaxedPrecision 201 OpDecorate %308 RelaxedPrecision 202 OpMemberDecorate %311 0 ColMajor 203 OpMemberDecorate %311 0 Offset 0 204 OpMemberDecorate %311 0 MatrixStride 16 205 OpDecorate %311 Block 206 OpDecorate %313 DescriptorSet 0 207 OpDecorate %313 Binding 7 208 OpDecorate %314 RelaxedPrecision 209 OpDecorate %315 RelaxedPrecision 210 OpDecorate %322 RelaxedPrecision 211 OpDecorate %323 RelaxedPrecision 212 OpDecorate %324 RelaxedPrecision 213 OpDecorate %325 RelaxedPrecision 214 OpDecorate %332 RelaxedPrecision 215 OpDecorate %338 RelaxedPrecision 216 OpDecorate %340 RelaxedPrecision 217 OpDecorate %346 RelaxedPrecision 218 OpMemberDecorate %349 0 ColMajor 219 OpMemberDecorate %349 0 Offset 0 220 OpMemberDecorate %349 0 MatrixStride 16 221 OpDecorate %349 Block 222 OpDecorate %351 DescriptorSet 0 223 OpDecorate %351 Binding 8 224 OpDecorate %352 RelaxedPrecision 225 OpDecorate %353 RelaxedPrecision 226 OpDecorate %360 RelaxedPrecision 227 OpDecorate %361 RelaxedPrecision 228 OpDecorate %362 RelaxedPrecision 229 OpDecorate %363 RelaxedPrecision 230 OpDecorate %368 RelaxedPrecision 231 OpDecorate %370 BuiltIn FragCoord 232 OpDecorate %381 RelaxedPrecision 233 OpDecorate %382 RelaxedPrecision 234 OpDecorate %390 RelaxedPrecision 235 OpDecorate %391 RelaxedPrecision 236 OpDecorate %392 RelaxedPrecision 237 OpDecorate %393 RelaxedPrecision 238 OpDecorate %394 RelaxedPrecision 239 OpDecorate %395 RelaxedPrecision 240 OpDecorate %396 RelaxedPrecision 241 OpDecorate %398 RelaxedPrecision 242 OpDecorate %405 Location 0 243 OpDecorate %406 RelaxedPrecision 244 %2 = OpTypeVoid 245 %3 = OpTypeFunction %2 246 %6 = OpTypeFloat 32 247 %7 = OpTypeVector %6 2 248 %8 = OpTypePointer Private %7 249 %9 = OpVariable %8 Private 250 %10 = OpConstant %6 256 251 %11 = OpConstantComposite %7 %10 %10 252 %12 = OpTypeInt 32 0 253 %13 = OpConstant %12 9 254 %14 = OpTypeArray %6 %13 255 %15 = OpTypePointer Function %14 256 %17 = OpTypeInt 32 1 257 %18 = OpConstant %17 0 258 %19 = OpConstant %6 0 259 %20 = OpTypePointer Function %6 260 %22 = OpTypePointer Function %17 261 %30 = OpConstant %17 2 262 %31 = OpTypeBool 263 %41 = OpTypeMatrix %7 2 264 %42 = OpTypeStruct %41 265 %43 = OpTypePointer Uniform %42 266 %44 = OpVariable %43 Uniform 267 %47 = OpTypePointer Uniform %6 268 %55 = OpConstant %17 1 269 %59 = OpConstant %6 16 270 %80 = OpConstant %17 3 271 %82 = OpTypeVector %6 3 272 %83 = OpTypeMatrix %82 2 273 %84 = OpTypeStruct %83 274 %85 = OpTypePointer Uniform %84 275 %86 = OpVariable %85 Uniform 276 %119 = OpConstant %17 4 277 %121 = OpTypeVector %6 4 278 %122 = OpTypeMatrix %121 2 279 %123 = OpTypeStruct %122 280 %124 = OpTypePointer Uniform %123 281 %125 = OpVariable %124 Uniform 282 %159 = OpTypeMatrix %7 3 283 %160 = OpTypeStruct %159 284 %161 = OpTypePointer Uniform %160 285 %162 = OpVariable %161 Uniform 286 %196 = OpTypeMatrix %82 3 287 %197 = OpTypeStruct %196 288 %198 = OpTypePointer Uniform %197 289 %199 = OpVariable %198 Uniform 290 %216 = OpConstant %17 5 291 %234 = OpTypeMatrix %121 3 292 %235 = OpTypeStruct %234 293 %236 = OpTypePointer Uniform %235 294 %237 = OpVariable %236 Uniform 295 %254 = OpConstant %17 6 296 %272 = OpTypeMatrix %7 4 297 %273 = OpTypeStruct %272 298 %274 = OpTypePointer Uniform %273 299 %275 = OpVariable %274 Uniform 300 %292 = OpConstant %17 7 301 %310 = OpTypeMatrix %82 4 302 %311 = OpTypeStruct %310 303 %312 = OpTypePointer Uniform %311 304 %313 = OpVariable %312 Uniform 305 %330 = OpConstant %17 8 306 %348 = OpTypeMatrix %121 4 307 %349 = OpTypeStruct %348 308 %350 = OpTypePointer Uniform %349 309 %351 = OpVariable %350 Uniform 310 %369 = OpTypePointer Input %121 311 %370 = OpVariable %369 Input 312 %371 = OpConstant %12 0 313 %372 = OpTypePointer Input %6 314 %375 = OpTypePointer Private %6 315 %378 = OpConstant %6 3 316 %383 = OpConstant %12 1 317 %399 = OpConstant %17 9 318 %404 = OpTypePointer Output %121 319 %405 = OpVariable %404 Output 320 %410 = OpConstant %6 1 321 %416 = OpConstantComposite %121 %19 %19 %19 %410 322 %4 = OpFunction %2 None %3 323 %5 = OpLabel 324 %16 = OpVariable %15 Function 325 %23 = OpVariable %22 Function 326 %33 = OpVariable %22 Function 327 %65 = OpVariable %22 Function 328 %73 = OpVariable %22 Function 329 %104 = OpVariable %22 Function 330 %112 = OpVariable %22 Function 331 %143 = OpVariable %22 Function 332 %151 = OpVariable %22 Function 333 %180 = OpVariable %22 Function 334 %188 = OpVariable %22 Function 335 %218 = OpVariable %22 Function 336 %226 = OpVariable %22 Function 337 %256 = OpVariable %22 Function 338 %264 = OpVariable %22 Function 339 %294 = OpVariable %22 Function 340 %302 = OpVariable %22 Function 341 %332 = OpVariable %22 Function 342 %340 = OpVariable %22 Function 343 %368 = OpVariable %22 Function 344 %382 = OpVariable %22 Function 345 %391 = OpVariable %22 Function 346 OpStore %9 %11 347 %21 = OpAccessChain %20 %16 %18 348 OpStore %21 %19 349 OpStore %23 %18 350 OpBranch %24 351 %24 = OpLabel 352 OpLoopMerge %26 %27 None 353 OpBranch %28 354 %28 = OpLabel 355 %29 = OpLoad %17 %23 356 %32 = OpSLessThan %31 %29 %30 357 OpBranchConditional %32 %25 %26 358 %25 = OpLabel 359 OpStore %33 %18 360 OpBranch %34 361 %34 = OpLabel 362 OpLoopMerge %36 %37 None 363 OpBranch %38 364 %38 = OpLabel 365 %39 = OpLoad %17 %33 366 %40 = OpSLessThan %31 %39 %30 367 OpBranchConditional %40 %35 %36 368 %35 = OpLabel 369 %45 = OpLoad %17 %23 370 %46 = OpLoad %17 %33 371 %48 = OpAccessChain %47 %44 %18 %45 %46 372 %49 = OpLoad %6 %48 373 %50 = OpAccessChain %20 %16 %18 374 %51 = OpLoad %6 %50 375 %52 = OpFAdd %6 %51 %49 376 %53 = OpAccessChain %20 %16 %18 377 OpStore %53 %52 378 OpBranch %37 379 %37 = OpLabel 380 %54 = OpLoad %17 %33 381 %56 = OpIAdd %17 %54 %55 382 OpStore %33 %56 383 OpBranch %34 384 %36 = OpLabel 385 OpBranch %27 386 %27 = OpLabel 387 %57 = OpLoad %17 %23 388 %58 = OpIAdd %17 %57 %55 389 OpStore %23 %58 390 OpBranch %24 391 %26 = OpLabel 392 %60 = OpAccessChain %20 %16 %18 393 %61 = OpLoad %6 %60 394 %62 = OpFDiv %6 %61 %59 395 %63 = OpAccessChain %20 %16 %18 396 OpStore %63 %62 397 %64 = OpAccessChain %20 %16 %55 398 OpStore %64 %19 399 OpStore %65 %18 400 OpBranch %66 401 %66 = OpLabel 402 OpLoopMerge %68 %69 None 403 OpBranch %70 404 %70 = OpLabel 405 %71 = OpLoad %17 %65 406 %72 = OpSLessThan %31 %71 %30 407 OpBranchConditional %72 %67 %68 408 %67 = OpLabel 409 OpStore %73 %18 410 OpBranch %74 411 %74 = OpLabel 412 OpLoopMerge %76 %77 None 413 OpBranch %78 414 %78 = OpLabel 415 %79 = OpLoad %17 %73 416 %81 = OpSLessThan %31 %79 %80 417 OpBranchConditional %81 %75 %76 418 %75 = OpLabel 419 %87 = OpLoad %17 %65 420 %88 = OpLoad %17 %73 421 %89 = OpAccessChain %47 %86 %18 %87 %88 422 %90 = OpLoad %6 %89 423 %91 = OpAccessChain %20 %16 %55 424 %92 = OpLoad %6 %91 425 %93 = OpFAdd %6 %92 %90 426 %94 = OpAccessChain %20 %16 %55 427 OpStore %94 %93 428 OpBranch %77 429 %77 = OpLabel 430 %95 = OpLoad %17 %73 431 %96 = OpIAdd %17 %95 %55 432 OpStore %73 %96 433 OpBranch %74 434 %76 = OpLabel 435 OpBranch %69 436 %69 = OpLabel 437 %97 = OpLoad %17 %65 438 %98 = OpIAdd %17 %97 %55 439 OpStore %65 %98 440 OpBranch %66 441 %68 = OpLabel 442 %99 = OpAccessChain %20 %16 %55 443 %100 = OpLoad %6 %99 444 %101 = OpFDiv %6 %100 %59 445 %102 = OpAccessChain %20 %16 %55 446 OpStore %102 %101 447 %103 = OpAccessChain %20 %16 %30 448 OpStore %103 %19 449 OpStore %104 %18 450 OpBranch %105 451 %105 = OpLabel 452 OpLoopMerge %107 %108 None 453 OpBranch %109 454 %109 = OpLabel 455 %110 = OpLoad %17 %104 456 %111 = OpSLessThan %31 %110 %30 457 OpBranchConditional %111 %106 %107 458 %106 = OpLabel 459 OpStore %112 %18 460 OpBranch %113 461 %113 = OpLabel 462 OpLoopMerge %115 %116 None 463 OpBranch %117 464 %117 = OpLabel 465 %118 = OpLoad %17 %112 466 %120 = OpSLessThan %31 %118 %119 467 OpBranchConditional %120 %114 %115 468 %114 = OpLabel 469 %126 = OpLoad %17 %104 470 %127 = OpLoad %17 %112 471 %128 = OpAccessChain %47 %125 %18 %126 %127 472 %129 = OpLoad %6 %128 473 %130 = OpAccessChain %20 %16 %30 474 %131 = OpLoad %6 %130 475 %132 = OpFAdd %6 %131 %129 476 %133 = OpAccessChain %20 %16 %30 477 OpStore %133 %132 478 OpBranch %116 479 %116 = OpLabel 480 %134 = OpLoad %17 %112 481 %135 = OpIAdd %17 %134 %55 482 OpStore %112 %135 483 OpBranch %113 484 %115 = OpLabel 485 OpBranch %108 486 %108 = OpLabel 487 %136 = OpLoad %17 %104 488 %137 = OpIAdd %17 %136 %55 489 OpStore %104 %137 490 OpBranch %105 491 %107 = OpLabel 492 %138 = OpAccessChain %20 %16 %30 493 %139 = OpLoad %6 %138 494 %140 = OpFDiv %6 %139 %59 495 %141 = OpAccessChain %20 %16 %30 496 OpStore %141 %140 497 %142 = OpAccessChain %20 %16 %80 498 OpStore %142 %19 499 OpStore %143 %18 500 OpBranch %144 501 %144 = OpLabel 502 OpLoopMerge %146 %147 None 503 OpBranch %148 504 %148 = OpLabel 505 %149 = OpLoad %17 %143 506 %150 = OpSLessThan %31 %149 %80 507 OpBranchConditional %150 %145 %146 508 %145 = OpLabel 509 OpStore %151 %18 510 OpBranch %152 511 %152 = OpLabel 512 OpLoopMerge %154 %155 None 513 OpBranch %156 514 %156 = OpLabel 515 %157 = OpLoad %17 %151 516 %158 = OpSLessThan %31 %157 %30 517 OpBranchConditional %158 %153 %154 518 %153 = OpLabel 519 %163 = OpLoad %17 %143 520 %164 = OpLoad %17 %151 521 %165 = OpAccessChain %47 %162 %18 %163 %164 522 %166 = OpLoad %6 %165 523 %167 = OpAccessChain %20 %16 %80 524 %168 = OpLoad %6 %167 525 %169 = OpFAdd %6 %168 %166 526 %170 = OpAccessChain %20 %16 %80 527 OpStore %170 %169 528 OpBranch %155 529 %155 = OpLabel 530 %171 = OpLoad %17 %151 531 %172 = OpIAdd %17 %171 %55 532 OpStore %151 %172 533 OpBranch %152 534 %154 = OpLabel 535 OpBranch %147 536 %147 = OpLabel 537 %173 = OpLoad %17 %143 538 %174 = OpIAdd %17 %173 %55 539 OpStore %143 %174 540 OpBranch %144 541 %146 = OpLabel 542 %175 = OpAccessChain %20 %16 %80 543 %176 = OpLoad %6 %175 544 %177 = OpFDiv %6 %176 %59 545 %178 = OpAccessChain %20 %16 %80 546 OpStore %178 %177 547 %179 = OpAccessChain %20 %16 %119 548 OpStore %179 %19 549 OpStore %180 %18 550 OpBranch %181 551 %181 = OpLabel 552 OpLoopMerge %183 %184 None 553 OpBranch %185 554 %185 = OpLabel 555 %186 = OpLoad %17 %180 556 %187 = OpSLessThan %31 %186 %80 557 OpBranchConditional %187 %182 %183 558 %182 = OpLabel 559 OpStore %188 %18 560 OpBranch %189 561 %189 = OpLabel 562 OpLoopMerge %191 %192 None 563 OpBranch %193 564 %193 = OpLabel 565 %194 = OpLoad %17 %188 566 %195 = OpSLessThan %31 %194 %80 567 OpBranchConditional %195 %190 %191 568 %190 = OpLabel 569 %200 = OpLoad %17 %180 570 %201 = OpLoad %17 %188 571 %202 = OpAccessChain %47 %199 %18 %200 %201 572 %203 = OpLoad %6 %202 573 %204 = OpAccessChain %20 %16 %119 574 %205 = OpLoad %6 %204 575 %206 = OpFAdd %6 %205 %203 576 %207 = OpAccessChain %20 %16 %119 577 OpStore %207 %206 578 OpBranch %192 579 %192 = OpLabel 580 %208 = OpLoad %17 %188 581 %209 = OpIAdd %17 %208 %55 582 OpStore %188 %209 583 OpBranch %189 584 %191 = OpLabel 585 OpBranch %184 586 %184 = OpLabel 587 %210 = OpLoad %17 %180 588 %211 = OpIAdd %17 %210 %55 589 OpStore %180 %211 590 OpBranch %181 591 %183 = OpLabel 592 %212 = OpAccessChain %20 %16 %119 593 %213 = OpLoad %6 %212 594 %214 = OpFDiv %6 %213 %59 595 %215 = OpAccessChain %20 %16 %119 596 OpStore %215 %214 597 %217 = OpAccessChain %20 %16 %216 598 OpStore %217 %19 599 OpStore %218 %18 600 OpBranch %219 601 %219 = OpLabel 602 OpLoopMerge %221 %222 None 603 OpBranch %223 604 %223 = OpLabel 605 %224 = OpLoad %17 %218 606 %225 = OpSLessThan %31 %224 %80 607 OpBranchConditional %225 %220 %221 608 %220 = OpLabel 609 OpStore %226 %18 610 OpBranch %227 611 %227 = OpLabel 612 OpLoopMerge %229 %230 None 613 OpBranch %231 614 %231 = OpLabel 615 %232 = OpLoad %17 %226 616 %233 = OpSLessThan %31 %232 %119 617 OpBranchConditional %233 %228 %229 618 %228 = OpLabel 619 %238 = OpLoad %17 %218 620 %239 = OpLoad %17 %226 621 %240 = OpAccessChain %47 %237 %18 %238 %239 622 %241 = OpLoad %6 %240 623 %242 = OpAccessChain %20 %16 %216 624 %243 = OpLoad %6 %242 625 %244 = OpFAdd %6 %243 %241 626 %245 = OpAccessChain %20 %16 %216 627 OpStore %245 %244 628 OpBranch %230 629 %230 = OpLabel 630 %246 = OpLoad %17 %226 631 %247 = OpIAdd %17 %246 %55 632 OpStore %226 %247 633 OpBranch %227 634 %229 = OpLabel 635 OpBranch %222 636 %222 = OpLabel 637 %248 = OpLoad %17 %218 638 %249 = OpIAdd %17 %248 %55 639 OpStore %218 %249 640 OpBranch %219 641 %221 = OpLabel 642 %250 = OpAccessChain %20 %16 %216 643 %251 = OpLoad %6 %250 644 %252 = OpFDiv %6 %251 %59 645 %253 = OpAccessChain %20 %16 %216 646 OpStore %253 %252 647 %255 = OpAccessChain %20 %16 %254 648 OpStore %255 %19 649 OpStore %256 %18 650 OpBranch %257 651 %257 = OpLabel 652 OpLoopMerge %259 %260 None 653 OpBranch %261 654 %261 = OpLabel 655 %262 = OpLoad %17 %256 656 %263 = OpSLessThan %31 %262 %119 657 OpBranchConditional %263 %258 %259 658 %258 = OpLabel 659 OpStore %264 %18 660 OpBranch %265 661 %265 = OpLabel 662 OpLoopMerge %267 %268 None 663 OpBranch %269 664 %269 = OpLabel 665 %270 = OpLoad %17 %264 666 %271 = OpSLessThan %31 %270 %30 667 OpBranchConditional %271 %266 %267 668 %266 = OpLabel 669 %276 = OpLoad %17 %256 670 %277 = OpLoad %17 %264 671 %278 = OpAccessChain %47 %275 %18 %276 %277 672 %279 = OpLoad %6 %278 673 %280 = OpAccessChain %20 %16 %254 674 %281 = OpLoad %6 %280 675 %282 = OpFAdd %6 %281 %279 676 %283 = OpAccessChain %20 %16 %254 677 OpStore %283 %282 678 OpBranch %268 679 %268 = OpLabel 680 %284 = OpLoad %17 %264 681 %285 = OpIAdd %17 %284 %55 682 OpStore %264 %285 683 OpBranch %265 684 %267 = OpLabel 685 OpBranch %260 686 %260 = OpLabel 687 %286 = OpLoad %17 %256 688 %287 = OpIAdd %17 %286 %55 689 OpStore %256 %287 690 OpBranch %257 691 %259 = OpLabel 692 %288 = OpAccessChain %20 %16 %254 693 %289 = OpLoad %6 %288 694 %290 = OpFDiv %6 %289 %59 695 %291 = OpAccessChain %20 %16 %254 696 OpStore %291 %290 697 %293 = OpAccessChain %20 %16 %292 698 OpStore %293 %19 699 OpStore %294 %18 700 OpBranch %295 701 %295 = OpLabel 702 OpLoopMerge %297 %298 None 703 OpBranch %299 704 %299 = OpLabel 705 %300 = OpLoad %17 %294 706 %301 = OpSLessThan %31 %300 %119 707 OpBranchConditional %301 %296 %297 708 %296 = OpLabel 709 OpStore %302 %18 710 OpBranch %303 711 %303 = OpLabel 712 OpLoopMerge %305 %306 None 713 OpBranch %307 714 %307 = OpLabel 715 %308 = OpLoad %17 %302 716 %309 = OpSLessThan %31 %308 %80 717 OpBranchConditional %309 %304 %305 718 %304 = OpLabel 719 %314 = OpLoad %17 %294 720 %315 = OpLoad %17 %302 721 %316 = OpAccessChain %47 %313 %18 %314 %315 722 %317 = OpLoad %6 %316 723 %318 = OpAccessChain %20 %16 %292 724 %319 = OpLoad %6 %318 725 %320 = OpFAdd %6 %319 %317 726 %321 = OpAccessChain %20 %16 %292 727 OpStore %321 %320 728 OpBranch %306 729 %306 = OpLabel 730 %322 = OpLoad %17 %302 731 %323 = OpIAdd %17 %322 %55 732 OpStore %302 %323 733 OpBranch %303 734 %305 = OpLabel 735 OpBranch %298 736 %298 = OpLabel 737 %324 = OpLoad %17 %294 738 %325 = OpIAdd %17 %324 %55 739 OpStore %294 %325 740 OpBranch %295 741 %297 = OpLabel 742 %326 = OpAccessChain %20 %16 %292 743 %327 = OpLoad %6 %326 744 %328 = OpFDiv %6 %327 %59 745 %329 = OpAccessChain %20 %16 %292 746 OpStore %329 %328 747 %331 = OpAccessChain %20 %16 %330 748 OpStore %331 %19 749 OpStore %332 %18 750 OpBranch %333 751 %333 = OpLabel 752 OpLoopMerge %335 %336 None 753 OpBranch %337 754 %337 = OpLabel 755 %338 = OpLoad %17 %332 756 %339 = OpSLessThan %31 %338 %119 757 OpBranchConditional %339 %334 %335 758 %334 = OpLabel 759 OpStore %340 %18 760 OpBranch %341 761 %341 = OpLabel 762 OpLoopMerge %343 %344 None 763 OpBranch %345 764 %345 = OpLabel 765 %346 = OpLoad %17 %340 766 %347 = OpSLessThan %31 %346 %119 767 OpBranchConditional %347 %342 %343 768 %342 = OpLabel 769 %352 = OpLoad %17 %332 770 %353 = OpLoad %17 %340 771 %354 = OpAccessChain %47 %351 %18 %352 %353 772 %355 = OpLoad %6 %354 773 %356 = OpAccessChain %20 %16 %330 774 %357 = OpLoad %6 %356 775 %358 = OpFAdd %6 %357 %355 776 %359 = OpAccessChain %20 %16 %330 777 OpStore %359 %358 778 OpBranch %344 779 %344 = OpLabel 780 %360 = OpLoad %17 %340 781 %361 = OpIAdd %17 %360 %55 782 OpStore %340 %361 783 OpBranch %341 784 %343 = OpLabel 785 OpBranch %336 786 %336 = OpLabel 787 %362 = OpLoad %17 %332 788 %363 = OpIAdd %17 %362 %55 789 OpStore %332 %363 790 OpBranch %333 791 %335 = OpLabel 792 %364 = OpAccessChain %20 %16 %330 793 %365 = OpLoad %6 %364 794 %366 = OpFDiv %6 %365 %59 795 %367 = OpAccessChain %20 %16 %330 796 OpStore %367 %366 797 %373 = OpAccessChain %372 %370 %371 798 %374 = OpLoad %6 %373 799 %376 = OpAccessChain %375 %9 %371 800 %377 = OpLoad %6 %376 801 %379 = OpFDiv %6 %377 %378 802 %380 = OpFDiv %6 %374 %379 803 %381 = OpConvertFToS %17 %380 804 OpStore %368 %381 805 %384 = OpAccessChain %372 %370 %383 806 %385 = OpLoad %6 %384 807 %386 = OpAccessChain %375 %9 %371 808 %387 = OpLoad %6 %386 809 %388 = OpFDiv %6 %387 %378 810 %389 = OpFDiv %6 %385 %388 811 %390 = OpConvertFToS %17 %389 812 OpStore %382 %390 813 %392 = OpLoad %17 %382 814 %393 = OpIMul %17 %392 %80 815 %394 = OpLoad %17 %368 816 %395 = OpIAdd %17 %393 %394 817 OpStore %391 %395 818 %396 = OpLoad %17 %391 819 %397 = OpSGreaterThan %31 %396 %18 820 %398 = OpLoad %17 %391 821 %400 = OpSLessThan %31 %398 %399 822 %401 = OpLogicalAnd %31 %397 %400 823 OpSelectionMerge %403 None 824 OpBranchConditional %401 %402 %415 825 %402 = OpLabel 826 %406 = OpLoad %17 %391 827 %407 = OpAccessChain %20 %16 %406 828 %408 = OpLoad %6 %407 829 %409 = OpCompositeConstruct %82 %408 %408 %408 830 %411 = OpCompositeExtract %6 %409 0 831 %412 = OpCompositeExtract %6 %409 1 832 %413 = OpCompositeExtract %6 %409 2 833 %414 = OpCompositeConstruct %121 %411 %412 %413 %410 834 OpStore %405 %414 835 OpBranch %403 836 %415 = OpLabel 837 OpStore %405 %416 838 OpBranch %403 839 %403 = OpLabel 840 OpReturn 841 OpFunctionEnd 842END 843 844BUFFER framebuffer FORMAT B8G8R8A8_UNORM 845 846BUFFER m22 DATA_TYPE mat2x2<float> STD140 DATA 847 1.0 1.0 848 1.0 1.0 849END 850BUFFER m23 DATA_TYPE mat2x3<float> STD140 DATA 851 1.0 1.0 1.0 852 1.0 1.0 1.0 853END 854BUFFER m24 DATA_TYPE mat2x4<float> STD140 DATA 855 1.0 1.0 1.0 1.0 856 1.0 1.0 1.0 1.0 857END 858BUFFER m32 DATA_TYPE mat3x2<float> STD140 DATA 859 1.0 1.0 860 1.0 1.0 861 1.0 1.0 862END 863BUFFER m33 DATA_TYPE mat3x3<float> STD140 DATA 864 1.0 1.0 1.0 865 1.0 1.0 1.0 866 1.0 1.0 1.0 867END 868BUFFER m34 DATA_TYPE mat3x4<float> STD140 DATA 869 1.0 1.0 1.0 1.0 870 1.0 1.0 1.0 1.0 871 1.0 1.0 1.0 1.0 872END 873BUFFER m42 DATA_TYPE mat4x2<float> STD140 DATA 874 1.0 1.0 875 1.0 1.0 876 1.0 1.0 877 1.0 1.0 878END 879BUFFER m43 DATA_TYPE mat4x3<float> STD140 DATA 880 1.0 1.0 1.0 881 1.0 1.0 1.0 882 1.0 1.0 1.0 883 1.0 1.0 1.0 884END 885BUFFER m44 DATA_TYPE mat4x4<float> STD140 DATA 886 1.0 1.0 1.0 1.0 887 1.0 1.0 1.0 1.0 888 1.0 1.0 1.0 1.0 889 1.0 1.0 1.0 1.0 890END 891 892PIPELINE graphics gfz_pipeline 893 ATTACH gfz_vert 894 ATTACH gfz_frag 895 FRAMEBUFFER_SIZE 256 256 896 BIND BUFFER framebuffer AS color LOCATION 0 897 BIND BUFFER m22 AS uniform DESCRIPTOR_SET 0 BINDING 0 898 BIND BUFFER m23 AS uniform DESCRIPTOR_SET 0 BINDING 1 899 BIND BUFFER m24 AS uniform DESCRIPTOR_SET 0 BINDING 2 900 BIND BUFFER m32 AS uniform DESCRIPTOR_SET 0 BINDING 3 901 BIND BUFFER m33 AS uniform DESCRIPTOR_SET 0 BINDING 4 902 BIND BUFFER m34 AS uniform DESCRIPTOR_SET 0 BINDING 5 903 BIND BUFFER m42 AS uniform DESCRIPTOR_SET 0 BINDING 6 904 BIND BUFFER m43 AS uniform DESCRIPTOR_SET 0 BINDING 7 905 BIND BUFFER m44 AS uniform DESCRIPTOR_SET 0 BINDING 8 906END 907 908CLEAR_COLOR gfz_pipeline 0 0 0 255 909CLEAR gfz_pipeline 910RUN gfz_pipeline DRAW_RECT POS 0 0 SIZE 256 256 911 912EXPECT framebuffer IDX 0 0 SIZE 85 85 EQ_RGBA 0 0 0 255 913EXPECT framebuffer IDX 85 0 SIZE 85 85 EQ_RGBA 96 96 96 255 TOLERANCE 1 1 1 0 914EXPECT framebuffer IDX 171 0 SIZE 85 85 EQ_RGBA 127 127 127 255 TOLERANCE 1 1 1 0 915 916EXPECT framebuffer IDX 0 85 SIZE 85 85 EQ_RGBA 96 96 96 255 TOLERANCE 1 1 1 0 917EXPECT framebuffer IDX 85 85 SIZE 85 85 EQ_RGBA 143 143 143 255 TOLERANCE 1 1 1 0 918EXPECT framebuffer IDX 171 85 SIZE 85 85 EQ_RGBA 191 191 191 255 TOLERANCE 1 1 1 0 919 920EXPECT framebuffer IDX 0 171 SIZE 85 85 EQ_RGBA 127 127 127 255 TOLERANCE 1 1 1 0 921EXPECT framebuffer IDX 85 171 SIZE 85 85 EQ_RGBA 191 191 191 255 TOLERANCE 1 1 1 0 922EXPECT framebuffer IDX 171 171 SIZE 85 85 EQ_RGBA 255 255 255 255 923