xf86-video-intel: 2 commits - src/sna/sna_dri2.c

Chris Wilson ickle at kemper.freedesktop.org
Fri Jun 12 06:51:37 PDT 2015


 src/sna/sna_dri2.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

New commits:
commit 92a27732217b4d70f9af7d3dc12de7d69d5a6ab6
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 12 14:29:42 2015 +0100

    sna/dri2: Record fence bo by inspecting the dst_bo
    
    As the backend may submit the batch as it completes the copy, we need to
    look at what request the dst_bo is in rather than assuming it is the
    next_request.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 594b689..040aebb 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -1240,12 +1240,14 @@ __sna_dri2_copy_region(struct sna *sna, DrawablePtr draw, RegionPtr region,
 				  boxes, n, hint);
 
 	if (flags & (DRI2_SYNC | DRI2_BO)) { /* STAT! */
-		struct kgem_request *rq = sna->kgem.next_request;
-		DBG(("%s: flushing\n", __FUNCTION__));
-		kgem_submit(&sna->kgem);
-		if (rq->bo) {
+		struct kgem_request *rq = RQ(dst_bo->rq);
+		if (rq != (void *)&sna->kgem) {
+			if (rq->bo == NULL)
+				kgem_submit(&sna->kgem);
+			assert(rq->bo);
 			bo = ref(rq->bo);
-			DBG(("%s: recording sync fence handle=%d\n", __FUNCTION__, bo->handle));
+			DBG(("%s: recording sync fence handle=%d\n",
+			     __FUNCTION__, bo->handle));
 		}
 	}
 
commit dc9ee01d1255faad81f7667b99b4871e5f08d8c7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 12 14:26:56 2015 +0100

    sna/dri2: Correct a couple of DBG statements for copy_region
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 187e53f..594b689 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -162,6 +162,7 @@ __sna_dri2_copy_region(struct sna *sna, DrawablePtr draw, RegionPtr region,
 inline static void
 __sna_dri2_copy_event(struct sna_dri2_event *info, unsigned flags)
 {
+	DBG(("%s: flags = %x\n", __FUNCTION__, flags));
 	info->bo = __sna_dri2_copy_region(info->sna, info->draw, NULL,
 					  info->back, info->front,
 					  flags);
@@ -1238,9 +1239,9 @@ __sna_dri2_copy_region(struct sna *sna, DrawablePtr draw, RegionPtr region,
 				  dst_draw, dst_bo, dx, dy,
 				  boxes, n, hint);
 
-	DBG(("%s: flushing? %d\n", __FUNCTION__, sync));
 	if (flags & (DRI2_SYNC | DRI2_BO)) { /* STAT! */
 		struct kgem_request *rq = sna->kgem.next_request;
+		DBG(("%s: flushing\n", __FUNCTION__));
 		kgem_submit(&sna->kgem);
 		if (rq->bo) {
 			bo = ref(rq->bo);


More information about the xorg-commit mailing list