[Mesa-stable] [Mesa-dev] [PATCH] st/mesa: use surface format to generate mipmaps when available

Roland Scheidegger sroland at vmware.com
Thu Jan 14 11:25:04 PST 2016


Looks good to me.

Reviewed-by: Roland Scheidegger <sroland at vmware.com>

Am 14.01.2016 um 19:46 schrieb Ilia Mirkin:
> This fixes the recently posted mipmap + texture views piglit test.
> 
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: "11.0 11.1" <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/state_tracker/st_gen_mipmap.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
> index 3e6c0a7..c4b3492 100644
> --- a/src/mesa/state_tracker/st_gen_mipmap.c
> +++ b/src/mesa/state_tracker/st_gen_mipmap.c
> @@ -80,6 +80,7 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
>     struct st_texture_object *stObj = st_texture_object(texObj);
>     struct pipe_resource *pt = st_get_texobj_resource(texObj);
>     const uint baseLevel = texObj->BaseLevel;
> +   enum pipe_format format;
>     uint lastLevel, first_layer, last_layer;
>     uint dstLevel;
>  
> @@ -149,16 +150,21 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
>        last_layer = util_max_layer(pt, baseLevel);
>     }
>  
> +   if (stObj->surface_based)
> +      format = stObj->surface_format;
> +   else
> +      format = pt->format;
> +
>     /* First see if the driver supports hardware mipmap generation,
>      * if not then generate the mipmap by rendering/texturing.
>      * If that fails, use the software fallback.
>      */
>     if (!st->pipe->screen->get_param(st->pipe->screen,
>                                      PIPE_CAP_GENERATE_MIPMAP) ||
> -       !st->pipe->generate_mipmap(st->pipe, pt, pt->format, baseLevel,
> +       !st->pipe->generate_mipmap(st->pipe, pt, format, baseLevel,
>                                    lastLevel, first_layer, last_layer)) {
>  
> -      if (!util_gen_mipmap(st->pipe, pt, pt->format, baseLevel, lastLevel,
> +      if (!util_gen_mipmap(st->pipe, pt, format, baseLevel, lastLevel,
>                             first_layer, last_layer, PIPE_TEX_FILTER_LINEAR)) {
>           _mesa_generate_mipmap(ctx, target, texObj);
>        }
> 



More information about the mesa-stable mailing list