[Mesa-dev] [PATCH 2/2] Remove fs-discard-exit-3
Marek Olšák
maraeo at gmail.com
Fri Apr 8 08:56:42 UTC 2016
From: Marek Olšák <marek.olsak at amd.com>
The test is wrong and the GLSL 1.30 citation in the test states very
clearly that discard can cause non-uniform control flow for any code that
follows.
---
.../execution/fs-discard-exit-3.shader_test | 76 ----------------------
1 file changed, 76 deletions(-)
delete mode 100644 tests/spec/glsl-1.30/execution/fs-discard-exit-3.shader_test
diff --git a/tests/spec/glsl-1.30/execution/fs-discard-exit-3.shader_test b/tests/spec/glsl-1.30/execution/fs-discard-exit-3.shader_test
deleted file mode 100644
index 14e9b47..0000000
--- a/tests/spec/glsl-1.30/execution/fs-discard-exit-3.shader_test
+++ /dev/null
@@ -1,76 +0,0 @@
-# This is a test for derivatives behavior after a discard.
-#
-# From the GLSL 1.30 spec:
-#
-# "The discard keyword is only allowed within fragment shaders. It
-# can be used within a fragment shader to abandon the operation
-# on the current fragment. This keyword causes the fragment to be
-# discarded and no updates to any buffers will occur. Control
-# flow exits the shader, and subsequent implicit or explicit
-# derivatives are undefined when this control flow is non-uniform
-# (meaning different fragments within the primitive take
-# different control paths)."
-
-
-[require]
-GLSL >= 1.30
-
-[vertex shader]
-#version 130
-
-in vec4 vertex;
-out vec2 texcoords;
-void main()
-{
- gl_Position = vertex;
-
- /* Turn the texcoords into a 1:1 mapping with pixels when
- * interpolated. This means that the coords for our 2x2
- * subspan we're interested in for the FS will be:
- *
- * +-----+-----+
- * | 0,1 | 1,1 |
- * +-----+-----+
- * | 0,0 | 0,1 |
- * +-----+-----+
- *
- * So it would sample the 1x1 miplevel of the GL_TEXTURE_2D
- * miptree, unless some other math occurs...
- */
- texcoords.yx = (vertex.xy + 1) / 2 * 250;
-}
-
-[fragment shader]
-#version 130
-in vec2 texcoords;
-uniform sampler2D s;
-
-void main()
-{
- if (gl_FragCoord.x >= 1.0 || gl_FragCoord.y >= 1.0)
- discard;
-
- /* Now, we have uniform control after the discard (well,
- * except for the join after the if statement up there). The
- * derivatives on this sample should get us the same values
- * for the undiscarded pixel as if we hadn't done any discard
- * (comment out the "discard" above to see).
- */
- gl_FragColor = texture(s, texcoords / 4);
-}
-
-[vertex data]
-vertex/float/2
--1.0 -1.0
- 1.0 -1.0
- 1.0 1.0
--1.0 1.0
-
-[test]
-clear color 0.5 0.5 0.5 0.5
-clear
-
-texture miptree 0
-
-draw arrays GL_TRIANGLE_FAN 0 4
-probe rgba 0 0 0.0 1.0 0.0 1.0
--
2.5.0
More information about the mesa-dev
mailing list