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

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

Issue 1314943008: cc: Remove implicit conversions from Rect to RectF in src/cc/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rectfconvert-cc: rebase-and-sandwich-strategy 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') | cc/output/renderer_pixeltest.cc » ('j') | 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>( 62 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>(
63 new OverlayStrategyCommon(this, new OverlayStrategySingleOnTop))); 63 new OverlayStrategyCommon(this, new OverlayStrategySingleOnTop)));
64 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>( 64 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>(
65 new OverlayStrategyCommon(this, new OverlayStrategyUnderlay))); 65 new OverlayStrategyCommon(this, new OverlayStrategyUnderlay)));
66 } 66 }
67 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { 67 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {
68 ASSERT_EQ(2U, surfaces->size()); 68 ASSERT_EQ(2U, surfaces->size());
69 69
70 OverlayCandidate& candidate = surfaces->back(); 70 OverlayCandidate& candidate = surfaces->back();
71 if (candidate.display_rect.width() == 64) { 71 if (candidate.display_rect.width() == 64) {
72 EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect); 72 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect);
73 } else { 73 } else {
74 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); 74 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f);
75 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); 75 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f);
76 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); 76 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f);
77 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), 77 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(),
78 0.01f); 78 0.01f);
79 } 79 }
80 EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(), 80 EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight),
81 candidate.uv_rect.ToString()); 81 candidate.uv_rect);
82 candidate.overlay_handled = true; 82 candidate.overlay_handled = true;
83 } 83 }
84 }; 84 };
85 85
86 class SandwichOverlayValidator : public OverlayCandidateValidator { 86 class SandwichOverlayValidator : public OverlayCandidateValidator {
87 public: 87 public:
88 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { 88 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {
89 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>( 89 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>(
90 new OverlayStrategyCommon(this, new OverlayStrategySandwich))); 90 new OverlayStrategyCommon(this, new OverlayStrategySandwich)));
91 } 91 }
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 // Check that the quad is gone. 462 // Check that the quad is gone.
463 EXPECT_EQ(3U, main_pass->quad_list.size()); 463 EXPECT_EQ(3U, main_pass->quad_list.size());
464 const QuadList& quad_list = main_pass->quad_list; 464 const QuadList& quad_list = main_pass->quad_list;
465 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); 465 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin();
466 it != quad_list.BackToFrontEnd(); ++it) { 466 it != quad_list.BackToFrontEnd(); ++it) {
467 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); 467 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
468 } 468 }
469 469
470 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource); 470 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource);
471 EXPECT_EQ(candidate_id, candidate_list[1].resource_id); 471 EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
472 EXPECT_EQ(gfx::Rect(32, 32, 32, 32), candidate_list[1].display_rect); 472 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[1].display_rect);
473 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); 473 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
474 EXPECT_EQ(gfx::Rect(32, 32, 16, 16), candidate_list[2].display_rect); 474 EXPECT_EQ(gfx::RectF(32.f, 32.f, 16.f, 16.f), candidate_list[2].display_rect);
475 EXPECT_EQ(gfx::RectF(32. / 256, 32. / 256, 16. / 256, 16. / 256), 475 EXPECT_EQ(gfx::RectF(32.f / 256.f, 32.f / 256.f, 16.f / 256.f, 16.f / 256.f),
476 candidate_list[2].uv_rect); 476 candidate_list[2].uv_rect);
477 } 477 }
478 478
479 TEST_F(SandwichTest, GrowTopOverlayForToAlignWithDIP) { 479 TEST_F(SandwichTest, GrowTopOverlayForToAlignWithDIP) {
480 output_surface_->SetScaleFactor(2); 480 output_surface_->SetScaleFactor(2);
481 scoped_ptr<RenderPass> pass = CreateRenderPass(); 481 scoped_ptr<RenderPass> pass = CreateRenderPass();
482 482
483 // The opaque quad on top is not DIP aligned, so it should be enlarged to 483 // The opaque quad on top is not DIP aligned, so it should be enlarged to
484 // include the surrounding DIP. 484 // include the surrounding DIP.
485 CreateOpaqueQuadAt(resource_provider_.get(), 485 CreateOpaqueQuadAt(resource_provider_.get(),
(...skipping 21 matching lines...) Expand all
507 RenderPass* main_pass = pass_list.back(); 507 RenderPass* main_pass = pass_list.back();
508 EXPECT_EQ(3U, main_pass->quad_list.size()); 508 EXPECT_EQ(3U, main_pass->quad_list.size());
509 const QuadList& quad_list = main_pass->quad_list; 509 const QuadList& quad_list = main_pass->quad_list;
510 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); 510 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin();
511 it != quad_list.BackToFrontEnd(); ++it) { 511 it != quad_list.BackToFrontEnd(); ++it) {
512 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); 512 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
513 } 513 }
514 514
515 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource); 515 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource);
516 EXPECT_EQ(candidate_id, candidate_list[1].resource_id); 516 EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
517 EXPECT_EQ(gfx::Rect(32, 32, 32, 32), candidate_list[1].display_rect); 517 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[1].display_rect);
518 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); 518 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
519 EXPECT_EQ(gfx::Rect(32, 32, 18, 18), candidate_list[2].display_rect); 519 EXPECT_EQ(gfx::RectF(32.f, 32.f, 18.f, 18.f), candidate_list[2].display_rect);
520 EXPECT_EQ(gfx::RectF(32. / 256, 32. / 256, 18. / 256, 18. / 256), 520 EXPECT_EQ(gfx::RectF(32.f / 256.f, 32.f / 256.f, 18.f / 256.f, 18.f / 256.f),
521 candidate_list[2].uv_rect); 521 candidate_list[2].uv_rect);
522 } 522 }
523 523
524 TEST_F(SandwichTest, MisalignedOverlay) { 524 TEST_F(SandwichTest, MisalignedOverlay) {
525 output_surface_->SetScaleFactor(2); 525 output_surface_->SetScaleFactor(2);
526 scoped_ptr<RenderPass> pass = CreateRenderPass(); 526 scoped_ptr<RenderPass> pass = CreateRenderPass();
527 527
528 // We can't create an overlay for a candidate that is not DIP aligned. 528 // We can't create an overlay for a candidate that is not DIP aligned.
529 CreateCandidateQuadAt(resource_provider_.get(), 529 CreateCandidateQuadAt(resource_provider_.get(),
530 pass->shared_quad_state_list.back(), pass.get(), 530 pass->shared_quad_state_list.back(), pass.get(),
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 SolidColorDrawQuad::MaterialCast(*it); 594 SolidColorDrawQuad::MaterialCast(*it);
595 if (solid_color_quad->color == SK_ColorTRANSPARENT) 595 if (solid_color_quad->color == SK_ColorTRANSPARENT)
596 transparent_quad_region.Union(solid_color_quad->rect); 596 transparent_quad_region.Union(solid_color_quad->rect);
597 } 597 }
598 } 598 }
599 DCHECK(covered_region == transparent_quad_region); 599 DCHECK(covered_region == transparent_quad_region);
600 600
601 // Check that overlays cover the same region that the quads covered. 601 // Check that overlays cover the same region that the quads covered.
602 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource); 602 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource);
603 EXPECT_EQ(candidate_id, candidate_list[1].resource_id); 603 EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
604 EXPECT_EQ(gfx::Rect(0, 0, 64, 64), candidate_list[1].display_rect); 604 EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[1].display_rect);
605 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); 605 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
606 EXPECT_TRUE(candidate_list[3].use_output_surface_for_resource); 606 EXPECT_TRUE(candidate_list[3].use_output_surface_for_resource);
607 Region overlay_region; 607 Region overlay_region;
608 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect)); 608 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect));
609 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[3].display_rect)); 609 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[3].display_rect));
610 DCHECK(covered_region == overlay_region); 610 DCHECK(covered_region == overlay_region);
611 } 611 }
612 612
613 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { 613 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) {
614 scoped_ptr<RenderPass> pass = CreateRenderPass(); 614 scoped_ptr<RenderPass> pass = CreateRenderPass();
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after
1550 renderer_->BeginDrawingFrame(&frame_no_overlays); 1550 renderer_->BeginDrawingFrame(&frame_no_overlays);
1551 renderer_->FinishDrawingFrame(&frame_no_overlays); 1551 renderer_->FinishDrawingFrame(&frame_no_overlays);
1552 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1552 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1553 SwapBuffers(); 1553 SwapBuffers();
1554 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1554 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1555 Mock::VerifyAndClearExpectations(&scheduler_); 1555 Mock::VerifyAndClearExpectations(&scheduler_);
1556 } 1556 }
1557 1557
1558 } // namespace 1558 } // namespace
1559 } // namespace cc 1559 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_strategy_underlay.cc ('k') | cc/output/renderer_pixeltest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698