xf86-video-intel: 2 commits - src/sna/sna_accel.c src/sna/sna_composite.c src/sna/sna_glyphs.c src/sna/sna.h src/sna/sna_io.c

Chris Wilson ickle at kemper.freedesktop.org
Wed Oct 30 19:55:15 CET 2013


 src/sna/sna.h           |    6 -
 src/sna/sna_accel.c     |  163 +++---------------------------------------------
 src/sna/sna_composite.c |    4 -
 src/sna/sna_glyphs.c    |    2 
 src/sna/sna_io.c        |    7 --
 5 files changed, 14 insertions(+), 168 deletions(-)

New commits:
commit ed16e34c00d5eb5ca4ec643f66fedbf1a5112e90
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Oct 30 18:48:10 2013 +0000

    sna: Allow limited recursion within sigtrapped routines
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna.h b/src/sna/sna.h
index 243f795..f26c827 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -1008,16 +1008,16 @@ void sna_image_composite(pixman_op_t        op,
 			 uint16_t           width,
 			 uint16_t           height);
 
-extern jmp_buf sigjmp;
+extern jmp_buf sigjmp[4];
 extern volatile sig_atomic_t sigtrap;
 
 #define sigtrap_assert() assert(sigtrap == 0)
-#define sigtrap_get() sigsetjmp(sigjmp, ++sigtrap)
+#define sigtrap_get() sigsetjmp(sigjmp[sigtrap++], 1)
 
 static inline void sigtrap_put(void)
 {
+	assert(sigtrap > 0);
 	--sigtrap;
-	sigtrap_assert();
 }
 
 #endif /* _SNA_H */
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index f75bfe0..7d45065 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -396,15 +396,14 @@ static void assert_pixmap_damage(PixmapPtr p)
 #endif
 #endif
 
-jmp_buf sigjmp;
+jmp_buf sigjmp[4];
 volatile sig_atomic_t sigtrap;
 
 static int sigtrap_handler(int sig)
 {
 	if (sigtrap) {
 		/* XXX rate-limited squawk? */
-		sigtrap = 0;
-		siglongjmp(sigjmp, sig);
+		siglongjmp(sigjmp[--sigtrap], sig);
 	}
 
 	return -1;
commit 426efd5f4bb311eeec86de40815b6bc2c6914e94
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Oct 30 18:42:06 2013 +0000

    Revert "sna: Detect and handle mi recursion"
    
    This reverts commit c6b0e3fe0c299488932ba0392847f1faf298d079.

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 06753ec..f75bfe0 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -333,8 +333,6 @@ static void assert_pixmap_damage(PixmapPtr p)
 	struct sna_pixmap *priv;
 	RegionRec reg, cpu, gpu;
 
-	sigtrap_assert();
-
 	priv = sna_pixmap(p);
 	if (priv == NULL)
 		return;
@@ -1882,7 +1880,6 @@ _sna_pixmap_move_to_cpu(PixmapPtr pixmap, unsigned int flags)
 
 	assert(flags & (MOVE_READ | MOVE_WRITE));
 	assert_pixmap_damage(pixmap);
-	sigtrap_assert();
 
 	priv = sna_pixmap(pixmap);
 	if (priv == NULL) {
@@ -2189,7 +2186,6 @@ done:
 	assert(pixmap->devKind);
 	assert_pixmap_damage(pixmap);
 	assert(has_coherent_ptr(sna, sna_pixmap(pixmap), flags));
-	sigtrap_assert();
 	return true;
 }
 
@@ -2319,7 +2315,6 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
 		assert_drawable_contains_box(drawable, &region->extents);
 	}
 	assert(flags & (MOVE_WRITE | MOVE_READ));
-	sigtrap_assert();
 
 	if (box_empty(&region->extents))
 		return true;
@@ -2832,7 +2827,6 @@ out:
 	assert(pixmap->devKind);
 	assert_pixmap_damage(pixmap);
 	assert(has_coherent_ptr(sna, sna_pixmap(pixmap), flags));
-	sigtrap_assert();
 	return true;
 }
 
@@ -2855,8 +2849,6 @@ sna_drawable_move_to_cpu(DrawablePtr drawable, unsigned flags)
 	     drawable->width, drawable->height,
 	     dx, dy, flags));
 
-	sigtrap_assert();
-
 	region.extents.x1 = drawable->x + dx;
 	region.extents.y1 = drawable->y + dy;
 	region.extents.x2 = region.extents.x1 + drawable->width;
