[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