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

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

Issue 2166973002: cc: Release pending overlay resources on swap-ack. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Fix tests. Created 4 years, 5 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
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 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
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
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
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698