diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-07-04 17:40:58 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-07-04 17:40:58 +0100 |
commit | 54ee41bf05e328ed2f2cd2a64c21afe3efe2556a (patch) | |
tree | 5bbda36ff620b2f637c763a94a22bf9c5b2a56b6 /src | |
parent | d36623aaebdc454bd281f34332edcad5d94f34c0 (diff) |
sna: Pass a hint to the backends when using copy_boxes for readback
If we expect to only emit this set of copy_boxes() and then submit the
batch, we would prefer to use the BLT for its lower latency.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src')
-rw-r--r-- | src/sna/gen2_render.c | 8 | ||||
-rw-r--r-- | src/sna/gen3_render.c | 2 | ||||
-rw-r--r-- | src/sna/gen4_render.c | 15 | ||||
-rw-r--r-- | src/sna/gen5_render.c | 2 | ||||
-rw-r--r-- | src/sna/gen6_render.c | 10 | ||||
-rw-r--r-- | src/sna/gen7_render.c | 10 | ||||
-rw-r--r-- | src/sna/sna_accel.c | 30 | ||||
-rw-r--r-- | src/sna/sna_display.c | 7 | ||||
-rw-r--r-- | src/sna/sna_dri.c | 6 | ||||
-rw-r--r-- | src/sna/sna_io.c | 12 | ||||
-rw-r--r-- | src/sna/sna_render.c | 2 | ||||
-rw-r--r-- | src/sna/sna_render.h | 4 | ||||
-rw-r--r-- | src/sna/sna_tiling.c | 8 | ||||
-rw-r--r-- | src/sna/sna_trapezoids.c | 4 |
14 files changed, 69 insertions, 51 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c index 5fd995b3..b41c3865 100644 --- a/src/sna/gen2_render.c +++ b/src/sna/gen2_render.c @@ -2409,7 +2409,7 @@ static inline Bool prefer_blt_fill(struct sna *sna) #endif } -static inline Bool prefer_blt_copy(struct sna *sna) +static inline Bool prefer_blt_copy(struct sna *sna, unsigned flags) { #if PREFER_BLT_COPY return true; @@ -2864,7 +2864,7 @@ static Bool gen2_render_copy_boxes(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy, PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy, - const BoxRec *box, int n) + const BoxRec *box, int n, unsigned flags) { struct sna_composite_op tmp; @@ -2882,7 +2882,7 @@ gen2_render_copy_boxes(struct sna *sna, uint8_t alu, DBG(("%s (%d, %d)->(%d, %d) x %d\n", __FUNCTION__, src_dx, src_dy, dst_dx, dst_dy, n)); - if (prefer_blt_copy(sna) && + if (prefer_blt_copy(sna, flags) && sna_blt_compare_depth(&src->drawable, &dst->drawable) && sna_blt_copy_boxes(sna, alu, src_bo, src_dx, src_dy, @@ -3048,7 +3048,7 @@ gen2_render_copy(struct sna *sna, uint8_t alu, #endif /* Prefer to use the BLT */ - if (prefer_blt_copy(sna) && + if (prefer_blt_copy(sna, 0) && sna_blt_compare_depth(&src->drawable, &dst->drawable) && sna_blt_copy(sna, alu, src_bo, dst_bo, diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c index 63bbd766..cfc8c63e 100644 --- a/src/sna/gen3_render.c +++ b/src/sna/gen3_render.c @@ -4040,7 +4040,7 @@ static Bool gen3_render_copy_boxes(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy, PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy, - const BoxRec *box, int n) + const BoxRec *box, int n, unsigned flags) { struct sna_composite_op tmp; diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c index c3a82046..c5775360 100644 --- a/src/sna/gen4_render.c +++ b/src/sna/gen4_render.c @@ -2576,11 +2576,22 @@ gen4_render_copy_one(struct sna *sna, FLUSH(op); } +static inline bool prefer_blt_copy(struct sna *sna, unsigned flags) +{ +#if PREFER_BLT + return true; + (void)sna; +#else + return sna->kgem.mode != KGEM_RENDER; +#endif + (void)flags; +} + static Bool gen4_render_copy_boxes(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy, PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy, - const BoxRec *box, int n) + const BoxRec *box, int n, unsigned flags) { struct sna_composite_op tmp; @@ -2597,7 +2608,7 @@ gen4_render_copy_boxes(struct sna *sna, uint8_t alu, box, n); #endif - if (prefer_blt(sna) && + if (prefer_blt_copy(sna, flags) && sna_blt_compare_depth(&src->drawable, &dst->drawable) && sna_blt_copy_boxes(sna, alu, src_bo, src_dx, src_dy, diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c index 46a37a0b..49cc17ed 100644 --- a/src/sna/gen5_render.c +++ b/src/sna/gen5_render.c @@ -2909,7 +2909,7 @@ static Bool gen5_render_copy_boxes(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy, PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy, - const BoxRec *box, int n) + const BoxRec *box, int n, unsigned flags) { struct sna_composite_op tmp; diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 81fad355..778a0722 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -3238,9 +3238,11 @@ static bool prefer_blt_bo(struct sna *sna, static inline bool prefer_blt_copy(struct sna *sna, PixmapPtr src, struct kgem_bo *src_bo, - PixmapPtr dst, struct kgem_bo *dst_bo) + PixmapPtr dst, struct kgem_bo *dst_bo, + unsigned flags) { return (sna->kgem.ring == KGEM_BLT || + (flags & COPY_LAST && sna->kgem.mode == KGEM_NONE) || prefer_blt_bo(sna, src, src_bo) || prefer_blt_bo(sna, dst, dst_bo)); } @@ -3280,7 +3282,7 @@ static Bool gen6_render_copy_boxes(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy, PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy, - const BoxRec *box, int n) + const BoxRec *box, int n, unsigned flags) { struct sna_composite_op tmp; @@ -3302,7 +3304,7 @@ gen6_render_copy_boxes(struct sna *sna, uint8_t alu, dst_bo, dst_dx, dst_dy, box, n))); - if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo) && + if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo, flags) && sna_blt_compare_depth(&src->drawable, &dst->drawable) && sna_blt_copy_boxes(sna, alu, src_bo, src_dx, src_dy, @@ -3537,7 +3539,7 @@ gen6_render_copy(struct sna *sna, uint8_t alu, src->drawable.width, src->drawable.height, dst->drawable.width, dst->drawable.height)); - if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo) && + if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo, 0) && sna_blt_compare_depth(&src->drawable, &dst->drawable) && sna_blt_copy(sna, alu, src_bo, dst_bo, diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index d3032869..f9b2e9e5 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -3322,9 +3322,11 @@ static bool prefer_blt_bo(struct sna *sna, static inline bool prefer_blt_copy(struct sna *sna, PixmapPtr src, struct kgem_bo *src_bo, - PixmapPtr dst, struct kgem_bo *dst_bo) + PixmapPtr dst, struct kgem_bo *dst_bo, + unsigned flags) { return (sna->kgem.ring == KGEM_BLT || + (flags & COPY_LAST && sna->kgem.mode == KGEM_NONE) || prefer_blt_bo(sna, src, src_bo) || prefer_blt_bo(sna, dst, dst_bo)); } @@ -3364,7 +3366,7 @@ static Bool gen7_render_copy_boxes(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy, PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy, - const BoxRec *box, int n) + const BoxRec *box, int n, unsigned flags) { struct sna_composite_op tmp; @@ -3386,7 +3388,7 @@ gen7_render_copy_boxes(struct sna *sna, uint8_t alu, dst_bo, dst_dx, dst_dy, box, n))); - if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo) && + if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo, flags) && sna_blt_compare_depth(&src->drawable, &dst->drawable) && sna_blt_copy_boxes(sna, alu, src_bo, src_dx, src_dy, @@ -3644,7 +3646,7 @@ gen7_render_copy(struct sna *sna, uint8_t alu, src->drawable.width, src->drawable.height, dst->drawable.width, dst->drawable.height)); - if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo) && + if (prefer_blt_copy(sna, src, src_bo, dst, dst_bo, 0) && sna_blt_compare_depth(&src->drawable, &dst->drawable) && sna_blt_copy(sna, alu, src_bo, dst_bo, diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 537b2871..1919b2ef 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -594,7 +594,7 @@ struct kgem_bo *sna_pixmap_change_tiling(PixmapPtr pixmap, uint32_t tiling) if (!sna->render.copy_boxes(sna, GXcopy, pixmap, priv->gpu_bo, 0, 0, pixmap, bo, 0, 0, - &box, 1)) { + &box, 1, 0)) { DBG(("%s: copy failed\n", __FUNCTION__)); kgem_bo_destroy(&sna->kgem, bo); return NULL; @@ -1232,7 +1232,7 @@ skip_inplace_map: ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->gpu_bo, 0, 0, pixmap, priv->cpu_bo, 0, 0, - box, n); + box, n, COPY_LAST); if (!ok) sna_read_boxes(sna, priv->gpu_bo, 0, 0, @@ -1690,7 +1690,7 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable, ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->gpu_bo, 0, 0, pixmap, priv->cpu_bo, 0, 0, - box, n); + box, n, COPY_LAST); if (!ok) sna_read_boxes(sna, priv->gpu_bo, 0, 0, @@ -1798,7 +1798,7 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable, ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->gpu_bo, 0, 0, pixmap, priv->cpu_bo, 0, 0, - box, n); + box, n, COPY_LAST); if (!ok) sna_read_boxes(sna, @@ -1823,7 +1823,7 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable, ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->gpu_bo, 0, 0, pixmap, priv->cpu_bo, 0, 0, - box, n); + box, n, COPY_LAST); if (!ok) sna_read_boxes(sna, priv->gpu_bo, 0, 0, @@ -1848,7 +1848,7 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable, ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->gpu_bo, 0, 0, pixmap, priv->cpu_bo, 0, 0, - box, n); + box, n, COPY_LAST); if (!ok) sna_read_boxes(sna, priv->gpu_bo, 0, 0, @@ -2096,7 +2096,7 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->cpu_bo, 0, 0, pixmap, priv->gpu_bo, 0, 0, - box, n); + box, n, 0); if (!ok) { if (pixmap->devPrivate.ptr == NULL) { assert(priv->stride && priv->ptr); @@ -2134,7 +2134,7 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->cpu_bo, 0, 0, pixmap, priv->gpu_bo, 0, 0, - box, 1); + box, 1, 0); if (!ok) { if (pixmap->devPrivate.ptr == NULL) { assert(priv->stride && priv->ptr); @@ -2163,7 +2163,7 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->cpu_bo, 0, 0, pixmap, priv->gpu_bo, 0, 0, - box, n); + box, n,0); if (!ok) { if (pixmap->devPrivate.ptr == NULL) { assert(priv->stride && priv->ptr); @@ -2641,7 +2641,7 @@ sna_pixmap_move_to_gpu(PixmapPtr pixmap, unsigned flags) ok = sna->render.copy_boxes(sna, GXcopy, pixmap, priv->cpu_bo, 0, 0, pixmap, priv->gpu_bo, 0, 0, - box, n); + box, n, 0); if (!ok) { if (pixmap->devPrivate.ptr == NULL) { assert(priv->stride && priv->ptr); @@ -3657,7 +3657,7 @@ sna_self_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, if (!sna->render.copy_boxes(sna, alu, pixmap, priv->gpu_bo, dx, dy, pixmap, priv->gpu_bo, tx, ty, - box, n)) { + box, n, 0)) { DBG(("%s: fallback - accelerated copy boxes failed\n", __FUNCTION__)); goto fallback; @@ -3874,7 +3874,7 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, if (!sna->render.copy_boxes(sna, alu, src_pixmap, src_priv->gpu_bo, src_dx, src_dy, dst_pixmap, bo, dst_dx, dst_dy, - box, n)) { + box, n, 0)) { DBG(("%s: fallback - accelerated copy boxes failed\n", __FUNCTION__)); goto fallback; @@ -3909,7 +3909,7 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, if (!sna->render.copy_boxes(sna, alu, src_pixmap, src_priv->gpu_bo, src_dx, src_dy, dst_pixmap, bo, dst_dx, dst_dy, - box, n)) { + box, n, 0)) { DBG(("%s: fallback - accelerated copy boxes failed\n", __FUNCTION__)); goto fallback; @@ -3945,7 +3945,7 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, if (!sna->render.copy_boxes(sna, alu, src_pixmap, src_priv->cpu_bo, src_dx, src_dy, dst_pixmap, bo, dst_dx, dst_dy, - box, n)) { + box, n, 0)) { DBG(("%s: fallback - accelerated copy boxes failed\n", __FUNCTION__)); goto fallback; @@ -4005,7 +4005,7 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc, if (!sna->render.copy_boxes(sna, alu, tmp, sna_pixmap_get_bo(tmp), dx, dy, dst_pixmap, bo, dst_dx, dst_dy, - box, n)) { + box, n, 0)) { DBG(("%s: fallback - accelerated copy boxes failed\n", __FUNCTION__)); tmp->drawable.pScreen->DestroyPixmap(tmp); diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index f1a0b841..f59eed52 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -814,7 +814,7 @@ void sna_copy_fbcon(struct sna *sna) ok = sna->render.copy_boxes(sna, GXcopy, scratch, bo, sx, sy, sna->front, priv->gpu_bo, dx, dy, - &box, 1); + &box, 1, 0); if (!DAMAGE_IS_ALL(priv->gpu_damage)) sna_damage_add_box(&priv->gpu_damage, &box); @@ -2780,7 +2780,7 @@ sna_crtc_redisplay(xf86CrtcPtr crtc, RegionPtr region) if (sna->render.copy_boxes(sna, GXcopy, sna->front, sna_pixmap_get_bo(sna->front), 0, 0, &tmp, sna_crtc->bo, -tx, -ty, - REGION_RECTS(region), REGION_NUM_RECTS(region))) + REGION_RECTS(region), REGION_NUM_RECTS(region), 0)) return; } @@ -2909,7 +2909,8 @@ disable: sna->front, new, 0, 0, sna->front, old, 0, 0, REGION_RECTS(region), - REGION_NUM_RECTS(region)); + REGION_NUM_RECTS(region), + COPY_LAST); kgem_submit(&sna->kgem); sna_pixmap(sna->front)->gpu_bo = old; diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c index 4519f170..a10efc7b 100644 --- a/src/sna/sna_dri.c +++ b/src/sna/sna_dri.c @@ -568,7 +568,7 @@ sna_dri_copy_to_front(struct sna *sna, DrawablePtr draw, RegionPtr region, sna->render.copy_boxes(sna, GXcopy, (PixmapPtr)draw, src_bo, -draw->x, -draw->y, pixmap, dst_bo, dx, dy, - boxes, n); + boxes, n, COPY_LAST); DBG(("%s: flushing? %d\n", __FUNCTION__, flush)); if (flush) { /* STAT! */ @@ -654,7 +654,7 @@ sna_dri_copy_from_front(struct sna *sna, DrawablePtr draw, RegionPtr region, sna->render.copy_boxes(sna, GXcopy, pixmap, src_bo, dx, dy, (PixmapPtr)draw, dst_bo, -draw->x, -draw->y, - boxes, n); + boxes, n, COPY_LAST); if (region == &clip) pixman_region_fini(&clip); @@ -697,7 +697,7 @@ sna_dri_copy(struct sna *sna, DrawablePtr draw, RegionPtr region, sna->render.copy_boxes(sna, GXcopy, (PixmapPtr)draw, src_bo, 0, 0, (PixmapPtr)draw, dst_bo, 0, 0, - boxes, n); + boxes, n, COPY_LAST); if (region == &clip) pixman_region_fini(&clip); diff --git a/src/sna/sna_io.c b/src/sna/sna_io.c index 8d045484..ffa86b10 100644 --- a/src/sna/sna_io.c +++ b/src/sna/sna_io.c @@ -276,7 +276,7 @@ fallback: if (!sna->render.copy_boxes(sna, GXcopy, dst, src_bo, src_dx, src_dy, &tmp, dst_bo, -tile.x1, -tile.y1, - clipped, c-clipped)) { + clipped, c-clipped, COPY_LAST)) { kgem_bo_destroy(&sna->kgem, dst_bo); if (clipped != stack) free(clipped); @@ -316,7 +316,7 @@ fallback: if (!sna->render.copy_boxes(sna, GXcopy, dst, src_bo, src_dx, src_dy, &tmp, dst_bo, -extents.x1, -extents.y1, - box, nbox)) { + box, nbox, COPY_LAST)) { kgem_bo_destroy(&sna->kgem, dst_bo); goto fallback; } @@ -689,7 +689,7 @@ tile: n = sna->render.copy_boxes(sna, GXcopy, &tmp, src_bo, -tile.x1, -tile.y1, dst, dst_bo, dst_dx, dst_dy, - clipped, c - clipped); + clipped, c - clipped, 0); else n = 1; @@ -736,7 +736,7 @@ tile: n = sna->render.copy_boxes(sna, GXcopy, &tmp, src_bo, -extents.x1, -extents.y1, dst, dst_bo, dst_dx, dst_dy, - box, nbox); + box, nbox, 0); kgem_bo_destroy(&sna->kgem, src_bo); @@ -973,7 +973,7 @@ fallback: n = sna->render.copy_boxes(sna, GXcopy, &tmp, src_bo, -extents.x1, -extents.y1, dst, dst_bo, dst_dx, dst_dy, - box, nbox); + box, nbox, 0); kgem_bo_destroy(&sna->kgem, src_bo); @@ -1144,7 +1144,7 @@ indirect_replace(struct sna *sna, ret = sna->render.copy_boxes(sna, GXcopy, pixmap, src_bo, 0, 0, pixmap, bo, 0, 0, - &box, 1); + &box, 1, 0); kgem_bo_destroy(kgem, src_bo); diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c index a072994a..c22965c7 100644 --- a/src/sna/sna_render.c +++ b/src/sna/sna_render.c @@ -1167,7 +1167,7 @@ sna_render_picture_extract(struct sna *sna, if (!sna->render.copy_boxes(sna, GXcopy, pixmap, src_bo, 0, 0, &tmp, bo, -box.x1, -box.y1, - &box, 1)) { + &box, 1, 0)) { kgem_bo_destroy(&sna->kgem, bo); bo = NULL; } diff --git a/src/sna/sna_render.h b/src/sna/sna_render.h index 1cc3af19..0eb7e90a 100644 --- a/src/sna/sna_render.h +++ b/src/sna/sna_render.h @@ -237,7 +237,9 @@ struct sna_render { Bool (*copy_boxes)(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy, PixmapPtr dst, struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy, - const BoxRec *box, int n); + const BoxRec *box, int n, unsigned flags); +#define COPY_LAST 0x1 + Bool (*copy)(struct sna *sna, uint8_t alu, PixmapPtr src, struct kgem_bo *src_bo, PixmapPtr dst, struct kgem_bo *dst_bo, diff --git a/src/sna/sna_tiling.c b/src/sna/sna_tiling.c index 27a9dc81..b20eceb8 100644 --- a/src/sna/sna_tiling.c +++ b/src/sna/sna_tiling.c @@ -659,7 +659,7 @@ sna_tiling_fill_boxes(struct sna *sna, if (!sna->render.copy_boxes(sna, GXcopy, dst, dst_bo, 0, 0, &tmp, bo, -dx, -dy, - REGION_RECTS(&this), REGION_NUM_RECTS(&this))) + REGION_RECTS(&this), REGION_NUM_RECTS(&this), 0)) goto err; RegionTranslate(&this, -dx, -dy); @@ -671,7 +671,7 @@ sna_tiling_fill_boxes(struct sna *sna, if (!sna->render.copy_boxes(sna, GXcopy, &tmp, bo, 0, 0, dst, dst_bo, dx, dy, - REGION_RECTS(&this), REGION_NUM_RECTS(&this))) + REGION_RECTS(&this), REGION_NUM_RECTS(&this), 0)) goto err; kgem_bo_destroy(&sna->kgem, bo); @@ -898,11 +898,11 @@ sna_tiling_copy_boxes(struct sna *sna, uint8_t alu, i = (sna->render.copy_boxes(sna, GXcopy, src, src_bo, src_dx, src_dy, &p, tmp_bo, -tile.x1, -tile.y1, - clipped, c - clipped) && + clipped, c - clipped, 0) && sna->render.copy_boxes(sna, alu, &p, tmp_bo, -tile.x1, -tile.y1, dst, dst_bo, dst_dx, dst_dy, - clipped, c - clipped)); + clipped, c - clipped, 0)); kgem_bo_destroy(&sna->kgem, tmp_bo); diff --git a/src/sna/sna_trapezoids.c b/src/sna/sna_trapezoids.c index 36defa10..d83c083c 100644 --- a/src/sna/sna_trapezoids.c +++ b/src/sna/sna_trapezoids.c @@ -5779,7 +5779,7 @@ trap_mask_converter(PicturePtr picture, sna->render.copy_boxes(sna, GXcopy, scratch, sna_pixmap_get_bo(scratch), -extents.x1, -extents.x1, pixmap, priv->gpu_bo, x, y, - &extents, 1); + &extents, 1, 0); mark_damaged(pixmap, priv, &extents ,x, y); screen->DestroyPixmap(scratch); @@ -5857,7 +5857,7 @@ trap_upload(PicturePtr picture, sna->render.copy_boxes(sna, GXcopy, scratch, sna_pixmap_get_bo(scratch), -extents.x1, -extents.x1, pixmap, priv->gpu_bo, x, y, - &extents, 1); + &extents, 1, 0); mark_damaged(pixmap, priv, &extents, x, y); screen->DestroyPixmap(scratch); |