• Chris Wilson's avatar
    drm/i915: Restore waitboost credit to the synchronous waiter · 0e6883b0
    Chris Wilson authored
    Ideally, we want to automagically have the GPU respond to the
    instantaneous load by reclocking itself. However, reclocking occurs
    relatively slowly, and to the client waiting for a result from the GPU,
    too late. To compensate and reduce the client latency, we allow the
    first wait from a client to boost the GPU clocks to maximum. This
    overcomes the lag in autoreclocking, at the expense of forcing the GPU
    clocks too high. So to offset the excessive power usage, we currently
    allow a client to only boost the clocks once before we detect the GPU
    is idle again. This works reasonably for say the first frame in a
    benchmark, but for many more synchronous workloads (like OpenCL) we find
    the GPU clocks remain too low. By noting a wait which would idle the GPU
    (i.e. we just waited upon the last known request), we can give that
    client the idle boost credit (for their next wait) without the 100ms
    delay required for us to detect the GPU idle state. The intention is to
    boost clients that are stalling in the process of feeding the GPU more
    work (and who in doing so let the GPU idle), without granting boost
    credits to clients that are throttling themselves (such as compositors).
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: "Zou, Nanhai" <nanhai.zou@intel.com>
    Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
    Reviewed-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1467616119-4093-4-git-send-email-chris@chris-wilson.co.uk
    0e6883b0
i915_gem.c 145 KB