download.lst                                     |    4 
 external/skia/Library_skia.mk                    |   55 ++++++--
 external/skia/UnpackedTarball_skia.mk            |    2 
 external/skia/fix-pch.patch.1                    |   40 ++----
 external/skia/macosmetal.patch.1                 |   59 ++++-----
 external/skia/make-api-visible.patch.1           |  148 +++++++++++++++--------
 external/skia/share-grcontext.patch.1            |  115 ++++++-----------
 external/skia/ubsan-missing-typeinfo.patch.1     |    4 
 external/skia/windows-define-conflict.patch.1    |    6 
 external/skia/windows-libraries-system32.patch.1 |    9 -
 vcl/osx/salgdiutils.cxx                          |    2 
 vcl/skia/SkiaHelper.cxx                          |    4 
 vcl/skia/osx/gdiimpl.cxx                         |    8 -
 vcl/skia/x11/gdiimpl.cxx                         |    6 
 14 files changed, 257 insertions(+), 205 deletions(-)

New commits:
commit 4924a9f73fae17c14cc445e2804d4025a17acd30
Author:     Noel Grandin <[email protected]>
AuthorDate: Thu Oct 10 14:39:39 2024 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Sat Oct 12 17:50:01 2024 +0200

    update to skia m129
    
    Change-Id: Iea920a34b11695aba32f15921018cf53f418d09a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174846
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/download.lst b/download.lst
index 19ee54473b5b..b8d7680761ff 100644
--- a/download.lst
+++ b/download.lst
@@ -626,8 +626,8 @@ RHINO_TARBALL := rhino-1.7.15.zip
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-SKIA_SHA256SUM := 
4b0b32dc197db9b4eaec46e225b72d0d06fe68407f96d834f23151acef6f142b
-SKIA_TARBALL := skia-m128-cd98397d0c2c3eb1d5a8d76aade3c87c2e0d28ac.tar.xz
+SKIA_SHA256SUM := 
2520148d5c1d024fa6c7124a3bd8ff82754d3ee5171295954734e84427575cd0
+SKIA_TARBALL := skia-m129-dda581d538cb6532cda841444e7b4ceacde01ec9.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/skia/Library_skia.mk b/external/skia/Library_skia.mk
index d1d1bd6494bc..84bbf92c6b15 100644
--- a/external/skia/Library_skia.mk
+++ b/external/skia/Library_skia.mk
@@ -140,6 +140,24 @@ $(eval $(call gb_Library_add_exception_objects,skia,\
 
 $(eval $(call gb_Library_set_generated_cxx_suffix,skia,cpp))
 
+# from file skia/gn/BUILD.gn:17, target "skia_component("window")"
+#
+ifeq ($(SKIA_GPU),VULKAN)
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+       UnpackedTarball/skia/tools/window/VulkanWindowContext \
+))
+ifneq ($(filter-out WNT MACOSX,$(OS)),)
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/tools/window/unix/GaneshVulkanWindowContext_unix \
+))
+endif
+ifeq ($(OS),WNT)
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/tools/window/win/VulkanWindowContext_win \
+))
+endif
+endif
+
 # from file skia/gn/BUILD.gn:416, target "optional("fontmgr_fontconfig")"
 #
 ifneq ($(filter-out WNT MACOSX,$(OS)),)
@@ -237,25 +255,36 @@ ifeq ($(OS),WNT)
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/ports/SkDebug_win \
     UnpackedTarball/skia/src/ports/SkOSFile_win \
-    UnpackedTarball/skia/src/ports/SkOSLibrary_win \
 ))
 else ifeq ($(OS),MACOSX)
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/ports/SkDebug_stdio \
     UnpackedTarball/skia/src/ports/SkImageGeneratorCG \
     UnpackedTarball/skia/src/ports/SkOSFile_posix \
-    UnpackedTarball/skia/src/ports/SkOSLibrary_posix \
 ))
 else
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/ports/SkDebug_stdio \
     UnpackedTarball/skia/src/ports/SkOSFile_posix \
-    UnpackedTarball/skia/src/ports/SkOSLibrary_posix \
 ))
 endif
 
 
-# from file skia/gn/BUILD.gn:1903, target "test_lib("gpu_tool_utils")"
+# from file skia/gn/BUILD.gn:1904, target "test_lib("load_dynamic_library")"
+#
+ifeq ($(SKIA_GPU),VULKAN)
+ifeq ($(OS),WNT)
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/tools/library/LoadDynamicLibrary_win \
+))
+else
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/tools/library/LoadDynamicLibrary_posix \
+))
+endif
+endif
+
+# from file skia/gn/BUILD.gn:1915, target "test_lib("gpu_tool_utils")"
 #
 ifeq ($(SKIA_GPU),VULKAN)
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
@@ -271,18 +300,15 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
        $(if $(filter 
LINUX,$(OS)),UnpackedTarball/skia/tools/window/unix/RasterWindowContext_unix) \
     $(if $(filter 
WNT,$(OS)),UnpackedTarball/skia/tools/window/win/RasterWindowContext_win) \
 ))
-ifeq ($(SKIA_GPU),VULKAN)
-$(eval $(call gb_Library_add_generated_exception_objects,skia,\
-       UnpackedTarball/skia/tools/window/VulkanWindowContext \
-       $(if $(filter 
LINUX,$(OS)),UnpackedTarball/skia/tools/window/unix/VulkanWindowContext_unix) \
-    $(if $(filter 
WNT,$(OS)),UnpackedTarball/skia/tools/window/win/VulkanWindowContext_win) \
-))
-endif
 ifeq ($(SKIA_GPU),METAL)
 $(eval $(call gb_Library_add_generated_objcxxobjects,skia,\
     UnpackedTarball/skia/tools/window/MetalWindowContext \
-    $(if $(filter 
MACOSX,$(OS)),UnpackedTarball/skia/tools/window/mac/MetalWindowContext_mac) \
 ))
+ifeq ($(OS),MACOSX)
+$(eval $(call gb_Library_add_generated_objcxxobjects,skia,\
+    UnpackedTarball/skia/tools/window/mac/GaneshMetalWindowContext_mac \
+))
+endif
 endif
 
 # from file skia/gn/codec.gni, target "skia_codec_core"
@@ -780,6 +806,7 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     
UnpackedTarball/skia/src/sksl/transform/SkSLHoistSwitchVarDeclarationsAtTopLevel
 \
     UnpackedTarball/skia/src/sksl/transform/SkSLRenamePrivateSymbols \
     UnpackedTarball/skia/src/sksl/transform/SkSLReplaceConstVarsWithLiterals \
