• Ville Syrjälä's avatar
    drm/i915: Split update_plane() into update_noarm() + update_arm() · 8ac80733
    Ville Syrjälä authored
    The amount of plane registers we have to write has been steadily
    increasing, putting more pressure on the vblank evasion mechanism
    and forcing us to increase its time budget. Let's try to take some
    of the pressure off by splitting plane updates into two parts:
    1) write all non-self arming plane registers, ie. the registers
       where the write actually does nothing until a separate arming
       register is also written which will cause the hardware to latch
       the new register values at the next start of vblank
    2) write all self arming plane registers, ie. registers which always
       just latch at the next start of vblank, and registers which also
       arm other registers to do so
    
    Here we just provide the mechanism, but don't actually implement
    the split on any platform yet. so everything stays now in the _arm()
    hooks. Subsequently we can move a whole bunch of stuff into the
    _noarm() part, especially in more modern platforms where the number
    of registers we have to write is also the greatest. On older
    platforms this is less beneficial probably, but no real reason
    to deviate from a common behaviour.
    
    And let's sprinkle some TODOs around the areas that will need
    adapting.
    
    Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211018115030.3547-5-ville.syrjala@linux.intel.comReviewed-by: default avatarStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    8ac80733
intel_atomic_plane.h 3.06 KB