[Mesa-dev] [PATCH] st/mesa: use private pipe_sampler_view in decompress_with_blit()

Jose Fonseca jfonseca at vmware.com
Tue Feb 14 07:19:54 PST 2012


Looks right.

We should probably bail out if the src_view is null too.

Jose

----- Original Message -----
> Similar to the previous commit.  Also fix incorrect setting of the
> sampler view's state after it's created.  We need to specify the
> first/last_level fields in the template instead.
> 
> NOTE: This is a candidate for the 8.0 branch.
> ---
>  src/mesa/state_tracker/st_cb_texture.c |   18 ++++++++++++++----
>  1 files changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/src/mesa/state_tracker/st_cb_texture.c
> b/src/mesa/state_tracker/st_cb_texture.c
> index c2011da..cae26ee 100644
> --- a/src/mesa/state_tracker/st_cb_texture.c
> +++ b/src/mesa/state_tracker/st_cb_texture.c
> @@ -609,8 +609,7 @@ decompress_with_blit(struct gl_context * ctx,
>     struct pipe_context *pipe = st->pipe;
>     struct st_texture_image *stImage = st_texture_image(texImage);
>     struct st_texture_object *stObj =
>     st_texture_object(texImage->TexObject);
> -   struct pipe_sampler_view *src_view =
> -      st_get_texture_sampler_view(stObj, pipe);
> +   struct pipe_sampler_view *src_view;
>     const GLuint width = texImage->Width;
>     const GLuint height = texImage->Height;
>     struct pipe_surface *dst_surface;
> @@ -632,8 +631,17 @@ decompress_with_blit(struct gl_context * ctx,
>        pipe->render_condition(pipe, NULL, 0);
>     }
>  
> -   /* Choose the source mipmap level */
> -   src_view->u.tex.first_level = src_view->u.tex.last_level =
> texImage->Level;
> +   /* Create sampler view that limits fetches to the source mipmap
> level */
> +   {
> +      struct pipe_sampler_view sv_temp;
> +
> +      u_sampler_view_default_template(&sv_temp, stObj->pt,
> stObj->pt->format);
> +
> +      sv_temp.u.tex.first_level =
> +      sv_temp.u.tex.last_level = texImage->Level;
> +
> +      src_view = pipe->create_sampler_view(pipe, stObj->pt,
> &sv_temp);
> +   }
>  
>     /* blit/render/decompress */
>     util_blit_pixels_tex(st->blit,
> @@ -702,6 +710,8 @@ decompress_with_blit(struct gl_context * ctx,
>  
>     /* destroy the temp / dest surface */
>     util_destroy_rgba_surface(dst_texture, dst_surface);
> +
> +   pipe_sampler_view_reference(&src_view, NULL);
>  }
>  
>  
> --
> 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