diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-08-18 17:16:44 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-08-18 22:36:43 +0100 |
commit | d243ad820295d1c499f9256f8ef04d1d36e74e34 (patch) | |
tree | ad2643e4938e4da8f34323e844d3673adc32f0ca /drivers/gpu/drm/i915/i915_gem.c | |
parent | b19482d7ce505776af783dd75b07e77f2bf3bd89 (diff) | |
download | kernel_replicant_linux-d243ad820295d1c499f9256f8ef04d1d36e74e34.tar.gz kernel_replicant_linux-d243ad820295d1c499f9256f8ef04d1d36e74e34.tar.bz2 kernel_replicant_linux-d243ad820295d1c499f9256f8ef04d1d36e74e34.zip |
drm/i915: Mark up the GTT flush following WC writes as ORIGIN_CPU
Similarly to invalidating beforehand, if the object is mmapped via
I915_MMAP_WC we cannot track writes through the I915_GEM_DOMAIN_GTT. At
the conclusion of the write, i915_gem_object_flush_gtt_writes() we also
need to treat the origin carefully in case it may have been untracked.
See also commit aeecc9696aa0 ("drm/i915: use ORIGIN_CPU for frontbuffer
invalidation on WC mmaps").
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160818161718.27187-5-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 9310dda7fca1..5adbf8c3b81c 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1450,7 +1450,7 @@ err: return ret; } -static enum fb_op_origin +static inline enum fb_op_origin write_origin(struct drm_i915_gem_object *obj, unsigned domain) { return domain == I915_GEM_DOMAIN_GTT && !obj->has_wc_mmap ? @@ -3155,7 +3155,7 @@ i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj) old_write_domain = obj->base.write_domain; obj->base.write_domain = 0; - intel_fb_obj_flush(obj, false, ORIGIN_GTT); + intel_fb_obj_flush(obj, false, write_origin(obj, I915_GEM_DOMAIN_GTT)); trace_i915_gem_object_change_domain(obj, obj->base.read_domains, |