diff --git a/.pick_status.json b/.pick_status.json index 023ca79498b..5736e3f5388 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -238,7 +238,7 @@ "description": "vulkan/wsi/wayland: improve same gpu detection", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "db42ed1e04cc7c9b92fb22cc2eef7f62e73aabba" }, diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index 742313f3eb1..70b00429972 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); } }