[Mesa-dev] [PATCH] st/mesa: fix sampler view counting

Marek Olšák maraeo at gmail.com
Fri Aug 17 11:03:36 PDT 2012


This looks good, but I don't see how it could fix anything.
Bound-but-unused sampler views should have no effect on rendering.

Marek

On Fri, Aug 17, 2012 at 4:28 PM, Brian Paul <brianp at vmware.com> wrote:
> In the past, when we called pipe::set_sampler_views(n) the drivers set
> samplers [n..MAX] to NULL.  We no longer do that.  The state tracker
> code was already trying to set unused sampler views to NULL to cover
> that case, but the logic was broken and unnoticed until now.  This patch
> fixes it.
>
> Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53617
> ---
>  src/mesa/state_tracker/st_atom_texture.c |   11 +++++++++--
>  1 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
> index 6e2efd9..df05e83 100644
> --- a/src/mesa/state_tracker/st_atom_texture.c
> +++ b/src/mesa/state_tracker/st_atom_texture.c
> @@ -265,7 +265,7 @@ update_textures(struct st_context *st,
>  {
>     const GLuint old_max = *num_textures;
>     GLbitfield samplers_used = prog->SamplersUsed;
> -   GLuint unit;
> +   GLuint unit, new_count;
>
>     if (samplers_used == 0x0 && old_max == 0)
>        return;
> @@ -294,9 +294,16 @@ update_textures(struct st_context *st,
>        pipe_sampler_view_reference(&(sampler_views[unit]), sampler_view);
>     }
>
> +   /* Ex: if old_max = 3 and *num_textures = 1, we need to pass an
> +    * array of views={X, NULL, NULL} to unref the old texture views
> +    * at positions [1] and [2].
> +    */
> +   new_count = MAX2(*num_textures, old_max);
> +   assert(new_count <= max_units);
> +
>     cso_set_sampler_views(st->cso_context,
>                           shader_stage,
> -                         MIN2(*num_textures, max_units),
> +                         new_count,
>                           sampler_views);
>  }
>
> --
> 1.7.3.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list