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

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

Issue 2680203005: cc: Use DrawingFrame as state, not function argument (Closed)
Patch Set: Add reset Created 3 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
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/software_renderer.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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 1343 matching lines...) Expand 10 before | Expand all | Expand 10 after
1354 } 1354 }
1355 1355
1356 class OverlayInfoRendererGL : public GLRenderer { 1356 class OverlayInfoRendererGL : public GLRenderer {
1357 public: 1357 public:
1358 OverlayInfoRendererGL(const RendererSettings* settings, 1358 OverlayInfoRendererGL(const RendererSettings* settings,
1359 OutputSurface* output_surface, 1359 OutputSurface* output_surface,
1360 ResourceProvider* resource_provider) 1360 ResourceProvider* resource_provider)
1361 : GLRenderer(settings, output_surface, resource_provider, NULL, 0), 1361 : GLRenderer(settings, output_surface, resource_provider, NULL, 0),
1362 expect_overlays_(false) {} 1362 expect_overlays_(false) {}
1363 1363
1364 MOCK_METHOD3(DoDrawQuad, 1364 MOCK_METHOD2(DoDrawQuad,
1365 void(DrawingFrame* frame, 1365 void(const DrawQuad* quad, const gfx::QuadF* draw_region));
1366 const DrawQuad* quad, 1366
1367 const gfx::QuadF* draw_region)); 1367 void SetCurrentFrame(const DrawingFrame& frame) {
1368 SetCurrentFrameForTesting(frame);
1369 }
1368 1370
1369 using GLRenderer::BeginDrawingFrame; 1371 using GLRenderer::BeginDrawingFrame;
1370 1372
1371 void FinishDrawingFrame(DrawingFrame* frame) override { 1373 void FinishDrawingFrame() override {
1372 GLRenderer::FinishDrawingFrame(frame); 1374 GLRenderer::FinishDrawingFrame();
1373 1375
1374 if (!expect_overlays_) { 1376 if (!expect_overlays_) {
1375 EXPECT_EQ(0U, frame->overlay_list.size()); 1377 EXPECT_EQ(0U, current_frame()->overlay_list.size());
1376 return; 1378 return;
1377 } 1379 }
1378 1380
1379 ASSERT_EQ(2U, frame->overlay_list.size()); 1381 ASSERT_EQ(2U, current_frame()->overlay_list.size());
1380 EXPECT_GE(frame->overlay_list.back().resource_id, 0U); 1382 EXPECT_GE(current_frame()->overlay_list.back().resource_id, 0U);
1381 } 1383 }
1382 1384
1383 void set_expect_overlays(bool expect_overlays) { 1385 void set_expect_overlays(bool expect_overlays) {
1384 expect_overlays_ = expect_overlays; 1386 expect_overlays_ = expect_overlays;
1385 } 1387 }
1386 1388
1387 private: 1389 private:
1388 bool expect_overlays_; 1390 bool expect_overlays_;
1389 }; 1391 };
1390 1392
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1469 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1468 pass->shared_quad_state_list.back(), pass.get()); 1470 pass->shared_quad_state_list.back(), pass.get());
1469 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1471 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1470 pass->shared_quad_state_list.back(), pass.get()); 1472 pass->shared_quad_state_list.back(), pass.get());
1471 1473
1472 RenderPassList pass_list; 1474 RenderPassList pass_list;
1473 pass_list.push_back(std::move(pass)); 1475 pass_list.push_back(std::move(pass));
1474 1476
1475 // Candidate pass was taken out and extra skipped pass added, 1477 // Candidate pass was taken out and extra skipped pass added,
1476 // so only draw 2 quads. 1478 // so only draw 2 quads.
1477 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); 1479 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(2);
1478 EXPECT_CALL(scheduler_, 1480 EXPECT_CALL(scheduler_,
1479 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, 1481 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
1480 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) 1482 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
1481 .Times(1); 1483 .Times(1);
1482 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, 1484 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _,
1483 kOverlayBottomRightRect, 1485 kOverlayBottomRightRect,
1484 BoundingRect(kUVTopLeft, kUVBottomRight))) 1486 BoundingRect(kUVTopLeft, kUVBottomRight)))
1485 .Times(1); 1487 .Times(1);
1486 DrawFrame(&pass_list, viewport_size); 1488 DrawFrame(&pass_list, viewport_size);
1487 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count()); 1489 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count());
(...skipping 19 matching lines...) Expand all
1507 1509
1508 CreateFullscreenCandidateQuad(resource_provider_.get(), 1510 CreateFullscreenCandidateQuad(resource_provider_.get(),
1509 pass->shared_quad_state_list.back(), 1511 pass->shared_quad_state_list.back(),
1510 pass.get()); 1512 pass.get());
1511 1513
1512 RenderPassList pass_list; 1514 RenderPassList pass_list;
1513 pass_list.push_back(std::move(pass)); 1515 pass_list.push_back(std::move(pass));
1514 1516
1515 // Candidate quad should fail to be overlaid on top because of occlusion. 1517 // Candidate quad should fail to be overlaid on top because of occlusion.
1516 // Expect to be replaced with transparent hole quad and placed in underlay. 1518 // Expect to be replaced with transparent hole quad and placed in underlay.
1517 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1519 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(3);
1518 EXPECT_CALL(scheduler_, 1520 EXPECT_CALL(scheduler_,
1519 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, 1521 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
1520 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) 1522 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
1521 .Times(1); 1523 .Times(1);
1522 EXPECT_CALL(scheduler_, 1524 EXPECT_CALL(scheduler_,
1523 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, 1525 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect,
1524 BoundingRect(kUVTopLeft, kUVBottomRight))) 1526 BoundingRect(kUVTopLeft, kUVBottomRight)))
1525 .Times(1); 1527 .Times(1);
1526 DrawFrame(&pass_list, viewport_size); 1528 DrawFrame(&pass_list, viewport_size);
1527 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count()); 1529 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count());
(...skipping 19 matching lines...) Expand all
1547 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1549 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1548 pass->shared_quad_state_list.back(), pass.get()); 1550 pass->shared_quad_state_list.back(), pass.get());
1549 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1551 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1550 pass->shared_quad_state_list.back(), pass.get()); 1552 pass->shared_quad_state_list.back(), pass.get());
1551 1553
1552 RenderPassList pass_list; 1554 RenderPassList pass_list;
1553 pass_list.push_back(std::move(pass)); 1555 pass_list.push_back(std::move(pass));
1554 1556
1555 // Should not see the primary surface's overlay. 1557 // Should not see the primary surface's overlay.
1556 output_surface_->set_is_displayed_as_overlay_plane(false); 1558 output_surface_->set_is_displayed_as_overlay_plane(false);
1557 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1559 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(3);
1558 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1560 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1559 DrawFrame(&pass_list, viewport_size); 1561 DrawFrame(&pass_list, viewport_size);
1560 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count()); 1562 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count());
1561 SwapBuffers(); 1563 SwapBuffers();
1562 Mock::VerifyAndClearExpectations(renderer_.get()); 1564 Mock::VerifyAndClearExpectations(renderer_.get());
1563 Mock::VerifyAndClearExpectations(&scheduler_); 1565 Mock::VerifyAndClearExpectations(&scheduler_);
1564 } 1566 }
1565 1567
1566 // GLRenderer skips drawing occluded quads when partial swap is enabled. 1568 // GLRenderer skips drawing occluded quads when partial swap is enabled.
1567 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenPartialSwapEnabled) { 1569 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenPartialSwapEnabled) {
(...skipping 11 matching lines...) Expand all
1579 pass.get()); 1581 pass.get());
1580 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1582 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1581 pass->shared_quad_state_list.back(), pass.get()); 1583 pass->shared_quad_state_list.back(), pass.get());
1582 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1584 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1583 pass->shared_quad_state_list.back(), pass.get()); 1585 pass->shared_quad_state_list.back(), pass.get());
1584 1586
1585 RenderPassList pass_list; 1587 RenderPassList pass_list;
1586 pass_list.push_back(std::move(pass)); 1588 pass_list.push_back(std::move(pass));
1587 1589
1588 output_surface_->set_is_displayed_as_overlay_plane(true); 1590 output_surface_->set_is_displayed_as_overlay_plane(true);
1589 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0); 1591 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(0);
1590 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1592 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1591 DrawFrame(&pass_list, viewport_size); 1593 DrawFrame(&pass_list, viewport_size);
1592 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count()); 1594 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count());
1593 SwapBuffers(); 1595 SwapBuffers();
1594 Mock::VerifyAndClearExpectations(renderer_.get()); 1596 Mock::VerifyAndClearExpectations(renderer_.get());
1595 Mock::VerifyAndClearExpectations(&scheduler_); 1597 Mock::VerifyAndClearExpectations(&scheduler_);
1596 } 1598 }
1597 1599
1598 // GLRenderer skips drawing occluded quads when empty swap is enabled. 1600 // GLRenderer skips drawing occluded quads when empty swap is enabled.
1599 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenEmptySwapAllowed) { 1601 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawnWhenEmptySwapAllowed) {
(...skipping 11 matching lines...) Expand all
1611 1613
1612 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1614 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1613 pass->shared_quad_state_list.back(), pass.get()); 1615 pass->shared_quad_state_list.back(), pass.get());
1614 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1616 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1615 pass->shared_quad_state_list.back(), pass.get()); 1617 pass->shared_quad_state_list.back(), pass.get());
1616 1618
1617 RenderPassList pass_list; 1619 RenderPassList pass_list;
1618 pass_list.push_back(std::move(pass)); 1620 pass_list.push_back(std::move(pass));
1619 1621
1620 output_surface_->set_is_displayed_as_overlay_plane(true); 1622 output_surface_->set_is_displayed_as_overlay_plane(true);
1621 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0); 1623 EXPECT_CALL(*renderer_, DoDrawQuad(_, _)).Times(0);
1622 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1624 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1623 DrawFrame(&pass_list, viewport_size); 1625 DrawFrame(&pass_list, viewport_size);
1624 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count()); 1626 EXPECT_EQ(1U, output_surface_->bind_framebuffer_count());
1625 SwapBuffers(); 1627 SwapBuffers();
1626 Mock::VerifyAndClearExpectations(renderer_.get()); 1628 Mock::VerifyAndClearExpectations(renderer_.get());
1627 Mock::VerifyAndClearExpectations(&scheduler_); 1629 Mock::VerifyAndClearExpectations(&scheduler_);
1628 } 1630 }
1629 1631
1630 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) { 1632 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
1631 bool use_validator = true; 1633 bool use_validator = true;
(...skipping 29 matching lines...) Expand all
1661 1663
1662 DirectRenderer::DrawingFrame frame3; 1664 DirectRenderer::DrawingFrame frame3;
1663 frame3.render_passes_in_draw_order = &pass_list; 1665 frame3.render_passes_in_draw_order = &pass_list;
1664 frame3.overlay_list.resize(2); 1666 frame3.overlay_list.resize(2);
1665 frame3.overlay_list.front().use_output_surface_for_resource = true; 1667 frame3.overlay_list.front().use_output_surface_for_resource = true;
1666 OverlayCandidate& overlay3 = frame3.overlay_list.back(); 1668 OverlayCandidate& overlay3 = frame3.overlay_list.back();
1667 overlay3.resource_id = resource3; 1669 overlay3.resource_id = resource3;
1668 overlay3.plane_z_order = 1; 1670 overlay3.plane_z_order = 1;
1669 1671
1670 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1672 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1671 renderer_->BeginDrawingFrame(&frame1); 1673 renderer_->SetCurrentFrame(frame1);
1672 renderer_->FinishDrawingFrame(&frame1); 1674 renderer_->BeginDrawingFrame();
1675 renderer_->FinishDrawingFrame();
1673 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1676 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1674 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1677 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1675 SwapBuffersWithoutComplete(); 1678 SwapBuffersWithoutComplete();
1676 Mock::VerifyAndClearExpectations(&scheduler_); 1679 Mock::VerifyAndClearExpectations(&scheduler_);
1677 1680
1678 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1681 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1679 renderer_->BeginDrawingFrame(&frame2); 1682 renderer_->SetCurrentFrame(frame2);
1680 renderer_->FinishDrawingFrame(&frame2); 1683 renderer_->BeginDrawingFrame();
1684 renderer_->FinishDrawingFrame();
1681 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1685 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1682 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1686 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1683 SwapBuffersComplete(); 1687 SwapBuffersComplete();
1684 SwapBuffersWithoutComplete(); 1688 SwapBuffersWithoutComplete();
1685 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1689 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1686 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1690 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1687 Mock::VerifyAndClearExpectations(&scheduler_); 1691 Mock::VerifyAndClearExpectations(&scheduler_);
1688 1692
1689 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1693 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1690 renderer_->BeginDrawingFrame(&frame3); 1694 renderer_->SetCurrentFrame(frame3);
1691 renderer_->FinishDrawingFrame(&frame3); 1695 renderer_->BeginDrawingFrame();
1696 renderer_->FinishDrawingFrame();
1692 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1697 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1693 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1698 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1694 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1699 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1695 SwapBuffersComplete(); 1700 SwapBuffersComplete();
1696 SwapBuffersWithoutComplete(); 1701 SwapBuffersWithoutComplete();
1697 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1702 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1698 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1703 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1699 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1704 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1700 Mock::VerifyAndClearExpectations(&scheduler_); 1705 Mock::VerifyAndClearExpectations(&scheduler_);
1701 1706
1702 // No overlays, release the resource. 1707 // No overlays, release the resource.
1703 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1708 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1704 DirectRenderer::DrawingFrame frame_no_overlays; 1709 DirectRenderer::DrawingFrame frame_no_overlays;
1705 frame_no_overlays.render_passes_in_draw_order = &pass_list; 1710 frame_no_overlays.render_passes_in_draw_order = &pass_list;
1706 renderer_->set_expect_overlays(false); 1711 renderer_->set_expect_overlays(false);
1707 renderer_->BeginDrawingFrame(&frame_no_overlays); 1712 renderer_->SetCurrentFrame(frame_no_overlays);
1708 renderer_->FinishDrawingFrame(&frame_no_overlays); 1713 renderer_->BeginDrawingFrame();
1714 renderer_->FinishDrawingFrame();
1709 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1715 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1710 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1716 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1711 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1717 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1712 SwapBuffersComplete(); 1718 SwapBuffersComplete();
1713 SwapBuffersWithoutComplete(); 1719 SwapBuffersWithoutComplete();
1714 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1720 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1715 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1721 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1716 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1722 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1717 Mock::VerifyAndClearExpectations(&scheduler_); 1723 Mock::VerifyAndClearExpectations(&scheduler_);
1718 1724
1719 // Use the same buffer twice. 1725 // Use the same buffer twice.
1720 renderer_->set_expect_overlays(true); 1726 renderer_->set_expect_overlays(true);
1721 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1727 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1722 renderer_->BeginDrawingFrame(&frame1); 1728 renderer_->SetCurrentFrame(frame1);
1723 renderer_->FinishDrawingFrame(&frame1); 1729 renderer_->BeginDrawingFrame();
1730 renderer_->FinishDrawingFrame();
1724 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1731 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1725 SwapBuffersComplete(); 1732 SwapBuffersComplete();
1726 SwapBuffersWithoutComplete(); 1733 SwapBuffersWithoutComplete();
1727 Mock::VerifyAndClearExpectations(&scheduler_); 1734 Mock::VerifyAndClearExpectations(&scheduler_);
1728 1735
1729 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1736 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1730 renderer_->BeginDrawingFrame(&frame1); 1737 renderer_->SetCurrentFrame(frame1);
1731 renderer_->FinishDrawingFrame(&frame1); 1738 renderer_->BeginDrawingFrame();
1739 renderer_->FinishDrawingFrame();
1732 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1740 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1733 SwapBuffersComplete(); 1741 SwapBuffersComplete();
1734 SwapBuffersWithoutComplete(); 1742 SwapBuffersWithoutComplete();
1735 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1743 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1736 Mock::VerifyAndClearExpectations(&scheduler_); 1744 Mock::VerifyAndClearExpectations(&scheduler_);
1737 1745
1738 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1746 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1739 renderer_->set_expect_overlays(false); 1747 renderer_->set_expect_overlays(false);
1740 renderer_->BeginDrawingFrame(&frame_no_overlays); 1748 renderer_->SetCurrentFrame(frame_no_overlays);
1741 renderer_->FinishDrawingFrame(&frame_no_overlays); 1749 renderer_->BeginDrawingFrame();
1750 renderer_->FinishDrawingFrame();
1742 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1751 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1743 SwapBuffersComplete(); 1752 SwapBuffersComplete();
1744 SwapBuffersWithoutComplete(); 1753 SwapBuffersWithoutComplete();
1745 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1754 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1746 Mock::VerifyAndClearExpectations(&scheduler_); 1755 Mock::VerifyAndClearExpectations(&scheduler_);
1747 1756
1748 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1757 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1749 renderer_->set_expect_overlays(false); 1758 renderer_->set_expect_overlays(false);
1750 renderer_->BeginDrawingFrame(&frame_no_overlays); 1759 renderer_->SetCurrentFrame(frame_no_overlays);
1751 renderer_->FinishDrawingFrame(&frame_no_overlays); 1760 renderer_->BeginDrawingFrame();
1761 renderer_->FinishDrawingFrame();
1752 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1762 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1753 SwapBuffersComplete(); 1763 SwapBuffersComplete();
1754 SwapBuffersWithoutComplete(); 1764 SwapBuffersWithoutComplete();
1755 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1765 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1756 Mock::VerifyAndClearExpectations(&scheduler_); 1766 Mock::VerifyAndClearExpectations(&scheduler_);
1757 } 1767 }
1758 1768
1759 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedAfterGpuQuery) { 1769 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedAfterGpuQuery) {
1760 bool use_validator = true; 1770 bool use_validator = true;
1761 settings_.release_overlay_resources_after_gpu_query = true; 1771 settings_.release_overlay_resources_after_gpu_query = true;
(...skipping 30 matching lines...) Expand all
1792 DirectRenderer::DrawingFrame frame3; 1802 DirectRenderer::DrawingFrame frame3;
1793 frame3.render_passes_in_draw_order = &pass_list; 1803 frame3.render_passes_in_draw_order = &pass_list;
1794 frame3.overlay_list.resize(2); 1804 frame3.overlay_list.resize(2);
1795 frame3.overlay_list.front().use_output_surface_for_resource = true; 1805 frame3.overlay_list.front().use_output_surface_for_resource = true;
1796 OverlayCandidate& overlay3 = frame3.overlay_list.back(); 1806 OverlayCandidate& overlay3 = frame3.overlay_list.back();
1797 overlay3.resource_id = resource3; 1807 overlay3.resource_id = resource3;
1798 overlay3.plane_z_order = 1; 1808 overlay3.plane_z_order = 1;
1799 1809
1800 // First frame, with no swap completion. 1810 // First frame, with no swap completion.
1801 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1811 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1802 renderer_->BeginDrawingFrame(&frame1); 1812 renderer_->SetCurrentFrame(frame1);
1803 renderer_->FinishDrawingFrame(&frame1); 1813 renderer_->BeginDrawingFrame();
1814 renderer_->FinishDrawingFrame();
1804 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1815 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1805 SwapBuffersWithoutComplete(); 1816 SwapBuffersWithoutComplete();
1806 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1817 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1807 Mock::VerifyAndClearExpectations(&scheduler_); 1818 Mock::VerifyAndClearExpectations(&scheduler_);
1808 1819
1809 // Second frame, with no swap completion. 1820 // Second frame, with no swap completion.
1810 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1821 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1811 renderer_->BeginDrawingFrame(&frame2); 1822 renderer_->SetCurrentFrame(frame2);
1812 renderer_->FinishDrawingFrame(&frame2); 1823 renderer_->BeginDrawingFrame();
1824 renderer_->FinishDrawingFrame();
1813 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1825 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1814 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1826 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1815 SwapBuffersWithoutComplete(); 1827 SwapBuffersWithoutComplete();
1816 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1828 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1817 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1829 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1818 Mock::VerifyAndClearExpectations(&scheduler_); 1830 Mock::VerifyAndClearExpectations(&scheduler_);
1819 1831
1820 // Third frame, still with no swap completion (where the resources would 1832 // Third frame, still with no swap completion (where the resources would
1821 // otherwise have been released). 1833 // otherwise have been released).
1822 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); 1834 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1823 renderer_->BeginDrawingFrame(&frame3); 1835 renderer_->SetCurrentFrame(frame3);
1824 renderer_->FinishDrawingFrame(&frame3); 1836 renderer_->BeginDrawingFrame();
1837 renderer_->FinishDrawingFrame();
1825 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1838 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1826 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1839 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1827 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1840 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1828 SwapBuffersWithoutComplete(); 1841 SwapBuffersWithoutComplete();
1829 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1842 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1830 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1843 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1831 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1844 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1832 Mock::VerifyAndClearExpectations(&scheduler_); 1845 Mock::VerifyAndClearExpectations(&scheduler_);
1833 1846
1834 // This completion corresponds to the first frame. 1847 // This completion corresponds to the first frame.
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1987 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(), 2000 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(),
1988 gfx::Size(), gfx::Vector2dF(1, 1), gfx::PointF()); 2001 gfx::Size(), gfx::Vector2dF(1, 1), gfx::PointF());
1989 } 2002 }
1990 2003
1991 ProcessForOverlays(); 2004 ProcessForOverlays();
1992 EXPECT_EQ(0U, ca_layer_list_.size()); 2005 EXPECT_EQ(0U, ca_layer_list_.size());
1993 } 2006 }
1994 2007
1995 } // namespace 2008 } // namespace
1996 } // namespace cc 2009 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/software_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698