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

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

Issue 2286583002: Make cc::SoftwareImageDecodeController, cc::ResourcePool, and cc::StagingBufferPoo… (Closed)
Patch Set: Updated (r418766) Created 4 years, 3 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_coordinator_client.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/resources/resource.h" 20 #include "cc/resources/resource.h"
20 #include "cc/resources/resource_format.h" 21 #include "cc/resources/resource_format.h"
21 #include "cc/resources/scoped_resource.h" 22 #include "cc/resources/scoped_resource.h"
22 23
23 namespace cc { 24 namespace cc {
24 25
25 class CC_EXPORT ResourcePool : public base::trace_event::MemoryDumpProvider { 26 class CC_EXPORT ResourcePool : public base::trace_event::MemoryDumpProvider,
27 public base::MemoryCoordinatorClient {
26 public: 28 public:
27 // Delay before a resource is considered expired. 29 // Delay before a resource is considered expired.
28 static base::TimeDelta kDefaultExpirationDelay; 30 static base::TimeDelta kDefaultExpirationDelay;
29 31
30 static std::unique_ptr<ResourcePool> CreateForGpuMemoryBufferResources( 32 static std::unique_ptr<ResourcePool> CreateForGpuMemoryBufferResources(
31 ResourceProvider* resource_provider, 33 ResourceProvider* resource_provider,
32 base::SingleThreadTaskRunner* task_runner, 34 base::SingleThreadTaskRunner* task_runner,
33 gfx::BufferUsage usage, 35 gfx::BufferUsage usage,
34 const base::TimeDelta& expiration_delay) { 36 const base::TimeDelta& expiration_delay) {
35 std::unique_ptr<ResourcePool> pool(new ResourcePool( 37 std::unique_ptr<ResourcePool> pool(new ResourcePool(
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 uint64_t new_content_id, 151 uint64_t new_content_id,
150 const gfx::Rect& new_invalidated_rect); 152 const gfx::Rect& new_invalidated_rect);
151 153
152 // Functions which manage periodic eviction of expired resources. 154 // Functions which manage periodic eviction of expired resources.
153 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now); 155 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now);
154 void EvictExpiredResources(); 156 void EvictExpiredResources();
155 void EvictResourcesNotUsedSince(base::TimeTicks time_limit); 157 void EvictResourcesNotUsedSince(base::TimeTicks time_limit);
156 bool HasEvictableResources() const; 158 bool HasEvictableResources() const;
157 base::TimeTicks GetUsageTimeForLRUResource() const; 159 base::TimeTicks GetUsageTimeForLRUResource() const;
158 160
161 // Overriden from base::MemoryCoordinatorClient.
162 void OnMemoryStateChange(base::MemoryState state) override;
163
159 ResourceProvider* resource_provider_; 164 ResourceProvider* resource_provider_;
160 bool use_gpu_memory_buffers_; 165 bool use_gpu_memory_buffers_;
161 gfx::BufferUsage usage_; 166 gfx::BufferUsage usage_;
162 size_t max_memory_usage_bytes_; 167 size_t max_memory_usage_bytes_;
163 size_t max_resource_count_; 168 size_t max_resource_count_;
164 size_t in_use_memory_usage_bytes_; 169 size_t in_use_memory_usage_bytes_;
165 size_t total_memory_usage_bytes_; 170 size_t total_memory_usage_bytes_;
166 size_t total_resource_count_; 171 size_t total_resource_count_;
167 172
168 // Holds most recently used resources at the front of the queue. 173 // Holds most recently used resources at the front of the queue.
169 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>; 174 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>;
170 ResourceDeque unused_resources_; 175 ResourceDeque unused_resources_;
171 ResourceDeque busy_resources_; 176 ResourceDeque busy_resources_;
172 177
173 using InUseResourceMap = std::map<ResourceId, std::unique_ptr<PoolResource>>; 178 using InUseResourceMap = std::map<ResourceId, std::unique_ptr<PoolResource>>;
174 InUseResourceMap in_use_resources_; 179 InUseResourceMap in_use_resources_;
175 180
176 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 181 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
177 bool evict_expired_resources_pending_; 182 bool evict_expired_resources_pending_;
178 const base::TimeDelta resource_expiration_delay_; 183 const base::TimeDelta resource_expiration_delay_;
179 184
180 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_; 185 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_;
181 186
182 DISALLOW_COPY_AND_ASSIGN(ResourcePool); 187 DISALLOW_COPY_AND_ASSIGN(ResourcePool);
183 }; 188 };
184 189
185 } // namespace cc 190 } // namespace cc
186 191
187 #endif // CC_RESOURCES_RESOURCE_POOL_H_ 192 #endif // CC_RESOURCES_RESOURCE_POOL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698