[Mesa-dev] [PATCH] st/mesa: don't allocate mipmapped texture for NEAREST_MIPMAP_LINEAR

Marek Olšák maraeo at gmail.com
Sat Aug 10 16:14:26 UTC 2019


Ping

On Fri., Aug. 2, 2019, 19:13 Marek Olšák, <maraeo at gmail.com> wrote:

> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
>  src/mesa/state_tracker/st_cb_texture.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/src/mesa/state_tracker/st_cb_texture.c
> b/src/mesa/state_tracker/st_cb_texture.c
> index 0edb3ea5c7e..1ace61863ff 100644
> --- a/src/mesa/state_tracker/st_cb_texture.c
> +++ b/src/mesa/state_tracker/st_cb_texture.c
> @@ -516,20 +516,32 @@ allocate_full_mipmap(const struct st_texture_object
> *stObj,
>        return FALSE;
>
>     if (stObj->base.BaseLevel == 0 && stObj->base.MaxLevel == 0)
>        return FALSE;
>
>     if (stObj->base.Sampler.MinFilter == GL_NEAREST ||
>         stObj->base.Sampler.MinFilter == GL_LINEAR)
>        /* not a mipmap minification filter */
>        return FALSE;
>
> +   /* If the following sequence of GL calls is used:
> +    *   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0, GL_RGB, ...
> +    *   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
> +    *
> +    * we would needlessly allocate a mipmapped texture, because the
> initial
> +    * MinFilter is GL_NEAREST_MIPMAP_LINEAR. Catch this case and don't
> +    * allocate a mipmapped texture by default. This may cause texture
> +    * reallocation later, but GL_NEAREST_MIPMAP_LINEAR is pretty rare.
> +    */
> +   if (stObj->base.Sampler.MinFilter == GL_NEAREST_MIPMAP_LINEAR)
> +      return FALSE;
> +
>     if (stObj->base.Target == GL_TEXTURE_3D)
>        /* 3D textures are seldom mipmapped */
>        return FALSE;
>
>     return TRUE;
>  }
>
>
>  /**
>   * Try to allocate a pipe_resource object for the given st_texture_object.
> --
> 2.17.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190810/fa308518/attachment.html>


More information about the mesa-dev mailing list