[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