Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |