Fix missing dependency on sparse binds
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / data / vulkan / amber / graphicsfuzz / cov-fold-logical-or-constant.amber
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
18 # A test for a coverage-gap found by GraphicsFuzz.
19
20 # Short description: A fragment shader that covers a specific instruction folding path.
21
22 # The test passes because shader always writes red.
23
24 SHADER vertex variant_vertex_shader PASSTHROUGH
25
26 # variant_fragment_shader is derived from the following GLSL:
27 # #version 310 es
28 # precision highp float;
29 #
30 # layout(location = 0) out vec4 _GLF_color;
31 #
32 # void main()
33 # {
34 #     // If condition is always true.
35 #     if((gl_FragCoord.x < 0.0) || true)
36 #         _GLF_color = vec4(1, 0, 0, 1);
37 #     else
38 #         _GLF_color = vec4(0);
39 # }
40 SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
41 ; SPIR-V
42 ; Version: 1.0
43 ; Generator: Khronos Glslang Reference Front End; 8
44 ; Bound: 28
45 ; Schema: 0
46                OpCapability Shader
47           %1 = OpExtInstImport "GLSL.std.450"
48                OpMemoryModel Logical GLSL450
49                OpEntryPoint Fragment %4 "main" %9 %23
50                OpExecutionMode %4 OriginUpperLeft
51                OpSource ESSL 310
52                OpName %4 "main"
53                OpName %9 "gl_FragCoord"
54                OpName %23 "_GLF_color"
55                OpDecorate %9 BuiltIn FragCoord
56                OpDecorate %23 Location 0
57           %2 = OpTypeVoid
58           %3 = OpTypeFunction %2
59           %6 = OpTypeFloat 32
60           %7 = OpTypeVector %6 4
61           %8 = OpTypePointer Input %7
62           %9 = OpVariable %8 Input
63          %10 = OpTypeInt 32 0
64          %11 = OpConstant %10 0
65          %12 = OpTypePointer Input %6
66          %15 = OpConstant %6 0
67          %16 = OpTypeBool
68          %18 = OpConstantTrue %16
69          %22 = OpTypePointer Output %7
70          %23 = OpVariable %22 Output
71          %24 = OpConstant %6 1
72          %25 = OpConstantComposite %7 %24 %15 %15 %24
73          %27 = OpConstantComposite %7 %15 %15 %15 %15
74           %4 = OpFunction %2 None %3
75           %5 = OpLabel
76          %13 = OpAccessChain %12 %9 %11
77          %14 = OpLoad %6 %13
78          %17 = OpFOrdLessThan %16 %14 %15
79          %19 = OpLogicalOr %16 %17 %18
80                OpSelectionMerge %21 None
81                OpBranchConditional %19 %20 %26
82          %20 = OpLabel
83                OpStore %23 %25
84                OpBranch %21
85          %26 = OpLabel
86                OpStore %23 %27
87                OpBranch %21
88          %21 = OpLabel
89                OpReturn
90                OpFunctionEnd
91 END
92
93
94 BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM
95
96 PIPELINE graphics variant_pipeline
97   ATTACH variant_vertex_shader
98   ATTACH variant_fragment_shader
99   FRAMEBUFFER_SIZE 256 256
100   BIND BUFFER variant_framebuffer AS color LOCATION 0
101 END
102 CLEAR_COLOR variant_pipeline 0 0 0 255
103
104 CLEAR variant_pipeline
105 RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256
106
107 EXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255