external/skia/share-grcontext.patch.1 | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
New commits: commit 145d82b5f0cab44a8c34071ddc4458dd3756f6e5 Author: Jonathan Clark <jonat...@libreoffice.org> AuthorDate: Fri Jan 17 09:44:19 2025 -0700 Commit: Jonathan Clark <jonat...@libreoffice.org> CommitDate: Fri Jan 17 18:57:41 2025 +0100 tdf#164394 Fix Vulkan vkCreateXcbSurfaceKHR validation error Updates the Skia shared context patch to avoid surface/swapchain construction on invalid X11 windows. Change-Id: Ia591fb3755ed5adeec2b6246cf9a4a2fb9dcc74d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180420 Reviewed-by: Jonathan Clark <jonat...@libreoffice.org> Tested-by: Jenkins diff --git a/external/skia/share-grcontext.patch.1 b/external/skia/share-grcontext.patch.1 index ce225bcbb6c7..71d7c247d334 100644 --- a/external/skia/share-grcontext.patch.1 +++ b/external/skia/share-grcontext.patch.1 @@ -199,6 +199,37 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm skia/tools/window/MetalWind +} + } //namespace skwindow::internal +diff -ur skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.cpp.orig skia/tools/window/unix/GaneshVulkanWindowContext_unix.cpp +--- skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.cpp.orig 2025-01-17 09:32:18.346355282 -0700 ++++ skia/tools/window/unix/GaneshVulkanWindowContext_unix.cpp 2025-01-17 09:34:12.368151987 -0700 +@@ -23,7 +23,7 @@ + return nullptr; + } + +- auto createVkSurface = [&info, instProc](VkInstance instance) -> VkSurfaceKHR { ++ internal::VulkanWindowContext::CreateVkSurfaceFn createVkSurface = [&info, instProc](VkInstance instance) -> VkSurfaceKHR { + static PFN_vkCreateXcbSurfaceKHR createXcbSurfaceKHR = nullptr; + if (!createXcbSurfaceKHR) { + createXcbSurfaceKHR = +@@ -47,6 +47,9 @@ + + return surface; + }; ++ // Allow creating just the shared context, without an associated window. ++ if(info.fWindow == 0) ++ createVkSurface = nullptr; + + auto canPresent = [&info, instProc](VkInstance instance, + VkPhysicalDevice physDev, +@@ -68,7 +71,7 @@ + }; + std::unique_ptr<WindowContext> ctx(new internal::VulkanWindowContext( + displayParams, createVkSurface, canPresent, instProc)); +- if (!ctx->isValid()) { ++ if (!ctx->isValid() && createVkSurface != nullptr) { + return nullptr; + } + return ctx; diff -ur skia.org/tools/window/VulkanWindowContext.cpp skia/tools/window/VulkanWindowContext.cpp --- skia.org/tools/window/VulkanWindowContext.cpp 2024-10-10 14:11:32.362258108 +0200 +++ skia/tools/window/VulkanWindowContext.cpp 2024-10-10 14:15:27.179546520 +0200