Message ID | 1302945465-32115-17-git-send-email-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Apr 16, 2011 at 10:17:40AM +0100, Chris Wilson wrote: > As we cannot wait upon an object to be released by the GPU once we have > disabled pagefaults, process any pending retirements first in the hope > that we move any potential relocations off the active list. I have a hard time believing how one could emit relocs to active objects ... I suspect it is partially a cache thing: Retire stuff while the gem_objects are sitting in L1 cache anyway can't hurt. So Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index 0010aee..b6f89f9 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -445,6 +445,12 @@ i915_gem_execbuffer_relocate(struct drm_device *dev, struct drm_i915_gem_object *obj; int ret = 0; + /* Try to move as many of the relocation targets off the active list + * to avoid unnecessary fallbacks to the slow path, as we cannot wait + * for the retirement with pagefaults disabled. + */ + i915_gem_retire_requests(dev); + /* This is the fast path and we cannot handle a pagefault whilst * holding the struct mutex lest the user pass in the relocations * contained within a mmaped bo. For in such a case we, the page
As we cannot wait upon an object to be released by the GPU once we have disabled pagefaults, process any pending retirements first in the hope that we move any potential relocations off the active list. References: https://bugs.freedesktop.org/show_bug.cgi?id=35733 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)