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 |