external/skia/Library_skia.mk | 4 +- external/skia/UnpackedTarball_skia.mk | 1 external/skia/inc/pch/precompiled_skia.hxx | 11 ++++-- external/skia/pch-duplicate-definition.patch.1 | 41 +++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 5 deletions(-)
New commits: commit 6fa110f141cd5f264366c36f6472f7f2ede68fcd Author: Noel Grandin <[email protected]> AuthorDate: Fri Dec 19 10:30:45 2025 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Fri Dec 19 17:29:20 2025 +0100 re-enable PCH for skia now that our baseline requires Visual Studio 2022. Requires a single patch for a duplicate definition. Change-Id: I16cf2185e8d8d6f2b8a696c24c9897326d7de644 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195878 Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins 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/core/SkPath.h> #include <include/core/SkPathBuilder.h> #include <include/core/SkPathEffect.h> +#include <include/core/SkPathIter.h> #include <include/core/SkPathMeasure.h> #include <include/core/SkPathTypes.h> #include <include/core/SkPathUtils.h> @@ -196,11 +197,11 @@ #include <include/encode/SkEncoder.h> #include <include/encode/SkICC.h> #include <include/encode/SkPngEncoder.h> -#include <include/gpu/ganesh/GrDirectContext.h> #include <include/pathops/SkPathOps.h> #include <include/private/SkEncodedInfo.h> #include <include/private/SkExif.h> #include <include/private/SkGainmapInfo.h> +#include <include/private/SkHdrMetadata.h> #include <include/private/SkIDChangeListener.h> #include <include/private/SkPathRef.h> #include <include/private/SkSLSampleUsage.h> @@ -283,6 +284,7 @@ #include <src/base/SkUtils.h> #include <src/base/SkVx.h> #include <src/base/SkZip.h> +#include <src/capture/SkCaptureCanvas.h> #include <src/codec/SkAndroidCodecAdapter.h> #include <src/codec/SkBmpBaseCodec.h> #include <src/codec/SkBmpCodec.h> @@ -349,7 +351,6 @@ #include <src/core/SkDevice.h> #include <src/core/SkDistanceFieldGen.h> #include <src/core/SkDraw.h> -#include <src/core/SkDrawBase.h> #include <src/core/SkDrawProcs.h> #include <src/core/SkDrawShadowInfo.h> #include <src/core/SkDrawTypes.h> @@ -399,11 +400,13 @@ #include <src/core/SkOptsTargets.h> #include <src/core/SkPaintDefaults.h> #include <src/core/SkPaintPriv.h> +#include <src/core/SkPathData.h> #include <src/core/SkPathEffectBase.h> #include <src/core/SkPathEnums.h> #include <src/core/SkPathMakers.h> #include <src/core/SkPathMeasurePriv.h> #include <src/core/SkPathPriv.h> +#include <src/core/SkPathRaw.h> #include <src/core/SkPathRawShapes.h> #include <src/core/SkPictureData.h> #include <src/core/SkPictureFlat.h> @@ -443,6 +446,7 @@ #include <src/core/SkScalerContext.h> #include <src/core/SkScan.h> #include <src/core/SkScanPriv.h> +#include <src/core/SkSpanPriv.h> #include <src/core/SkSpecialImage.h> #include <src/core/SkSpriteBlitter.h> #include <src/core/SkStreamPriv.h> @@ -562,6 +566,7 @@ #include <src/utils/SkClipStackUtils.h> #include <src/utils/SkDashPathPriv.h> #include <src/utils/SkFloatToDecimal.h> +#include <src/utils/SkFloatUtils.h> #include <src/utils/SkJSONWriter.h> #include <src/utils/SkMatrix22.h> #include <src/utils/SkMultiPictureDocumentPriv.h> 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; + } + }