+    UnpackedTarball/skia/src/sksl/transform/SkSLReplaceSplatCastsWithSwizzles \
     UnpackedTarball/skia/src/sksl/transform/SkSLRewriteIndexedSwizzle \
 ))
 
@@ -1077,12 +1104,12 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/gpu/DataUtils \
     UnpackedTarball/skia/src/gpu/DitherUtils \
     UnpackedTarball/skia/src/gpu/MutableTextureState \
-    UnpackedTarball/skia/src/gpu/PipelineUtils \
     UnpackedTarball/skia/src/gpu/RectanizerPow2 \
     UnpackedTarball/skia/src/gpu/RectanizerSkyline \
     UnpackedTarball/skia/src/gpu/ResourceKey \
     UnpackedTarball/skia/src/gpu/ShaderErrorHandler \
     UnpackedTarball/skia/src/gpu/SkBackingFit \
+    UnpackedTarball/skia/src/gpu/SkSLToBackend \
     UnpackedTarball/skia/src/gpu/Swizzle \
     UnpackedTarball/skia/src/gpu/TiledTextureUtils \
     UnpackedTarball/skia/src/gpu/tessellate/FixedCountBufferUtils \
@@ -1090,13 +1117,13 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/text/gpu/DistanceFieldAdjustTable \
     UnpackedTarball/skia/src/text/gpu/GlyphVector \
     UnpackedTarball/skia/src/text/gpu/SDFMaskFilter \
-    UnpackedTarball/skia/src/text/gpu/SDFTControl \
     UnpackedTarball/skia/src/text/gpu/SkChromeRemoteGlyphCache \
     UnpackedTarball/skia/src/text/gpu/Slug \
     UnpackedTarball/skia/src/text/gpu/SlugImpl \
     UnpackedTarball/skia/src/text/gpu/StrikeCache \
     UnpackedTarball/skia/src/text/gpu/SubRunAllocator \
     UnpackedTarball/skia/src/text/gpu/SubRunContainer \
+    UnpackedTarball/skia/src/text/gpu/SubRunControl \
     UnpackedTarball/skia/src/text/gpu/TextBlob \
     UnpackedTarball/skia/src/text/gpu/TextBlobRedrawCoordinator \
     UnpackedTarball/skia/src/text/gpu/VertexFiller \
diff --git a/external/skia/UnpackedTarball_skia.mk 
b/external/skia/UnpackedTarball_skia.mk
index 1430ffbb5a20..60481be5de23 100644
--- a/external/skia/UnpackedTarball_skia.mk
+++ b/external/skia/UnpackedTarball_skia.mk
@@ -33,7 +33,7 @@ skia_patches := \
     windows-libraries-system32.patch.1 \
     allow-no-es2restrictions.patch.1 \
     vk_mem_alloc.patch.1 \
-    macosmetal.patch.0 \
+    macosmetal.patch.1 \
     redefinition-of-op.patch.0 \
     0001-Added-missing-include-cstdio.patch \
     fix-SkDebugf-link-error.patch.1 \
diff --git a/external/skia/fix-pch.patch.1 b/external/skia/fix-pch.patch.1
index 235b63be6908..e64ac72fea4e 100644
--- a/external/skia/fix-pch.patch.1
+++ b/external/skia/fix-pch.patch.1
@@ -1,19 +1,17 @@
-diff --git a/include/private/SkColorData.h b/include/private/SkColorData.h
-index a59e7b0446..960b4c0313 100644
---- a/include/private/SkColorData.h
-+++ b/include/private/SkColorData.h
-@@ -382,4 +382,6 @@ constexpr SkPMColor4f SK_PMColor4fILLEGAL = { 
SK_FloatNegativeInfinity,
+diff -ur skia.org/include/private/SkColorData.h 
skia/include/private/SkColorData.h
+--- skia.org/include/private/SkColorData.h     2024-10-10 13:25:03.614133252 
+0200
++++ skia/include/private/SkColorData.h 2024-10-10 13:25:12.144187524 +0200
+@@ -382,4 +382,6 @@
                                                SK_FloatNegativeInfinity,
                                                SK_FloatNegativeInfinity,
                                                SK_FloatNegativeInfinity };
 +template <> uint32_t SkPMColor4f::toBytes_RGBA() const;
 +
  #endif  // SkColorData_DEFINED
-diff --git a/src/core/SkM44.cpp b/src/core/SkM44.cpp
-index 02b1741763..4cece999d2 100644
---- a/src/core/SkM44.cpp
-+++ b/src/core/SkM44.cpp
-@@ -341,6 +341,8 @@ SkM44 SkM44::LookAt(const SkV3& eye, const SkV3& center, 
const SkV3& up) {
+diff -ur skia.org/src/core/SkM44.cpp skia/src/core/SkM44.cpp
+--- skia.org/src/core/SkM44.cpp        2024-10-10 13:25:03.659133538 +0200
++++ skia/src/core/SkM44.cpp    2024-10-10 13:25:12.144187524 +0200
+@@ -340,6 +340,8 @@
      return m;
  }
  