@@ -2932,7 +2924,6 @@ static inline struct sna_pixmap *
 sna_pixmap_mark_active(struct sna *sna, struct sna_pixmap *priv)
 {
 	assert(priv->gpu_bo);
-	sigtrap_assert();
 	DBG(("%s: pixmap=%ld, handle=%u\n", __FUNCTION__,
 	     priv->pixmap->drawable.serialNumber,
 	     priv->gpu_bo->handle));
@@ -2981,8 +2972,6 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl
 	     __FUNCTION__, pixmap->drawable.serialNumber,
 	     box->x1, box->y1, box->x2, box->y2, flags));
 
-	sigtrap_assert();
-
 	priv = __sna_pixmap_for_gpu(sna, pixmap, flags);
 	if (priv == NULL)
 		return NULL;
@@ -3709,8 +3698,6 @@ sna_pixmap_move_to_gpu(PixmapPtr pixmap, unsigned flags)
 	     pixmap->usage_hint,
 	     flags));
 
-	sigtrap_assert();
-
 	priv = __sna_pixmap_for_gpu(sna, pixmap, flags);
 	if (priv == NULL)
 		return NULL;
@@ -3936,8 +3923,6 @@ static bool must_check sna_gc_move_to_cpu(GCPtr gc,
 
 	DBG(("%s, changes=%lx\n", __FUNCTION__, changes));
 
-	sigtrap_assert();
-
 	assert(gc->ops == (GCOps *)&sna_gc_ops);
 	gc->ops = (GCOps *)&sna_gc_ops__cpu;
 
@@ -4207,7 +4192,6 @@ try_upload_blt(PixmapPtr pixmap, RegionRec *region,
 	     __FUNCTION__, x, y, w, h,
 	     RegionNumRects(region)));
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		ok = sna->render.copy_boxes(sna, GXcopy,
 					    pixmap, src_bo, -x, -y,
@@ -4322,7 +4306,6 @@ try_upload_tiled_x(PixmapPtr pixmap, RegionRec *region,
 
 	DBG(("%s: upload(%d, %d, %d, %d) x %d\n", __FUNCTION__, x, y, w, h, n));
 
-	sigtrap_assert();
 	if (sigtrap_get())
 		return false;
 
@@ -4415,7 +4398,6 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
 					     region, MOVE_WRITE))
 		return false;
 
-	sigtrap_assert();
 	if (sigtrap_get())
 		return false;
 
@@ -4544,7 +4526,6 @@ sna_put_xybitmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
 			break;
 
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			int src_stride = BitmapBytePad(w);
 			uint8_t *dst = ptr;
@@ -4681,7 +4662,6 @@ sna_put_xypixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
 			if (!upload)
 				break;
 
