[Piglit] [PATCH 3/3] arb_get_texture_sub_image: update cube map tests to complete the cube map
Anthony Pesch
apesch at nvidia.com
Sun Apr 8 18:35:11 UTC 2018
Hey Juan,
Good catch - I'd only been focusing on the errors test.
I've updated the patch to also fix the errors in arb_get_texture_sub_image-get:
Author: Anthony Pesch <apesch at nvidia.com>
Date: Thu Mar 22 13:11:22 2018 -0400
arb_get_texture_sub_image: update cube map tests to make textures cube complete
Update cube map tests to ensure cube map textures are cube complete before querying
them. Querying a cube map which is not cube complete should set INVALID_OPERATION
as per the OpenGL 4.6 Core spec:
"An INVALID_OPERATION error is generated if the effective target is
TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY, and the texture object
is not cube complete or cube array complete, respectively."
diff --git a/tests/spec/arb_get_texture_sub_image/errors.c b/tests/spec/arb_get_texture_sub_image/errors.c
index 1e7b17115..4b99d1cc2 100644
--- a/tests/spec/arb_get_texture_sub_image/errors.c
+++ b/tests/spec/arb_get_texture_sub_image/errors.c
@@ -253,16 +253,20 @@ test_cubemap_faces(void)
0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_FLOAT, NULL);
}
- /* try to get all six cube faces, should fail */
+ /* try to query incomplete cube map, should fail */
glGetTextureSubImage(tex, 0,
0, 0, 0,
- 8, 8, 6,
+ 8, 8, 5,
GL_RGBA, GL_UNSIGNED_BYTE,
sizeof(results), results);
if (!piglit_check_gl_error(GL_INVALID_OPERATION))
pass = false;
- /* try to get five cube faces, should pass */
+ /* upload final face */
+ glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 5,
+ 0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_FLOAT, NULL);
+
+ /* try to query complete cube map, should now pass */
glGetTextureSubImage(tex, 0,
0, 0, 0,
8, 8, 5,
diff --git a/tests/spec/arb_get_texture_sub_image/get.c b/tests/spec/arb_get_texture_sub_image/get.c
index 8aa4c92e1..fc8f9f8e1 100644
--- a/tests/spec/arb_get_texture_sub_image/get.c
+++ b/tests/spec/arb_get_texture_sub_image/get.c
@@ -157,12 +157,16 @@ test_getsubimage(GLenum target,
GL_RGBA, GL_UNSIGNED_BYTE, texData);
break;
case GL_TEXTURE_CUBE_MAP:
- /* only set +Y face */
- glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
- level, intFormat,
- mip_width, mip_height, 0,
- GL_RGBA, GL_UNSIGNED_BYTE,
- texData);
+ /* specify dimensions and format for all faces to make texture cube complete,
+ but specify data for only the +Y face as it is the only one read back */
+ for (i = 0; i < 6; i++) {
+ GLubyte *faceData = i == 2 ? texData : NULL;
+ glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
+ level, intFormat,
+ mip_width, mip_height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE,
+ faceData);
+ }
break;
}
}
- Anthony
________________________________________
From: Piglit <piglit-bounces at lists.freedesktop.org> on behalf of Juan A. Suarez Romero <jasuarez at igalia.com>
Sent: Thursday, April 5, 2018 4:43 AM
To: Anthony Pesch; piglit at lists.freedesktop.org
Subject: Re: [Piglit] [PATCH 3/3] arb_get_texture_sub_image: update cube map tests to complete the cube map
On Thu, 2018-04-05 at 10:19 +0200, Juan A. Suarez Romero wrote:
> On Wed, 2018-03-28 at 11:15 -0400, Anthony Pesch wrote:
> > From: Anthony Pesch <apesch at nvidia.com>
> >
> > Update cube map tests to complete the cube map before performing the final
> > query. This final query is expected to succeed, however, querying a cube map
> > which is not cube complete should set INVALID_OPERATION as per the OpenGL 4.6
> > Core spec:
> >
> > "An INVALID_OPERATION error is generated if the effective target is
> > TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY, and the texture object
> > is not cube complete or cube array complete, respectively."
> > ---
>
>
> Isn't there a similar problem in tests/spec/arb_get_texture_sub_image/get.c,
> when invoking test_getsubimage() with a GL_TEXTURE_CUBE_MAP ?
>
More specifically, the test is only setting one face of the cube, so the cube is
incomplete. It should set all the faces.
This change can be included within this patch.
J.A.
>
> J.A.
>
> > tests/spec/arb_get_texture_sub_image/errors.c | 10 +++++++---
> > 1 file changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git a/tests/spec/arb_get_texture_sub_image/errors.c b/tests/spec/arb_get_texture_sub_image/errors.c
> > index 1e7b17115..4b99d1cc2 100644
> > --- a/tests/spec/arb_get_texture_sub_image/errors.c
> > +++ b/tests/spec/arb_get_texture_sub_image/errors.c
> > @@ -253,16 +253,20 @@ test_cubemap_faces(void)
> > 0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_FLOAT, NULL);
> > }
> >
> > - /* try to get all six cube faces, should fail */
> > + /* try to query incomplete cube map, should fail */
> > glGetTextureSubImage(tex, 0,
> > 0, 0, 0,
> > - 8, 8, 6,
> > + 8, 8, 5,
> > GL_RGBA, GL_UNSIGNED_BYTE,
> > sizeof(results), results);
> > if (!piglit_check_gl_error(GL_INVALID_OPERATION))
> > pass = false;
> >
> > - /* try to get five cube faces, should pass */
> > + /* upload final face */
> > + glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 5,
> > + 0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_FLOAT, NULL);
> > +
> > + /* try to query complete cube map, should now pass */
> > glGetTextureSubImage(tex, 0,
> > 0, 0, 0,
> > 8, 8, 5,
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit
_______________________________________________
Piglit mailing list
Piglit at lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit
More information about the Piglit
mailing list