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

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

Issue 1513283002: Add support to send optimal format as part of ScheduleOverlayPlane (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update cmd_buffer_functions 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
« no previous file with comments | « cc/output/overlay_candidate.cc ('k') | cc/test/test_context_support.h » ('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/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"
(...skipping 1661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 }; 1672 };
1673 1673
1674 class FakeRendererClient : public RendererClient { 1674 class FakeRendererClient : public RendererClient {
1675 public: 1675 public:
1676 // RendererClient methods. 1676 // RendererClient methods.
1677 void SetFullRootLayerDamage() override {} 1677 void SetFullRootLayerDamage() override {}
1678 }; 1678 };
1679 1679
1680 class MockOverlayScheduler { 1680 class MockOverlayScheduler {
1681 public: 1681 public:
1682 MOCK_METHOD5(Schedule, 1682 MOCK_METHOD7(Schedule,
1683 void(int plane_z_order, 1683 void(int plane_z_order,
1684 gfx::OverlayTransform plane_transform, 1684 gfx::OverlayTransform plane_transform,
1685 gfx::BufferFormat storage_format,
1685 unsigned overlay_texture_id, 1686 unsigned overlay_texture_id,
1686 const gfx::Rect& display_bounds, 1687 const gfx::Rect& display_bounds,
1687 const gfx::RectF& uv_rect)); 1688 const gfx::RectF& uv_rect,
1689 bool handle_Scaling));
1688 }; 1690 };
1689 1691
1690 class GLRendererWithOverlaysTest : public testing::Test { 1692 class GLRendererWithOverlaysTest : public testing::Test {
1691 protected: 1693 protected:
1692 GLRendererWithOverlaysTest() { 1694 GLRendererWithOverlaysTest() {
1693 provider_ = TestContextProvider::Create(); 1695 provider_ = TestContextProvider::Create();
1694 output_surface_.reset(new OverlayOutputSurface(provider_)); 1696 output_surface_.reset(new OverlayOutputSurface(provider_));
1695 CHECK(output_surface_->BindToClient(&output_surface_client_)); 1697 CHECK(output_surface_->BindToClient(&output_surface_client_));
1696 resource_provider_ = 1698 resource_provider_ =
1697 FakeResourceProvider::Create(output_surface_.get(), nullptr); 1699 FakeResourceProvider::Create(output_surface_.get(), nullptr);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1738 pass->shared_quad_state_list.back(), pass.get()); 1740 pass->shared_quad_state_list.back(), pass.get());
1739 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1741 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1740 pass->shared_quad_state_list.back(), pass.get()); 1742 pass->shared_quad_state_list.back(), pass.get());
1741 1743
1742 RenderPassList pass_list; 1744 RenderPassList pass_list;
1743 pass_list.push_back(std::move(pass)); 1745 pass_list.push_back(std::move(pass));
1744 1746
1745 // Candidate pass was taken out and extra skipped pass added, 1747 // Candidate pass was taken out and extra skipped pass added,
1746 // so only draw 2 quads. 1748 // so only draw 2 quads.
1747 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); 1749 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2);
1750 EXPECT_CALL(
1751 scheduler_,
1752 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, gfx::BufferFormat::BGRX_8888, _,
1753 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1), true))
1754 .Times(1);
1748 EXPECT_CALL(scheduler_, 1755 EXPECT_CALL(scheduler_,
1749 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, 1756 Schedule(1, gfx::OVERLAY_TRANSFORM_NONE,
1750 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) 1757 gfx::BufferFormat::BGRX_8888, _, kOverlayBottomRightRect,
1751 .Times(1); 1758 BoundingRect(kUVTopLeft, kUVBottomRight), true))
1752 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _,
1753 kOverlayBottomRightRect,
1754 BoundingRect(kUVTopLeft, kUVBottomRight)))
1755 .Times(1); 1759 .Times(1);
1756 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1760 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1757 1761
1758 SwapBuffers(); 1762 SwapBuffers();
1759 1763
1760 Mock::VerifyAndClearExpectations(renderer_.get()); 1764 Mock::VerifyAndClearExpectations(renderer_.get());
1761 Mock::VerifyAndClearExpectations(&scheduler_); 1765 Mock::VerifyAndClearExpectations(&scheduler_);
1762 } 1766 }
1763 1767
1764 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) { 1768 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) {
(...skipping 12 matching lines...) Expand all
1777 CreateFullscreenCandidateQuad(resource_provider_.get(), 1781 CreateFullscreenCandidateQuad(resource_provider_.get(),
1778 pass->shared_quad_state_list.back(), 1782 pass->shared_quad_state_list.back(),
1779 pass.get()); 1783 pass.get());
1780 1784
1781 RenderPassList pass_list; 1785 RenderPassList pass_list;
1782 pass_list.push_back(std::move(pass)); 1786 pass_list.push_back(std::move(pass));
1783 1787
1784 // Candidate quad should fail to be overlaid on top because of occlusion. 1788 // Candidate quad should fail to be overlaid on top because of occlusion.
1785 // Expect to be replaced with transparent hole quad and placed in underlay. 1789 // Expect to be replaced with transparent hole quad and placed in underlay.
1786 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1790 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
1787 EXPECT_CALL(scheduler_, 1791 EXPECT_CALL(
1788 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, 1792 scheduler_,
1789 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) 1793 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, gfx::BufferFormat::BGRX_8888, _,
1794 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1), true))
1790 .Times(1); 1795 .Times(1);
1791 EXPECT_CALL(scheduler_, 1796 EXPECT_CALL(
1792 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, 1797 scheduler_,
1793 BoundingRect(kUVTopLeft, kUVBottomRight))) 1798 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, gfx::BufferFormat::BGRX_8888, _,
1799 kOverlayRect, BoundingRect(kUVTopLeft, kUVBottomRight), true))
1794 .Times(1); 1800 .Times(1);
1795 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1801 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1796 1802
1797 SwapBuffers(); 1803 SwapBuffers();
1798 1804
1799 Mock::VerifyAndClearExpectations(renderer_.get()); 1805 Mock::VerifyAndClearExpectations(renderer_.get());
1800 Mock::VerifyAndClearExpectations(&scheduler_); 1806 Mock::VerifyAndClearExpectations(&scheduler_);
1801 } 1807 }
1802 1808
1803 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) { 1809 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) {
(...skipping 12 matching lines...) Expand all
1816 pass->shared_quad_state_list.back(), pass.get()); 1822 pass->shared_quad_state_list.back(), pass.get());
1817 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1823 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1818 pass->shared_quad_state_list.back(), pass.get()); 1824 pass->shared_quad_state_list.back(), pass.get());
1819 1825
1820 RenderPassList pass_list; 1826 RenderPassList pass_list;
1821 pass_list.push_back(std::move(pass)); 1827 pass_list.push_back(std::move(pass));
1822 1828
1823 // Should not see the primary surface's overlay. 1829 // Should not see the primary surface's overlay.
1824 output_surface_->set_is_displayed_as_overlay_plane(false); 1830 output_surface_->set_is_displayed_as_overlay_plane(false);
1825 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1831 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
1826 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1832 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
1827 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1833 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1828 SwapBuffers(); 1834 SwapBuffers();
1829 Mock::VerifyAndClearExpectations(renderer_.get()); 1835 Mock::VerifyAndClearExpectations(renderer_.get());
1830 Mock::VerifyAndClearExpectations(&scheduler_); 1836 Mock::VerifyAndClearExpectations(&scheduler_);
1831 } 1837 }
1832 1838
1833 // GLRenderer skips drawing occluded quads when partial swap is enabled. 1839 // GLRenderer skips drawing occluded quads when partial swap is enabled.
1834 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenPartialSwapEnabled) { 1840 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenPartialSwapEnabled) {
1835 provider_->TestContext3d()->set_have_post_sub_buffer(true); 1841 provider_->TestContext3d()->set_have_post_sub_buffer(true);
1836 settings_.partial_swap_enabled = true; 1842 settings_.partial_swap_enabled = true;
(...skipping 10 matching lines...) Expand all
1847 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1853 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1848 pass->shared_quad_state_list.back(), pass.get()); 1854 pass->shared_quad_state_list.back(), pass.get());
1849 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1855 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1850 pass->shared_quad_state_list.back(), pass.get()); 1856 pass->shared_quad_state_list.back(), pass.get());
1851 1857
1852 RenderPassList pass_list; 1858 RenderPassList pass_list;
1853 pass_list.push_back(std::move(pass)); 1859 pass_list.push_back(std::move(pass));
1854 1860
1855 output_surface_->set_is_displayed_as_overlay_plane(true); 1861 output_surface_->set_is_displayed_as_overlay_plane(true);
1856 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0); 1862 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0);
1857 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1863 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
1858 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1864 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1859 SwapBuffers(); 1865 SwapBuffers();
1860 Mock::VerifyAndClearExpectations(renderer_.get()); 1866 Mock::VerifyAndClearExpectations(renderer_.get());
1861 Mock::VerifyAndClearExpectations(&scheduler_); 1867 Mock::VerifyAndClearExpectations(&scheduler_);
1862 } 1868 }
1863 1869
1864 // GLRenderer skips drawing occluded quads when empty swap is enabled. 1870 // GLRenderer skips drawing occluded quads when empty swap is enabled.
1865 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenEmptySwapAllowed) { 1871 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenEmptySwapAllowed) {
1866 provider_->TestContext3d()->set_have_commit_overlay_planes(true); 1872 provider_->TestContext3d()->set_have_commit_overlay_planes(true);
1867 bool use_validator = true; 1873 bool use_validator = true;
(...skipping 10 matching lines...) Expand all
1878 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1884 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1879 pass->shared_quad_state_list.back(), pass.get()); 1885 pass->shared_quad_state_list.back(), pass.get());
1880 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1886 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1881 pass->shared_quad_state_list.back(), pass.get()); 1887 pass->shared_quad_state_list.back(), pass.get());
1882 1888
1883 RenderPassList pass_list; 1889 RenderPassList pass_list;
1884 pass_list.push_back(std::move(pass)); 1890 pass_list.push_back(std::move(pass));
1885 1891
1886 output_surface_->set_is_displayed_as_overlay_plane(true); 1892 output_surface_->set_is_displayed_as_overlay_plane(true);
1887 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0); 1893 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0);
1888 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1894 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
1889 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1895 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1890 SwapBuffers(); 1896 SwapBuffers();
1891 Mock::VerifyAndClearExpectations(renderer_.get()); 1897 Mock::VerifyAndClearExpectations(renderer_.get());
1892 Mock::VerifyAndClearExpectations(&scheduler_); 1898 Mock::VerifyAndClearExpectations(&scheduler_);
1893 } 1899 }
1894 1900
1895 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) { 1901 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
1896 bool use_validator = true; 1902 bool use_validator = true;
1897 Init(use_validator); 1903 Init(use_validator);
1898 renderer_->set_expect_overlays(true); 1904 renderer_->set_expect_overlays(true);
(...skipping 26 matching lines...) Expand all
1925 overlay2.plane_z_order = 1; 1931 overlay2.plane_z_order = 1;
1926 1932
1927 DirectRenderer::DrawingFrame frame3; 1933 DirectRenderer::DrawingFrame frame3;
1928 frame3.render_passes_in_draw_order = &pass_list; 1934 frame3.render_passes_in_draw_order = &pass_list;
1929 frame3.overlay_list.resize(2); 1935 frame3.overlay_list.resize(2);
1930 frame3.overlay_list.front().use_output_surface_for_resource = true; 1936 frame3.overlay_list.front().use_output_surface_for_resource = true;
1931 OverlayCandidate& overlay3 = frame3.overlay_list.back(); 1937 OverlayCandidate& overlay3 = frame3.overlay_list.back();
1932 overlay3.resource_id = resource3; 1938 overlay3.resource_id = resource3;
1933 overlay3.plane_z_order = 1; 1939 overlay3.plane_z_order = 1;
1934 1940
1935 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1941 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
1936 renderer_->BeginDrawingFrame(&frame1); 1942 renderer_->BeginDrawingFrame(&frame1);
1937 renderer_->FinishDrawingFrame(&frame1); 1943 renderer_->FinishDrawingFrame(&frame1);
1938 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1944 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1939 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1945 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1940 SwapBuffers(); 1946 SwapBuffers();
1941 Mock::VerifyAndClearExpectations(&scheduler_); 1947 Mock::VerifyAndClearExpectations(&scheduler_);
1942 1948
1943 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1949 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
1944 renderer_->BeginDrawingFrame(&frame2); 1950 renderer_->BeginDrawingFrame(&frame2);
1945 renderer_->FinishDrawingFrame(&frame2); 1951 renderer_->FinishDrawingFrame(&frame2);
1946 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1952 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1947 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1953 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1948 SwapBuffers(); 1954 SwapBuffers();
1949 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1955 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1950 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1956 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1951 Mock::VerifyAndClearExpectations(&scheduler_); 1957 Mock::VerifyAndClearExpectations(&scheduler_);
1952 1958
1953 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1959 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
1954 renderer_->BeginDrawingFrame(&frame3); 1960 renderer_->BeginDrawingFrame(&frame3);
1955 renderer_->FinishDrawingFrame(&frame3); 1961 renderer_->FinishDrawingFrame(&frame3);
1956 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1962 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1957 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1963 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1958 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1964 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1959 SwapBuffers(); 1965 SwapBuffers();
1960 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1966 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1961 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1967 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1962 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1968 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1963 Mock::VerifyAndClearExpectations(&scheduler_); 1969 Mock::VerifyAndClearExpectations(&scheduler_);
1964 1970
1965 // No overlays, release the resource. 1971 // No overlays, release the resource.
1966 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1972 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
1967 DirectRenderer::DrawingFrame frame_no_overlays; 1973 DirectRenderer::DrawingFrame frame_no_overlays;
1968 frame_no_overlays.render_passes_in_draw_order = &pass_list; 1974 frame_no_overlays.render_passes_in_draw_order = &pass_list;
1969 renderer_->set_expect_overlays(false); 1975 renderer_->set_expect_overlays(false);
1970 renderer_->BeginDrawingFrame(&frame_no_overlays); 1976 renderer_->BeginDrawingFrame(&frame_no_overlays);
1971 renderer_->FinishDrawingFrame(&frame_no_overlays); 1977 renderer_->FinishDrawingFrame(&frame_no_overlays);
1972 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1978 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1973 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1979 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1974 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1980 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1975 SwapBuffers(); 1981 SwapBuffers();
1976 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1982 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1977 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1983 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1978 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1984 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1979 Mock::VerifyAndClearExpectations(&scheduler_); 1985 Mock::VerifyAndClearExpectations(&scheduler_);
1980 1986
1981 // Use the same buffer twice. 1987 // Use the same buffer twice.
1982 renderer_->set_expect_overlays(true); 1988 renderer_->set_expect_overlays(true);
1983 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1989 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
1984 renderer_->BeginDrawingFrame(&frame1); 1990 renderer_->BeginDrawingFrame(&frame1);
1985 renderer_->FinishDrawingFrame(&frame1); 1991 renderer_->FinishDrawingFrame(&frame1);
1986 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1992 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1987 SwapBuffers(); 1993 SwapBuffers();
1988 Mock::VerifyAndClearExpectations(&scheduler_); 1994 Mock::VerifyAndClearExpectations(&scheduler_);
1989 1995
1990 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1996 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
1991 renderer_->BeginDrawingFrame(&frame1); 1997 renderer_->BeginDrawingFrame(&frame1);
1992 renderer_->FinishDrawingFrame(&frame1); 1998 renderer_->FinishDrawingFrame(&frame1);
1993 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1999 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1994 SwapBuffers(); 2000 SwapBuffers();
1995 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2001 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1996 Mock::VerifyAndClearExpectations(&scheduler_); 2002 Mock::VerifyAndClearExpectations(&scheduler_);
1997 2003
1998 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 2004 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
1999 renderer_->set_expect_overlays(false); 2005 renderer_->set_expect_overlays(false);
2000 renderer_->BeginDrawingFrame(&frame_no_overlays); 2006 renderer_->BeginDrawingFrame(&frame_no_overlays);
2001 renderer_->FinishDrawingFrame(&frame_no_overlays); 2007 renderer_->FinishDrawingFrame(&frame_no_overlays);
2002 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2008 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2003 SwapBuffers(); 2009 SwapBuffers();
2004 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2010 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2005 Mock::VerifyAndClearExpectations(&scheduler_); 2011 Mock::VerifyAndClearExpectations(&scheduler_);
2006 2012
2007 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 2013 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
2008 renderer_->set_expect_overlays(false); 2014 renderer_->set_expect_overlays(false);
2009 renderer_->BeginDrawingFrame(&frame_no_overlays); 2015 renderer_->BeginDrawingFrame(&frame_no_overlays);
2010 renderer_->FinishDrawingFrame(&frame_no_overlays); 2016 renderer_->FinishDrawingFrame(&frame_no_overlays);
2011 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2017 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2012 SwapBuffers(); 2018 SwapBuffers();
2013 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 2019 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
2014 Mock::VerifyAndClearExpectations(&scheduler_); 2020 Mock::VerifyAndClearExpectations(&scheduler_);
2015 } 2021 }
2016 2022
2017 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithExtraDelay) { 2023 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithExtraDelay) {
(...skipping 30 matching lines...) Expand all
2048 overlay2.plane_z_order = 1; 2054 overlay2.plane_z_order = 1;
2049 2055
2050 DirectRenderer::DrawingFrame frame3; 2056 DirectRenderer::DrawingFrame frame3;
2051 frame3.render_passes_in_draw_order = &pass_list; 2057 frame3.render_passes_in_draw_order = &pass_list;
2052 frame3.overlay_list.resize(2); 2058 frame3.overlay_list.resize(2);
2053 frame3.overlay_list.front().use_output_surface_for_resource = true; 2059 frame3.overlay_list.front().use_output_surface_for_resource = true;
2054 OverlayCandidate& overlay3 = frame3.overlay_list.back(); 2060 OverlayCandidate& overlay3 = frame3.overlay_list.back();
2055 overlay3.resource_id = resource3; 2061 overlay3.resource_id = resource3;
2056 overlay3.plane_z_order = 1; 2062 overlay3.plane_z_order = 1;
2057 2063
2058 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 2064 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
2059 renderer_->BeginDrawingFrame(&frame1); 2065 renderer_->BeginDrawingFrame(&frame1);
2060 renderer_->FinishDrawingFrame(&frame1); 2066 renderer_->FinishDrawingFrame(&frame1);
2061 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2067 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2062 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 2068 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
2063 SwapBuffers(); 2069 SwapBuffers();
2064 Mock::VerifyAndClearExpectations(&scheduler_); 2070 Mock::VerifyAndClearExpectations(&scheduler_);
2065 2071
2066 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 2072 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
2067 renderer_->BeginDrawingFrame(&frame2); 2073 renderer_->BeginDrawingFrame(&frame2);
2068 renderer_->FinishDrawingFrame(&frame2); 2074 renderer_->FinishDrawingFrame(&frame2);
2069 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2075 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2070 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 2076 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
2071 SwapBuffers(); 2077 SwapBuffers();
2072 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2078 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2073 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 2079 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
2074 Mock::VerifyAndClearExpectations(&scheduler_); 2080 Mock::VerifyAndClearExpectations(&scheduler_);
2075 2081
2076 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 2082 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
2077 renderer_->BeginDrawingFrame(&frame3); 2083 renderer_->BeginDrawingFrame(&frame3);
2078 renderer_->FinishDrawingFrame(&frame3); 2084 renderer_->FinishDrawingFrame(&frame3);
2079 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2085 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2080 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 2086 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
2081 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 2087 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
2082 SwapBuffers(); 2088 SwapBuffers();
2083 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2089 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2084 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 2090 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
2085 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 2091 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
2086 Mock::VerifyAndClearExpectations(&scheduler_); 2092 Mock::VerifyAndClearExpectations(&scheduler_);
2087 2093
2088 // No overlays, release the resource. 2094 // No overlays, release the resource.
2089 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 2095 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
2090 DirectRenderer::DrawingFrame frame_no_overlays; 2096 DirectRenderer::DrawingFrame frame_no_overlays;
2091 frame_no_overlays.render_passes_in_draw_order = &pass_list; 2097 frame_no_overlays.render_passes_in_draw_order = &pass_list;
2092 renderer_->set_expect_overlays(false); 2098 renderer_->set_expect_overlays(false);
2093 renderer_->BeginDrawingFrame(&frame_no_overlays); 2099 renderer_->BeginDrawingFrame(&frame_no_overlays);
2094 renderer_->FinishDrawingFrame(&frame_no_overlays); 2100 renderer_->FinishDrawingFrame(&frame_no_overlays);
2095 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2101 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2096 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 2102 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
2097 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 2103 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
2098 SwapBuffers(); 2104 SwapBuffers();
2099 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 2105 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
2100 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 2106 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
2101 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 2107 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
2102 Mock::VerifyAndClearExpectations(&scheduler_); 2108 Mock::VerifyAndClearExpectations(&scheduler_);
2103 2109
2104 // Use the same buffer twice. 2110 // Use the same buffer twice.
2105 renderer_->set_expect_overlays(true); 2111 renderer_->set_expect_overlays(true);
2106 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 2112 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
2107 renderer_->BeginDrawingFrame(&frame1); 2113 renderer_->BeginDrawingFrame(&frame1);
2108 renderer_->FinishDrawingFrame(&frame1); 2114 renderer_->FinishDrawingFrame(&frame1);
2109 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2115 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2110 SwapBuffers(); 2116 SwapBuffers();
2111 Mock::VerifyAndClearExpectations(&scheduler_); 2117 Mock::VerifyAndClearExpectations(&scheduler_);
2112 2118
2113 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 2119 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(2);
2114 renderer_->BeginDrawingFrame(&frame1); 2120 renderer_->BeginDrawingFrame(&frame1);
2115 renderer_->FinishDrawingFrame(&frame1); 2121 renderer_->FinishDrawingFrame(&frame1);
2116 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2122 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2117 SwapBuffers(); 2123 SwapBuffers();
2118 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2124 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2119 Mock::VerifyAndClearExpectations(&scheduler_); 2125 Mock::VerifyAndClearExpectations(&scheduler_);
2120 2126
2121 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 2127 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
2122 renderer_->set_expect_overlays(false); 2128 renderer_->set_expect_overlays(false);
2123 renderer_->BeginDrawingFrame(&frame_no_overlays); 2129 renderer_->BeginDrawingFrame(&frame_no_overlays);
2124 renderer_->FinishDrawingFrame(&frame_no_overlays); 2130 renderer_->FinishDrawingFrame(&frame_no_overlays);
2125 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2131 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2126 SwapBuffers(); 2132 SwapBuffers();
2127 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2133 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2128 Mock::VerifyAndClearExpectations(&scheduler_); 2134 Mock::VerifyAndClearExpectations(&scheduler_);
2129 2135
2130 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 2136 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
2131 renderer_->set_expect_overlays(false); 2137 renderer_->set_expect_overlays(false);
2132 renderer_->BeginDrawingFrame(&frame_no_overlays); 2138 renderer_->BeginDrawingFrame(&frame_no_overlays);
2133 renderer_->FinishDrawingFrame(&frame_no_overlays); 2139 renderer_->FinishDrawingFrame(&frame_no_overlays);
2134 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2140 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2135 SwapBuffers(); 2141 SwapBuffers();
2136 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2142 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2137 Mock::VerifyAndClearExpectations(&scheduler_); 2143 Mock::VerifyAndClearExpectations(&scheduler_);
2138 2144
2139 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 2145 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _, _, _)).Times(0);
2140 renderer_->set_expect_overlays(false); 2146 renderer_->set_expect_overlays(false);
2141 renderer_->BeginDrawingFrame(&frame_no_overlays); 2147 renderer_->BeginDrawingFrame(&frame_no_overlays);
2142 renderer_->FinishDrawingFrame(&frame_no_overlays); 2148 renderer_->FinishDrawingFrame(&frame_no_overlays);
2143 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 2149 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
2144 SwapBuffers(); 2150 SwapBuffers();
2145 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 2151 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
2146 Mock::VerifyAndClearExpectations(&scheduler_); 2152 Mock::VerifyAndClearExpectations(&scheduler_);
2147 } 2153 }
2148 2154
2149 } // namespace 2155 } // namespace
2150 } // namespace cc 2156 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_candidate.cc ('k') | cc/test/test_context_support.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698