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

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

Issue 16304003: Unified OutputSurface::SwapBuffers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to 205473 Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/output_surface.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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "cc/base/math_util.h" 9 #include "cc/base/math_util.h"
10 #include "cc/output/compositor_frame_metadata.h" 10 #include "cc/output/compositor_frame_metadata.h"
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 output_surface_(FakeOutputSurface::Create3d( 257 output_surface_(FakeOutputSurface::Create3d(
258 scoped_ptr<WebKit::WebGraphicsContext3D>( 258 scoped_ptr<WebKit::WebGraphicsContext3D>(
259 new FrameCountingMemoryAllocationSettingContext()))), 259 new FrameCountingMemoryAllocationSettingContext()))),
260 resource_provider_(ResourceProvider::Create(output_surface_.get(), 0)), 260 resource_provider_(ResourceProvider::Create(output_surface_.get(), 0)),
261 renderer_(&mock_client_, 261 renderer_(&mock_client_,
262 output_surface_.get(), 262 output_surface_.get(),
263 resource_provider_.get()) {} 263 resource_provider_.get()) {}
264 264
265 virtual void SetUp() { renderer_.Initialize(); } 265 virtual void SetUp() { renderer_.Initialize(); }
266 266
267 void SwapBuffers() { renderer_.SwapBuffers(ui::LatencyInfo()); } 267 void SwapBuffers() { renderer_.SwapBuffers(); }
268 268
269 FrameCountingMemoryAllocationSettingContext* Context() { 269 FrameCountingMemoryAllocationSettingContext* Context() {
270 return static_cast<FrameCountingMemoryAllocationSettingContext*>( 270 return static_cast<FrameCountingMemoryAllocationSettingContext*>(
271 output_surface_->context3d()); 271 output_surface_->context3d());
272 } 272 }
273 273
274 WebGraphicsMemoryAllocation suggest_have_backbuffer_yes_; 274 WebGraphicsMemoryAllocation suggest_have_backbuffer_yes_;
275 WebGraphicsMemoryAllocation suggest_have_backbuffer_no_; 275 WebGraphicsMemoryAllocation suggest_have_backbuffer_no_;
276 276
277 scoped_ptr<OutputSurface> output_surface_; 277 scoped_ptr<OutputSurface> output_surface_;
(...skipping 1267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 1545
1546 class MockOutputSurface : public OutputSurface { 1546 class MockOutputSurface : public OutputSurface {
1547 public: 1547 public:
1548 MockOutputSurface() 1548 MockOutputSurface()
1549 : OutputSurface(scoped_ptr<WebKit::WebGraphicsContext3D>( 1549 : OutputSurface(scoped_ptr<WebKit::WebGraphicsContext3D>(
1550 new StrictMock<OutputSurfaceMockContext>)) { 1550 new StrictMock<OutputSurfaceMockContext>)) {
1551 surface_size_ = gfx::Size(100, 100); 1551 surface_size_ = gfx::Size(100, 100);
1552 } 1552 }
1553 virtual ~MockOutputSurface() {} 1553 virtual ~MockOutputSurface() {}
1554 1554
1555 MOCK_METHOD1(SendFrameToParentCompositor, void(CompositorFrame* frame));
1556 MOCK_METHOD0(EnsureBackbuffer, void()); 1555 MOCK_METHOD0(EnsureBackbuffer, void());
1557 MOCK_METHOD0(DiscardBackbuffer, void()); 1556 MOCK_METHOD0(DiscardBackbuffer, void());
1558 MOCK_METHOD2(Reshape, void(gfx::Size size, float scale_factor)); 1557 MOCK_METHOD2(Reshape, void(gfx::Size size, float scale_factor));
1559 MOCK_METHOD0(BindFramebuffer, void()); 1558 MOCK_METHOD0(BindFramebuffer, void());
1560 MOCK_METHOD2(PostSubBuffer, void(gfx::Rect rect, const ui::LatencyInfo&)); 1559 MOCK_METHOD1(SwapBuffers, void(CompositorFrame* frame));
1561 MOCK_METHOD1(SwapBuffers, void(const ui::LatencyInfo&));
1562 }; 1560 };
1563 1561
1564 class MockOutputSurfaceTest : public testing::Test, public FakeRendererClient { 1562 class MockOutputSurfaceTest : public testing::Test, public FakeRendererClient {
1565 protected: 1563 protected:
1566 MockOutputSurfaceTest() 1564 MockOutputSurfaceTest()
1567 : resource_provider_(ResourceProvider::Create(&output_surface_, 0)), 1565 : resource_provider_(ResourceProvider::Create(&output_surface_, 0)),
1568 renderer_(this, &output_surface_, resource_provider_.get()) {} 1566 renderer_(this, &output_surface_, resource_provider_.get()) {}
1569 1567
1570 virtual void SetUp() { EXPECT_TRUE(renderer_.Initialize()); } 1568 virtual void SetUp() { EXPECT_TRUE(renderer_.Initialize()); }
1571 1569
1572 void SwapBuffers() { renderer_.SwapBuffers(ui::LatencyInfo()); } 1570 void SwapBuffers() { renderer_.SwapBuffers(); }
1573 1571
1574 void DrawFrame() { 1572 void DrawFrame() {
1575 gfx::Rect viewport_rect(DeviceViewport()); 1573 gfx::Rect viewport_rect(DeviceViewport());
1576 ScopedPtrVector<RenderPass>* render_passes = render_passes_in_draw_order(); 1574 ScopedPtrVector<RenderPass>* render_passes = render_passes_in_draw_order();
1577 render_passes->clear(); 1575 render_passes->clear();
1578 1576
1579 RenderPass::Id render_pass_id(1, 0); 1577 RenderPass::Id render_pass_id(1, 0);
1580 TestRenderPass* render_pass = AddRenderPass( 1578 TestRenderPass* render_pass = AddRenderPass(
1581 render_passes, render_pass_id, viewport_rect, gfx::Transform()); 1579 render_passes, render_pass_id, viewport_rect, gfx::Transform());
1582 AddQuad(render_pass, viewport_rect, SK_ColorGREEN); 1580 AddQuad(render_pass, viewport_rect, SK_ColorGREEN);
(...skipping 18 matching lines...) Expand all
1601 1599
1602 StrictMock<MockOutputSurface> output_surface_; 1600 StrictMock<MockOutputSurface> output_surface_;
1603 scoped_ptr<ResourceProvider> resource_provider_; 1601 scoped_ptr<ResourceProvider> resource_provider_;
1604 FakeRendererGL renderer_; 1602 FakeRendererGL renderer_;
1605 }; 1603 };
1606 1604
1607 TEST_F(MockOutputSurfaceTest, DrawFrameAndSwap) { 1605 TEST_F(MockOutputSurfaceTest, DrawFrameAndSwap) {
1608 DrawFrame(); 1606 DrawFrame();
1609 1607
1610 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1); 1608 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1);
1611 renderer_.SwapBuffers(ui::LatencyInfo()); 1609 renderer_.SwapBuffers();
1612 } 1610 }
1613 1611
1614 TEST_F(MockOutputSurfaceTest, DrawFrameAndResizeAndSwap) { 1612 TEST_F(MockOutputSurfaceTest, DrawFrameAndResizeAndSwap) {
1615 DrawFrame(); 1613 DrawFrame();
1616 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1); 1614 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1);
1617 renderer_.SwapBuffers(ui::LatencyInfo()); 1615 renderer_.SwapBuffers();
1618 1616
1619 set_viewport_and_scale(gfx::Size(2, 2), 2.f); 1617 set_viewport_and_scale(gfx::Size(2, 2), 2.f);
1620 renderer_.ViewportChanged(); 1618 renderer_.ViewportChanged();
1621 1619
1622 DrawFrame(); 1620 DrawFrame();
1623 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1); 1621 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1);
1624 renderer_.SwapBuffers(ui::LatencyInfo()); 1622 renderer_.SwapBuffers();
1625 1623
1626 DrawFrame(); 1624 DrawFrame();
1627 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1); 1625 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1);
1628 renderer_.SwapBuffers(ui::LatencyInfo()); 1626 renderer_.SwapBuffers();
1629 1627
1630 set_viewport_and_scale(gfx::Size(1, 1), 1.f); 1628 set_viewport_and_scale(gfx::Size(1, 1), 1.f);
1631 renderer_.ViewportChanged(); 1629 renderer_.ViewportChanged();
1632 1630
1633 DrawFrame(); 1631 DrawFrame();
1634 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1); 1632 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1);
1635 renderer_.SwapBuffers(ui::LatencyInfo()); 1633 renderer_.SwapBuffers();
1636 }
1637
1638 class MockOutputSurfaceTestWithPartialSwap : public MockOutputSurfaceTest {
1639 public:
1640 virtual const LayerTreeSettings& Settings() const OVERRIDE {
1641 static LayerTreeSettings fake_settings;
1642 fake_settings.partial_swap_enabled = true;
1643 return fake_settings;
1644 }
1645 };
1646
1647 TEST_F(MockOutputSurfaceTestWithPartialSwap, DrawFrameAndSwap) {
1648 DrawFrame();
1649
1650 EXPECT_CALL(output_surface_, PostSubBuffer(_, _)).Times(1);
1651 renderer_.SwapBuffers(ui::LatencyInfo());
1652 }
1653
1654 class MockOutputSurfaceTestWithSendCompositorFrame
1655 : public MockOutputSurfaceTest {
1656 public:
1657 virtual const LayerTreeSettings& Settings() const OVERRIDE {
1658 static LayerTreeSettings fake_settings;
1659 fake_settings.compositor_frame_message = true;
1660 return fake_settings;
1661 }
1662 };
1663
1664 TEST_F(MockOutputSurfaceTestWithSendCompositorFrame, DrawFrame) {
1665 EXPECT_CALL(output_surface_, SendFrameToParentCompositor(_)).Times(1);
1666 DrawFrame();
1667 } 1634 }
1668 1635
1669 class GLRendererTestSyncPoint : public GLRendererPixelTest { 1636 class GLRendererTestSyncPoint : public GLRendererPixelTest {
1670 protected: 1637 protected:
1671 static void SyncPointCallback(int* callback_count) { 1638 static void SyncPointCallback(int* callback_count) {
1672 ++(*callback_count); 1639 ++(*callback_count);
1673 base::MessageLoop::current()->QuitWhenIdle(); 1640 base::MessageLoop::current()->QuitWhenIdle();
1674 } 1641 }
1675 1642
1676 static void OtherCallback(int* callback_count) { 1643 static void OtherCallback(int* callback_count) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1731 base::MessageLoop::current()->Run(); 1698 base::MessageLoop::current()->Run();
1732 1699
1733 // The sync point should have happened. 1700 // The sync point should have happened.
1734 EXPECT_EQ(1, sync_point_callback_count); 1701 EXPECT_EQ(1, sync_point_callback_count);
1735 EXPECT_EQ(1, other_callback_count); 1702 EXPECT_EQ(1, other_callback_count);
1736 } 1703 }
1737 #endif // OS_ANDROID 1704 #endif // OS_ANDROID
1738 1705
1739 } // namespace 1706 } // namespace
1740 } // namespace cc 1707 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/output_surface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698