summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolan.mcnamara@collabora.com>2023-11-29 16:17:44 +0000
committerAndras Timar <andras.timar@collabora.com>2023-12-03 18:55:35 +0100
commitcefe4ca0cd0641c60d7ceb33af7f1b8e1b46c6cb (patch)
tree1dbfebc47b2f8d1964413ebebd839ef80b81a586
parent00071c7a4084763108747b26f951ddbe6b19e3ec (diff)
backport skia "Avoid combining extremely large meshes" fix
Change-Id: Iaedd03ba4014b133bc28a4b0a6a7b6aaaaa39a97 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160116 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.134
-rw-r--r--external/skia/UnpackedTarball_skia.mk1
2 files changed, 35 insertions, 0 deletions
diff --git a/external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 b/external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.1
new file mode 100644
index 000000000000..ca58048a75f0
--- /dev/null
+++ b/external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.1
@@ -0,0 +1,34 @@
+From 6169a1fabae1743709bc9641ad43fcbb6a4f62e1 Mon Sep 17 00:00:00 2001
+From: John Stiles <johnstiles@google.com>
+Date: Fri, 24 Nov 2023 09:40:11 -0500
+Subject: [PATCH] Avoid combining extremely large meshes.
+
+Bug: chromium:1505053
+Change-Id: I42f2ff872bbf054686ec7af0cc85ff63055fcfbf
+Reviewed-on: https://skia-review.googlesource.com/c/skia/+/782936
+Commit-Queue: Michael Ludwig <michaelludwig@google.com>
+Reviewed-by: Michael Ludwig <michaelludwig@google.com>
+Auto-Submit: John Stiles <johnstiles@google.com>
+---
+ src/gpu/ganesh/ops/DrawMeshOp.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/gpu/ganesh/ops/DrawMeshOp.cpp b/src/gpu/ganesh/ops/DrawMeshOp.cpp
+index d827009b993..eed2757579e 100644
+--- a/src/gpu/ganesh/ops/DrawMeshOp.cpp
++++ b/src/gpu/ganesh/ops/DrawMeshOp.cpp
+@@ -1178,10 +1178,13 @@ GrOp::CombineResult MeshOp::onCombineIfPossible(GrOp* t, SkArenaAlloc*, const Gr
+ return CombineResult::kCannotCombine;
+ }
+
++ if (fVertexCount > INT32_MAX - that->fVertexCount) {
++ return CombineResult::kCannotCombine;
++ }
+ if (SkToBool(fIndexCount) != SkToBool(that->fIndexCount)) {
+ return CombineResult::kCannotCombine;
+ }
+- if (SkToBool(fIndexCount) && fVertexCount + that->fVertexCount > SkToInt(UINT16_MAX)) {
++ if (SkToBool(fIndexCount) && fVertexCount > UINT16_MAX - that->fVertexCount) {
+ return CombineResult::kCannotCombine;
+ }
+
diff --git a/external/skia/UnpackedTarball_skia.mk b/external/skia/UnpackedTarball_skia.mk
index f5c199aff4e4..ccd198aa188a 100644
--- a/external/skia/UnpackedTarball_skia.mk
+++ b/external/skia/UnpackedTarball_skia.mk
@@ -41,6 +41,7 @@ skia_patches := \
constexpr-template.patch.0 \
missing-include.patch.0 \
tdf147342.patch.0 \
+ 0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 \
$(eval $(call gb_UnpackedTarball_set_patchlevel,skia,1))