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

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

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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_single_on_top.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/scoped_ptr_vector.h" 5 #include "cc/base/scoped_ptr_vector.h"
6 #include "cc/output/gl_renderer.h" 6 #include "cc/output/gl_renderer.h"
7 #include "cc/output/output_surface.h" 7 #include "cc/output/output_surface.h"
8 #include "cc/output/output_surface_client.h" 8 #include "cc/output/output_surface_client.h"
9 #include "cc/output/overlay_candidate_validator.h" 9 #include "cc/output/overlay_candidate_validator.h"
10 #include "cc/output/overlay_processor.h" 10 #include "cc/output/overlay_processor.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 TextureMailbox mailbox = 149 TextureMailbox mailbox =
150 TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); 150 TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point);
151 mailbox.set_allow_overlay(true); 151 mailbox.set_allow_overlay(true);
152 scoped_ptr<SingleReleaseCallbackImpl> release_callback = 152 scoped_ptr<SingleReleaseCallbackImpl> release_callback =
153 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); 153 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased));
154 154
155 return resource_provider->CreateResourceFromTextureMailbox( 155 return resource_provider->CreateResourceFromTextureMailbox(
156 mailbox, release_callback.Pass()); 156 mailbox, release_callback.Pass());
157 } 157 }
158 158
159 SolidColorDrawQuad* CreateSolidColorQuadAt(
160 const SharedQuadState* shared_quad_state,
161 SkColor color,
162 RenderPass* render_pass,
163 const gfx::Rect& rect) {
164 SolidColorDrawQuad* quad =
165 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
166 quad->SetNew(shared_quad_state, rect, rect, color, false);
167 return quad;
168 }
169
159 TextureDrawQuad* CreateCandidateQuadAt(ResourceProvider* resource_provider, 170 TextureDrawQuad* CreateCandidateQuadAt(ResourceProvider* resource_provider,
160 const SharedQuadState* shared_quad_state, 171 const SharedQuadState* shared_quad_state,
161 RenderPass* render_pass, 172 RenderPass* render_pass,
162 const gfx::Rect& rect) { 173 const gfx::Rect& rect) {
163 ResourceProvider::ResourceId resource_id = CreateResource(resource_provider); 174 ResourceProvider::ResourceId resource_id = CreateResource(resource_provider);
164 bool premultiplied_alpha = false; 175 bool premultiplied_alpha = false;
165 bool flipped = false; 176 bool flipped = false;
166 bool nearest_neighbor = false; 177 bool nearest_neighbor = false;
167 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 178 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
168 179
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 596
586 RenderPassList original_pass_list; 597 RenderPassList original_pass_list;
587 RenderPass::CopyAll(pass_list, &original_pass_list); 598 RenderPass::CopyAll(pass_list, &original_pass_list);
588 599
589 OverlayCandidateList candidate_list; 600 OverlayCandidateList candidate_list;
590 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 601 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
591 EXPECT_EQ(1U, pass_list.size()); 602 EXPECT_EQ(1U, pass_list.size());
592 EXPECT_EQ(2U, candidate_list.size()); 603 EXPECT_EQ(2U, candidate_list.size());
593 } 604 }
594 605
606 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
607 scoped_ptr<RenderPass> pass = CreateRenderPass();
608 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
609 shared_state->opacity = 0.f;
610 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
611 kOverlayBottomRightRect);
612 shared_state = pass->CreateAndAppendSharedQuadState();
613 shared_state->opacity = 1.f;
614 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
615 kOverlayBottomRightRect);
616
617 RenderPassList pass_list;
618 pass_list.push_back(pass.Pass());
619
620 RenderPassList original_pass_list;
621 RenderPass::CopyAll(pass_list, &original_pass_list);
622
623 OverlayCandidateList candidate_list;
624 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
625 EXPECT_EQ(1U, pass_list.size());
626 EXPECT_EQ(2U, candidate_list.size());
627 }
628
629 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
630 scoped_ptr<RenderPass> pass = CreateRenderPass();
631 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(),
632 SK_ColorTRANSPARENT, pass.get(),
633 kOverlayBottomRightRect);
634 CreateCandidateQuadAt(resource_provider_.get(),
635 pass->shared_quad_state_list.back(), pass.get(),
636 kOverlayBottomRightRect);
637
638 RenderPassList pass_list;
639 pass_list.push_back(pass.Pass());
640
641 RenderPassList original_pass_list;
642 RenderPass::CopyAll(pass_list, &original_pass_list);
643
644 OverlayCandidateList candidate_list;
645 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
646 EXPECT_EQ(1U, pass_list.size());
647 EXPECT_EQ(2U, candidate_list.size());
648 }
649
650 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
651 scoped_ptr<RenderPass> pass = CreateRenderPass();
652 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
653 shared_state->opacity = 0.5f;
654 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
655 kOverlayBottomRightRect);
656 shared_state = pass->CreateAndAppendSharedQuadState();
657 shared_state->opacity = 1.f;
658 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
659 kOverlayBottomRightRect);
660
661 RenderPassList pass_list;
662 pass_list.push_back(pass.Pass());
663
664 RenderPassList original_pass_list;
665 RenderPass::CopyAll(pass_list, &original_pass_list);
666
667 OverlayCandidateList candidate_list;
668 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
669 EXPECT_EQ(1U, pass_list.size());
670 EXPECT_EQ(0U, candidate_list.size());
671 }
672
673 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
674 scoped_ptr<RenderPass> pass = CreateRenderPass();
675 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
676 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(),
677 kOverlayBottomRightRect)->opaque_rect =
678 kOverlayBottomRightRect;
679 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
680 kOverlayBottomRightRect);
681
682 RenderPassList pass_list;
683 pass_list.push_back(pass.Pass());
684
685 RenderPassList original_pass_list;
686 RenderPass::CopyAll(pass_list, &original_pass_list);
687
688 OverlayCandidateList candidate_list;
689 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
690 EXPECT_EQ(1U, pass_list.size());
691 EXPECT_EQ(0U, candidate_list.size());
692 }
693
595 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { 694 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
596 scoped_ptr<RenderPass> pass = CreateRenderPass(); 695 scoped_ptr<RenderPass> pass = CreateRenderPass();
597 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 696 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
598 pass->shared_quad_state_list.back(), 697 pass->shared_quad_state_list.back(),
599 pass.get(), kSwapTransform); 698 pass.get(), kSwapTransform);
600 699
601 RenderPassList pass_list; 700 RenderPassList pass_list;
602 pass_list.push_back(pass.Pass()); 701 pass_list.push_back(pass.Pass());
603 OverlayCandidateList candidate_list; 702 OverlayCandidateList candidate_list;
604 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 703 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 renderer_->BeginDrawingFrame(&frame3); 1045 renderer_->BeginDrawingFrame(&frame3);
947 renderer_->FinishDrawingFrame(&frame3); 1046 renderer_->FinishDrawingFrame(&frame3);
948 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1047 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
949 SwapBuffers(); 1048 SwapBuffers();
950 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1049 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
951 Mock::VerifyAndClearExpectations(&scheduler_); 1050 Mock::VerifyAndClearExpectations(&scheduler_);
952 } 1051 }
953 1052
954 } // namespace 1053 } // namespace
955 } // namespace cc 1054 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_strategy_single_on_top.cc ('k') | cc/output/renderer_pixeltest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698