diff mbox

[24/42] drm/i915: Treat a framebuffer reference as an active reference whilst shrinking

Message ID 20161007094635.28319-25-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson Oct. 7, 2016, 9:46 a.m. UTC
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>
---
 drivers/gpu/drm/i915/i915_gem_shrinker.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

John Harrison Oct. 11, 2016, 9:54 a.m. UTC | #1
On 07/10/2016 10:46, Chris Wilson wrote:
> 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>
> ---
>   drivers/gpu/drm/i915/i915_gem_shrinker.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
> index fa72473dc7f5..0241658af16b 100644
> --- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
> +++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
> @@ -214,8 +214,9 @@ i915_gem_shrink(struct drm_i915_private *dev_priv,
>   			    !is_vmalloc_addr(obj->mm.mapping))
>   				continue;
>   
> -			if ((flags & I915_SHRINK_ACTIVE) == 0 &&
> -			    i915_gem_object_is_active(obj))
> +			if (!(flags & I915_SHRINK_ACTIVE) &&
> +			    (i915_gem_object_is_active(obj) ||
> +			     obj->framebuffer_references))
>   				continue;
>   
>   			if (!can_release_pages(obj))

Reviewed-by: John Harrison <john.c.harrison@intel.com>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
index fa72473dc7f5..0241658af16b 100644
--- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
@@ -214,8 +214,9 @@  i915_gem_shrink(struct drm_i915_private *dev_priv,
 			    !is_vmalloc_addr(obj->mm.mapping))
 				continue;
 
-			if ((flags & I915_SHRINK_ACTIVE) == 0 &&
-			    i915_gem_object_is_active(obj))
+			if (!(flags & I915_SHRINK_ACTIVE) &&
+			    (i915_gem_object_is_active(obj) ||
+			     obj->framebuffer_references))
 				continue;
 
 			if (!can_release_pages(obj))