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

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

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

Powered by Google App Engine
This is Rietveld 408576698