[Mesa-dev] [PATCH 2/4] st/mesa: return appropriate mesa format for ETC texture formats
Marek Olšák
maraeo at gmail.com
Sat Jul 9 23:58:13 UTC 2016
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Fri, Jul 8, 2016 at 8:48 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> 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 <imirkin at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list