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

Side by Side Diff: cc/layers/delegated_renderer_layer_impl_unittest.cc

Issue 448303002: Use custom ListContainer to allocate DrawQuads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@perftest
Patch Set: fix win trybot compile error Created 6 years, 3 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
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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 // to the frame. 182 // to the frame.
183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
184 EXPECT_EQ(1, frame.render_passes[1]->id.index); 184 EXPECT_EQ(1, frame.render_passes[1]->id.index);
185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); 185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id);
186 EXPECT_EQ(2, frame.render_passes[2]->id.index); 186 EXPECT_EQ(2, frame.render_passes[2]->id.index);
187 187
188 // The DelegatedRendererLayer should have added copies of its quads to 188 // The DelegatedRendererLayer should have added copies of its quads to
189 // contributing RenderPasses. 189 // contributing RenderPasses.
190 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 190 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
191 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 191 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
192 frame.render_passes[1]->quad_list[0]->rect.ToString()); 192 frame.render_passes[1]->quad_list.front()->rect.ToString());
193 193
194 // Verify it added the right quads. 194 // Verify it added the right quads.
195 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); 195 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size());
196 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), 196 QuadList::ConstIterator iter = frame.render_passes[2]->quad_list.begin();
197 frame.render_passes[2]->quad_list[0]->rect.ToString()); 197 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), iter->rect.ToString());
198 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), 198 ++iter;
199 frame.render_passes[2]->quad_list[1]->rect.ToString()); 199 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), iter->rect.ToString());
200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
202 frame.render_passes[1]->quad_list[0]->rect.ToString()); 202 frame.render_passes[1]->quad_list.front()->rect.ToString());
203 203
204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
205 host_impl_->DidDrawAllLayers(frame); 205 host_impl_->DidDrawAllLayers(frame);
206 } 206 }
207 207
208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { 208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) {
209 LayerTreeHostImpl::FrameData frame; 209 LayerTreeHostImpl::FrameData frame;
210 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 210 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
211 211
212 // Each non-DelegatedRendererLayer added one RenderPass. The 212 // Each non-DelegatedRendererLayer added one RenderPass. The
213 // DelegatedRendererLayer added two contributing passes. 213 // DelegatedRendererLayer added two contributing passes.
214 ASSERT_EQ(5u, frame.render_passes.size()); 214 ASSERT_EQ(5u, frame.render_passes.size());
215 215
216 // The layer's target is the RenderPass from layer_after_. 216 // The layer's target is the RenderPass from layer_after_.
217 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); 217 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id);
218 218
219 // The DelegatedRendererLayer should have added copies of quads in its root 219 // The DelegatedRendererLayer should have added copies of quads in its root
220 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. 220 // RenderPass to its target RenderPass. The layer_after_ also adds one quad.
221 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); 221 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size());
222 222
223 QuadList::ConstIterator iter = frame.render_passes[3]->quad_list.begin();
223 // Verify it added the right quads. 224 // Verify it added the right quads.
224 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 225 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), iter->rect.ToString());
225 frame.render_passes[3]->quad_list[0]->rect.ToString());
226 226
227 ++iter;
227 // Its target layer should have a quad as well. 228 // Its target layer should have a quad as well.
228 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), 229 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), iter->rect.ToString());
229 frame.render_passes[3]->quad_list[1]->rect.ToString());
230 230
231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
232 host_impl_->DidDrawAllLayers(frame); 232 host_impl_->DidDrawAllLayers(frame);
233 } 233 }
234 234
235 TEST_F(DelegatedRendererLayerImplTestSimple, 235 TEST_F(DelegatedRendererLayerImplTestSimple,
236 QuadsFromRootRenderPassAreModifiedForTheTarget) { 236 QuadsFromRootRenderPassAreModifiedForTheTarget) {
237 LayerTreeHostImpl::FrameData frame; 237 LayerTreeHostImpl::FrameData frame;
238 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 238 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
239 239
240 // Each non-DelegatedRendererLayer added one RenderPass. The 240 // Each non-DelegatedRendererLayer added one RenderPass. The
241 // DelegatedRendererLayer added two contributing passes. 241 // DelegatedRendererLayer added two contributing passes.
242 ASSERT_EQ(5u, frame.render_passes.size()); 242 ASSERT_EQ(5u, frame.render_passes.size());
243 243
244 // The DelegatedRendererLayer is at position 3,3 compared to its target, and 244 // The DelegatedRendererLayer is at position 3,3 compared to its target, and
245 // has a translation transform of 1,1. So its root RenderPass' quads should 245 // has a translation transform of 1,1. So its root RenderPass' quads should
246 // all be transformed by that combined amount. 246 // all be transformed by that combined amount.
247 gfx::Transform transform; 247 gfx::Transform transform;
248 transform.Translate(4.0, 4.0); 248 transform.Translate(4.0, 4.0);
249 EXPECT_TRANSFORMATION_MATRIX_EQ( 249 EXPECT_TRANSFORMATION_MATRIX_EQ(
250 transform, frame.render_passes[3]->quad_list[0]->quadTransform()); 250 transform, frame.render_passes[3]->quad_list.front()->quadTransform());
251 251
252 // Quads from non-root RenderPasses should not be shifted though. 252 // Quads from non-root RenderPasses should not be shifted though.
253 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); 253 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size());
254 EXPECT_TRANSFORMATION_MATRIX_EQ( 254
255 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); 255 QuadList::ConstIterator iter = frame.render_passes[2]->quad_list.begin();
256 EXPECT_TRANSFORMATION_MATRIX_EQ( 256 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), iter->quadTransform());
257 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); 257 ++iter;
258 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), iter->quadTransform());
258 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 259 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
259 EXPECT_TRANSFORMATION_MATRIX_EQ( 260 EXPECT_TRANSFORMATION_MATRIX_EQ(
260 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); 261 gfx::Transform(),
262 frame.render_passes[1]->quad_list.front()->quadTransform());
261 263
262 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 264 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
263 host_impl_->DidDrawAllLayers(frame); 265 host_impl_->DidDrawAllLayers(frame);
264 } 266 }
265 267
266 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { 268 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) {
267 LayerTreeHostImpl::FrameData frame; 269 LayerTreeHostImpl::FrameData frame;
268 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 270 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
269 271
270 // The delegated layer has a surface between it and the root. 272 // The delegated layer has a surface between it and the root.
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 // to the frame. 407 // to the frame.
406 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); 408 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id);
407 EXPECT_EQ(1, frame.render_passes[1]->id.index); 409 EXPECT_EQ(1, frame.render_passes[1]->id.index);
408 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); 410 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id);
409 EXPECT_EQ(2, frame.render_passes[2]->id.index); 411 EXPECT_EQ(2, frame.render_passes[2]->id.index);
410 412
411 // The DelegatedRendererLayer should have added copies of its quads to 413 // The DelegatedRendererLayer should have added copies of its quads to
412 // contributing RenderPasses. 414 // contributing RenderPasses.
413 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 415 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
414 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 416 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
415 frame.render_passes[1]->quad_list[0]->rect.ToString()); 417 frame.render_passes[1]->quad_list.front()->rect.ToString());
416 418
417 // Verify it added the right quads. 419 // Verify it added the right quads.
418 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); 420 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size());
419 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), 421
420 frame.render_passes[2]->quad_list[0]->rect.ToString()); 422 QuadList::ConstIterator iter = frame.render_passes[2]->quad_list.begin();
421 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), 423 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), iter->rect.ToString());
422 frame.render_passes[2]->quad_list[1]->rect.ToString()); 424 ++iter;
425 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), iter->rect.ToString());
423 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 426 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
424 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), 427 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(),
425 frame.render_passes[1]->quad_list[0]->rect.ToString()); 428 frame.render_passes[1]->quad_list.front()->rect.ToString());
426 429
427 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 430 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
428 host_impl_->DidDrawAllLayers(frame); 431 host_impl_->DidDrawAllLayers(frame);
429 } 432 }
430 433
431 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { 434 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) {
432 LayerTreeHostImpl::FrameData frame; 435 LayerTreeHostImpl::FrameData frame;
433 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 436 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
434 437
435 // Each non-DelegatedRendererLayer added one RenderPass. The 438 // Each non-DelegatedRendererLayer added one RenderPass. The
436 // DelegatedRendererLayer added two contributing passes and its owned surface 439 // DelegatedRendererLayer added two contributing passes and its owned surface
437 // added one pass. 440 // added one pass.
438 ASSERT_EQ(6u, frame.render_passes.size()); 441 ASSERT_EQ(6u, frame.render_passes.size());
439 442
440 // The layer's target is the RenderPass owned by itself. 443 // The layer's target is the RenderPass owned by itself.
441 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); 444 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id);
442 445
443 // The DelegatedRendererLayer should have added copies of quads in its root 446 // The DelegatedRendererLayer should have added copies of quads in its root
444 // RenderPass to its target RenderPass. 447 // RenderPass to its target RenderPass.
445 // The layer_after also adds one quad. 448 // The layer_after also adds one quad.
446 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); 449 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size());
447 450
448 // Verify it added the right quads. 451 // Verify it added the right quads.
449 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), 452 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(),
450 frame.render_passes[3]->quad_list[0]->rect.ToString()); 453 frame.render_passes[3]->quad_list.front()->rect.ToString());
451 454
452 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 455 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
453 host_impl_->DidDrawAllLayers(frame); 456 host_impl_->DidDrawAllLayers(frame);
454 } 457 }
455 458
456 TEST_F(DelegatedRendererLayerImplTestOwnSurface, 459 TEST_F(DelegatedRendererLayerImplTestOwnSurface,
457 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { 460 QuadsFromRootRenderPassAreNotModifiedForTheTarget) {
458 LayerTreeHostImpl::FrameData frame; 461 LayerTreeHostImpl::FrameData frame;
459 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 462 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
460 463
461 // Each non-DelegatedRendererLayer added one RenderPass. The 464 // Each non-DelegatedRendererLayer added one RenderPass. The
462 // DelegatedRendererLayer added two contributing passes and its owned surface 465 // DelegatedRendererLayer added two contributing passes and its owned surface
463 // added one pass. 466 // added one pass.
464 ASSERT_EQ(6u, frame.render_passes.size()); 467 ASSERT_EQ(6u, frame.render_passes.size());
465 468
466 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root 469 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root
467 // RenderPass' quads do not need to be translated at all. 470 // RenderPass' quads do not need to be translated at all.
468 EXPECT_TRANSFORMATION_MATRIX_EQ( 471 EXPECT_TRANSFORMATION_MATRIX_EQ(
469 gfx::Transform(), frame.render_passes[3]->quad_list[0]->quadTransform()); 472 gfx::Transform(),
473 frame.render_passes[3]->quad_list.front()->quadTransform());
470 474
471 // Quads from non-root RenderPasses should not be shifted either. 475 // Quads from non-root RenderPasses should not be shifted either.
472 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); 476 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size());
473 EXPECT_TRANSFORMATION_MATRIX_EQ( 477
474 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); 478 QuadList::ConstIterator iter = frame.render_passes[2]->quad_list.begin();
475 EXPECT_TRANSFORMATION_MATRIX_EQ( 479 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), iter->quadTransform());
danakj 2014/09/23 17:59:38 WDYT of adding ElementAt(size_t pos) to get at an
weiliangc 2014/09/24 20:14:35 Add at(index) function as well as unittest.
476 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); 480 ++iter;
481 EXPECT_TRANSFORMATION_MATRIX_EQ(gfx::Transform(), iter->quadTransform());
477 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); 482 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size());
478 EXPECT_TRANSFORMATION_MATRIX_EQ( 483 EXPECT_TRANSFORMATION_MATRIX_EQ(
479 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); 484 gfx::Transform(),
485 frame.render_passes[1]->quad_list.front()->quadTransform());
480 486
481 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 487 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
482 host_impl_->DidDrawAllLayers(frame); 488 host_impl_->DidDrawAllLayers(frame);
483 } 489 }
484 490
485 class DelegatedRendererLayerImplTestTransform 491 class DelegatedRendererLayerImplTestTransform
486 : public DelegatedRendererLayerImplTest { 492 : public DelegatedRendererLayerImplTest {
487 public: 493 public:
488 DelegatedRendererLayerImplTestTransform() 494 DelegatedRendererLayerImplTestTransform()
489 : root_delegated_render_pass_is_clipped_(false), 495 : root_delegated_render_pass_is_clipped_(false),
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 648
643 const QuadList& contrib_delegated_quad_list = 649 const QuadList& contrib_delegated_quad_list =
644 frame.render_passes[0]->quad_list; 650 frame.render_passes[0]->quad_list;
645 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 651 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
646 652
647 const QuadList& root_delegated_quad_list = 653 const QuadList& root_delegated_quad_list =
648 frame.render_passes[1]->quad_list; 654 frame.render_passes[1]->quad_list;
649 ASSERT_EQ(5u, root_delegated_quad_list.size()); 655 ASSERT_EQ(5u, root_delegated_quad_list.size());
650 656
651 // All quads in a render pass should share the same state. 657 // All quads in a render pass should share the same state.
652 *contrib_delegated_shared_quad_state = 658 QuadList::ConstIterator iter = contrib_delegated_quad_list.begin();
653 contrib_delegated_quad_list[0]->shared_quad_state; 659 *contrib_delegated_shared_quad_state = iter->shared_quad_state;
654 EXPECT_EQ(*contrib_delegated_shared_quad_state, 660 ++iter;
655 contrib_delegated_quad_list[1]->shared_quad_state); 661 EXPECT_EQ(*contrib_delegated_shared_quad_state, iter->shared_quad_state);
656 662
657 *root_delegated_shared_quad_state = 663 iter = root_delegated_quad_list.begin();
658 root_delegated_quad_list[0]->shared_quad_state; 664 *root_delegated_shared_quad_state = iter->shared_quad_state;
659 EXPECT_EQ(*root_delegated_shared_quad_state, 665 ++iter;
660 root_delegated_quad_list[1]->shared_quad_state); 666 EXPECT_EQ(*root_delegated_shared_quad_state, iter->shared_quad_state);
661 EXPECT_EQ(*root_delegated_shared_quad_state, 667 ++iter;
662 root_delegated_quad_list[2]->shared_quad_state); 668 EXPECT_EQ(*root_delegated_shared_quad_state, iter->shared_quad_state);
663 EXPECT_EQ(*root_delegated_shared_quad_state, 669 ++iter;
664 root_delegated_quad_list[3]->shared_quad_state); 670 EXPECT_EQ(*root_delegated_shared_quad_state, iter->shared_quad_state);
665 EXPECT_EQ(*root_delegated_shared_quad_state, 671 ++iter;
666 root_delegated_quad_list[4]->shared_quad_state); 672 EXPECT_EQ(*root_delegated_shared_quad_state, iter->shared_quad_state);
667 673
668 EXPECT_NE(*contrib_delegated_shared_quad_state, 674 EXPECT_NE(*contrib_delegated_shared_quad_state,
669 *root_delegated_shared_quad_state); 675 *root_delegated_shared_quad_state);
670 } 676 }
671 677
672 protected: 678 protected:
673 LayerImpl* root_layer_; 679 LayerImpl* root_layer_;
674 DelegatedRendererLayerImpl* delegated_renderer_layer_; 680 DelegatedRendererLayerImpl* delegated_renderer_layer_;
675 bool root_delegated_render_pass_is_clipped_; 681 bool root_delegated_render_pass_is_clipped_;
676 float delegated_device_scale_factor_; 682 float delegated_device_scale_factor_;
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 LayerTreeHostImpl::FrameData frame; 1098 LayerTreeHostImpl::FrameData frame;
1093 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1099 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1094 1100
1095 ASSERT_EQ(2u, frame.render_passes.size()); 1101 ASSERT_EQ(2u, frame.render_passes.size());
1096 const QuadList& contrib_delegated_quad_list = 1102 const QuadList& contrib_delegated_quad_list =
1097 frame.render_passes[0]->quad_list; 1103 frame.render_passes[0]->quad_list;
1098 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1104 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1099 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1105 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1100 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1106 ASSERT_EQ(5u, root_delegated_quad_list.size());
1101 const SharedQuadState* root_delegated_shared_quad_state = 1107 const SharedQuadState* root_delegated_shared_quad_state =
1102 root_delegated_quad_list[0]->shared_quad_state; 1108 root_delegated_quad_list.front()->shared_quad_state;
1103 1109
1104 // When the quads don't have a clip of their own, the clip rect is set to 1110 // When the quads don't have a clip of their own, the clip rect is set to
1105 // the drawable_content_rect of the delegated renderer layer. 1111 // the drawable_content_rect of the delegated renderer layer.
1106 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), 1112 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(),
1107 root_delegated_shared_quad_state->clip_rect.ToString()); 1113 root_delegated_shared_quad_state->clip_rect.ToString());
1108 // Quads are clipped to the delegated renderer layer. 1114 // Quads are clipped to the delegated renderer layer.
1109 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1115 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1110 1116
1111 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1117 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1112 host_impl_->DidDrawAllLayers(frame); 1118 host_impl_->DidDrawAllLayers(frame);
1113 } 1119 }
1114 1120
1115 TEST_F(DelegatedRendererLayerImplTestClip, 1121 TEST_F(DelegatedRendererLayerImplTestClip,
1116 QuadsClipped_LayerUnclipped_NoSurface) { 1122 QuadsClipped_LayerUnclipped_NoSurface) {
1117 root_delegated_render_pass_is_clipped_ = true; 1123 root_delegated_render_pass_is_clipped_ = true;
1118 clip_delegated_renderer_layer_ = false; 1124 clip_delegated_renderer_layer_ = false;
1119 SetUpTest(); 1125 SetUpTest();
1120 1126
1121 LayerTreeHostImpl::FrameData frame; 1127 LayerTreeHostImpl::FrameData frame;
1122 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1128 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1123 1129
1124 ASSERT_EQ(2u, frame.render_passes.size()); 1130 ASSERT_EQ(2u, frame.render_passes.size());
1125 const QuadList& contrib_delegated_quad_list = 1131 const QuadList& contrib_delegated_quad_list =
1126 frame.render_passes[0]->quad_list; 1132 frame.render_passes[0]->quad_list;
1127 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1133 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1128 const QuadList& root_delegated_quad_list = 1134 const QuadList& root_delegated_quad_list =
1129 frame.render_passes[1]->quad_list; 1135 frame.render_passes[1]->quad_list;
1130 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1136 ASSERT_EQ(5u, root_delegated_quad_list.size());
1131 const SharedQuadState* root_delegated_shared_quad_state = 1137 const SharedQuadState* root_delegated_shared_quad_state =
1132 root_delegated_quad_list[0]->shared_quad_state; 1138 root_delegated_quad_list.front()->shared_quad_state;
1133 1139
1134 // When the quads have a clip of their own, it is used. 1140 // When the quads have a clip of their own, it is used.
1135 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), 1141 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(),
1136 root_delegated_shared_quad_state->clip_rect.ToString()); 1142 root_delegated_shared_quad_state->clip_rect.ToString());
1137 // Quads came with a clip rect. 1143 // Quads came with a clip rect.
1138 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1144 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1139 1145
1140 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1146 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1141 host_impl_->DidDrawAllLayers(frame); 1147 host_impl_->DidDrawAllLayers(frame);
1142 } 1148 }
1143 1149
1144 TEST_F(DelegatedRendererLayerImplTestClip, 1150 TEST_F(DelegatedRendererLayerImplTestClip,
1145 QuadsUnclipped_LayerClipped_NoSurface) { 1151 QuadsUnclipped_LayerClipped_NoSurface) {
1146 root_delegated_render_pass_is_clipped_ = false; 1152 root_delegated_render_pass_is_clipped_ = false;
1147 clip_delegated_renderer_layer_ = true; 1153 clip_delegated_renderer_layer_ = true;
1148 SetUpTest(); 1154 SetUpTest();
1149 1155
1150 LayerTreeHostImpl::FrameData frame; 1156 LayerTreeHostImpl::FrameData frame;
1151 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1157 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1152 1158
1153 ASSERT_EQ(2u, frame.render_passes.size()); 1159 ASSERT_EQ(2u, frame.render_passes.size());
1154 const QuadList& contrib_delegated_quad_list = 1160 const QuadList& contrib_delegated_quad_list =
1155 frame.render_passes[0]->quad_list; 1161 frame.render_passes[0]->quad_list;
1156 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1162 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1157 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1163 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1158 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1164 ASSERT_EQ(5u, root_delegated_quad_list.size());
1159 const SharedQuadState* root_delegated_shared_quad_state = 1165 const SharedQuadState* root_delegated_shared_quad_state =
1160 root_delegated_quad_list[0]->shared_quad_state; 1166 root_delegated_quad_list.front()->shared_quad_state;
1161 1167
1162 // When the quads don't have a clip of their own, the clip rect is set to 1168 // When the quads don't have a clip of their own, the clip rect is set to
1163 // the drawable_content_rect of the delegated renderer layer. When the layer 1169 // the drawable_content_rect of the delegated renderer layer. When the layer
1164 // is clipped, that should be seen in the quads' clip_rect. 1170 // is clipped, that should be seen in the quads' clip_rect.
1165 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), 1171 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(),
1166 root_delegated_shared_quad_state->clip_rect.ToString()); 1172 root_delegated_shared_quad_state->clip_rect.ToString());
1167 // Quads are clipped to the delegated renderer layer. 1173 // Quads are clipped to the delegated renderer layer.
1168 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1174 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1169 1175
1170 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1176 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1171 host_impl_->DidDrawAllLayers(frame); 1177 host_impl_->DidDrawAllLayers(frame);
1172 } 1178 }
1173 1179
1174 TEST_F(DelegatedRendererLayerImplTestClip, 1180 TEST_F(DelegatedRendererLayerImplTestClip,
1175 QuadsClipped_LayerClipped_NoSurface) { 1181 QuadsClipped_LayerClipped_NoSurface) {
1176 root_delegated_render_pass_is_clipped_ = true; 1182 root_delegated_render_pass_is_clipped_ = true;
1177 clip_delegated_renderer_layer_ = true; 1183 clip_delegated_renderer_layer_ = true;
1178 SetUpTest(); 1184 SetUpTest();
1179 1185
1180 LayerTreeHostImpl::FrameData frame; 1186 LayerTreeHostImpl::FrameData frame;
1181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1187 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1182 1188
1183 ASSERT_EQ(2u, frame.render_passes.size()); 1189 ASSERT_EQ(2u, frame.render_passes.size());
1184 const QuadList& contrib_delegated_quad_list = 1190 const QuadList& contrib_delegated_quad_list =
1185 frame.render_passes[0]->quad_list; 1191 frame.render_passes[0]->quad_list;
1186 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1192 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1187 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1193 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1188 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1194 ASSERT_EQ(5u, root_delegated_quad_list.size());
1189 const SharedQuadState* root_delegated_shared_quad_state = 1195 const SharedQuadState* root_delegated_shared_quad_state =
1190 root_delegated_quad_list[0]->shared_quad_state; 1196 root_delegated_quad_list.front()->shared_quad_state;
1191 1197
1192 // When the quads have a clip of their own, it is used, but it is 1198 // When the quads have a clip of their own, it is used, but it is
1193 // combined with the clip rect of the delegated renderer layer. 1199 // combined with the clip rect of the delegated renderer layer.
1194 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), 1200 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(),
1195 root_delegated_shared_quad_state->clip_rect.ToString()); 1201 root_delegated_shared_quad_state->clip_rect.ToString());
1196 // Quads came with a clip rect. 1202 // Quads came with a clip rect.
1197 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1203 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1198 1204
1199 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1205 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1200 host_impl_->DidDrawAllLayers(frame); 1206 host_impl_->DidDrawAllLayers(frame);
(...skipping 10 matching lines...) Expand all
1211 LayerTreeHostImpl::FrameData frame; 1217 LayerTreeHostImpl::FrameData frame;
1212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1218 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1213 1219
1214 ASSERT_EQ(3u, frame.render_passes.size()); 1220 ASSERT_EQ(3u, frame.render_passes.size());
1215 const QuadList& contrib_delegated_quad_list = 1221 const QuadList& contrib_delegated_quad_list =
1216 frame.render_passes[0]->quad_list; 1222 frame.render_passes[0]->quad_list;
1217 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1223 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1218 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1224 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1219 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1225 ASSERT_EQ(5u, root_delegated_quad_list.size());
1220 const SharedQuadState* root_delegated_shared_quad_state = 1226 const SharedQuadState* root_delegated_shared_quad_state =
1221 root_delegated_quad_list[0]->shared_quad_state; 1227 root_delegated_quad_list.front()->shared_quad_state;
1222 1228
1223 // When the layer owns a surface, the quads don't need to be clipped 1229 // When the layer owns a surface, the quads don't need to be clipped
1224 // further than they already specify. If they aren't clipped, then their 1230 // further than they already specify. If they aren't clipped, then their
1225 // clip rect is ignored, and they are not set as clipped. 1231 // clip rect is ignored, and they are not set as clipped.
1226 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); 1232 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped);
1227 1233
1228 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1234 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1229 host_impl_->DidDrawAllLayers(frame); 1235 host_impl_->DidDrawAllLayers(frame);
1230 } 1236 }
1231 1237
1232 TEST_F(DelegatedRendererLayerImplTestClip, 1238 TEST_F(DelegatedRendererLayerImplTestClip,
1233 QuadsClipped_LayerUnclipped_Surface) { 1239 QuadsClipped_LayerUnclipped_Surface) {
1234 root_delegated_render_pass_is_clipped_ = true; 1240 root_delegated_render_pass_is_clipped_ = true;
1235 clip_delegated_renderer_layer_ = false; 1241 clip_delegated_renderer_layer_ = false;
1236 SetUpTest(); 1242 SetUpTest();
1237 1243
1238 delegated_renderer_layer_->SetForceRenderSurface(true); 1244 delegated_renderer_layer_->SetForceRenderSurface(true);
1239 1245
1240 LayerTreeHostImpl::FrameData frame; 1246 LayerTreeHostImpl::FrameData frame;
1241 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1247 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1242 1248
1243 ASSERT_EQ(3u, frame.render_passes.size()); 1249 ASSERT_EQ(3u, frame.render_passes.size());
1244 const QuadList& contrib_delegated_quad_list = 1250 const QuadList& contrib_delegated_quad_list =
1245 frame.render_passes[0]->quad_list; 1251 frame.render_passes[0]->quad_list;
1246 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1252 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1247 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1253 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1248 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1254 ASSERT_EQ(5u, root_delegated_quad_list.size());
1249 const SharedQuadState* root_delegated_shared_quad_state = 1255 const SharedQuadState* root_delegated_shared_quad_state =
1250 root_delegated_quad_list[0]->shared_quad_state; 1256 root_delegated_quad_list.front()->shared_quad_state;
1251 1257
1252 // When the quads have a clip of their own, it is used. 1258 // When the quads have a clip of their own, it is used.
1253 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), 1259 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(),
1254 root_delegated_shared_quad_state->clip_rect.ToString()); 1260 root_delegated_shared_quad_state->clip_rect.ToString());
1255 // Quads came with a clip rect. 1261 // Quads came with a clip rect.
1256 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1262 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1257 1263
1258 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1264 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1259 host_impl_->DidDrawAllLayers(frame); 1265 host_impl_->DidDrawAllLayers(frame);
1260 } 1266 }
1261 1267
1262 TEST_F(DelegatedRendererLayerImplTestClip, 1268 TEST_F(DelegatedRendererLayerImplTestClip,
1263 QuadsUnclipped_LayerClipped_Surface) { 1269 QuadsUnclipped_LayerClipped_Surface) {
1264 root_delegated_render_pass_is_clipped_ = false; 1270 root_delegated_render_pass_is_clipped_ = false;
1265 clip_delegated_renderer_layer_ = true; 1271 clip_delegated_renderer_layer_ = true;
1266 SetUpTest(); 1272 SetUpTest();
1267 1273
1268 delegated_renderer_layer_->SetForceRenderSurface(true); 1274 delegated_renderer_layer_->SetForceRenderSurface(true);
1269 1275
1270 LayerTreeHostImpl::FrameData frame; 1276 LayerTreeHostImpl::FrameData frame;
1271 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1277 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1272 1278
1273 ASSERT_EQ(3u, frame.render_passes.size()); 1279 ASSERT_EQ(3u, frame.render_passes.size());
1274 const QuadList& contrib_delegated_quad_list = 1280 const QuadList& contrib_delegated_quad_list =
1275 frame.render_passes[0]->quad_list; 1281 frame.render_passes[0]->quad_list;
1276 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1282 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1277 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1283 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1278 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1284 ASSERT_EQ(5u, root_delegated_quad_list.size());
1279 const SharedQuadState* root_delegated_shared_quad_state = 1285 const SharedQuadState* root_delegated_shared_quad_state =
1280 root_delegated_quad_list[0]->shared_quad_state; 1286 root_delegated_quad_list.front()->shared_quad_state;
1281 1287
1282 // When the layer owns a surface, the quads don't need to be clipped 1288 // When the layer owns a surface, the quads don't need to be clipped
1283 // further than they already specify. If they aren't clipped, then their 1289 // further than they already specify. If they aren't clipped, then their
1284 // clip rect is ignored, and they are not set as clipped. 1290 // clip rect is ignored, and they are not set as clipped.
1285 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); 1291 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped);
1286 1292
1287 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1293 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1288 host_impl_->DidDrawAllLayers(frame); 1294 host_impl_->DidDrawAllLayers(frame);
1289 } 1295 }
1290 1296
1291 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { 1297 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) {
1292 root_delegated_render_pass_is_clipped_ = true; 1298 root_delegated_render_pass_is_clipped_ = true;
1293 clip_delegated_renderer_layer_ = true; 1299 clip_delegated_renderer_layer_ = true;
1294 SetUpTest(); 1300 SetUpTest();
1295 1301
1296 delegated_renderer_layer_->SetForceRenderSurface(true); 1302 delegated_renderer_layer_->SetForceRenderSurface(true);
1297 1303
1298 LayerTreeHostImpl::FrameData frame; 1304 LayerTreeHostImpl::FrameData frame;
1299 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1305 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1300 1306
1301 ASSERT_EQ(3u, frame.render_passes.size()); 1307 ASSERT_EQ(3u, frame.render_passes.size());
1302 const QuadList& contrib_delegated_quad_list = 1308 const QuadList& contrib_delegated_quad_list =
1303 frame.render_passes[0]->quad_list; 1309 frame.render_passes[0]->quad_list;
1304 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); 1310 ASSERT_EQ(2u, contrib_delegated_quad_list.size());
1305 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; 1311 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list;
1306 ASSERT_EQ(5u, root_delegated_quad_list.size()); 1312 ASSERT_EQ(5u, root_delegated_quad_list.size());
1307 const SharedQuadState* root_delegated_shared_quad_state = 1313 const SharedQuadState* root_delegated_shared_quad_state =
1308 root_delegated_quad_list[0]->shared_quad_state; 1314 root_delegated_quad_list.front()->shared_quad_state;
1309 1315
1310 // When the quads have a clip of their own, it is used, but it is 1316 // When the quads have a clip of their own, it is used, but it is
1311 // combined with the clip rect of the delegated renderer layer. If the 1317 // combined with the clip rect of the delegated renderer layer. If the
1312 // layer owns a surface, then it does not have a clip rect of its own. 1318 // layer owns a surface, then it does not have a clip rect of its own.
1313 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), 1319 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(),
1314 root_delegated_shared_quad_state->clip_rect.ToString()); 1320 root_delegated_shared_quad_state->clip_rect.ToString());
1315 // Quads came with a clip rect. 1321 // Quads came with a clip rect.
1316 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); 1322 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped);
1317 1323
1318 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1324 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); 1364 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>());
1359 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); 1365 host_impl_->active_tree()->SetRootLayer(root_layer.Pass());
1360 1366
1361 LayerTreeHostImpl::FrameData frame; 1367 LayerTreeHostImpl::FrameData frame;
1362 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); 1368 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame));
1363 1369
1364 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. 1370 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad.
1365 ASSERT_EQ(1u, frame.render_passes.size()); 1371 ASSERT_EQ(1u, frame.render_passes.size());
1366 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); 1372 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size());
1367 EXPECT_EQ(DrawQuad::SOLID_COLOR, 1373 EXPECT_EQ(DrawQuad::SOLID_COLOR,
1368 frame.render_passes[0]->quad_list[0]->material); 1374 frame.render_passes[0]->quad_list.front()->material);
1369 1375
1370 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); 1376 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
1371 host_impl_->DidDrawAllLayers(frame); 1377 host_impl_->DidDrawAllLayers(frame);
1372 } 1378 }
1373 1379
1374 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { 1380 TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
1375 gfx::Size layer_size(1000, 1000); 1381 gfx::Size layer_size(1000, 1000);
1376 gfx::Size viewport_size(1000, 1000); 1382 gfx::Size viewport_size(1000, 1000);
1377 gfx::Rect quad_screen_rect(211, 300, 400, 500); 1383 gfx::Rect quad_screen_rect(211, 300, 400, 500);
1378 1384
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1415 SCOPED_TRACE("No occlusion"); 1421 SCOPED_TRACE("No occlusion");
1416 gfx::Rect occluded; 1422 gfx::Rect occluded;
1417 1423
1418 { 1424 {
1419 SCOPED_TRACE("Root render pass"); 1425 SCOPED_TRACE("Root render pass");
1420 impl.AppendQuadsForPassWithOcclusion( 1426 impl.AppendQuadsForPassWithOcclusion(
1421 delegated_renderer_layer_impl, pass1_id, occluded); 1427 delegated_renderer_layer_impl, pass1_id, occluded);
1422 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), 1428 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(),
1423 quad_screen_rect); 1429 quad_screen_rect);
1424 ASSERT_EQ(1u, impl.quad_list().size()); 1430 ASSERT_EQ(1u, impl.quad_list().size());
1425 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list()[0]->material); 1431 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list().front()->material);
1426 } 1432 }
1427 { 1433 {
1428 SCOPED_TRACE("Contributing render pass"); 1434 SCOPED_TRACE("Contributing render pass");
1429 impl.AppendQuadsForPassWithOcclusion( 1435 impl.AppendQuadsForPassWithOcclusion(
1430 delegated_renderer_layer_impl, pass2_id, occluded); 1436 delegated_renderer_layer_impl, pass2_id, occluded);
1431 LayerTestCommon::VerifyQuadsExactlyCoverRect( 1437 LayerTestCommon::VerifyQuadsExactlyCoverRect(
1432 impl.quad_list(), gfx::Rect(quad_screen_rect.size())); 1438 impl.quad_list(), gfx::Rect(quad_screen_rect.size()));
1433 ASSERT_EQ(1u, impl.quad_list().size()); 1439 ASSERT_EQ(1u, impl.quad_list().size());
1434 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list()[0]->material); 1440 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list().front()->material);
1435 } 1441 }
1436 } 1442 }
1437 1443
1438 { 1444 {
1439 SCOPED_TRACE("Full occlusion"); 1445 SCOPED_TRACE("Full occlusion");
1440 { 1446 {
1441 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect()); 1447 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect());
1442 1448
1443 SCOPED_TRACE("Root render pass"); 1449 SCOPED_TRACE("Root render pass");
1444 impl.AppendQuadsForPassWithOcclusion( 1450 impl.AppendQuadsForPassWithOcclusion(
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1489 impl.quad_list(), 1495 impl.quad_list(),
1490 occlusion_in_target_of_delegated_quad, 1496 occlusion_in_target_of_delegated_quad,
1491 &partially_occluded_count); 1497 &partially_occluded_count);
1492 // The layer outputs one quad, which is partially occluded. 1498 // The layer outputs one quad, which is partially occluded.
1493 EXPECT_EQ(1u, impl.quad_list().size()); 1499 EXPECT_EQ(1u, impl.quad_list().size());
1494 EXPECT_EQ(1u, partially_occluded_count); 1500 EXPECT_EQ(1u, partially_occluded_count);
1495 // The quad in the contributing surface is at (211,300) in the root. 1501 // The quad in the contributing surface is at (211,300) in the root.
1496 // The occlusion extends to 500 in the x-axis, pushing the left of the 1502 // The occlusion extends to 500 in the x-axis, pushing the left of the
1497 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. 1503 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad.
1498 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), 1504 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(),
1499 impl.quad_list()[0]->visible_rect.ToString()); 1505 impl.quad_list().front()->visible_rect.ToString());
1500 } 1506 }
1501 { 1507 {
1502 gfx::Rect occlusion_in_root_target(0, 0, 500, 1000); 1508 gfx::Rect occlusion_in_root_target(0, 0, 500, 1000);
1503 // Move the occlusion to where it is in the contributing surface. 1509 // Move the occlusion to where it is in the contributing surface.
1504 gfx::Rect occlusion_in_target_of_delegated_quad = 1510 gfx::Rect occlusion_in_target_of_delegated_quad =
1505 occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin(); 1511 occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin();
1506 1512
1507 SCOPED_TRACE("Contributing render pass with transformed root"); 1513 SCOPED_TRACE("Contributing render pass with transformed root");
1508 1514
1509 gfx::Transform layer_transform; 1515 gfx::Transform layer_transform;
(...skipping 11 matching lines...) Expand all
1521 impl.quad_list(), 1527 impl.quad_list(),
1522 occlusion_in_target_of_delegated_quad, 1528 occlusion_in_target_of_delegated_quad,
1523 &partially_occluded_count); 1529 &partially_occluded_count);
1524 // The layer outputs one quad, which is partially occluded. 1530 // The layer outputs one quad, which is partially occluded.
1525 EXPECT_EQ(1u, impl.quad_list().size()); 1531 EXPECT_EQ(1u, impl.quad_list().size());
1526 EXPECT_EQ(1u, partially_occluded_count); 1532 EXPECT_EQ(1u, partially_occluded_count);
1527 // The quad in the contributing surface is at (222,300) in the transformed 1533 // The quad in the contributing surface is at (222,300) in the transformed
1528 // root. The occlusion extends to 500 in the x-axis, pushing the left of 1534 // root. The occlusion extends to 500 in the x-axis, pushing the left of
1529 // the visible part of the quad to 500 - 222 = 300 - 22 inside the quad. 1535 // the visible part of the quad to 500 - 222 = 300 - 22 inside the quad.
1530 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(), 1536 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(),
1531 impl.quad_list()[0]->visible_rect.ToString()); 1537 impl.quad_list().front()->visible_rect.ToString());
1532 } 1538 }
1533 } 1539 }
1534 } 1540 }
1535 1541
1536 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) { 1542 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) {
1537 gfx::Size layer_size(1000, 1000); 1543 gfx::Size layer_size(1000, 1000);
1538 1544
1539 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl = 1545 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl =
1540 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5); 1546 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5);
1541 delegated_renderer_layer_impl->SetBounds(layer_size); 1547 delegated_renderer_layer_impl->SetBounds(layer_size);
(...skipping 14 matching lines...) Expand all
1556 scoped_ptr<DelegatedRendererLayerImpl> other_layer = 1562 scoped_ptr<DelegatedRendererLayerImpl> other_layer =
1557 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); 1563 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6);
1558 1564
1559 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); 1565 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get());
1560 1566
1561 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); 1567 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor());
1562 } 1568 }
1563 1569
1564 } // namespace 1570 } // namespace
1565 } // namespace cc 1571 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698