[Mesa-dev] [RFC 00/12] egl, i965: Support EGL_ANDROID_native_fence_sync (v2)
Emil Velikov
emil.l.velikov at gmail.com
Tue Oct 11 11:21:35 UTC 2016
On 10 October 2016 at 20:41, Rob Clark <robdclark at gmail.com> wrote:
> On Mon, Oct 10, 2016 at 1:43 PM, Chad Versace <chadversary at chromium.org> wrote:
>> 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.
>>
>From a quick skim neither one of CTS/dEQP/piglit had
EGL_ANDROID_native_fence_sync tests. I've mentioned to Rob F that
adding a few piglits might be a good idea. It would be good to
coordinate to avoid writing the same tests twice ;-)
>> 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
>
> btw, we might want a sync-fd ioctl wrapper somewhere.. I had stuck it
> in libdrm (I might have needed it, or at least anticipated needing it
> both in mesa and libdrm??)
>
> https://github.com/freedreno/libdrm/commit/03479dee4fcaa85a81ed67e5112613f866b55467
>
> Also, I should mention that Robert Foss was debugging some issue w/
> this with drm/hwc2 on android. Not entirely sure if the problem was
> with the virgl backend code, or something more core/shared.. it is
> only doing something slightly differently from kmscube
> (eglCreateSync(EGL_NO_NATIVE_FENCE_FD_ANDROID) followed by glFlush()
> instead of eglSwapBuffers() before eglDupNativeFence()) I was going
> to debug that over the weekend but atm kernel is a bit broken on the
> boards I have so didn't get very far yet..
>
Mildly related bug report + proposed fix:
https://bugs.freedesktop.org/show_bug.cgi?id=98172
-Emil
More information about the mesa-dev
mailing list