diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-08-16 09:52:06 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-08-18 11:57:36 +0100 |
commit | c7c6e46f913bb3a6ff19e64940ebb54652033677 (patch) | |
tree | 6da86f21d43db7debd99d0444551604dd4ad678e /drivers/gpu/drm/i915/i915_vma.h | |
parent | 8bcbfb12818f811d63801b71d25809690d1798fc (diff) |
drm/i915: Convert execbuf to use struct-of-array packing for critical fields
When userspace is doing most of the work, avoiding relocs (using
NO_RELOC) and opting out of implicit synchronisation (using ASYNC), we
still spend a lot of time processing the arrays in execbuf, even though
we now should have nothing to do most of the time. One issue that
becomes readily apparent in profiling anv is that iterating over the
large execobj[] is unfriendly to the loop prefetchers of the CPU and it
much prefers iterating over a pair of arrays rather than one big array.
v2: Clear vma[] on construction to handle errors during vma lookup
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170816085210.4199-3-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_vma.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_vma.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h index 20cf272c97b1..5c49506d14bc 100644 --- a/drivers/gpu/drm/i915/i915_vma.h +++ b/drivers/gpu/drm/i915/i915_vma.h @@ -112,7 +112,7 @@ struct i915_vma { /** * Used for performing relocations during execbuffer insertion. */ - struct drm_i915_gem_exec_object2 *exec_entry; + unsigned int *exec_flags; struct hlist_node exec_node; u32 exec_handle; |