xf86-video-intel: 2 commits - src/intel_device.c src/sna/gen6_render.c src/sna/gen7_render.c src/sna/gen8_render.c

Chris Wilson ickle at kemper.freedesktop.org
Fri Jun 13 05:53:12 PDT 2014


 src/intel_device.c    |    4 ++--
 src/sna/gen6_render.c |    8 +++++---
 src/sna/gen7_render.c |    8 +++++---
 src/sna/gen8_render.c |    8 +++++---
 4 files changed, 17 insertions(+), 11 deletions(-)

New commits:
commit 8322e3e5c6ed19e029f365d869c80388863c424d
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 13 13:50:34 2014 +0100

    intel: Check that the fd points to i915 after authorising
    
    The call to GETPARAM requires either a rendernode or authorisation.
    Therefore we can only assert that the fd is a valid i915 handle after
    authorise() and not before.
    
    Reported-by: Hans de Goede <hdegoede at redhat.com>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_device.c b/src/intel_device.c
index 610b223..d9d8df3 100644
--- a/src/intel_device.c
+++ b/src/intel_device.c
@@ -439,8 +439,6 @@ static int authorise(struct intel_device *dev, int fd)
 	struct stat st;
 	drm_magic_t magic;
 
-	assert(is_i915_gem(fd));
-
 	if (is_render_node(fd, &st)) /* restricted authority, do not elevate */
 		return 1;
 
@@ -470,6 +468,8 @@ int intel_get_client_fd(ScrnInfoPtr scrn)
 		return -BadMatch;
 	}
 
+	assert(is_i915_gem(fd));
+
 	return fd;
 }
 
commit 97003b1a2d6c8beb5c4df4bece5a2d5b03b5ae2f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 13 12:32:12 2014 +0100

    sna/gen6+: Prefer the BLT for large overlapping copies
    
    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 8668d12..b141b2a 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -2725,10 +2725,9 @@ fallback_blt:
 		     src_bo, src_dx, src_dy,
 		     dst_bo, dst_dx, dst_dy,
 		     box, n, &extents)) {
-		if (too_large(extents.x2-extents.x1, extents.y2-extents.y1))
-			goto fallback_blt;
+		bool big = too_large(extents.x2-extents.x1, extents.y2-extents.y1);
 
-		if (can_switch_to_blt(sna, dst_bo, flags) &&
+		if ((big || can_switch_to_blt(sna, dst_bo, flags)) &&
 		    sna_blt_copy_boxes(sna, alu,
 				       src_bo, src_dx, src_dy,
 				       dst_bo, dst_dx, dst_dy,
@@ -2736,6 +2735,9 @@ fallback_blt:
 				       box, n))
 			return true;
 
+		if (big)
+			goto fallback_blt;
+
 		return sna_render_copy_boxes__overlap(sna, alu,
 						      src, src_bo, src_dx, src_dy,
 						      dst, dst_bo, dst_dx, dst_dy,
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 3fcca3e..80c785d 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2962,10 +2962,9 @@ fallback_blt:
 		     src_bo, src_dx, src_dy,
 		     dst_bo, dst_dx, dst_dy,
 		     box, n, &extents)) {
-		if (too_large(extents.x2-extents.x1, extents.y2-extents.y1))
-			goto fallback_blt;
+		bool big = too_large(extents.x2-extents.x1, extents.y2-extents.y1);
 
-		if (can_switch_to_blt(sna, dst_bo, flags) &&
+		if ((big || can_switch_to_blt(sna, dst_bo, flags)) &&
 		    sna_blt_copy_boxes(sna, alu,
 				       src_bo, src_dx, src_dy,
 				       dst_bo, dst_dx, dst_dy,
@@ -2973,6 +2972,9 @@ fallback_blt:
 				       box, n))
 			return true;
 
+		if (big)
+			goto fallback_blt;
+
 		return sna_render_copy_boxes__overlap(sna, alu,
 						      src, src_bo, src_dx, src_dy,
 						      dst, dst_bo, dst_dx, dst_dy,
diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index 7ac883b..1bde3ad 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -2786,10 +2786,9 @@ fallback_blt:
 		     src_bo, src_dx, src_dy,
 		     dst_bo, dst_dx, dst_dy,
 		     box, n, &extents)) {
-		if (too_large(extents.x2-extents.x1, extents.y2-extents.y1))
-			goto fallback_blt;
+		bool big = too_large(extents.x2-extents.x1, extents.y2-extents.y1);
 
-		if (can_switch_to_blt(sna, dst_bo, flags) &&
+		if ((big || can_switch_to_blt(sna, dst_bo, flags)) &&
 		    sna_blt_copy_boxes(sna, alu,
 				       src_bo, src_dx, src_dy,
 				       dst_bo, dst_dx, dst_dy,
@@ -2797,6 +2796,9 @@ fallback_blt:
 				       box, n))
 			return true;
 
+		if (big)
+			goto fallback_blt;
+
 		return sna_render_copy_boxes__overlap(sna, alu,
 						      src, src_bo, src_dx, src_dy,
 						      dst, dst_bo, dst_dx, dst_dy,


More information about the xorg-commit mailing list