xf86-video-intel: 6 commits - src/sna/gen2_render.c src/sna/gen3_render.c src/sna/gen4_render.c src/sna/gen4_vertex.c src/sna/gen5_render.c src/sna/gen6_render.c src/sna/gen7_render.c src/sna/gen8_render.c src/sna/kgem.c src/sna/sna_accel.c src/sna/sna_blt.c src/sna/sna_composite.c src/sna/sna_glyphs.c src/sna/sna.h

Chris Wilson ickle at kemper.freedesktop.org
Mon Jun 23 02:14:48 PDT 2014


 src/sna/gen2_render.c   |    7 ++++
 src/sna/gen3_render.c   |    7 ++++
 src/sna/gen4_render.c   |    7 ++++
 src/sna/gen4_vertex.c   |   19 +++++++-----
 src/sna/gen5_render.c   |    7 ++++
 src/sna/gen6_render.c   |    9 ++++--
 src/sna/gen7_render.c   |   11 +++++--
 src/sna/gen8_render.c   |   11 +++++--
 src/sna/kgem.c          |    4 --
 src/sna/sna.h           |    2 -
 src/sna/sna_accel.c     |   72 ++++++++++++++++++++++++++----------------------
 src/sna/sna_blt.c       |    6 ++--
 src/sna/sna_composite.c |    2 -
 src/sna/sna_glyphs.c    |    6 ++++
 14 files changed, 109 insertions(+), 61 deletions(-)

New commits:
commit e1e853edee67c3ced43d5e4b1fbd52ca4c92966d
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jun 23 10:14:09 2014 +0100

    sna/gen4+: Add some more asserts around recreating vertex buffers
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=70461#c46
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen4_vertex.c b/src/sna/gen4_vertex.c
index aaecb78..31044d6 100644
--- a/src/sna/gen4_vertex.c
+++ b/src/sna/gen4_vertex.c
@@ -42,7 +42,9 @@ void gen4_vertex_align(struct sna *sna, const struct sna_composite_op *op)
 {
 	int vertex_index;
 
+	assert(op->floats_per_vertex);
 	assert(op->floats_per_rect == 3*op->floats_per_vertex);
+	assert(sna->render.vertex_used <= sna->render.vertex_size);
 
 	vertex_index = (sna->render.vertex_used + op->floats_per_vertex - 1) / op->floats_per_vertex;
 	if ((int)sna->render.vertex_size - vertex_index * op->floats_per_vertex < 2*op->floats_per_rect) {
@@ -52,6 +54,7 @@ void gen4_vertex_align(struct sna *sna, const struct sna_composite_op *op)
 			kgem_submit(&sna->kgem);
 			_kgem_set_mode(&sna->kgem, KGEM_RENDER);
 		}
+		assert(sna->render.vertex_used < sna->render.vertex_size);
 
 		vertex_index = (sna->render.vertex_used + op->floats_per_vertex - 1) / op->floats_per_vertex;
 		assert(vertex_index * op->floats_per_vertex <= sna->render.vertex_size);
@@ -118,18 +121,17 @@ int gen4_vertex_finish(struct sna *sna)
 		kgem_bo_destroy(&sna->kgem, bo);
 		hint |= CREATE_CACHED | CREATE_NO_THROTTLE;
 	} else {
-		if (kgem_is_idle(&sna->kgem)) {
-			sna->render.vertices = sna->render.vertex_data;
-			sna->render.vertex_size = ARRAY_SIZE(sna->render.vertex_data);
+		assert(sna->render.vertex_size == ARRAY_SIZE(sna->render.vertex_data));
+		assert(sna->render.vertices == sna->render.vertex_data);
+		if (kgem_is_idle(&sna->kgem))
 			return 0;
-		}
 	}
 
 	size = 256*1024;
 	assert(!sna->render.active);
 	sna->render.vertices = NULL;
 	sna->render.vbo = kgem_create_linear(&sna->kgem, size, hint);
