[Mesa-dev] [PATCH 8/8] egldevice: implement eglQueryDisplayAttribEXT

Adam Jackson ajax at redhat.com
Thu Jul 21 13:57:06 UTC 2016


On Fri, 2015-07-24 at 16:20 +0200, Jonny Lamb wrote:
> This adds a new vfunc to _EGLDriver, QueryDeviceName, which should
> return a const string of the device name (usually in the format
> '/dev/dri/cardN').
> 
> The EGLDevice could perhaps be cached in the EGLDisplay but there
> usually aren't loads of devices and this lookup isn't particularly
> costly so leave it as is for now.
> 
> Right now this only works with the egl_dri2 driver.

Ancient thread I know, but this doesn't work, at least in my wayland
session.

>  static EGLBoolean
> +_eglQueryDeviceFromDisplay(_EGLDeviceInfo *info,
> +                           _EGLDriver *drv,
> +                           _EGLDisplay *disp,
> +                           EGLAttrib *value)
> +{
> +#ifdef HAVE_LIBUDEV
> +   const char *device_name = NULL;
> +   _EGLDevice *dev;
> +   UDEV_SYMBOL(const char *, udev_device_get_property_value,
> +               (struct udev_device *, const char *));
> +
> +   if (dlsym_failed)
> +      return EGL_FALSE;
> +
> +   if (!drv->QueryDeviceName)
> +      return EGL_FALSE;
> +
> +   device_name = drv->QueryDeviceName(disp);

This is /dev/dri/renderD128...

> +   mtx_lock(_eglGlobal.Mutex);
> +
> +   assert(info->got_devices);
> +
> +   for (dev = info->devices; dev; dev = dev->Next) {
> +      const char *devname = udev_device_get_property_value(
> +         dev->Info, "DEVNAME");

And this is /dev/dri/card0, so querying the display will always fail.

Obviously I can paper over this when there's only one device in the
list, but the whole reason I want this is to make multi-GPU work
better. Any ideas on a better approach here?

- ajax


More information about the mesa-dev mailing list