This patchset implements support for EGL_ANDROID_native_fence_sync[1] for egl and gallium. This extension provides support for native fence fd's (file descriptors) for the GPU. In a similar way to dma-buf fd's, which provide a reference-counted userspace handle to buffers which can be shared across drivers and across processes, native fence fd's provide a reference-counted userspace handle to fences which can be shared across drivers and across processes.
This extension is already in use on android, and should be useful in other environments. Patch 04/10 has some fixes from Chad squashed in, as well as a couple fixes for issues that Rafael found while writing piglit tests. The kernel patches for freedreno (drm/msm) are upstream (v4.9) and the libdrm patches are in v2.4.72. Kernel patches for drm/virtio are in flight (so corresponding gallium patch is not ready to push). Kernel plus libdrm plus mesa patches for i965 are in flight. This has been tested on piglit[2] (i965, freedreno), kmscube[3] (virgl, freedreno), and drm-hwc2[4] (virgl, freedreno). [1] https://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt [2] https://patchwork.freedesktop.org/series/14498/ [3] https://github.com/robclark/kmscube/commits/atomic-fence [4] https://git.collabora.com/cgit/user/robertfoss/drm_hwcomposer.git/log/?h=hwc2_fence_v2 Gustavo Padovan (1): RFC: virgl: native fence fd support Rob Clark (9): egl: initialize SyncCondition after attr parsing egl: un-fallthrough sync attr parsing dri: extend fence extension to support native fd fences egl: add EGL_ANDROID_native_fence_sync gallium: wire up server_wait_sync gallium: support for native fence fd's freedreno: some fence cleanup freedreno: native fence fd support freedreno: no-op render when we need a fence configure.ac | 2 +- include/GL/internal/dri_interface.h | 44 +++++++++++- src/egl/drivers/dri2/egl_dri2.c | 58 +++++++++++++++- 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 | 31 +++++++-- src/egl/main/eglsync.h | 1 + src/gallium/drivers/freedreno/freedreno_batch.c | 7 +- src/gallium/drivers/freedreno/freedreno_batch.h | 3 + .../drivers/freedreno/freedreno_batch_cache.c | 4 +- .../drivers/freedreno/freedreno_batch_cache.h | 2 +- src/gallium/drivers/freedreno/freedreno_context.c | 27 +++++--- src/gallium/drivers/freedreno/freedreno_context.h | 2 +- src/gallium/drivers/freedreno/freedreno_fence.c | 51 ++++++++++++-- src/gallium/drivers/freedreno/freedreno_fence.h | 16 +++-- src/gallium/drivers/freedreno/freedreno_gmem.c | 32 ++++++++- src/gallium/drivers/freedreno/freedreno_gmem.h | 1 + src/gallium/drivers/freedreno/freedreno_screen.c | 7 +- src/gallium/drivers/i915/i915_screen.c | 1 + src/gallium/drivers/ilo/ilo_screen.c | 1 + src/gallium/drivers/llvmpipe/lp_screen.c | 1 + src/gallium/drivers/nouveau/nv30/nv30_screen.c | 1 + src/gallium/drivers/nouveau/nv50/nv50_screen.c | 1 + src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 1 + src/gallium/drivers/r300/r300_screen.c | 1 + src/gallium/drivers/r600/r600_pipe.c | 1 + src/gallium/drivers/radeonsi/si_pipe.c | 1 + src/gallium/drivers/softpipe/sp_screen.c | 1 + src/gallium/drivers/svga/svga_screen.c | 1 + src/gallium/drivers/vc4/vc4_screen.c | 1 + src/gallium/drivers/virgl/virgl_context.c | 47 +++++++++++-- src/gallium/drivers/virgl/virgl_screen.c | 12 ++++ src/gallium/drivers/virgl/virgl_winsys.h | 16 ++++- src/gallium/include/pipe/p_context.h | 19 ++++++ src/gallium/include/pipe/p_defines.h | 2 + src/gallium/include/pipe/p_screen.h | 10 +++ src/gallium/state_trackers/dri/dri2.c | 58 +++++++++++++++- src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 78 +++++++++++++++++++++- src/gallium/winsys/virgl/drm/virgl_drm_winsys.h | 2 + src/gallium/winsys/virgl/drm/virtgpu_drm.h | 16 ++++- .../winsys/virgl/vtest/virgl_vtest_winsys.c | 8 ++- 43 files changed, 549 insertions(+), 61 deletions(-) -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev