]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drm/i915: Use ORIGIN_CPU for fb invalidation from pwrite
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 18 Aug 2016 16:16:43 +0000 (17:16 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 18 Aug 2016 21:36:24 +0000 (22:36 +0100)
As pwrite does not use the fence for its GTT access, and may even go
through a secondary interface avoiding the main VMA, we cannot treat the
write as automatically invalidated by the hardware and so we require
ORIGIN_CPU frontbufer invalidate/flushes.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20160818161718.27187-4-chris@chris-wilson.co.uk
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c

index cffa57b14246c6379ab7e0a93807e58077acb7d9..9310dda7fca11a494a447b0f82e8073c6c041d28 100644 (file)
@@ -1082,7 +1082,7 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_private *i915,
        if (ret)
                goto out_unpin;
 
-       intel_fb_obj_invalidate(obj, ORIGIN_GTT);
+       intel_fb_obj_invalidate(obj, ORIGIN_CPU);
        obj->dirty = true;
 
        user_data = u64_to_user_ptr(args->data_ptr);
@@ -1149,7 +1149,7 @@ out_flush:
                }
        }
 
-       intel_fb_obj_flush(obj, false, ORIGIN_GTT);
+       intel_fb_obj_flush(obj, false, ORIGIN_CPU);
 out_unpin:
        if (node.allocated) {
                wmb();