[Mesa-dev] [PATCH] egl/x11_dri3: stop restricting support to render nodes unnecessarily
Frank Binns
frank.binns at imgtec.com
Fri Jun 10 16:35:27 UTC 2016
On 10/06/16 12:25, Martin Peres wrote:
> On 10/06/16 13:30, Frank Binns wrote:
>> In order to support the WL_bind_wayland_display extension it's
>> necessary to
>> make use of render nodes as DRI3 doesn't provide a mechanism for
>> authenticating
>> client opened fds. However, this does not apply when Wayland support
>> isn't
>> enabled.
>
> Out of curiosity, why don't you want to use render nodes? Are you
> using a very old kernel?
>
We make use of render nodes but this isn't exposed to Mesa due to the
way our driver is currently architected.
>>
>> Signed-off-by: Frank Binns <frank.binns at imgtec.com>
>> ---
>> src/egl/drivers/dri2/platform_x11_dri3.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/src/egl/drivers/dri2/platform_x11_dri3.c
>> b/src/egl/drivers/dri2/platform_x11_dri3.c
>> index 9363a8a..80aac01 100644
>> --- a/src/egl/drivers/dri2/platform_x11_dri3.c
>> +++ b/src/egl/drivers/dri2/platform_x11_dri3.c
>> @@ -442,6 +442,7 @@ dri3_get_device_name(int fd)
>> {
>> char *ret = NULL;
>>
>> +#ifdef HAVE_WAYLAND_PLATFORM
>> ret = drmGetRenderDeviceNameFromFd(fd);
>> if (ret)
>> return ret;
>
> I would rather move the #ifdef HAVE_WAYLAND_PLATFORM to after the
> comment about WL_bind_wayland_display. This way, we keep the same
> logic of first asking libdrm, and then asking our internal function.
Will do.
>
>> @@ -455,6 +456,7 @@ dri3_get_device_name(int fd)
>> _eglLog(_EGL_WARNING, "Render node support not available,
>> falling back to dri2");
>> _eglLog(_EGL_WARNING, "If you want to force dri3, set
>> EGL_FORCE_DRI3 environment variable");
>
> Maybe reworking this error message to add that if, as a user, you do
> not care about wayland, you can compile it out and the error will go
> away.
Sure, I can do that.
>
>> } else
>> +#endif
>> ret = loader_get_device_name_for_fd(fd);
>>
>> return ret;
>>
>
> Now, did you actually test this patch?
Yes, I tested it with our driver. I hope that counts for something :)
> If you were using normal nodes and not render nodes, I wonder how you
> managed to get any context since no authentication is performed :s
>
For DRI3, the X video driver opens the device node on behalf of the
client and authenticates it if necessary. You can see an example in
xf86-video-intel where it tries to use a render node and if it can't it
then falls back to using a card node instead.
Thanks
Frank
> Please provide more context :)
>
> Martin
More information about the mesa-dev
mailing list