diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-07-04 13:45:06 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-07-04 17:13:57 +0100 |
commit | d294e41a6a49ddaa6f8d7d5cda266168095fe1f5 (patch) | |
tree | cc366a0f69cec94b7b87f337e5371b7165604887 | |
parent | 3e53b0f3a365c031bfef8d087bcee0ae1c2d2988 (diff) |
sna: Update flush/retirement lists after a implicit flush for mmap
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/kgem.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c index d85b5cc2..b2468981 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -1557,7 +1557,18 @@ uint32_t kgem_add_reloc(struct kgem *kgem, void *kgem_bo_map(struct kgem *kgem, struct kgem_bo *bo, int prot) { - return gem_mmap(kgem->fd, bo->handle, bo->size, prot); + void *ptr = gem_mmap(kgem->fd, bo->handle, bo->size, prot); + if (ptr == NULL) + return NULL; + + bo->needs_flush = false; + if (prot & PROT_WRITE) { + if (bo->rq) + kgem_retire(kgem); + bo->gpu = false; + } + + return ptr; } uint32_t kgem_bo_flink(struct kgem *kgem, struct kgem_bo *bo) |