In the prime case, our modifier is always DRM_FORMAT_MOD_LINEAR and we would end up calling dri3_pixmap_from_buffers on an X server which does not support it.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106180 Fixes: c80c08e226 "vulkan/wsi/x11: Add support for DRI3 v1.2" --- src/vulkan/wsi/wsi_common_x11.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c index 3a00cad..29d0e67 100644 --- a/src/vulkan/wsi/wsi_common_x11.c +++ b/src/vulkan/wsi/wsi_common_x11.c @@ -1055,10 +1055,8 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain, image->pixmap = xcb_generate_id(chain->conn); #ifdef HAVE_DRI3_MODIFIERS - if (image->base.drm_modifier != DRM_FORMAT_MOD_INVALID) { - /* If the image has a modifier, we must have DRI3 v1.2. */ - assert(chain->has_dri3_modifiers); - + if (chain->has_dri3_modifiers && + image->base.drm_modifier != DRM_FORMAT_MOD_INVALID) { cookie = xcb_dri3_pixmap_from_buffers_checked(chain->conn, image->pixmap, @@ -1083,6 +1081,9 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain, /* Without passing modifiers, we can't have multi-plane RGB images. */ assert(image->base.num_planes == 1); + assert(image->base.drm_modifier == DRM_FORMAT_MOD_LINEAR || + image->base.drm_modifier == DRM_FORMAT_MOD_INVALID); + cookie = xcb_dri3_pixmap_from_buffer_checked(chain->conn, image->pixmap, -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev