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