• C
    drm/i915: Boost GPU clocks if we miss the pageflip's vblank · 74d290f8
    Chris Wilson 提交于
    If we miss the current vblank because the gpu was busy, that may cause a
    jitter as the frame rate temporarily drops. We try to limit the impact
    of this by then boosting the GPU clock to deliver the frame as quickly
    as possible. Originally done in commit 6ad790c0 ("drm/i915: Boost GPU
    frequency if we detect outstanding pageflips") but was never forward
    ported to atomic and finally dropped in commit fd3a4024 ("drm/i915:
    Rip out legacy page_flip completion/irq handling").
    
    One of the most typical use-cases for this is a mostly idle desktop.
    Rendering one frame of the desktop's frontbuffer can easily be
    accomplished by the GPU running at low frequency, but often exceeds
    the time budget of the desktop compositor. The result is that animations
    such as opening the menu, doing a fullscreen switch, or even just trying
    to move a window around are slow and jerky. We need to respond within a
    frame to give the best impression of a smooth UX, as a compromise we
    instead respond if that first frame misses its goal. The result should
    be a near-imperceivable initial delay and a smooth animation even
    starting from idle. The cost, as ever, is that we spend more power than
    is strictly necessary as we overestimate the required GPU frequency and
    then try to ramp down.
    
    This of course is reactionary, too little, too late; nevertheless it is
    surprisingly effective.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102199Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170817123706.6777-1-chris@chris-wilson.co.ukTested-by: NLyude Paul <lyude@redhat.com>
    Reviewed-by: NRadoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
    74d290f8
intel_drv.h 64.9 KB