• Chris Wilson's avatar
    drm/i915: Split the batch pool by engine · 06fbca71
    Chris Wilson authored
    I woke up one morning and found 50k objects sitting in the batch pool
    and every search seemed to iterate the entire list... Painting the
    screen in oils would provide a more fluid display.
    
    One issue with the current design is that we only check for retirements
    on the current ring when preparing to submit a new batch. This means
    that we can have thousands of "active" batches on another ring that we
    have to walk over. The simplest way to avoid that is to split the pools
    per ring and then our LRU execution ordering will also ensure that the
    inactive buffers remain at the front.
    
    v2: execlists still requires duplicate code.
    v3: execlists requires more duplicate code
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    06fbca71
intel_ringbuffer.h 15 KB