[Intel-gfx] [RFC 00/12] Convert requests to use struct fence

John Harrison John.C.Harrison at Intel.com
Mon Nov 23 03:38:48 PST 2015


Oops, forgot to update the tag. These should be PATCH not RFC.

On 23/11/2015 11:34, John.C.Harrison at Intel.com wrote:
> From: John Harrison <John.C.Harrison at Intel.com>
>
> There is a construct in the linux kernel called 'struct fence' that is
> intended to keep track of work that is executed on hardware. I.e. it
> solves the basic problem that the drivers 'struct
> drm_i915_gem_request' is trying to address. The request structure does
> quite a lot more than simply track the execution progress so is very
> definitely still required. However, the basic completion status side
> could be updated to use the ready made fence implementation and gain
> all the advantages that provides.
>
> Using the struct fence object also has the advantage that the fence
> can be used outside of the i915 driver (by other drivers or by
> userland applications). That is the basis of the dma-buff
> synchronisation API and allows asynchronous tracking of work
> completion. In this case, it allows applications to be signalled
> directly when a batch buffer completes without having to make an IOCTL
> call into the driver.
>
> This is work that was planned since the conversion of the driver from
> being seqno value based to being request structure based. This patch
> series does that work.
>
> An IGT test to exercise the fence support from user land is in
> progress and will follow. Android already makes extensive use of
> fences for display composition. Real world linux usage is planned in
> the form of Jesse's page table sharing / bufferless execbuf support.
> There is also a plan that Wayland (and others) could make use of it in
> a similar manner to Android.
>
> v2: Updated for review comments by various people and to add support
> for Android style 'native sync'.
>
> v3: Updated from review comments by Tvrtko Ursulin. Also moved sync
> framework out of staging and improved request completion handling.
>
> [Patches against drm-intel-nightly tree fetched 17/11/2015]
>
> John Harrison (9):
>    staging/android/sync: Move sync framework out of staging
>    drm/i915: Convert requests to use struct fence
>    drm/i915: Removed now redudant parameter to i915_gem_request_completed()
>    drm/i915: Add per context timelines to fence object
>    drm/i915: Delay the freeing of requests until retire time
>    drm/i915: Interrupt driven fences
>    drm/i915: Updated request structure tracing
>    drm/i915: Add sync framework support to execbuff IOCTL
>    drm/i915: Cache last IRQ seqno to reduce IRQ overhead
>
> Maarten Lankhorst (1):
>    staging/android/sync: add sync_fence_create_dma
>
> Peter Lawthers (1):
>    android/sync: Fix reversed sense of signaled fence
>
> Tvrtko Ursulin (1):
>    staging/android/sync: Support sync points created from dma-fences
>
>   drivers/android/Kconfig                    |  28 ++
>   drivers/android/Makefile                   |   2 +
>   drivers/android/sw_sync.c                  | 260 ++++++++++
>   drivers/android/sw_sync.h                  |  59 +++
>   drivers/android/sync.c                     | 734 +++++++++++++++++++++++++++++
>   drivers/android/sync.h                     | 387 +++++++++++++++
>   drivers/android/sync_debug.c               | 256 ++++++++++
>   drivers/android/trace/sync.h               |  82 ++++
>   drivers/gpu/drm/i915/Kconfig               |   3 +
>   drivers/gpu/drm/i915/i915_debugfs.c        |   7 +-
>   drivers/gpu/drm/i915/i915_drv.h            |  75 +--
>   drivers/gpu/drm/i915/i915_gem.c            | 437 ++++++++++++++++-
>   drivers/gpu/drm/i915/i915_gem_context.c    |  15 +-
>   drivers/gpu/drm/i915/i915_gem_execbuffer.c |  95 +++-
>   drivers/gpu/drm/i915/i915_irq.c            |   2 +-
>   drivers/gpu/drm/i915/i915_trace.h          |  13 +-
>   drivers/gpu/drm/i915/intel_display.c       |   4 +-
>   drivers/gpu/drm/i915/intel_lrc.c           |  13 +
>   drivers/gpu/drm/i915/intel_pm.c            |   6 +-
>   drivers/gpu/drm/i915/intel_ringbuffer.c    |   5 +
>   drivers/gpu/drm/i915/intel_ringbuffer.h    |   9 +
>   drivers/staging/android/Kconfig            |  28 --
>   drivers/staging/android/Makefile           |   2 -
>   drivers/staging/android/sw_sync.c          | 260 ----------
>   drivers/staging/android/sw_sync.h          |  59 ---
>   drivers/staging/android/sync.c             | 729 ----------------------------
>   drivers/staging/android/sync.h             | 356 --------------
>   drivers/staging/android/sync_debug.c       | 254 ----------
>   drivers/staging/android/trace/sync.h       |  82 ----
>   drivers/staging/android/uapi/sw_sync.h     |  32 --
>   drivers/staging/android/uapi/sync.h        |  97 ----
>   include/uapi/Kbuild                        |   1 +
>   include/uapi/drm/i915_drm.h                |  16 +-
>   include/uapi/sync/Kbuild                   |   3 +
>   include/uapi/sync/sw_sync.h                |  32 ++
>   include/uapi/sync/sync.h                   |  97 ++++
>   36 files changed, 2569 insertions(+), 1971 deletions(-)
>   create mode 100644 drivers/android/sw_sync.c
>   create mode 100644 drivers/android/sw_sync.h
>   create mode 100644 drivers/android/sync.c
>   create mode 100644 drivers/android/sync.h
>   create mode 100644 drivers/android/sync_debug.c
>   create mode 100644 drivers/android/trace/sync.h
>   delete mode 100644 drivers/staging/android/sw_sync.c
>   delete mode 100644 drivers/staging/android/sw_sync.h
>   delete mode 100644 drivers/staging/android/sync.c
>   delete mode 100644 drivers/staging/android/sync.h
>   delete mode 100644 drivers/staging/android/sync_debug.c
>   delete mode 100644 drivers/staging/android/trace/sync.h
>   delete mode 100644 drivers/staging/android/uapi/sw_sync.h
>   delete mode 100644 drivers/staging/android/uapi/sync.h
>   create mode 100644 include/uapi/sync/Kbuild
>   create mode 100644 include/uapi/sync/sw_sync.h
>   create mode 100644 include/uapi/sync/sync.h
>



More information about the Intel-gfx mailing list