<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, May 5, 2018 at 6:34 AM, Bas Nieuwenhuizen <span dir="ltr"><<a href="mailto:bas@basnieuwenhuizen.nl" target="_blank">bas@basnieuwenhuizen.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This was setting the LINEAR modifier if neither the<br>
X server nor the driver supported modifiers.<br>
<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=106180" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/<wbr>show_bug.cgi?id=106180</a><br>
Fixes: c80c08e226 "vulkan/wsi/x11: Add support for DRI3 v1.2"<br>
CC: 18.1 <<a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.<wbr>freedesktop.org</a>><br>
CC: Abel Garcia Dorta <<a href="mailto:mercuriete@gmail.com">mercuriete@gmail.com</a>><br>
CC: Daniel Stone <<a href="mailto:daniels@collabora.com">daniels@collabora.com</a>><br>
---<br>
 src/vulkan/wsi/wsi_common.c         | 3 ++-<br>
 src/vulkan/wsi/wsi_common_<wbr>private.h | 1 +<br>
 src/vulkan/wsi/wsi_common_x11.<wbr>c     | 3 ++-<br>
 3 files changed, 5 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c<br>
index fe262b4968d..87e508ddf85 100644<br>
--- a/src/vulkan/wsi/wsi_common.c<br>
+++ b/src/vulkan/wsi/wsi_common.c<br>
@@ -442,6 +442,7 @@ fail:<br>
 VkResult<br>
 wsi_create_prime_image(const struct wsi_swapchain *chain,<br>
                        const VkSwapchainCreateInfoKHR *pCreateInfo,<br>
+                       bool use_modifier,<br>
                        struct wsi_image *image)<br>
 {<br>
    const struct wsi_device *wsi = chain->wsi;<br>
@@ -626,7 +627,7 @@ wsi_create_prime_image(const struct wsi_swapchain *chain,<br>
    if (result != VK_SUCCESS)<br>
       goto fail;<br>
<br>
-   image->drm_modifier = DRM_FORMAT_MOD_LINEAR;<br>
+   image->drm_modifier = use_modifier ? DRM_FORMAT_MOD_LINEAR : DRM_FORMAT_MOD_INVALID;<br>
    image->num_planes = 1;<br>
    image->sizes[0] = linear_size;<br>
    image->row_pitches[0] = linear_stride;<br>
diff --git a/src/vulkan/wsi/wsi_common_<wbr>private.h b/src/vulkan/wsi/wsi_common_<wbr>private.h<br>
index b608119b969..90941c8201b 100644<br>
--- a/src/vulkan/wsi/wsi_common_<wbr>private.h<br>
+++ b/src/vulkan/wsi/wsi_common_<wbr>private.h<br>
@@ -89,6 +89,7 @@ wsi_create_native_image(const struct wsi_swapchain *chain,<br>
 VkResult<br>
 wsi_create_prime_image(const struct wsi_swapchain *chain,<br>
                        const VkSwapchainCreateInfoKHR *pCreateInfo,<br>
+                       bool use_modifier,<br>
                        struct wsi_image *image);<br>
<br>
 void<br>
diff --git a/src/vulkan/wsi/wsi_common_<wbr>x11.c b/src/vulkan/wsi/wsi_common_<wbr>x11.c<br>
index 3a00caddfb9..62739b99125 100644<br>
--- a/src/vulkan/wsi/wsi_common_<wbr>x11.c<br>
+++ b/src/vulkan/wsi/wsi_common_<wbr>x11.c<br>
@@ -1043,7 +1043,8 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,<br>
    uint32_t bpp = 32;<br>
<br>
    if (chain->base.use_prime_blit) {<br>
-      result = wsi_create_prime_image(&chain-<wbr>>base, pCreateInfo, &image->base);<br>
+      bool use_modifier = num_tranches > 0;<br>
+      result = wsi_create_prime_image(&chain-<wbr>>base, pCreateInfo, use_modifier, &image->base);<br></blockquote><div><br></div><div>This confused me for a bit but I think I see what's going on.  You have an X server which doesn't know about modifiers but mesa is built with modifier support and prime is in use.  This results in the WSI code calling dri3_pixmap_from_buffers (plural) on an X server which doesn't support it.<br><br></div><div>I'm not sure what I think about this way of solving the problem.  In my twisted mind, DRM_FORMAT_MOD_LINEAR should always be valid even if the modifier is ultimately ignored.  I'm going to send a counter-patch which solves it another way but I'm not sure if my solution is better.  Daniel, do you have any thoughts?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    } else {<br>
       result = wsi_create_native_image(&<wbr>chain->base, pCreateInfo,<br>
                                        num_tranches, num_modifiers, modifiers,<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.17.0<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>