-	while (sna->render.vbo == NULL && size > 16*1024) {
+	while (sna->render.vbo == NULL && size > sizeof(sna->render.vertex_data)) {
 		size /= 2;
 		sna->render.vbo = kgem_create_linear(&sna->kgem, size, hint);
 	}
@@ -165,11 +167,12 @@ int gen4_vertex_finish(struct sna *sna)
 	if (size >= UINT16_MAX)
 		size = UINT16_MAX - 1;
 
-	DBG(("%s: create vbo handle=%d, size=%d\n",
-	     __FUNCTION__, sna->render.vbo->handle, size));
+	DBG(("%s: create vbo handle=%d, size=%d floats [%d bytes]\n",
+	     __FUNCTION__, sna->render.vbo->handle, size, __kgem_bo_size(sna->render.vbo)));
+	assert(size > sna->render.vertex_used);
 
 	sna->render.vertex_size = size;
-	return sna->render.vertex_size - sna->render.vertex_used;
+	return size - sna->render.vertex_used;
 }
 
 void gen4_vertex_close(struct sna *sna)
commit 978790dc52fa9551b3bccbd91988b93988e937df
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jun 23 09:47:34 2014 +0100

    sna: Allow the CPU bo to be created if GPU rendering is forced
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index e4520d1..f362a9c 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -3765,21 +3765,27 @@ use_gpu_bo:
 
 use_cpu_bo:
 	if (!USE_CPU_BO || priv->cpu_bo == NULL) {
+		if ((flags & FORCE_GPU) == 0)
+			return NULL;
+
+		if (!sna_drawable_move_region_to_cpu(&pixmap->drawable, &region,
+						     (flags & IGNORE_DAMAGE ? 0 : MOVE_READ) | MOVE_WRITE | MOVE_ASYNC_HINT)) {
 cpu_fail:
-		if ((flags & FORCE_GPU) && priv->gpu_bo) {
-			region.extents = *box;
-			if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) {
-				region.extents.x1 += dx;
-				region.extents.x2 += dx;
-				region.extents.y1 += dy;
-				region.extents.y2 += dy;
+			if (priv->gpu_bo) {
+				region.extents = *box;
+				if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) {
+					region.extents.x1 += dx;
+					region.extents.x2 += dx;
+					region.extents.y1 += dy;
+					region.extents.y2 += dy;
+				}
+				region.data = NULL;
+
+				goto move_to_gpu;
 			}
-			region.data = NULL;
 
-			goto move_to_gpu;
+			return NULL;
 		}
-
-		return NULL;
 	}
 
 	assert(priv->cpu_bo->refcnt);
commit b2206eca00e497aff0d79a6e9feae3d9c5070dcc
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jun 23 09:42:37 2014 +0100

    sna/gen6+: Encourage the compiler to inline a couple of key functions
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index cc1c209..49a783a 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -1861,7 +1861,7 @@ static void gen6_render_composite_done(struct sna *sna,
 	sna_render_composite_redirect_done(sna, op);
 }
 
-static bool
+inline static bool
 gen6_composite_set_target(struct sna *sna,
 			  struct sna_composite_op *op,
 			  PicturePtr dst,
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 5815490..0d03c3b 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2089,7 +2089,7 @@ gen7_composite_picture(struct sna *sna,
 				    x, y, w, h, dst_x, dst_y);
 }
 
