• José Roberto de Souza's avatar
    drm/i915/display: Handle frontbuffer rendering when PSR2 selective fetch is enabled · 34ac6b65
    José Roberto de Souza authored
    When PSR2 selective fetch is enabled writes to CURSURFLIVE alone do
    not causes the panel to be updated when doing frontbuffer rendering.
    
    From what I was able to figure from experiments the writes to
    CURSURFLIVE takes PSR2 from deep sleep but panel is not updated
    because PSR2_MAN_TRK_CTL has no start and end region set.
    
    As we don't have the dirt area from current flush and invalidate API
    and even if we did userspace could do several draws to frontbuffer and
    we would need a way to append all the damaged areas of all the draws
    that need to be part of next frame.
    
    So here only programing PSR2_MAN_TRK_CTL to do a single full frame
    fetch.
    
    It is a safe approach as if scanout is in the visible area
    the single full frame will only be visible for hardware in the next
    frame because of the double buffering, and if scanout is in vblank
    area it will be draw in the current frame.
    
    No need to disable PSR and wait a few miliseconds to enable it again.
    
    Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
    Reviewed-by: default avatarGwan-gyeong Mun <gwan-gyeong.mun@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210930001409.254817-4-jose.souza@intel.com
    34ac6b65
intel_psr.c 69.6 KB