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

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 rebase 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());
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_rect(200, 300, 400, 500); 1383 gfx::Rect quad_rect(200, 300, 400, 500);
1378 1384
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1414 SCOPED_TRACE("No occlusion"); 1420 SCOPED_TRACE("No occlusion");
1415 gfx::Rect occluded; 1421 gfx::Rect occluded;
1416 1422
1417 { 1423 {
1418 SCOPED_TRACE("Root render pass"); 1424 SCOPED_TRACE("Root render pass");
1419 impl.AppendQuadsForPassWithOcclusion( 1425 impl.AppendQuadsForPassWithOcclusion(
1420 delegated_renderer_layer_impl, pass1_id, occluded); 1426 delegated_renderer_layer_impl, pass1_id, occluded);
1421 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), 1427 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(),
1422 quad_screen_rect); 1428 quad_screen_rect);
1423 ASSERT_EQ(1u, impl.quad_list().size()); 1429 ASSERT_EQ(1u, impl.quad_list().size());
1424 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list()[0]->material); 1430 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list().front()->material);
1425 } 1431 }
1426 { 1432 {
1427 SCOPED_TRACE("Contributing render pass"); 1433 SCOPED_TRACE("Contributing render pass");
1428 impl.AppendQuadsForPassWithOcclusion( 1434 impl.AppendQuadsForPassWithOcclusion(
1429 delegated_renderer_layer_impl, pass2_id, occluded); 1435 delegated_renderer_layer_impl, pass2_id, occluded);
1430 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), 1436 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(),
1431 gfx::Rect(quad_rect.size())); 1437 gfx::Rect(quad_rect.size()));
1432 ASSERT_EQ(1u, impl.quad_list().size()); 1438 ASSERT_EQ(1u, impl.quad_list().size());
1433 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list()[0]->material); 1439 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list().front()->material);
1434 } 1440 }
1435 } 1441 }
1436 1442
1437 { 1443 {
1438 SCOPED_TRACE("Full occlusion"); 1444 SCOPED_TRACE("Full occlusion");
1439 { 1445 {
1440 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect()); 1446 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect());
1441 1447
1442 SCOPED_TRACE("Root render pass"); 1448 SCOPED_TRACE("Root render pass");
1443 impl.AppendQuadsForPassWithOcclusion( 1449 impl.AppendQuadsForPassWithOcclusion(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1492 gfx::Rect(quad_rect.size()), 1498 gfx::Rect(quad_rect.size()),
1493 occluded, 1499 occluded,
1494 &partially_occluded_count); 1500 &partially_occluded_count);
1495 // The layer outputs one quad, which is partially occluded. 1501 // The layer outputs one quad, which is partially occluded.
1496 EXPECT_EQ(1u, impl.quad_list().size()); 1502 EXPECT_EQ(1u, impl.quad_list().size());
1497 EXPECT_EQ(1u, partially_occluded_count); 1503 EXPECT_EQ(1u, partially_occluded_count);
1498 // The quad in the contributing surface is at (211,300) in the root. 1504 // The quad in the contributing surface is at (211,300) in the root.
1499 // The occlusion extends to 500 in the x-axis, pushing the left of the 1505 // The occlusion extends to 500 in the x-axis, pushing the left of the
1500 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. 1506 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad.
1501 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), 1507 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(),
1502 impl.quad_list()[0]->visible_rect.ToString()); 1508 impl.quad_list().front()->visible_rect.ToString());
1503 } 1509 }
1504 } 1510 }
1505 { 1511 {
1506 gfx::Rect occluded(0, 0, 500, 1000); 1512 gfx::Rect occluded(0, 0, 500, 1000);
1507 // Move the occlusion to where it is in the contributing surface. 1513 // Move the occlusion to where it is in the contributing surface.
1508 occluded -= quad_rect.OffsetFromOrigin() + gfx::Vector2d(11, 0); 1514 occluded -= quad_rect.OffsetFromOrigin() + gfx::Vector2d(11, 0);
1509 1515
1510 SCOPED_TRACE("Contributing render pass with transformed root"); 1516 SCOPED_TRACE("Contributing render pass with transformed root");
1511 1517
1512 delegated_renderer_layer_impl->SetTransform(transform); 1518 delegated_renderer_layer_impl->SetTransform(transform);
1513 impl.CalcDrawProps(viewport_size); 1519 impl.CalcDrawProps(viewport_size);
1514 1520
1515 impl.AppendQuadsForPassWithOcclusion( 1521 impl.AppendQuadsForPassWithOcclusion(
1516 delegated_renderer_layer_impl, pass2_id, occluded); 1522 delegated_renderer_layer_impl, pass2_id, occluded);
1517 size_t partially_occluded_count = 0; 1523 size_t partially_occluded_count = 0;
1518 LayerTestCommon::VerifyQuadsCoverRectWithOcclusion( 1524 LayerTestCommon::VerifyQuadsCoverRectWithOcclusion(
1519 impl.quad_list(), 1525 impl.quad_list(),
1520 gfx::Rect(quad_rect.size()), 1526 gfx::Rect(quad_rect.size()),
1521 occluded, 1527 occluded,
1522 &partially_occluded_count); 1528 &partially_occluded_count);
1523 // The layer outputs one quad, which is partially occluded. 1529 // The layer outputs one quad, which is partially occluded.
1524 EXPECT_EQ(1u, impl.quad_list().size()); 1530 EXPECT_EQ(1u, impl.quad_list().size());
1525 EXPECT_EQ(1u, partially_occluded_count); 1531 EXPECT_EQ(1u, partially_occluded_count);
1526 // The quad in the contributing surface is at (222,300) in the transformed 1532 // The quad in the contributing surface is at (222,300) in the transformed
1527 // root. The occlusion extends to 500 in the x-axis, pushing the left of the 1533 // root. The occlusion extends to 500 in the x-axis, pushing the left of the
1528 // visible part of the quad to 500 - 222 = 300 - 22 inside the quad. 1534 // visible part of the quad to 500 - 222 = 300 - 22 inside the quad.
1529 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(), 1535 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(),
1530 impl.quad_list()[0]->visible_rect.ToString()); 1536 impl.quad_list().front()->visible_rect.ToString());
1531 } 1537 }
1532 } 1538 }
1533 1539
1534 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) { 1540 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) {
1535 gfx::Size layer_size(1000, 1000); 1541 gfx::Size layer_size(1000, 1000);
1536 1542
1537 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl = 1543 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl =
1538 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5); 1544 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5);
1539 delegated_renderer_layer_impl->SetBounds(layer_size); 1545 delegated_renderer_layer_impl->SetBounds(layer_size);
1540 delegated_renderer_layer_impl->SetContentBounds(layer_size); 1546 delegated_renderer_layer_impl->SetContentBounds(layer_size);
(...skipping 13 matching lines...) Expand all
1554 scoped_ptr<DelegatedRendererLayerImpl> other_layer = 1560 scoped_ptr<DelegatedRendererLayerImpl> other_layer =
1555 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); 1561 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6);
1556 1562
1557 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); 1563 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get());
1558 1564
1559 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); 1565 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor());
1560 } 1566 }
1561 1567
1562 } // namespace 1568 } // namespace
1563 } // namespace cc 1569 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698