From: Paul Thomson Date: Thu, 16 Jan 2020 16:12:53 +0000 (+0000) Subject: dEQP-VK.graphicsfuzz.switch-loop-switch-if X-Git-Tag: upstream/1.3.5~1470 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=007cc29db858dc57d6631e4b859b35dc54c38818;p=platform%2Fupstream%2FVK-GL-CTS.git dEQP-VK.graphicsfuzz.switch-loop-switch-if Components: Vulkan New Tests: dEQP-VK.graphicsfuzz.switch-loop-switch-if Change-Id: I8d7a1c11802bf6be62e641681eef143f597155a1 --- diff --git a/android/cts/master/vk-master-2020-03-01.txt b/android/cts/master/vk-master-2020-03-01.txt index 6b79f5b..cb74e81 100644 --- a/android/cts/master/vk-master-2020-03-01.txt +++ b/android/cts/master/vk-master-2020-03-01.txt @@ -187792,6 +187792,7 @@ dEQP-VK.graphicsfuzz.struct-used-as-temporary dEQP-VK.graphicsfuzz.switch-case-with-undefined-expression dEQP-VK.graphicsfuzz.switch-if-discard dEQP-VK.graphicsfuzz.switch-inside-while-always-return +dEQP-VK.graphicsfuzz.switch-loop-switch-if dEQP-VK.graphicsfuzz.switch-with-empty-if-false dEQP-VK.graphicsfuzz.swizzle-struct-init-min dEQP-VK.graphicsfuzz.transpose-rectangular-matrix diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index fa78ca6..063129c 100644 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -584206,6 +584206,7 @@ dEQP-VK.graphicsfuzz.struct-used-as-temporary dEQP-VK.graphicsfuzz.switch-case-with-undefined-expression dEQP-VK.graphicsfuzz.switch-if-discard dEQP-VK.graphicsfuzz.switch-inside-while-always-return +dEQP-VK.graphicsfuzz.switch-loop-switch-if dEQP-VK.graphicsfuzz.switch-with-empty-if-false dEQP-VK.graphicsfuzz.swizzle-struct-init-min dEQP-VK.graphicsfuzz.transpose-rectangular-matrix diff --git a/external/vulkancts/data/vulkan/amber/graphicsfuzz/index.txt b/external/vulkancts/data/vulkan/amber/graphicsfuzz/index.txt index 8f809e6..57465bb 100644 --- a/external/vulkancts/data/vulkan/amber/graphicsfuzz/index.txt +++ b/external/vulkancts/data/vulkan/amber/graphicsfuzz/index.txt @@ -156,6 +156,7 @@ { "switch-case-with-undefined-expression.amber", "switch-case-with-undefined-expression","A fragment shader with undefined expression" }, { "switch-if-discard.amber", "switch-if-discard", "A fragment shader with a switch, if, and discard" }, { "switch-inside-while-always-return.amber", "switch-inside-while-always-return", "A fragment shader with a switch inside while always return" }, +{ "switch-loop-switch-if.amber", "switch-loop-switch-if", "A nested switch-loop-switch" }, { "switch-with-empty-if-false.amber", "switch-with-empty-if-false", "A fragment shader with always false if in switch statement" }, { "swizzle-struct-init-min.amber", "swizzle-struct-init-min", "A fragment shader that uses vector swizzles, struct initializers, and min" }, { "transpose-rectangular-matrix.amber", "transpose-rectangular-matrix", "Fragment shader that uses 'transpose'" }, diff --git a/external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-loop-switch-if.amber b/external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-loop-switch-if.amber new file mode 100644 index 0000000..589b004 --- /dev/null +++ b/external/vulkancts/data/vulkan/amber/graphicsfuzz/switch-loop-switch-if.amber @@ -0,0 +1,241 @@ +#!amber + +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# A test for a bug found by GraphicsFuzz. + +# Short description: A nested switch-loop-switch + +# The test passes because the shader always writes red. + +SHADER vertex variant_vertex_shader PASSTHROUGH + +# variant_fragment_shader is derived from the following GLSL: +# #version 310 es +# precision highp float; +# +# layout(set = 0, binding = 0) uniform buf0 +# { +# vec2 injectionSwitch; +# }; +# +# layout(location = 0) out vec4 _GLF_color; +# +# void main() +# { +# int i = int(injectionSwitch.x); // 0 +# +# switch (i) // 0 +# { +# case 0: +# do +# { +# ++i; +# switch (i) // 1 +# { +# case 1: +# continue; // Exit loop. +# case 2: +# i += 5; +# break; +# default: +# i += 7; +# } +# } while (i > 200); // Always false. +# +# // Always false. +# if (i > 100) +# { +# i -= 2; +# break; +# } +# +# default: +# // i == 1. +# i -= 3; +# // i == -2. +# } +# +# // Always true. +# if (i == -2) +# _GLF_color = vec4(1.0, 0.0, 0.0, 1.0); // Red. +# else +# _GLF_color = vec4(0.0, 0.0, 0.0, 1.0); +# } +SHADER fragment variant_fragment_shader SPIRV-ASM +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 8 +; Bound: 76 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %4 "main" %70 + OpExecutionMode %4 OriginUpperLeft + OpSource ESSL 310 + OpName %4 "main" + OpName %8 "i" + OpName %11 "buf0" + OpMemberName %11 0 "injectionSwitch" + OpName %13 "" + OpName %70 "_GLF_color" + OpDecorate %8 RelaxedPrecision + OpMemberDecorate %11 0 Offset 0 + OpDecorate %11 Block + OpDecorate %13 DescriptorSet 0 + OpDecorate %13 Binding 0 + OpDecorate %20 RelaxedPrecision + OpDecorate %21 RelaxedPrecision + OpDecorate %29 RelaxedPrecision + OpDecorate %31 RelaxedPrecision + OpDecorate %32 RelaxedPrecision + OpDecorate %39 RelaxedPrecision + OpDecorate %40 RelaxedPrecision + OpDecorate %43 RelaxedPrecision + OpDecorate %44 RelaxedPrecision + OpDecorate %46 RelaxedPrecision + OpDecorate %50 RelaxedPrecision + OpDecorate %56 RelaxedPrecision + OpDecorate %57 RelaxedPrecision + OpDecorate %60 RelaxedPrecision + OpDecorate %61 RelaxedPrecision + OpDecorate %63 RelaxedPrecision + OpDecorate %70 Location 0 + %2 = OpTypeVoid + %3 = OpTypeFunction %2 + %6 = OpTypeInt 32 1 + %7 = OpTypePointer Function %6 + %9 = OpTypeFloat 32 + %10 = OpTypeVector %9 2 + %11 = OpTypeStruct %10 + %12 = OpTypePointer Uniform %11 + %13 = OpVariable %12 Uniform + %14 = OpConstant %6 0 + %15 = OpTypeInt 32 0 + %16 = OpConstant %15 0 + %17 = OpTypePointer Uniform %9 + %30 = OpConstant %6 1 + %38 = OpConstant %6 5 + %42 = OpConstant %6 7 + %47 = OpConstant %6 200 + %48 = OpTypeBool + %51 = OpConstant %6 100 + %55 = OpConstant %6 2 + %59 = OpConstant %6 3 + %64 = OpConstant %6 -2 + %68 = OpTypeVector %9 4 + %69 = OpTypePointer Output %68 + %70 = OpVariable %69 Output + %71 = OpConstant %9 1 + %72 = OpConstant %9 0 + %73 = OpConstantComposite %68 %71 %72 %72 %71 + %75 = OpConstantComposite %68 %72 %72 %72 %71 + %4 = OpFunction %2 None %3 + %5 = OpLabel + %8 = OpVariable %7 Function + %18 = OpAccessChain %17 %13 %14 %16 + %19 = OpLoad %9 %18 + %20 = OpConvertFToS %6 %19 + OpStore %8 %20 + %21 = OpLoad %6 %8 + OpSelectionMerge %24 None + OpSwitch %21 %23 0 %22 + %23 = OpLabel + %60 = OpLoad %6 %8 + %61 = OpISub %6 %60 %59 + OpStore %8 %61 + OpBranch %24 + %22 = OpLabel + OpBranch %25 + %25 = OpLabel + OpLoopMerge %27 %28 None + OpBranch %26 + %26 = OpLabel + %29 = OpLoad %6 %8 + %31 = OpIAdd %6 %29 %30 + OpStore %8 %31 + %32 = OpLoad %6 %8 + OpSelectionMerge %36 None + OpSwitch %32 %35 1 %33 2 %34 + %35 = OpLabel + %43 = OpLoad %6 %8 + %44 = OpIAdd %6 %43 %42 + OpStore %8 %44 + OpBranch %36 + %33 = OpLabel + OpBranch %28 + %34 = OpLabel + %39 = OpLoad %6 %8 + %40 = OpIAdd %6 %39 %38 + OpStore %8 %40 + OpBranch %36 + %36 = OpLabel + OpBranch %28 + %28 = OpLabel + %46 = OpLoad %6 %8 + %49 = OpSGreaterThan %48 %46 %47 + OpBranchConditional %49 %25 %27 + %27 = OpLabel + %50 = OpLoad %6 %8 + %52 = OpSGreaterThan %48 %50 %51 + OpSelectionMerge %54 None + OpBranchConditional %52 %53 %54 + %53 = OpLabel + %56 = OpLoad %6 %8 + %57 = OpISub %6 %56 %55 + OpStore %8 %57 + OpBranch %24 + %54 = OpLabel + OpBranch %23 + %24 = OpLabel + %63 = OpLoad %6 %8 + %65 = OpIEqual %48 %63 %64 + OpSelectionMerge %67 None + OpBranchConditional %65 %66 %74 + %66 = OpLabel + OpStore %70 %73 + OpBranch %67 + %74 = OpLabel + OpStore %70 %75 + OpBranch %67 + %67 = OpLabel + OpReturn + OpFunctionEnd +END + +# uniforms for variant + +# injectionSwitch +BUFFER variant_injectionSwitch DATA_TYPE vec2 DATA + 0.0 1.0 +END + +BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM + +PIPELINE graphics variant_pipeline + ATTACH variant_vertex_shader + ATTACH variant_fragment_shader + FRAMEBUFFER_SIZE 256 256 + BIND BUFFER variant_framebuffer AS color LOCATION 0 + BIND BUFFER variant_injectionSwitch AS uniform DESCRIPTOR_SET 0 BINDING 0 +END +CLEAR_COLOR variant_pipeline 0 0 0 255 + +CLEAR variant_pipeline +RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256 + +EXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255 diff --git a/external/vulkancts/mustpass/master/vk-default-no-waivers.txt b/external/vulkancts/mustpass/master/vk-default-no-waivers.txt index 4ce7230..1212d7d 100644 --- a/external/vulkancts/mustpass/master/vk-default-no-waivers.txt +++ b/external/vulkancts/mustpass/master/vk-default-no-waivers.txt @@ -586473,6 +586473,7 @@ dEQP-VK.graphicsfuzz.struct-used-as-temporary dEQP-VK.graphicsfuzz.switch-case-with-undefined-expression dEQP-VK.graphicsfuzz.switch-if-discard dEQP-VK.graphicsfuzz.switch-inside-while-always-return +dEQP-VK.graphicsfuzz.switch-loop-switch-if dEQP-VK.graphicsfuzz.switch-with-empty-if-false dEQP-VK.graphicsfuzz.swizzle-struct-init-min dEQP-VK.graphicsfuzz.transpose-rectangular-matrix diff --git a/external/vulkancts/mustpass/master/vk-default.txt b/external/vulkancts/mustpass/master/vk-default.txt index cf37b4e..1ed7185 100644 --- a/external/vulkancts/mustpass/master/vk-default.txt +++ b/external/vulkancts/mustpass/master/vk-default.txt @@ -586320,6 +586320,7 @@ dEQP-VK.graphicsfuzz.struct-used-as-temporary dEQP-VK.graphicsfuzz.switch-case-with-undefined-expression dEQP-VK.graphicsfuzz.switch-if-discard dEQP-VK.graphicsfuzz.switch-inside-while-always-return +dEQP-VK.graphicsfuzz.switch-loop-switch-if dEQP-VK.graphicsfuzz.switch-with-empty-if-false dEQP-VK.graphicsfuzz.swizzle-struct-init-min dEQP-VK.graphicsfuzz.transpose-rectangular-matrix