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