summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-12-11 19:03:54 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2011-12-11 19:03:54 +0000
commita92a41ba3291a4304948ed1961d1242ca7d3981e (patch)
tree4aafb5ce8f4815376ed6edf68c3c2cba6ebf4714
parente9e6d6f7c8af300716c64b041f96c09d58b3eaa2 (diff)
sna/gen6: Tidy the usage of the max pipeline size
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/gen6_render.c31
-rw-r--r--src/sna/gen7_render.c2
2 files changed, 19 insertions, 14 deletions
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index cb624635..6320dda4 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -56,6 +56,8 @@
#define NO_FILL 0
#define NO_FILL_BOXES 0
+#define GEN6_MAX_SIZE 8192
+
static const uint32_t ps_kernel_nomask_affine[][4] = {
#include "exa_wm_src_affine.g6b"
#include "exa_wm_src_sample_argb.g6b"
@@ -1926,6 +1928,11 @@ gen6_composite_solid_init(struct sna *sna,
return channel->bo != NULL;
}
+static inline bool too_large(int width, int height)
+{
+ return (width | height) > GEN6_MAX_SIZE;
+}
+
static int
gen6_composite_picture(struct sna *sna,
PicturePtr picture,
@@ -1984,7 +1991,7 @@ gen6_composite_picture(struct sna *sna,
return sna_render_picture_convert(sna, picture, channel, pixmap,
x, y, w, h, dst_x, dst_y);
- if (pixmap->drawable.width > 8192 || pixmap->drawable.height > 8192) {
+ if (too_large(pixmap->drawable.width, pixmap->drawable.height)) {
DBG(("%s: extracting from pixmap %dx%d\n", __FUNCTION__,
pixmap->drawable.width, pixmap->drawable.height));
return sna_render_picture_extract(sna, picture, channel,
@@ -2072,7 +2079,7 @@ try_blt(struct sna *sna, int width, int height)
return TRUE;
}
- if (width > 8192 || height > 8192) {
+ if (too_large(width, height)) {
DBG(("%s: operation too large for 3D pipe (%d, %d)\n",
__FUNCTION__, width, height));
return TRUE;
@@ -2238,7 +2245,7 @@ gen6_render_composite(struct sna *sna,
return FALSE;
sna_render_reduce_damage(tmp, dst_x, dst_y, width, height);
- if (tmp->dst.width > 8192 || tmp->dst.height > 8192) {
+ if (too_large(tmp->dst.width, tmp->dst.height)) {
if (!sna_render_composite_redirect(sna, tmp,
dst_x, dst_y, width, height))
return FALSE;
@@ -2739,8 +2746,8 @@ gen6_render_copy_boxes(struct sna *sna, uint8_t alu,
return TRUE;
if (!(alu == GXcopy || alu == GXclear) || src_bo == dst_bo ||
- src->drawable.width > 8192 || src->drawable.height > 8192 ||
- dst->drawable.width > 8192 || dst->drawable.height > 8192) {
+ too_large(src->drawable.width, src->drawable.height) ||
+ too_large(dst->drawable.width, dst->drawable.height)) {
if (!sna_blt_compare_depth(&src->drawable, &dst->drawable))
return FALSE;
@@ -2895,8 +2902,8 @@ gen6_render_copy(struct sna *sna, uint8_t alu,
return TRUE;
if (!(alu == GXcopy || alu == GXclear) || src_bo == dst_bo ||
- src->drawable.width > 8192 || src->drawable.height > 8192 ||
- dst->drawable.width > 8192 || dst->drawable.height > 8192) {
+ too_large(src->drawable.width, src->drawable.height) ||
+ too_large(dst->drawable.width, dst->drawable.height)) {
if (!sna_blt_compare_depth(&src->drawable, &dst->drawable))
return FALSE;
@@ -3000,8 +3007,7 @@ gen6_render_fill_boxes(struct sna *sna,
}
if (sna->kgem.ring != KGEM_RENDER ||
- dst->drawable.width > 8192 ||
- dst->drawable.height > 8192 ||
+ too_large(dst->drawable.width, dst->drawable.height) ||
!gen6_check_dst_format(format)) {
uint8_t alu = -1;
@@ -3028,8 +3034,7 @@ gen6_render_fill_boxes(struct sna *sna,
pixel, box, n))
return TRUE;
- if (dst->drawable.width > 8192 ||
- dst->drawable.height > 8192 ||
+ if (too_large(dst->drawable.width, dst->drawable.height) ||
!gen6_check_dst_format(format))
return FALSE;
}
@@ -3229,7 +3234,7 @@ gen6_render_fill(struct sna *sna, uint8_t alu,
return TRUE;
if (!(alu == GXcopy || alu == GXclear) ||
- dst->drawable.width > 8192 || dst->drawable.height > 8192)
+ too_large(dst->drawable.width, dst->drawable.height))
return sna_blt_fill(sna, alu,
dst_bo, dst->drawable.bitsPerPixel,
color,
@@ -3501,6 +3506,6 @@ Bool gen6_render_init(struct sna *sna)
sna->render.reset = gen6_render_reset;
sna->render.fini = gen6_render_fini;
- sna->render.max_3d_size = 8192;
+ sna->render.max_3d_size = GEN6_MAX_SIZE;
return TRUE;
}
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 68ec2219..a45814eb 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -3163,7 +3163,7 @@ gen7_render_fill_boxes(struct sna *sna,
return FALSE;
#endif
- if (op ==PictOpClear)
+ if (op == PictOpClear)
pixel = 0;
else if (!sna_get_pixel_from_rgba(&pixel,
color->red,