| 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(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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |