[Mesa-dev] [PATCH 4/9] egl/wayland: Add support for render-nodes

Emil Velikov emil.l.velikov at gmail.com
Fri May 8 09:07:05 PDT 2015


On 2 May 2015 at 11:15, Axel Davy <axel.davy at ens.fr> wrote:
> It is possible the server advertises a render-node.
> In that case no authentication is needed,
> and Gem names are forbidden.
>
> Signed-off-by: Axel Davy <axel.davy at ens.fr>
> ---

> diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
> index a5bcf25..79989cb 100644
> --- a/src/egl/drivers/dri2/platform_wayland.c
> +++ b/src/egl/drivers/dri2/platform_wayland.c
> @@ -800,12 +800,33 @@ bad_format:
>     return NULL;
>  }
>
> +static char
> +is_fd_render_node(int fd)
> +{
> +   struct stat render;
> +
> +   if (fstat(fd, &render))
> +      return 0;
> +
> +   if (!S_ISCHR(render.st_mode))
> +      return 0;
> +
> +   if (render.st_rdev & 0x80)
> +      return 1;
> +   return 0;
> +}
> +
Let's use drmGetNodeTypeFromFd(), rather than hard-coding this ?


> +static EGLBoolean
> +is_render_node_capable(struct dri2_egl_display *dri2_dpy)
> +{
> +   const __DRIextension **extensions;
> +   int i;
> +
> +   /* We cannot use Gem names with render-nodes, only prime fds (dma-buf).
> +    * The server needs to accept them */
> +   if (!(dri2_dpy->capabilities & WL_DRM_CAPABILITY_PRIME))
> +      return EGL_FALSE;
> +
> +   /* Check the __DRIimage api is supported (this is required by our
> +    * codepath without Gem names) */
> +   extensions = dri2_dpy->driver_extensions;
> +   for (i = 0; extensions[i]; i++) {
> +      if (strcmp(extensions[i]->name, __DRI_IMAGE_DRIVER) == 0)
> +         return EGL_TRUE;
If memory serves me right__DRI_IMAGE_DRIVER is a cleaned up version of
__DRI_DRI2. Afaics the former is never looked up (or used) in the EGL
code, unlike the latter. So I'm suspecting that this check is a bit
off ?

Thanks
Emil


More information about the mesa-dev mailing list