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

Side by Side Diff: cc/output/overlay_unittest.cc

Issue 1330953002: Mac Overlays: Allow multiple overlays with sandwich strategy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2490
Patch Set: Created 5 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
« no previous file with comments | « cc/output/overlay_strategy_underlay.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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" 6 #include "cc/base/scoped_ptr_vector.h"
7 #include "cc/output/compositor_frame_metadata.h" 7 #include "cc/output/compositor_frame_metadata.h"
8 #include "cc/output/gl_renderer.h" 8 #include "cc/output/gl_renderer.h"
9 #include "cc/output/output_surface.h" 9 #include "cc/output/output_surface.h"
10 #include "cc/output/output_surface_client.h" 10 #include "cc/output/output_surface_client.h"
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 const QuadList& quad_list = main_pass->quad_list; 426 const QuadList& quad_list = main_pass->quad_list;
427 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); 427 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin();
428 it != quad_list.BackToFrontEnd(); ++it) { 428 it != quad_list.BackToFrontEnd(); ++it) {
429 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); 429 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
430 } 430 }
431 431
432 // Check that the right resource id got extracted. 432 // Check that the right resource id got extracted.
433 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); 433 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id);
434 } 434 }
435 435
436 TEST_F(SandwichTest, SuccessfulTwoOverlays) {
437 scoped_ptr<RenderPass> pass = CreateRenderPass();
438
439 // Add two non-overlapping candidates.
440 CreateCandidateQuadAt(resource_provider_.get(),
441 pass->shared_quad_state_list.back(), pass.get(),
442 kOverlayTopLeftRect);
443 CreateCandidateQuadAt(resource_provider_.get(),
444 pass->shared_quad_state_list.back(), pass.get(),
445 kOverlayBottomRightRect);
446
447 // Add something behind it.
448 CreateFullscreenOpaqueQuad(resource_provider_.get(),
449 pass->shared_quad_state_list.back(), pass.get());
450
451 RenderPassList pass_list;
452 pass_list.push_back(pass.Pass());
453 OverlayCandidateList candidate_list;
454 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
455
456 // Both candidates should become overlays.
457 EXPECT_EQ(1u, pass_list.size());
458 EXPECT_EQ(3u, candidate_list.size());
459 EXPECT_EQ(kOverlayTopLeftRect, candidate_list[1].display_rect);
460 EXPECT_EQ(kOverlayBottomRightRect, candidate_list[2].display_rect);
461
462 // The overlay quads should be gone.
463 const QuadList& quad_list = pass_list.back()->quad_list;
464 EXPECT_EQ(1u, quad_list.size());
465 EXPECT_EQ(DrawQuad::SOLID_COLOR, quad_list.front()->material);
466 }
467
468 TEST_F(SandwichTest, OverlappingOverlays) {
469 scoped_ptr<RenderPass> pass = CreateRenderPass();
470
471 // Add two overlapping candidates.
472 CreateCandidateQuadAt(resource_provider_.get(),
473 pass->shared_quad_state_list.back(), pass.get(),
474 kOverlayTopLeftRect);
475 CreateCandidateQuadAt(resource_provider_.get(),
476 pass->shared_quad_state_list.back(), pass.get(),
477 kOverlayRect);
478
479 // Add something behind it.
480 CreateFullscreenOpaqueQuad(resource_provider_.get(),
481 pass->shared_quad_state_list.back(), pass.get());
482
483 RenderPassList pass_list;
484 pass_list.push_back(pass.Pass());
485 OverlayCandidateList candidate_list;
486 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
487
488 // Only one of the candidates should become an overlay.
489 EXPECT_EQ(1u, pass_list.size());
490 EXPECT_EQ(2u, candidate_list.size());
491 EXPECT_EQ(kOverlayTopLeftRect, candidate_list[1].display_rect);
492
493 // One of the overlay quads should be gone.
494 const QuadList& quad_list = pass_list.back()->quad_list;
495 EXPECT_EQ(2u, quad_list.size());
496 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, quad_list.front()->material);
497 EXPECT_EQ(DrawQuad::SOLID_COLOR, quad_list.back()->material);
498 }
499
436 TEST_F(SandwichTest, SuccessfulSandwichOverlay) { 500 TEST_F(SandwichTest, SuccessfulSandwichOverlay) {
437 scoped_ptr<RenderPass> pass = CreateRenderPass(); 501 scoped_ptr<RenderPass> pass = CreateRenderPass();
438 502
439 CreateOpaqueQuadAt(resource_provider_.get(), 503 CreateOpaqueQuadAt(resource_provider_.get(),
440 pass->shared_quad_state_list.back(), pass.get(), 504 pass->shared_quad_state_list.back(), pass.get(),
441 gfx::Rect(16, 16, 32, 32)); 505 gfx::Rect(16, 16, 32, 32));
442 unsigned candidate_id = 506 unsigned candidate_id =
443 CreateCandidateQuadAt(resource_provider_.get(), 507 CreateCandidateQuadAt(resource_provider_.get(),
444 pass->shared_quad_state_list.back(), pass.get(), 508 pass->shared_quad_state_list.back(), pass.get(),
445 gfx::Rect(32, 32, 32, 32)) 509 gfx::Rect(32, 32, 32, 32))
(...skipping 1104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 renderer_->BeginDrawingFrame(&frame_no_overlays); 1614 renderer_->BeginDrawingFrame(&frame_no_overlays);
1551 renderer_->FinishDrawingFrame(&frame_no_overlays); 1615 renderer_->FinishDrawingFrame(&frame_no_overlays);
1552 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1616 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1553 SwapBuffers(); 1617 SwapBuffers();
1554 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1618 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1555 Mock::VerifyAndClearExpectations(&scheduler_); 1619 Mock::VerifyAndClearExpectations(&scheduler_);
1556 } 1620 }
1557 1621
1558 } // namespace 1622 } // namespace
1559 } // namespace cc 1623 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_strategy_underlay.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698