sna/gen2: Prefer to use the BLT

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2011-10-17 23:20:20 +01:00
parent adef3a56cd
commit 729f1ec786
1 changed files with 26 additions and 10 deletions

View File

@ -53,10 +53,8 @@
#define NO_FILL_ONE 0
#define NO_FILL_BOXES 0
#define PREFER_3D_COPY 0
#define PREFER_3D_COPY_BOXES 0
#define PREFER_3D_FILL 0
#define PREFER_3D_FILL_BOXES 0
#define PREFER_BLT_FILL 1
#define PREFER_BLT_COPY 1
#define BATCH(v) batch_emit(sna, v)
#define BATCH_F(v) batch_emit_float(sna, v)
@ -1220,7 +1218,7 @@ try_blt(struct sna *sna,
{
uint32_t color;
if (sna->kgem.mode == KGEM_BLT) {
if (sna->kgem.mode != KGEM_RENDER) {
DBG(("%s: already performing BLT\n", __FUNCTION__));
return TRUE;
}
@ -1875,6 +1873,24 @@ gen2_render_fill_boxes_try_blt(struct sna *sna,
pixel, box, n);
}
static inline Bool prefer_blt_fill(struct sna *sna)
{
#if PREFER_BLT_FILL
return true;
#else
return sna->kgem.mode != KGEM_RENDER;
#endif
}
static inline Bool prefer_blt_copy(struct sna *sna)
{
#if PREFER_BLT_COPY
return true;
#else
return sna->kgem.mode != KGEM_RENDER;
#endif
}
static Bool
gen2_render_fill_boxes(struct sna *sna,
CARD8 op,
@ -1910,7 +1926,7 @@ gen2_render_fill_boxes(struct sna *sna,
dst, dst_bo,
box, n);
if (!PREFER_3D_FILL_BOXES && sna->kgem.mode != KGEM_RENDER &&
if (prefer_blt_fill(sna) &&
gen2_render_fill_boxes_try_blt(sna, op, format, color,
dst, dst_bo,
box, n))
@ -2040,7 +2056,7 @@ gen2_render_fill(struct sna *sna, uint8_t alu,
#endif
/* Prefer to use the BLT if already engaged */
if (!PREFER_3D_FILL && sna->kgem.mode != KGEM_RENDER &&
if (prefer_blt_fill(sna) &&
sna_blt_fill(sna, alu,
dst_bo, dst->drawable.bitsPerPixel,
color,
@ -2115,7 +2131,7 @@ gen2_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo,
#endif
/* Prefer to use the BLT if already engaged */
if (!PREFER_3D_FILL && sna->kgem.mode != KGEM_RENDER &&
if (prefer_blt_fill(sna) &&
gen2_render_fill_one_try_blt(sna, dst, bo, color,
x1, y1, x2, y2, alu))
return TRUE;
@ -2267,7 +2283,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_3D_COPY_BOXES &&
if (prefer_blt_copy(sna) &&
sna_blt_compare_depth(&src->drawable, &dst->drawable) &&
sna_blt_copy_boxes(sna, alu,
src_bo, src_dx, src_dy,
@ -2403,7 +2419,7 @@ gen2_render_copy(struct sna *sna, uint8_t alu,
#endif
/* Prefer to use the BLT */
if (!PREFER_3D_COPY && sna->kgem.mode != KGEM_RENDER &&
if (prefer_blt_copy(sna) &&
sna_blt_compare_depth(&src->drawable, &dst->drawable) &&
sna_blt_copy(sna, alu,
src_bo, dst_bo,