On Tue 28 Nov 2017, Jason Ekstrand wrote: > Now that we have anv_device_init/finish functions, there's no reason to > have the individual driver do any more work than that.
You mean "wsi_device_init/finish" functions. > --- > src/amd/vulkan/radv_wsi.c | 36 ++++++------------------------------ > src/intel/vulkan/anv_wsi.c | 36 ++++++------------------------------ > src/vulkan/wsi/wsi_common.c | 37 > +++++++++++++++++++++++++++++++++++-- > src/vulkan/wsi/wsi_common.h | 19 +++++++------------ > src/vulkan/wsi/wsi_common_private.h | 10 ++++++++++ > 5 files changed, 64 insertions(+), 74 deletions(-) > -void > +VkResult > wsi_device_init(struct wsi_device *wsi, > VkPhysicalDevice pdevice, > - WSI_FN_GetPhysicalDeviceProcAddr proc_addr) > + WSI_FN_GetPhysicalDeviceProcAddr proc_addr, > + const VkAllocationCallbacks *alloc) > { > + VkResult result; > + > memset(wsi, 0, sizeof(*wsi)); > > #define WSI_GET_CB(func) \ > @@ -69,6 +72,36 @@ wsi_device_init(struct wsi_device *wsi, > WSI_GET_CB(QueueSubmit); > WSI_GET_CB(WaitForFences); > #undef WSI_GET_CB > + > +#ifdef VK_USE_PLATFORM_XCB_KHR > + result = wsi_x11_init_wsi(wsi, alloc); > + if (result != VK_SUCCESS) > + return result; > +#endif > + > +#ifdef VK_USE_PLATFORM_WAYLAND_KHR > + result = wsi_wl_init_wsi(wsi, alloc, pdevice); > + if (result != VK_SUCCESS) { > +#ifdef VK_USE_PLATFORM_XCB_KHR > + wsi_x11_finish_wsi(wsi, alloc); > +#endif > + return result; > + } > +#endif This looks like a bug. wsi_device_init() fails if either of x11 or wayland initialization fails, even if the user requested only one of VK_KHR_{xcb,xlib,wayland}_surface. I filed https://bugs.freedesktop.org/show_bug.cgi?id=104039 . But this patch is just a refactor patch, and it preserves the existing (and possibly buggy) behavior. With the commit message fixed, Reviewed-by: Chad Versace <chadvers...@chromium.org> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev