• Daniel Vetter's avatar
    drm/i915: optimize the shmem_pwrite slowpath handling · 8dcf015e
    Daniel Vetter authored
    Since we drop dev->struct_mutex when going through the slowpath, the
    object might have been moved out of the cpu domain. Hence we need to
    clflush the entire object to ensure that after the ioctl returns,
    everything is coherent again (interwoven writes are ill-defined
    anyway).
    
    But we only need to do this if we start in the cpu domain and the
    object requires flushing for coherency. So don't do the flushing if
    the object is coherent anyway or if we've done in-line clfushing
    already.
    
    v2: i915_gem_clflush_object already checks whether the object is
    coherent and if so, drops the flushing. Hence we don't need to check
    that ourselves, simplifying the condition.
    
    v3: Reorder the checks for better clarity (and adjust the comment
    accordingly), suggested by Chris Wilson.
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    8dcf015e
i915_gem.c 109 KB