drm/i915: Treat a framebuffer reference as an active reference whilst shrinking

Treat a framebuffer reference with the same priority as an active
reference whilst shrinking. Framebuffers are likely to be reused and
typically cost more to migrate to and from GPU memory (on LLC
architectures we need to clflush), so defer the temptation to purge them
during a kswapd run until we have run out of cheap buffers.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: John Harrison <john.c.harrison@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161012124824.23521-1-chris@chris-wilson.co.uk
This commit is contained in:
Chris Wilson 2016-10-12 13:48:24 +01:00
parent 8baa1f04b9
commit 45353ce59b

View File

@ -182,8 +182,9 @@ i915_gem_shrink(struct drm_i915_private *dev_priv,
!is_vmalloc_addr(obj->mapping)) !is_vmalloc_addr(obj->mapping))
continue; continue;
if ((flags & I915_SHRINK_ACTIVE) == 0 && if (!(flags & I915_SHRINK_ACTIVE) &&
i915_gem_object_is_active(obj)) (i915_gem_object_is_active(obj) ||
obj->framebuffer_references))
continue; continue;
if (!can_release_pages(obj)) if (!can_release_pages(obj))