-			sigtrap_assert();
 			if (sigtrap_get() == 0) {
 				int src_stride = BitmapBytePad(w);
 				uint8_t *src = (uint8_t*)bits + (box->y1 - y) * src_stride + bx1/8;
@@ -4842,11 +4822,9 @@ fallback:
 					      drawable_gc_flags(drawable, gc, false)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fbPutImage(%d, %d, %d, %d)\n",
 		     __FUNCTION__, x, y, w, h));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPutImage(drawable, gc, depth, x, y, w, h, left, format, bits);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -5089,7 +5067,6 @@ fallback:
 			goto free_boxes;
 
 		if (alu == GXcopy && pixmap->drawable.bitsPerPixel >= 8) {
-			sigtrap_assert();
 			if (sigtrap_get() == 0) {
 				FbBits *dst_bits, *src_bits;
 				int stride = pixmap->devKind;
@@ -5113,7 +5090,6 @@ fallback:
 			if (gc && !sna_gc_move_to_cpu(gc, dst, region))
 				goto out;
 
-			sigtrap_assert();
 			if (sigtrap_get() == 0) {
 				get_drawable_deltas(src, pixmap, &tx, &ty);
 				miCopyRegion(src, dst, gc,
@@ -6064,10 +6040,8 @@ fallback:
 
 			RegionTranslate(region, -dst_dx, -dst_dy);
 
-			sigtrap_assert();
 			if (sna_gc_move_to_cpu(gc, dst, region) &&
 			    sigtrap_get() == 0) {
-				assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 				miCopyRegion(src, dst, gc,
 					     region, dx, dy,
 					     fbCopyNtoN, 0, NULL);
@@ -6243,9 +6217,7 @@ sna_fallback_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc,
 			goto out;
 	}
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		miCopyRegion(src, dst, gc,
 			     region, dx, dy,
 			     fbCopyNtoN, 0, NULL);
@@ -7281,10 +7253,8 @@ fallback:
 					     drawable_gc_flags(drawable, gc, n > 1)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fbFillSpans\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbFillSpans(drawable, gc, n, pt, width, sorted);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -7324,10 +7294,8 @@ fallback:
 					     drawable_gc_flags(drawable, gc, n > 1)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fbSetSpans\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbSetSpans(drawable, gc, src, pt, width, n, sorted);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -7462,7 +7430,6 @@ sna_copy_bitmap_blt(DrawablePtr _bitmap, DrawablePtr drawable, GCPtr gc,
 			if (!upload)
 				break;
 
-			sigtrap_assert();
 			if (sigtrap_get() == 0) {
 				assert(sna->kgem.mode == KGEM_BLT);
 				b = sna->kgem.batch + sna->kgem.nbatch;
@@ -7591,7 +7558,6 @@ sna_copy_plane_blt(DrawablePtr source, DrawablePtr drawable, GCPtr gc,
 		if (!upload)
 			break;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			uint32_t *b;
 
@@ -7843,30 +7809,15 @@ fallback:
 					     drawable_gc_flags(dst, gc, false)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
-		bool expose = gc->fExpose;
-
 		DBG(("%s: fbCopyPlane(%d, %d, %d, %d, %d,%d) %x\n",
 		     __FUNCTION__, src_x, src_y, w, h, dst_x, dst_y, (unsigned)bit));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
-
-		expose = gc->fExpose;
-		gc->fExpose = 0;
-
-		miDoCopy(src, dst, gc,
-			 src_x, src_y, w, h, dst_x, dst_y,
-			 src->bitsPerPixel > 1 ? fbCopyNto1 : fbCopy1toN,
-			 bit, 0);
-
+		ret = miDoCopy(src, dst, gc,
+			       src_x, src_y, w, h, dst_x, dst_y,
+			       src->bitsPerPixel > 1 ? fbCopyNto1 : fbCopy1toN,
+			       bit, 0);
 		FALLBACK_FLUSH(dst);
 		sigtrap_put();
-
-		gc->fExpose = expose;
-		ret = miHandleExposures(src, dst, gc,
-					src_x, src_y,
-					w, h,
-					dst_x, dst_y, bit);
 	}
 out:
 	sna_gc_move_to_gpu(gc);
@@ -8070,10 +8021,8 @@ fallback:
 					     MOVE_READ | MOVE_WRITE))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fbPolyPoint\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPolyPoint(drawable, gc, mode, n, pt, flags);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -9113,10 +9062,8 @@ fallback:
 							       !(data.flags & 4 && n == 2))))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fbPolyLine\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPolyLine(drawable, gc, mode, n, pt);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -9963,10 +9910,8 @@ fallback:
 							       !(data.flags & 4 && n == 1))))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fbPolySegment\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPolySegment(drawable, gc, n, seg);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -10573,10 +10518,8 @@ fallback:
 					     drawable_gc_flags(drawable, gc, true)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: miPolyRectangle\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		miPolyRectangle(drawable, gc, n, r);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -10774,10 +10717,8 @@ fallback:
 					     drawable_gc_flags(drawable, gc, true)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s -- fbPolyArc\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPolyArc(drawable, gc, n, arc);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -11129,11 +11070,9 @@ fallback:
 					     drawable_gc_flags(draw, gc, true)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fallback -- miFillPolygon -> sna_fill_spans__cpu\n",
 		     __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		miFillPolygon(draw, gc, shape, mode, n, pt);
 		sigtrap_put();
 	}
@@ -11161,7 +11100,6 @@ sna_pixmap_get_source_bo(PixmapPtr pixmap)
 		if (upload == NULL)
 			return NULL;
 
-		sigtrap_assert();
 		if (sigtrap_get()) {
 			kgem_bo_destroy(&sna->kgem, upload);
 			return NULL;
@@ -11175,6 +11113,7 @@ sna_pixmap_get_source_bo(PixmapPtr pixmap)
 			   0, 0,
 			   pixmap->drawable.width,
 			   pixmap->drawable.height);
+
 		sigtrap_put();
 
 		return upload;