@@ -22,22 +20,20 @@ index 02b1741763..4cece999d2 100644
  SkM44 SkM44::Perspective(float near, float far, float angle) {
      SkASSERT(far > near);
  
-diff --git a/src/gpu/ganesh/vk/GrVkSemaphore.cpp 
b/src/gpu/ganesh/vk/GrVkSemaphore.cpp
-index 70c7f0ea80..ab8319a447 100644
---- a/src/gpu/ganesh/vk/GrVkSemaphore.cpp
-+++ b/src/gpu/ganesh/vk/GrVkSemaphore.cpp
-@@ -10,6 +10,7 @@
- #include "include/gpu/ganesh/vk/GrVkBackendSemaphore.h"
+diff -ur skia.org/src/gpu/ganesh/vk/GrVkSemaphore.cpp 
skia/src/gpu/ganesh/vk/GrVkSemaphore.cpp
+--- skia.org/src/gpu/ganesh/vk/GrVkSemaphore.cpp       2024-10-10 
13:25:03.679133665 +0200
++++ skia/src/gpu/ganesh/vk/GrVkSemaphore.cpp   2024-10-10 13:25:12.144187524 
+0200
+@@ -12,6 +12,7 @@
+ #include "include/private/base/SkAssert.h"
  #include "src/gpu/ganesh/vk/GrVkGpu.h"
  #include "src/gpu/ganesh/vk/GrVkUtil.h"
 +#include "tools/gpu/vk/GrVulkanDefines.h"
  
- #ifdef VK_USE_PLATFORM_WIN32_KHR
- // windows wants to define this as CreateSemaphoreA or CreateSemaphoreW
-diff --git a/src/utils/win/SkDWriteGeometrySink.h 
b/src/utils/win/SkDWriteGeometrySink.h
-index af4909aaaf..825ec35c83 100644
---- a/src/utils/win/SkDWriteGeometrySink.h
-+++ b/src/utils/win/SkDWriteGeometrySink.h
+ #include <string.h>
+ 
+diff -ur skia.org/src/utils/win/SkDWriteGeometrySink.h 
skia/src/utils/win/SkDWriteGeometrySink.h
+--- skia.org/src/utils/win/SkDWriteGeometrySink.h      2024-10-10 
13:25:03.683133691 +0200
++++ skia/src/utils/win/SkDWriteGeometrySink.h  2024-10-10 13:25:12.144187524 
+0200
 @@ -13,6 +13,8 @@
  
  class SkPath;
diff --git a/external/skia/macosmetal.patch.0 b/external/skia/macosmetal.patch.1
similarity index 79%
rename from external/skia/macosmetal.patch.0
rename to external/skia/macosmetal.patch.1
index 342f735e9ea4..fbf6962340fc 100644
--- a/external/skia/macosmetal.patch.0
+++ b/external/skia/macosmetal.patch.1
@@ -1,32 +1,12 @@
---- tools/window/mac/WindowContextFactory_mac.h        2022-02-16 
06:03:39.000000000 -0500
-+++ tools/window/mac/WindowContextFactory_mac.h        2023-01-25 
08:09:00.000000000 -0500
-@@ -19,15 +19,8 @@
- 
- struct DisplayParams;
- 
--static inline CGFloat GetBackingScaleFactor(NSView* view) {
--    #ifdef SK_BUILD_FOR_IOS
--    UIScreen* screen = view.window.screen ?: [UIScreen mainScreen];
--    return screen.nativeScale;
--    #else
--    NSScreen* screen = view.window.screen ?: [NSScreen mainScreen];
--    return screen.backingScaleFactor;
--    #endif
--}
-+SK_API CGFloat GetBackingScaleFactor(NSView* view);
-+SK_API void ResetBackingScaleFactor();
- 
- struct MacWindowInfo {
-     NSView*   fMainView;
 --- /dev/null  2023-01-25 09:20:55.000000000 -0500
-+++ tools/window/mac/WindowContextFactory_mac.mm       2023-01-25 
09:21:22.000000000 -0500
++++ skia.org/tools/window/mac/WindowContextFactory_mac.mm      2023-01-25 
09:21:22.000000000 -0500
 @@ -0,0 +1,57 @@
 +/*
 + * Use of this source code is governed by a BSD-style license that can be
 + * found in the LICENSE file.
 + */
 +
-+#include "tools/window/mac/WindowContextFactory_mac.h"
++#include "tools/window/mac/MacWindowInfo.h"
 +
 +namespace skwindow {
 +
@@ -78,18 +58,19 @@
 +}
 +
 +}  // namespace sk_app
---- tools/window/mac/MetalWindowContext_mac.mm 2024-08-31 15:49:57
-+++ tools/window/mac/MetalWindowContext_mac.mm 2024-09-25 20:09:32
+diff -ur skia.org/tools/window/mac/GaneshMetalWindowContext_mac.mm 
skia/tools/window/mac/GaneshMetalWindowContext_mac.mm
+--- skia.org/tools/window/mac/GaneshMetalWindowContext_mac.mm  2024-10-10 
13:50:06.102852791 +0200
++++ skia/tools/window/mac/GaneshMetalWindowContext_mac.mm      2024-10-10 
13:53:34.821323595 +0200
 @@ -11,6 +11,8 @@
- #import <Cocoa/Cocoa.h>
- #import <QuartzCore/CAConstraintLayoutManager.h>
+ #include "tools/window/MetalWindowContext.h"
+ #include "tools/window/mac/MacWindowInfo.h"
  
 +#include <sal/log.hxx>
 +
- using skwindow::DisplayParams;
- using skwindow::MacWindowInfo;
- using skwindow::internal::MetalWindowContext;
-@@ -66,8 +68,7 @@
+ #import <Cocoa/Cocoa.h>
+ #import <QuartzCore/CAConstraintLayoutManager.h>
+ 
+@@ -65,8 +67,7 @@
      fMetalLayer.autoresizingMask = kCALayerHeightSizable | 
kCALayerWidthSizable;
      fMetalLayer.contentsGravity = kCAGravityTopLeft;
      fMetalLayer.magnificationFilter = kCAFilterNearest;
@@ -99,7 +80,7 @@
  
      fMainView.layer = fMetalLayer;
      fMainView.wantsLayer = YES;
-@@ -86,6 +87,18 @@
+@@ -85,6 +86,18 @@
      fMetalLayer.drawableSize = backingSize;
      fMetalLayer.contentsScale = backingScaleFactor;
  
@@ -118,3 +99,19 @@
      fWidth = backingSize.width;
      fHeight = backingSize.height;
  }
