[Piglit] [PATCH] texture-float-formats: a simple GL_ARB_texture_float test

Eric Anholt eric at anholt.net
Tue Apr 26 09:06:30 PDT 2011


On Mon, 25 Apr 2011 18:53:58 -0600, brianp at vmware.com wrote:
> +static const struct format_info Formats[] = {
> +   { "GL_RGBA32F_ARB", GL_RGBA32F_ARB, GL_RGBA, 32 },
> +   { "GL_RGB32F_ARB", GL_RGB32F_ARB, GL_RGB, 32 },
> +   { "GL_ALPHA32F_ARB", GL_ALPHA32F_ARB, GL_ALPHA, 32 },
> +   { "GL_INTENSITY32F_ARB", GL_INTENSITY32F_ARB, GL_INTENSITY, 32 },
> +   { "GL_LUMINANCE32F_ARB", GL_LUMINANCE32F_ARB, GL_LUMINANCE, 32 },
> +   { "GL_LUMINANCE_ALPHA32F_ARB", GL_LUMINANCE_ALPHA32F_ARB, GL_LUMINANCE, 32 },
> +
> +   { "GL_RGBA16F_ARB", GL_RGBA16F_ARB, GL_RGBA, 16 },
> +   { "GL_RGB16F_ARB", GL_RGB16F_ARB, GL_RGB, 16 },
> +   { "GL_ALPHA16F_ARB", GL_ALPHA16F_ARB, GL_ALPHA, 16 },
> +   { "GL_INTENSITY16F_ARB", GL_INTENSITY16F_ARB, GL_INTENSITY, 16 },
> +   { "GL_LUMINANCE16F_ARB", GL_LUMINANCE16F_ARB, GL_LUMINANCE, 16 },
> +   { "GL_LUMINANCE_ALPHA16F_ARB", GL_LUMINANCE_ALPHA16F_ARB, GL_LUMINANCE, 16 },
> +
> +   /* XXX could also add tests for RED, RG formats */
> +};

Looks like the rest of the test is ready for RED, RG.  Could they just
get added now?  I think they'd go under ARB_texture_rg, since other RG
float tests have been there too.

> +
> +   /*printf("Testing %s\n", info->Name);*/
> +
> +   /* pick random texture color, comps in [-1000, 1000] */
> +   value[0] = rand() % 2001 - 1000;
> +   value[1] = rand() % 2001 - 1000;
> +   value[2] = rand() % 2001 - 1000;
> +   value[3] = rand() % 2001 - 1000;

I don't like using rand() in testing.  I think avoiding random test
behavior has been one of piglit's strengths.  Just pick some numbers, if
you're only going to have 4 different ones.

> +   /* read color */
> +   glReadPixels(w/2, h/2, 1, 1, GL_RGBA, GL_FLOAT, result);
> +
> +   glutSwapBuffers();
> +
> +   if (check_error(__FILE__, __LINE__))
> +      return GL_FALSE;
> +
> +   /* test */
> +   if (fabsf(result[0] - expected[0]) > error ||
> +       fabsf(result[1] - expected[1]) > error ||
> +       fabsf(result[2] - expected[2]) > error ||
> +       fabsf(result[3] - expected[3]) > error) {
> +      /* unexpected result */
> +      int i;
> +
> +      fprintf(stderr, "%s: failure with format %s:\n", TestName, info->Name);
> +      fprintf(stderr, "  texture color = ");
> +      for (i = 0; i < comps; i++) {
> +         fprintf(stderr, "%f", value[i]);
> +         if (i + 1 < comps)
> +            fprintf(stderr, ", ");
> +      }
> +      fprintf(stderr, "\n");
> +      fprintf(stderr, "  expected color = %g, %g, %g, %g\n",
> +              expected[0], expected[1], expected[2], expected[3]);
> +      fprintf(stderr, "  rendered color = %g, %g, %g, %g\n",
> +              result[0], result[1], result[2], result[3]);
> +      return GL_FALSE;
> +   }

You seem to have replicated piglit_probe_pixel_rgba() with an extra line
of informatino about the texture format/color.  Perhaps just print those
out afterwards?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20110426/746cd427/attachment.pgp>


More information about the Piglit mailing list