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

Unified Diff: cc/layer_tree_host_unittest_delegated.cc

Issue 12385085: cc: Unused resources should be given back to the child compositor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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/layer_tree_host_unittest_delegated.cc
diff --git a/cc/layer_tree_host_unittest_delegated.cc b/cc/layer_tree_host_unittest_delegated.cc
index 098a941af5b858bd42be2881f72482e4c25858e3..b5510cb8d238f09c22140d9a106e8e0d0b9adeb2 100644
--- a/cc/layer_tree_host_unittest_delegated.cc
+++ b/cc/layer_tree_host_unittest_delegated.cc
@@ -364,11 +364,6 @@ class LayerTreeHostDelegatedTestMergeResources
EXPECT_EQ(1u, map.count(999));
EXPECT_EQ(1u, map.count(555));
- // Both frames' resources should be saved on the layer.
- EXPECT_EQ(2u, delegated_impl->Resources().size());
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(999)->second));
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(555)->second));
-
endTest();
}
@@ -637,9 +632,6 @@ class LayerTreeHostDelegatedTestFrameBeforeAck
EXPECT_EQ(1u, map.size());
EXPECT_EQ(1u, map.count(999));
- EXPECT_EQ(1u, delegated_impl->Resources().size());
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(999)->second));
-
const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0];
EXPECT_EQ(1u, pass->quad_list.size());
const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(
@@ -743,9 +735,6 @@ class LayerTreeHostDelegatedTestFrameBeforeTakeResources
EXPECT_EQ(1u, map.size());
EXPECT_EQ(1u, map.count(999));
- EXPECT_EQ(1u, delegated_impl->Resources().size());
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(999)->second));
-
const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0];
EXPECT_EQ(1u, pass->quad_list.size());
const TextureDrawQuad* quad = TextureDrawQuad::MaterialCast(
@@ -849,10 +838,6 @@ class LayerTreeHostDelegatedTestBadFrame
EXPECT_EQ(1u, map.count(999));
EXPECT_EQ(1u, map.count(555));
- EXPECT_EQ(2u, delegated_impl->Resources().size());
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(999)->second));
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(555)->second));
-
const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0];
EXPECT_EQ(2u, pass->quad_list.size());
const TextureDrawQuad* quad1 = TextureDrawQuad::MaterialCast(
@@ -871,11 +856,6 @@ class LayerTreeHostDelegatedTestBadFrame
EXPECT_EQ(1u, map.count(555));
EXPECT_EQ(1u, map.count(444));
- EXPECT_EQ(3u, delegated_impl->Resources().size());
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(999)->second));
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(555)->second));
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(444)->second));
-
// The bad frame is dropped though, we still have the frame with 999 and
// 555 in it.
const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0];
@@ -893,9 +873,6 @@ class LayerTreeHostDelegatedTestBadFrame
EXPECT_EQ(1u, map.size());
EXPECT_EQ(1u, map.count(999));
- EXPECT_EQ(1u, delegated_impl->Resources().size());
- EXPECT_EQ(1u, delegated_impl->Resources().count(map.find(999)->second));
-
const RenderPass* pass = delegated_impl->RenderPassesInDrawOrder()[0];
EXPECT_EQ(1u, pass->quad_list.size());
const TextureDrawQuad* quad1 = TextureDrawQuad::MaterialCast(
@@ -911,5 +888,59 @@ class LayerTreeHostDelegatedTestBadFrame
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestBadFrame)
+class LayerTreeHostDelegatedTestUnnamedResource
+ : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
+ public:
+ virtual void beginTest() OVERRIDE {
+ postSetNeedsCommitToMainThread();
+ }
+
+ virtual void didCommit() OVERRIDE {
+ scoped_ptr<DelegatedFrameData> frame;
+ TransferableResourceArray resources;
+
+ int next_source_frame_number = m_layerTreeHost->commitNumber();
+ switch (next_source_frame_number) {
+ case 1:
+ // This frame includes two resources in it, but only uses one.
+ frame = CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1));
+ AddTransferableResource(frame.get(), 999);
+ AddTextureQuad(frame.get(), 555);
+ AddTransferableResource(frame.get(), 555);
+ delegated_->SetFrameData(frame.Pass());
+ break;
+ case 2:
+ // The unused resource should be returned.
+ delegated_->TakeUnusedResourcesForChildCompositor(&resources);
+ EXPECT_EQ(1u, resources.size());
+ EXPECT_EQ(999, resources[0].id);
+
+ endTest();
+ break;
+ }
+ }
+
+ virtual void treeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
+ if (host_impl->activeTree()->source_frame_number() != 1)
+ return;
+
+ LayerImpl* root_impl = host_impl->activeTree()->RootLayer();
+ FakeDelegatedRendererLayerImpl* delegated_impl =
+ static_cast<FakeDelegatedRendererLayerImpl*>(root_impl->children()[0]);
+
+ const ResourceProvider::ResourceIdMap& map =
+ host_impl->resourceProvider()->getChildToParentMap(
+ delegated_impl->ChildId());
+
+ // The layer only held on to the resource that was used.
+ EXPECT_EQ(1u, map.size());
+ EXPECT_EQ(1u, map.count(555));
+ }
+
+ virtual void afterTest() OVERRIDE {}
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestUnnamedResource)
+
} // namespace
} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698