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

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

Issue 2130683002: [Experiment] purge-and-suspend Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
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 #ifndef CC_RESOURCES_RESOURCE_POOL_H_ 5 #ifndef CC_RESOURCES_RESOURCE_POOL_H_
6 #define CC_RESOURCES_RESOURCE_POOL_H_ 6 #define CC_RESOURCES_RESOURCE_POOL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <deque> 11 #include <deque>
12 #include <map> 12 #include <map>
13 #include <memory> 13 #include <memory>
14 14
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/memory_pressure_listener.h"
16 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
17 #include "base/trace_event/memory_dump_provider.h" 18 #include "base/trace_event/memory_dump_provider.h"
18 #include "cc/base/cc_export.h" 19 #include "cc/base/cc_export.h"
19 #include "cc/output/renderer.h" 20 #include "cc/output/renderer.h"
20 #include "cc/resources/resource.h" 21 #include "cc/resources/resource.h"
21 #include "cc/resources/resource_format.h" 22 #include "cc/resources/resource_format.h"
22 #include "cc/resources/scoped_resource.h" 23 #include "cc/resources/scoped_resource.h"
23 24
24 namespace cc { 25 namespace cc {
25 26
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 98
98 private: 99 private:
99 explicit PoolResource(ResourceProvider* resource_provider) 100 explicit PoolResource(ResourceProvider* resource_provider)
100 : ScopedResource(resource_provider), content_id_(0) {} 101 : ScopedResource(resource_provider), content_id_(0) {}
101 uint64_t content_id_; 102 uint64_t content_id_;
102 base::TimeTicks last_usage_; 103 base::TimeTicks last_usage_;
103 }; 104 };
104 105
105 void DidFinishUsingResource(std::unique_ptr<PoolResource> resource); 106 void DidFinishUsingResource(std::unique_ptr<PoolResource> resource);
106 void DeleteResource(std::unique_ptr<PoolResource> resource); 107 void DeleteResource(std::unique_ptr<PoolResource> resource);
108 void OnMemoryPressure(
109 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level);
107 110
108 // Functions which manage periodic eviction of expired resources. 111 // Functions which manage periodic eviction of expired resources.
109 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now); 112 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now);
110 void EvictExpiredResources(); 113 void EvictExpiredResources();
111 void EvictResourcesNotUsedSince(base::TimeTicks time_limit); 114 void EvictResourcesNotUsedSince(base::TimeTicks time_limit);
112 bool HasEvictableResources() const; 115 bool HasEvictableResources() const;
113 base::TimeTicks GetUsageTimeForLRUResource() const; 116 base::TimeTicks GetUsageTimeForLRUResource() const;
114 117
115 ResourceProvider* resource_provider_; 118 ResourceProvider* resource_provider_;
116 bool use_gpu_memory_buffers_; 119 bool use_gpu_memory_buffers_;
117 size_t max_memory_usage_bytes_; 120 size_t max_memory_usage_bytes_;
118 size_t max_resource_count_; 121 size_t max_resource_count_;
119 size_t in_use_memory_usage_bytes_; 122 size_t in_use_memory_usage_bytes_;
120 size_t total_memory_usage_bytes_; 123 size_t total_memory_usage_bytes_;
121 size_t total_resource_count_; 124 size_t total_resource_count_;
122 125
123 // Holds most recently used resources at the front of the queue. 126 // Holds most recently used resources at the front of the queue.
124 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>; 127 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>;
125 ResourceDeque unused_resources_; 128 ResourceDeque unused_resources_;
126 ResourceDeque busy_resources_; 129 ResourceDeque busy_resources_;
127 130
131 std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_;
132
128 std::map<ResourceId, std::unique_ptr<PoolResource>> in_use_resources_; 133 std::map<ResourceId, std::unique_ptr<PoolResource>> in_use_resources_;
129 134
130 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 135 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
131 bool evict_expired_resources_pending_; 136 bool evict_expired_resources_pending_;
132 base::TimeDelta resource_expiration_delay_; 137 base::TimeDelta resource_expiration_delay_;
133 138
134 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_; 139 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_;
135 140
136 DISALLOW_COPY_AND_ASSIGN(ResourcePool); 141 DISALLOW_COPY_AND_ASSIGN(ResourcePool);
137 }; 142 };
138 143
139 } // namespace cc 144 } // namespace cc
140 145
141 #endif // CC_RESOURCES_RESOURCE_POOL_H_ 146 #endif // CC_RESOURCES_RESOURCE_POOL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698