From e5d2c5b89944007d69347fd419789312be573d0c Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Mon, 7 Apr 2014 02:37:39 -0700 Subject: st/xa: Bind destination before setting new state 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. Cc: "10.1" Signed-off-by: Thomas Hellstrom Reviewed-by: Jakob Bornecrantz --- src/gallium/state_trackers/xa/xa_renderer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/xa/xa_renderer.c b/src/gallium/state_trackers/xa/xa_renderer.c index 9ba78bed4df..0f5044df9e2 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; -- cgit v1.2.3