[Intel-gfx] [PATCH 07/16] drm/i915: Inline check required for object syncing prior to execbuf
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Wed Apr 29 07:03:43 PDT 2015
Hi,
On 04/27/2015 01:41 PM, Chris Wilson wrote:
> This trims a little overhead from the common case of not needing to
> synchronize between rings.
>
> v2: execlists is special and likes to duplicate code.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 10 +++++++---
> drivers/gpu/drm/i915/intel_lrc.c | 9 ++++++---
> 2 files changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 45d74da7f6c4..4fe09568089b 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -889,6 +889,7 @@ static int
> i915_gem_execbuffer_move_to_gpu(struct intel_engine_cs *ring,
> struct list_head *vmas)
> {
> + const unsigned other_rings = ~intel_ring_flag(ring);
> struct i915_vma *vma;
> uint32_t flush_domains = 0;
> bool flush_chipset = false;
> @@ -896,9 +897,12 @@ i915_gem_execbuffer_move_to_gpu(struct intel_engine_cs *ring,
>
> list_for_each_entry(vma, vmas, exec_list) {
> struct drm_i915_gem_object *obj = vma->obj;
> - ret = i915_gem_object_sync(obj, ring);
> - if (ret)
> - return ret;
> +
> + if (obj->active & other_rings) {
> + ret = i915_gem_object_sync(obj, ring);
> + if (ret)
> + return ret;
> + }
Just to avoid bailing out near the top of i915_gem_object_sync?
Anyway,
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list