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

Unified Diff: cc/layers/delegated_renderer_layer_impl_unittest.cc

Issue 988693005: Chromium roll (https://codereview.chromium.org/976353002) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: fixed bad android build patch Created 5 years, 9 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
« no previous file with comments | « cc/layers/delegated_renderer_layer_impl.cc ('k') | cc/layers/layer_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/delegated_renderer_layer_impl_unittest.cc
diff --git a/cc/layers/delegated_renderer_layer_impl_unittest.cc b/cc/layers/delegated_renderer_layer_impl_unittest.cc
index ce6ab56ac07aa18ab86abbebea450dd6a3d3b5a9..04e1b8520cdfbd6622937c95b0d2ab178606cd23 100644
--- a/cc/layers/delegated_renderer_layer_impl_unittest.cc
+++ b/cc/layers/delegated_renderer_layer_impl_unittest.cc
@@ -132,6 +132,169 @@ class DelegatedRendererLayerImplTestSimple
DelegatedRendererLayerImpl* delegated_renderer_layer_;
};
+TEST_F(DelegatedRendererLayerImplTest,
+ ChangeContributingRenderPassForNewFrame) {
+ FakeDelegatedRendererLayerImpl* fake_delegated_renderer_layer_impl;
+ {
+ scoped_ptr<LayerImpl> root_layer =
+ SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
+ scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer =
+ FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2);
+
+ host_impl_->SetViewportSize(gfx::Size(100, 100));
+ root_layer->SetBounds(gfx::Size(100, 100));
+ root_layer->SetHasRenderSurface(true);
+
+ delegated_renderer_layer->SetPosition(gfx::Point(3, 3));
+ delegated_renderer_layer->SetBounds(gfx::Size(10, 10));
+ delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10));
+ delegated_renderer_layer->SetDrawsContent(true);
+ delegated_renderer_layer->SetHasRenderSurface(true);
+ gfx::Transform transform;
+ transform.Translate(1.0, 1.0);
+ delegated_renderer_layer->SetTransform(transform);
+
+ RenderPassList delegated_render_passes;
+ TestRenderPass* pass1 =
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 6),
+ gfx::Rect(6, 6, 6, 6), gfx::Transform(1, 0, 0, 1, 5, 6));
+ AddQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u);
+ TestRenderPass* pass2 =
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 7),
+ gfx::Rect(7, 7, 7, 7), gfx::Transform(1, 0, 0, 1, 7, 8));
+ AddQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u);
+ AddRenderPassQuad(pass2, pass1);
+ TestRenderPass* pass3 =
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
+ gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
+ AddRenderPassQuad(pass3, pass2);
+ delegated_renderer_layer->SetFrameDataForRenderPasses(
+ 1.f, delegated_render_passes);
+
+ fake_delegated_renderer_layer_impl = delegated_renderer_layer.get();
+
+ root_layer->AddChild(delegated_renderer_layer.Pass());
+
+ host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
+
+ LayerTreeHostImpl::FrameData frame;
+ EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
+
+ // Root layer has one render pass, and delegated renderer layer has two
+ // contributing render passes and its own render pass.
+ ASSERT_EQ(4u, frame.render_passes.size());
+
+ host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
+ host_impl_->DidDrawAllLayers(frame);
+ }
+ {
+ // New frame makes delegated renderer layer loses its contributing render
+ // passes.
+ RenderPassList delegated_render_passes;
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
+ gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
+ fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses(
+ 1.f, delegated_render_passes);
+
+ // Force damage to redraw a new frame.
+ host_impl_->SetViewportDamage(gfx::Rect(10, 10));
+
+ LayerTreeHostImpl::FrameData frame;
+ EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
+
+ // Each non-DelegatedRendererLayer added one RenderPass. The
+ // DelegatedRendererLayer added two contributing passes.
+ ASSERT_EQ(1u, frame.render_passes.size());
+
+ host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
+ host_impl_->DidDrawAllLayers(frame);
+ }
+}
+
+TEST_F(DelegatedRendererLayerImplTest,
+ ChangeContributingRenderPassNonFullTreeSync) {
+ FakeDelegatedRendererLayerImpl* fake_delegated_renderer_layer_impl;
+ {
+ host_impl_->CreatePendingTree();
+ scoped_ptr<LayerImpl> root_layer =
+ SolidColorLayerImpl::Create(host_impl_->pending_tree(), 1);
+ scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer =
+ FakeDelegatedRendererLayerImpl::Create(host_impl_->pending_tree(), 2);
+
+ host_impl_->SetViewportSize(gfx::Size(100, 100));
+ root_layer->SetBounds(gfx::Size(100, 100));
+ root_layer->SetHasRenderSurface(true);
+
+ delegated_renderer_layer->SetPosition(gfx::Point(3, 3));
+ delegated_renderer_layer->SetBounds(gfx::Size(10, 10));
+ delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10));
+ delegated_renderer_layer->SetDrawsContent(true);
+ delegated_renderer_layer->SetHasRenderSurface(true);
+ gfx::Transform transform;
+ transform.Translate(1.0, 1.0);
+ delegated_renderer_layer->SetTransform(transform);
+
+ RenderPassList delegated_render_passes;
+ TestRenderPass* pass1 =
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 6),
+ gfx::Rect(6, 6, 6, 6), gfx::Transform(1, 0, 0, 1, 5, 6));
+ AddQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u);
+ TestRenderPass* pass2 =
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 7),
+ gfx::Rect(7, 7, 7, 7), gfx::Transform(1, 0, 0, 1, 7, 8));
+ AddQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u);
+ AddRenderPassQuad(pass2, pass1);
+ TestRenderPass* pass3 =
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
+ gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
+ AddRenderPassQuad(pass3, pass2);
+ delegated_renderer_layer->SetFrameDataForRenderPasses(
+ 1.f, delegated_render_passes);
+
+ fake_delegated_renderer_layer_impl = delegated_renderer_layer.get();
+
+ root_layer->AddChild(delegated_renderer_layer.Pass());
+
+ host_impl_->pending_tree()->SetRootLayer(root_layer.Pass());
+ host_impl_->ActivateSyncTree();
+
+ LayerTreeHostImpl::FrameData frame;
+ EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
+
+ // Root layer has one render pass, and delegated renderer layer has two
+ // contributing render passes and its own render pass.
+ ASSERT_EQ(4u, frame.render_passes.size());
+
+ host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
+ host_impl_->DidDrawAllLayers(frame);
+ }
+ {
+ // Remove contributing render passes from the delegated renderer layer.
+ host_impl_->CreatePendingTree();
+ host_impl_->pending_tree()->set_needs_full_tree_sync(false);
+ RenderPassList delegated_render_passes;
+ AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
+ gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
+
+ fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses(
+ 1.f, delegated_render_passes);
+
+ // Force damage to redraw a new frame.
+
+ host_impl_->ActivateSyncTree();
+ host_impl_->SetViewportDamage(gfx::Rect(100, 100));
+ LayerTreeHostImpl::FrameData frame;
+ EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
+
+ // Root layer has one render pass, and delegated renderer layer no longer
+ // has contributing render passes.
+ ASSERT_EQ(1u, frame.render_passes.size());
+
+ host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
+ host_impl_->DidDrawAllLayers(frame);
+ }
+}
+
TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) {
LayerTreeHostImpl::FrameData frame;
EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
« no previous file with comments | « cc/layers/delegated_renderer_layer_impl.cc ('k') | cc/layers/layer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698