Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1433)

Unified Diff: cc/resources/picture_pile_unittest.cc

Issue 657913002: cc: Correct expansion of invalidation for tiles outside of interest rect (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« cc/resources/picture_pile.cc ('K') | « cc/resources/picture_pile.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/picture_pile_unittest.cc
diff --git a/cc/resources/picture_pile_unittest.cc b/cc/resources/picture_pile_unittest.cc
index 8d798d9792fa7ed2f0ebd79296aa3662d9dfc4ba..de3845f12042c209e14d9c639485372d6925608e 100644
--- a/cc/resources/picture_pile_unittest.cc
+++ b/cc/resources/picture_pile_unittest.cc
@@ -99,6 +99,58 @@ class PicturePileTest : public PicturePileTestBase, public testing::Test {
virtual void SetUp() override { InitializeData(); }
};
+TEST_F(PicturePileTest, InvalidationOnTileBorderOutsideInterestRect) {
+ // Don't expand the interest rect past what we invalidate.
+ pile_->SetPixelRecordDistanceForTesting(0);
+
+ gfx::Size tile_size(100, 100);
+ pile_->tiling().SetMaxTextureSize(tile_size);
+
+ gfx::Size pile_size(400, 400);
+ SetTilingSize(pile_size);
+
+ // We have multiple tiles.
vmpstr 2014/10/15 19:00:20 Can you explain in the comment why 5 not 4?
danakj 2014/10/15 19:06:27 Cuz borders :D I could just > 1 instead.. maybe th
+ EXPECT_EQ(5, pile_->tiling().num_tiles_x());
+ EXPECT_EQ(5, pile_->tiling().num_tiles_y());
+
+ // Record everything.
+ Region invalidation(tiling_rect());
+ UpdateAndExpandInvalidation(&invalidation, tiling_size(), tiling_rect());
+
+ // The interest rect will be entirely inside 1,0 and not touch the border of
+ // 1,1.
+ gfx::Rect interest_rect(
+ pile_->tiling().TilePositionX(1) + pile_->tiling().border_texels(),
+ 0,
+ 10,
+ pile_->tiling().TileSizeY(0) - pile_->tiling().border_texels());
+
+ // Invalidate tile 1,0 only. This is a rect that avoids the borders of any
+ // other tiles.
+ gfx::Rect invalidate_tile = interest_rect;
+ // This should cause the tile 1,0 to be invalidated and re-recorded. The
+ // invalidation did not need to be expanded.
+ invalidation = invalidate_tile;
+ UpdateAndExpandInvalidation(&invalidation, tiling_size(), interest_rect);
+ EXPECT_EQ(invalidate_tile, invalidation);
+
+ // Invalidate tile 1,0 and 1,1 by invalidating something that only touches the
+ // border of 1,1 (and is inside the tile bounds of 1,0). This is a 10px wide
+ // strip from the top of the tiling onto the border pixels of tile 1,1 that
+ // avoids border pixels of any other tiles.
+ gfx::Rect invalidate_border(pile_->tiling().TilePositionX(1) + 10,
+ 0,
+ 10,
+ pile_->tiling().TileSizeY(0));
vmpstr 2014/10/15 19:00:20 Can you assert somewhere that pile_->tiling().bord
danakj 2014/10/15 19:06:27 It's not 1. The recording border pixels are more.
+ // This should cause the tile 1,0 and 1,1 to be invalidated, and 1,1 will not
vmpstr 2014/10/15 19:00:20 "and 1,1 will not be re-recorded" Can you elaborat
danakj 2014/10/15 19:06:27 It's because the interest rect doesn't touch it. I
+ // be re-recorded. So the invalidation should be expanded to cover all of 1,1.
+ invalidation = invalidate_border;
+ UpdateAndExpandInvalidation(&invalidation, tiling_size(), interest_rect);
+ Region expected_invalidation = invalidate_border;
+ expected_invalidation.Union(pile_->tiling().TileBounds(1, 1));
+ EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString());
+}
+
TEST_F(PicturePileTest, SmallInvalidateInflated) {
// Invalidate something inside a tile.
Region invalidate_rect(gfx::Rect(50, 50, 1, 1));
« cc/resources/picture_pile.cc ('K') | « cc/resources/picture_pile.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698