[Mesa-dev] [PATCH] st/xa: Bind destination before setting new state
Jakob Bornecrantz
wallbraker at gmail.com
Mon Apr 7 04:38:14 PDT 2014
On Mon, Apr 7, 2014 at 12:32 PM, Thomas Hellstrom <thellstrom at vmware.com> wrote:
> Binding a new destination may cause the svga driver to emit draw calls
> while propagating the surface. Make sure this doesn't happen in the middle
> of sampler state setup where state may be incosistent.
>
> In practice, surface propagation should never happen here and even if it did,
> it wouldn't be a valid reason for the svga driver to emit partially set up
> state, but to avoid future uncertainties, make sure this doesn't happen
> anyway.
>
> Found while auditing the state tracker for inconsistent sampler state /
> sampler view setup.
>
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
> ---
> src/gallium/state_trackers/xa/xa_renderer.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>
Cheers, Jakob.
>
> diff --git a/src/gallium/state_trackers/xa/xa_renderer.c b/src/gallium/state_trackers/xa/xa_renderer.c
> index b775509..d22851f 100644
> --- a/src/gallium/state_trackers/xa/xa_renderer.c
> +++ b/src/gallium/state_trackers/xa/xa_renderer.c
> @@ -406,6 +406,9 @@ renderer_copy_prepare(struct xa_context *r,
> PIPE_BIND_RENDER_TARGET));
> (void)screen;
>
> + renderer_bind_destination(r, dst_surface,
> + dst_surface->width, dst_surface->height);
> +
> /* set misc state we care about */
> {
> struct pipe_blend_state blend;
> @@ -435,9 +438,6 @@ renderer_copy_prepare(struct xa_context *r,
> cso_single_sampler_done(r->cso, PIPE_SHADER_FRAGMENT);
> }
>
> - renderer_bind_destination(r, dst_surface,
> - dst_surface->width, dst_surface->height);
> -
> /* texture/sampler view */
> {
> struct pipe_sampler_view templ;
> --
> 1.9.1
> _______________________________________________
> 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