OLD | NEW |
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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 179 |
180 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 180 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
181 | 181 |
182 LayerTreeHostImpl::FrameData frame; | 182 LayerTreeHostImpl::FrameData frame; |
183 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 183 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
184 | 184 |
185 // Root layer has one render pass, and delegated renderer layer has two | 185 // Root layer has one render pass, and delegated renderer layer has two |
186 // contributing render passes and its own render pass. | 186 // contributing render passes and its own render pass. |
187 ASSERT_EQ(4u, frame.render_passes.size()); | 187 ASSERT_EQ(4u, frame.render_passes.size()); |
188 | 188 |
189 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 189 host_impl_->DrawLayers(&frame); |
190 host_impl_->DidDrawAllLayers(frame); | 190 host_impl_->DidDrawAllLayers(frame); |
191 } | 191 } |
192 { | 192 { |
193 // New frame makes delegated renderer layer loses its contributing render | 193 // New frame makes delegated renderer layer loses its contributing render |
194 // passes. | 194 // passes. |
195 RenderPassList delegated_render_passes; | 195 RenderPassList delegated_render_passes; |
196 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), | 196 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), |
197 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); | 197 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); |
198 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( | 198 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( |
199 1.f, delegated_render_passes); | 199 1.f, delegated_render_passes); |
200 | 200 |
201 // Force damage to redraw a new frame. | 201 // Force damage to redraw a new frame. |
202 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); | 202 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); |
203 | 203 |
204 LayerTreeHostImpl::FrameData frame; | 204 LayerTreeHostImpl::FrameData frame; |
205 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 205 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
206 | 206 |
207 // Each non-DelegatedRendererLayer added one RenderPass. The | 207 // Each non-DelegatedRendererLayer added one RenderPass. The |
208 // DelegatedRendererLayer added two contributing passes. | 208 // DelegatedRendererLayer added two contributing passes. |
209 ASSERT_EQ(1u, frame.render_passes.size()); | 209 ASSERT_EQ(1u, frame.render_passes.size()); |
210 | 210 |
211 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 211 host_impl_->DrawLayers(&frame); |
212 host_impl_->DidDrawAllLayers(frame); | 212 host_impl_->DidDrawAllLayers(frame); |
213 } | 213 } |
214 } | 214 } |
215 | 215 |
216 TEST_F(DelegatedRendererLayerImplTest, | 216 TEST_F(DelegatedRendererLayerImplTest, |
217 ChangeContributingRenderPassNonFullTreeSync) { | 217 ChangeContributingRenderPassNonFullTreeSync) { |
218 FakeDelegatedRendererLayerImpl* fake_delegated_renderer_layer_impl; | 218 FakeDelegatedRendererLayerImpl* fake_delegated_renderer_layer_impl; |
219 { | 219 { |
220 host_impl_->CreatePendingTree(); | 220 host_impl_->CreatePendingTree(); |
221 scoped_ptr<LayerImpl> root_layer = | 221 scoped_ptr<LayerImpl> root_layer = |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 host_impl_->pending_tree()->SetRootLayer(root_layer.Pass()); | 260 host_impl_->pending_tree()->SetRootLayer(root_layer.Pass()); |
261 host_impl_->ActivateSyncTree(); | 261 host_impl_->ActivateSyncTree(); |
262 | 262 |
263 LayerTreeHostImpl::FrameData frame; | 263 LayerTreeHostImpl::FrameData frame; |
264 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 264 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
265 | 265 |
266 // Root layer has one render pass, and delegated renderer layer has two | 266 // Root layer has one render pass, and delegated renderer layer has two |
267 // contributing render passes and its own render pass. | 267 // contributing render passes and its own render pass. |
268 ASSERT_EQ(4u, frame.render_passes.size()); | 268 ASSERT_EQ(4u, frame.render_passes.size()); |
269 | 269 |
270 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 270 host_impl_->DrawLayers(&frame); |
271 host_impl_->DidDrawAllLayers(frame); | 271 host_impl_->DidDrawAllLayers(frame); |
272 } | 272 } |
273 { | 273 { |
274 // Remove contributing render passes from the delegated renderer layer. | 274 // Remove contributing render passes from the delegated renderer layer. |
275 host_impl_->CreatePendingTree(); | 275 host_impl_->CreatePendingTree(); |
276 host_impl_->pending_tree()->set_needs_full_tree_sync(false); | 276 host_impl_->pending_tree()->set_needs_full_tree_sync(false); |
277 RenderPassList delegated_render_passes; | 277 RenderPassList delegated_render_passes; |
278 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), | 278 AddRenderPass(&delegated_render_passes, RenderPassId(9, 8), |
279 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); | 279 gfx::Rect(0, 0, 8, 8), gfx::Transform(1, 0, 0, 1, 9, 10)); |
280 | 280 |
281 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( | 281 fake_delegated_renderer_layer_impl->SetFrameDataForRenderPasses( |
282 1.f, delegated_render_passes); | 282 1.f, delegated_render_passes); |
283 | 283 |
284 // Force damage to redraw a new frame. | 284 // Force damage to redraw a new frame. |
285 | 285 |
286 host_impl_->ActivateSyncTree(); | 286 host_impl_->ActivateSyncTree(); |
287 host_impl_->SetViewportDamage(gfx::Rect(100, 100)); | 287 host_impl_->SetViewportDamage(gfx::Rect(100, 100)); |
288 LayerTreeHostImpl::FrameData frame; | 288 LayerTreeHostImpl::FrameData frame; |
289 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 289 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
290 | 290 |
291 // Root layer has one render pass, and delegated renderer layer no longer | 291 // Root layer has one render pass, and delegated renderer layer no longer |
292 // has contributing render passes. | 292 // has contributing render passes. |
293 ASSERT_EQ(1u, frame.render_passes.size()); | 293 ASSERT_EQ(1u, frame.render_passes.size()); |
294 | 294 |
295 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 295 host_impl_->DrawLayers(&frame); |
296 host_impl_->DidDrawAllLayers(frame); | 296 host_impl_->DidDrawAllLayers(frame); |
297 } | 297 } |
298 } | 298 } |
299 | 299 |
300 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { | 300 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { |
301 LayerTreeHostImpl::FrameData frame; | 301 LayerTreeHostImpl::FrameData frame; |
302 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 302 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
303 | 303 |
304 // Each non-DelegatedRendererLayer added one RenderPass. The | 304 // Each non-DelegatedRendererLayer added one RenderPass. The |
305 // DelegatedRendererLayer added two contributing passes. | 305 // DelegatedRendererLayer added two contributing passes. |
(...skipping 13 matching lines...) Expand all Loading... |
319 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); | 319 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); |
320 EXPECT_EQ(0, frame.render_passes[4]->id.index); | 320 EXPECT_EQ(0, frame.render_passes[4]->id.index); |
321 | 321 |
322 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 322 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
323 // in order. | 323 // in order. |
324 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 324 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
325 frame.render_passes[1]->output_rect.ToString()); | 325 frame.render_passes[1]->output_rect.ToString()); |
326 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 326 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
327 frame.render_passes[2]->output_rect.ToString()); | 327 frame.render_passes[2]->output_rect.ToString()); |
328 | 328 |
329 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 329 host_impl_->DrawLayers(&frame); |
330 host_impl_->DidDrawAllLayers(frame); | 330 host_impl_->DidDrawAllLayers(frame); |
331 } | 331 } |
332 | 332 |
333 TEST_F(DelegatedRendererLayerImplTestSimple, | 333 TEST_F(DelegatedRendererLayerImplTestSimple, |
334 AddsQuadsToContributingRenderPasses) { | 334 AddsQuadsToContributingRenderPasses) { |
335 LayerTreeHostImpl::FrameData frame; | 335 LayerTreeHostImpl::FrameData frame; |
336 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 336 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
337 | 337 |
338 // Each non-DelegatedRendererLayer added one RenderPass. The | 338 // Each non-DelegatedRendererLayer added one RenderPass. The |
339 // DelegatedRendererLayer added two contributing passes. | 339 // DelegatedRendererLayer added two contributing passes. |
(...skipping 15 matching lines...) Expand all Loading... |
355 // Verify it added the right quads. | 355 // Verify it added the right quads. |
356 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 356 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
357 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 357 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
358 frame.render_passes[2]->quad_list.front()->rect.ToString()); | 358 frame.render_passes[2]->quad_list.front()->rect.ToString()); |
359 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 359 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
360 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); | 360 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
361 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 361 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
362 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 362 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
363 frame.render_passes[1]->quad_list.front()->rect.ToString()); | 363 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
364 | 364 |
365 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 365 host_impl_->DrawLayers(&frame); |
366 host_impl_->DidDrawAllLayers(frame); | 366 host_impl_->DidDrawAllLayers(frame); |
367 } | 367 } |
368 | 368 |
369 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 369 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
370 LayerTreeHostImpl::FrameData frame; | 370 LayerTreeHostImpl::FrameData frame; |
371 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 371 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
372 | 372 |
373 // Each non-DelegatedRendererLayer added one RenderPass. The | 373 // Each non-DelegatedRendererLayer added one RenderPass. The |
374 // DelegatedRendererLayer added two contributing passes. | 374 // DelegatedRendererLayer added two contributing passes. |
375 ASSERT_EQ(5u, frame.render_passes.size()); | 375 ASSERT_EQ(5u, frame.render_passes.size()); |
376 | 376 |
377 // The layer's target is the RenderPass from layer_after_. | 377 // The layer's target is the RenderPass from layer_after_. |
378 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); | 378 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); |
379 | 379 |
380 // The DelegatedRendererLayer should have added copies of quads in its root | 380 // The DelegatedRendererLayer should have added copies of quads in its root |
381 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 381 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
382 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 382 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
383 | 383 |
384 // Verify it added the right quads. | 384 // Verify it added the right quads. |
385 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 385 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
386 frame.render_passes[3]->quad_list.front()->rect.ToString()); | 386 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
387 | 387 |
388 // Its target layer should have a quad as well. | 388 // Its target layer should have a quad as well. |
389 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 389 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
390 frame.render_passes[3]->quad_list.ElementAt(1)->rect.ToString()); | 390 frame.render_passes[3]->quad_list.ElementAt(1)->rect.ToString()); |
391 | 391 |
392 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 392 host_impl_->DrawLayers(&frame); |
393 host_impl_->DidDrawAllLayers(frame); | 393 host_impl_->DidDrawAllLayers(frame); |
394 } | 394 } |
395 | 395 |
396 TEST_F(DelegatedRendererLayerImplTestSimple, | 396 TEST_F(DelegatedRendererLayerImplTestSimple, |
397 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 397 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
398 LayerTreeHostImpl::FrameData frame; | 398 LayerTreeHostImpl::FrameData frame; |
399 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 399 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
400 | 400 |
401 // Each non-DelegatedRendererLayer added one RenderPass. The | 401 // Each non-DelegatedRendererLayer added one RenderPass. The |
402 // DelegatedRendererLayer added two contributing passes. | 402 // DelegatedRendererLayer added two contributing passes. |
(...skipping 14 matching lines...) Expand all Loading... |
417 gfx::Transform(), | 417 gfx::Transform(), |
418 frame.render_passes[2]->quad_list.front()->quadTransform()); | 418 frame.render_passes[2]->quad_list.front()->quadTransform()); |
419 EXPECT_TRANSFORMATION_MATRIX_EQ( | 419 EXPECT_TRANSFORMATION_MATRIX_EQ( |
420 gfx::Transform(), | 420 gfx::Transform(), |
421 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); | 421 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); |
422 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 422 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
423 EXPECT_TRANSFORMATION_MATRIX_EQ( | 423 EXPECT_TRANSFORMATION_MATRIX_EQ( |
424 gfx::Transform(), | 424 gfx::Transform(), |
425 frame.render_passes[1]->quad_list.front()->quadTransform()); | 425 frame.render_passes[1]->quad_list.front()->quadTransform()); |
426 | 426 |
427 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 427 host_impl_->DrawLayers(&frame); |
428 host_impl_->DidDrawAllLayers(frame); | 428 host_impl_->DidDrawAllLayers(frame); |
429 } | 429 } |
430 | 430 |
431 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 431 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
432 LayerTreeHostImpl::FrameData frame; | 432 LayerTreeHostImpl::FrameData frame; |
433 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 433 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
434 | 434 |
435 // The delegated layer has a surface between it and the root. | 435 // The delegated layer has a surface between it and the root. |
436 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); | 436 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); |
437 | 437 |
(...skipping 11 matching lines...) Expand all Loading... |
449 | 449 |
450 // The second contributing surface has a translation of 7, 8. | 450 // The second contributing surface has a translation of 7, 8. |
451 gfx::Transform seven_eight(1, 0, 0, 1, 7, 8); | 451 gfx::Transform seven_eight(1, 0, 0, 1, 7, 8); |
452 | 452 |
453 EXPECT_TRANSFORMATION_MATRIX_EQ( | 453 EXPECT_TRANSFORMATION_MATRIX_EQ( |
454 transform * five_six, frame.render_passes[1]->transform_to_root_target); | 454 transform * five_six, frame.render_passes[1]->transform_to_root_target); |
455 EXPECT_TRANSFORMATION_MATRIX_EQ( | 455 EXPECT_TRANSFORMATION_MATRIX_EQ( |
456 transform * seven_eight, | 456 transform * seven_eight, |
457 frame.render_passes[2]->transform_to_root_target); | 457 frame.render_passes[2]->transform_to_root_target); |
458 | 458 |
459 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 459 host_impl_->DrawLayers(&frame); |
460 host_impl_->DidDrawAllLayers(frame); | 460 host_impl_->DidDrawAllLayers(frame); |
461 } | 461 } |
462 | 462 |
463 class DelegatedRendererLayerImplTestOwnSurface | 463 class DelegatedRendererLayerImplTestOwnSurface |
464 : public DelegatedRendererLayerImplTestSimple { | 464 : public DelegatedRendererLayerImplTestSimple { |
465 public: | 465 public: |
466 DelegatedRendererLayerImplTestOwnSurface() | 466 DelegatedRendererLayerImplTestOwnSurface() |
467 : DelegatedRendererLayerImplTestSimple() { | 467 : DelegatedRendererLayerImplTestSimple() { |
468 delegated_renderer_layer_->SetHasRenderSurface(true); | 468 delegated_renderer_layer_->SetHasRenderSurface(true); |
469 } | 469 } |
(...skipping 26 matching lines...) Expand all Loading... |
496 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); | 496 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); |
497 EXPECT_EQ(0, frame.render_passes[5]->id.index); | 497 EXPECT_EQ(0, frame.render_passes[5]->id.index); |
498 | 498 |
499 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 499 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
500 // in order. | 500 // in order. |
501 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 501 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
502 frame.render_passes[1]->output_rect.ToString()); | 502 frame.render_passes[1]->output_rect.ToString()); |
503 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 503 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
504 frame.render_passes[2]->output_rect.ToString()); | 504 frame.render_passes[2]->output_rect.ToString()); |
505 | 505 |
506 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 506 host_impl_->DrawLayers(&frame); |
507 host_impl_->DidDrawAllLayers(frame); | 507 host_impl_->DidDrawAllLayers(frame); |
508 } | 508 } |
509 | 509 |
510 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 510 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
511 AddsQuadsToContributingRenderPasses) { | 511 AddsQuadsToContributingRenderPasses) { |
512 LayerTreeHostImpl::FrameData frame; | 512 LayerTreeHostImpl::FrameData frame; |
513 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 513 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
514 | 514 |
515 // Each non-DelegatedRendererLayer added one RenderPass. The | 515 // Each non-DelegatedRendererLayer added one RenderPass. The |
516 // DelegatedRendererLayer added two contributing passes and its owned surface | 516 // DelegatedRendererLayer added two contributing passes and its owned surface |
(...skipping 17 matching lines...) Expand all Loading... |
534 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 534 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
535 | 535 |
536 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 536 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
537 frame.render_passes[2]->quad_list.front()->rect.ToString()); | 537 frame.render_passes[2]->quad_list.front()->rect.ToString()); |
538 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 538 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
539 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); | 539 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
540 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 540 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
541 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 541 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
542 frame.render_passes[1]->quad_list.front()->rect.ToString()); | 542 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
543 | 543 |
544 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 544 host_impl_->DrawLayers(&frame); |
545 host_impl_->DidDrawAllLayers(frame); | 545 host_impl_->DidDrawAllLayers(frame); |
546 } | 546 } |
547 | 547 |
548 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 548 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
549 LayerTreeHostImpl::FrameData frame; | 549 LayerTreeHostImpl::FrameData frame; |
550 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 550 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
551 | 551 |
552 // Each non-DelegatedRendererLayer added one RenderPass. The | 552 // Each non-DelegatedRendererLayer added one RenderPass. The |
553 // DelegatedRendererLayer added two contributing passes and its owned surface | 553 // DelegatedRendererLayer added two contributing passes and its owned surface |
554 // added one pass. | 554 // added one pass. |
555 ASSERT_EQ(6u, frame.render_passes.size()); | 555 ASSERT_EQ(6u, frame.render_passes.size()); |
556 | 556 |
557 // The layer's target is the RenderPass owned by itself. | 557 // The layer's target is the RenderPass owned by itself. |
558 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); | 558 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); |
559 | 559 |
560 // The DelegatedRendererLayer should have added copies of quads in its root | 560 // The DelegatedRendererLayer should have added copies of quads in its root |
561 // RenderPass to its target RenderPass. | 561 // RenderPass to its target RenderPass. |
562 // The layer_after also adds one quad. | 562 // The layer_after also adds one quad. |
563 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 563 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
564 | 564 |
565 // Verify it added the right quads. | 565 // Verify it added the right quads. |
566 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 566 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
567 frame.render_passes[3]->quad_list.front()->rect.ToString()); | 567 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
568 | 568 |
569 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 569 host_impl_->DrawLayers(&frame); |
570 host_impl_->DidDrawAllLayers(frame); | 570 host_impl_->DidDrawAllLayers(frame); |
571 } | 571 } |
572 | 572 |
573 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 573 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
574 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 574 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
575 LayerTreeHostImpl::FrameData frame; | 575 LayerTreeHostImpl::FrameData frame; |
576 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 576 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
577 | 577 |
578 // Each non-DelegatedRendererLayer added one RenderPass. The | 578 // Each non-DelegatedRendererLayer added one RenderPass. The |
579 // DelegatedRendererLayer added two contributing passes and its owned surface | 579 // DelegatedRendererLayer added two contributing passes and its owned surface |
(...skipping 13 matching lines...) Expand all Loading... |
593 gfx::Transform(), | 593 gfx::Transform(), |
594 frame.render_passes[2]->quad_list.front()->quadTransform()); | 594 frame.render_passes[2]->quad_list.front()->quadTransform()); |
595 EXPECT_TRANSFORMATION_MATRIX_EQ( | 595 EXPECT_TRANSFORMATION_MATRIX_EQ( |
596 gfx::Transform(), | 596 gfx::Transform(), |
597 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); | 597 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); |
598 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 598 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
599 EXPECT_TRANSFORMATION_MATRIX_EQ( | 599 EXPECT_TRANSFORMATION_MATRIX_EQ( |
600 gfx::Transform(), | 600 gfx::Transform(), |
601 frame.render_passes[1]->quad_list.front()->quadTransform()); | 601 frame.render_passes[1]->quad_list.front()->quadTransform()); |
602 | 602 |
603 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 603 host_impl_->DrawLayers(&frame); |
604 host_impl_->DidDrawAllLayers(frame); | 604 host_impl_->DidDrawAllLayers(frame); |
605 } | 605 } |
606 | 606 |
607 class DelegatedRendererLayerImplTestTransform | 607 class DelegatedRendererLayerImplTestTransform |
608 : public DelegatedRendererLayerImplTest { | 608 : public DelegatedRendererLayerImplTest { |
609 public: | 609 public: |
610 DelegatedRendererLayerImplTestTransform() | 610 DelegatedRendererLayerImplTestTransform() |
611 : root_delegated_render_pass_is_clipped_(false), | 611 : root_delegated_render_pass_is_clipped_(false), |
612 delegated_device_scale_factor_(2.f) {} | 612 delegated_device_scale_factor_(2.f) {} |
613 | 613 |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 841 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
842 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 842 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
843 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 843 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
844 expected.MakeIdentity(); | 844 expected.MakeIdentity(); |
845 expected.Scale(0.8f, 0.8f); | 845 expected.Scale(0.8f, 0.8f); |
846 expected.Translate(9.0, 9.0); | 846 expected.Translate(9.0, 9.0); |
847 EXPECT_TRANSFORMATION_MATRIX_EQ( | 847 EXPECT_TRANSFORMATION_MATRIX_EQ( |
848 expected, | 848 expected, |
849 contrib_delegated_shared_quad_state->content_to_target_transform); | 849 contrib_delegated_shared_quad_state->content_to_target_transform); |
850 | 850 |
851 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 851 host_impl_->DrawLayers(&frame); |
852 host_impl_->DidDrawAllLayers(frame); | 852 host_impl_->DidDrawAllLayers(frame); |
853 } | 853 } |
854 | 854 |
855 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 855 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
856 root_delegated_render_pass_is_clipped_ = true; | 856 root_delegated_render_pass_is_clipped_ = true; |
857 SetUpTest(); | 857 SetUpTest(); |
858 | 858 |
859 LayerTreeHostImpl::FrameData frame; | 859 LayerTreeHostImpl::FrameData frame; |
860 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 860 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
861 | 861 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
900 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 900 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
901 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 901 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
902 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 902 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
903 expected.MakeIdentity(); | 903 expected.MakeIdentity(); |
904 expected.Scale(0.8f, 0.8f); | 904 expected.Scale(0.8f, 0.8f); |
905 expected.Translate(9.0, 9.0); | 905 expected.Translate(9.0, 9.0); |
906 EXPECT_TRANSFORMATION_MATRIX_EQ( | 906 EXPECT_TRANSFORMATION_MATRIX_EQ( |
907 expected, | 907 expected, |
908 contrib_delegated_shared_quad_state->content_to_target_transform); | 908 contrib_delegated_shared_quad_state->content_to_target_transform); |
909 | 909 |
910 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 910 host_impl_->DrawLayers(&frame); |
911 host_impl_->DidDrawAllLayers(frame); | 911 host_impl_->DidDrawAllLayers(frame); |
912 } | 912 } |
913 | 913 |
914 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 914 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
915 root_delegated_render_pass_is_clipped_ = false; | 915 root_delegated_render_pass_is_clipped_ = false; |
916 SetUpTest(); | 916 SetUpTest(); |
917 | 917 |
918 delegated_renderer_layer_->SetHasRenderSurface(true); | 918 delegated_renderer_layer_->SetHasRenderSurface(true); |
919 | 919 |
920 LayerTreeHostImpl::FrameData frame; | 920 LayerTreeHostImpl::FrameData frame; |
(...skipping 28 matching lines...) Expand all Loading... |
949 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 949 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
950 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 950 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
951 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 951 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
952 expected.MakeIdentity(); | 952 expected.MakeIdentity(); |
953 expected.Scale(0.8f, 0.8f); | 953 expected.Scale(0.8f, 0.8f); |
954 expected.Translate(9.0, 9.0); | 954 expected.Translate(9.0, 9.0); |
955 EXPECT_TRANSFORMATION_MATRIX_EQ( | 955 EXPECT_TRANSFORMATION_MATRIX_EQ( |
956 expected, | 956 expected, |
957 contrib_delegated_shared_quad_state->content_to_target_transform); | 957 contrib_delegated_shared_quad_state->content_to_target_transform); |
958 | 958 |
959 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 959 host_impl_->DrawLayers(&frame); |
960 host_impl_->DidDrawAllLayers(frame); | 960 host_impl_->DidDrawAllLayers(frame); |
961 } | 961 } |
962 | 962 |
963 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 963 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
964 root_delegated_render_pass_is_clipped_ = true; | 964 root_delegated_render_pass_is_clipped_ = true; |
965 SetUpTest(); | 965 SetUpTest(); |
966 | 966 |
967 delegated_renderer_layer_->SetHasRenderSurface(true); | 967 delegated_renderer_layer_->SetHasRenderSurface(true); |
968 | 968 |
969 LayerTreeHostImpl::FrameData frame; | 969 LayerTreeHostImpl::FrameData frame; |
(...skipping 27 matching lines...) Expand all Loading... |
997 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 997 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
998 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 998 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
999 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 999 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
1000 expected.MakeIdentity(); | 1000 expected.MakeIdentity(); |
1001 expected.Scale(0.8f, 0.8f); | 1001 expected.Scale(0.8f, 0.8f); |
1002 expected.Translate(9.0, 9.0); | 1002 expected.Translate(9.0, 9.0); |
1003 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1003 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1004 expected, | 1004 expected, |
1005 contrib_delegated_shared_quad_state->content_to_target_transform); | 1005 contrib_delegated_shared_quad_state->content_to_target_transform); |
1006 | 1006 |
1007 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1007 host_impl_->DrawLayers(&frame); |
1008 host_impl_->DidDrawAllLayers(frame); | 1008 host_impl_->DidDrawAllLayers(frame); |
1009 } | 1009 } |
1010 | 1010 |
1011 TEST_F(DelegatedRendererLayerImplTestTransform, MismatchedDeviceScaleFactor) { | 1011 TEST_F(DelegatedRendererLayerImplTestTransform, MismatchedDeviceScaleFactor) { |
1012 root_delegated_render_pass_is_clipped_ = true; | 1012 root_delegated_render_pass_is_clipped_ = true; |
1013 delegated_device_scale_factor_ = 1.3f; | 1013 delegated_device_scale_factor_ = 1.3f; |
1014 | 1014 |
1015 SetUpTest(); | 1015 SetUpTest(); |
1016 | 1016 |
1017 LayerTreeHostImpl::FrameData frame; | 1017 LayerTreeHostImpl::FrameData frame; |
(...skipping 18 matching lines...) Expand all Loading... |
1036 expected.Scale(2.0, 2.0); | 1036 expected.Scale(2.0, 2.0); |
1037 expected.Translate(8.0, 8.0); | 1037 expected.Translate(8.0, 8.0); |
1038 // This is the transform within the source frame. | 1038 // This is the transform within the source frame. |
1039 // Inverse device scale factor (from child). | 1039 // Inverse device scale factor (from child). |
1040 expected.Scale(1.0f / 1.3f, 1.0f / 1.3f); | 1040 expected.Scale(1.0f / 1.3f, 1.0f / 1.3f); |
1041 expected.Scale(1.5, 1.5); | 1041 expected.Scale(1.5, 1.5); |
1042 expected.Translate(7.0, 7.0); | 1042 expected.Translate(7.0, 7.0); |
1043 EXPECT_TRANSFORMATION_MATRIX_EQ( | 1043 EXPECT_TRANSFORMATION_MATRIX_EQ( |
1044 expected, root_delegated_shared_quad_state->content_to_target_transform); | 1044 expected, root_delegated_shared_quad_state->content_to_target_transform); |
1045 | 1045 |
1046 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1046 host_impl_->DrawLayers(&frame); |
1047 host_impl_->DidDrawAllLayers(frame); | 1047 host_impl_->DidDrawAllLayers(frame); |
1048 } | 1048 } |
1049 | 1049 |
1050 class DelegatedRendererLayerImplTestClip | 1050 class DelegatedRendererLayerImplTestClip |
1051 : public DelegatedRendererLayerImplTest { | 1051 : public DelegatedRendererLayerImplTest { |
1052 public: | 1052 public: |
1053 void SetUpTest() { | 1053 void SetUpTest() { |
1054 scoped_ptr<LayerImpl> root_layer = | 1054 scoped_ptr<LayerImpl> root_layer = |
1055 LayerImpl::Create(host_impl_->active_tree(), 1); | 1055 LayerImpl::Create(host_impl_->active_tree(), 1); |
1056 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 1056 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 const SharedQuadState* root_delegated_shared_quad_state = | 1223 const SharedQuadState* root_delegated_shared_quad_state = |
1224 root_delegated_quad_list.front()->shared_quad_state; | 1224 root_delegated_quad_list.front()->shared_quad_state; |
1225 | 1225 |
1226 // When the quads don't have a clip of their own, the clip rect is set to | 1226 // When the quads don't have a clip of their own, the clip rect is set to |
1227 // the drawable_content_rect of the delegated renderer layer. | 1227 // the drawable_content_rect of the delegated renderer layer. |
1228 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1228 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
1229 root_delegated_shared_quad_state->clip_rect.ToString()); | 1229 root_delegated_shared_quad_state->clip_rect.ToString()); |
1230 // Quads are clipped to the delegated renderer layer. | 1230 // Quads are clipped to the delegated renderer layer. |
1231 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1231 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1232 | 1232 |
1233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1233 host_impl_->DrawLayers(&frame); |
1234 host_impl_->DidDrawAllLayers(frame); | 1234 host_impl_->DidDrawAllLayers(frame); |
1235 } | 1235 } |
1236 | 1236 |
1237 TEST_F(DelegatedRendererLayerImplTestClip, | 1237 TEST_F(DelegatedRendererLayerImplTestClip, |
1238 QuadsClipped_LayerUnclipped_NoSurface) { | 1238 QuadsClipped_LayerUnclipped_NoSurface) { |
1239 root_delegated_render_pass_is_clipped_ = true; | 1239 root_delegated_render_pass_is_clipped_ = true; |
1240 clip_delegated_renderer_layer_ = false; | 1240 clip_delegated_renderer_layer_ = false; |
1241 SetUpTest(); | 1241 SetUpTest(); |
1242 | 1242 |
1243 LayerTreeHostImpl::FrameData frame; | 1243 LayerTreeHostImpl::FrameData frame; |
1244 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1244 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1245 | 1245 |
1246 ASSERT_EQ(2u, frame.render_passes.size()); | 1246 ASSERT_EQ(2u, frame.render_passes.size()); |
1247 const QuadList& contrib_delegated_quad_list = | 1247 const QuadList& contrib_delegated_quad_list = |
1248 frame.render_passes[0]->quad_list; | 1248 frame.render_passes[0]->quad_list; |
1249 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1249 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1250 const QuadList& root_delegated_quad_list = | 1250 const QuadList& root_delegated_quad_list = |
1251 frame.render_passes[1]->quad_list; | 1251 frame.render_passes[1]->quad_list; |
1252 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1252 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1253 const SharedQuadState* root_delegated_shared_quad_state = | 1253 const SharedQuadState* root_delegated_shared_quad_state = |
1254 root_delegated_quad_list.front()->shared_quad_state; | 1254 root_delegated_quad_list.front()->shared_quad_state; |
1255 | 1255 |
1256 // When the quads have a clip of their own, it is used. | 1256 // When the quads have a clip of their own, it is used. |
1257 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1257 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
1258 root_delegated_shared_quad_state->clip_rect.ToString()); | 1258 root_delegated_shared_quad_state->clip_rect.ToString()); |
1259 // Quads came with a clip rect. | 1259 // Quads came with a clip rect. |
1260 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1260 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1261 | 1261 |
1262 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1262 host_impl_->DrawLayers(&frame); |
1263 host_impl_->DidDrawAllLayers(frame); | 1263 host_impl_->DidDrawAllLayers(frame); |
1264 } | 1264 } |
1265 | 1265 |
1266 TEST_F(DelegatedRendererLayerImplTestClip, | 1266 TEST_F(DelegatedRendererLayerImplTestClip, |
1267 QuadsUnclipped_LayerClipped_NoSurface) { | 1267 QuadsUnclipped_LayerClipped_NoSurface) { |
1268 root_delegated_render_pass_is_clipped_ = false; | 1268 root_delegated_render_pass_is_clipped_ = false; |
1269 clip_delegated_renderer_layer_ = true; | 1269 clip_delegated_renderer_layer_ = true; |
1270 SetUpTest(); | 1270 SetUpTest(); |
1271 | 1271 |
1272 LayerTreeHostImpl::FrameData frame; | 1272 LayerTreeHostImpl::FrameData frame; |
1273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1274 | 1274 |
1275 ASSERT_EQ(2u, frame.render_passes.size()); | 1275 ASSERT_EQ(2u, frame.render_passes.size()); |
1276 const QuadList& contrib_delegated_quad_list = | 1276 const QuadList& contrib_delegated_quad_list = |
1277 frame.render_passes[0]->quad_list; | 1277 frame.render_passes[0]->quad_list; |
1278 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1278 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1279 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1279 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1280 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1280 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1281 const SharedQuadState* root_delegated_shared_quad_state = | 1281 const SharedQuadState* root_delegated_shared_quad_state = |
1282 root_delegated_quad_list.front()->shared_quad_state; | 1282 root_delegated_quad_list.front()->shared_quad_state; |
1283 | 1283 |
1284 // When the quads don't have a clip of their own, the clip rect is set to | 1284 // When the quads don't have a clip of their own, the clip rect is set to |
1285 // the drawable_content_rect of the delegated renderer layer. When the layer | 1285 // the drawable_content_rect of the delegated renderer layer. When the layer |
1286 // is clipped, that should be seen in the quads' clip_rect. | 1286 // is clipped, that should be seen in the quads' clip_rect. |
1287 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1287 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
1288 root_delegated_shared_quad_state->clip_rect.ToString()); | 1288 root_delegated_shared_quad_state->clip_rect.ToString()); |
1289 // Quads are clipped to the delegated renderer layer. | 1289 // Quads are clipped to the delegated renderer layer. |
1290 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1290 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1291 | 1291 |
1292 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1292 host_impl_->DrawLayers(&frame); |
1293 host_impl_->DidDrawAllLayers(frame); | 1293 host_impl_->DidDrawAllLayers(frame); |
1294 } | 1294 } |
1295 | 1295 |
1296 TEST_F(DelegatedRendererLayerImplTestClip, | 1296 TEST_F(DelegatedRendererLayerImplTestClip, |
1297 QuadsClipped_LayerClipped_NoSurface) { | 1297 QuadsClipped_LayerClipped_NoSurface) { |
1298 root_delegated_render_pass_is_clipped_ = true; | 1298 root_delegated_render_pass_is_clipped_ = true; |
1299 clip_delegated_renderer_layer_ = true; | 1299 clip_delegated_renderer_layer_ = true; |
1300 SetUpTest(); | 1300 SetUpTest(); |
1301 | 1301 |
1302 LayerTreeHostImpl::FrameData frame; | 1302 LayerTreeHostImpl::FrameData frame; |
1303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1303 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1304 | 1304 |
1305 ASSERT_EQ(2u, frame.render_passes.size()); | 1305 ASSERT_EQ(2u, frame.render_passes.size()); |
1306 const QuadList& contrib_delegated_quad_list = | 1306 const QuadList& contrib_delegated_quad_list = |
1307 frame.render_passes[0]->quad_list; | 1307 frame.render_passes[0]->quad_list; |
1308 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1308 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1309 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1309 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1310 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1310 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1311 const SharedQuadState* root_delegated_shared_quad_state = | 1311 const SharedQuadState* root_delegated_shared_quad_state = |
1312 root_delegated_quad_list.front()->shared_quad_state; | 1312 root_delegated_quad_list.front()->shared_quad_state; |
1313 | 1313 |
1314 // When the quads have a clip of their own, it is used, but it is | 1314 // When the quads have a clip of their own, it is used, but it is |
1315 // combined with the clip rect of the delegated renderer layer. | 1315 // combined with the clip rect of the delegated renderer layer. |
1316 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), | 1316 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), |
1317 root_delegated_shared_quad_state->clip_rect.ToString()); | 1317 root_delegated_shared_quad_state->clip_rect.ToString()); |
1318 // Quads came with a clip rect. | 1318 // Quads came with a clip rect. |
1319 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1319 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1320 | 1320 |
1321 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1321 host_impl_->DrawLayers(&frame); |
1322 host_impl_->DidDrawAllLayers(frame); | 1322 host_impl_->DidDrawAllLayers(frame); |
1323 } | 1323 } |
1324 | 1324 |
1325 TEST_F(DelegatedRendererLayerImplTestClip, | 1325 TEST_F(DelegatedRendererLayerImplTestClip, |
1326 QuadsUnclipped_LayerUnclipped_Surface) { | 1326 QuadsUnclipped_LayerUnclipped_Surface) { |
1327 root_delegated_render_pass_is_clipped_ = false; | 1327 root_delegated_render_pass_is_clipped_ = false; |
1328 clip_delegated_renderer_layer_ = false; | 1328 clip_delegated_renderer_layer_ = false; |
1329 SetUpTest(); | 1329 SetUpTest(); |
1330 | 1330 |
1331 delegated_renderer_layer_->SetHasRenderSurface(true); | 1331 delegated_renderer_layer_->SetHasRenderSurface(true); |
1332 | 1332 |
1333 LayerTreeHostImpl::FrameData frame; | 1333 LayerTreeHostImpl::FrameData frame; |
1334 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1334 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1335 | 1335 |
1336 ASSERT_EQ(3u, frame.render_passes.size()); | 1336 ASSERT_EQ(3u, frame.render_passes.size()); |
1337 const QuadList& contrib_delegated_quad_list = | 1337 const QuadList& contrib_delegated_quad_list = |
1338 frame.render_passes[0]->quad_list; | 1338 frame.render_passes[0]->quad_list; |
1339 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1339 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1340 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1340 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1341 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1341 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1342 const SharedQuadState* root_delegated_shared_quad_state = | 1342 const SharedQuadState* root_delegated_shared_quad_state = |
1343 root_delegated_quad_list.front()->shared_quad_state; | 1343 root_delegated_quad_list.front()->shared_quad_state; |
1344 | 1344 |
1345 // When the layer owns a surface, the quads don't need to be clipped | 1345 // When the layer owns a surface, the quads don't need to be clipped |
1346 // further than they already specify. If they aren't clipped, then their | 1346 // further than they already specify. If they aren't clipped, then their |
1347 // clip rect is ignored, and they are not set as clipped. | 1347 // clip rect is ignored, and they are not set as clipped. |
1348 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1348 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1349 | 1349 |
1350 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1350 host_impl_->DrawLayers(&frame); |
1351 host_impl_->DidDrawAllLayers(frame); | 1351 host_impl_->DidDrawAllLayers(frame); |
1352 } | 1352 } |
1353 | 1353 |
1354 TEST_F(DelegatedRendererLayerImplTestClip, | 1354 TEST_F(DelegatedRendererLayerImplTestClip, |
1355 QuadsClipped_LayerUnclipped_Surface) { | 1355 QuadsClipped_LayerUnclipped_Surface) { |
1356 root_delegated_render_pass_is_clipped_ = true; | 1356 root_delegated_render_pass_is_clipped_ = true; |
1357 clip_delegated_renderer_layer_ = false; | 1357 clip_delegated_renderer_layer_ = false; |
1358 SetUpTest(); | 1358 SetUpTest(); |
1359 | 1359 |
1360 delegated_renderer_layer_->SetHasRenderSurface(true); | 1360 delegated_renderer_layer_->SetHasRenderSurface(true); |
1361 | 1361 |
1362 LayerTreeHostImpl::FrameData frame; | 1362 LayerTreeHostImpl::FrameData frame; |
1363 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1363 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1364 | 1364 |
1365 ASSERT_EQ(3u, frame.render_passes.size()); | 1365 ASSERT_EQ(3u, frame.render_passes.size()); |
1366 const QuadList& contrib_delegated_quad_list = | 1366 const QuadList& contrib_delegated_quad_list = |
1367 frame.render_passes[0]->quad_list; | 1367 frame.render_passes[0]->quad_list; |
1368 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1368 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1369 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1369 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1370 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1370 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1371 const SharedQuadState* root_delegated_shared_quad_state = | 1371 const SharedQuadState* root_delegated_shared_quad_state = |
1372 root_delegated_quad_list.front()->shared_quad_state; | 1372 root_delegated_quad_list.front()->shared_quad_state; |
1373 | 1373 |
1374 // When the quads have a clip of their own, it is used. | 1374 // When the quads have a clip of their own, it is used. |
1375 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1375 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1376 root_delegated_shared_quad_state->clip_rect.ToString()); | 1376 root_delegated_shared_quad_state->clip_rect.ToString()); |
1377 // Quads came with a clip rect. | 1377 // Quads came with a clip rect. |
1378 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1378 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1379 | 1379 |
1380 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1380 host_impl_->DrawLayers(&frame); |
1381 host_impl_->DidDrawAllLayers(frame); | 1381 host_impl_->DidDrawAllLayers(frame); |
1382 } | 1382 } |
1383 | 1383 |
1384 TEST_F(DelegatedRendererLayerImplTestClip, | 1384 TEST_F(DelegatedRendererLayerImplTestClip, |
1385 QuadsUnclipped_LayerClipped_Surface) { | 1385 QuadsUnclipped_LayerClipped_Surface) { |
1386 root_delegated_render_pass_is_clipped_ = false; | 1386 root_delegated_render_pass_is_clipped_ = false; |
1387 clip_delegated_renderer_layer_ = true; | 1387 clip_delegated_renderer_layer_ = true; |
1388 SetUpTest(); | 1388 SetUpTest(); |
1389 | 1389 |
1390 delegated_renderer_layer_->SetHasRenderSurface(true); | 1390 delegated_renderer_layer_->SetHasRenderSurface(true); |
1391 | 1391 |
1392 LayerTreeHostImpl::FrameData frame; | 1392 LayerTreeHostImpl::FrameData frame; |
1393 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1393 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1394 | 1394 |
1395 ASSERT_EQ(3u, frame.render_passes.size()); | 1395 ASSERT_EQ(3u, frame.render_passes.size()); |
1396 const QuadList& contrib_delegated_quad_list = | 1396 const QuadList& contrib_delegated_quad_list = |
1397 frame.render_passes[0]->quad_list; | 1397 frame.render_passes[0]->quad_list; |
1398 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1398 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1399 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1399 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1400 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1400 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1401 const SharedQuadState* root_delegated_shared_quad_state = | 1401 const SharedQuadState* root_delegated_shared_quad_state = |
1402 root_delegated_quad_list.front()->shared_quad_state; | 1402 root_delegated_quad_list.front()->shared_quad_state; |
1403 | 1403 |
1404 // When the layer owns a surface, the quads don't need to be clipped | 1404 // When the layer owns a surface, the quads don't need to be clipped |
1405 // further than they already specify. If they aren't clipped, then their | 1405 // further than they already specify. If they aren't clipped, then their |
1406 // clip rect is ignored, and they are not set as clipped. | 1406 // clip rect is ignored, and they are not set as clipped. |
1407 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1407 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1408 | 1408 |
1409 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1409 host_impl_->DrawLayers(&frame); |
1410 host_impl_->DidDrawAllLayers(frame); | 1410 host_impl_->DidDrawAllLayers(frame); |
1411 } | 1411 } |
1412 | 1412 |
1413 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1413 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
1414 root_delegated_render_pass_is_clipped_ = true; | 1414 root_delegated_render_pass_is_clipped_ = true; |
1415 clip_delegated_renderer_layer_ = true; | 1415 clip_delegated_renderer_layer_ = true; |
1416 SetUpTest(); | 1416 SetUpTest(); |
1417 | 1417 |
1418 delegated_renderer_layer_->SetHasRenderSurface(true); | 1418 delegated_renderer_layer_->SetHasRenderSurface(true); |
1419 | 1419 |
(...skipping 10 matching lines...) Expand all Loading... |
1430 root_delegated_quad_list.front()->shared_quad_state; | 1430 root_delegated_quad_list.front()->shared_quad_state; |
1431 | 1431 |
1432 // When the quads have a clip of their own, it is used, but it is | 1432 // When the quads have a clip of their own, it is used, but it is |
1433 // combined with the clip rect of the delegated renderer layer. If the | 1433 // combined with the clip rect of the delegated renderer layer. If the |
1434 // layer owns a surface, then it does not have a clip rect of its own. | 1434 // layer owns a surface, then it does not have a clip rect of its own. |
1435 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1435 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1436 root_delegated_shared_quad_state->clip_rect.ToString()); | 1436 root_delegated_shared_quad_state->clip_rect.ToString()); |
1437 // Quads came with a clip rect. | 1437 // Quads came with a clip rect. |
1438 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1438 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1439 | 1439 |
1440 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1440 host_impl_->DrawLayers(&frame); |
1441 host_impl_->DidDrawAllLayers(frame); | 1441 host_impl_->DidDrawAllLayers(frame); |
1442 } | 1442 } |
1443 | 1443 |
1444 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { | 1444 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { |
1445 gfx::Size layer_size(1000, 1000); | 1445 gfx::Size layer_size(1000, 1000); |
1446 gfx::Size viewport_size(1000, 1000); | 1446 gfx::Size viewport_size(1000, 1000); |
1447 gfx::Rect quad_screen_rect(211, 300, 400, 500); | 1447 gfx::Rect quad_screen_rect(211, 300, 400, 500); |
1448 | 1448 |
1449 gfx::Transform transform; | 1449 gfx::Transform transform; |
1450 transform.Translate(211.0, 300.0); | 1450 transform.Translate(211.0, 300.0); |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1694 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
1695 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1695 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
1696 | 1696 |
1697 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1697 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
1698 | 1698 |
1699 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1699 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
1700 } | 1700 } |
1701 | 1701 |
1702 } // namespace | 1702 } // namespace |
1703 } // namespace cc | 1703 } // namespace cc |
OLD | NEW |