diff --git a/external/skia/Library_skia.mk b/external/skia/Library_skia.mk index 765d178bf5ca..d7a22f477677 100644 --- a/external/skia/Library_skia.mk +++ b/external/skia/Library_skia.mk @@ -14,8 +14,7 @@ $(eval $(call gb_Library_set_warnings_disabled,skia)) $(eval $(call gb_Library_use_unpacked,skia,skia)) $(eval $(call gb_Library_use_clang,skia)) -#This currently results in all sorts of compile complaints -#$(eval $(call gb_Library_set_clang_precompiled_header,skia,external/skia/inc/pch/precompiled_skia)) +$(eval $(call gb_Library_set_clang_precompiled_header,skia,external/skia/inc/pch/precompiled_skia)) $(eval $(call gb_Library_add_defs,skia,\ -DSKIA_IMPLEMENTATION=1 \ @@ -126,6 +125,7 @@ $(eval $(call gb_Library_set_include,skia,\ $$(INCLUDE) \ -I$(gb_UnpackedTarball_workdir)/skia \ -I$(gb_UnpackedTarball_workdir)/skia/modules/skcms/ \ + -I$(gb_UnpackedTarball_workdir)/skia/modules/skcms/src/ \ -I$(gb_UnpackedTarball_workdir)/skia/third_party/vulkanmemoryallocator/ \ -I$(gb_UnpackedTarball_workdir)/skia/third_party/vulkanmemoryallocator/include/ \ -I$(gb_UnpackedTarball_workdir)/skia/src/gpu/vk/vulkanmemoryallocator/ \ diff --git a/external/skia/UnpackedTarball_skia.mk b/external/skia/UnpackedTarball_skia.mk index 692eba0130e5..42887c693080 100644 --- a/external/skia/UnpackedTarball_skia.mk +++ b/external/skia/UnpackedTarball_skia.mk @@ -44,6 +44,7 @@ skia_patches := \ 0004-loong64-Fix-the-remaining-implicit-vector-casts.patch \ msvc-unknown-attributes.patch.1 \ fix-semaphore-include.patch.1 \ + pch-duplicate-definition.patch.1 \ ifneq ($(MSYSTEM),) # use binary flag so patch from git-bash won't choke on mixed line-endings in patches diff --git a/external/skia/inc/pch/precompiled_skia.hxx b/external/skia/inc/pch/precompiled_skia.hxx index 88a4a7035db5..e23733232886 100644 --- a/external/skia/inc/pch/precompiled_skia.hxx +++ b/external/skia/inc/pch/precompiled_skia.hxx @@ -13,7 +13,7 @@ manual changes will be rewritten by the next run of update_pch.sh (which presumably also fixes all possible problems, so it's usually better to use it). - Generated on 2025-09-30 11:36:30 using: + Generated on 2025-12-19 10:17:21 using: ./bin/update_pch external/skia skia --cutoff=1 --exclude:system --include:module --include:local If after updating build fails, use the following command to locate conflicting headers: @@ -137,6 +137,7 @@ #include #include #include +#include #include #include #include @@ -196,11 +197,11 @@ #include #include #include -#include #include #include #include #include +#include #include #include #include @@ -283,6 +284,7 @@ #include #include #include +#include #include #include #include @@ -349,7 +351,6 @@ #include #include #include -#include #include #include #include @@ -399,11 +400,13 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -443,6 +446,7 @@ #include #include #include +#include #include #include #include @@ -562,6 +566,7 @@ #include #include #include +#include #include #include #include diff --git a/external/skia/pch-duplicate-definition.patch.1 b/external/skia/pch-duplicate-definition.patch.1 new file mode 100644 index 000000000000..f11dac4c094a --- /dev/null +++ b/external/skia/pch-duplicate-definition.patch.1 @@ -0,0 +1,41 @@ +diff -ur skia.org/src/base/SkCubics.cpp skia/src/base/SkCubics.cpp +--- skia.org/src/base/SkCubics.cpp 2025-12-19 10:21:59.576434800 +0200 ++++ skia/src/base/SkCubics.cpp 2025-12-19 10:25:13.020232200 +0200 +@@ -148,7 +148,7 @@ + return foundRoots; + } + +-static bool approximately_zero(double x) { ++bool lcl_approximately_zero(double x) { + // This cutoff for our binary search hopefully strikes a good balance between + // performance and accuracy. + return std::abs(x) < 0.00000001; +@@ -174,7 +174,7 @@ + static double binary_search(double A, double B, double C, double D, double start, double stop) { + SkASSERT(start <= stop); + double left = SkCubics::EvalAt(A, B, C, D, start); +- if (approximately_zero(left)) { ++ if (lcl_approximately_zero(left)) { + return start; + } + double right = SkCubics::EvalAt(A, B, C, D, stop); +@@ -189,7 +189,7 @@ + for (int i = 0; i < maxIterations; i++) { + double step = (start + stop) / 2; + double curr = SkCubics::EvalAt(A, B, C, D, step); +- if (approximately_zero(curr)) { ++ if (lcl_approximately_zero(curr)) { + return step; + } + if ((curr < 0 && left < 0) || (curr > 0 && left > 0)) { +@@ -229,8 +229,8 @@ + double root = binary_search(A, B, C, D, regions[startIndex], regions[startIndex + 1]); + if (root >= 0) { + // Check for duplicates +- if ((foundRoots < 1 || !approximately_zero(solution[0] - root)) && +- (foundRoots < 2 || !approximately_zero(solution[1] - root))) { ++ if ((foundRoots < 1 || !lcl_approximately_zero(solution[0] - root)) && ++ (foundRoots < 2 || !lcl_approximately_zero(solution[1] - root))) { + solution[foundRoots++] = root; + } + }