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

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

Issue 1489153002: DirectRenderer allows empty swap rects for CommitOverlayPlanes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests Created 5 years 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/region.h" 5 #include "cc/base/region.h"
6 #include "cc/output/compositor_frame_metadata.h" 6 #include "cc/output/compositor_frame_metadata.h"
7 #include "cc/output/gl_renderer.h" 7 #include "cc/output/gl_renderer.h"
8 #include "cc/output/output_surface.h" 8 #include "cc/output/output_surface.h"
9 #include "cc/output/output_surface_client.h" 9 #include "cc/output/output_surface_client.h"
10 #include "cc/output/overlay_candidate_validator.h" 10 #include "cc/output/overlay_candidate_validator.h"
11 #include "cc/output/overlay_processor.h" 11 #include "cc/output/overlay_processor.h"
12 #include "cc/output/overlay_strategy_sandwich.h" 12 #include "cc/output/overlay_strategy_sandwich.h"
13 #include "cc/output/overlay_strategy_single_on_top.h" 13 #include "cc/output/overlay_strategy_single_on_top.h"
14 #include "cc/output/overlay_strategy_underlay.h" 14 #include "cc/output/overlay_strategy_underlay.h"
15 #include "cc/quads/render_pass.h" 15 #include "cc/quads/render_pass.h"
16 #include "cc/quads/solid_color_draw_quad.h" 16 #include "cc/quads/solid_color_draw_quad.h"
17 #include "cc/quads/stream_video_draw_quad.h" 17 #include "cc/quads/stream_video_draw_quad.h"
18 #include "cc/quads/texture_draw_quad.h" 18 #include "cc/quads/texture_draw_quad.h"
19 #include "cc/resources/resource_provider.h" 19 #include "cc/resources/resource_provider.h"
20 #include "cc/resources/texture_mailbox.h" 20 #include "cc/resources/texture_mailbox.h"
21 #include "cc/test/fake_output_surface_client.h" 21 #include "cc/test/fake_output_surface_client.h"
22 #include "cc/test/fake_resource_provider.h" 22 #include "cc/test/fake_resource_provider.h"
23 #include "cc/test/geometry_test_utils.h" 23 #include "cc/test/geometry_test_utils.h"
24 #include "cc/test/test_context_provider.h" 24 #include "cc/test/test_context_provider.h"
25 #include "cc/test/test_shared_bitmap_manager.h" 25 #include "cc/test/test_shared_bitmap_manager.h"
26 #include "cc/test/test_web_graphics_context_3d.h"
26 #include "testing/gmock/include/gmock/gmock.h" 27 #include "testing/gmock/include/gmock/gmock.h"
27 #include "testing/gtest/include/gtest/gtest.h" 28 #include "testing/gtest/include/gtest/gtest.h"
28 #include "ui/gfx/geometry/rect_conversions.h" 29 #include "ui/gfx/geometry/rect_conversions.h"
29 30
30 using testing::_; 31 using testing::_;
31 using testing::Mock; 32 using testing::Mock;
32 33
33 namespace cc { 34 namespace cc {
34 namespace { 35 namespace {
35 36
(...skipping 1701 matching lines...) Expand 10 before | Expand all | Expand 10 after
1737 // Should not see the primary surface's overlay. 1738 // Should not see the primary surface's overlay.
1738 output_surface_->set_is_displayed_as_overlay_plane(false); 1739 output_surface_->set_is_displayed_as_overlay_plane(false);
1739 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1740 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
1740 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1741 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1741 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1742 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1742 SwapBuffers(); 1743 SwapBuffers();
1743 Mock::VerifyAndClearExpectations(renderer_.get()); 1744 Mock::VerifyAndClearExpectations(renderer_.get());
1744 Mock::VerifyAndClearExpectations(&scheduler_); 1745 Mock::VerifyAndClearExpectations(&scheduler_);
1745 } 1746 }
1746 1747
1747 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawn) { 1748 // GLRenderer skips drawing occluded quads when partial swap is enabled.
watk 2015/12/02 01:05:01 I had to modify this test because this CL breaks t
piman 2015/12/02 01:23:05 I think it's ok for now. Currently all platforms t
1749 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenPartialSwapEnabled) {
1750 provider_->TestContext3d()->set_have_post_sub_buffer(true);
1751 settings_.partial_swap_enabled = true;
1748 bool use_validator = true; 1752 bool use_validator = true;
1749 Init(use_validator); 1753 Init(use_validator);
1750 renderer_->set_expect_overlays(true); 1754 renderer_->set_expect_overlays(true);
1755 gfx::Rect viewport_rect(16, 16);
1756
1757 scoped_ptr<RenderPass> pass = CreateRenderPass();
1758
1759 CreateFullscreenCandidateQuad(resource_provider_.get(),
1760 pass->shared_quad_state_list.back(),
1761 pass.get());
1762 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1763 pass->shared_quad_state_list.back(), pass.get());
1764 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1765 pass->shared_quad_state_list.back(), pass.get());
1766
1767 RenderPassList pass_list;
1768 pass_list.push_back(std::move(pass));
1769
1770 output_surface_->set_is_displayed_as_overlay_plane(true);
1771 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0);
1772 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1773 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1774 SwapBuffers();
1775 Mock::VerifyAndClearExpectations(renderer_.get());
1776 Mock::VerifyAndClearExpectations(&scheduler_);
1777 }
1778
1779 // GLRenderer skips drawing occluded quads when empty swap is enabled.
1780 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenEmptySwapAllowed) {
1781 provider_->TestContext3d()->set_have_commit_overlay_planes(true);
1782 bool use_validator = true;
1783 Init(use_validator);
1784 renderer_->set_expect_overlays(true);
1751 gfx::Rect viewport_rect(16, 16); 1785 gfx::Rect viewport_rect(16, 16);
1752 1786
1753 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1787 scoped_ptr<RenderPass> pass = CreateRenderPass();
1754 1788
1755 CreateFullscreenCandidateQuad(resource_provider_.get(), 1789 CreateFullscreenCandidateQuad(resource_provider_.get(),
1756 pass->shared_quad_state_list.back(), 1790 pass->shared_quad_state_list.back(),
1757 pass.get()); 1791 pass.get());
1758 1792
1759 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1793 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1760 pass->shared_quad_state_list.back(), pass.get()); 1794 pass->shared_quad_state_list.back(), pass.get());
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
2022 renderer_->BeginDrawingFrame(&frame_no_overlays); 2056 renderer_->BeginDrawingFrame(&frame_no_overlays);
2023 renderer_->FinishDrawingFrame(&frame_no_overlays); 2057 renderer_->FinishDrawingFrame(&frame_no_overlays);
2024 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2058 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2025 SwapBuffers(); 2059 SwapBuffers();
2026 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 2060 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
2027 Mock::VerifyAndClearExpectations(&scheduler_); 2061 Mock::VerifyAndClearExpectations(&scheduler_);
2028 } 2062 }
2029 2063
2030 } // namespace 2064 } // namespace
2031 } // namespace cc 2065 } // namespace cc
OLDNEW
« cc/output/gl_renderer.cc ('K') | « cc/output/gl_renderer.cc ('k') | cc/output/renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698