34 lines
1.2 KiB
Diff
34 lines
1.2 KiB
Diff
From 504c7267a1e84b157cbd7e9c1b805e1bc0c2c846 Mon Sep 17 00:00:00 2001
|
|
From: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Date: Thu, 23 Aug 2012 13:12:52 +0100
|
|
Subject: [PATCH] drm/i915: Use cpu relocations if the object is in the GTT
|
|
but not mappable
|
|
|
|
This prevents the case of unbinding the object in order to process the
|
|
relocations through the GTT and then rebinding it only to then proceed
|
|
to use cpu relocations as the object is now in the CPU write domain. By
|
|
choosing to use cpu relocations up front, we can therefore avoid the
|
|
rebind penalty.
|
|
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
---
|
|
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
|
index f7346d8..dc87563 100644
|
|
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
|
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
|
|
@@ -95,6 +95,7 @@ eb_destroy(struct eb_objects *eb)
|
|
static inline int use_cpu_reloc(struct drm_i915_gem_object *obj)
|
|
{
|
|
return (obj->base.write_domain == I915_GEM_DOMAIN_CPU ||
|
|
+ !obj->map_and_fenceable ||
|
|
obj->cache_level != I915_CACHE_NONE);
|
|
}
|
|
|
|
--
|
|
1.7.12.1
|
|
|