dEQP-VK.graphicsfuzz.transpose-rectangular-matrix
authorAlastair Donaldson <afdx@google.com>
Sun, 3 Nov 2019 23:16:55 +0000 (23:16 +0000)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 3 Dec 2019 08:49:11 +0000 (03:49 -0500)
Components: Vulkan

New Tests:

dEQP-VK.graphicsfuzz.transpose-rectangular-matrix

Change-Id: Ibbef1909c846e35048fa8b9d3da62bddb91e05f4

android/cts/master/vk-master.txt
external/vulkancts/data/vulkan/amber/graphicsfuzz/index.txt
external/vulkancts/data/vulkan/amber/graphicsfuzz/transpose-rectangular-matrix.amber [new file with mode: 0644]
external/vulkancts/mustpass/master/vk-default-no-waivers.txt
external/vulkancts/mustpass/master/vk-default.txt

index 0ff6d90..6ecf65f 100644 (file)
@@ -559310,6 +559310,7 @@ dEQP-VK.graphicsfuzz.struct-used-as-temporary
 dEQP-VK.graphicsfuzz.switch-if-discard
 dEQP-VK.graphicsfuzz.switch-with-empty-if-false
 dEQP-VK.graphicsfuzz.swizzle-struct-init-min
+dEQP-VK.graphicsfuzz.transpose-rectangular-matrix
 dEQP-VK.graphicsfuzz.two-for-loops-with-barrier-function
 dEQP-VK.graphicsfuzz.two-loops-matrix
 dEQP-VK.graphicsfuzz.two-loops-set-struct
index a06c012..d4594b6 100644 (file)
@@ -47,6 +47,7 @@
 {      "switch-if-discard.amber",                                              "switch-if-discard",                                    "A fragment shader with a switch, if, and discard"                                                                              },
 {      "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'"                                                                                                 },
 {      "two-for-loops-with-barrier-function.amber",    "two-for-loops-with-barrier-function",  "A compute shader with two barrier functions"                                                                                   },
 {      "two-loops-matrix.amber",                                               "two-loops-matrix",                                             "A fragment shader with two loops and some matrices"                                                                    },
 {      "two-loops-set-struct.amber",                                   "two-loops-set-struct",                                 "A fragment shader with two loops that write to a struct"                                                               },
