diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-01-14 15:08:18 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-01-14 18:13:48 +0000 |
commit | c1ce34d4509a3f3e963d82ac0569a21706892f8e (patch) | |
tree | 7eb6f03b68e22930de1aa13b9f977b667427fe2d | |
parent | b64751dbdb1b88b91ad97aaf995b4261876cf860 (diff) |
sna/gen6: Tidy markup for when using the BLT is truly preferrable
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/gen6_render.c | 14 | ||||
-rw-r--r-- | src/sna/gen7_render.c | 12 |
2 files changed, 19 insertions, 7 deletions
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index c6fa134c..d1dd1ba4 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -3315,6 +3315,12 @@ gen6_emit_fill_state(struct sna *sna, const struct sna_composite_op *op) gen6_emit_state(sna, op, offset); } +static inline bool prefer_blt_fill(struct sna *sna, + struct kgem_bo *bo) +{ + return sna->kgem.ring != KGEM_RENDER || untiled_tlb_miss(bo); +} + static Bool gen6_render_fill_boxes(struct sna *sna, CARD8 op, @@ -3336,7 +3342,7 @@ gen6_render_fill_boxes(struct sna *sna, return FALSE; } - if (sna->kgem.ring != KGEM_RENDER || + if (prefer_blt_fill(sna, dst_bo) || too_large(dst->drawable.width, dst->drawable.height) || !gen6_check_dst_format(format)) { uint8_t alu = -1; @@ -3558,7 +3564,7 @@ gen6_render_fill(struct sna *sna, uint8_t alu, op); #endif - if (sna->kgem.ring != KGEM_RENDER && + if (prefer_blt_fill(sna, dst_bo) && sna_blt_fill(sna, alu, dst_bo, dst->drawable.bitsPerPixel, color, @@ -3652,7 +3658,7 @@ gen6_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo, #endif /* Prefer to use the BLT if already engaged */ - if (sna->kgem.ring != KGEM_RENDER && + if (prefer_blt_fill(sna, bo) && gen6_render_fill_one_try_blt(sna, dst, bo, color, x1, y1, x2, y2, alu)) return TRUE; @@ -3756,7 +3762,7 @@ gen6_render_clear(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo) dst->drawable.width, dst->drawable.height)); - /* Prefer to use the BLT if already engaged */ + /* Prefer to use the BLT if, and only if, already engaged */ if (sna->kgem.ring == KGEM_BLT && gen6_render_clear_try_blt(sna, dst, bo)) return TRUE; diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index a2ec7153..22038eab 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -3280,6 +3280,12 @@ gen7_emit_fill_state(struct sna *sna, const struct sna_composite_op *op) gen7_emit_state(sna, op, offset); } +static inline bool prefer_blt_fill(struct sna *sna, + struct kgem_bo *bo) +{ + return sna->kgem.ring != KGEM_RENDER || untiled_tlb_miss(bo); +} + static Bool gen7_render_fill_boxes(struct sna *sna, CARD8 op, @@ -3301,7 +3307,7 @@ gen7_render_fill_boxes(struct sna *sna, return FALSE; } - if (sna->kgem.ring != KGEM_RENDER || + if (prefer_blt_fill(sna, dst_bo) || too_large(dst->drawable.width, dst->drawable.height) || !gen7_check_dst_format(format)) { uint8_t alu = -1; @@ -3524,7 +3530,7 @@ gen7_render_fill(struct sna *sna, uint8_t alu, op); #endif - if (sna->kgem.ring != KGEM_RENDER && + if (prefer_blt_fill(sna, dst_bo) && sna_blt_fill(sna, alu, dst_bo, dst->drawable.bitsPerPixel, color, @@ -3618,7 +3624,7 @@ gen7_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo, #endif /* Prefer to use the BLT if already engaged */ - if (sna->kgem.ring != KGEM_RENDER && + if (prefer_blt_fill(sna, bo) && gen7_render_fill_one_try_blt(sna, dst, bo, color, x1, y1, x2, y2, alu)) return TRUE; |