• Paulo Zanoni's avatar
    drm/i915: special-case dirtyfb for frontbuffer tracking · 74b4ea1e
    Paulo Zanoni authored
    First, an introduction. We currently have two types of GTT mmaps: the
    "normal" old mmap, and the WC mmap. For frontbuffer-related features
    that have automatic hardware tracking, only the non-WC mmap writes are
    detected by the hardware. Since inside the Kernel both are treated as
    ORIGIN_GTT, any features ignoring ORIGIN_GTT because of the hardware
    tracking are destined to fail.
    
    One of the special rules defined for the WC mmaps is that the user
    should call the dirtyfb IOCTL after he is done using the pointers, so
    that results in an intel_fb_obj_flush() call. The problem is that the
    dirtyfb is passing ORIGIN_GTT, so it is being ignored by FBC - even
    though the hardware tracking is not detecing the WC mmap operations.
    So in order to fix that without having to give up the automatic
    hardware tracking for GTT mmaps we transform the flush operation from
    dirtyfb into a special operation: ORIGIN_DIRTYFB.
    
    This commit fixes all the kms_frontbuffer_tracking subtests that
    contain "fbc" and "mmap-wc" in their names and are currently failing
    (for a total of 16 subtests).
    Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    74b4ea1e
i915_drv.h 104 KB