| Index: content/common/gpu/gpu_memory_manager_unittest.cc
|
| diff --git a/content/common/gpu/gpu_memory_manager_unittest.cc b/content/common/gpu/gpu_memory_manager_unittest.cc
|
| index 567ee25bf12cca61c721de123439bd8a496409d1..c2fb527d7015dda559a85e8945c5eb7a36ef90b4 100644
|
| --- a/content/common/gpu/gpu_memory_manager_unittest.cc
|
| +++ b/content/common/gpu/gpu_memory_manager_unittest.cc
|
| @@ -107,11 +107,6 @@ class FakeClient : public GpuMemoryManagerClient {
|
| memory_tracker_ = NULL;
|
| }
|
|
|
| - void SetMemoryAllocation(const MemoryAllocation& alloc) override {
|
| - allocation_ = alloc;
|
| - ClientAssignmentCollector::AddClientStat(this, alloc);
|
| - }
|
| -
|
| void SuggestHaveFrontBuffer(bool suggest_have_frontbuffer) override {
|
| suggest_have_frontbuffer_ = suggest_have_frontbuffer;
|
| }
|
| @@ -192,216 +187,4 @@ class GpuMemoryManagerTest : public testing::Test {
|
| GpuMemoryManager memmgr_;
|
| };
|
|
|
| -// Test GpuMemoryManager::Manage basic functionality.
|
| -// Expect memory allocation to set suggest_have_frontbuffer/backbuffer
|
| -// according to visibility and last used time for stubs with surface.
|
| -// Expect memory allocation to be shared according to share groups for stubs
|
| -// without a surface.
|
| -TEST_F(GpuMemoryManagerTest, TestManageBasicFunctionality) {
|
| - // Test stubs with surface.
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub2(&memmgr_, GenerateUniqueSurfaceId(), false);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| -
|
| - // Test stubs without surface, with share group of 1 stub.
|
| - FakeClient stub3(&memmgr_, &stub1), stub4(&memmgr_, &stub2);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub4.allocation_));
|
| -
|
| - // Test stub without surface, with share group of multiple stubs.
|
| - FakeClient stub5(&memmgr_ , &stub2);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub4.allocation_));
|
| -}
|
| -
|
| -// Test GpuMemoryManager::Manage functionality: changing visibility.
|
| -// Expect memory allocation to set suggest_have_frontbuffer/backbuffer
|
| -// according to visibility and last used time for stubs with surface.
|
| -// Expect memory allocation to be shared according to share groups for stubs
|
| -// without a surface.
|
| -TEST_F(GpuMemoryManagerTest, TestManageChangingVisibility) {
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub2(&memmgr_, GenerateUniqueSurfaceId(), false);
|
| -
|
| - FakeClient stub3(&memmgr_, &stub1), stub4(&memmgr_, &stub2);
|
| - FakeClient stub5(&memmgr_ , &stub2);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub4.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub5.allocation_));
|
| -
|
| - stub1.SetVisible(false);
|
| - stub2.SetVisible(true);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub4.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub5.allocation_));
|
| -}
|
| -
|
| -// Test GpuMemoryManager::Manage functionality: Test more than threshold number
|
| -// of visible stubs.
|
| -// Expect all allocations to continue to have frontbuffer.
|
| -TEST_F(GpuMemoryManagerTest, TestManageManyVisibleStubs) {
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub2(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub3(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub4(&memmgr_, GenerateUniqueSurfaceId(), true);
|
| -
|
| - FakeClient stub5(&memmgr_ , &stub1), stub6(&memmgr_ , &stub2);
|
| - FakeClient stub7(&memmgr_ , &stub2);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub4.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub5.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub6.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub7.allocation_));
|
| -}
|
| -
|
| -// Test GpuMemoryManager::Manage functionality: Test more than threshold number
|
| -// of not visible stubs.
|
| -// Expect the stubs surpassing the threshold to not have a backbuffer.
|
| -TEST_F(GpuMemoryManagerTest, TestManageManyNotVisibleStubs) {
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub2(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub3(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub4(&memmgr_, GenerateUniqueSurfaceId(), true);
|
| - stub4.SetVisible(false);
|
| - stub3.SetVisible(false);
|
| - stub2.SetVisible(false);
|
| - stub1.SetVisible(false);
|
| -
|
| - FakeClient stub5(&memmgr_ , &stub1), stub6(&memmgr_ , &stub4);
|
| - FakeClient stub7(&memmgr_ , &stub1);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceYes(stub4.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub5.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceNo(stub6.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub7.allocation_));
|
| -}
|
| -
|
| -// Test GpuMemoryManager::Manage functionality: Test changing the last used
|
| -// time of stubs when doing so causes change in which stubs surpass threshold.
|
| -// Expect frontbuffer to be dropped for the older stub.
|
| -TEST_F(GpuMemoryManagerTest, TestManageChangingLastUsedTime) {
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub2(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub3(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub4(&memmgr_, GenerateUniqueSurfaceId(), true);
|
| -
|
| - FakeClient stub5(&memmgr_ , &stub3), stub6(&memmgr_ , &stub4);
|
| - FakeClient stub7(&memmgr_ , &stub3);
|
| -
|
| - // Make stub4 be the least-recently-used client
|
| - stub4.SetVisible(false);
|
| - stub3.SetVisible(false);
|
| - stub2.SetVisible(false);
|
| - stub1.SetVisible(false);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceYes(stub4.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub5.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceNo(stub6.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub7.allocation_));
|
| -
|
| - // Make stub3 become the least-recently-used client.
|
| - stub2.SetVisible(true);
|
| - stub2.SetVisible(false);
|
| - stub4.SetVisible(true);
|
| - stub4.SetVisible(false);
|
| -
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceYes(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub4.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceNo(stub5.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub6.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceNo(stub7.allocation_));
|
| -}
|
| -
|
| -// Test GpuMemoryManager::Manage functionality: Test changing importance of
|
| -// enough stubs so that every stub in share group crosses threshold.
|
| -// Expect memory allocation of the stubs without surface to share memory
|
| -// allocation with the most visible stub in share group.
|
| -TEST_F(GpuMemoryManagerTest, TestManageChangingImportanceShareGroup) {
|
| - FakeClient stub_ignore_a(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub_ignore_b(&memmgr_, GenerateUniqueSurfaceId(), false),
|
| - stub_ignore_c(&memmgr_, GenerateUniqueSurfaceId(), false);
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), false),
|
| - stub2(&memmgr_, GenerateUniqueSurfaceId(), false);
|
| -
|
| - FakeClient stub3(&memmgr_, &stub2), stub4(&memmgr_, &stub2);
|
| -
|
| - // stub1 and stub2 keep their non-hibernated state because they're
|
| - // either visible or the 2 most recently used clients (through the
|
| - // first three checks).
|
| - stub1.SetVisible(true);
|
| - stub2.SetVisible(true);
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub4.allocation_));
|
| -
|
| - stub1.SetVisible(false);
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationForegroundForSurfaceNo(stub4.allocation_));
|
| -
|
| - stub2.SetVisible(false);
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub4.allocation_));
|
| -
|
| - // stub_ignore_b will cause stub1 to become hibernated (because
|
| - // stub_ignore_a, stub_ignore_b, and stub2 are all non-hibernated and more
|
| - // important).
|
| - stub_ignore_b.SetVisible(true);
|
| - stub_ignore_b.SetVisible(false);
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationBackgroundForSurfaceNo(stub4.allocation_));
|
| -
|
| - // stub_ignore_c will cause stub2 to become hibernated (because
|
| - // stub_ignore_a, stub_ignore_b, and stub_ignore_c are all non-hibernated
|
| - // and more important).
|
| - stub_ignore_c.SetVisible(true);
|
| - stub_ignore_c.SetVisible(false);
|
| - Manage();
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceYes(stub1.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceYes(stub2.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceNo(stub3.allocation_));
|
| - EXPECT_TRUE(IsAllocationHibernatedForSurfaceNo(stub4.allocation_));
|
| -}
|
| -
|
| } // namespace content
|
|
|