diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index 6a337fc24e9..fdeebc5dd7a 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -843,10 +843,18 @@ wsi_wl_display_init(struct wsi_wayland *wsi_wl, /* Round-trip again to fetch dma-buf feedback */ wl_display_roundtrip_queue(display->wl_display, display->queue); - if (wsi_wl->wsi->drm_info.hasRender) { + if (wsi_wl->wsi->drm_info.hasRender || + wsi_wl->wsi->drm_info.hasPrimary) { + /* Apparently some wayland compositor do not send the render + * device node but the primary, so test against both. + */ display->same_gpu = - major(display->main_device) == wsi_wl->wsi->drm_info.renderMajor && - minor(display->main_device) == wsi_wl->wsi->drm_info.renderMinor; + (wsi_wl->wsi->drm_info.hasRender && + major(display->main_device) == wsi_wl->wsi->drm_info.renderMajor && + minor(display->main_device) == wsi_wl->wsi->drm_info.renderMinor) || + (wsi_wl->wsi->drm_info.hasPrimary && + major(display->main_device) == wsi_wl->wsi->drm_info.primaryMajor && + minor(display->main_device) == wsi_wl->wsi->drm_info.primaryMinor); } }