]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Inline sg_next() for the optimised SGL iterator
authorDave Gordon <david.s.gordon@intel.com>
Fri, 20 May 2016 10:54:07 +0000 (11:54 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 20 May 2016 12:43:00 +0000 (13:43 +0100)
commit3cb826b67201c8a444e70330ce42f29d302f86c4
tree572c3a0e87f9f1b1c4ec0a551d8e5518f2893317
parentf3fadcb232a8525ced6a5865b55ba4394cee6570
drm/i915: Inline sg_next() for the optimised SGL iterator

Avoiding the out-of-line call to sg_next() reduces the kernel execution
overhead by 10% in some workloads (for example the Unreal Engine 4 demo
Atlantis on 2GiB GTTs) which are dominated by the cost of inserting PTEs
due to texture thrashing. We can demonstrate this in a microbenchmark
that forces us to rebind the object on every execbuf, where we can
measure a 25% improvement, in the time required to execute an execbuf
requiring a texture to be rebound, for inlining the sg_next() for large
texture sizes.

Benchmark: igt/benchmarks/gem_exec_fault
Benchmark: igt/benchmarks/gem_exec_trace/Atlantis
Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1463741647-15666-5-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_drv.h