[Mesa-dev] [PATCH 00/10] mesa: support for EGL_ANDROID_native_fence_sync (vN+1)

Rob Clark robdclark at gmail.com
Fri Nov 18 13:39:29 UTC 2016


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



More information about the mesa-dev mailing list