[Mesa-dev] [PATCH] st/xa: Fix regression in xa_yuv_planar_blit()
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()
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