mirror of https://gitee.com/openkylin/linux.git
drm/i915: Remove inactive LRU tracking from set_domain_ioctl
As the userspace mappings are torn down on every GPU write, we prefer to track when the buffer is activated (via a fresh i915_gem_fault). This makes the LRU conceptually simpler. With coherent mappings, the remaining use-case for set_domain_ioctl is GPU synchronisation. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
d9e86c0ee6
commit
c6748e09ee
|
@ -1018,7 +1018,6 @@ int
|
||||||
i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
|
i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
|
||||||
struct drm_file *file)
|
struct drm_file *file)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
|
||||||
struct drm_i915_gem_set_domain *args = data;
|
struct drm_i915_gem_set_domain *args = data;
|
||||||
struct drm_i915_gem_object *obj;
|
struct drm_i915_gem_object *obj;
|
||||||
uint32_t read_domains = args->read_domains;
|
uint32_t read_domains = args->read_domains;
|
||||||
|
@ -1051,21 +1050,9 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
intel_mark_busy(dev, obj);
|
|
||||||
|
|
||||||
if (read_domains & I915_GEM_DOMAIN_GTT) {
|
if (read_domains & I915_GEM_DOMAIN_GTT) {
|
||||||
ret = i915_gem_object_set_to_gtt_domain(obj, write_domain != 0);
|
ret = i915_gem_object_set_to_gtt_domain(obj, write_domain != 0);
|
||||||
|
|
||||||
/* Update the LRU on the fence for the CPU access that's
|
|
||||||
* about to occur.
|
|
||||||
*/
|
|
||||||
if (obj->fence_reg != I915_FENCE_REG_NONE) {
|
|
||||||
struct drm_i915_fence_reg *reg =
|
|
||||||
&dev_priv->fence_regs[obj->fence_reg];
|
|
||||||
list_move_tail(®->lru_list,
|
|
||||||
&dev_priv->mm.fence_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Silently promote "you're not bound, there was nothing to do"
|
/* Silently promote "you're not bound, there was nothing to do"
|
||||||
* to success, since the client was just asking us to
|
* to success, since the client was just asking us to
|
||||||
* make sure everything was done.
|
* make sure everything was done.
|
||||||
|
@ -1076,10 +1063,6 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,
|
||||||
ret = i915_gem_object_set_to_cpu_domain(obj, write_domain != 0);
|
ret = i915_gem_object_set_to_cpu_domain(obj, write_domain != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Maintain LRU order of "inactive" objects */
|
|
||||||
if (ret == 0 && i915_gem_object_is_inactive(obj))
|
|
||||||
list_move_tail(&obj->mm_list, &dev_priv->mm.inactive_list);
|
|
||||||
|
|
||||||
drm_gem_object_unreference(&obj->base);
|
drm_gem_object_unreference(&obj->base);
|
||||||
unlock:
|
unlock:
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
|
|
Loading…
Reference in New Issue