| Index: trunk/src/content/common/gpu/gpu_memory_manager_unittest.cc
|
| ===================================================================
|
| --- trunk/src/content/common/gpu/gpu_memory_manager_unittest.cc (revision 277055)
|
| +++ trunk/src/content/common/gpu/gpu_memory_manager_unittest.cc (working copy)
|
| @@ -190,13 +190,11 @@
|
| }
|
| bool IsAllocationForegroundForSurfaceNo(
|
| const MemoryAllocation& alloc) {
|
| - return alloc.bytes_limit_when_visible ==
|
| - GetMinimumClientAllocation();
|
| + return alloc.bytes_limit_when_visible == 1;
|
| }
|
| bool IsAllocationBackgroundForSurfaceNo(
|
| const MemoryAllocation& alloc) {
|
| - return alloc.bytes_limit_when_visible ==
|
| - GetMinimumClientAllocation();
|
| + return alloc.bytes_limit_when_visible == 1;
|
| }
|
| bool IsAllocationHibernatedForSurfaceNo(
|
| const MemoryAllocation& alloc) {
|
| @@ -208,28 +206,6 @@
|
| memmgr_.Manage();
|
| }
|
|
|
| - uint64 CalcAvailableFromGpuTotal(uint64 bytes) {
|
| - return GpuMemoryManager::CalcAvailableFromGpuTotal(bytes);
|
| - }
|
| -
|
| - uint64 CalcAvailableClamped(uint64 bytes) {
|
| - bytes = std::max(bytes, memmgr_.GetDefaultAvailableGpuMemory());
|
| - bytes = std::min(bytes, memmgr_.GetMaximumTotalGpuMemory());
|
| - return bytes;
|
| - }
|
| -
|
| - uint64 GetAvailableGpuMemory() {
|
| - return memmgr_.GetAvailableGpuMemory();
|
| - }
|
| -
|
| - uint64 GetMaximumClientAllocation() {
|
| - return memmgr_.GetMaximumClientAllocation();
|
| - }
|
| -
|
| - uint64 GetMinimumClientAllocation() {
|
| - return memmgr_.GetMinimumClientAllocation();
|
| - }
|
| -
|
| void SetClientStats(
|
| FakeClient* client,
|
| uint64 required,
|
| @@ -453,160 +429,4 @@
|
| EXPECT_TRUE(IsAllocationHibernatedForSurfaceNo(stub4.allocation_));
|
| }
|
|
|
| -// Test GpuMemoryManager::UpdateAvailableGpuMemory functionality
|
| -TEST_F(GpuMemoryManagerTest, TestUpdateAvailableGpuMemory) {
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub2(&memmgr_, GenerateUniqueSurfaceId(), false),
|
| - stub3(&memmgr_, GenerateUniqueSurfaceId(), true),
|
| - stub4(&memmgr_, GenerateUniqueSurfaceId(), false);
|
| - // We take the lowest GPU's total memory as the limit
|
| - uint64 expected = 400 * 1024 * 1024;
|
| - stub1.SetTotalGpuMemory(expected); // GPU Memory
|
| - stub2.SetTotalGpuMemory(expected - 1024 * 1024); // Smaller but not visible.
|
| - stub3.SetTotalGpuMemory(expected + 1024 * 1024); // Visible but larger.
|
| - stub4.SetTotalGpuMemory(expected + 1024 * 1024); // Not visible and larger.
|
| - Manage();
|
| - uint64 bytes_expected = CalcAvailableFromGpuTotal(expected);
|
| - EXPECT_EQ(GetAvailableGpuMemory(), CalcAvailableClamped(bytes_expected));
|
| -}
|
| -
|
| -// Test GpuMemoryManager Stub Memory Stats functionality:
|
| -// Creates various surface/non-surface stubs and switches stub visibility and
|
| -// tests to see that stats data structure values are correct.
|
| -TEST_F(GpuMemoryManagerTest, StubMemoryStatsForLastManageTests) {
|
| - ClientAssignmentCollector::ClientMemoryStatMap stats;
|
| -
|
| - Manage();
|
| - stats = ClientAssignmentCollector::GetClientStatsForLastManage();
|
| - EXPECT_EQ(stats.size(), 0ul);
|
| -
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true);
|
| - Manage();
|
| - stats = ClientAssignmentCollector::GetClientStatsForLastManage();
|
| - uint64 stub1allocation1 =
|
| - stats[&stub1].allocation.bytes_limit_when_visible;
|
| -
|
| - EXPECT_EQ(stats.size(), 1ul);
|
| - EXPECT_GT(stub1allocation1, 0ul);
|
| -
|
| - FakeClient stub2(&memmgr_, &stub1);
|
| - Manage();
|
| - stats = ClientAssignmentCollector::GetClientStatsForLastManage();
|
| - EXPECT_EQ(stats.count(&stub1), 1ul);
|
| - uint64 stub1allocation2 =
|
| - stats[&stub1].allocation.bytes_limit_when_visible;
|
| - EXPECT_EQ(stats.count(&stub2), 1ul);
|
| - uint64 stub2allocation2 =
|
| - stats[&stub2].allocation.bytes_limit_when_visible;
|
| -
|
| - EXPECT_EQ(stats.size(), 2ul);
|
| - EXPECT_GT(stub1allocation2, 0ul);
|
| - EXPECT_GT(stub2allocation2, 0ul);
|
| - if (stub1allocation2 != GetMaximumClientAllocation())
|
| - EXPECT_LT(stub1allocation2, stub1allocation1);
|
| -
|
| - FakeClient stub3(&memmgr_, GenerateUniqueSurfaceId(), true);
|
| - Manage();
|
| - stats = ClientAssignmentCollector::GetClientStatsForLastManage();
|
| - uint64 stub1allocation3 =
|
| - stats[&stub1].allocation.bytes_limit_when_visible;
|
| - uint64 stub2allocation3 =
|
| - stats[&stub2].allocation.bytes_limit_when_visible;
|
| - uint64 stub3allocation3 =
|
| - stats[&stub3].allocation.bytes_limit_when_visible;
|
| -
|
| - EXPECT_EQ(stats.size(), 3ul);
|
| - EXPECT_GT(stub1allocation3, 0ul);
|
| - EXPECT_GT(stub2allocation3, 0ul);
|
| - EXPECT_GT(stub3allocation3, 0ul);
|
| - if (stub1allocation3 != GetMaximumClientAllocation())
|
| - EXPECT_LT(stub1allocation3, stub1allocation2);
|
| -
|
| - stub1.SetVisible(false);
|
| -
|
| - Manage();
|
| - stats = ClientAssignmentCollector::GetClientStatsForLastManage();
|
| - uint64 stub1allocation4 =
|
| - stats[&stub1].allocation.bytes_limit_when_visible;
|
| - uint64 stub2allocation4 =
|
| - stats[&stub2].allocation.bytes_limit_when_visible;
|
| - uint64 stub3allocation4 =
|
| - stats[&stub3].allocation.bytes_limit_when_visible;
|
| -
|
| - EXPECT_EQ(stats.size(), 3ul);
|
| - EXPECT_GT(stub1allocation4, 0ul);
|
| - EXPECT_GE(stub2allocation4, 0ul);
|
| - EXPECT_GT(stub3allocation4, 0ul);
|
| - if (stub3allocation3 != GetMaximumClientAllocation())
|
| - EXPECT_GT(stub3allocation4, stub3allocation3);
|
| -}
|
| -
|
| -// Test tracking of unmanaged (e.g, WebGL) memory.
|
| -TEST_F(GpuMemoryManagerTest, UnmanagedTracking) {
|
| - // Set memory manager constants for this test
|
| - memmgr_.TestingSetAvailableGpuMemory(64);
|
| - memmgr_.TestingSetMinimumClientAllocation(8);
|
| - memmgr_.TestingSetUnmanagedLimitStep(16);
|
| -
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true);
|
| -
|
| - // Expect that the one stub get its nicetohave level.
|
| - SetClientStats(&stub1, 16, 32);
|
| - Manage();
|
| - EXPECT_GE(stub1.BytesWhenVisible(), 32u);
|
| -
|
| - // Now allocate some unmanaged memory and make sure the amount
|
| - // goes down.
|
| - memmgr_.TrackMemoryAllocatedChange(
|
| - stub1.tracking_group_.get(),
|
| - 0,
|
| - 48,
|
| - gpu::gles2::MemoryTracker::kUnmanaged);
|
| - Manage();
|
| - EXPECT_LT(stub1.BytesWhenVisible(), 24u);
|
| -
|
| - // Now allocate the entire FB worth of unmanaged memory, and
|
| - // make sure that we stay stuck at the minimum tab allocation.
|
| - memmgr_.TrackMemoryAllocatedChange(
|
| - stub1.tracking_group_.get(),
|
| - 48,
|
| - 64,
|
| - gpu::gles2::MemoryTracker::kUnmanaged);
|
| - Manage();
|
| - EXPECT_EQ(stub1.BytesWhenVisible(), 8u);
|
| -
|
| - // Far-oversubscribe the entire FB, and make sure we stay at
|
| - // the minimum allocation, and don't blow up.
|
| - memmgr_.TrackMemoryAllocatedChange(
|
| - stub1.tracking_group_.get(),
|
| - 64,
|
| - 999,
|
| - gpu::gles2::MemoryTracker::kUnmanaged);
|
| - Manage();
|
| - EXPECT_EQ(stub1.BytesWhenVisible(), 8u);
|
| -
|
| - // Delete all tracked memory so we don't hit leak checks.
|
| - memmgr_.TrackMemoryAllocatedChange(
|
| - stub1.tracking_group_.get(),
|
| - 999,
|
| - 0,
|
| - gpu::gles2::MemoryTracker::kUnmanaged);
|
| -}
|
| -
|
| -// Test the default allocation levels are used.
|
| -TEST_F(GpuMemoryManagerTest, DefaultAllocation) {
|
| - // Set memory manager constants for this test
|
| - memmgr_.TestingSetAvailableGpuMemory(64);
|
| - memmgr_.TestingSetMinimumClientAllocation(8);
|
| - memmgr_.TestingSetDefaultClientAllocation(16);
|
| -
|
| - FakeClient stub1(&memmgr_, GenerateUniqueSurfaceId(), true);
|
| -
|
| - // Expect that a client which has not sent stats receive at
|
| - // least the default allocation.
|
| - Manage();
|
| - EXPECT_GE(stub1.BytesWhenVisible(),
|
| - memmgr_.GetDefaultClientAllocation());
|
| -}
|
| -
|
| } // namespace content
|
|
|