| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/base/region.h" | 5 #include "cc/base/region.h" |
| 6 #include "cc/base/scoped_ptr_vector.h" | |
| 7 #include "cc/output/compositor_frame_metadata.h" | 6 #include "cc/output/compositor_frame_metadata.h" |
| 8 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
| 9 #include "cc/output/output_surface.h" | 8 #include "cc/output/output_surface.h" |
| 10 #include "cc/output/output_surface_client.h" | 9 #include "cc/output/output_surface_client.h" |
| 11 #include "cc/output/overlay_candidate_validator.h" | 10 #include "cc/output/overlay_candidate_validator.h" |
| 12 #include "cc/output/overlay_processor.h" | 11 #include "cc/output/overlay_processor.h" |
| 13 #include "cc/output/overlay_strategy_sandwich.h" | 12 #include "cc/output/overlay_strategy_sandwich.h" |
| 14 #include "cc/output/overlay_strategy_single_on_top.h" | 13 #include "cc/output/overlay_strategy_single_on_top.h" |
| 15 #include "cc/output/overlay_strategy_underlay.h" | 14 #include "cc/output/overlay_strategy_underlay.h" |
| 16 #include "cc/quads/render_pass.h" | 15 #include "cc/quads/render_pass.h" |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 const SharedQuadState* shared_quad_state, | 302 const SharedQuadState* shared_quad_state, |
| 304 RenderPass* render_pass) { | 303 RenderPass* render_pass) { |
| 305 CreateOpaqueQuadAt(resource_provider, shared_quad_state, render_pass, | 304 CreateOpaqueQuadAt(resource_provider, shared_quad_state, render_pass, |
| 306 kOverlayRect); | 305 kOverlayRect); |
| 307 } | 306 } |
| 308 | 307 |
| 309 static void CompareRenderPassLists(const RenderPassList& expected_list, | 308 static void CompareRenderPassLists(const RenderPassList& expected_list, |
| 310 const RenderPassList& actual_list) { | 309 const RenderPassList& actual_list) { |
| 311 EXPECT_EQ(expected_list.size(), actual_list.size()); | 310 EXPECT_EQ(expected_list.size(), actual_list.size()); |
| 312 for (size_t i = 0; i < actual_list.size(); ++i) { | 311 for (size_t i = 0; i < actual_list.size(); ++i) { |
| 313 RenderPass* expected = expected_list[i]; | 312 RenderPass* expected = expected_list[i].get(); |
| 314 RenderPass* actual = actual_list[i]; | 313 RenderPass* actual = actual_list[i].get(); |
| 315 | 314 |
| 316 EXPECT_EQ(expected->id, actual->id); | 315 EXPECT_EQ(expected->id, actual->id); |
| 317 EXPECT_EQ(expected->output_rect, actual->output_rect); | 316 EXPECT_EQ(expected->output_rect, actual->output_rect); |
| 318 EXPECT_EQ(expected->transform_to_root_target, | 317 EXPECT_EQ(expected->transform_to_root_target, |
| 319 actual->transform_to_root_target); | 318 actual->transform_to_root_target); |
| 320 EXPECT_EQ(expected->damage_rect, actual->damage_rect); | 319 EXPECT_EQ(expected->damage_rect, actual->damage_rect); |
| 321 EXPECT_EQ(expected->has_transparent_background, | 320 EXPECT_EQ(expected->has_transparent_background, |
| 322 actual->has_transparent_background); | 321 actual->has_transparent_background); |
| 323 | 322 |
| 324 EXPECT_EQ(expected->shared_quad_state_list.size(), | 323 EXPECT_EQ(expected->shared_quad_state_list.size(), |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 pass_list.push_back(pass.Pass()); | 411 pass_list.push_back(pass.Pass()); |
| 413 | 412 |
| 414 // Check for potential candidates. | 413 // Check for potential candidates. |
| 415 OverlayCandidateList candidate_list; | 414 OverlayCandidateList candidate_list; |
| 416 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 415 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 417 &candidate_list, &damage_rect_); | 416 &candidate_list, &damage_rect_); |
| 418 | 417 |
| 419 ASSERT_EQ(1U, pass_list.size()); | 418 ASSERT_EQ(1U, pass_list.size()); |
| 420 ASSERT_EQ(1U, candidate_list.size()); | 419 ASSERT_EQ(1U, candidate_list.size()); |
| 421 | 420 |
| 422 RenderPass* main_pass = pass_list.back(); | 421 RenderPass* main_pass = pass_list.back().get(); |
| 423 // Check that the quad is gone. | 422 // Check that the quad is gone. |
| 424 EXPECT_EQ(2U, main_pass->quad_list.size()); | 423 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 425 const QuadList& quad_list = main_pass->quad_list; | 424 const QuadList& quad_list = main_pass->quad_list; |
| 426 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 425 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 427 it != quad_list.BackToFrontEnd(); ++it) { | 426 it != quad_list.BackToFrontEnd(); ++it) { |
| 428 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 427 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 429 } | 428 } |
| 430 | 429 |
| 431 // Check that the right resource id got extracted. | 430 // Check that the right resource id got extracted. |
| 432 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); | 431 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 RenderPassList pass_list; | 550 RenderPassList pass_list; |
| 552 pass_list.push_back(pass.Pass()); | 551 pass_list.push_back(pass.Pass()); |
| 553 | 552 |
| 554 // Check for potential candidates. | 553 // Check for potential candidates. |
| 555 OverlayCandidateList candidate_list; | 554 OverlayCandidateList candidate_list; |
| 556 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 555 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 557 &candidate_list, &damage_rect_); | 556 &candidate_list, &damage_rect_); |
| 558 ASSERT_EQ(1U, pass_list.size()); | 557 ASSERT_EQ(1U, pass_list.size()); |
| 559 ASSERT_EQ(2U, candidate_list.size()); | 558 ASSERT_EQ(2U, candidate_list.size()); |
| 560 | 559 |
| 561 RenderPass* main_pass = pass_list.back(); | 560 RenderPass* main_pass = pass_list.back().get(); |
| 562 // Check that the quad is gone. | 561 // Check that the quad is gone. |
| 563 EXPECT_EQ(3U, main_pass->quad_list.size()); | 562 EXPECT_EQ(3U, main_pass->quad_list.size()); |
| 564 const QuadList& quad_list = main_pass->quad_list; | 563 const QuadList& quad_list = main_pass->quad_list; |
| 565 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 564 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 566 it != quad_list.BackToFrontEnd(); ++it) { | 565 it != quad_list.BackToFrontEnd(); ++it) { |
| 567 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 566 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 568 } | 567 } |
| 569 | 568 |
| 570 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 569 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); |
| 571 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[0].display_rect); | 570 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[0].display_rect); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 598 | 597 |
| 599 // Then some opaque background. | 598 // Then some opaque background. |
| 600 CreateOpaqueQuadAt(resource_provider_.get(), | 599 CreateOpaqueQuadAt(resource_provider_.get(), |
| 601 pass->shared_quad_state_list.back(), pass.get(), | 600 pass->shared_quad_state_list.back(), pass.get(), |
| 602 gfx::Rect(kDisplaySize)); | 601 gfx::Rect(kDisplaySize)); |
| 603 | 602 |
| 604 RenderPassList pass_list; | 603 RenderPassList pass_list; |
| 605 pass_list.push_back(pass.Pass()); | 604 pass_list.push_back(pass.Pass()); |
| 606 | 605 |
| 607 // Run the overlay strategy on that input. | 606 // Run the overlay strategy on that input. |
| 608 RenderPass* main_pass = pass_list.back(); | 607 RenderPass* main_pass = pass_list.back().get(); |
| 609 OverlayCandidateList candidate_list; | 608 OverlayCandidateList candidate_list; |
| 610 EXPECT_EQ(4U, main_pass->quad_list.size()); | 609 EXPECT_EQ(4U, main_pass->quad_list.size()); |
| 611 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 610 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 612 &candidate_list, &damage_rect_); | 611 &candidate_list, &damage_rect_); |
| 613 ASSERT_EQ(1U, pass_list.size()); | 612 ASSERT_EQ(1U, pass_list.size()); |
| 614 ASSERT_EQ(3U, candidate_list.size()); | 613 ASSERT_EQ(3U, candidate_list.size()); |
| 615 | 614 |
| 616 // Check that the candidate quad is gone and that we now have two transparent | 615 // Check that the candidate quad is gone and that we now have two transparent |
| 617 // quads for the same region that was covered on the overlay. | 616 // quads for the same region that was covered on the overlay. |
| 618 EXPECT_EQ(5U, main_pass->quad_list.size()); | 617 EXPECT_EQ(5U, main_pass->quad_list.size()); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 pass_list.push_back(pass.Pass()); | 691 pass_list.push_back(pass.Pass()); |
| 693 | 692 |
| 694 // Check for potential candidates. | 693 // Check for potential candidates. |
| 695 OverlayCandidateList candidate_list; | 694 OverlayCandidateList candidate_list; |
| 696 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 695 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 697 &candidate_list, &damage_rect_); | 696 &candidate_list, &damage_rect_); |
| 698 | 697 |
| 699 ASSERT_EQ(1U, pass_list.size()); | 698 ASSERT_EQ(1U, pass_list.size()); |
| 700 ASSERT_EQ(1U, candidate_list.size()); | 699 ASSERT_EQ(1U, candidate_list.size()); |
| 701 | 700 |
| 702 RenderPass* main_pass = pass_list.back(); | 701 RenderPass* main_pass = pass_list.back().get(); |
| 703 // Check that the quad is gone. | 702 // Check that the quad is gone. |
| 704 EXPECT_EQ(2U, main_pass->quad_list.size()); | 703 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 705 const QuadList& quad_list = main_pass->quad_list; | 704 const QuadList& quad_list = main_pass->quad_list; |
| 706 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 705 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 707 it != quad_list.BackToFrontEnd(); | 706 it != quad_list.BackToFrontEnd(); |
| 708 ++it) { | 707 ++it) { |
| 709 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 708 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 710 } | 709 } |
| 711 | 710 |
| 712 // Check that the right resource id got extracted. | 711 // Check that the right resource id got extracted. |
| (...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1339 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1338 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1340 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1339 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1341 pass->shared_quad_state_list.back(), | 1340 pass->shared_quad_state_list.back(), |
| 1342 pass.get()); | 1341 pass.get()); |
| 1343 pass->shared_quad_state_list.back() | 1342 pass->shared_quad_state_list.back() |
| 1344 ->quad_to_target_transform.RotateAboutZAxis(45.f); | 1343 ->quad_to_target_transform.RotateAboutZAxis(45.f); |
| 1345 | 1344 |
| 1346 RenderPassList pass_list; | 1345 RenderPassList pass_list; |
| 1347 pass_list.push_back(pass.Pass()); | 1346 pass_list.push_back(pass.Pass()); |
| 1348 CALayerOverlayList ca_layer_list; | 1347 CALayerOverlayList ca_layer_list; |
| 1349 OverlayCandidateList overlay_list(BackbufferOverlayList(pass_list.back())); | 1348 OverlayCandidateList overlay_list( |
| 1349 BackbufferOverlayList(pass_list.back().get())); |
| 1350 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1350 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
| 1351 &ca_layer_list, &overlay_list); | 1351 &ca_layer_list, &overlay_list); |
| 1352 ASSERT_EQ(1U, pass_list.size()); | 1352 ASSERT_EQ(1U, pass_list.size()); |
| 1353 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1353 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1354 EXPECT_EQ(0U, overlay_list.size()); | 1354 EXPECT_EQ(0U, overlay_list.size()); |
| 1355 EXPECT_EQ(1U, ca_layer_list.size()); | 1355 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1356 } | 1356 } |
| 1357 | 1357 |
| 1358 TEST_F(CALayerOverlayTest, Disallow3DTransform) { | 1358 TEST_F(CALayerOverlayTest, Disallow3DTransform) { |
| 1359 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1359 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1360 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1360 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1361 pass->shared_quad_state_list.back(), | 1361 pass->shared_quad_state_list.back(), |
| 1362 pass.get()); | 1362 pass.get()); |
| 1363 pass->shared_quad_state_list.back() | 1363 pass->shared_quad_state_list.back() |
| 1364 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 1364 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 1365 | 1365 |
| 1366 RenderPassList pass_list; | 1366 RenderPassList pass_list; |
| 1367 pass_list.push_back(pass.Pass()); | 1367 pass_list.push_back(pass.Pass()); |
| 1368 CALayerOverlayList ca_layer_list; | 1368 CALayerOverlayList ca_layer_list; |
| 1369 OverlayCandidateList overlay_list(BackbufferOverlayList(pass_list.back())); | 1369 OverlayCandidateList overlay_list( |
| 1370 BackbufferOverlayList(pass_list.back().get())); |
| 1370 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1371 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
| 1371 &ca_layer_list, &overlay_list); | 1372 &ca_layer_list, &overlay_list); |
| 1372 ASSERT_EQ(1U, pass_list.size()); | 1373 ASSERT_EQ(1U, pass_list.size()); |
| 1373 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); | 1374 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); |
| 1374 EXPECT_EQ(1U, overlay_list.size()); | 1375 EXPECT_EQ(1U, overlay_list.size()); |
| 1375 EXPECT_EQ(0U, ca_layer_list.size()); | 1376 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1376 } | 1377 } |
| 1377 | 1378 |
| 1378 TEST_F(CALayerOverlayTest, AllowContainingClip) { | 1379 TEST_F(CALayerOverlayTest, AllowContainingClip) { |
| 1379 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1380 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1380 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1381 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1381 pass->shared_quad_state_list.back(), | 1382 pass->shared_quad_state_list.back(), |
| 1382 pass.get()); | 1383 pass.get()); |
| 1383 pass->shared_quad_state_list.back()->is_clipped = true; | 1384 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1384 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; | 1385 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; |
| 1385 | 1386 |
| 1386 RenderPassList pass_list; | 1387 RenderPassList pass_list; |
| 1387 pass_list.push_back(pass.Pass()); | 1388 pass_list.push_back(pass.Pass()); |
| 1388 CALayerOverlayList ca_layer_list; | 1389 CALayerOverlayList ca_layer_list; |
| 1389 OverlayCandidateList overlay_list(BackbufferOverlayList(pass_list.back())); | 1390 OverlayCandidateList overlay_list( |
| 1391 BackbufferOverlayList(pass_list.back().get())); |
| 1390 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1392 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
| 1391 &ca_layer_list, &overlay_list); | 1393 &ca_layer_list, &overlay_list); |
| 1392 ASSERT_EQ(1U, pass_list.size()); | 1394 ASSERT_EQ(1U, pass_list.size()); |
| 1393 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1395 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1394 EXPECT_EQ(0U, overlay_list.size()); | 1396 EXPECT_EQ(0U, overlay_list.size()); |
| 1395 EXPECT_EQ(1U, ca_layer_list.size()); | 1397 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1396 } | 1398 } |
| 1397 | 1399 |
| 1398 TEST_F(CALayerOverlayTest, SkipDisjointClip) { | 1400 TEST_F(CALayerOverlayTest, SkipDisjointClip) { |
| 1399 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1401 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1400 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1402 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1401 pass->shared_quad_state_list.back(), | 1403 pass->shared_quad_state_list.back(), |
| 1402 pass.get()); | 1404 pass.get()); |
| 1403 pass->shared_quad_state_list.back()->is_clipped = true; | 1405 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1404 pass->shared_quad_state_list.back()->clip_rect = | 1406 pass->shared_quad_state_list.back()->clip_rect = |
| 1405 gfx::Rect(128, 128, 128, 128); | 1407 gfx::Rect(128, 128, 128, 128); |
| 1406 | 1408 |
| 1407 RenderPassList pass_list; | 1409 RenderPassList pass_list; |
| 1408 pass_list.push_back(pass.Pass()); | 1410 pass_list.push_back(pass.Pass()); |
| 1409 CALayerOverlayList ca_layer_list; | 1411 CALayerOverlayList ca_layer_list; |
| 1410 OverlayCandidateList overlay_list(BackbufferOverlayList(pass_list.back())); | 1412 OverlayCandidateList overlay_list( |
| 1413 BackbufferOverlayList(pass_list.back().get())); |
| 1411 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1414 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
| 1412 &ca_layer_list, &overlay_list); | 1415 &ca_layer_list, &overlay_list); |
| 1413 ASSERT_EQ(1U, pass_list.size()); | 1416 ASSERT_EQ(1U, pass_list.size()); |
| 1414 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1417 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1415 EXPECT_EQ(0U, overlay_list.size()); | 1418 EXPECT_EQ(0U, overlay_list.size()); |
| 1416 EXPECT_EQ(0U, ca_layer_list.size()); | 1419 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1417 } | 1420 } |
| 1418 | 1421 |
| 1419 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) { | 1422 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) { |
| 1420 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1423 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1421 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1424 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1422 pass->shared_quad_state_list.back(), | 1425 pass->shared_quad_state_list.back(), |
| 1423 pass.get()); | 1426 pass.get()); |
| 1424 pass->shared_quad_state_list.back()->is_clipped = true; | 1427 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1425 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); | 1428 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); |
| 1426 | 1429 |
| 1427 RenderPassList pass_list; | 1430 RenderPassList pass_list; |
| 1428 pass_list.push_back(pass.Pass()); | 1431 pass_list.push_back(pass.Pass()); |
| 1429 CALayerOverlayList ca_layer_list; | 1432 CALayerOverlayList ca_layer_list; |
| 1430 OverlayCandidateList overlay_list(BackbufferOverlayList(pass_list.back())); | 1433 OverlayCandidateList overlay_list( |
| 1434 BackbufferOverlayList(pass_list.back().get())); |
| 1431 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1435 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
| 1432 &ca_layer_list, &overlay_list); | 1436 &ca_layer_list, &overlay_list); |
| 1433 | 1437 |
| 1434 ASSERT_EQ(1U, pass_list.size()); | 1438 ASSERT_EQ(1U, pass_list.size()); |
| 1435 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); | 1439 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); |
| 1436 EXPECT_EQ(1U, overlay_list.size()); | 1440 EXPECT_EQ(1U, overlay_list.size()); |
| 1437 EXPECT_EQ(0U, ca_layer_list.size()); | 1441 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1438 } | 1442 } |
| 1439 | 1443 |
| 1440 TEST_F(CALayerOverlayTest, SkipTransparent) { | 1444 TEST_F(CALayerOverlayTest, SkipTransparent) { |
| 1441 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1445 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1442 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1446 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1443 pass->shared_quad_state_list.back(), | 1447 pass->shared_quad_state_list.back(), |
| 1444 pass.get()); | 1448 pass.get()); |
| 1445 pass->shared_quad_state_list.back()->opacity = 0; | 1449 pass->shared_quad_state_list.back()->opacity = 0; |
| 1446 | 1450 |
| 1447 RenderPassList pass_list; | 1451 RenderPassList pass_list; |
| 1448 pass_list.push_back(pass.Pass()); | 1452 pass_list.push_back(pass.Pass()); |
| 1449 CALayerOverlayList ca_layer_list; | 1453 CALayerOverlayList ca_layer_list; |
| 1450 OverlayCandidateList overlay_list(BackbufferOverlayList(pass_list.back())); | 1454 OverlayCandidateList overlay_list( |
| 1455 BackbufferOverlayList(pass_list.back().get())); |
| 1451 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1456 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
| 1452 &ca_layer_list, &overlay_list); | 1457 &ca_layer_list, &overlay_list); |
| 1453 ASSERT_EQ(1U, pass_list.size()); | 1458 ASSERT_EQ(1U, pass_list.size()); |
| 1454 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1459 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1455 EXPECT_EQ(0U, overlay_list.size()); | 1460 EXPECT_EQ(0U, overlay_list.size()); |
| 1456 EXPECT_EQ(0U, ca_layer_list.size()); | 1461 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1457 } | 1462 } |
| 1458 | 1463 |
| 1459 class OverlayInfoRendererGL : public GLRenderer { | 1464 class OverlayInfoRendererGL : public GLRenderer { |
| 1460 public: | 1465 public: |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1802 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1807 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1803 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1808 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1804 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1809 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1805 SwapBuffers(); | 1810 SwapBuffers(); |
| 1806 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1811 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1807 Mock::VerifyAndClearExpectations(&scheduler_); | 1812 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1808 } | 1813 } |
| 1809 | 1814 |
| 1810 } // namespace | 1815 } // namespace |
| 1811 } // namespace cc | 1816 } // namespace cc |
| OLD | NEW |