Always draw a (mode, filter) test pattern at the same window position,
regardless of border mode, supported, etc.  This makes it a little
easier to do visual inspections.

In non-auto mode, print names of wrap modes to help identify the
test patterns.  Ideally, we'd print this in the window instead of
the terminal but piglit doesn't have a text-drawing feature.
---
 tests/texturing/texwrap.c |   53 ++++++++++++++++++++++++---------------------
 1 file changed, 28 insertions(+), 25 deletions(-)

diff --git a/tests/texturing/texwrap.c b/tests/texturing/texwrap.c
index 383681e..21e49ac 100644
--- a/tests/texturing/texwrap.c
+++ b/tests/texturing/texwrap.c
@@ -807,11 +807,25 @@ static GLboolean skip_test(GLenum mode, GLenum filter)
        return test_border_color;
 }
 
+/**
+ * For a given wrap mode index, filter mode index and npot flag, return
+ * the (x,y) position for drawing the test pattern.
+ */
+static void
+test_to_xy(unsigned mode, unsigned filter, unsigned npot, int *x, int *y)
+{
+       assert(mode < ARRAY_SIZE(wrap_modes));
+       assert(filter < 2);
+       assert(npot < 2);
+       *x = mode * (TILE_SIZE(npot) + TILE_SPACE) + 5;
+       *y = filter * (TILE_SIZE(npot) + TILE_SPACE) + 35;
+}
+
+
 static void draw(const struct format_desc *format,
                 GLboolean npot, GLboolean texproj)
 {
        unsigned i, j;
-       int offset;
        int num_filters = format->type == FLOAT_TYPE ? 2 : 1;
        int bits = get_int_format_bits(format);
        float scale[4];
@@ -840,13 +854,12 @@ static void draw(const struct format_desc *format,
        for (i = 0; i < num_filters; i++) {
                GLenum filter = i ? GL_LINEAR : GL_NEAREST;
 
-               offset = 0;
-
                glTexParameteri(texture_target, GL_TEXTURE_MIN_FILTER, filter);
                glTexParameteri(texture_target, GL_TEXTURE_MAG_FILTER, filter);
 
                /* Loop over wrap modes. */
                for (j = 0; wrap_modes[j].mode != 0; j++) {
+                       int xpos, ypos;
                        float x0 = 0;
                        float y0 = 0;
                        float x1 = TILE_SIZE(npot);
@@ -858,13 +871,13 @@ static void draw(const struct format_desc *format,
                        float q = 1;
                        float ts0 = s0, ts1 = s1, tt0 = t0, tt1 = t1, tr = 0.5;
 
-                       if (!wrap_modes[j].supported)
+                       if (!wrap_modes[j].supported) {
                                continue;
+                        }
 
                        if (skip_test(wrap_modes[j].mode, filter)) {
                                if (skip_test(wrap_modes[j].mode, GL_LINEAR) !=
                                    skip_test(wrap_modes[j].mode, GL_NEAREST)) {
-                                       offset++;
                                }
                                continue;
                        }
@@ -895,10 +908,8 @@ static void draw(const struct format_desc *format,
                                        wrap_modes[j].mode);
 
                        glPushMatrix();
-                       glTranslatef(offset * (TILE_SIZE(npot) + TILE_SPACE) + 
5,
-                                    i * (TILE_SIZE(npot) + TILE_SPACE) + 35,
-                                    0);
-                       offset++;
+                       test_to_xy(j, i, npot, &xpos, &ypos);
+                       glTranslatef(xpos, ypos, 0.0);
 
                        glEnable(texture_target);
                        glColor3f(1, 1, 1);
@@ -939,21 +950,14 @@ static void draw(const struct format_desc *format,
 
        glDisable(texture_target);
        glColor3f(1, 1, 1);
-       offset = 0;
 
        if (!piglit_automatic) {
+               printf("modes: ");
                for (i = 0; wrap_modes[i].mode != 0; i++) {
-                       if (wrap_modes[i].supported) {
-                               if (skip_test(wrap_modes[i].mode, GL_LINEAR) &&
-                                   skip_test(wrap_modes[i].mode, GL_NEAREST)) {
-                                       continue;
-                               }
-
-                               glWindowPos2iARB(offset * (TILE_SIZE(npot) + 
TILE_SPACE) + 5,
-                                                5 + ((offset & 1) * 15));
-                               offset++;
-                       }
+                       printf("%s, ",
+                              piglit_get_gl_enum_name(wrap_modes[i].mode));
                }
+               printf("\n");
        }
 }
 
@@ -978,7 +982,6 @@ static GLboolean probe_pixels(const struct format_desc 
*format, GLboolean npot,
                unsigned deltamax[4] = {0};
                unsigned deltamax_swizzled[4] = {0};
                unsigned *deltamax_lut = i ? linear_deltamax : nearest_deltamax;
-               unsigned offset = 0;
 
                /* Get the deltamax for each channel. */
                if (format->intensity) {
@@ -1012,17 +1015,17 @@ static GLboolean probe_pixels(const struct format_desc 
*format, GLboolean npot,
                /* Loop over all wrap modes. */
                for (j = 0; wrap_modes[j].mode != 0; j++) {
                        unsigned char expected[4];
-                       int x0 = offset * (TILE_SIZE(npot) + TILE_SPACE) + 5;
-                       int y0 = i * (TILE_SIZE(npot) + TILE_SPACE) + 35;
+                       int x0, y0;
                        int a, b;
 
+                       test_to_xy(j, i, npot, &x0, &y0);
+
                        if (!wrap_modes[j].supported)
                                continue;
 
                        if (skip_test(wrap_modes[j].mode, filter)) {
                                if (skip_test(wrap_modes[j].mode, GL_LINEAR) !=
                                    skip_test(wrap_modes[j].mode, GL_NEAREST)) {
-                                       offset++;
                                }
                                continue;
                        }
@@ -1047,7 +1050,7 @@ static GLboolean probe_pixels(const struct format_desc 
*format, GLboolean npot,
                        }
 
 tile_done:
-                       offset++;
+                       ;
                }
        }
 
-- 
1.7.10.4

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to