From 05a44ab32832efe61a252ef4ac2d128c1101c286 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 22 Jul 2015 07:42:12 -0600 Subject: [PATCH] mesa: another target fix in compressed_subtexture_target_check() The previous fix added GL_TEXTURE_CUBE_MAP_ARRAY but we also need to support GL_TEXTURE_CUBE_MAP (via DSA). So in the end, GL_TEXTURE_3D is the only (legal) target for glCompressedTex*SubImage3D() which needs additional compression format checking. GL_TEXTURE_2D_ARRAY, GL_TEXTURE_CUBE_MAP_ARRAY and GL_TEXTURE_CUBE_MAP are basically 2D images which support all compressed formats. Reviewed-by: Roland Scheidegger --- src/mesa/main/teximage.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 4fe6ee4..0726758 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -4581,12 +4581,19 @@ compressed_subtexture_target_check(struct gl_context *ctx, GLenum target, * one of the EAC, ETC2, or RGTC formats and either border is * non-zero, or the effective target for the texture is not * TEXTURE_2D_ARRAY." + * + * NOTE: that's probably a spec error. It should probably say + * "... or the effective target for the texture is not + * TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP, nor GL_TEXTURE_CUBE_MAP_ARRAY." + * since those targets are 2D images and they support all compression + * formats. + * * Instead of listing all these, just list those which are allowed, * which is (at this time) only bptc. Otherwise we'd say s3tc (and more) * are valid here, which they are not, but of course not mentioned by * core spec. */ - if (target != GL_TEXTURE_2D_ARRAY && target != GL_TEXTURE_CUBE_MAP_ARRAY) { + if (target == GL_TEXTURE_3D) { switch (format) { /* These are the only 3D compression formats supported at this time */ case GL_COMPRESSED_RGBA_BPTC_UNORM: -- 2.7.4