diff options
author | Mathias Fröhlich <Mathias.Froehlich@gmx.net> | 2019-06-06 10:22:25 +0200 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2019-06-20 10:42:55 -0700 |
commit | 0eb21e88b033c728edaa7704e4247800764927ab (patch) | |
tree | 3723525a901565742b48cbf92f3b7d7c851da52b | |
parent | fbef0f9ea11a4aed32c27312f398944f3bf72149 (diff) | |
download | mesa-0eb21e88b033c728edaa7704e4247800764927ab.tar.gz |
egl: Don't add hardware device if there is no render node v2.
Do not offer a hardware drm backed egl device if no render node
is available. The current implementation will fail on this
egl device. On top it issues a warning that is actually missleading.
There are finally more error paths that can fail on the way to a
hardware backed egl device. Fixing all of them would kind of require
opening the drm device and see if there is a usable driver associated
with the device. The taken approach avoids a full probe and fixes at
least this kind of problem on kvm virtualization hosts I observe here.
Fixes: dbb4457d985 ("egl: add EGL_EXT_device_drm support")
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
(cherry picked from commit 5743a36b2b32a91eaf82c8d109932fe4fea01233)
-rw-r--r-- | src/egl/main/egldevice.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/egl/main/egldevice.c b/src/egl/main/egldevice.c index c5c9a21273a..ece0f4075da 100644 --- a/src/egl/main/egldevice.c +++ b/src/egl/main/egldevice.c @@ -108,9 +108,9 @@ static int _eglAddDRMDevice(drmDevicePtr device, _EGLDevice **out_dev) { _EGLDevice *dev; + const int wanted_nodes = 1 << DRM_NODE_RENDER | 1 << DRM_NODE_PRIMARY; - if ((device->available_nodes & (1 << DRM_NODE_PRIMARY | - 1 << DRM_NODE_RENDER)) == 0) + if ((device->available_nodes & wanted_nodes) != wanted_nodes) return -1; dev = _eglGlobal.DeviceList; |