@@ -12272,7 +12211,6 @@ sna_poly_fill_rect_stippled_1_blt(DrawablePtr drawable,
 				if (!upload)
 					break;
 
-				sigtrap_assert();
 				if (sigtrap_get() == 0) {
 					dst = ptr;
 					src_stride = stipple->devKind;
@@ -12422,7 +12360,6 @@ sna_poly_fill_rect_stippled_1_blt(DrawablePtr drawable,
 					if (!upload)
 						break;
 
-					sigtrap_assert();
 					if (sigtrap_get() == 0) {
 						dst = ptr;
 						src_stride = stipple->devKind;
@@ -12573,7 +12510,6 @@ sna_poly_fill_rect_stippled_1_blt(DrawablePtr drawable,
 						if (!upload)
 							break;
 
-						sigtrap_assert();
 						if (sigtrap_get() == 0) {
 							dst = ptr;
 							src_stride = stipple->devKind;
@@ -13450,10 +13386,8 @@ fallback:
 					     drawable_gc_flags(draw, gc, n > 1)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fallback - fbPolyFillRect\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPolyFillRect(draw, gc, n, rect);
 		FALLBACK_FLUSH(draw);
 		sigtrap_put();
@@ -13622,11 +13556,9 @@ fallback:
 					     drawable_gc_flags(draw, gc, true)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fallback -- miPolyFillArc -> sna_fill_spans__cpu\n",
 		     __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		miPolyFillArc(draw, gc, n, arc);
 		sigtrap_put();
 	}
@@ -14121,10 +14053,8 @@ fallback:
 						     MOVE_READ | MOVE_WRITE))
 			goto out;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			DBG(("%s: fallback -- fbPolyGlyphBlt\n", __FUNCTION__));
-			assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 			fbPolyGlyphBlt(drawable, gc, x, y, n,
 				       info, FONTGLYPHS(gc->font));
 			FALLBACK_FLUSH(drawable);
@@ -14199,10 +14129,8 @@ fallback:
 						     MOVE_READ | MOVE_WRITE))
 			goto out;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			DBG(("%s: fallback -- fbPolyGlyphBlt\n", __FUNCTION__));
-			assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 			fbPolyGlyphBlt(drawable, gc, x, y, n,
 				       info, FONTGLYPHS(gc->font));
 			FALLBACK_FLUSH(drawable);
@@ -14284,10 +14212,8 @@ fallback:
 		if (!sna_drawable_move_region_to_cpu(drawable, &region, MOVE_WRITE))
 			goto out;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			DBG(("%s: fallback -- fbImageGlyphBlt\n", __FUNCTION__));
-			assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 			fbImageGlyphBlt(drawable, gc, x, y, n,
 					info, FONTGLYPHS(gc->font));
 			FALLBACK_FLUSH(drawable);
@@ -14369,10 +14295,8 @@ fallback:
 		if (!sna_drawable_move_region_to_cpu(drawable, &region, MOVE_WRITE))
 			goto out;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			DBG(("%s: fallback -- fbImageGlyphBlt\n", __FUNCTION__));
-			assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 			fbImageGlyphBlt(drawable, gc, x, y, n,
 					info, FONTGLYPHS(gc->font));
 			FALLBACK_FLUSH(drawable);
@@ -14705,10 +14629,8 @@ fallback:
 	if (!sna_drawable_move_region_to_cpu(drawable, &region, MOVE_WRITE))
 		goto out_gc;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fallback -- fbImageGlyphBlt\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbImageGlyphBlt(drawable, gc, x, y, n, info, base);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -14788,10 +14710,8 @@ fallback:
 					     MOVE_READ | MOVE_WRITE))
 		goto out_gc;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fallback -- fbPolyGlyphBlt\n", __FUNCTION__));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPolyGlyphBlt(drawable, gc, x, y, n, info, base);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -14874,7 +14794,6 @@ sna_push_pixels_solid_blt(GCPtr gc,
 		if (!upload)
 			break;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			uint8_t *dst = ptr;
 
@@ -14981,11 +14900,9 @@ sna_push_pixels(GCPtr gc, PixmapPtr bitmap, DrawablePtr drawable,
 					     drawable_gc_flags(drawable, gc, false)))
 		goto out;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		DBG(("%s: fallback, fbPushPixels(%d, %d, %d %d)\n",
 		     __FUNCTION__, w, h, x, y));
