[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