]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Make for_each_engine_masked() more compact and quicker
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 27 Aug 2016 07:54:01 +0000 (08:54 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Sat, 27 Aug 2016 08:42:53 +0000 (09:42 +0100)
commitbd656039ea7e2d05fe0b5f11d28965206af077bf
treea8dae563fcee3662435a8cf9a86bb903ae16e1f0
parent8d41c0922079595e3f4d3f25f6daf91f12c48376
drm/i915: Make for_each_engine_masked() more compact and quicker

Rather than walk the full array of engines checking whether each is in
the mask in turn, we can use the mask to jump to the right engines. This
should quicker for a sparse array of engines or mask, whilst generating
smaller code:

   text    data     bss     dec     hex filename
1251010    4579     800 1256389  132bc5 drivers/gpu/drm/i915/i915.ko
1250530    4579     800 1255909  1329e5 drivers/gpu/drm/i915/i915.ko

The downside is that we have to pass in a temporary, alas no C99
iterators yet.

[P.S. Joonas doesn't like having to pass extra temporaries into the
macro, and even less that I called them tmp. As yet, we haven't found a
macro that avoids passing in a temporary that is smaller. We probably
will get C99 iterators first!]

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160827075401.16470-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_request.c
drivers/gpu/drm/i915/i915_guc_submission.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_uncore.c