-		assert(gc->ops == (GCOps *)&sna_gc_ops__cpu);
 		fbPushPixels(gc, bitmap, drawable, w, h, x, y);
 		FALLBACK_FLUSH(drawable);
 		sigtrap_put();
@@ -15018,43 +14935,12 @@ static const GCOps sna_gc_ops = {
 	sna_push_pixels,
 };
 
-static RegionPtr
-sna_copy_plane__cpu(DrawablePtr src, DrawablePtr dst, GCPtr gc,
-		    int src_x, int src_y,
-		    int w, int h,
-		    int dst_x, int dst_y,
-		    unsigned long bit)
-{
-	DBG(("%s: src=(%d, %d), dst=(%d, %d), size=%dx%d\n", __FUNCTION__,
-	     src_x, src_y, dst_x, dst_y, w, h));
-
-	if (gc->planemask == 0)
-		goto empty;
-
-	if (src->bitsPerPixel == 1 && (bit&1) == 0)
-		goto empty;
-
-	if (!sna_drawable_move_to_cpu(src, MOVE_READ))
-		goto empty;
-
-	return miDoCopy(src, dst, gc,
-			src_x, src_y, w, h, dst_x, dst_y,
-			src->bitsPerPixel > 1 ? fbCopyNto1 : fbCopy1toN,
-			bit, 0);
-
-empty:
-	return miHandleExposures(src, dst, gc,
-				 src_x, src_y,
-				 w, h,
-				 dst_x, dst_y, bit);
-}
-
 static const GCOps sna_gc_ops__cpu = {
 	fbFillSpans,
 	fbSetSpans,
 	fbPutImage,
 	fbCopyArea,
-	sna_copy_plane__cpu,
+	fbCopyPlane,
 	sna_poly_point__cpu,
 	fbPolyLine,
 	fbPolySegment,
@@ -15108,25 +14994,6 @@ sna_validate_gc(GCPtr gc, unsigned long changes, DrawablePtr drawable)
 	sna_gc(gc)->changes |= changes;
 }
 
