egl: add support for EGL_EXT_device_drm_render_node
authorSimon Ser <contact@emersion.fr>
Fri, 9 Jul 2021 11:10:24 +0000 (13:10 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 22 Jul 2021 17:12:35 +0000 (17:12 +0000)
commit2a860bb8c35191e7505a71e17250d4ff060f17cb
tree930134d196e654f4eafb1a2415a2ffdcacfccef9
parent1b96c4e24f6f062e310a8534fd36f3fb818fc7d9
egl: add support for EGL_EXT_device_drm_render_node

This new EGL extension has been introduced in [1].

When we have a DRM device and a render node, we can advertise the
extension and return the render node name for the
EGL_DRM_RENDER_NODE_FILE_EXT query.

For the special software EGL device, we can advertise the extension
and return NULL for the EGL_DRM_RENDER_NODE_FILE_EXT query, because
we can guarantee that llvmpipe will never use a render node for
rendering operations.

However, llvmpipe might be using a primary node when used with the
GBM platform. So we can't advertise EXT_device_drm in this case.

When we have a DRM device but no render node, that means we're on a
split render/display SoC. We _should_ return the render node used
by the renderonly driver, however Mesa needs more plumbing to allow
this, so let's just disable the extension for now.

[1]: https://github.com/KhronosGroup/EGL-Registry/pull/127

Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11797>
src/egl/main/egldevice.c
src/egl/main/egldevice.h