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

Unified Diff: cc/trees/layer_tree_host_unittest.cc

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
Index: cc/trees/layer_tree_host_unittest.cc
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index 69e5272f55e451971198584ee80aa4b9b97774cb..356bb5f2387ecc1adeba0d7a13537d6aef63c1dd 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -5779,6 +5779,66 @@ class RasterizeWithGpuRasterizationCreatesResources : public LayerTreeHostTest {
MULTI_THREAD_IMPL_TEST_F(RasterizeWithGpuRasterizationCreatesResources);
+class GpuRasterizationRasterizesVisibleOnly : public LayerTreeHostTest {
+ protected:
+ GpuRasterizationRasterizesVisibleOnly() : viewport_size_(1024, 2048) {}
+
+ void InitializeSettings(LayerTreeSettings* settings) override {
+ settings->impl_side_painting = true;
+ settings->gpu_rasterization_enabled = true;
+ settings->gpu_rasterization_forced = true;
+ }
+
+ void SetupTree() override {
+ client_.set_fill_with_nonsolid_color(true);
+
+ scoped_ptr<FakePicturePile> pile(new FakePicturePile);
+ scoped_refptr<FakePictureLayer> root =
+ FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass());
+ root->SetBounds(gfx::Size(viewport_size_.width(), 10000));
+ root->SetContentsOpaque(true);
+
+ layer_tree_host()->SetRootLayer(root);
+ LayerTreeHostTest::SetupTree();
+ layer_tree_host()->SetViewportSize(viewport_size_);
+ }
+
+ void BeginTest() override { PostSetNeedsCommitToMainThread(); }
+
+ DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
+ LayerTreeHostImpl::FrameData* frame_data,
+ DrawResult draw_result) override {
+ EXPECT_EQ(4u, host_impl->resource_provider()->num_resources());
+
+ // Verify which tiles got resources using an eviction iterator, which has to
+ // return all tiles that have resources.
+ EvictionTilePriorityQueue eviction_queue;
+ host_impl->BuildEvictionQueue(&eviction_queue,
+ SAME_PRIORITY_FOR_BOTH_TREES);
+ int tile_count = 0;
+ for (; !eviction_queue.IsEmpty(); eviction_queue.Pop()) {
+ Tile* tile = eviction_queue.Top();
+ // Ensure this tile is within the viewport.
+ EXPECT_TRUE(tile->content_rect().Intersects(gfx::Rect(viewport_size_)));
+ // Ensure that the tile is 1/4 of the viewport tall (plus padding).
+ EXPECT_EQ(tile->content_rect().height(),
+ (viewport_size_.height() / 4) + 2);
+ ++tile_count;
+ }
+ EXPECT_EQ(4, tile_count);
+ EndTest();
+ return draw_result;
+ }
+
+ void AfterTest() override {}
+
+ private:
+ FakeContentLayerClient client_;
+ gfx::Size viewport_size_;
+};
+
+MULTI_THREAD_IMPL_TEST_F(GpuRasterizationRasterizesVisibleOnly);
+
class LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles
: public LayerTreeHostTest {
protected:

Powered by Google App Engine
This is Rietveld 408576698