-static void gen7_composite_channel_convert(struct sna_composite_channel *channel)
+inline static void gen7_composite_channel_convert(struct sna_composite_channel *channel)
 {
 	channel->repeat = gen7_repeat(channel->repeat);
 	channel->filter = gen7_filter(channel->filter);
@@ -2114,7 +2114,7 @@ static void gen7_render_composite_done(struct sna *sna,
 	sna_render_composite_redirect_done(sna, op);
 }
 
-static bool
+inline static bool
 gen7_composite_set_target(struct sna *sna,
 			  struct sna_composite_op *op,
 			  PicturePtr dst,
diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index b66a735..6497630 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -1898,7 +1898,7 @@ gen8_composite_picture(struct sna *sna,
 				    x, y, w, h, dst_x, dst_y);
 }
 
-static bool gen8_composite_channel_convert(struct sna_composite_channel *channel)
+inline static bool gen8_composite_channel_convert(struct sna_composite_channel *channel)
 {
 	if (unaligned(channel->bo, PICT_FORMAT_BPP(channel->pict_format)))
 		return false;
@@ -1928,7 +1928,7 @@ static void gen8_render_composite_done(struct sna *sna,
 	sna_render_composite_redirect_done(sna, op);
 }
 
-static bool
+inline static bool
 gen8_composite_set_target(struct sna *sna,
 			  struct sna_composite_op *op,
 			  PicturePtr dst,
commit bb4c057620fb0558a77a9b7db538786ffda7cf13
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jun 23 09:22:13 2014 +0100

    sna: Prefer to render over damage into the GPU bo
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 067f7dd..e4520d1 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -3809,6 +3809,9 @@ cpu_fail:
 	assert(priv->gpu_bo == NULL || priv->gpu_bo->proxy == NULL);
 
 	if (flags & RENDER_GPU) {
+		if ((flags & IGNORE_DAMAGE) == 0 && priv->gpu_damage)
+			goto move_to_gpu;
+
 		if (priv->gpu_bo && priv->gpu_bo->tiling)
 			goto move_to_gpu;
 
@@ -3865,6 +3868,7 @@ cpu_fail:
 	     __FUNCTION__, *damage != NULL));
 	assert(damage == NULL || !DAMAGE_IS_ALL(*damage));
 	assert(priv->clear == false);
+	priv->cpu = false;
 	return priv->cpu_bo;
 }
 
commit 416c223861aaeb61c6408e6537315b78e908df43
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jun 23 09:20:55 2014 +0100

    sna: Do not set CAN_CREATE_GPU flag for untiled allocations
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 5e3c9f0..b54084c 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -4260,7 +4260,7 @@ unsigned kgem_can_create_2d(struct kgem *kgem,
 	if (size > 0) {
 		if (size <= kgem->max_cpu_size)
 			flags |= KGEM_CAN_CREATE_CPU;
-		if (size <= kgem->max_gpu_size)
+		else if (size <= kgem->max_gpu_size)
 			flags |= KGEM_CAN_CREATE_GPU;
 		if (size <= PAGE_SIZE*kgem->aperture_mappable/4)
 			flags |= KGEM_CAN_CREATE_GTT;
@@ -4282,8 +4282,6 @@ unsigned kgem_can_create_2d(struct kgem *kgem,
 		DBG(("%s: tiled[%d] size=%d\n", __FUNCTION__, tiling, size));
 		if (size > 0 && size <= kgem->max_gpu_size)
 			flags |= KGEM_CAN_CREATE_GPU;
-		if (size > kgem->max_gpu_size)
-			flags &= ~KGEM_CAN_CREATE_GPU;
 		if (size > 0 && size <= PAGE_SIZE*kgem->aperture_mappable/4)
 			flags |= KGEM_CAN_CREATE_GTT;
 		if (size > PAGE_SIZE*kgem->aperture_mappable/4)
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index f481c19..067f7dd 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -3502,10 +3502,6 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
 		DBG(("%s: last on cpu and needs damage, discard PREFER_GPU\n", __FUNCTION__));
 		flags &= ~PREFER_GPU;
 	}
-	if ((flags & FORCE_GPU) == 0 && priv->gpu_bo == NULL && sna_pixmap_choose_tiling(pixmap, DEFAULT_TILING) == I915_TILING_NONE) {
-		DBG(("%s: no gpu bo and linear, discard PREFER_GPU\n", __FUNCTION__));
-		flags &= ~PREFER_GPU;
-	}
 
 	if ((flags & (PREFER_GPU | IGNORE_DAMAGE)) == IGNORE_DAMAGE) {
 		if (priv->gpu_bo && (box_covers_pixmap(pixmap, box) || box_inplace(pixmap, box))) {
diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index fb4d7f1..5587fcc 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -1161,6 +1161,7 @@ glyphs_via_mask(struct sna *sna,
 	if (use_small_mask(sna, width, height, format->depth)) {
 		pixman_image_t *mask_image;
 
+use_small_mask:
 		DBG(("%s: small mask [format=%lx, depth=%d, size=%d], rendering glyphs to upload buffer\n",
 		     __FUNCTION__, (unsigned long)format->format,
 		     format->depth, (uint32_t)width*height*format->depth));
@@ -1340,6 +1341,11 @@ next_image:
 		if (!pixmap)
 			return false;
 
+		if (sna_pixmap(pixmap) == NULL) {
+			sna_pixmap_destroy(pixmap);
+			goto use_small_mask;
+		}
+
 		mask = CreatePicture(0, &pixmap->drawable,
 				     format, CPComponentAlpha,
 				     &component_alpha, serverClient, &error);
commit fb51ec44f4b6069ab854233d5d0da34eb79f754c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jun 23 09:07:13 2014 +0100

    sna: Rename IGNORE_CPU to IGNORE_DAMAGE to better reflect its purpose
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c
index f51d6cf..fc0406e 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -1621,7 +1621,7 @@ gen2_composite_set_target(struct sna *sna,
 
 	hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
 	if (!partial) {
-		hint |= IGNORE_CPU;
+		hint |= IGNORE_DAMAGE;
 		if (w == op->dst.width && h == op->dst.height)
 			hint |= REPLACES;
 	}
@@ -1630,6 +1630,11 @@ gen2_composite_set_target(struct sna *sna,
 	if (op->dst.bo == NULL)
 		return false;
 
+	if (hint & REPLACES) {
+		struct sna_pixmap *priv = sna_pixmap(op->dst.pixmap);
+		kgem_bo_pair_undo(&sna->kgem, priv->gpu_bo, priv->cpu_bo);
+	}
+
 	assert((op->dst.bo->pitch & 7) == 0);
 
 	get_drawable_deltas(dst->pDrawable, op->dst.pixmap,
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index a1b37b6..7616a91 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -3184,7 +3184,7 @@ gen3_composite_set_target(struct sna *sna,
 
 	hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
 	if (!partial) {
-		hint |= IGNORE_CPU;
+		hint |= IGNORE_DAMAGE;
 		if (w == op->dst.width && h == op->dst.height)
 			hint |= REPLACES;
 	}
@@ -3193,6 +3193,11 @@ gen3_composite_set_target(struct sna *sna,
 	if (op->dst.bo == NULL)
 		return false;
 
+	if (hint & REPLACES) {
+		struct sna_pixmap *priv = sna_pixmap(op->dst.pixmap);
+		kgem_bo_pair_undo(&sna->kgem, priv->gpu_bo, priv->cpu_bo);
+	}
+
 	assert(op->dst.bo->unique_id);
 
 	/* For single-stream mode there should be no minimum alignment
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index ef982ef..5340e7f 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -1666,7 +1666,7 @@ gen4_composite_set_target(struct sna *sna,
 
 	hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
 	if (!partial) {
-		hint |= IGNORE_CPU;
+		hint |= IGNORE_DAMAGE;
 		if (w == op->dst.width && h == op->dst.height)
 			hint |= REPLACES;
 	}
@@ -1675,6 +1675,11 @@ gen4_composite_set_target(struct sna *sna,
 	if (op->dst.bo == NULL)
 		return false;
 
+	if (hint & REPLACES) {
+		struct sna_pixmap *priv = sna_pixmap(op->dst.pixmap);
+		kgem_bo_pair_undo(&sna->kgem, priv->gpu_bo, priv->cpu_bo);
+	}
+
 	get_drawable_deltas(dst->pDrawable, op->dst.pixmap,
 			    &op->dst.x, &op->dst.y);
 
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index 449a394..aa56663 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -1620,7 +1620,7 @@ gen5_composite_set_target(struct sna *sna,
 
 	hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
 	if (!partial) {
-		hint |= IGNORE_CPU;
+		hint |= IGNORE_DAMAGE;
 		if (w == op->dst.width && h == op->dst.height)
 			hint |= REPLACES;
 	}
@@ -1629,6 +1629,11 @@ gen5_composite_set_target(struct sna *sna,
 	if (op->dst.bo == NULL)
 		return false;
 
+	if (hint & REPLACES) {
+		struct sna_pixmap *priv = sna_pixmap(op->dst.pixmap);
+		kgem_bo_pair_undo(&sna->kgem, priv->gpu_bo, priv->cpu_bo);
+	}
+
 	get_drawable_deltas(dst->pDrawable, op->dst.pixmap,
 			    &op->dst.x, &op->dst.y);
 
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index 82bcbe0..cc1c209 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -1888,7 +1888,7 @@ gen6_composite_set_target(struct sna *sna,
 
 	hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
 	if (!partial) {
-		hint |= IGNORE_CPU;
+		hint |= IGNORE_DAMAGE;
 		if (w == op->dst.width && h == op->dst.height)
 			hint |= REPLACES;
 	}
@@ -1897,6 +1897,11 @@ gen6_composite_set_target(struct sna *sna,
 	if (op->dst.bo == NULL)
 		return false;
 
+	if (hint & REPLACES) {
+		struct sna_pixmap *priv = sna_pixmap(op->dst.pixmap);
+		kgem_bo_pair_undo(&sna->kgem, priv->gpu_bo, priv->cpu_bo);
+	}
+
 	get_drawable_deltas(dst->pDrawable, op->dst.pixmap,
 			    &op->dst.x, &op->dst.y);
 
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 9aa0713..5815490 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2142,7 +2142,7 @@ gen7_composite_set_target(struct sna *sna,
 
 	hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
 	if (!partial) {
-		hint |= IGNORE_CPU;
+		hint |= IGNORE_DAMAGE;
 		if (w == op->dst.width && h == op->dst.height)
 			hint |= REPLACES;
 	}
@@ -2151,6 +2151,11 @@ gen7_composite_set_target(struct sna *sna,
 	if (op->dst.bo == NULL)
 		return false;
 
+	if (hint & REPLACES) {
+		struct sna_pixmap *priv = sna_pixmap(op->dst.pixmap);
+		kgem_bo_pair_undo(&sna->kgem, priv->gpu_bo, priv->cpu_bo);
+	}
+
 	get_drawable_deltas(dst->pDrawable, op->dst.pixmap,
 			    &op->dst.x, &op->dst.y);
 
diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index e2a4bfc..b66a735 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -1956,7 +1956,7 @@ gen8_composite_set_target(struct sna *sna,
 
 	hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
 	if (!partial) {
-		hint |= IGNORE_CPU;
+		hint |= IGNORE_DAMAGE;
 		if (w == op->dst.width && h == op->dst.height)
 			hint |= REPLACES;
 	}
@@ -1968,6 +1968,11 @@ gen8_composite_set_target(struct sna *sna,
 	if (unaligned(op->dst.bo, dst->pDrawable->bitsPerPixel))
 		return false;
 
+	if (hint & REPLACES) {
+		struct sna_pixmap *priv = sna_pixmap(op->dst.pixmap);
+		kgem_bo_pair_undo(&sna->kgem, priv->gpu_bo, priv->cpu_bo);
+	}
+
 	get_drawable_deltas(dst->pDrawable, op->dst.pixmap,
 			    &op->dst.x, &op->dst.y);
 
diff --git a/src/sna/sna.h b/src/sna/sna.h
index 1985ad8..8640f2f 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -739,7 +739,7 @@ struct kgem_bo *sna_pixmap_change_tiling(PixmapPtr pixmap, uint32_t tiling);
 #define PREFER_GPU	0x1
 #define FORCE_GPU	0x2
 #define RENDER_GPU	0x4
-#define IGNORE_CPU	0x8
+#define IGNORE_DAMAGE	0x8
 #define REPLACES	0x10
 struct kgem_bo *
 sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 78f5fed..f481c19 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -3449,7 +3449,7 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
 	if (priv->cow) {
 		unsigned cow = MOVE_WRITE | MOVE_READ;
 
-		if (flags & IGNORE_CPU) {
+		if (flags & IGNORE_DAMAGE) {
 			if (priv->gpu_damage) {
 				region.extents = *box;
 				if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) {
@@ -3498,7 +3498,7 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
 		DBG(("%s: pinned, never REPLACES\n", __FUNCTION__));
 		flags &= ~REPLACES;
 	}
-	if (priv->cpu && (flags & (FORCE_GPU | IGNORE_CPU)) == 0) {
+	if (priv->cpu && (flags & (FORCE_GPU | IGNORE_DAMAGE)) == 0) {
 		DBG(("%s: last on cpu and needs damage, discard PREFER_GPU\n", __FUNCTION__));
 		flags &= ~PREFER_GPU;
 	}
@@ -3507,7 +3507,7 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
 		flags &= ~PREFER_GPU;
 	}
 
-	if ((flags & (PREFER_GPU | IGNORE_CPU)) == IGNORE_CPU) {
+	if ((flags & (PREFER_GPU | IGNORE_DAMAGE)) == IGNORE_DAMAGE) {
 		if (priv->gpu_bo && (box_covers_pixmap(pixmap, box) || box_inplace(pixmap, box))) {
 			DBG(("%s: not reading damage and large, set PREFER_GPU\n", __FUNCTION__));
 			flags |= PREFER_GPU;
@@ -3518,7 +3518,7 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
 	     __FUNCTION__, priv->flush, priv->shm, priv->cpu, flags));
 
 	if ((flags & PREFER_GPU) == 0 &&
-	    (flags & REPLACES || !priv->gpu_damage || !kgem_bo_is_busy(priv->gpu_bo))) {
+	    (flags & (REPLACES | IGNORE_DAMAGE) || !priv->gpu_damage || !kgem_bo_is_busy(priv->gpu_bo))) {
 		DBG(("%s: try cpu as GPU bo is idle\n", __FUNCTION__));
 		goto use_cpu_bo;
 	}
@@ -3553,7 +3553,7 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
 			goto use_cpu_bo;
 		}
 
-		if ((flags & IGNORE_CPU) == 0) {
+		if ((flags & IGNORE_DAMAGE) == 0) {
 			if (priv->cpu_bo) {
 				if (to_sna_from_pixmap(pixmap)->kgem.can_blt_cpu) {
 					if (kgem_bo_is_busy(priv->cpu_bo)) {
@@ -3632,11 +3632,11 @@ create_gpu_bo:
 
 	if (priv->gpu_damage) {
 		assert(priv->gpu_bo);
-		if (!priv->cpu_damage || flags & IGNORE_CPU) {
+		if (!priv->cpu_damage || flags & IGNORE_DAMAGE) {
 			if (flags & REPLACES || box_covers_pixmap(pixmap, &region.extents)) {
 				unsigned int move;
 
-				if (flags & IGNORE_CPU)
+				if (flags & IGNORE_DAMAGE)
 					move = MOVE_WRITE;
 				else
 					move = MOVE_WRITE | MOVE_READ;
@@ -3674,7 +3674,7 @@ create_gpu_bo:
 		}
 	}
 
-	if ((flags & IGNORE_CPU) == 0 && priv->cpu_damage) {
+	if ((flags & IGNORE_DAMAGE) == 0 && priv->cpu_damage) {
 		ret = sna_damage_contains_box(&priv->cpu_damage, &region.extents);
 		if (ret == PIXMAN_REGION_IN) {
 			DBG(("%s: region wholly contained within CPU damage\n",
@@ -3696,7 +3696,7 @@ create_gpu_bo:
 
 move_to_gpu:
 	if (!sna_pixmap_move_area_to_gpu(pixmap, &region.extents,
-					 flags & IGNORE_CPU ? MOVE_WRITE : MOVE_READ | MOVE_WRITE)) {
+					 flags & IGNORE_DAMAGE ? MOVE_WRITE : MOVE_READ | MOVE_WRITE)) {
 		DBG(("%s: failed to move-to-gpu, fallback\n", __FUNCTION__));
 		assert(priv->gpu_bo == NULL);
 		goto use_cpu_bo;
@@ -3730,7 +3730,7 @@ use_gpu_bo:
 
 		sna = to_sna_from_pixmap(pixmap);
 
-		if (flags & IGNORE_CPU) {
+		if (flags & IGNORE_DAMAGE) {
 			region.extents = *box;
 			region.data = NULL;
 			if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) {
@@ -3819,7 +3819,7 @@ cpu_fail:
 		if (priv->cpu_bo->pitch >= 4096)
 			goto move_to_gpu;
 
-		if ((flags & IGNORE_CPU) == 0 && priv->cpu_bo->snoop)
+		if ((flags & IGNORE_DAMAGE) == 0 && priv->cpu_bo->snoop)
 			goto move_to_gpu;
 
 		if (!sna->kgem.can_blt_cpu)
@@ -3830,7 +3830,7 @@ cpu_fail:
 		goto cpu_fail;
 
 	if (!sna_drawable_move_region_to_cpu(&pixmap->drawable, &region,
-					     (flags & IGNORE_CPU ? 0 : MOVE_READ) | MOVE_WRITE | MOVE_ASYNC_HINT)) {
+					     (flags & IGNORE_DAMAGE ? 0 : MOVE_READ) | MOVE_WRITE | MOVE_ASYNC_HINT)) {
 		DBG(("%s: failed to move-to-cpu, fallback\n", __FUNCTION__));
 		goto cpu_fail;
 	}
@@ -6161,15 +6161,15 @@ discard_cow:
 		hint = copy_prefer_gpu(sna, dst_priv, src_priv, region, src_dx, src_dy);
 		if (replaces) {
 			discard_cpu_damage(sna, dst_priv);
-			hint |= REPLACES | IGNORE_CPU;
+			hint |= REPLACES | IGNORE_DAMAGE;
 		} else if (alu_overwrites(alu)) {
 			if (region->data == NULL)
-				hint |= IGNORE_CPU;
+				hint |= IGNORE_DAMAGE;
 			if (dst_priv->cpu_damage &&
 			    region_subsumes_damage(region,
 						   dst_priv->cpu_damage)) {
 				discard_cpu_damage(sna, dst_priv);
-				hint |= IGNORE_CPU;
+				hint |= IGNORE_DAMAGE;
 			}
 		}
 		bo = sna_drawable_use_bo(&dst_pixmap->drawable, hint,
@@ -14575,7 +14575,7 @@ sna_poly_fill_rect(DrawablePtr draw, GCPtr gc, int n, xRectangle *rect)
 		}
 
 		if ((flags & 2) == 0) {
-			hint |= IGNORE_CPU;
+			hint |= IGNORE_DAMAGE;
 			if (region_subsumes_drawable(&region, &pixmap->drawable)) {
 				discard_cpu_damage(sna, priv);
 				hint |= REPLACES;
@@ -14927,7 +14927,7 @@ sna_glyph_blt(DrawablePtr drawable, GCPtr gc,
 	}
 
 	if (!transparent && clip->data == NULL)
-		hint = PREFER_GPU | IGNORE_CPU;
+		hint = PREFER_GPU | IGNORE_DAMAGE;
 	else
 		hint = PREFER_GPU;
 
@@ -15982,7 +15982,7 @@ sna_image_glyph(DrawablePtr drawable, GCPtr gc,
 		goto fallback;
 
 	if (region.data == NULL)
-		hint = IGNORE_CPU | PREFER_GPU;
+		hint = IGNORE_DAMAGE | PREFER_GPU;
 	else
 		hint = PREFER_GPU;
 	if ((bo = sna_drawable_use_bo(drawable, hint,
diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
index f3caf61..98bd49b 100644
--- a/src/sna/sna_blt.c
+++ b/src/sna/sna_blt.c
@@ -2524,7 +2524,7 @@ clear:
 		if (can_render(sna)) {
 			hint |= PREFER_GPU;
 			if ((flags & COMPOSITE_PARTIAL) == 0) {
-				hint |= IGNORE_CPU;
+				hint |= IGNORE_DAMAGE;
 				if (width  == tmp->dst.pixmap->drawable.width &&
 				    height == tmp->dst.pixmap->drawable.height)
 					hint |= REPLACES;
@@ -2614,7 +2614,7 @@ fill:
 		if (can_render(sna)) {
 			hint |= PREFER_GPU;
 			if ((flags & COMPOSITE_PARTIAL) == 0) {
-				hint |= IGNORE_CPU;
+				hint |= IGNORE_DAMAGE;
 				if (width  == tmp->dst.pixmap->drawable.width &&
 				    height == tmp->dst.pixmap->drawable.height)
 					hint |= REPLACES;
@@ -2780,7 +2780,7 @@ fill:
 	if (bo || can_render(sna)) {
 		hint |= PREFER_GPU;
 		if ((flags & COMPOSITE_PARTIAL) == 0) {
-			hint |= IGNORE_CPU;
+			hint |= IGNORE_DAMAGE;
 			if (width  == tmp->dst.pixmap->drawable.width &&
 			    height == tmp->dst.pixmap->drawable.height)
 				hint |= REPLACES;
diff --git a/src/sna/sna_composite.c b/src/sna/sna_composite.c
index 5ce6b2f..490999f 100644
--- a/src/sna/sna_composite.c
+++ b/src/sna/sna_composite.c
@@ -967,7 +967,7 @@ sna_composite_rectangles(CARD8		 op,
 		}
 
 		if (region.data == NULL) {
-			hint |= IGNORE_CPU;
+			hint |= IGNORE_DAMAGE;
 			if (region_subsumes_drawable(&region, &pixmap->drawable))
 				hint |= REPLACES;
 			if (priv->cpu_damage &&


More information about the xorg-commit mailing list