+diff -ur skia.org/tools/window/mac/MacWindowInfo.h 
skia/tools/window/mac/MacWindowInfo.h
+--- skia.org/tools/window/mac/MacWindowInfo.h  2024-10-10 13:50:06.102852791 
+0200
++++ skia/tools/window/mac/MacWindowInfo.h      2024-10-10 13:51:30.227006251 
+0200
+@@ -22,10 +22,8 @@
+     NSView* fMainView;
+ };
+ 
+-static inline CGFloat GetBackingScaleFactor(NSView* view) {
+-    NSScreen* screen = view.window.screen ?: [NSScreen mainScreen];
+-    return screen.backingScaleFactor;
+-}
++SK_API CGFloat GetBackingScaleFactor(NSView* view);
++SK_API void ResetBackingScaleFactor();
+ 
+ }  // namespace skwindow
+
diff --git a/external/skia/make-api-visible.patch.1 
b/external/skia/make-api-visible.patch.1
index f8bf5d5debbb..776f987a60f6 100644
--- a/external/skia/make-api-visible.patch.1
+++ b/external/skia/make-api-visible.patch.1
@@ -1,57 +1,123 @@
-diff -ur skia.org/tools/window/mac/WindowContextFactory_mac.h 
skia/tools/window/mac/WindowContextFactory_mac.h
---- skia.org/tools/window/mac/WindowContextFactory_mac.h       2024-10-04 
14:26:29.787526193 +0200
-+++ skia/tools/window/mac/WindowContextFactory_mac.h   2024-10-04 
14:28:08.353196733 +0200
-@@ -53,7 +53,7 @@
- #endif
+diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
+--- skia.org/tools/window/WindowContext.h      2024-10-12 15:57:21
++++ skia/tools/window/WindowContext.h  2024-10-12 15:58:48
+@@ -23,7 +23,7 @@
+
+ namespace skwindow {
+
+-class WindowContext {
++class SK_API WindowContext {
+ public:
+     WindowContext(const DisplayParams&);
+
+diff -ur skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h 
skia/tools/window/mac/GaneshMetalWindowContext_mac.h
+--- skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h   2024-10-12 
15:57:21
++++ skia/tools/window/mac/GaneshMetalWindowContext_mac.h       2024-10-12 
15:59:18
+@@ -8,6 +8,7 @@
+ #ifndef GaneshMetalWindowContext_mac_DEFINED
+ #define GaneshMetalWindowContext_mac_DEFINED
+
++#include "include/private/base/SkAPI.h"
+ #include <memory>
+
+ namespace skwindow {
+@@ -15,7 +16,7 @@
+ struct DisplayParams;
+ struct MacWindowInfo;
+
+-std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const MacWindowInfo&, 
const DisplayParams&);
++SK_API std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const 
MacWindowInfo&, const DisplayParams&);
+ }  // namespace skwindow
 
- #ifdef SK_METAL
--std::unique_ptr<WindowContext> MakeMetalForMac(const MacWindowInfo&, const 
DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeMetalForMac(const MacWindowInfo&, 
const DisplayParams&);
- #if defined(SK_GRAPHITE)
- std::unique_ptr<WindowContext> MakeGraphiteMetalForMac(const MacWindowInfo&, 
const DisplayParams&);
  #endif
-diff -ur skia.org/tools/window/unix/WindowContextFactory_unix.h 
skia/tools/window/unix/WindowContextFactory_unix.h
---- skia.org/tools/window/unix/WindowContextFactory_unix.h     2024-10-04 
14:26:29.787526193 +0200
-+++ skia/tools/window/unix/WindowContextFactory_unix.h 2024-10-04 
14:29:16.184625681 +0200
-@@ -35,7 +35,7 @@
- };
+diff -ur skia.org/tools/window/unix/GaneshGLWindowContext_unix.h 
skia/tools/window/unix/GaneshGLWindowContext_unix.h
+--- skia.org/tools/window/unix/GaneshGLWindowContext_unix.h    2024-10-12 
15:57:21
++++ skia/tools/window/unix/GaneshGLWindowContext_unix.h        2024-10-12 
15:59:44
+@@ -8,6 +8,7 @@
+ #ifndef GaneshGLWindowContext_unix_DEFINED
+ #define GaneshGLWindowContext_unix_DEFINED
+
++#include "include/private/base/SkAPI.h"
+ #include <memory>
+
+ namespace skwindow {
+@@ -15,7 +16,7 @@
+ struct DisplayParams;
+ struct XlibWindowInfo;
+
+-std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const XlibWindowInfo&, 
const DisplayParams&);
++SK_API std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+ }  // namespace skwindow
 
- #ifdef SK_VULKAN
--std::unique_ptr<WindowContext> MakeVulkanForXlib(const XlibWindowInfo&, const 
DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeVulkanForXlib(const 
XlibWindowInfo&, const DisplayParams&);
- #if defined(SK_GRAPHITE)
- std::unique_ptr<WindowContext> MakeGraphiteVulkanForXlib(const 
XlibWindowInfo&,
-                                                          const 
DisplayParams&);
-@@ -43,11 +43,11 @@
  #endif
+diff -ur skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.h 
skia/tools/window/unix/GaneshVulkanWindowContext_unix.h
+--- skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.h        
2024-10-12 15:57:21
++++ skia/tools/window/unix/GaneshVulkanWindowContext_unix.h    2024-10-12 
15:58:48
+@@ -8,6 +8,7 @@
+ #ifndef GaneshVulkanWindowContext_unix_DEFINED
+ #define GaneshVulkanWindowContext_unix_DEFINED
+
++#include "include/private/base/SkAPI.h"
+ #include <memory>
+
+ namespace skwindow {
+@@ -15,7 +16,7 @@
+ struct DisplayParams;
+ struct XlibWindowInfo;
+
+-std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const XlibWindowInfo&, 
const DisplayParams&);
++SK_API std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+ }  // namespace skwindow
 
- #ifdef SK_GL
--std::unique_ptr<WindowContext> MakeGLForXlib(const XlibWindowInfo&, const 
DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGLForXlib(const XlibWindowInfo&, 
const DisplayParams&);
  #endif
+diff -ur skia.org/tools/window/unix/GraphiteDawnVulkanWindowContext_unix.h 
skia/tools/window/unix/GraphiteDawnVulkanWindowContext_unix.h
+--- skia.org/tools/window/unix/GraphiteDawnVulkanWindowContext_unix.h  
2024-10-12 15:57:21
++++ skia/tools/window/unix/GraphiteDawnVulkanWindowContext_unix.h      
2024-10-12 15:58:48
+@@ -8,6 +8,7 @@
+ #ifndef GraphiteDawnVulkanWindowContext_unix_DEFINED
+ #define GraphiteDawnVulkanWindowContext_unix_DEFINED
+
++#include "include/private/base/SkAPI.h"
+ #include <memory>
+
+ namespace skwindow {
+@@ -15,7 +16,7 @@
+ struct DisplayParams;
+ struct XlibWindowInfo;
 
- #if defined(SK_DAWN) && defined(SK_GRAPHITE)
 -std::unique_ptr<WindowContext> MakeGraphiteDawnVulkanForXlib(const 
XlibWindowInfo&,
 +SK_API std::unique_ptr<WindowContext> MakeGraphiteDawnVulkanForXlib(const 
XlibWindowInfo&,
                                                               const 
DisplayParams&);
- #endif
+ }  // namespace skwindow
 
-@@ -55,7 +55,7 @@
-                                                              const 
DisplayParams&);
- #endif
+diff -ur skia.org/tools/window/unix/RasterWindowContext_unix.h 
skia/tools/window/unix/RasterWindowContext_unix.h
+--- skia.org/tools/window/unix/RasterWindowContext_unix.h      2024-10-12 
15:57:21
++++ skia/tools/window/unix/RasterWindowContext_unix.h  2024-10-12 15:58:48
+@@ -8,6 +8,7 @@
+ #ifndef RasterWindowContext_unix_DEFINED
+ #define RasterWindowContext_unix_DEFINED
+
++#include "include/private/base/SkAPI.h"
+ #include <memory>
+
+ namespace skwindow {
+@@ -15,7 +16,7 @@
+ struct DisplayParams;
+ struct XlibWindowInfo;
 
 -std::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&, const 
DisplayParams&);
 +SK_API std::unique_ptr<WindowContext> MakeRasterForXlib(const 
XlibWindowInfo&, const DisplayParams&);
-
  }  // namespace skwindow
 
