xf86-video-intel: 4 commits - src/intel_device.c src/sna/gen2_render.c src/sna/gen3_render.c src/sna/gen4_render.c src/sna/gen5_render.c src/sna/gen6_common.h src/sna/gen6_render.c src/sna/gen7_render.c src/sna/gen8_render.c src/sna/kgem.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Mar 13 01:55:53 PDT 2014


 src/intel_device.c    |    3 ++-
 src/sna/gen2_render.c |    1 +
 src/sna/gen3_render.c |    1 +
 src/sna/gen4_render.c |    1 +
 src/sna/gen5_render.c |    1 +
 src/sna/gen6_common.h |   21 +++++++++++----------
 src/sna/gen6_render.c |    1 +
 src/sna/gen7_render.c |    1 +
 src/sna/gen8_render.c |    1 +
 src/sna/kgem.c        |    3 +++
 10 files changed, 23 insertions(+), 11 deletions(-)

New commits:
commit 44fe21018330e0ce750ce25be36cc780ccdb78eb
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Mar 13 08:52:45 2014 +0000

    sna/gen6+: Simplify BLT vs RENDER decisions for fill ops
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen6_common.h b/src/sna/gen6_common.h
index 39e6150..0dddeb5 100644
--- a/src/sna/gen6_common.h
+++ b/src/sna/gen6_common.h
@@ -173,24 +173,25 @@ static inline bool prefer_blt_fill(struct sna *sna,
 	if (PREFER_RENDER)
 		return PREFER_RENDER < 0;
 
-	if (flags & (FILL_POINTS | FILL_SPANS) &&
-	    can_switch_to_blt(sna, bo, 0))
-		return true;
-
 	if (untiled_tlb_miss(bo))
 		return true;
 
 	if (force_blt_ring(sna))
 		return true;
 
-	if (kgem_bo_is_render(bo))
-		return false;
+	if ((flags & (FILL_POINTS | FILL_SPANS)) == 0) {
+		if (kgem_bo_is_render(bo))
+			return false;
 
-	if (prefer_render_ring(sna, bo))
-		return false;
+		if (prefer_render_ring(sna, bo))
+			return false;
 
-	if (!prefer_blt_ring(sna, bo, 0))
-		return false;
+		if (!prefer_blt_ring(sna, bo, 0))
+			return false;
+	} else {
+	    if (can_switch_to_blt(sna, bo, 0))
+		    return true;
+	}
 
 	return prefer_blt_bo(sna, bo);
 }
