[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