| 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 | 8 |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "cc/base/region.h" | 10 #include "cc/base/region.h" |
| (...skipping 1545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1556 frame3.overlay_list.front().use_output_surface_for_resource = true; | 1556 frame3.overlay_list.front().use_output_surface_for_resource = true; |
| 1557 OverlayCandidate& overlay3 = frame3.overlay_list.back(); | 1557 OverlayCandidate& overlay3 = frame3.overlay_list.back(); |
| 1558 overlay3.resource_id = resource3; | 1558 overlay3.resource_id = resource3; |
| 1559 overlay3.plane_z_order = 1; | 1559 overlay3.plane_z_order = 1; |
| 1560 | 1560 |
| 1561 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); | 1561 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); |
| 1562 renderer_->BeginDrawingFrame(&frame1); | 1562 renderer_->BeginDrawingFrame(&frame1); |
| 1563 renderer_->FinishDrawingFrame(&frame1); | 1563 renderer_->FinishDrawingFrame(&frame1); |
| 1564 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1564 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1565 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 1565 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 1566 SwapBuffers(); | 1566 SwapBuffersWithoutComplete(); |
| 1567 Mock::VerifyAndClearExpectations(&scheduler_); | 1567 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1568 | 1568 |
| 1569 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); | 1569 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); |
| 1570 renderer_->BeginDrawingFrame(&frame2); | 1570 renderer_->BeginDrawingFrame(&frame2); |
| 1571 renderer_->FinishDrawingFrame(&frame2); | 1571 renderer_->FinishDrawingFrame(&frame2); |
| 1572 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1572 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1573 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 1573 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
| 1574 SwapBuffers(); | 1574 SwapBuffersComplete(); |
| 1575 SwapBuffersWithoutComplete(); |
| 1575 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1576 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1576 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 1577 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
| 1577 Mock::VerifyAndClearExpectations(&scheduler_); | 1578 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1578 | 1579 |
| 1579 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); | 1580 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); |
| 1580 renderer_->BeginDrawingFrame(&frame3); | 1581 renderer_->BeginDrawingFrame(&frame3); |
| 1581 renderer_->FinishDrawingFrame(&frame3); | 1582 renderer_->FinishDrawingFrame(&frame3); |
| 1582 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1583 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1583 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 1584 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
| 1584 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); | 1585 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); |
| 1585 SwapBuffers(); | 1586 SwapBuffersComplete(); |
| 1587 SwapBuffersWithoutComplete(); |
| 1586 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1588 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1587 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 1589 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
| 1588 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); | 1590 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); |
| 1589 Mock::VerifyAndClearExpectations(&scheduler_); | 1591 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1590 | 1592 |
| 1591 // No overlays, release the resource. | 1593 // No overlays, release the resource. |
| 1592 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 1594 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
| 1593 DirectRenderer::DrawingFrame frame_no_overlays; | 1595 DirectRenderer::DrawingFrame frame_no_overlays; |
| 1594 frame_no_overlays.render_passes_in_draw_order = &pass_list; | 1596 frame_no_overlays.render_passes_in_draw_order = &pass_list; |
| 1595 renderer_->set_expect_overlays(false); | 1597 renderer_->set_expect_overlays(false); |
| 1596 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1598 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1597 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1599 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1598 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1600 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1599 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 1601 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
| 1600 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); | 1602 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); |
| 1601 SwapBuffers(); | 1603 SwapBuffersComplete(); |
| 1604 SwapBuffersWithoutComplete(); |
| 1602 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1605 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1603 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 1606 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 1604 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); | 1607 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); |
| 1605 Mock::VerifyAndClearExpectations(&scheduler_); | 1608 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1606 | 1609 |
| 1607 // Use the same buffer twice. | 1610 // Use the same buffer twice. |
| 1608 renderer_->set_expect_overlays(true); | 1611 renderer_->set_expect_overlays(true); |
| 1609 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); | 1612 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); |
| 1610 renderer_->BeginDrawingFrame(&frame1); | 1613 renderer_->BeginDrawingFrame(&frame1); |
| 1611 renderer_->FinishDrawingFrame(&frame1); | 1614 renderer_->FinishDrawingFrame(&frame1); |
| 1612 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1615 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1613 SwapBuffers(); | 1616 SwapBuffersComplete(); |
| 1617 SwapBuffersWithoutComplete(); |
| 1614 Mock::VerifyAndClearExpectations(&scheduler_); | 1618 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1615 | 1619 |
| 1616 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); | 1620 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); |
| 1617 renderer_->BeginDrawingFrame(&frame1); | 1621 renderer_->BeginDrawingFrame(&frame1); |
| 1618 renderer_->FinishDrawingFrame(&frame1); | 1622 renderer_->FinishDrawingFrame(&frame1); |
| 1619 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1623 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1620 SwapBuffers(); | 1624 SwapBuffersComplete(); |
| 1625 SwapBuffersWithoutComplete(); |
| 1621 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1626 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1622 Mock::VerifyAndClearExpectations(&scheduler_); | 1627 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1623 | 1628 |
| 1624 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 1629 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
| 1625 renderer_->set_expect_overlays(false); | 1630 renderer_->set_expect_overlays(false); |
| 1626 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1631 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1627 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1632 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1628 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1633 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1629 SwapBuffers(); | 1634 SwapBuffersComplete(); |
| 1635 SwapBuffersWithoutComplete(); |
| 1630 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1636 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1631 Mock::VerifyAndClearExpectations(&scheduler_); | 1637 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1632 | 1638 |
| 1633 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 1639 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
| 1634 renderer_->set_expect_overlays(false); | 1640 renderer_->set_expect_overlays(false); |
| 1635 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1641 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1636 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1642 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1637 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1643 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1638 SwapBuffers(); | 1644 SwapBuffersComplete(); |
| 1645 SwapBuffersWithoutComplete(); |
| 1639 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1646 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1640 Mock::VerifyAndClearExpectations(&scheduler_); | 1647 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1641 } | 1648 } |
| 1642 | 1649 |
| 1643 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedAfterGpuQuery) { | 1650 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedAfterGpuQuery) { |
| 1644 bool use_validator = true; | 1651 bool use_validator = true; |
| 1645 settings_.release_overlay_resources_after_gpu_query = true; | 1652 settings_.release_overlay_resources_after_gpu_query = true; |
| 1646 Init(use_validator); | 1653 Init(use_validator); |
| 1647 renderer_->set_expect_overlays(true); | 1654 renderer_->set_expect_overlays(true); |
| 1648 | 1655 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1737 | 1744 |
| 1738 ReturnResourceInUseQuery(resource2); | 1745 ReturnResourceInUseQuery(resource2); |
| 1739 ReturnResourceInUseQuery(resource3); | 1746 ReturnResourceInUseQuery(resource3); |
| 1740 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1747 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1741 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 1748 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 1742 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); | 1749 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); |
| 1743 } | 1750 } |
| 1744 | 1751 |
| 1745 } // namespace | 1752 } // namespace |
| 1746 } // namespace cc | 1753 } // namespace cc |
| OLD | NEW |