commit 5d8ded0dd671fbcbd212e06afbea88a7a56a8f0d
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Mar 13 08:51:29 2014 +0000

    sna: Nullify extra fill.ops
    
    I forgot that the initial memset(&fill, 0, sizeof(fill)) was no longer
    performed and we rely on explicit initialisation during the setup, so
    add the missing fields.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76088
    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 99e3912..2ebfde6 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -2985,6 +2985,7 @@ gen2_render_fill(struct sna *sna, uint8_t alu,
 	tmp->blt   = gen2_render_fill_op_blt;
 	tmp->box   = gen2_render_fill_op_box;
 	tmp->boxes = gen2_render_fill_op_boxes;
+	tmp->points = NULL;
 	tmp->done  = gen2_render_fill_op_done;
 
 	gen2_emit_fill_state(sna, &tmp->base);
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index 5601f4c..69f4668 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -6084,6 +6084,7 @@ gen3_render_fill(struct sna *sna, uint8_t alu,
 	tmp->blt   = gen3_render_fill_op_blt;
 	tmp->box   = gen3_render_fill_op_box;
 	tmp->boxes = gen3_render_fill_op_boxes;
+	tmp->points = NULL;
 	tmp->done  = gen3_render_fill_op_done;
 
 	gen3_align_vertex(sna, &tmp->base);
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index ba9c9bc..f377315 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -2852,6 +2852,7 @@ gen4_render_fill(struct sna *sna, uint8_t alu,
 	op->blt   = gen4_render_fill_op_blt;
 	op->box   = gen4_render_fill_op_box;
 	op->boxes = gen4_render_fill_op_boxes;
+	op->points = NULL;
 	op->done  = gen4_render_fill_op_done;
 	return true;
 }
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index d5856ea..e4db739 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -2917,6 +2917,7 @@ gen5_render_fill(struct sna *sna, uint8_t alu,
 	op->blt   = gen5_render_fill_op_blt;
 	op->box   = gen5_render_fill_op_box;
 	op->boxes = gen5_render_fill_op_boxes;
+	op->points = NULL;
 	op->done  = gen5_render_fill_op_done;
 	return true;
 }
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index 6ff187c..577d1c0 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -3300,6 +3300,7 @@ gen6_render_fill(struct sna *sna, uint8_t alu,
 	op->blt  = gen6_render_op_fill_blt;
 	op->box  = gen6_render_op_fill_box;
 	op->boxes = gen6_render_op_fill_boxes;
+	op->points = NULL;
 	op->done = gen6_render_op_fill_done;
 	return true;
 }
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 39a95f6..4f61661 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -3565,6 +3565,7 @@ gen7_render_fill(struct sna *sna, uint8_t alu,
 	op->blt   = gen7_render_fill_op_blt;
 	op->box   = gen7_render_fill_op_box;
 	op->boxes = gen7_render_fill_op_boxes;
+	op->points = NULL;
 	op->done  = gen7_render_fill_op_done;
 	return true;
 }
diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index 855551d..ddf376b 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -3325,6 +3325,7 @@ gen8_render_fill(struct sna *sna, uint8_t alu,
 	op->blt   = gen8_render_fill_op_blt;
 	op->box   = gen8_render_fill_op_box;
 	op->boxes = gen8_render_fill_op_boxes;
+	op->points = NULL;
 	op->done  = gen8_render_fill_op_done;
 	return true;
 }
commit 923b158e5c5dd50f943fe315a058410aeaa76269
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Mar 13 08:14:48 2014 +0000

    intel: Fallback to drmGetDeviceNameFromFd()
    
    If we are not supplied the path, call the libdrm function to search for
    the canonical name for our device.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_device.c b/src/intel_device.c
index 8780469..c0e1582 100644
--- a/src/intel_device.c
+++ b/src/intel_device.c
@@ -207,7 +207,8 @@ static char *find_master_node(int fd)
 	    (st.st_rdev & 0x7f) == master.st_rdev)
 		return strdup(buf);
 
-	return NULL;
+	/* Fallback to iterating over the usual suspects */
+	return drmGetDeviceNameFromFd(fd);
 }
 
 static char *find_render_node(int fd)
commit 202787ffa2bae5b1455137a344dabb9d85ee3aa0
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Mar 12 23:57:04 2014 +0000

    sna: Restore asserts that we do not map a freed buffer
    
    The complication comes with stolen bo that we treat as purged (because
    they have no backing storage we can access) and so require an extra
    caveat.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 729573a..063a1c4 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -5431,6 +5431,7 @@ void *kgem_bo_map__async(struct kgem *kgem, struct kgem_bo *bo)
 	assert(bo->proxy == NULL);
 	assert(list_is_empty(&bo->list));
 	assert_tiling(kgem, bo);
+	assert(!bo->purged || !bo->reusable);
 
 	if (bo->tiling == I915_TILING_NONE && !bo->scanout && kgem->has_llc) {
 		DBG(("%s: converting request for GTT map into CPU map\n",
@@ -5471,6 +5472,7 @@ void *kgem_bo_map(struct kgem *kgem, struct kgem_bo *bo)
 	assert(list_is_empty(&bo->list));
 	assert(bo->exec == NULL);
 	assert_tiling(kgem, bo);
+	assert(!bo->purged || !bo->reusable);
 
 	if (bo->tiling == I915_TILING_NONE && !bo->scanout &&
 	    (kgem->has_llc || bo->domain == DOMAIN_CPU)) {
@@ -5536,6 +5538,7 @@ void *kgem_bo_map__gtt(struct kgem *kgem, struct kgem_bo *bo)
 	assert(bo->exec == NULL);
 	assert(list_is_empty(&bo->list));
 	assert_tiling(kgem, bo);
+	assert(!bo->purged || !bo->reusable);
 
 	ptr = MAP(bo->map__gtt);
 	if (ptr == NULL) {


More information about the xorg-commit mailing list