forked from Minki/linux
drm/i915: turn bound_ggtt checks to bound_any
In some places, we want to know if an object is bound in any address space, and not just the global GTT. This often applies when there is a single global resource (object, pages, etc.) function | reason -------------------------------------------------- i915_gem_object_is_inactive | global object i915_gem_object_put_pages | object's pages 915_gem_object_unpin | global object i915_gem_execbuffer_unreserve_object | temporary until we plumb vma pread/pwrite | see the note below Note: set_to_gtt_domain in pwrite/pread is abused as a wait_rendering call - but that once only worked if the object is bound. We really should replace this with a plain wait_rendering call, which would have the upside that in pread it would be clearer that we actually only wait for oustanding gpu writes. Signed-off-by: Ben Widawsky <ben@bwidawsk.net> [danvet: Explain the set_to_gtt_domain in pwrite/pread and volunteer Ben to replace those with wait_rendering calls.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
f6cd1f15d3
commit
9843877d10
@ -141,7 +141,7 @@ int i915_mutex_lock_interruptible(struct drm_device *dev)
|
||||
static inline bool
|
||||
i915_gem_object_is_inactive(struct drm_i915_gem_object *obj)
|
||||
{
|
||||
return i915_gem_obj_ggtt_bound(obj) && !obj->active;
|
||||
return i915_gem_obj_bound_any(obj) && !obj->active;
|
||||
}
|
||||
|
||||
int
|
||||
@ -422,7 +422,7 @@ i915_gem_shmem_pread(struct drm_device *dev,
|
||||
* anyway again before the next pread happens. */
|
||||
if (obj->cache_level == I915_CACHE_NONE)
|
||||
needs_clflush = 1;
|
||||
if (i915_gem_obj_ggtt_bound(obj)) {
|
||||
if (i915_gem_obj_bound_any(obj)) {
|
||||
ret = i915_gem_object_set_to_gtt_domain(obj, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -739,7 +739,7 @@ i915_gem_shmem_pwrite(struct drm_device *dev,
|
||||
* right away and we therefore have to clflush anyway. */
|
||||
if (obj->cache_level == I915_CACHE_NONE)
|
||||
needs_clflush_after = 1;
|
||||
if (i915_gem_obj_ggtt_bound(obj)) {
|
||||
if (i915_gem_obj_bound_any(obj)) {
|
||||
ret = i915_gem_object_set_to_gtt_domain(obj, true);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -1673,7 +1673,7 @@ i915_gem_object_put_pages(struct drm_i915_gem_object *obj)
|
||||
if (obj->pages_pin_count)
|
||||
return -EBUSY;
|
||||
|
||||
BUG_ON(i915_gem_obj_ggtt_bound(obj));
|
||||
BUG_ON(i915_gem_obj_bound_any(obj));
|
||||
|
||||
/* ->put_pages might need to allocate memory for the bit17 swizzle
|
||||
* array, hence protect them from being reaped by removing them from gtt
|
||||
@ -3311,7 +3311,7 @@ i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, bool write)
|
||||
int ret;
|
||||
|
||||
/* Not valid to be called on unbound objects. */
|
||||
if (!i915_gem_obj_ggtt_bound(obj))
|
||||
if (!i915_gem_obj_bound_any(obj))
|
||||
return -EINVAL;
|
||||
|
||||
if (obj->base.write_domain == I915_GEM_DOMAIN_GTT)
|
||||
@ -3735,7 +3735,7 @@ void
|
||||
i915_gem_object_unpin(struct drm_i915_gem_object *obj)
|
||||
{
|
||||
BUG_ON(obj->pin_count == 0);
|
||||
BUG_ON(!i915_gem_obj_ggtt_bound(obj));
|
||||
BUG_ON(!i915_gem_obj_bound_any(obj));
|
||||
|
||||
if (--obj->pin_count == 0)
|
||||
obj->pin_mappable = false;
|
||||
|
@ -466,7 +466,7 @@ i915_gem_execbuffer_unreserve_object(struct drm_i915_gem_object *obj)
|
||||
{
|
||||
struct drm_i915_gem_exec_object2 *entry;
|
||||
|
||||
if (!i915_gem_obj_ggtt_bound(obj))
|
||||
if (!i915_gem_obj_bound_any(obj))
|
||||
return;
|
||||
|
||||
entry = obj->exec_entry;
|
||||
|
Loading…
Reference in New Issue
Block a user