-static void
-sna_validate_gc__cpu(GCPtr gc, unsigned long changes, DrawablePtr drawable)
-{
-	struct sna_gc *sgc;
-
-	DBG(("%s changes=%lx\n", __FUNCTION__, changes));
-
-	if (changes & (GCClipXOrigin | GCClipYOrigin | GCClipMask | GCSubwindowMode) ||
-	    drawable->serialNumber != (gc->serialNumber & DRAWABLE_SERIAL_BITS))
-		miComputeCompositeClip(gc, drawable);
-
-	fbValidateGC(gc, changes, drawable);
-	gc->serialNumber = drawable->serialNumber;
-
-	sgc = sna_gc(gc);
-	sgc->serial = drawable->serialNumber;
-	sgc->changes = 0;
-}
-
 static const GCFuncs sna_gc_funcs = {
 	sna_validate_gc,
 	miChangeGC,
@@ -15138,7 +15005,7 @@ static const GCFuncs sna_gc_funcs = {
 };
 
 static const GCFuncs sna_gc_funcs__cpu = {
-	sna_validate_gc__cpu,
+	fbValidateGC,
 	miChangeGC,
 	miCopyGC,
 	miDestroyGC,
@@ -15158,13 +15025,8 @@ static int sna_create_gc(GCPtr gc)
 
 	fb_gc(gc)->bpp = bits_per_pixel(gc->depth);
 
-	if (gc->depth < 8) {
-		gc->funcs = (GCFuncs *)&sna_gc_funcs__cpu;
-		gc->ops = (GCOps *)&sna_gc_ops__cpu;
-	} else {
-		gc->funcs = (GCFuncs *)&sna_gc_funcs;
-		gc->ops = (GCOps *)&sna_gc_ops;
-	}
+	gc->funcs = (GCFuncs *)&sna_gc_funcs;
+	gc->ops = (GCOps *)&sna_gc_ops;
 	return true;
 }
 
@@ -15461,7 +15323,6 @@ sna_copy_window(WindowPtr win, DDXPointRec origin, RegionPtr src)
 		if (!sna_pixmap_move_to_cpu(pixmap, MOVE_READ | MOVE_WRITE))
 			return;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			miCopyRegion(&pixmap->drawable, &pixmap->drawable,
 				     0, &dst, dx, dy, fbCopyNtoN, 0, NULL);
@@ -15784,7 +15645,6 @@ fallback:
 			if (!sna_pixmap_move_to_cpu(dst, MOVE_READ | MOVE_WRITE | MOVE_INPLACE_HINT))
 				goto skip;
 
-			sigtrap_assert();
 			if (sigtrap_get() == 0) {
 				assert(src->drawable.bitsPerPixel == dst->drawable.bitsPerPixel);
 				do {
diff --git a/src/sna/sna_composite.c b/src/sna/sna_composite.c
index 3174639..c5e2311 100644
--- a/src/sna/sna_composite.c
+++ b/src/sna/sna_composite.c
@@ -541,7 +541,6 @@ sna_composite_fb(CARD8 op,
 		    region->extents.y1 + sy >= 0 &&
 		    region->extents.x2 + sx <= src->pDrawable->width &&
 		    region->extents.y2 + sy <= src->pDrawable->height) {
-			sigtrap_assert();
 			if (sigtrap_get() == 0) {
 				BoxPtr box = RegionRects(region);
 				int nbox = RegionNumRects(region);
@@ -594,7 +593,6 @@ sna_composite_fb(CARD8 op,
 	dest_image = image_from_pict(dst, TRUE, &dst_xoff, &dst_yoff);
 
 	if (src_image && dest_image && !(mask && !mask_image)) {
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			sna_image_composite(op, src_image, mask_image, dest_image,
 					    src_x + src_xoff, src_y + src_yoff,
@@ -748,7 +746,6 @@ fallback:
 			 width,  height);
 out:
 	REGION_UNINIT(NULL, &region);
-	sigtrap_assert();
 }
 
 void
@@ -1083,7 +1080,6 @@ fallback:
 
 	assert(pixmap->devPrivate.ptr);
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		if (op <= PictOpSrc) {
 			int nbox = RegionNumRects(&region);
diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 5a5c6b4..5830d9b 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -1678,7 +1678,6 @@ next:
 		if (dst_image == NULL)
 			goto out_free_src;
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			if (mask_format) {
 				pixman_composite_glyphs(op, src_image, dst_image,
@@ -1761,7 +1760,6 @@ out:
 			src_y -= y - dst->pDrawable->y;
 		}
 
-		sigtrap_assert();
 		if (sigtrap_get() == 0) {
 			do {
 				n = list->len;
diff --git a/src/sna/sna_io.c b/src/sna/sna_io.c
index ee5debf..cf3c4d1 100644
--- a/src/sna/sna_io.c
+++ b/src/sna/sna_io.c
@@ -114,7 +114,6 @@ read_boxes_inplace__cpu(struct kgem *kgem,
 
 	kgem_bo_sync__cpu_full(kgem, bo, 0);
 
-	sigtrap_assert();
 	if (sigtrap_get())
 		return false;
 
@@ -164,7 +163,6 @@ static void read_boxes_inplace(struct kgem *kgem,
 	if (src == NULL)
 		return;
 
-	sigtrap_assert();
 	if (sigtrap_get())
 		return;
 
@@ -591,7 +589,6 @@ write_boxes_inplace__tiled(struct kgem *kgem,
 
 	kgem_bo_sync__cpu(kgem, bo);
 
-	sigtrap_assert();
 	if (sigtrap_get())
 		return false;
 
@@ -633,7 +630,6 @@ static bool write_boxes_inplace(struct kgem *kgem,
 
 	assert(dst != src);
 
-	sigtrap_assert();
 	if (sigtrap_get())
 		return false;
 
@@ -1049,7 +1045,6 @@ write_boxes_inplace__xor(struct kgem *kgem,
 	if (dst == NULL)
 		return false;
 
-	sigtrap_assert();
 	if (sigtrap_get())
 		return false;
 
@@ -1446,7 +1441,6 @@ indirect_replace(struct sna *sna,
 	if (!src_bo)
 		return false;
 
-	sigtrap_assert();
 	if (sigtrap_get() == 0) {
 		memcpy_blt(src, ptr, pixmap->drawable.bitsPerPixel,
 			   stride, src_bo->pitch,
@@ -1526,7 +1520,6 @@ bool sna_replace(struct sna *sna, PixmapPtr pixmap,
 			goto done;
 	}
 
-	sigtrap_assert();
 	if (kgem_bo_is_mappable(&sna->kgem, bo) &&
 	    (dst = kgem_bo_map(&sna->kgem, bo)) != NULL &&
 	    sigtrap_get() == 0) {


More information about the xorg-commit mailing list