Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 6c226a6

Browse files
committed
Merge branch 'main' of github.com:flutter/engine into more_tests_2_vertices
2 parents abe5a01 + fd9eb04 commit 6c226a6

31 files changed

+848
-396
lines changed

.github/workflows/third_party_scan.yml

+1
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,5 @@ jobs:
5252
permissions:
5353
# Needed to upload the SARIF results to code-scanning dashboard.
5454
security-events: write
55+
actions: read
5556
contents: read

DEPS

+8-8
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ vars = {
1414
'flutter_git': 'https://flutter.googlesource.com',
1515
'skia_git': 'https://skia.googlesource.com',
1616
'llvm_git': 'https://llvm.googlesource.com',
17-
'skia_revision': '5560041fcfc0139708e0b81eec6af51b4f276787',
17+
'skia_revision': '2b9bc16df969c29fef50e2f74adbeb6420718f7f',
1818

1919
# WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY
2020
# See `lib/web_ui/README.md` for how to roll CanvasKit to a new version.
@@ -56,7 +56,7 @@ vars = {
5656
# Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS
5757
# You can use //tools/dart/create_updated_flutter_deps.py to produce
5858
# updated revision list of existing dependencies.
59-
'dart_revision': 'cabe65966815c13c99bf964dacfa0782225edc42',
59+
'dart_revision': '51bbba0da7d3478cdd40581806f746219bb87102',
6060

6161
# WARNING: DO NOT EDIT MANUALLY
6262
# The lines between blank lines above and below are generated by a script. See create_updated_flutter_deps.py
@@ -65,13 +65,13 @@ vars = {
6565
'dart_boringssl_rev': 'd24a38200fef19150eef00cad35b138936c08767',
6666
'dart_browser_launcher_rev': '7348ceae6508e5350771979c2951a54313303416',
6767
'dart_clock_rev': '7cbf08e36a92f14f22132d255846610c1b065324',
68-
'dart_collection_rev': 'c90b19f07b48391f3b1b4c39dd06ef0177f8e07c',
68+
'dart_collection_rev': '9354f386de3c57f5486b01ab4dfa1a2f033307d9',
6969
'dart_devtools_rev': 'a53696352fe1508c18d908a85b68c113b11dbe58',
7070
'dart_libprotobuf_rev': '24487dd1045c7f3d64a21f38a3f0c06cc4cf2edb',
7171
'dart_perfetto_rev': '13ce0c9e13b0940d2476cd0cff2301708a9a2e2b',
7272
'dart_protobuf_gn_rev': 'ca669f79945418f6229e4fef89b666b2a88cbb10',
7373
'dart_protobuf_rev': 'ccf104dbc36929c0f8708285d5f3a8fae206343e',
74-
'dart_pub_rev': '9ab905a24e36ef339c99f73bfb6683874feed8ce',
74+
'dart_pub_rev': 'ddc1c2fd2e2a7cd94a0b92ea033961a25f4ad517',
7575
'dart_tools_rev': '4321aecf2cb618dceab5d90adf0cb2ef7207169c',
7676
'dart_watcher_rev': 'c00fc2a6cd869cdebbc52e00af3d912d25745729',
7777
'dart_web_rev': '2fe754fb396cb9b87010f0318cfbfc5408346c48',
@@ -401,13 +401,13 @@ deps = {
401401
Var('dart_git') + '/html.git@3bc803d7e655491b243418f19300ef0c6112bcea',
402402

403403
'src/flutter/third_party/dart/third_party/pkg/http':
404-
Var('dart_git') + '/http.git@e2e217052e033183f7fc8ae10be124ac3ebe5a3d',
404+
Var('dart_git') + '/http.git@8c325b9ca33d878a86d69c5048a8e6e18379663c',
405405

406406
'src/flutter/third_party/dart/third_party/pkg/http_multi_server':
407407
Var('dart_git') + '/http_multi_server.git@25941e260658efb324de857e6022f418faf9bdd1',
408408

409409
'src/flutter/third_party/dart/third_party/pkg/http_parser':
410-
Var('dart_git') + '/http_parser.git@53d40416ab5ef41d4605004dde1e43d1d44fd215',
410+
Var('dart_git') + '/http_parser.git@71b4c2c448b333397d5ff3235825d8cea773291c',
411411

412412
'src/flutter/third_party/dart/third_party/pkg/intl':
413413
Var('dart_git') + '/intl.git@5d65e3808ce40e6282e40881492607df4e35669f',
@@ -479,7 +479,7 @@ deps = {
479479
Var('dart_git') + '/string_scanner.git@7b37c1b3d1ca6b581792e6ba385f651573af4a45',
480480

481481
'src/flutter/third_party/dart/third_party/pkg/tar':
482-
Var('dart_git') + '/external/github.com/simolus3/tar.git@b62573f39a4de28f69d9ed82b02fbd96b12b9633',
482+
Var('dart_git') + '/external/github.com/simolus3/tar.git@552a49d7595e444184d4f91e9afd533aa253a31d',
483483

484484
'src/flutter/third_party/dart/third_party/pkg/term_glyph':
485485
Var('dart_git') + '/term_glyph.git@c86e8171ee7e9f6fc8e775e0be755a603dd0b72d',
@@ -979,7 +979,7 @@ deps = {
979979
'packages': [
980980
{
981981
'package': 'fuchsia/sdk/core/linux-amd64',
982-
'version': 'BkYg1UB1jdbAZv3gAk39V5RlbueLlxsDv3i9Dvq1EgwC'
982+
'version': 'TwoeJy5Tn0ARHF5O4GvW8ZLsRVqd4VMBVxC8JnjmXUwC'
983983
}
984984
],
985985
'condition': 'download_fuchsia_deps and not download_fuchsia_sdk',

ci/builders/linux_web_engine.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -1131,7 +1131,7 @@
11311131
"recipe": "engine_v2/tester_engine",
11321132
"drone_dimensions": [
11331133
"device_type=none",
1134-
"os=Mac-13",
1134+
"os=Mac-13|Mac-14",
11351135
"cpu=arm64"
11361136
],
11371137
"gclient_variables": {
@@ -1164,7 +1164,7 @@
11641164
"recipe": "engine_v2/tester_engine",
11651165
"drone_dimensions": [
11661166
"device_type=none",
1167-
"os=Mac-13",
1167+
"os=Mac-13|Mac-14",
11681168
"cpu=arm64"
11691169
],
11701170
"gclient_variables": {
@@ -1197,7 +1197,7 @@
11971197
"recipe": "engine_v2/tester_engine",
11981198
"drone_dimensions": [
11991199
"device_type=none",
1200-
"os=Mac-13",
1200+
"os=Mac-13|Mac-14",
12011201
"cpu=arm64"
12021202
],
12031203
"gclient_variables": {
@@ -1230,7 +1230,7 @@
12301230
"recipe": "engine_v2/tester_engine",
12311231
"drone_dimensions": [
12321232
"device_type=none",
1233-
"os=Mac-13",
1233+
"os=Mac-13|Mac-14",
12341234
"cpu=arm64"
12351235
],
12361236
"gclient_variables": {
@@ -1263,7 +1263,7 @@
12631263
"recipe": "engine_v2/tester_engine",
12641264
"drone_dimensions": [
12651265
"device_type=none",
1266-
"os=Mac-13",
1266+
"os=Mac-13|Mac-14",
12671267
"cpu=arm64"
12681268
],
12691269
"gclient_variables": {
@@ -1296,7 +1296,7 @@
12961296
"recipe": "engine_v2/tester_engine",
12971297
"drone_dimensions": [
12981298
"device_type=none",
1299-
"os=Mac-13",
1299+
"os=Mac-13|Mac-14",
13001300
"cpu=arm64"
13011301
],
13021302
"gclient_variables": {

ci/licenses_golden/excluded_files

+2
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,13 @@
140140
../../../flutter/impeller/compiler/shader_bundle_unittests.cc
141141
../../../flutter/impeller/compiler/switches_unittests.cc
142142
../../../flutter/impeller/core/allocator_unittests.cc
143+
../../../flutter/impeller/display_list/aiks_dl_atlas_unittests.cc
143144
../../../flutter/impeller/display_list/aiks_dl_clip_unittests.cc
144145
../../../flutter/impeller/display_list/aiks_dl_gradient_unittests.cc
145146
../../../flutter/impeller/display_list/aiks_dl_opacity_unittests.cc
146147
../../../flutter/impeller/display_list/aiks_dl_path_unittests.cc
147148
../../../flutter/impeller/display_list/aiks_dl_vertices_unittests.cc
149+
../../../flutter/impeller/display_list/dl_golden_blur_unittests.cc
148150
../../../flutter/impeller/display_list/dl_golden_unittests.cc
149151
../../../flutter/impeller/display_list/dl_golden_unittests.h
150152
../../../flutter/impeller/display_list/dl_unittests.cc

ci/licenses_golden/licenses_dart

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Signature: 61bc7e830d6adeb094fecdf2df51800f
1+
Signature: fe9c7ad333b709c0bee5e86ed402b9e1
22

33
====================================================================================================
44
LIBRARY: dart
@@ -3035,7 +3035,6 @@ ORIGIN: ../../../flutter/third_party/dart/sdk/lib/_internal/js_runtime/lib/insta
30353035
ORIGIN: ../../../flutter/third_party/dart/sdk/lib/js/_js.dart + ../../../flutter/third_party/dart/LICENSE
30363036
ORIGIN: ../../../flutter/third_party/dart/sdk/lib/js/_js_client.dart + ../../../flutter/third_party/dart/LICENSE
30373037
ORIGIN: ../../../flutter/third_party/dart/sdk/lib/js/_js_server.dart + ../../../flutter/third_party/dart/LICENSE
3038-
ORIGIN: ../../../flutter/third_party/dart/sdk/lib/typed_data/unmodifiable_typed_data.dart + ../../../flutter/third_party/dart/LICENSE
30393038
TYPE: LicenseType.bsd
30403039
FILE: ../../../flutter/third_party/dart/runtime/bin/crashpad.h
30413040
FILE: ../../../flutter/third_party/dart/runtime/bin/dart_embedder_api_impl.cc
@@ -3083,7 +3082,6 @@ FILE: ../../../flutter/third_party/dart/sdk/lib/_internal/js_runtime/lib/instant
30833082
FILE: ../../../flutter/third_party/dart/sdk/lib/js/_js.dart
30843083
FILE: ../../../flutter/third_party/dart/sdk/lib/js/_js_client.dart
30853084
FILE: ../../../flutter/third_party/dart/sdk/lib/js/_js_server.dart
3086-
FILE: ../../../flutter/third_party/dart/sdk/lib/typed_data/unmodifiable_typed_data.dart
30873085
----------------------------------------------------------------------------------------------------
30883086
Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
30893087
for details. All rights reserved.
@@ -4751,7 +4749,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
47514749
This Source Code Form is "Incompatible With Secondary Licenses", as
47524750
defined by the Mozilla Public License, v. 2.0.
47534751

4754-
You may obtain a copy of this library's Source Code Form from: https://dart.googlesource.com/sdk/+/115a9a2b26cde755c7d25bcc5860102552f4700a
4752+
You may obtain a copy of this library's Source Code Form from: https://dart.googlesource.com/sdk/+/1ce6b4d5424720272fc2919932544205449a96bd
47554753
/third_party/fallback_root_certificates/
47564754

47574755
====================================================================================================

ci/licenses_golden/licenses_fuchsia

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Signature: 3c75a1f52a73ade2338a1e98aede7f28
1+
Signature: e2bfaae4602142806eacd16e3bad6ece
22

33
====================================================================================================
44
LIBRARY: fuchsia_sdk

ci/licenses_golden/licenses_skia

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Signature: 96343840801f63809f765861fbbf6246
1+
Signature: fddbe44d50e7b05138eacc0b1e8913b2
22

33
====================================================================================================
44
LIBRARY: etc1
@@ -9446,7 +9446,6 @@ ORIGIN: ../../../flutter/third_party/skia/src/codec/SkJpegMetadataDecoderImpl.cp
94469446
ORIGIN: ../../../flutter/third_party/skia/src/codec/SkJpegMetadataDecoderImpl.h + ../../../flutter/third_party/skia/LICENSE
94479447
ORIGIN: ../../../flutter/third_party/skia/src/core/SkFontScanner.h + ../../../flutter/third_party/skia/LICENSE
94489448
ORIGIN: ../../../flutter/third_party/skia/src/ports/SkFontMgr_fontations_empty.cpp + ../../../flutter/third_party/skia/LICENSE
9449-
ORIGIN: ../../../flutter/third_party/skia/src/ports/SkFontMgr_fontations_empty.h + ../../../flutter/third_party/skia/LICENSE
94509449
ORIGIN: ../../../flutter/third_party/skia/src/sfnt/SkOTTable_sbix.h + ../../../flutter/third_party/skia/LICENSE
94519450
TYPE: LicenseType.bsd
94529451
FILE: ../../../flutter/third_party/skia/include/ports/SkFontMgr_Fontations.h
@@ -9462,7 +9461,6 @@ FILE: ../../../flutter/third_party/skia/src/codec/SkJpegMetadataDecoderImpl.cpp
94629461
FILE: ../../../flutter/third_party/skia/src/codec/SkJpegMetadataDecoderImpl.h
94639462
FILE: ../../../flutter/third_party/skia/src/core/SkFontScanner.h
94649463
FILE: ../../../flutter/third_party/skia/src/ports/SkFontMgr_fontations_empty.cpp
9465-
FILE: ../../../flutter/third_party/skia/src/ports/SkFontMgr_fontations_empty.h
94669464
FILE: ../../../flutter/third_party/skia/src/sfnt/SkOTTable_sbix.h
94679465
----------------------------------------------------------------------------------------------------
94689466
Copyright 2024 Google Inc.

impeller/aiks/aiks_unittests.cc

-96
Original file line numberDiff line numberDiff line change
@@ -2232,70 +2232,6 @@ TEST_P(AiksTest, CanDrawPoints) {
22322232
ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture()));
22332233
}
22342234

2235-
// Regression test for https://github.com/flutter/flutter/issues/127374.
2236-
TEST_P(AiksTest, DrawAtlasWithColorAdvancedAndTransform) {
2237-
// Draws the image as four squares stiched together.
2238-
auto atlas = CreateTextureForFixture("bay_bridge.jpg");
2239-
auto size = atlas->GetSize();
2240-
auto image = std::make_shared<Image>(atlas);
2241-
// Divide image into four quadrants.
2242-
Scalar half_width = size.width / 2;
2243-
Scalar half_height = size.height / 2;
2244-
std::vector<Rect> texture_coordinates = {
2245-
Rect::MakeLTRB(0, 0, half_width, half_height),
2246-
Rect::MakeLTRB(half_width, 0, size.width, half_height),
2247-
Rect::MakeLTRB(0, half_height, half_width, size.height),
2248-
Rect::MakeLTRB(half_width, half_height, size.width, size.height)};
2249-
// Position quadrants adjacent to eachother.
2250-
std::vector<Matrix> transforms = {
2251-
Matrix::MakeTranslation({0, 0, 0}),
2252-
Matrix::MakeTranslation({half_width, 0, 0}),
2253-
Matrix::MakeTranslation({0, half_height, 0}),
2254-
Matrix::MakeTranslation({half_width, half_height, 0})};
2255-
std::vector<Color> colors = {Color::Red(), Color::Green(), Color::Blue(),
2256-
Color::Yellow()};
2257-
2258-
Paint paint;
2259-
2260-
Canvas canvas;
2261-
canvas.Scale({0.25, 0.25, 1.0});
2262-
canvas.DrawAtlas(image, transforms, texture_coordinates, colors,
2263-
BlendMode::kModulate, {}, std::nullopt, paint);
2264-
2265-
ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture()));
2266-
}
2267-
2268-
// Regression test for https://github.com/flutter/flutter/issues/127374.
2269-
TEST_P(AiksTest, DrawAtlasAdvancedAndTransform) {
2270-
// Draws the image as four squares stiched together.
2271-
auto atlas = CreateTextureForFixture("bay_bridge.jpg");
2272-
auto size = atlas->GetSize();
2273-
auto image = std::make_shared<Image>(atlas);
2274-
// Divide image into four quadrants.
2275-
Scalar half_width = size.width / 2;
2276-
Scalar half_height = size.height / 2;
2277-
std::vector<Rect> texture_coordinates = {
2278-
Rect::MakeLTRB(0, 0, half_width, half_height),
2279-
Rect::MakeLTRB(half_width, 0, size.width, half_height),
2280-
Rect::MakeLTRB(0, half_height, half_width, size.height),
2281-
Rect::MakeLTRB(half_width, half_height, size.width, size.height)};
2282-
// Position quadrants adjacent to eachother.
2283-
std::vector<Matrix> transforms = {
2284-
Matrix::MakeTranslation({0, 0, 0}),
2285-
Matrix::MakeTranslation({half_width, 0, 0}),
2286-
Matrix::MakeTranslation({0, half_height, 0}),
2287-
Matrix::MakeTranslation({half_width, half_height, 0})};
2288-
2289-
Paint paint;
2290-
2291-
Canvas canvas;
2292-
canvas.Scale({0.25, 0.25, 1.0});
2293-
canvas.DrawAtlas(image, transforms, texture_coordinates, {},
2294-
BlendMode::kModulate, {}, std::nullopt, paint);
2295-
2296-
ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture()));
2297-
}
2298-
22992235
TEST_P(AiksTest, CanDrawPointsWithTextureMap) {
23002236
auto texture = CreateTextureForFixture("table_mountain_nx.png",
23012237
/*enable_mipmapping=*/true);
@@ -2860,38 +2796,6 @@ TEST_P(AiksTest, MipmapGenerationWorksCorrectly) {
28602796
ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture()));
28612797
}
28622798

2863-
TEST_P(AiksTest, DrawAtlasPlusWideGamut) {
2864-
EXPECT_EQ(GetContext()->GetCapabilities()->GetDefaultColorFormat(),
2865-
PixelFormat::kB10G10R10A10XR);
2866-
2867-
// Draws the image as four squares stiched together.
2868-
auto atlas =
2869-
std::make_shared<Image>(CreateTextureForFixture("bay_bridge.jpg"));
2870-
auto size = atlas->GetSize();
2871-
// Divide image into four quadrants.
2872-
Scalar half_width = size.width / 2;
2873-
Scalar half_height = size.height / 2;
2874-
std::vector<Rect> texture_coordinates = {
2875-
Rect::MakeLTRB(0, 0, half_width, half_height),
2876-
Rect::MakeLTRB(half_width, 0, size.width, half_height),
2877-
Rect::MakeLTRB(0, half_height, half_width, size.height),
2878-
Rect::MakeLTRB(half_width, half_height, size.width, size.height)};
2879-
// Position quadrants adjacent to eachother.
2880-
std::vector<Matrix> transforms = {
2881-
Matrix::MakeTranslation({0, 0, 0}),
2882-
Matrix::MakeTranslation({half_width, 0, 0}),
2883-
Matrix::MakeTranslation({0, half_height, 0}),
2884-
Matrix::MakeTranslation({half_width, half_height, 0})};
2885-
std::vector<Color> colors = {Color::Red(), Color::Green(), Color::Blue(),
2886-
Color::Yellow()};
2887-
2888-
Canvas canvas;
2889-
canvas.DrawAtlas(atlas, transforms, texture_coordinates, colors,
2890-
BlendMode::kPlus, {}, std::nullopt, {});
2891-
2892-
ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture()));
2893-
}
2894-
28952799
// https://github.com/flutter/flutter/issues/146648
28962800
TEST_P(AiksTest, StrokedPathWithMoveToThenCloseDrawnCorrectly) {
28972801
Path path = PathBuilder{}

impeller/aiks/canvas.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -909,8 +909,8 @@ void Canvas::DrawTextFrame(const std::shared_ptr<TextFrame>& text_frame,
909909
// needs to be reworked in order to interact correctly with
910910
// mask filters.
911911
// https://github.com/flutter/flutter/issues/133297
912-
entity.SetContents(
913-
paint.WithFilters(paint.WithMaskBlur(std::move(text_contents), true)));
912+
entity.SetContents(paint.WithFilters(paint.WithMaskBlur(
913+
std::move(text_contents), true, GetCurrentTransform())));
914914

915915
AddRenderEntityToCurrentPass(std::move(entity));
916916
}

impeller/aiks/experimental_canvas.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,8 @@ void ExperimentalCanvas::DrawTextFrame(
409409
// needs to be reworked in order to interact correctly with
410410
// mask filters.
411411
// https://github.com/flutter/flutter/issues/133297
412-
entity.SetContents(
413-
paint.WithFilters(paint.WithMaskBlur(std::move(text_contents), true)));
412+
entity.SetContents(paint.WithFilters(paint.WithMaskBlur(
413+
std::move(text_contents), true, GetCurrentTransform())));
414414

415415
AddRenderEntityToCurrentPass(std::move(entity), false);
416416
}

impeller/aiks/paint.cc

+13-5
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,11 @@ std::shared_ptr<Contents> Paint::WithFiltersForSubpassTarget(
7878
}
7979

8080
std::shared_ptr<Contents> Paint::WithMaskBlur(std::shared_ptr<Contents> input,
81-
bool is_solid_color) const {
81+
bool is_solid_color,
82+
const Matrix& ctm) const {
8283
if (mask_blur_descriptor.has_value()) {
8384
input = mask_blur_descriptor->CreateMaskBlur(FilterInput::Make(input),
84-
is_solid_color);
85+
is_solid_color, ctm);
8586
}
8687
return input;
8788
}
@@ -203,12 +204,19 @@ std::shared_ptr<FilterContents> Paint::MaskBlurDescriptor::CreateMaskBlur(
203204

204205
std::shared_ptr<FilterContents> Paint::MaskBlurDescriptor::CreateMaskBlur(
205206
const FilterInput::Ref& input,
206-
bool is_solid_color) const {
207+
bool is_solid_color,
208+
const Matrix& ctm) const {
209+
Vector2 blur_sigma(sigma.sigma, sigma.sigma);
210+
if (!respect_ctm) {
211+
blur_sigma /= Vector2(ctm.GetBasisX().Length(), ctm.GetBasisY().Length());
212+
}
207213
if (is_solid_color) {
208-
return FilterContents::MakeGaussianBlur(input, sigma, sigma,
214+
return FilterContents::MakeGaussianBlur(input, Sigma(blur_sigma.x),
215+
Sigma(blur_sigma.y),
209216
Entity::TileMode::kDecal, style);
210217
}
211-
return FilterContents::MakeBorderMaskBlur(input, sigma, sigma, style);
218+
return FilterContents::MakeBorderMaskBlur(input, Sigma(blur_sigma.x),
219+
Sigma(blur_sigma.y), style);
212220
}
213221

214222
std::shared_ptr<ColorFilter> Paint::GetColorFilter() const {

impeller/aiks/paint.h

+7-2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ struct Paint {
4848
struct MaskBlurDescriptor {
4949
FilterContents::BlurStyle style;
5050
Sigma sigma;
51+
/// Text mask blurs need to not apply the CTM to the blur kernel.
52+
/// See: https://github.com/flutter/flutter/issues/115112
53+
bool respect_ctm = true;
5154

5255
std::shared_ptr<FilterContents> CreateMaskBlur(
5356
std::shared_ptr<ColorSourceContents> color_source_contents,
@@ -58,7 +61,8 @@ struct Paint {
5861

5962
std::shared_ptr<FilterContents> CreateMaskBlur(
6063
const FilterInput::Ref& input,
61-
bool is_solid_color) const;
64+
bool is_solid_color,
65+
const Matrix& ctm) const;
6266
};
6367

6468
Color color = Color::Black();
@@ -104,7 +108,8 @@ struct Paint {
104108
bool HasColorFilter() const;
105109

106110
std::shared_ptr<Contents> WithMaskBlur(std::shared_ptr<Contents> input,
107-
bool is_solid_color) const;
111+
bool is_solid_color,
112+
const Matrix& ctm) const;
108113

109114
std::shared_ptr<FilterContents> WithImageFilter(
110115
const FilterInput::Variant& input,

0 commit comments

Comments
 (0)