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

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

Issue 880023005: cc: Ignore certain quads that would otherwise block overlays (Closed) Base URL: https://chromium.googlesource.com/chromium/src.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
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 CreateCandidateQuadAt(resource_provider_.get(),
609 pass->shared_quad_state_list.back(), pass.get(),
610 kOverlayBottomRightRect);
611 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
612 shared_state->opacity = 0.f;
613 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), SK_ColorBLACK,
614 pass.get(), kOverlayBottomRightRect);
615
616 RenderPassList pass_list;
617 pass_list.push_back(pass.Pass());
618
619 RenderPassList original_pass_list;
620 RenderPass::CopyAll(pass_list, &original_pass_list);
621
622 OverlayCandidateList candidate_list;
623 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
624 EXPECT_EQ(1U, pass_list.size());
625 EXPECT_EQ(2U, candidate_list.size());
626 }
627
628 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
629 scoped_ptr<RenderPass> pass = CreateRenderPass();
630 CreateCandidateQuadAt(resource_provider_.get(),
631 pass->shared_quad_state_list.back(), pass.get(),
632 kOverlayBottomRightRect);
633 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(),
634 SK_ColorTRANSPARENT, pass.get(),
635 kOverlayBottomRightRect);
636
637 RenderPassList pass_list;
638 pass_list.push_back(pass.Pass());
639
640 RenderPassList original_pass_list;
641 RenderPass::CopyAll(pass_list, &original_pass_list);
642
643 OverlayCandidateList candidate_list;
644 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
645 EXPECT_EQ(1U, pass_list.size());
646 EXPECT_EQ(2U, candidate_list.size());
647 }
648
595 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { 649 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
596 scoped_ptr<RenderPass> pass = CreateRenderPass(); 650 scoped_ptr<RenderPass> pass = CreateRenderPass();
597 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 651 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
598 pass->shared_quad_state_list.back(), 652 pass->shared_quad_state_list.back(),
599 pass.get(), kSwapTransform); 653 pass.get(), kSwapTransform);
600 654
601 RenderPassList pass_list; 655 RenderPassList pass_list;
602 pass_list.push_back(pass.Pass()); 656 pass_list.push_back(pass.Pass());
603 OverlayCandidateList candidate_list; 657 OverlayCandidateList candidate_list;
604 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 658 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 renderer_->BeginDrawingFrame(&frame3); 1000 renderer_->BeginDrawingFrame(&frame3);
947 renderer_->FinishDrawingFrame(&frame3); 1001 renderer_->FinishDrawingFrame(&frame3);
948 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1002 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
949 SwapBuffers(); 1003 SwapBuffers();
950 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1004 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
951 Mock::VerifyAndClearExpectations(&scheduler_); 1005 Mock::VerifyAndClearExpectations(&scheduler_);
952 } 1006 }
953 1007
954 } // namespace 1008 } // namespace
955 } // namespace cc 1009 } // namespace cc
OLDNEW
« cc/output/overlay_strategy_single_on_top.cc ('K') | « cc/output/overlay_strategy_single_on_top.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698