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

Commit 373c30a

Browse files
committed
move cull_rect and preroll transform into layer state stack
1 parent a9967ba commit 373c30a

File tree

67 files changed

+1107
-807
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1107
-807
lines changed

flow/embedded_view_params_unittests.cc

-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ TEST(EmbeddedViewParams, GetBoundingRectAfterMutationsWithRotation90) {
5656
EmbeddedViewParams params(matrix, SkSize::Make(1, 1), stack);
5757
const SkRect& rect = params.finalBoundingRect();
5858

59-
FML_DLOG(ERROR) << rect.x();
6059
ASSERT_TRUE(SkScalarNearlyEqual(rect.x(), -1));
6160
ASSERT_TRUE(SkScalarNearlyEqual(rect.y(), 0));
6261
ASSERT_TRUE(SkScalarNearlyEqual(rect.width(), 1));

flow/layers/backdrop_filter_layer.cc

+3-4
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,15 @@ void BackdropFilterLayer::Diff(DiffContext* context, const Layer* old_layer) {
3939
context->SetLayerPaintRegion(this, context->CurrentSubtreeRegion());
4040
}
4141

42-
void BackdropFilterLayer::Preroll(PrerollContext* context,
43-
const SkMatrix& matrix) {
42+
void BackdropFilterLayer::Preroll(PrerollContext* context) {
4443
Layer::AutoPrerollSaveLayerState save =
4544
Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_));
4645
if (context->view_embedder != nullptr) {
4746
context->view_embedder->PushFilterToVisitedPlatformViews(filter_);
4847
}
4948
SkRect child_paint_bounds = SkRect::MakeEmpty();
50-
PrerollChildren(context, matrix, &child_paint_bounds);
51-
child_paint_bounds.join(context->cull_rect);
49+
PrerollChildren(context, &child_paint_bounds);
50+
child_paint_bounds.join(context->state_stack.local_cull_rect());
5251
set_paint_bounds(child_paint_bounds);
5352
context->renderable_state_flags = SAVE_LAYER_RENDER_FLAGS;
5453
}

