Signed-off-by: Maarten Maathuis <[email protected]>
---
 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

_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to