[Piglit] [PATCH] texwrap: minor assorted changes
Brian Paul
brianp at vmware.com
Mon Jul 14 07:37:29 PDT 2014
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
More information about the Piglit
mailing list