From: Nicolai Hähnle <nicolai.haeh...@amd.com>

When num_samples == 0, the centroid qualifier is ignored.
---
 tests/spec/ext_framebuffer_multisample/interpolation.cpp | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/tests/spec/ext_framebuffer_multisample/interpolation.cpp 
b/tests/spec/ext_framebuffer_multisample/interpolation.cpp
index 3f18307c1..e57113ea5 100644
--- a/tests/spec/ext_framebuffer_multisample/interpolation.cpp
+++ b/tests/spec/ext_framebuffer_multisample/interpolation.cpp
@@ -65,21 +65,22 @@
  *   that sets the red, green, and blue channels to the barycentric
  *   coordinates within each triangle.
  *
  * - centroid-edges: verify that centroid interpolation occurs at
  *   points that lie within the extents of the triangle, even for
  *   pixels on triangle edges, where the center of the pixel might lie
  *   outside the extents of the triangle.  The test uses a fragment
  *   shader that sets the blue channel to 1.0 (so that the triangles
  *   can be seen) and the red and green channels to 1.0 if any of the
  *   centroid-interpolated barycentric coordinates is outside the
- *   range [0, 1].
+ *   range [0, 1]; except when num_samples == 0, in which case
+ *   it behaves like centroid-disabled.
  *
  * - non-centroid-deriv: verify that the numeric derivative of a
  *   varying using non-centroid interpolation is correct, even at
  *   triangle edges.  This ensures that the implementation properly
  *   handles a subtle corner case: since numeric derivatives are
  *   usually computed using finite differences between adjacent
  *   pixels, it's possible that the value of a varying at a completely
  *   uncovered pixel might be used.  In effect, this tests that the
  *   values of varyings are correct on completely uncovered pixels, if
  *   those values are needed for derivatives.  This test may also be
@@ -331,22 +332,27 @@ piglit_init(int argc, char **argv)
        const char *ref_frag; /* Fragment shader for the reference image */
        if (strcmp(argv[2], "non-centroid-disabled") == 0) {
                frag = frag_non_centroid_barycentric;
                ref_frag = frag_non_centroid_barycentric;
                disable_msaa_during_test_image = true;
        } else if (strcmp(argv[2], "centroid-disabled") == 0) {
                frag = frag_centroid_barycentric;
                ref_frag = frag_non_centroid_barycentric;
                disable_msaa_during_test_image = true;
        } else if (strcmp(argv[2], "centroid-edges") == 0) {
-               frag = frag_centroid_range_check;
-               ref_frag = frag_blue;
+               if (num_samples == 0) {
+                       frag = frag_centroid_barycentric;
+                       ref_frag = frag_non_centroid_barycentric;
+               } else {
+                       frag = frag_centroid_range_check;
+                       ref_frag = frag_blue;
+               }
        } else if (strcmp(argv[2], "non-centroid-deriv") == 0) {
                frag = frag_non_centroid_deriv;
                ref_frag = frag_rg_0_5;
        } else if (strcmp(argv[2], "non-centroid-deriv-disabled") == 0) {
                frag = frag_non_centroid_deriv;
                ref_frag = frag_rg_0_5;
                disable_msaa_during_test_image = true;
        } else if (strcmp(argv[2], "centroid-deriv") == 0) {
                if (num_samples == 0) {
                        frag = frag_centroid_deriv;
-- 
2.15.1

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to