3 # Copyright 2019 Google LLC
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
9 # http://www.apache.org/licenses/LICENSE-2.0
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.
17 # A test for a bug found by GraphicsFuzz; reduced by spirv-fuzz and by hand.
18 # A fragment shader with two nested loops. All loop conditions are false.
19 # We check that all pixels are red. The test passes because the final statement
20 # writes red to _GLF_color.
22 SHADER vertex variant_vertex_shader PASSTHROUGH
24 SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
27 ; Generator: Khronos SPIR-V Tools Assembler; 0
31 %1 = OpExtInstImport "GLSL.std.450"
32 OpMemoryModel Logical GLSL450
33 OpEntryPoint Fragment %2 "main" %3
34 OpExecutionMode %2 OriginUpperLeft
37 OpName %3 "_GLF_color"
38 OpDecorate %3 Location 0
40 %5 = OpTypeFunction %4
44 %9 = OpTypeVector %6 4
45 %10 = OpConstantComposite %9 %7 %8 %8 %7
46 %11 = OpTypePointer Output %9
47 %3 = OpVariable %11 Output
49 %13 = OpConstantTrue %12
50 %14 = OpConstantFalse %12
51 %2 = OpFunction %4 None %5
55 OpLoopMerge %17 %18 None
56 OpBranchConditional %14 %19 %17
58 OpLoopMerge %20 %21 None
59 OpBranchConditional %14 %20 %20
73 BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
75 PIPELINE graphics variant_pipeline
76 ATTACH variant_vertex_shader
77 ATTACH variant_fragment_shader
78 FRAMEBUFFER_SIZE 256 256
79 BIND BUFFER variant_framebuffer AS color LOCATION 0
81 CLEAR_COLOR variant_pipeline 0 0 0 255
83 CLEAR variant_pipeline
84 RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256
86 EXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255