[Mesa-dev] [RFC 00/12] egl, i965: Support EGL_ANDROID_native_fence_sync (v2)

Chad Versace chadversary at chromium.org
Mon Oct 10 17:43:47 UTC 2016


Background:

    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.

    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!'.

Testing:

    I haven't yet tested EGL_ANDROID_native_fence_sync with these patches, but
    the series does build. I just wanted to get these patches on the list as a
    status-update.  I'm slowly working on getting Rob Clark's hacked-up kmscube to
    work on this series.

    I did test that this series doesn't break any dEQP-EGL sync tests. But my
    dEQP doesn't include any EGL_ANDROID_native_fence_sync tests.

Branches:

    mesa: This exact patch series lives at
      http://cgit.kiwitree.net/~chadv/mesa/log/?h=review/fences-v02
      
    mesa: My up-to-date, work-in-progress branch lives at
      http://cgit.kiwitree.net/~chadv/mesa/log/?h=wip/fences
      
    libdrm: If you want to build this, you also need my libdrm branch:
      http://cgit.kiwitree.net/~chadv/libdrm/log/?h=wip/fences

    kernel: I have a kernel branch too where I collect other people's
    patches. Be warned: if you run it, it will eat your machine's soul.
      http://cgit.kiwitree.net/~chadv/linux/log/?h=wip/fences
  
Chad Versace (9):
  squash! egl: add EGL_ANDROID_native_fence_sync
  squash! egl: add EGL_ANDROID_native_fence_sync
  squash! egl: add EGL_ANDROID_native_fence_sync
  i965: Add intel_screen::has_fence_fd
  i965: Add intel_batchbuffer_flush_fence()
  i965/sync: Add brw_fence::type
  i965/sync: Fail sync creation with batchbuffer flush fails
  i965/sync: Rename brw_fence_insert()
  i965/sync: Implement fences based on Linux sync_file

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           |  44 +++-
 src/egl/drivers/dri2/egl_dri2.c               |  57 ++++-
 src/egl/main/eglapi.c                         |  38 +++-
 src/egl/main/eglapi.h                         |   2 +
 src/egl/main/egldisplay.h                     |   1 +
 src/egl/main/eglfallbacks.c                   |   1 +
 src/egl/main/eglsync.c                        |  44 ++--
 src/egl/main/eglsync.h                        |   1 +
 src/mesa/drivers/dri/i965/brw_sync.c          | 297 ++++++++++++++++++++++----
 src/mesa/drivers/dri/i965/intel_batchbuffer.c |  25 ++-
 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 +-
 13 files changed, 456 insertions(+), 73 deletions(-)

-- 
2.10.0



More information about the mesa-dev mailing list