summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-07-04 13:45:06 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-07-04 17:13:57 +0100
commitd294e41a6a49ddaa6f8d7d5cda266168095fe1f5 (patch)
treecc366a0f69cec94b7b87f337e5371b7165604887
parent3e53b0f3a365c031bfef8d087bcee0ae1c2d2988 (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.c13
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)