From b1b4db8942e69d47aabfad3751165dc2252fa448 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 25 Feb 2012 00:43:30 +0000 Subject: [PATCH] sna: Skip a tiled bo when searching the cache for a linear mmap If we change tiling on a bo, we are effectively discarding the cached mmap so it is preferable to look for another. Signed-off-by: Chris Wilson --- src/sna/kgem.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 007dc045..d73fc304 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -1982,7 +1982,9 @@ search_linear_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags) if (num_pages > num_pages(bo)) continue; - if (use_active && bo->tiling != I915_TILING_NONE) + if (use_active && + kgem->gen <= 40 && + bo->tiling != I915_TILING_NONE) continue; if (bo->purged && !kgem_bo_clear_purgeable(kgem, bo)) { @@ -1991,7 +1993,10 @@ search_linear_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags) } if (I915_TILING_NONE != bo->tiling) { - if (use_active) + if (flags & (CREATE_CPU_MAP | CREATE_GTT_MAP)) + continue; + + if (first) continue; if (gem_set_tiling(kgem->fd, bo->handle,