[Mesa-dev] [PATCH] piglit/general/texunits: fix to check the correct extension and be less pedantic
Brian Paul
brianp at vmware.com
Thu Apr 15 07:39:00 PDT 2010
Luca Barbieri wrote:
> First of all, according to http://www.opengl.org/registry/api/enumext.spec,
> the correct extension to check is ARB_vertex_shader.
>
> Second, if that is not exposed, the OpenGL implementation can't tell us
> exactly what it supports, and thus some things that are allowed to fail
> could succeed instead.
>
> I don't think we should hold that against them: extra functionality is good.
>
> If the extension is exposed, we still check that errors are raised.
>
> Even this is a bit dubious: sometimes extra features may be supported
> only partially, and thus not exposed, but still available in the
> right conditions.
> ---
> tests/general/texunits.c | 15 ++++++++++++---
> 1 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/tests/general/texunits.c b/tests/general/texunits.c
> index 01a5e27..47c2540 100644
> --- a/tests/general/texunits.c
> +++ b/tests/general/texunits.c
> @@ -36,7 +36,7 @@
>
> static int Width = 128, Height = 128;
> static int Automatic = 0;
> -
> +static GLboolean Pedantic = GL_FALSE;
>
> /** random number for checking state */
> static GLfloat Random[128][4];
> @@ -145,6 +145,7 @@ test_rasterpos(void)
> }
>
> /* this should generate an error */
> + if(Pedantic)
> {
> GLfloat v[4];
> glActiveTexture(GL_TEXTURE0 + MaxTextureCoordUnits);
> @@ -203,6 +204,7 @@ test_texture_matrix(void)
> }
>
> /* this should generate an error */
> + if(Pedantic)
> {
> GLfloat m[16];
> glActiveTexture(GL_TEXTURE0 + MaxTextureCoordUnits);
> @@ -273,7 +275,7 @@ test_texture_params(void)
> glActiveTexture(GL_TEXTURE0 + maxUnit);
> /* INVALID_ENUM is expected */
> err = glGetError();
> - if (err != GL_INVALID_ENUM) {
> + if (Pedantic && err != GL_INVALID_ENUM) {
> printf("GL failed to raise GL_INVALID_ENUM setting texture unit\n");
> return GL_FALSE;
> }
> @@ -316,6 +318,7 @@ test_texture_env(void)
> }
>
> /* this should generate an error */
> + if(Pedantic)
> {
> glActiveTexture(GL_TEXTURE0 + MaxTextureImageUnits);
> if (MaxTextureImageUnits == MaxTextureCombinedUnits) {
> @@ -402,13 +405,19 @@ key(unsigned char key, int x, int y)
> static void
> init(void)
> {
> - if (glutExtensionSupported("GL_ARB_fragment_program")) {
> + if (glutExtensionSupported("GL_ARB_vertex_shader")) {
> + /* a bit dubious: OpenGL may want to give us freebies that can't always
> + * be supported */
> + Pedantic = GL_TRUE;
> glGetIntegerv(GL_MAX_TEXTURE_COORDS, &MaxTextureCoordUnits);
> glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &MaxTextureImageUnits);
> glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &MaxTextureVertexUnits);
> glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &MaxTextureCombinedUnits);
> }
> else {
> + /* in this case, the OpenGL implementation may support higher values for
> + * some of these, and allow them: don't hold it against them... */
> + Pedantic = GL_FALSE;
> glGetIntegerv(GL_MAX_TEXTURE_UNITS, &MaxTextureCoordUnits);
> MaxTextureImageUnits =
> MaxTextureVertexUnits =
Looks OK. My only suggestion is to follow the existing code style: Ex:
if (Pedantic) {
-Brian
More information about the mesa-dev
mailing list