[Mesa-dev] [PATCH 1/2] texobj: Fix the completeness checks for cube textures
Ian Romanick
idr at freedesktop.org
Thu Jan 21 11:03:56 PST 2016
Series is
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
On 01/21/2016 11:02 AM, Neil Roberts wrote:
> According to the GL 1.4 spec section 3.8.10, a cubemap texture is only
> complete if:
>
> • The level base arrays of each of the six texture images making up
> the cube map have identical, positive, and square dimensions.
> • The level base arrays were each specified with the same internal
> format.
> • The level base arrays each have the same border width.
>
> Previously the texture completeness code was only checking the first
> point. This patch makes it additionally check the other two.
>
> This fixes the following two dEQP tests:
>
> deqp-gles2.functional.texture.completeness.cube.format_mismatch_rgba_rgb_level_0_neg_z
> deqp-gles2.functional.texture.completeness.cube.format_mismatch_rgb_rgba_level_0_pos_z
>
> And also the Piglit test posted here:
>
> http://patchwork.freedesktop.org/patch/71333/
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93792
> Cc: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
> src/mesa/main/texobj.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
> index b107a8f..9ce7b4c 100644
> --- a/src/mesa/main/texobj.c
> +++ b/src/mesa/main/texobj.c
> @@ -769,7 +769,8 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
> }
>
> if (t->Target == GL_TEXTURE_CUBE_MAP_ARB) {
> - /* Make sure that all six cube map level 0 images are the same size.
> + /* Make sure that all six cube map level 0 images are the same size and
> + * format.
> * Note: we know that the image's width==height (we enforce that
> * at glTexImage time) so we only need to test the width here.
> */
> @@ -784,6 +785,15 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
> incomplete(t, BASE, "Cube face missing or mismatched size");
> return;
> }
> + if (t->Image[face][baseLevel]->InternalFormat !=
> + baseImage->InternalFormat) {
> + incomplete(t, BASE, "Cube face format mismatch");
> + return;
> + }
> + if (t->Image[face][baseLevel]->Border != baseImage->Border) {
> + incomplete(t, BASE, "Cube face border size mismatch");
> + return;
> + }
> }
> }
>
>
More information about the mesa-dev
mailing list