| OLD | NEW |
| 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 gfx::Rect invalidated_rect_; | 121 gfx::Rect invalidated_rect_; |
| 121 }; | 122 }; |
| 122 | 123 |
| 123 void DidFinishUsingResource(std::unique_ptr<PoolResource> resource); | 124 void DidFinishUsingResource(std::unique_ptr<PoolResource> resource); |
| 124 void DeleteResource(std::unique_ptr<PoolResource> resource); | 125 void DeleteResource(std::unique_ptr<PoolResource> resource); |
| 125 static void UpdateResourceContentIdAndInvalidation( | 126 static void UpdateResourceContentIdAndInvalidation( |
| 126 PoolResource* resource, | 127 PoolResource* resource, |
| 127 uint64_t new_content_id, | 128 uint64_t new_content_id, |
| 128 const gfx::Rect& new_invalidated_rect); | 129 const gfx::Rect& new_invalidated_rect); |
| 129 | 130 |
| 131 void OnMemoryPressure( |
| 132 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level); |
| 133 |
| 130 // Functions which manage periodic eviction of expired resources. | 134 // Functions which manage periodic eviction of expired resources. |
| 131 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now); | 135 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now); |
| 132 void EvictExpiredResources(); | 136 void EvictExpiredResources(); |
| 133 void EvictResourcesNotUsedSince(base::TimeTicks time_limit); | 137 void EvictResourcesNotUsedSince(base::TimeTicks time_limit); |
| 134 bool HasEvictableResources() const; | 138 bool HasEvictableResources() const; |
| 135 base::TimeTicks GetUsageTimeForLRUResource() const; | 139 base::TimeTicks GetUsageTimeForLRUResource() const; |
| 136 | 140 |
| 137 ResourceProvider* resource_provider_; | 141 ResourceProvider* resource_provider_; |
| 138 bool use_gpu_memory_buffers_; | 142 bool use_gpu_memory_buffers_; |
| 139 size_t max_memory_usage_bytes_; | 143 size_t max_memory_usage_bytes_; |
| 140 size_t max_resource_count_; | 144 size_t max_resource_count_; |
| 141 size_t in_use_memory_usage_bytes_; | 145 size_t in_use_memory_usage_bytes_; |
| 142 size_t total_memory_usage_bytes_; | 146 size_t total_memory_usage_bytes_; |
| 143 size_t total_resource_count_; | 147 size_t total_resource_count_; |
| 144 | 148 |
| 145 // Holds most recently used resources at the front of the queue. | 149 // Holds most recently used resources at the front of the queue. |
| 146 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>; | 150 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>; |
| 147 ResourceDeque unused_resources_; | 151 ResourceDeque unused_resources_; |
| 148 ResourceDeque busy_resources_; | 152 ResourceDeque busy_resources_; |
| 149 | 153 |
| 154 std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_; |
| 155 |
| 150 using InUseResourceMap = std::map<ResourceId, std::unique_ptr<PoolResource>>; | 156 using InUseResourceMap = std::map<ResourceId, std::unique_ptr<PoolResource>>; |
| 151 InUseResourceMap in_use_resources_; | 157 InUseResourceMap in_use_resources_; |
| 152 | 158 |
| 153 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 159 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 154 bool evict_expired_resources_pending_; | 160 bool evict_expired_resources_pending_; |
| 155 base::TimeDelta resource_expiration_delay_; | 161 base::TimeDelta resource_expiration_delay_; |
| 156 | 162 |
| 157 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_; | 163 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_; |
| 158 | 164 |
| 159 DISALLOW_COPY_AND_ASSIGN(ResourcePool); | 165 DISALLOW_COPY_AND_ASSIGN(ResourcePool); |
| 160 }; | 166 }; |
| 161 | 167 |
| 162 } // namespace cc | 168 } // namespace cc |
| 163 | 169 |
| 164 #endif // CC_RESOURCES_RESOURCE_POOL_H_ | 170 #endif // CC_RESOURCES_RESOURCE_POOL_H_ |
| OLD | NEW |