Enable these kind of 3D texture when proper extensions are available. Fixes KHR-GLES2.texture_3d.* with these textures.
v2: add better clarification (Eric) --- src/mesa/main/teximage.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index e5f8bb0718f..56235898c66 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -1487,6 +1487,9 @@ _mesa_target_can_be_compressed(const struct gl_context *ctx, GLenum target, break; case GL_TEXTURE_3D: switch (layout) { + case MESA_FORMAT_LAYOUT_ETC1: + target_can_be_compresed = ctx->Extensions.OES_compressed_ETC1_RGB8_texture; + break; case MESA_FORMAT_LAYOUT_ETC2: /* See ETC2/EAC comment in case GL_TEXTURE_CUBE_MAP_ARRAY. */ if (_mesa_is_gles3(ctx)) @@ -4648,10 +4651,12 @@ out: */ static GLboolean compressed_subtexture_target_check(struct gl_context *ctx, GLenum target, - GLint dims, GLenum format, bool dsa, + GLint dims, GLenum intFormat, bool dsa, const char *caller) { GLboolean targetOK; + mesa_format format; + enum mesa_format_layout layout; if (dsa && target == GL_TEXTURE_RECTANGLE) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid target %s)", caller, @@ -4712,21 +4717,33 @@ compressed_subtexture_target_check(struct gl_context *ctx, GLenum target, * 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. + * + * Besides that, the OES_texture_3d spec doesn't specify any list of + * supported formats for CompressedTex*Image3D functions, and + * OES_texture_compressed_ETC1_RGB8_texture mentions only 2D for a + * function supporting it. However, given a KHR conformance test + * expects that the two work together in the obvious way, follow the + * tests instead of the specs. */ - switch (format) { + format = _mesa_glenum_to_compressed_format(intFormat); + layout = _mesa_get_format_layout(format); + switch (layout) { /* These are the only 3D compression formats supported at this time */ - case GL_COMPRESSED_RGBA_BPTC_UNORM: - case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: - case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: - case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: + case MESA_FORMAT_LAYOUT_BPTC: /* valid format */ break; + case MESA_FORMAT_LAYOUT_ASTC: + targetOK = ctx->Extensions.KHR_texture_compression_astc_ldr; + break; + case MESA_FORMAT_LAYOUT_ETC1: + targetOK = ctx->Extensions.OES_compressed_ETC1_RGB8_texture; + break; default: /* invalid format */ _mesa_error(ctx, GL_INVALID_OPERATION, "%s(invalid target %s for format %s)", caller, _mesa_enum_to_string(target), - _mesa_enum_to_string(format)); + _mesa_enum_to_string(intFormat)); return GL_TRUE; } break; -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev