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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/delegated_renderer_layer_impl.h" 5 #include "cc/layers/delegated_renderer_layer_impl.h"
6 6
7 #include "cc/base/scoped_ptr_vector.h" 7 #include "cc/base/scoped_ptr_vector.h"
8 #include "cc/layers/solid_color_layer_impl.h" 8 #include "cc/layers/solid_color_layer_impl.h"
9 #include "cc/quads/render_pass_draw_quad.h" 9 #include "cc/quads/render_pass_draw_quad.h"
10 #include "cc/quads/solid_color_draw_quad.h" 10 #include "cc/quads/solid_color_draw_quad.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); 125 host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
126 } 126 }
127 127
128 protected: 128 protected:
129 LayerImpl* root_layer_; 129 LayerImpl* root_layer_;
130 LayerImpl* layer_before_; 130 LayerImpl* layer_before_;
131 LayerImpl* layer_after_; 131 LayerImpl* layer_after_;
132 DelegatedRendererLayerImpl* delegated_renderer_layer_; 132 DelegatedRendererLayerImpl* delegated_renderer_layer_;
133 }; 133 };
134 134
135 TEST_F(DelegatedRendererLayerImplTest,
136 ChangeContributingRenderPassForNewFrame) {
137 FakeDelegatedRendererLayerImpl* fake_delegated_renderer_layer_impl;
138 {
139 scoped_ptr<LayerImpl> root_layer =
140 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
141 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer =
142 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2);
143
144 host_impl_->SetViewportSize(gfx::Size(100, 100));
145 root_layer->SetBounds(gfx::Size(100, 100));
146 root_layer->SetHasRenderSurface(true);
147
148 delegated_renderer_layer->SetPosition(gfx::Point(3, 3));
149 delegated_renderer_layer->SetBounds(gfx::Size(10, 10));
150 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10));
151 delegated_renderer_layer->SetDrawsContent(true);
152 delegated_renderer_layer->SetHasRenderSurface(true);
153 gfx::Transform transform;
154 transform.Translate(1.0, 1.0);
155 delegated_renderer_layer->SetTransform(transform);
156
157 RenderPassList delegated_render_passes;
158 TestRenderPass* pass1 =
159 AddRenderPass(&delegated_render_passes, RenderPassId(9, 6),
160 gfx::Rect(6, 6, 6, 6), gfx::Transform(1, 0, 0, 1, 5, 6));
161 AddQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u);
162 TestRenderPass* pass2 =
163 AddRenderPass(&delegated_render_passes, RenderPassId(9, 7),
164 gfx::Rect(7, 7, 7, 7), gfx::Transform(1, 0, 0, 1, 7, 8));
165 AddQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u);
166 AddRenderPassQuad(pass2, pass1);
167 TestRenderPass* pass3 =
168 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
169 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
170 AddRenderPassQuad(pass3, pass2);
171 delegated_renderer_layer->SetFrameDataForRenderPasses(
172 1.f, delegated_render_passes);
173
174 fake_delegated_renderer_layer_impl = delegated_renderer_layer.get();
175
176 root_layer->AddChild(delegated_renderer_layer.Pass());
177
178 host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
179
180 LayerTreeHostImpl::FrameData frame;
181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
182
183 // Root layer has one render pass, and delegated renderer layer has two
184 // contributing render passes and its own render pass.
185 ASSERT_EQ(4u, frame.render_passes.size());
186
187 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
188 host_impl_->DidDrawAllLayers(frame);
189 }
190 {
191 // New frame makes delegated renderer layer loses its contributing render
192 // passes.
193 RenderPassList delegated_render_passes;
194 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
195 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
196 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses(
197 1.f, delegated_render_passes);
198
199 // Force damage to redraw a new frame.
200 host_impl_->SetViewportDamage(gfx::Rect(10, 10));
201
202 LayerTreeHostImpl::FrameData frame;
203 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
204
205 // Each non-DelegatedRendererLayer added one RenderPass. The
206 // DelegatedRendererLayer added two contributing passes.
207 ASSERT_EQ(1u, frame.render_passes.size());
208
209 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
210 host_impl_->DidDrawAllLayers(frame);
211 }
212 }
213
214 TEST_F(DelegatedRendererLayerImplTest,
215 ChangeContributingRenderPassNonFullTreeSync) {
216 FakeDelegatedRendererLayerImpl* fake_delegated_renderer_layer_impl;
217 {
218 host_impl_->CreatePendingTree();
219 scoped_ptr<LayerImpl> root_layer =
220 SolidColorLayerImpl::Create(host_impl_->pending_tree(), 1);
221 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer =
222 FakeDelegatedRendererLayerImpl::Create(host_impl_->pending_tree(), 2);
223
224 host_impl_->SetViewportSize(gfx::Size(100, 100));
225 root_layer->SetBounds(gfx::Size(100, 100));
226 root_layer->SetHasRenderSurface(true);
227
228 delegated_renderer_layer->SetPosition(gfx::Point(3, 3));
229 delegated_renderer_layer->SetBounds(gfx::Size(10, 10));
230 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10));
231 delegated_renderer_layer->SetDrawsContent(true);
232 delegated_renderer_layer->SetHasRenderSurface(true);
233 gfx::Transform transform;
234 transform.Translate(1.0, 1.0);
235 delegated_renderer_layer->SetTransform(transform);
236
237 RenderPassList delegated_render_passes;
238 TestRenderPass* pass1 =
239 AddRenderPass(&delegated_render_passes, RenderPassId(9, 6),
240 gfx::Rect(6, 6, 6, 6), gfx::Transform(1, 0, 0, 1, 5, 6));
241 AddQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u);
242 TestRenderPass* pass2 =
243 AddRenderPass(&delegated_render_passes, RenderPassId(9, 7),
244 gfx::Rect(7, 7, 7, 7), gfx::Transform(1, 0, 0, 1, 7, 8));
245 AddQuad(pass2, gfx::Rect(0, 0, 7, 7), 22u);
246 AddRenderPassQuad(pass2, pass1);
247 TestRenderPass* pass3 =
248 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
249 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
250 AddRenderPassQuad(pass3, pass2);
251 delegated_renderer_layer->SetFrameDataForRenderPasses(
252 1.f, delegated_render_passes);
253
254 fake_delegated_renderer_layer_impl = delegated_renderer_layer.get();
255
256 root_layer->AddChild(delegated_renderer_layer.Pass());
257
258 host_impl_->pending_tree()->SetRootLayer(root_layer.Pass());
259 host_impl_->ActivateSyncTree();
260
261 LayerTreeHostImpl::FrameData frame;
262 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
263
264 // Root layer has one render pass, and delegated renderer layer has two
265 // contributing render passes and its own render pass.
266 ASSERT_EQ(4u, frame.render_passes.size());
267
268 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
269 host_impl_->DidDrawAllLayers(frame);
270 }
271 {
272 // Remove contributing render passes from the delegated renderer layer.
273 host_impl_->CreatePendingTree();
274 host_impl_->pending_tree()->set_needs_full_tree_sync(false);
275 RenderPassList delegated_render_passes;
276 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8),
277 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10));
278
279 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses(
280 1.f, delegated_render_passes);
281
282 // Force damage to redraw a new frame.
283
284 host_impl_->ActivateSyncTree();
285 host_impl_->SetViewportDamage(gfx::Rect(100, 100));
286 LayerTreeHostImpl::FrameData frame;
287 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
288
289 // Root layer has one render pass, and delegated renderer layer no longer
290 // has contributing render passes.
291 ASSERT_EQ(1u, frame.render_passes.size());
292
293 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
294 host_impl_->DidDrawAllLayers(frame);
295 }
296 }
297
135 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { 298 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) {
136 LayerTreeHostImpl::FrameData frame; 299 LayerTreeHostImpl::FrameData frame;
137 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 300 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
138 301
139 // Each non-DelegatedRendererLayer added one RenderPass. The 302 // Each non-DelegatedRendererLayer added one RenderPass. The
140 // DelegatedRendererLayer added two contributing passes. 303 // DelegatedRendererLayer added two contributing passes.
141 ASSERT_EQ(5u, frame.render_passes.size()); 304 ASSERT_EQ(5u, frame.render_passes.size());
142 305
143 // The DelegatedRendererLayer should have added its contributing RenderPasses 306 // The DelegatedRendererLayer should have added its contributing RenderPasses
144 // to the frame. 307 // to the frame.
(...skipping 1369 matching lines...) Expand 10 before | Expand all | Expand 10 after
1514 scoped_ptr<DelegatedRendererLayerImpl> other_layer = 1677 scoped_ptr<DelegatedRendererLayerImpl> other_layer =
1515 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); 1678 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6);
1516 1679
1517 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); 1680 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get());
1518 1681
1519 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); 1682 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor());
1520 } 1683 }
1521 1684
1522 } // namespace 1685 } // namespace
1523 } // namespace cc 1686 } // namespace cc
OLDNEW
« 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