+ #endif
 diff -ur skia.org/tools/window/win/WindowContextFactory_win.h 
skia/tools/window/win/WindowContextFactory_win.h
---- skia.org/tools/window/win/WindowContextFactory_win.h       2024-10-04 
14:26:29.787526193 +0200
-+++ skia/tools/window/win/WindowContextFactory_win.h   2024-10-04 
14:30:25.346039651 +0200
-@@ -13,28 +13,30 @@
+--- skia.org/tools/window/win/WindowContextFactory_win.h       2024-10-12 
15:57:21
++++ skia/tools/window/win/WindowContextFactory_win.h   2024-10-12 16:00:18
+@@ -13,28 +13,31 @@
 
  #include <memory>
 
++#include "include/private/base/SkAPI.h"
 +#include "include/core/SkTypes.h"
 +
  namespace skwindow {
@@ -83,7 +149,7 @@ diff -ur 
skia.org/tools/window/win/WindowContextFactory_win.h skia/tools/window/
  #endif
 
  #ifdef SK_DAWN
-@@ -44,7 +46,7 @@
+@@ -43,7 +46,7 @@
  #endif
  #endif
 
@@ -92,15 +158,3 @@ diff -ur 
skia.org/tools/window/win/WindowContextFactory_win.h skia/tools/window/
 
  }  // namespace skwindow
 
-diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
---- skia.org/tools/window/WindowContext.h      2024-10-04 14:26:29.787526193 
+0200
-+++ skia/tools/window/WindowContext.h  2024-10-04 14:27:39.148004258 +0200
-@@ -23,7 +23,7 @@
-
- namespace skwindow {
-
--class WindowContext {
-+class SK_API WindowContext {
- public:
-     WindowContext(const DisplayParams&);
-
diff --git a/external/skia/share-grcontext.patch.1 
b/external/skia/share-grcontext.patch.1
index 78a6169e0fa5..e627539a013a 100644
--- a/external/skia/share-grcontext.patch.1
+++ b/external/skia/share-grcontext.patch.1
@@ -1,8 +1,8 @@
-diff -ur skia.org/tools/window/mac/MetalWindowContext_mac.mm 
skia/tools/window/mac/MetalWindowContext_mac.mm
---- skia.org/tools/window/mac/MetalWindowContext_mac.mm        2024-10-10 
11:56:54.809832489 +0200
-+++ skia/tools/window/mac/MetalWindowContext_mac.mm    2024-10-10 
11:57:00.206867701 +0200
-@@ -47,10 +47,14 @@
- }
+diff -ur skia.org/tools/window/mac/GaneshMetalWindowContext_mac.mm 
skia/tools/window/mac/GaneshMetalWindowContext_mac.mm
+--- skia.org/tools/window/mac/GaneshMetalWindowContext_mac.mm  2024-10-10 
14:11:32.362258108 +0200
++++ skia/tools/window/mac/GaneshMetalWindowContext_mac.mm      2024-10-10 
14:12:40.748630164 +0200
+@@ -46,10 +46,14 @@
+ MetalWindowContext_mac::~MetalWindowContext_mac() { this->destroyContext(); }
 
  bool MetalWindowContext_mac::onInitializeContext() {
 +    // Allow creating just the shared context, without an associated window.
@@ -18,8 +18,8 @@ diff -ur skia.org/tools/window/mac/MetalWindowContext_mac.mm 
skia/tools/window/m
 
      // resize ignores the passed values and uses the fMainView directly.
 diff -ur skia.org/tools/window/MetalWindowContext.h 
skia/tools/window/MetalWindowContext.h
---- skia.org/tools/window/MetalWindowContext.h 2024-10-10 11:56:54.809832489 
+0200
-+++ skia/tools/window/MetalWindowContext.h     2024-10-10 11:57:00.206867701 
+0200
+--- skia.org/tools/window/MetalWindowContext.h 2024-10-10 14:11:32.362258108 
+0200
++++ skia/tools/window/MetalWindowContext.h     2024-10-10 14:11:44.341323063 
+0200
 @@ -14,13 +14,18 @@
 
  #include "tools/window/WindowContext.h"
@@ -72,8 +72,8 @@ diff -ur skia.org/tools/window/MetalWindowContext.h 
skia/tools/window/MetalWindo
  }   // namespace skwindow::internal
 
 diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWindowContext.mm
---- skia.org/tools/window/MetalWindowContext.mm        2024-10-10 
11:56:54.808832483 +0200
-+++ skia/tools/window/MetalWindowContext.mm    2024-10-10 11:57:00.206867701 
+0200
+--- skia.org/tools/window/MetalWindowContext.mm        2024-10-10 
14:11:32.362258108 +0200
++++ skia/tools/window/MetalWindowContext.mm    2024-10-10 14:11:44.341323063 
+0200
 @@ -35,50 +35,84 @@
  }
 
@@ -199,40 +199,9 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
 +}
 +
  }   //namespace skwindow::internal
