[Nouveau] [PATCH] nouveau: don't emit reloc markers for bo's that are mapped
Maarten Maathuis
madman2003 at gmail.com
Thu Dec 17 17:06:13 PST 2009
Signed-off-by: Maarten Maathuis <madman2003 at gmail.com>
---
src/gallium/drivers/nouveau/nouveau_stateobj.h | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/src/gallium/drivers/nouveau/nouveau_stateobj.h b/src/gallium/drivers/nouveau/nouveau_stateobj.h
index 9aee9e4..6c40f64 100644
--- a/src/gallium/drivers/nouveau/nouveau_stateobj.h
+++ b/src/gallium/drivers/nouveau/nouveau_stateobj.h
@@ -163,6 +163,15 @@ so_emit_reloc_markers(struct nouveau_channel *chan, struct nouveau_stateobj *so)
for (i = 0; i < so->cur_reloc; i++) {
struct nouveau_stateobj_reloc *r = &so->reloc[i];
+ /* This is probably a vbo which has caused a pushbuf flush
+ * before mapping. Don't try to reloc it again, it will cause
+ * problems, because important stuff is skipped.
+ */
+ if (r->bo->map) {
+ pb->remaining += 2;
+ continue;
+ }
+
if ((ret = nouveau_pushbuf_emit_reloc(chan, pb->cur++, r->bo,
r->packet, 0,
(r->flags & (NOUVEAU_BO_VRAM |
--
1.6.5.4
More information about the Nouveau
mailing list