flow/layers/backdrop_filter_layer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class BackdropFilterLayer : public ContainerLayer {
1717

1818
void Diff(DiffContext* context, const Layer* old_layer) override;
1919

20-
void Preroll(PrerollContext* context, const SkMatrix& matrix) override;
20+
void Preroll(PrerollContext* context) override;
2121

2222
void Paint(PaintContext& context) const override;
2323

flow/layers/backdrop_filter_layer_unittests.cc

+18-11
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ TEST_F(BackdropFilterLayerTest, PaintingEmptyLayerDies) {
2828
auto parent = std::make_shared<ClipRectLayer>(kEmptyRect, Clip::hardEdge);
2929
parent->Add(layer);
3030

31-
parent->Preroll(preroll_context(), SkMatrix());
31+
parent->Preroll(preroll_context());
3232
EXPECT_EQ(layer->paint_bounds(), kEmptyRect);
3333
EXPECT_EQ(layer->child_paint_bounds(), kEmptyRect);
3434
EXPECT_FALSE(layer->needs_painting(paint_context()));
@@ -65,7 +65,8 @@ TEST_F(BackdropFilterLayerTest, EmptyFilter) {
6565
auto parent = std::make_shared<ClipRectLayer>(child_bounds, Clip::hardEdge);
6666
parent->Add(layer);
6767

68-
parent->Preroll(preroll_context(), initial_transform);
68+
preroll_context()->state_stack.set_initial_transform(initial_transform);
69+
parent->Preroll(preroll_context());
6970
EXPECT_EQ(layer->paint_bounds(), child_bounds);
7071
EXPECT_EQ(layer->child_paint_bounds(), child_bounds);
7172
EXPECT_TRUE(layer->needs_painting(paint_context()));
@@ -95,7 +96,8 @@ TEST_F(BackdropFilterLayerTest, SimpleFilter) {
9596
auto parent = std::make_shared<ClipRectLayer>(child_bounds, Clip::hardEdge);
9697
parent->Add(layer);
9798

98-
parent->Preroll(preroll_context(), initial_transform);
99+
preroll_context()->state_stack.set_initial_transform(initial_transform);
100+
parent->Preroll(preroll_context());
99101
EXPECT_EQ(layer->paint_bounds(), child_bounds);
100102
EXPECT_EQ(layer->child_paint_bounds(), child_bounds);
101103
EXPECT_TRUE(layer->needs_painting(paint_context()));
@@ -125,7 +127,8 @@ TEST_F(BackdropFilterLayerTest, NonSrcOverBlend) {
125127
auto parent = std::make_shared<ClipRectLayer>(child_bounds, Clip::hardEdge);
126128
parent->Add(layer);
127129

128-
parent->Preroll(preroll_context(), initial_transform);
130+
preroll_context()->state_stack.set_initial_transform(initial_transform);
131+
parent->Preroll(preroll_context());
129132
EXPECT_EQ(layer->paint_bounds(), child_bounds);
130133
EXPECT_EQ(layer->child_paint_bounds(), child_bounds);
131134
EXPECT_TRUE(layer->needs_painting(paint_context()));
@@ -166,7 +169,8 @@ TEST_F(BackdropFilterLayerTest, MultipleChildren) {
166169
std::make_shared<ClipRectLayer>(children_bounds, Clip::hardEdge);
167170
parent->Add(layer);
168171

169-
parent->Preroll(preroll_context(), initial_transform);
172+
preroll_context()->state_stack.set_initial_transform(initial_transform);
173+
parent->Preroll(preroll_context());
170174
EXPECT_EQ(mock_layer1->paint_bounds(), child_path1.getBounds());
171175
EXPECT_EQ(mock_layer2->paint_bounds(), child_path2.getBounds());
172176
EXPECT_EQ(layer->paint_bounds(), children_bounds);
@@ -215,7 +219,9 @@ TEST_F(BackdropFilterLayerTest, Nested) {
215219
std::make_shared<ClipRectLayer>(children_bounds, Clip::hardEdge);
216220
parent->Add(layer1);
217221

218-
parent->Preroll(preroll_context(), initial_transform);
222+
preroll_context()->state_stack.set_initial_transform(initial_transform);
223+
parent->Preroll(preroll_context());
224+
219225
EXPECT_EQ(mock_layer1->paint_bounds(), child_path1.getBounds());
220226
EXPECT_EQ(mock_layer2->paint_bounds(), child_path2.getBounds());
221227
EXPECT_EQ(layer1->paint_bounds(), children_bounds);
@@ -253,27 +259,28 @@ TEST_F(BackdropFilterLayerTest, Readback) {
253259
auto layer1 = std::make_shared<BackdropFilterLayer>(layer_filter.shared(),
254260
DlBlendMode::kSrcOver);
255261
preroll_context()->surface_needs_readback = false;
256-
layer1->Preroll(preroll_context(), initial_transform);
262+
preroll_context()->state_stack.set_initial_transform(initial_transform);
263+
layer1->Preroll(preroll_context());
257264
EXPECT_TRUE(preroll_context()->surface_needs_readback);
258265

259266
// BDF with no filter does not read from surface itself
260267
auto layer2 =
261268
std::make_shared<BackdropFilterLayer>(no_filter, DlBlendMode::kSrcOver);
262269
preroll_context()->surface_needs_readback = false;
263-
layer2->Preroll(preroll_context(), initial_transform);
270+
layer2->Preroll(preroll_context());
264271
EXPECT_FALSE(preroll_context()->surface_needs_readback);
265272

266273
// BDF with no filter does not block prior readback value
267274
preroll_context()->surface_needs_readback = true;
268-
layer2->Preroll(preroll_context(), initial_transform);
275+
layer2->Preroll(preroll_context());
269276
EXPECT_TRUE(preroll_context()->surface_needs_readback);
270277

271278
// BDF with no filter blocks child with readback
272279
auto mock_layer = std::make_shared<MockLayer>(SkPath(), SkPaint());
273280
mock_layer->set_fake_reads_surface(true);
274281
layer2->Add(mock_layer);
275282
preroll_context()->surface_needs_readback = false;
276-
layer2->Preroll(preroll_context(), initial_transform);
283+
layer2->Preroll(preroll_context());
277284
EXPECT_FALSE(preroll_context()->surface_needs_readback);
278285
}
279286

@@ -292,7 +299,7 @@ TEST_F(BackdropFilterLayerTest, OpacityInheritance) {
292299
parent->Add(layer);
293300
clip->Add(parent);
294301

295-
clip->Preroll(preroll_context(), SkMatrix::I());
302+
clip->Preroll(preroll_context());
296303

297304
clip->Paint(display_list_paint_context());
298305

0 commit comments

Comments
 (0)