diff --git a/external/vulkancts/data/vulkan/amber/graphicsfuzz/transpose-rectangular-matrix.amber b/external/vulkancts/data/vulkan/amber/graphicsfuzz/transpose-rectangular-matrix.amber
new file mode 100644 (file)
index 0000000..22967b7
--- /dev/null
@@ -0,0 +1,152 @@
+#!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: Fragment shader that uses 'transpose'
+
+# The test passes because 'f' is invoked with a vector whose components are less than or equal to 1.0, so that it returns vec3(1.0, 0.0, 0.0), meaning that the output colour red is written
+
+# Optimized using spirv-opt with the following arguments:
+# '-O'
+# spirv-opt commit hash: 6b072126595dd8c2448eb1fda616251c5e6d7079
+
+
+
+SHADER vertex variant_vertex_shader PASSTHROUGH
+
+# variant_fragment_shader is derived from the following GLSL:
+# #version 310 es
+# precision highp float;
+#
+# layout(location = 0) out vec4 _GLF_color;
+#
+# vec3 f(vec2 pos)
+# {
+#  if(pos.y > 1.0)
+#   {
+#    vec3 v;
+#    return v;
+#   }
+#  return vec3(1.0, 0.0, 0.0);
+# }
+# void main()
+# {
+#  _GLF_color = vec4(f(vec2(transpose((gl_FragCoord.y < 1.0) ? mat4x3(1.0) : transpose(mat3x4(1.0))))), 1.0);
+# }
+SHADER fragment variant_fragment_shader SPIRV-ASM
+; SPIR-V
+; Version: 1.0
+; Generator: Khronos Glslang Reference Front End; 7
+; Bound: 99
+; Schema: 0
+               OpCapability Shader
+          %1 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %4 "main" %34 %36
+               OpExecutionMode %4 OriginUpperLeft
+               OpSource ESSL 310
+               OpName %4 "main"
+               OpName %34 "_GLF_color"
+               OpName %36 "gl_FragCoord"
+               OpDecorate %34 Location 0
+               OpDecorate %36 BuiltIn FragCoord
+          %2 = OpTypeVoid
+          %3 = OpTypeFunction %2
+          %6 = OpTypeFloat 32
+          %9 = OpTypeVector %6 3
+         %14 = OpTypeInt 32 0
+         %15 = OpConstant %14 1
+         %19 = OpConstant %6 1
+         %20 = OpTypeBool
+         %28 = OpConstant %6 0
+         %29 = OpConstantComposite %9 %19 %28 %28
+         %32 = OpTypeVector %6 4
+         %33 = OpTypePointer Output %32
+         %34 = OpVariable %33 Output
+         %35 = OpTypePointer Input %32
+         %36 = OpVariable %35 Input
+         %37 = OpTypePointer Input %6
+         %41 = OpTypeMatrix %9 4
+         %46 = OpConstantComposite %9 %28 %19 %28
+         %47 = OpConstantComposite %9 %28 %28 %19
+         %48 = OpConstantComposite %9 %28 %28 %28
+         %49 = OpConstantComposite %41 %29 %46 %47 %48
+         %51 = OpTypeMatrix %32 3
+         %52 = OpConstantComposite %32 %19 %28 %28 %28
+         %53 = OpConstantComposite %32 %28 %19 %28 %28
+         %54 = OpConstantComposite %32 %28 %28 %19 %28
+         %55 = OpConstantComposite %51 %52 %53 %54
+         %97 = OpUndef %9
+          %4 = OpFunction %2 None %3
+          %5 = OpLabel
+         %38 = OpAccessChain %37 %36 %15
+         %39 = OpLoad %6 %38
+         %40 = OpFOrdLessThan %20 %39 %19
+               OpSelectionMerge %45 None
+               OpBranchConditional %40 %44 %50
+         %44 = OpLabel
+               OpBranch %45
+         %50 = OpLabel
+         %56 = OpTranspose %41 %55
+               OpBranch %45
+         %45 = OpLabel
+         %94 = OpPhi %41 %49 %44 %56 %50
+         %58 = OpTranspose %51 %94
+         %60 = OpCompositeExtract %6 %58 0 1
+               OpBranch %82
+         %82 = OpLabel
+               OpLoopMerge %83 %84 None
+               OpBranch %85
+         %85 = OpLabel
+         %88 = OpFOrdGreaterThan %20 %60 %19
+               OpSelectionMerge %89 None
+               OpBranchConditional %88 %90 %89
+         %90 = OpLabel
+               OpBranch %83
+         %89 = OpLabel
+               OpBranch %83
+         %84 = OpLabel
+               OpBranch %82
+         %83 = OpLabel
+         %98 = OpPhi %9 %97 %90 %29 %89
+         %64 = OpCompositeExtract %6 %98 0
+         %65 = OpCompositeExtract %6 %98 1
+         %66 = OpCompositeExtract %6 %98 2
+         %67 = OpCompositeConstruct %32 %64 %65 %66 %19
+               OpStore %34 %67
+               OpReturn
+               OpFunctionEnd
+END
+
+# uniforms for variant
+
+
+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
+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
index 07e43be..2da2076 100644 (file)
@@ -561653,6 +561653,7 @@ dEQP-VK.graphicsfuzz.struct-used-as-temporary
 dEQP-VK.graphicsfuzz.switch-if-discard
 dEQP-VK.graphicsfuzz.switch-with-empty-if-false
 dEQP-VK.graphicsfuzz.swizzle-struct-init-min
+dEQP-VK.graphicsfuzz.transpose-rectangular-matrix
 dEQP-VK.graphicsfuzz.two-for-loops-with-barrier-function
 dEQP-VK.graphicsfuzz.two-loops-matrix
 dEQP-VK.graphicsfuzz.two-loops-set-struct
index 7b3c212..0f8aefa 100644 (file)
@@ -561500,6 +561500,7 @@ dEQP-VK.graphicsfuzz.struct-used-as-temporary
 dEQP-VK.graphicsfuzz.switch-if-discard
 dEQP-VK.graphicsfuzz.switch-with-empty-if-false
 dEQP-VK.graphicsfuzz.swizzle-struct-init-min
+dEQP-VK.graphicsfuzz.transpose-rectangular-matrix
 dEQP-VK.graphicsfuzz.two-for-loops-with-barrier-function
 dEQP-VK.graphicsfuzz.two-loops-matrix
 dEQP-VK.graphicsfuzz.two-loops-set-struct