-diff -ur skia.org/tools/window/unix/VulkanWindowContext_unix.cpp 
skia/tools/window/unix/VulkanWindowContext_unix.cpp
---- skia.org/tools/window/unix/VulkanWindowContext_unix.cpp    2024-10-10 
11:56:54.809832489 +0200
-+++ skia/tools/window/unix/VulkanWindowContext_unix.cpp        2024-10-10 
11:57:00.207867708 +0200
-@@ -24,7 +24,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 =
-@@ -48,6 +48,9 @@
-
-         return surface;
-     };
-+    // Allow creating just the shared context, without an associated window.
-+    if(info.fWindow == None)
-+        createVkSurface = nullptr;
-
-     auto canPresent = [&info, instProc](VkInstance instance, VkPhysicalDevice 
physDev,
-                               uint32_t queueFamilyIndex) {
-@@ -73,7 +76,7 @@
-                                               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 
11:56:54.809832489 +0200
-+++ skia/tools/window/VulkanWindowContext.cpp  2024-10-10 11:59:09.535711120 
+0200
+--- 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
 @@ -31,9 +31,13 @@
  #endif
 
@@ -301,7 +270,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 
      PFN_vkGetPhysicalDeviceProperties localGetPhysicalDeviceProperties =
              reinterpret_cast<PFN_vkGetPhysicalDeviceProperties>(
-@@ -88,24 +103,42 @@
+@@ -88,24 +103,43 @@
                                              backendContext.fInstance,
                                              VK_NULL_HANDLE));
      if (!localGetPhysicalDeviceProperties) {
@@ -345,7 +314,8 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 +                                                  physDevVersion,
 +                                                  &extensions,
 +                                                  d->fInterface.get(),
-+                                                  skgpu::ThreadSafe::kNo);
++                                                  skgpu::ThreadSafe::kNo,
++                                                  /*blockSize=*/std::nullopt);
 +
 +    fShared = fGlobalShared;
 +    } // if( !fShared )
@@ -355,7 +325,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      GET_PROC(DestroySurfaceKHR);
      GET_PROC(GetPhysicalDeviceSurfaceSupportKHR);
      GET_PROC(GetPhysicalDeviceSurfaceCapabilitiesKHR);
-@@ -113,7 +146,6 @@
+@@ -113,7 +147,6 @@
      GET_PROC(GetPhysicalDeviceSurfacePresentModesKHR);
      GET_DEV_PROC(DeviceWaitIdle);
      GET_DEV_PROC(QueueWaitIdle);
@@ -363,7 +333,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      GET_DEV_PROC(CreateSwapchainKHR);
      GET_DEV_PROC(DestroySwapchainKHR);
      GET_DEV_PROC(GetSwapchainImagesKHR);
-@@ -121,55 +153,44 @@
+@@ -121,56 +154,44 @@
      GET_DEV_PROC(QueuePresentKHR);
      GET_DEV_PROC(GetDeviceQueue);
 
@@ -374,7 +344,8 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 -                                                  physDevVersion,
 -                                                  &extensions,
 -                                                  fInterface.get(),
--                                                  skgpu::ThreadSafe::kNo);
+-                                                  skgpu::ThreadSafe::kNo,
+-                                                  /*blockSize=*/std::nullopt);
 -
 -    fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams.fGrContextOptions);
 +    // No actual window, used just to create the shared GrContext.
@@ -429,7 +400,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
                                                nullptr);
      if (VK_SUCCESS != res) {
          return false;
-@@ -177,14 +198,14 @@
+@@ -178,14 +199,14 @@
 
      SkAutoMalloc surfaceFormatAlloc(surfaceFormatCount * 
sizeof(VkSurfaceFormatKHR));
      VkSurfaceFormatKHR* surfaceFormats = 
(VkSurfaceFormatKHR*)surfaceFormatAlloc.get();
@@ -446,7 +417,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
                                                     nullptr);
      if (VK_SUCCESS != res) {
          return false;
-@@ -192,7 +213,7 @@
+@@ -193,7 +214,7 @@
 
      SkAutoMalloc presentModeAlloc(presentModeCount * 
sizeof(VkPresentModeKHR));
      VkPresentModeKHR* presentModes = 
(VkPresentModeKHR*)presentModeAlloc.get();
@@ -455,7 +426,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
                                                     presentModes);
      if (VK_SUCCESS != res) {
          return false;
-@@ -308,8 +329,8 @@
+@@ -309,8 +330,8 @@
      swapchainCreateInfo.imageArrayLayers = 1;
      swapchainCreateInfo.imageUsage = usageFlags;
 
@@ -466,7 +437,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
          swapchainCreateInfo.imageSharingMode = VK_SHARING_MODE_CONCURRENT;
          swapchainCreateInfo.queueFamilyIndexCount = 2;
          swapchainCreateInfo.pQueueFamilyIndices = queueFamilies;
-@@ -325,27 +346,27 @@
+@@ -326,27 +347,27 @@
      swapchainCreateInfo.clipped = true;
      swapchainCreateInfo.oldSwapchain = fSwapchain;
 
@@ -499,7 +470,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      }
 
      return true;
-@@ -355,10 +376,10 @@
+@@ -356,10 +377,10 @@
                                          VkImageUsageFlags usageFlags,
                                          SkColorType colorType,
                                          VkSharingMode sharingMode) {
@@ -512,7 +483,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 
      // set up initial image layouts and create surfaces
      fImageLayouts = new VkImageLayout[fImageCount];
-@@ -374,7 +394,7 @@
+@@ -375,7 +395,7 @@
          info.fFormat = format;
          info.fImageUsageFlags = usageFlags;
          info.fLevelCount = 1;
@@ -521,7 +492,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
          info.fProtected = 
skgpu::Protected(fDisplayParams.fCreateProtectedNativeBackend);
          info.fSharingMode = sharingMode;
 
-@@ -417,8 +437,8 @@
+@@ -418,8 +438,8 @@
      fBackbuffers = new BackbufferInfo[fImageCount + 1];
      for (uint32_t i = 0; i < fImageCount + 1; ++i) {
          fBackbuffers[i].fImageIndex = -1;
@@ -532,7 +503,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
                                  &fBackbuffers[i].fRenderSemaphore));
          SkASSERT(result == VK_SUCCESS);
      }
-@@ -431,8 +451,8 @@
+@@ -432,8 +452,8 @@
      if (fBackbuffers) {
          for (uint32_t i = 0; i < fImageCount + 1; ++i) {
              fBackbuffers[i].fImageIndex = -1;
@@ -543,7 +514,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
                                          fBackbuffers[i].fRenderSemaphore,
                                          nullptr));
          }
