xf86-video-intel: 2 commits - src/sna/gen3_render.c src/sna/kgem.c src/sna/kgem.h src/sna/sna_dri.c

Chris Wilson ickle at kemper.freedesktop.org
Fri Jul 8 10:59:35 PDT 2011


 src/sna/gen3_render.c |    5 ++++-
 src/sna/kgem.c        |    7 +++++--
 src/sna/kgem.h        |    3 ++-
 src/sna/sna_dri.c     |    2 +-
 4 files changed, 12 insertions(+), 5 deletions(-)

New commits:
commit 649ebcef0938c7cde4f3172a639d39488454999a
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jul 8 17:44:58 2011 +0100

    sna: A buffer only needs a flush if it remains dirty at the end of the batch
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index dfac976..afd2a09 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -634,6 +634,7 @@ static void kgem_commit(struct kgem *kgem)
 		bo->src_bound = bo->dst_bound = 0;
 		bo->presumed_offset = bo->exec->offset;
 		bo->exec = NULL;
+		bo->needs_flush |= bo->dirty;
 		bo->dirty = false;
 		bo->gpu = true;
 		bo->cpu_read = false;
@@ -1581,7 +1582,7 @@ uint32_t kgem_add_reloc(struct kgem *kgem,
 		kgem->reloc[index].presumed_offset = bo->presumed_offset;
 
 		if (read_write_domain & 0x7fff)
-			bo->needs_flush = bo->dirty = true;
+			bo->dirty = true;
 
 		delta += bo->presumed_offset;
 	} else {
@@ -1597,7 +1598,9 @@ uint32_t kgem_add_reloc(struct kgem *kgem,
 
 void *kgem_bo_map(struct kgem *kgem, struct kgem_bo *bo, int prot)
 {
-	void *ptr = gem_mmap(kgem->fd, bo->handle, bo->size, prot);
+	void *ptr;
+
+	ptr = gem_mmap(kgem->fd, bo->handle, bo->size, prot);
 	if (ptr == NULL)
 		return NULL;
 
diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index 2ad975a..9da4740 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -181,10 +181,11 @@ static inline void kgem_bo_submit(struct kgem *kgem, struct kgem_bo *bo)
 void __kgem_flush(struct kgem *kgem, struct kgem_bo *bo);
 static inline void kgem_bo_flush(struct kgem *kgem, struct kgem_bo *bo)
 {
+	kgem_bo_submit(kgem, bo);
+
 	if (!bo->needs_flush)
 		return;
 
-	kgem_bo_submit(kgem, bo);
 	__kgem_flush(kgem, bo);
 
 	bo->needs_flush = false;
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 2a8a865..a6cc9ce 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -862,7 +862,7 @@ sna_dri_flip(struct sna *sna, DrawablePtr draw, struct sna_dri_frame_event *info
 			return sna_dri_schedule_flip(sna, draw, info);
 		}
 
-		DBG(("%s: chaining flip\n", __FUNCION__));
+		DBG(("%s: chaining flip\n", __FUNCTION__));
 		assert(pending->chain == NULL);
 		pending->chain = info;
 		return TRUE;
commit 625e37b317e4d237bdc9f80d7ab86b5d2badddc7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jul 8 18:58:32 2011 +0100

    sna/gen3: So we also need to ensure stippling is cleared...
    
    My theory that we used nothing that invoked polygon stippling proved
    baseless.
    
    Fixes regression from 3b5971bd2359383cb8326702d80e03bc15d34c69
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index 464e87b..7665cdc 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -1082,7 +1082,7 @@ static void gen3_emit_invariant(struct sna *sna)
 		  CSB_TCB(6, 6) |
 		  CSB_TCB(7, 7));
 
-	OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 | I1_LOAD_S(3) | I1_LOAD_S(4) | I1_LOAD_S(5) | 1);
+	OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 | I1_LOAD_S(3) | I1_LOAD_S(4) | I1_LOAD_S(5) | 2);
 	OUT_BATCH(0); /* Disable texture coordinate wrap-shortest */
 	OUT_BATCH((1 << S4_POINT_WIDTH_SHIFT) |
 		  S4_LINE_WIDTH_ONE |
@@ -1096,6 +1096,9 @@ static void gen3_emit_invariant(struct sna *sna)
 	OUT_BATCH(_3DSTATE_LOAD_INDIRECT);
 	OUT_BATCH(0x00000000);
 
+	OUT_BATCH(_3DSTATE_STIPPLE);
+	OUT_BATCH(0x00000000);
+
 	sna->render_state.gen3.need_invariant = FALSE;
 }
 


More information about the xorg-commit mailing list