From: Venni Ihanakangas Date: Mon, 14 Oct 2019 12:29:31 +0000 (+0300) Subject: dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if X-Git-Tag: upstream/1.3.5~1751 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=094f829254aa73440cf1acc79a98a4294f67d3ad;p=platform%2Fupstream%2FVK-GL-CTS.git dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if Components: Vulkan New Tests: dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if Change-Id: I157cca21c7083238826c5bf7837386d657c1f29d --- diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index ab242c4..32d9ea7 100644 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -519543,6 +519543,7 @@ dEQP-VK.graphicsfuzz.while-inside-switch dEQP-VK.graphicsfuzz.write-before-break dEQP-VK.graphicsfuzz.write-red-after-search dEQP-VK.graphicsfuzz.write-red-in-loop-nest +dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if dEQP-VK.transform_feedback.simple.basic_1_256 dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256 dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256 diff --git a/external/vulkancts/data/vulkan/amber/graphicsfuzz/wrong-color-in-always-false-if.amber b/external/vulkancts/data/vulkan/amber/graphicsfuzz/wrong-color-in-always-false-if.amber new file mode 100644 index 0000000..302d42a --- /dev/null +++ b/external/vulkancts/data/vulkan/amber/graphicsfuzz/wrong-color-in-always-false-if.amber @@ -0,0 +1,151 @@ +#!amber + +# Copyright 2019 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 fragment shader with wrong color write in false if + +# The test passes because the shader always writes color red. +# Wrong color mix and write is inside a false if statement. + +SHADER vertex variant_vertex_shader PASSTHROUGH + +# variant_fragment_shader is derived from the following GLSL: +# #version 310 es +# precision highp float; +# +# precision highp int; +# +# layout(location = 0) out vec4 _GLF_color; +# +# layout(set = 0, binding = 0) uniform buf0 +# { +# vec2 injectionSwitch; +# }; +# +# void main() +# { +# float height; +# height = 256.0; +# +# if (injectionSwitch.y < 0.0) // always false +# { +# _GLF_color = mix(vec4(30.18, 8840.7235, 469.970, 18.24), vec4(9.9, 0.1, 1169.5387, 55.79), vec4(7612.9451, 797.011, height, 9.0)); +# } +# +# _GLF_color = vec4(1.0, 0.0, 0.0, 1.0); // Write color red +# } +SHADER fragment variant_fragment_shader SPIRV-ASM +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 7 +; Bound: 47 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %4 "main" %28 + OpExecutionMode %4 OriginUpperLeft + OpSource ESSL 310 + OpName %4 "main" + OpName %8 "height" + OpName %11 "buf0" + OpMemberName %11 0 "injectionSwitch" + OpName %13 "" + OpName %28 "_GLF_color" + OpMemberDecorate %11 0 Offset 0 + OpDecorate %11 Block + OpDecorate %13 DescriptorSet 0 + OpDecorate %13 Binding 0 + OpDecorate %28 Location 0 + %2 = OpTypeVoid + %3 = OpTypeFunction %2 + %6 = OpTypeFloat 32 + %7 = OpTypePointer Function %6 + %9 = OpConstant %6 256 + %10 = OpTypeVector %6 2 + %11 = OpTypeStruct %10 + %12 = OpTypePointer Uniform %11 + %13 = OpVariable %12 Uniform + %14 = OpTypeInt 32 1 + %15 = OpConstant %14 0 + %16 = OpTypeInt 32 0 + %17 = OpConstant %16 1 + %18 = OpTypePointer Uniform %6 + %21 = OpConstant %6 0 + %22 = OpTypeBool + %26 = OpTypeVector %6 4 + %27 = OpTypePointer Output %26 + %28 = OpVariable %27 Output + %29 = OpConstant %6 30.1800003 + %30 = OpConstant %6 8840.72363 + %31 = OpConstant %6 469.970001 + %32 = OpConstant %6 18.2399998 + %33 = OpConstantComposite %26 %29 %30 %31 %32 + %34 = OpConstant %6 9.89999962 + %35 = OpConstant %6 0.100000001 + %36 = OpConstant %6 1169.5387 + %37 = OpConstant %6 55.7900009 + %38 = OpConstantComposite %26 %34 %35 %36 %37 + %39 = OpConstant %6 7612.94531 + %40 = OpConstant %6 797.010986 + %42 = OpConstant %6 9 + %45 = OpConstant %6 1 + %46 = OpConstantComposite %26 %45 %21 %21 %45 + %4 = OpFunction %2 None %3 + %5 = OpLabel + %8 = OpVariable %7 Function + OpStore %8 %9 + %19 = OpAccessChain %18 %13 %15 %17 + %20 = OpLoad %6 %19 + %23 = OpFOrdLessThan %22 %20 %21 + OpSelectionMerge %25 None + OpBranchConditional %23 %24 %25 + %24 = OpLabel + %41 = OpLoad %6 %8 + %43 = OpCompositeConstruct %26 %39 %40 %41 %42 + %44 = OpExtInst %26 %1 FMix %33 %38 %43 + OpStore %28 %44 + OpBranch %25 + %25 = OpLabel + OpStore %28 %46 + 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/modules/vulkan/amber/vktAmberGraphicsFuzzTests.cpp b/external/vulkancts/modules/vulkan/amber/vktAmberGraphicsFuzzTests.cpp index c35b430..0ef93ee 100644 --- a/external/vulkancts/modules/vulkan/amber/vktAmberGraphicsFuzzTests.cpp +++ b/external/vulkancts/modules/vulkan/amber/vktAmberGraphicsFuzzTests.cpp @@ -92,6 +92,7 @@ void createAmberTests (tcu::TestCaseGroup* group) { "write-before-break.amber", "write-before-break", "Fragment shader that writes red before loop break" }, { "write-red-after-search.amber", "write-red-after-search", "A fragment shader performing a search computation, then writing red regardless" }, { "write-red-in-loop-nest.amber", "write-red-in-loop-nest", "A fragment shader that writes red in a nest of loops" }, + { "wrong-color-in-always-false-if.amber", "wrong-color-in-always-false-if", "A fragment shader with wrong color write in false if" }, }; for (size_t i = 0; i < sizeof tests / sizeof tests[0]; i++) diff --git a/external/vulkancts/mustpass/master/vk-default-no-waivers.txt b/external/vulkancts/mustpass/master/vk-default-no-waivers.txt index dc158ec..9413b06 100644 --- a/external/vulkancts/mustpass/master/vk-default-no-waivers.txt +++ b/external/vulkancts/mustpass/master/vk-default-no-waivers.txt @@ -521886,6 +521886,7 @@ dEQP-VK.graphicsfuzz.while-inside-switch dEQP-VK.graphicsfuzz.write-before-break dEQP-VK.graphicsfuzz.write-red-after-search dEQP-VK.graphicsfuzz.write-red-in-loop-nest +dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if dEQP-VK.transform_feedback.simple.basic_1_256 dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256 dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256 diff --git a/external/vulkancts/mustpass/master/vk-default.txt b/external/vulkancts/mustpass/master/vk-default.txt index 4a05237..05a1554 100644 --- a/external/vulkancts/mustpass/master/vk-default.txt +++ b/external/vulkancts/mustpass/master/vk-default.txt @@ -521733,6 +521733,7 @@ dEQP-VK.graphicsfuzz.while-inside-switch dEQP-VK.graphicsfuzz.write-before-break dEQP-VK.graphicsfuzz.write-red-after-search dEQP-VK.graphicsfuzz.write-red-in-loop-nest +dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if dEQP-VK.transform_feedback.simple.basic_1_256 dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256 dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256