[Intel-gfx] [PATCH 09/10] drm/i915/gem: Allow combining submit-fences with syncobj
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Tue Apr 7 10:44:45 UTC 2020
On 03/04/2020 10:12, Chris Wilson wrote:
> Fixes: a88b6e4cbafd ("drm/i915: Allow specification of parallel execbuf")
It looks like new uapi on the technical level, even though from a higher
level it is just an application of existing uapi across more modes, so
why fixes and who is the consumer?
Regards,
Tvrtko
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 10 +++++++---
> include/uapi/drm/i915_drm.h | 7 ++++---
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> index bf1b5399ffa3..5c1c5a9eced4 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> @@ -2299,7 +2299,7 @@ get_fence_array(struct drm_i915_gem_execbuffer2 *args,
> BUILD_BUG_ON(~(ARCH_KMALLOC_MINALIGN - 1) &
> ~__I915_EXEC_FENCE_UNKNOWN_FLAGS);
>
> - fences[n] = ptr_pack_bits(syncobj, fence.flags, 2);
> + fences[n] = ptr_pack_bits(syncobj, fence.flags, 3);
> }
>
> return fences;
> @@ -2330,7 +2330,7 @@ await_fence_array(struct i915_execbuffer *eb,
> struct dma_fence *fence;
> unsigned int flags;
>
> - syncobj = ptr_unpack_bits(fences[n], &flags, 2);
> + syncobj = ptr_unpack_bits(fences[n], &flags, 3);
> if (!(flags & I915_EXEC_FENCE_WAIT))
> continue;
>
> @@ -2354,7 +2354,11 @@ await_fence_array(struct i915_execbuffer *eb,
> spin_unlock(&syncobj->lock);
> }
>
> - err = i915_request_await_dma_fence(eb->request, fence);
> + if (flags & I915_EXEC_FENCE_WAIT_SUBMIT)
> + err = i915_request_await_execution(eb->request, fence,
> + eb->engine->bond_execute);
> + else
> + err = i915_request_await_dma_fence(eb->request, fence);
> dma_fence_put(fence);
> if (err < 0)
> return err;
> diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
> index 14b67cd6b54b..704dd0e3bc1d 100644
> --- a/include/uapi/drm/i915_drm.h
> +++ b/include/uapi/drm/i915_drm.h
> @@ -1040,9 +1040,10 @@ struct drm_i915_gem_exec_fence {
> */
> __u32 handle;
>
> -#define I915_EXEC_FENCE_WAIT (1<<0)
> -#define I915_EXEC_FENCE_SIGNAL (1<<1)
> -#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1))
> +#define I915_EXEC_FENCE_WAIT (1u << 0)
> +#define I915_EXEC_FENCE_SIGNAL (1u << 1)
> +#define I915_EXEC_FENCE_WAIT_SUBMIT (1u << 2)
> +#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_WAIT_SUBMIT << 1))
> __u32 flags;
> };
>
>
More information about the Intel-gfx
mailing list