• Chris Wilson's avatar
    drm/i915: Lazily apply the SNB+ seqno w/a · b2eadbc8
    Chris Wilson authored
    Avoid the forcewake overhead when simply retiring requests, as often the
    last seen seqno is good enough to satisfy the retirment process and will
    be promptly re-run in any case. Only ensure that we force the coherent
    seqno read when we are explicitly waiting upon a completion event to be
    sure that none go missing, and also for when we are reporting seqno
    values in case of error or debugging.
    
    This greatly reduces the load for userspace using the busy-ioctl to
    track active buffers, for instance halving the CPU used by X in pushing
    the pixels from a software render (flash). The effect will be even more
    magnified with userptr and so providing a zero-copy upload path in that
    instance, or in similar instances where X is simply compositing DRI
    buffers.
    
    v2: Reverse the polarity of the tachyon stream. Daniel suggested that
    'force' was too generic for the parameter name and that 'lazy_coherency'
    better encapsulated the semantics of it being an optimization and its
    purpose. Also notice that gen6_get_seqno() is only used by gen6/7
    chipsets and so the test for IS_GEN6 || IS_GEN7 is redundant in that
    function.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    b2eadbc8
i915_irq.c 75.1 KB