• Chris Wilson's avatar
    drm/i915: Replace global bsd_dispatch_index with random seed · 6b86f900
    Chris Wilson authored
    We keep a global seed for the legacy BSD round-robin selector, but in
    our testing of multiple simultaneous client workloads, a random seed
    spreads the load more evenly. (As even as an initial round-robin selector
    can be!) Removing the global is one less variable we have to find a home
    for!
    
    We can simulate multi-client (both same and mixed workloads) using
    igt/gem_wsim to work out optimal strategies and then compare our
    simulation with the actual transcoder on multi-engine machines. This
    fixed round-robin turns out to be one of the worst methods.
    
    No user is advised to use this method; the current suggestion is to use
    a virtual engine for agnostic batches, randomised submission or using
    the busyness tracking to select the most idle engine at the time of
    dispatch. At the present time, intel-media is explicit, but libva still
    seems to use it, with the exception of batches that must execute on vcs0.
    Oh well.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190809091010.23281-2-chris@chris-wilson.co.uk
    6b86f900
i915_gem_execbuffer.c 74.9 KB