[Mesa-dev] [PATCH] st/xa: Fix regression in xa_yuv_planar_blit()

Sinclair Yeh syeh at vmware.com
Mon Sep 29 13:28:45 PDT 2014


Looks good.

Reviewed-by: Sinclair Yeh <syeh at vmware.com>

On Mon, Sep 29, 2014 at 08:13:46AM +0200, Thomas Hellstrom wrote:
> Commit "st/xa: scissor to help tilers" broke xa_yuv_planar_blit() and vmwgfx
> textured video. Fix this by implementing scissors also in the yuv draw path.
> 
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
> Cc: Rob Clark <robclark at freedesktop.org>
> Cc: "10.2 10.3" <mesa-stable at lists.freedesktop.org>
> ---
>  src/gallium/state_trackers/xa/xa_renderer.c | 11 +++++++++++
>  src/gallium/state_trackers/xa/xa_yuv.c      |  1 +
>  2 files changed, 12 insertions(+)
> 
> diff --git a/src/gallium/state_trackers/xa/xa_renderer.c b/src/gallium/state_trackers/xa/xa_renderer.c
> index 121d8ed..780b247 100644
> --- a/src/gallium/state_trackers/xa/xa_renderer.c
> +++ b/src/gallium/state_trackers/xa/xa_renderer.c
> @@ -530,11 +530,22 @@ renderer_draw_yuv(struct xa_context *r,
>                           src_x, src_y, src_w, src_h,
>                           dst_x, dst_y, dst_w, dst_h, srf);
>  
> +   if (!r->scissor_valid) {
> +       r->scissor.minx = 0;
> +       r->scissor.miny = 0;
> +       r->scissor.maxx = r->dst->tex->width0;
> +       r->scissor.maxy = r->dst->tex->height0;
> +   }
> +
> +   r->pipe->set_scissor_states(r->pipe, 0, 1, &r->scissor);
> +
>     cso_set_vertex_elements(r->cso, num_attribs, r->velems);
>     util_draw_user_vertex_buffer(r->cso, r->buffer, PIPE_PRIM_QUADS,
>                                  4,	/* verts */
>                                  num_attribs);	/* attribs/vert */
>     r->buffer_size = 0;
> +
> +   xa_scissor_reset(r);
>  }
>  
>  void
> diff --git a/src/gallium/state_trackers/xa/xa_yuv.c b/src/gallium/state_trackers/xa/xa_yuv.c
> index 43f56ff..1519639 100644
> --- a/src/gallium/state_trackers/xa/xa_yuv.c
> +++ b/src/gallium/state_trackers/xa/xa_yuv.c
> @@ -146,6 +146,7 @@ xa_yuv_planar_blit(struct xa_context *r,
>  	int w = box->x2 - box->x1;
>  	int h = box->y2 - box->y1;
>  
> +        xa_scissor_update(r, x, y, box->x2, box->y2);
>  	renderer_draw_yuv(r,
>  			  (float)src_x + scale_x * (x - dst_x),
>  			  (float)src_y + scale_y * (y - dst_y),
> -- 
> 1.8.3.2
> 


More information about the mesa-dev mailing list