Even when the backend driver does not support ETC formats, we handle the decoding into an uncompressed backing texture. However as far as core mesa is concerned, it's an ETC texture and we should return the relevant ETC mesa format. This condition can get hit when using glTexStorage to create the texture object.
Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> --- src/mesa/state_tracker/st_format.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index acb7725..99527b7 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -37,6 +37,7 @@ #include "main/enums.h" #include "main/formats.h" #include "main/glformats.h" +#include "main/texcompress.h" #include "main/texgetimage.h" #include "main/teximage.h" #include "main/texstore.h" @@ -2284,6 +2285,12 @@ st_ChooseTextureFormat(struct gl_context *ctx, GLenum target, } if (pFormat == PIPE_FORMAT_NONE) { + /* lie about using etc1/etc2 natively if we do decoding tricks */ + mFormat = _mesa_glenum_to_compressed_format(internalFormat); + if ((mFormat == MESA_FORMAT_ETC1_RGB8 && !st->has_etc1) || + (_mesa_is_format_etc2(mFormat) && !st->has_etc2)) + return mFormat; + /* no luck at all */ return MESA_FORMAT_NONE; } -- 2.7.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev