diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 560adfd2843..8922a1e1a8b 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -2654,16 +2654,20 @@ registry_handle_global_swrast(void *data, struct wl_registry *registry, if (strcmp(interface, wl_shm_interface.name) == 0) { dri2_dpy->wl_shm = wl_registry_bind(registry, name, &wl_shm_interface, 1); wl_shm_add_listener(dri2_dpy->wl_shm, &shm_listener, dri2_dpy); - } else if (strcmp(interface, wl_drm_interface.name) == 0) { - dri2_dpy->wl_drm_version = MIN2(version, 2); - dri2_dpy->wl_drm_name = name; - } else if (strcmp(interface, zwp_linux_dmabuf_v1_interface.name) == 0 && - version >= 3) { - dri2_dpy->wl_dmabuf = wl_registry_bind( - registry, name, &zwp_linux_dmabuf_v1_interface, - MIN2(version, ZWP_LINUX_DMABUF_V1_GET_DEFAULT_FEEDBACK_SINCE_VERSION)); - zwp_linux_dmabuf_v1_add_listener(dri2_dpy->wl_dmabuf, &dmabuf_listener, - dri2_dpy); + } + if (dri2_dpy->fd_render_gpu != -1 || dri2_dpy->fd_display_gpu != -1) { + if (strcmp(interface, wl_drm_interface.name) == 0) { + dri2_dpy->wl_drm_version = MIN2(version, 2); + dri2_dpy->wl_drm_name = name; + } else if (strcmp(interface, zwp_linux_dmabuf_v1_interface.name) == 0 && + version >= 3) { + dri2_dpy->wl_dmabuf = wl_registry_bind( + registry, name, &zwp_linux_dmabuf_v1_interface, + MIN2(version, + ZWP_LINUX_DMABUF_V1_GET_DEFAULT_FEEDBACK_SINCE_VERSION)); + zwp_linux_dmabuf_v1_add_listener(dri2_dpy->wl_dmabuf, &dmabuf_listener, + dri2_dpy); + } } }