drm/i915: Broaden application of set-domain(GTT)
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 2 Jan 2015 10:59:29 +0000 (16:29 +0530)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 6 Jan 2015 08:08:00 +0000 (09:08 +0100)
commit43566dedde54f9729113f5f9fde77d53e75e61e9
treefb34523fe99b339de996b477524d609330af488d
parentb9b5dce5e767a07604b5debb169472f15b4b57a7
drm/i915: Broaden application of set-domain(GTT)

Previously, this was restricted to only operate on bound objects - to
make pointer access through the GTT to the object coherent with writes
to and from the GPU. A second usecase is drm_intel_bo_wait_rendering()
which at present does not function unless the object also happens to
be bound into the GGTT (on current systems that is becoming increasingly
rare, especially for the typical requests from mesa). A third usecase is
a future patch wishing to extend the coverage of the GTT domain to
include objects not bound into the GGTT but still in its coherent cache
domain. For the latter pair of requests, we need to operate on the
object regardless of its bind state.

v2: After discussion with Akash, we came to the conclusion that the
get-pages was required in order for accurate domain tracking in the
corner cases (like the shrinker) and also useful for ensuring memory
coherency with earlier cached CPU mmaps in case userspace uses exotic
cache bypass (non-temporal) instructions.

v3: Fix the inactive object check.

v4: Rebase to latest drm-intel-nightly codebase

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Akash Goel <akash.goel@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c