diff options
author | Maarten Maathuis <madman2003@gmail.com> | 2010-02-24 23:10:34 +0100 |
---|---|---|
committer | Maarten Maathuis <madman2003@gmail.com> | 2010-03-02 23:25:50 +0100 |
commit | cdc788d6456645072a1610aa9217e4ebae5cfc6b (patch) | |
tree | 33f2cc2d2b8312e57e87c5c9798722f3a0bbdc65 /nouveau/nouveau_reloc.c | |
parent | a1f9ea765ddc5cad45e36c4931663b21992727ee (diff) |
nouveau: make sure initial kalloc for user bo ends up in the right place
- Currently reloc'ing a user bo to gart will first cause an allocation in vram,
which is then written to by cpu, then the bo gets moved to gart.
Acked-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Diffstat (limited to 'nouveau/nouveau_reloc.c')
-rw-r--r-- | nouveau/nouveau_reloc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/nouveau/nouveau_reloc.c b/nouveau/nouveau_reloc.c index 301482b0..332dfa01 100644 --- a/nouveau/nouveau_reloc.c +++ b/nouveau/nouveau_reloc.c @@ -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; |