[Mesa-dev] [RFC 00/13] egl, i965: Support EGL_ANDROID_native_fence_sync

Chad Versace chad.versace at intel.com
Sat Jul 9 00:00:50 UTC 2016


This extension is needed by Android (via ARC++) on Chrome OS.
Essentially, this extension provides a translation between EGLSync and
explicit cross-process synchronization points, represented as "sync
fds".  The relevant documentation is:

  [1]: https://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt
  [2]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/sync_file.txt?id=refs/tags/v4.7-rc6
  [3]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/sync_file.h?id=refs/tags/v4.7-rc6
  [4]: https://source.android.com/devices/graphics/index.html#synchronization_framework
  [5]: https://source.android.com/devices/graphics/implement.html#explicit_synchronization

This series is only an RFC because the i915 kernel interface is not yet
upstream. Here's the upstream status:

  - Core kernel support for sync files was merged into Linux 4.7. See
    [2] and [3] above.

  - Chris Wilson is actively working on the i915 interface (or at least
    I think he is).

  - Chris Wilson, Daniel Vetter, and I roughly agree on the how the i915
    interface should work. Add two new optional parameters to execbuf: an
    in-fence fd and an out-fence fd. (See [2] above).

This series builds on some of Rob Clark's previous RFC patches, which
are included here. Some of my patches make changes to Rob's or document
open questions about Rob's; those patches are prefixed with either
'squash!' or 'todo!'.

This exact patch series lives at
  git://git.kiwitree.net/~chadv/mesa review/i965-EGL_ANDROID_native_fence_sync-v01
  http://cgit.kiwitree.net/~chadv/mesa/log/?h=review/i965-EGL_ANDROID_native_fence_sync-v01

My up-to-date, work-in-progress, continually changing branch lives at
  git://git.kiwitree.net/~chadv/mesa wip/i965-EGL_ANDROID_native_fence_sync
  http://cgit.kiwitree.net/~chadv/mesa/log/?h=wip/i965-EGL_ANDROID_native_fence_sync

If you want to build this, you also need my libdrm branch:
  git://cgit.kiwitree.net/~chadv/libdrm wip/intel-fence-fds
  http://cgit.kiwitree.net/~chadv/libdrm/log/?h=wip/intel-fence-fds

Nothing is tested (but at least it builds). Before testing anything,
I plan to wait until I have a working kernel branch for the i915
interface.

Chad Versace (10):
  egl: Use atomic ops on _EGLResource::RefCount
  todo! dri: Questions about fence fd ownership
  squash! egl: add EGL_ANDROID_native_fence_sync
  squash! egl: add EGL_ANDROID_native_fence_sync
  todo! egl/dri2: Questions about sync fd ownership
  i965/sync: Stop cacheing fence's signal status
  i965/sync: Fold brw_fence_has_completed() into caller
  rfc! i965: Add intel_screen::has_fence_fd
  rfc! i965: Add intel_batchbuffer_flush_fence()
  rfc! i965/sync: Support EGL_ANDROID_native_fence_sync

Rob Clark (3):
  egl: initialize SyncCondition after attr parsing
  dri: extend fence extension to support native fd fences
  egl: add EGL_ANDROID_native_fence_sync

 include/GL/internal/dri_interface.h           |  53 +++++-
 src/egl/drivers/dri2/egl_dri2.c               |  69 +++++++-
 src/egl/main/eglapi.c                         |  36 +++-
 src/egl/main/eglapi.h                         |   2 +
 src/egl/main/egldisplay.c                     |  13 +-
 src/egl/main/egldisplay.h                     |   1 +
 src/egl/main/eglfallbacks.c                   |   1 +
 src/egl/main/eglsync.c                        |  35 +++-
 src/egl/main/eglsync.h                        |   1 +
 src/mesa/drivers/dri/i965/intel_batchbuffer.c |  30 +++-
 src/mesa/drivers/dri/i965/intel_batchbuffer.h |  14 +-
 src/mesa/drivers/dri/i965/intel_screen.c      |   3 +
 src/mesa/drivers/dri/i965/intel_screen.h      |   2 +-
 src/mesa/drivers/dri/i965/intel_syncobj.c     | 239 ++++++++++++++++++++------
 14 files changed, 415 insertions(+), 84 deletions(-)

-- 
2.9.0.rc2



More information about the mesa-dev mailing list