• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!amber
2
3# Copyright 2019 Google LLC
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#     http://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# 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.
21
22SHADER vertex variant_vertex_shader PASSTHROUGH
23
24SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
25; SPIR-V
26; Version: 1.0
27; Generator: Khronos SPIR-V Tools Assembler; 0
28; Bound: 22
29; Schema: 0
30               OpCapability Shader
31          %1 = OpExtInstImport "GLSL.std.450"
32               OpMemoryModel Logical GLSL450
33               OpEntryPoint Fragment %2 "main" %3
34               OpExecutionMode %2 OriginUpperLeft
35               OpSource ESSL 310
36               OpName %2 "main"
37               OpName %3 "_GLF_color"
38               OpDecorate %3 Location 0
39          %4 = OpTypeVoid
40          %5 = OpTypeFunction %4
41          %6 = OpTypeFloat 32
42          %7 = OpConstant %6 1
43          %8 = OpConstant %6 0
44          %9 = OpTypeVector %6 4
45         %10 = OpConstantComposite %9 %7 %8 %8 %7
46         %11 = OpTypePointer Output %9
47          %3 = OpVariable %11 Output
48         %12 = OpTypeBool
49         %13 = OpConstantTrue %12
50         %14 = OpConstantFalse %12
51          %2 = OpFunction %4 None %5
52         %15 = OpLabel
53               OpBranch %16
54         %16 = OpLabel
55               OpLoopMerge %17 %18 None
56               OpBranchConditional %14 %19 %17
57         %19 = OpLabel
58               OpLoopMerge %20 %21 None
59               OpBranchConditional %14 %20 %20
60         %21 = OpLabel
61               OpBranch %19
62         %20 = OpLabel
63               OpBranch %18
64         %18 = OpLabel
65               OpBranch %16
66         %17 = OpLabel
67               OpStore %3 %10
68               OpReturn
69               OpFunctionEnd
70END
71
72
73BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
74
75PIPELINE 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
80END
81CLEAR_COLOR variant_pipeline 0 0 0 255
82
83CLEAR variant_pipeline
84RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256
85
86EXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255
87