OSDN Git Service

nouveau: Let the user choose the push buffer size.
[android-x86/external-libdrm.git] / nouveau / nouveau_reloc.c
index 301482b..332dfa0 100644 (file)
@@ -73,6 +73,12 @@ nouveau_reloc_emit(struct nouveau_channel *chan, struct nouveau_bo *reloc_bo,
                return -EINVAL;
        }
 
+       /* We're about to reloc a user buffer, better make sure we don't cause
+        * a double migration.
+        */
+       if (!(nvbo->flags & (NOUVEAU_BO_GART | NOUVEAU_BO_VRAM)))
+               nvbo->flags |= (flags & (NOUVEAU_BO_GART | NOUVEAU_BO_VRAM));
+
        rpbbo = nouveau_bo_emit_buffer(chan, reloc_bo);
        if (!rpbbo)
                return -ENOMEM;