Skip to content

Commit cafe2e5

Browse files
author
jonahwilliams
committed
[Impeller] fix mask filter application to Vertices.
1 parent f79452e commit cafe2e5

4 files changed

Lines changed: 26 additions & 1 deletion

File tree

‎engine/src/flutter/impeller/display_list/aiks_dl_vertices_unittests.cc‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "display_list/dl_sampling_options.h"
66
#include "display_list/dl_tile_mode.h"
77
#include "display_list/dl_vertices.h"
8+
#include "display_list/effects/dl_mask_filter.h"
89
#include "flutter/impeller/display_list/aiks_unittests.h"
910

1011
#include "flutter/display_list/dl_blend_mode.h"
@@ -550,5 +551,23 @@ TEST_P(AiksTest,
550551
ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
551552
}
552553

554+
// Regression test for https://github.com/flutter/flutter/issues/170480 .
555+
TEST_P(AiksTest, VerticesGeometryWithMaskFilter) {
556+
DisplayListBuilder builder;
557+
DlPaint paint;
558+
paint.setMaskFilter(DlBlurMaskFilter::Make(DlBlurStyle::kNormal, 10));
559+
560+
std::vector<DlPoint> vertex_coordinates = {
561+
DlPoint(0, 0),
562+
DlPoint(400, 0),
563+
DlPoint(0, 400),
564+
};
565+
auto vertices = MakeVertices(DlVertexMode::kTriangleStrip, vertex_coordinates,
566+
{0, 1, 2}, {}, {});
567+
568+
builder.DrawVertices(vertices, DlBlendMode::kSrcOver, paint);
569+
ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
570+
}
571+
553572
} // namespace testing
554573
} // namespace impeller

‎engine/src/flutter/impeller/display_list/canvas.cc‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include "display_list/effects/dl_color_filter.h"
1515
#include "display_list/effects/dl_color_source.h"
1616
#include "display_list/effects/dl_image_filter.h"
17-
#include "display_list/geometry/dl_path_builder.h"
1817
#include "display_list/image/dl_image.h"
1918
#include "flutter/fml/logging.h"
2019
#include "flutter/fml/trace_event.h"

‎engine/src/flutter/impeller/display_list/dl_vertices_geometry.cc‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,8 @@ bool DlVerticesGeometry::MaybePerformIndexNormalization(
221221
return false;
222222
}
223223

224+
bool DlVerticesGeometry::CanApplyMaskFilter() const {
225+
return false;
226+
}
227+
224228
} // namespace impeller

‎engine/src/flutter/impeller/display_list/dl_vertices_geometry.h‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ class DlVerticesGeometry final : public VerticesGeometry {
3737

3838
bool HasTextureCoordinates() const override;
3939

40+
// |Geometry|
41+
bool CanApplyMaskFilter() const override;
42+
4043
std::optional<Rect> GetTextureCoordinateCoverage() const override;
4144

4245
private:

0 commit comments

Comments
 (0)