-@@ -457,42 +477,59 @@
+@@ -458,42 +478,59 @@
  void VulkanWindowContext::destroyContext() {
      if (this->isValid()) {
          fQueueWaitIdle(fPresentQueue);
@@ -569,13 +540,13 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      fContext.reset();
 -    fInterface.reset();
 +    fShared.reset();
++
++    checkDestroyShared();
++}
 
 -    if (VK_NULL_HANDLE != fDevice) {
 -        fDestroyDevice(fDevice, nullptr);
 -        fDevice = VK_NULL_HANDLE;
-+    checkDestroyShared();
-+}
-+
 +void VulkanWindowContext::checkDestroyShared()
 +{
 +    if(!fGlobalShared || !fGlobalShared->unique()) // TODO mutex?
@@ -617,7 +588,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
  }
 
  VulkanWindowContext::BackbufferInfo* 
VulkanWindowContext::getAvailableBackbuffer() {
-@@ -518,35 +555,35 @@
+@@ -519,35 +556,35 @@
      semaphoreInfo.pNext = nullptr;
      semaphoreInfo.flags = 0;
      VkSemaphore semaphore;
@@ -659,7 +630,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
              return nullptr;
          }
      }
-@@ -571,7 +608,7 @@
+@@ -572,7 +609,7 @@
      info.fNumSemaphores = 1;
      info.fSignalSemaphores = &beSemaphore;
      skgpu::MutableTextureState presentState = 
skgpu::MutableTextureStates::MakeVulkan(
@@ -668,7 +639,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      auto dContext = surface->recordingContext()->asDirectContext();
      dContext->flush(surface, info, &presentState);
      dContext->submit();
-@@ -592,4 +629,6 @@
+@@ -593,4 +630,6 @@
      fQueuePresentKHR(fPresentQueue, &presentInfo);
  }
 
@@ -676,9 +647,9 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 +
  }  // namespace skwindow::internal
 diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWindowContext.h
---- skia.org/tools/window/VulkanWindowContext.h        2024-10-10 
11:56:54.808832483 +0200
-+++ skia/tools/window/VulkanWindowContext.h    2024-10-10 11:57:00.207867708 
+0200
-@@ -15,19 +15,23 @@
+--- skia.org/tools/window/VulkanWindowContext.h        2024-10-10 
14:11:32.361258102 +0200
++++ skia/tools/window/VulkanWindowContext.h    2024-10-10 14:11:44.342323068 
+0200
+@@ -13,19 +13,23 @@
  #include "tools/gpu/vk/VkTestUtils.h"
  #include "tools/window/WindowContext.h"
 
@@ -704,7 +675,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
 
      void resize(int w, int h) override {
          this->createSwapchain(w, h, fDisplayParams);
-@@ -47,9 +51,15 @@
+@@ -45,9 +49,15 @@
      VulkanWindowContext(const DisplayParams&, CreateVkSurfaceFn, CanPresentFn,
                          PFN_vkGetInstanceProcAddr);
 
@@ -720,7 +691,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
 
      struct BackbufferInfo {
          uint32_t        fImageIndex;          // image this is associated with
-@@ -62,11 +72,6 @@
+@@ -60,11 +70,6 @@
      void destroyBuffers();
      void onSwapBuffers() override;
 
@@ -732,7 +703,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
      // Create functions
      CreateVkSurfaceFn fCreateVkSurfaceFn;
      CanPresentFn      fCanPresentFn;
-@@ -86,20 +91,46 @@
+@@ -84,20 +89,46 @@
      PFN_vkAcquireNextImageKHR fAcquireNextImageKHR = nullptr;
      PFN_vkQueuePresentKHR fQueuePresentKHR = nullptr;
 
@@ -785,8 +756,8 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
 
      uint32_t               fImageCount;
 diff -ur skia.org/tools/window/win/VulkanWindowContext_win.cpp 
skia/tools/window/win/VulkanWindowContext_win.cpp
---- skia.org/tools/window/win/VulkanWindowContext_win.cpp      2024-10-10 
11:56:54.809832489 +0200
-+++ skia/tools/window/win/VulkanWindowContext_win.cpp  2024-10-10 
11:57:00.207867708 +0200
+--- skia.org/tools/window/win/VulkanWindowContext_win.cpp      2024-10-10 
14:11:32.362258108 +0200
++++ skia/tools/window/win/VulkanWindowContext_win.cpp  2024-10-10 
14:11:44.342323068 +0200
 @@ -25,7 +25,7 @@
          return nullptr;
      }
@@ -816,8 +787,8 @@ diff -ur 
skia.org/tools/window/win/VulkanWindowContext_win.cpp skia/tools/window
      }
      return ctx;
 diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
---- skia.org/tools/window/WindowContext.h      2024-10-10 11:56:54.809832489 
+0200
-+++ skia/tools/window/WindowContext.h  2024-10-10 11:57:00.207867708 +0200
+--- skia.org/tools/window/WindowContext.h      2024-10-10 14:11:32.361258102 
+0200
++++ skia/tools/window/WindowContext.h  2024-10-10 14:11:44.342323068 +0200
 @@ -10,9 +10,9 @@
  #include "include/core/SkRefCnt.h"
  #include "include/core/SkSurfaceProps.h"
diff --git a/external/skia/ubsan-missing-typeinfo.patch.1 
b/external/skia/ubsan-missing-typeinfo.patch.1
index 3e88bc0cc491..ff1a670a3e05 100644
--- a/external/skia/ubsan-missing-typeinfo.patch.1
+++ b/external/skia/ubsan-missing-typeinfo.patch.1
@@ -2,8 +2,8 @@ diff -ur skia.org/src/image/SkImage_Base.h 
skia/src/image/SkImage_Base.h
 --- skia.org/src/image/SkImage_Base.h  2023-07-12 10:59:47.006358109 +0200
 +++ skia/src/image/SkImage_Base.h      2023-07-12 11:15:00.028292134 +0200
 @@ -44,7 +44,7 @@
