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

Side by Side Diff: cc/resources/resource_pool.cc

Issue 2467973004: Revert of Add BACKGROUND dump mode to various GPU/CC MemoryDumpProviders (Closed)
Patch Set: Created 4 years, 1 month 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/raster/staging_buffer_pool.cc ('k') | cc/tiles/gpu_image_decode_controller.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "cc/resources/resource_pool.h" 5 #include "cc/resources/resource_pool.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/format_macros.h" 13 #include "base/format_macros.h"
14 #include "base/memory/memory_coordinator_client_registry.h" 14 #include "base/memory/memory_coordinator_client_registry.h"
15 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
16 #include "base/threading/thread_task_runner_handle.h" 16 #include "base/threading/thread_task_runner_handle.h"
17 #include "base/trace_event/memory_dump_manager.h" 17 #include "base/trace_event/memory_dump_manager.h"
18 #include "cc/base/container_util.h" 18 #include "cc/base/container_util.h"
19 #include "cc/resources/resource_provider.h" 19 #include "cc/resources/resource_provider.h"
20 #include "cc/resources/resource_util.h" 20 #include "cc/resources/resource_util.h"
21 #include "cc/resources/scoped_resource.h" 21 #include "cc/resources/scoped_resource.h"
22 22
23 using base::trace_event::MemoryAllocatorDump;
24 using base::trace_event::MemoryDumpLevelOfDetail;
25
26 namespace cc { 23 namespace cc {
27 base::TimeDelta ResourcePool::kDefaultExpirationDelay = 24 base::TimeDelta ResourcePool::kDefaultExpirationDelay =
28 base::TimeDelta::FromSeconds(1); 25 base::TimeDelta::FromSeconds(1);
29 26
30 void ResourcePool::PoolResource::OnMemoryDump( 27 void ResourcePool::PoolResource::OnMemoryDump(
31 base::trace_event::ProcessMemoryDump* pmd, 28 base::trace_event::ProcessMemoryDump* pmd,
32 const ResourceProvider* resource_provider, 29 const ResourceProvider* resource_provider,
33 bool is_free) const { 30 bool is_free) const {
34 // Resource IDs are not process-unique, so log with the ResourceProvider's 31 // Resource IDs are not process-unique, so log with the ResourceProvider's
35 // unique id. 32 // unique id.
36 std::string parent_node = 33 std::string parent_node =
37 base::StringPrintf("cc/resource_memory/provider_%d/resource_%d", 34 base::StringPrintf("cc/resource_memory/provider_%d/resource_%d",
38 resource_provider->tracing_id(), id()); 35 resource_provider->tracing_id(), id());
39 36
40 std::string dump_name = 37 std::string dump_name =
41 base::StringPrintf("cc/tile_memory/provider_%d/resource_%d", 38 base::StringPrintf("cc/tile_memory/provider_%d/resource_%d",
42 resource_provider->tracing_id(), id()); 39 resource_provider->tracing_id(), id());
43 MemoryAllocatorDump* dump = pmd->CreateAllocatorDump(dump_name); 40 base::trace_event::MemoryAllocatorDump* dump =
41 pmd->CreateAllocatorDump(dump_name);
42
44 pmd->AddSuballocation(dump->guid(), parent_node); 43 pmd->AddSuballocation(dump->guid(), parent_node);
45 44
46 uint64_t total_bytes = 45 uint64_t total_bytes =
47 ResourceUtil::UncheckedSizeInBytesAligned<size_t>(size(), format()); 46 ResourceUtil::UncheckedSizeInBytesAligned<size_t>(size(), format());
48 dump->AddScalar(MemoryAllocatorDump::kNameSize, 47 dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
49 MemoryAllocatorDump::kUnitsBytes, total_bytes); 48 base::trace_event::MemoryAllocatorDump::kUnitsBytes,
49 total_bytes);
50 50
51 if (is_free) { 51 if (is_free) {
52 dump->AddScalar("free_size", MemoryAllocatorDump::kUnitsBytes, total_bytes); 52 dump->AddScalar("free_size",
53 base::trace_event::MemoryAllocatorDump::kUnitsBytes,
54 total_bytes);
53 } 55 }
54 } 56 }
55 57
56 ResourcePool::ResourcePool(ResourceProvider* resource_provider, 58 ResourcePool::ResourcePool(ResourceProvider* resource_provider,
57 base::SingleThreadTaskRunner* task_runner, 59 base::SingleThreadTaskRunner* task_runner,
58 bool use_gpu_memory_buffers, 60 bool use_gpu_memory_buffers,
59 const base::TimeDelta& expiration_delay) 61 const base::TimeDelta& expiration_delay)
60 : resource_provider_(resource_provider), 62 : resource_provider_(resource_provider),
61 use_gpu_memory_buffers_(use_gpu_memory_buffers), 63 use_gpu_memory_buffers_(use_gpu_memory_buffers),
62 max_memory_usage_bytes_(0), 64 max_memory_usage_bytes_(0),
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 return unused_resources_.back()->last_usage(); 440 return unused_resources_.back()->last_usage();
439 } 441 }
440 442
441 // This is only called when we have at least one evictable resource. 443 // This is only called when we have at least one evictable resource.
442 DCHECK(!busy_resources_.empty()); 444 DCHECK(!busy_resources_.empty());
443 return busy_resources_.back()->last_usage(); 445 return busy_resources_.back()->last_usage();
444 } 446 }
445 447
446 bool ResourcePool::OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, 448 bool ResourcePool::OnMemoryDump(const base::trace_event::MemoryDumpArgs& args,
447 base::trace_event::ProcessMemoryDump* pmd) { 449 base::trace_event::ProcessMemoryDump* pmd) {
448 if (args.level_of_detail == MemoryDumpLevelOfDetail::BACKGROUND) { 450 for (const auto& resource : unused_resources_) {
449 std::string dump_name = base::StringPrintf( 451 resource->OnMemoryDump(pmd, resource_provider_, true /* is_free */);
450 "cc/tile_memory/provider_%d", resource_provider_->tracing_id()); 452 }
451 MemoryAllocatorDump* dump = pmd->CreateAllocatorDump(dump_name); 453 for (const auto& resource : busy_resources_) {
452 dump->AddScalar(MemoryAllocatorDump::kNameSize, 454 resource->OnMemoryDump(pmd, resource_provider_, false /* is_free */);
453 MemoryAllocatorDump::kUnitsBytes, 455 }
454 total_memory_usage_bytes_); 456 for (const auto& entry : in_use_resources_) {
455 } else { 457 entry.second->OnMemoryDump(pmd, resource_provider_, false /* is_free */);
456 for (const auto& resource : unused_resources_) {
457 resource->OnMemoryDump(pmd, resource_provider_, true /* is_free */);
458 }
459 for (const auto& resource : busy_resources_) {
460 resource->OnMemoryDump(pmd, resource_provider_, false /* is_free */);
461 }
462 for (const auto& entry : in_use_resources_) {
463 entry.second->OnMemoryDump(pmd, resource_provider_, false /* is_free */);
464 }
465 } 458 }
466 return true; 459 return true;
467 } 460 }
468 461
469 void ResourcePool::OnMemoryStateChange(base::MemoryState state) { 462 void ResourcePool::OnMemoryStateChange(base::MemoryState state) {
470 switch (state) { 463 switch (state) {
471 case base::MemoryState::NORMAL: 464 case base::MemoryState::NORMAL:
472 // TODO(tasak): go back to normal state. 465 // TODO(tasak): go back to normal state.
473 break; 466 break;
474 case base::MemoryState::THROTTLED: 467 case base::MemoryState::THROTTLED:
475 // TODO(tasak): make the limits of this component's caches smaller to 468 // TODO(tasak): make the limits of this component's caches smaller to
476 // save memory usage. 469 // save memory usage.
477 break; 470 break;
478 case base::MemoryState::SUSPENDED: 471 case base::MemoryState::SUSPENDED:
479 // Release all resources, regardless of how recently they were used. 472 // Release all resources, regardless of how recently they were used.
480 EvictResourcesNotUsedSince(base::TimeTicks() + base::TimeDelta::Max()); 473 EvictResourcesNotUsedSince(base::TimeTicks() + base::TimeDelta::Max());
481 break; 474 break;
482 case base::MemoryState::UNKNOWN: 475 case base::MemoryState::UNKNOWN:
483 // NOT_REACHED. 476 // NOT_REACHED.
484 break; 477 break;
485 } 478 }
486 } 479 }
487 480
488 } // namespace cc 481 } // namespace cc
OLDNEW
« no previous file with comments | « cc/raster/staging_buffer_pool.cc ('k') | cc/tiles/gpu_image_decode_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698