On 04/29/2014 12:05 PM, Jose Fonseca wrote:


----- Original Message -----
Don't call piglit_report_result() - return result from piglit_display().
Use default window size and fix "row wrapping" to avoid drawing off the
edge of the window.
Use bool instead of int.
Use piglit_get_gl_enum_name().
Use GLubyte instead of unsigned char.
Set texture env mode to replace.
---
  tests/texturing/tex3d.c |   69
  +++++++++++++++++++++++------------------------
  1 file changed, 33 insertions(+), 36 deletions(-)

diff --git a/tests/texturing/tex3d.c b/tests/texturing/tex3d.c
index 05c29a6..0dd72fc 100644
--- a/tests/texturing/tex3d.c
+++ b/tests/texturing/tex3d.c
@@ -32,9 +32,7 @@ PIGLIT_GL_TEST_CONFIG_BEGIN

        config.supports_gl_compat_version = 10;

-       config.window_width = 128;
-       config.window_height = 128;
-       config.window_visual = PIGLIT_GL_VISUAL_RGBA;
+       config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;

  PIGLIT_GL_TEST_CONFIG_END

@@ -50,17 +48,8 @@ static int nrcomponents(GLenum format)
        }
  }

-static const char* formatname(GLenum format)
-{
-       switch(format) {
-       case GL_RGBA: return "GL_RGBA";
-       case GL_RGB: return "GL_RGB";
-       case GL_ALPHA: return "GL_ALPHA";
-       default: abort();
-       }
-}
-
-static void expected_rgba(GLenum format, const unsigned char* texdata,
unsigned char* expected)
+static void
+expected_rgba(GLenum format, const GLubyte *texdata, GLubyte *expected)
  {
        switch(format) {
        case GL_RGBA:
@@ -84,13 +73,15 @@ static void expected_rgba(GLenum format, const unsigned
char* texdata, unsigned
        }
  }

-static int render_and_check(int w, int h, int d, GLenum format, float q,
unsigned char* data, const char* test)
+static bool
+render_and_check(int w, int h, int d, GLenum format, float q,
+                const GLubyte *data, const char* test)
  {
        int x, y, z;
        int layer;
-       unsigned char* readback;
-       unsigned char* texp;
-       unsigned char* readp;
+       GLubyte *readback;
+       const GLubyte *texp;
+       GLubyte *readp;
        int ncomp = 0;

        glClearColor(0.0, 0.0, 0.0, 0.0);
@@ -111,18 +102,18 @@ static int render_and_check(int w, int h, int d, GLenum
format, float q, unsigne
                        glVertex2f(x, y+h);
                glEnd();
                x += w;
-               if (x >= piglit_width) {
+               if (x + w >= piglit_width) {

Won't this change the behavior?  At a glance it doesn't look like it will do 
the same thing.

The test draws a series of quads from left to right. This conditional checks if we're about to draw off the right edge of the window, and if so, starts the next row. The same change was made below for the probing code.

Between the original window size and the texture size being tested, I don't think the condition was ever actually hit. The corrected code was already present in the tex3d-npot.c test, btw.


The "use default window size" patches look fine though.

Thanks.

-Brian



Jose


                        y += h;
                        x = 0;
                }
        }

-       readback = (unsigned char*)malloc(w*h*d*4);
+       readback = (GLubyte*)malloc(w*h*d*4);
        x = y = 0;
        for(layer = 0; layer < d; ++layer) {
                glReadPixels(x, y, w, h, GL_RGBA, GL_UNSIGNED_BYTE, 
readback+layer*w*h*4);
                x += w;
-               if (x >= piglit_width) {
+               if (x + w >= piglit_width) {
                        y += h;
                        x = 0;
                }
@@ -134,7 +125,7 @@ static int render_and_check(int w, int h, int d, GLenum
format, float q, unsigne
        for(z = 0; z < d; ++z) {
                for(y = 0; y < h; ++y) {
                        for(x = 0; x < w; ++x, readp += 4, texp += ncomp) {
-                               unsigned char expected[4];
+                               GLubyte expected[4];
                                int i;
                                expected_rgba(format, texp, expected);
                                for(i = 0; i < 4; ++i) {
@@ -145,7 +136,7 @@ static int render_and_check(int w, int h, int d, GLenum
format, float q, unsigne
                                                fprintf(stderr, " Readback: 
%i,%i,%i,%i\n",
                                                        readp[0], readp[1], 
readp[2], readp[3]);
                                                free(readback);
-                                               return 0;
+                                               return false;
                                        }
                                }
                        }
@@ -155,7 +146,7 @@ static int render_and_check(int w, int h, int d, GLenum
format, float q, unsigne

        piglit_present_results();

-       return 1;
+       return true;
  }


@@ -163,12 +154,13 @@ static int render_and_check(int w, int h, int d, GLenum
format, float q, unsigne
   * Load non-mipmapped 3D texture of the given size
   * and check whether it is rendered correctly.
   */
-static void test_simple(int w, int h, int d, GLenum format)
+static bool
+test_simple(int w, int h, int d, GLenum format)
  {
        int size;
-       unsigned char *data;
+       GLubyte *data;
        int i;
-       int success = 1;
+       bool success = true;

        assert(1 <= w && w <= 16);
        assert(1 <= h && h <= 16);
@@ -176,7 +168,7 @@ static void test_simple(int w, int h, int d, GLenum
format)
        assert(format == GL_RGBA || format == GL_RGB || format == GL_ALPHA);

        size = w*h*d*nrcomponents(format);
-       data = (unsigned char*)malloc(size);
+       data = (GLubyte*)malloc(size);

        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

@@ -194,17 +186,20 @@ static void test_simple(int w, int h, int d, GLenum
format)
        free(data);

        if (!success) {
-               fprintf(stderr, "Failure with texture size %ix%ix%i, format = 
%s\n",
-                       w, h, d, formatname(format));
-               piglit_report_result(PIGLIT_FAIL);
+               fprintf(stderr,
+                       "Failure with texture size %ix%ix%i, format = %s\n",
+                       w, h, d, piglit_get_gl_enum_name(format));
        }
+
+        return success;
  }

  enum piglit_result
  piglit_display(void)
  {
-       GLenum formats[] = { GL_RGBA, GL_RGB, GL_ALPHA };
+       static const GLenum formats[] = { GL_RGBA, GL_RGB, GL_ALPHA };
        int w, h, d, fmt;
+       bool pass = true;

        piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);

@@ -212,13 +207,16 @@ piglit_display(void)
                for(w = 1; w <= 16; w *= 2) {
                        for(h = 1; h <= 16; h *= 2) {
                                for(d = 1; d <= 16; d *= 2) {
-                                       test_simple(w, h, d, formats[fmt]);
+                                       pass = test_simple(w, h, d, 
formats[fmt]);
+                                       if (!pass)
+                                               goto end;
                                }
                        }
                }
        }

-       return PIGLIT_PASS;
+end:
+       return pass ? PIGLIT_PASS : PIGLIT_FAIL;
  }

  void
@@ -226,10 +224,9 @@ piglit_init(int argc, char **argv)
  {
        piglit_require_gl_version(12);

-       piglit_automatic = GL_TRUE;
-
        glDisable(GL_DITHER);

        glGenTextures(1, &Texture);
        glBindTexture(GL_TEXTURE_3D, Texture);
+       glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
  }
--
1.7.10.4

_______________________________________________
Piglit mailing list
[email protected]
https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/piglit&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=L38CZQmytNtcKNdGNqkkvBvoL%2BsPDIoGqJg49ARWs6U%3D%0A&s=a3d31f2bf3b38fc3f7ba15b3702af201868f4a059b9115b82563f6efd1c06ce9


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

Reply via email to