On Fri, Aug 19, 2016 at 5:57 PM, Rob Clark <robdclark@xxxxxxxxx> wrote: > Ok, quick update on state of explicit fence fd's / > EGL_ANDROID_native_fence_sync: > > For folks working on other drivers wishing to add support, we don't > have a "real" userspace yet. But Gustavo has added atomic support to > kmscube (as well as all of his work for in/out fences in atomic ioctl, > plus destaging sync-file stuff, etc). On top of that I have hacked up > support for using fence fd's (via EGL_ANDROID_native_fence_sync plus > atomic in/out fence support in libdrm+kernel) rather than pageflip > events to synchronize rendering and kms. This should give some > reasonable toy code for other folks working on other driver support to > get started: > > https://github.com/robclark/kmscube/commits/atomic-fence > > The core and egl mesa patches are largely unchanged, other than a > small addition of wiring up fence extension for gbm/drm. The gallium > bits have gotten a bit simpler thanks to Marek's deferred-flush > changes (although I haven't had a chance to add deferred-flush support > in freedreno yet, so do your eglWaitSyncKHR() calls right before > eglSwapBuffers() if you don't want perf to suck). I have also wired > up freedreno support and Gustavo has started on virgl support.. it > would be interesting to see some more drivers added to the mix. > Anyways, what I have so far is here: > > https://github.com/freedreno/mesa/commits/wip-fence > > This and kmscube bits also depends on some libdrm changes here: > > https://github.com/freedreno/libdrm/commits/fences > > With all these bits, the (relatively trivial) kmscube is working, and > not even leaking fd's or tearing or anything ;-) > > I think for the kms atomic/fence bits, the consensus is that we need a > real userspace to get them merged. Which we are still waiting on. I > think on the gpu side (mesa + libdrm_$drivername + submit/execbuf/etc > ioctl bits on kernel side) the main thing we need is piglit tests. > (Last time I checked, android/dEQP did not have any real tests for the > ANDROID_native_fence_sync extension, other than perhaps checking that > the driver advertised it.. which isn't really a test at all :-/). I'm > not really sure how much bandwidth I'll have to work on this in the > near future, so if some other interested party wants to step up and > write some piglit tests, that would be great. Otherwise, at least for > now the above kernel/libdrm/mesa/kmscube branches should give anyone > else working on their drivers all the bits they need to get started on > fence-fd support. Oh, I forgot to mention, kernel bits here: https://github.com/freedreno/kernel-msm/commits/integration-linux-qcomlt-fences BR, -R > > > On Fri, Apr 1, 2016 at 4:29 PM, Rob Clark <robdclark@xxxxxxxxx> wrote: >> From: Rob Clark <robclark@xxxxxxxxxxxxxxx> >> >> 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. >> >> This is almost an RFC at this point (but I'd still like to get review >> comments), since no driver actually supports this yet, and the upstream >> kernel support for native fence fd's is work-in-progress[2][3][4]. But >> it is a needed piece to fully wire up explicit synchronization across >> devices, and needed to have an open source userspace for the ongoing >> kernel work. >> >> [1] https://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_native_fence_sync.txt >> [2] https://lists.freedesktop.org/archives/dri-devel/2016-March/103060.html >> [3] https://lists.freedesktop.org/archives/dri-devel/2016-March/103451.html >> [4] https://lists.freedesktop.org/archives/dri-devel/2016-March/103108.html >> >> Rob Clark (6): >> egl: initialize SyncCondition after attr parsing >> dri: extend fence extension to support native fd fences >> egl: add EGL_ANDROID_native_fence_sync >> gallium: add way for drivers to create fences without flushing >> gallium: wire up server_wait_sync >> gallium: support for native fence fd's >> >> include/GL/internal/dri_interface.h | 44 ++++++++++++++++++- >> src/egl/drivers/dri2/egl_dri2.c | 48 +++++++++++++++++++++ >> src/egl/main/eglapi.c | 36 ++++++++++++++-- >> src/egl/main/eglapi.h | 2 + >> src/egl/main/egldisplay.h | 1 + >> src/egl/main/eglfallbacks.c | 1 + >> src/egl/main/eglsync.c | 32 +++++++++++--- >> src/egl/main/eglsync.h | 1 + >> src/gallium/include/pipe/p_context.h | 47 ++++++++++++++++++++ >> src/gallium/include/pipe/p_defines.h | 1 + >> src/gallium/include/pipe/p_screen.h | 8 ++++ >> src/gallium/state_trackers/dri/dri2.c | 80 +++++++++++++++++++++++++++++------ >> 12 files changed, 278 insertions(+), 23 deletions(-) >> >> -- >> 2.5.5 >> _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel