| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |