• Tvrtko Ursulin's avatar
    drm/i915: Small compaction of the engine init code · a19d6ff2
    Tvrtko Ursulin authored
    Effectively removes one layer of indirection between the mask of
    possible engines and the engine constructors. Instead of spelling
    out in code the mapping of HAS_<engine> to constructors, makes
    more use of the recently added data driven approach by putting
    engine constructor vfuncs into the table as well.
    
    Effect is fewer lines of source and smaller binary.
    
    At the same time simplify the error handling since engine
    destructors can run on unitialized engines anyway.
    
    Similar approach could be done for legacy submission is wanted.
    
    v2: Removed ugly BUILD_BUG_ONs in favour of newly introduced
        ENGINE_MASK and HAS_ENGINE macros.
        Also removed the forward declarations by shuffling functions
        around.
    
    v3: Warn when logical_rings table does not contain enough data
        and disable the engines which could not be initialized.
        (Chris Wilson)
    
    v4: Chris Wilson suggested a nicer engine init loop.
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Link: http://patchwork.freedesktop.org/patch/msgid/1466689961-23232-1-git-send-email-tvrtko.ursulin@linux.intel.com
    a19d6ff2
i915_drv.h 119 KB