- 
- namespace skgpu { namespace graphite { class Recorder; } }
+ class Recorder;
+ }
  
 -class SkImage_Base : public SkImage {
 +class SK_API SkImage_Base : public SkImage {
diff --git a/external/skia/windows-define-conflict.patch.1 
b/external/skia/windows-define-conflict.patch.1
index afabe3db145f..20fde50786a0 100644
--- a/external/skia/windows-define-conflict.patch.1
+++ b/external/skia/windows-define-conflict.patch.1
@@ -7,6 +7,6 @@ diff -ur 
skia.org/src/gpu/vk/vulkanmemoryallocator/VulkanAMDMemoryAllocator.h sk
                                               const VulkanExtensions* 
extensions,
 -                                             const VulkanInterface* interface,
 +                                             const VulkanInterface* 
vinterface,
-                                              ThreadSafe);
- 
-     ~VulkanAMDMemoryAllocator() override;
+                                              ThreadSafe,
+                                              std::optional<VkDeviceSize> 
blockSize);
+
diff --git a/external/skia/windows-libraries-system32.patch.1 
b/external/skia/windows-libraries-system32.patch.1
index 45c0e35d1cfa..ba0917ad1c38 100644
--- a/external/skia/windows-libraries-system32.patch.1
+++ b/external/skia/windows-libraries-system32.patch.1
@@ -1,9 +1,8 @@
-diff --git a/src/ports/SkOSLibrary_win.cpp b/src/ports/SkOSLibrary_win.cpp
-index d2dcbe0af6..c288bbf177 100644
---- a/src/ports/SkOSLibrary_win.cpp
-+++ b/src/ports/SkOSLibrary_win.cpp
+diff -ur skia.org/tools/library/LoadDynamicLibrary_win.cpp 
skia/tools/library/LoadDynamicLibrary_win.cpp
+--- skia.org/tools/library/LoadDynamicLibrary_win.cpp  2024-10-10 
13:48:13.491741916 +0200
++++ skia/tools/library/LoadDynamicLibrary_win.cpp      2024-10-10 
13:48:43.266759521 +0200
 @@ -11,7 +11,7 @@
- #include "src/ports/SkOSLibrary.h"
+ #include "tools/library/LoadDynamicLibrary.h"
  
  void* SkLoadDynamicLibrary(const char* libraryName) {
 -    return LoadLibraryA(libraryName);
diff --git a/vcl/osx/salgdiutils.cxx b/vcl/osx/salgdiutils.cxx
index a125ca98644c..ecc886be0243 100644
--- a/vcl/osx/salgdiutils.cxx
+++ b/vcl/osx/salgdiutils.cxx
@@ -37,7 +37,7 @@
 #include <osx/saldata.hxx>
 
 #if HAVE_FEATURE_SKIA
-#include <tools/window/mac/WindowContextFactory_mac.h>
+#include <tools/window/mac/MacWindowInfo.h>
 #include <skia/osx/gdiimpl.hxx>
 #endif
 
diff --git a/vcl/skia/SkiaHelper.cxx b/vcl/skia/SkiaHelper.cxx
index 09a294b86207..bd9c5a2c21b2 100644
--- a/vcl/skia/SkiaHelper.cxx
+++ b/vcl/skia/SkiaHelper.cxx
@@ -57,8 +57,12 @@ bool isAlphaMaskBlendingEnabled() { return false; }
 #if defined(MACOSX)
 #include <premac.h>
 #endif
+#ifdef SK_VULKAN
 #include <tools/window/VulkanWindowContext.h>
+#endif
+#ifdef SK_METAL
 #include <tools/window/MetalWindowContext.h>
+#endif
 #if defined(MACOSX)
 #include <postmac.h>
 #endif
diff --git a/vcl/skia/osx/gdiimpl.cxx b/vcl/skia/osx/gdiimpl.cxx
index d7c4194ae5d0..b5a1035bf592 100644
--- a/vcl/skia/osx/gdiimpl.cxx
+++ b/vcl/skia/osx/gdiimpl.cxx
@@ -23,11 +23,13 @@
 #include <skia/utils.hxx>
 #include <skia/zone.hxx>
 
-#include <tools/window/mac/WindowContextFactory_mac.h>
+//#include <tools/window/mac/WindowContextFactory_mac.h>
 
 #include <quartz/CoreTextFont.hxx>
 #include <quartz/SystemFontList.hxx>
 #include <skia/quartz/cgutils.h>
+#include <tools/window/mac/MacWindowInfo.h>
+#include <tools/window/mac/GaneshMetalWindowContext_mac.h>
 
 #include <SkBitmap.h>
 #include <SkCanvas.h>
@@ -86,7 +88,7 @@ void 
AquaSkiaSalGraphicsImpl::createWindowSurfaceInternal(bool forceRaster)
             mSurface = createSkSurface(GetWidth() * mScaling, GetHeight() * 
mScaling);
             break;
         case RenderMetal:
-            mWindowContext = skwindow::MakeMetalForMac(macWindow, 
displayParams);
+            mWindowContext = skwindow::MakeGaneshMetalForMac(macWindow, 
displayParams);
             // Like with other GPU contexts, create a proxy offscreen surface 
(see
             // flushSurfaceToWindowContext()). Here it's additionally needed 
because
             // it appears that Metal surfaces cannot be read from, which would 
break things
@@ -403,7 +405,7 @@ std::unique_ptr<skwindow::WindowContext> 
createMetalWindowContext(bool /*tempora
     skwindow::DisplayParams displayParams;
     skwindow::MacWindowInfo macWindow;
     macWindow.fMainView = nullptr;
-    return skwindow::MakeMetalForMac(macWindow, displayParams);
+    return skwindow::MakeGaneshMetalForMac(macWindow, displayParams);
 }
 }
 
diff --git a/vcl/skia/x11/gdiimpl.cxx b/vcl/skia/x11/gdiimpl.cxx
index 3f93c5da9c8f..4d15b6d5fd7a 100644
--- a/vcl/skia/x11/gdiimpl.cxx
+++ b/vcl/skia/x11/gdiimpl.cxx
@@ -18,7 +18,9 @@
 
 #include <skia/x11/gdiimpl.hxx>
 
-#include <tools/window/unix/WindowContextFactory_unix.h>
+#include <tools/window/unix/RasterWindowContext_unix.h>
+#include <tools/window/unix/GaneshVulkanWindowContext_unix.h>
+#include <tools/window/unix/XlibWindowInfo.h>
 
 #include <skia/utils.hxx>
 #include <skia/zone.hxx>
@@ -112,7 +114,7 @@ X11SkiaSalGraphicsImpl::createWindowContext(Display* 
display, Drawable drawable,
                                                         : 
kRGBA_8888_SkColorType);
             return skwindow::MakeRasterForXlib(winInfo, displayParams);
         case RenderVulkan:
-            return skwindow::MakeVulkanForXlib(winInfo, displayParams);
+            return skwindow::MakeGaneshVulkanForXlib(winInfo, displayParams);
         case RenderMetal:
             abort();
             break;

Reply via email to