xf86-video-intel: src/sna/gen4_render.c src/sna/gen5_render.c src/sna/gen6_render.c src/sna/gen7_render.c src/sna/gen8_render.c

Chris Wilson ickle at kemper.freedesktop.org
Wed Jan 29 05:08:14 PST 2014


 src/sna/gen4_render.c |    1 +
 src/sna/gen5_render.c |    1 +
 src/sna/gen6_render.c |    1 +
 src/sna/gen7_render.c |    1 +
 src/sna/gen8_render.c |    1 +
 5 files changed, 5 insertions(+)

New commits:
commit 7df3da10e744d7f168ea3f30b21c434f99beae17
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Jan 29 13:06:08 2014 +0000

    sna/gen4+: Assert that the cached binding location is valid
    
    We can at least check that it is in the right region (i.e. not past
    where the current surface has been allocated from).
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=74176
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index 4f4a4c8..1d164b6 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -514,6 +514,7 @@ gen4_bind_bo(struct sna *sna,
 	/* After the first bind, we manage the cache domains within the batch */
 	offset = kgem_bo_get_binding(bo, format | is_dst << 31);
 	if (offset) {
+		assert(offset >= sna->kgem.surface);
 		if (is_dst)
 			kgem_bo_mark_dirty(bo);
 		return offset * sizeof(uint32_t);
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index 3396acd..8fb47cb 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -499,6 +499,7 @@ gen5_bind_bo(struct sna *sna,
 		if (offset) {
 			if (is_dst)
 				kgem_bo_mark_dirty(bo);
+			assert(offset >= sna->kgem.surface);
 			return offset * sizeof(uint32_t);
 		}
 	}
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index cf417d4..08c9f78 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -1052,6 +1052,7 @@ gen6_bind_bo(struct sna *sna,
 		DBG(("[%x]  bo(handle=%d), format=%d, reuse %s binding\n",
 		     offset, bo->handle, format,
 		     is_dst ? "render" : "sampler"));
+		assert(offset >= sna->kgem.surface);
 		if (is_dst)
 			kgem_bo_mark_dirty(bo);
 		return offset * sizeof(uint32_t);
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index f15e057..1574813 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -1286,6 +1286,7 @@ gen7_bind_bo(struct sna *sna,
 	/* After the first bind, we manage the cache domains within the batch */
 	offset = kgem_bo_get_binding(bo, format | is_dst << 30 | is_scanout << 31);
 	if (offset) {
+		assert(offset >= sna->kgem.surface);
 		if (is_dst)
 			kgem_bo_mark_dirty(bo);
 		return offset * sizeof(uint32_t);
diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index 25fd528..5c718bc 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -1303,6 +1303,7 @@ gen8_bind_bo(struct sna *sna,
 	if (offset) {
 		if (is_dst)
 			kgem_bo_mark_dirty(bo);
+		assert(offset >= sna->kgem.surface);
 		return offset * sizeof(uint32_t);
 	}
 


More information about the xorg-commit mailing list