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

2014-09-29 Thread Thomas Hellstrom
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 thellst...@vmware.com
Cc: Rob Clark robcl...@freedesktop.org
Cc: 10.2 10.3 mesa-sta...@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

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2014-09-29 Thread Sinclair Yeh
Looks good.

Reviewed-by: Sinclair Yeh s...@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 thellst...@vmware.com
 Cc: Rob Clark robcl...@freedesktop.org
 Cc: 10.2 10.3 mesa-sta...@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
 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev