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

Unified Diff: gpu/command_buffer/client/mapped_memory.h

Issue 23130004: Enforce a memory limit on MappedMemoryManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix another namespace error Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/client/mapped_memory.h
diff --git a/gpu/command_buffer/client/mapped_memory.h b/gpu/command_buffer/client/mapped_memory.h
index ec70c430de5969f66e652242b8554254e6c932b0..db73ca7a6091ea5753b3f498dc596cde8e192364 100644
--- a/gpu/command_buffer/client/mapped_memory.h
+++ b/gpu/command_buffer/client/mapped_memory.h
@@ -79,7 +79,7 @@ class GPU_EXPORT MemoryChunk {
allocator_.FreePendingToken(pointer, token);
}
- // Frees any blocks who's tokens have passed.
+ // Frees any blocks whose tokens have passed.
void FreeUnused() {
allocator_.FreeUnused();
}
@@ -90,11 +90,15 @@ class GPU_EXPORT MemoryChunk {
pointer < reinterpret_cast<const int8*>(shm_.ptr) + shm_.size;
}
- // Returns true of any memory in this chuck is in use.
+ // Returns true of any memory in this chunk is in use.
bool InUse() {
return allocator_.InUse();
}
+ size_t bytes_in_use() const {
+ return allocator_.bytes_in_use();
+ }
+
private:
int32 shm_id_;
gpu::Buffer shm_;
@@ -103,10 +107,17 @@ class GPU_EXPORT MemoryChunk {
DISALLOW_COPY_AND_ASSIGN(MemoryChunk);
};
-// Manages MemoryChucks.
+// Manages MemoryChunks.
class GPU_EXPORT MappedMemoryManager {
public:
- explicit MappedMemoryManager(CommandBufferHelper* helper);
+ enum MemoryLimit {
+ kNoLimit = 0,
+ };
+
+ // |unused_memory_reclaim_limit|: When exceeded this causes pending memory
+ // to be reclaimed before allocating more memory.
+ MappedMemoryManager(CommandBufferHelper* helper,
+ size_t unused_memory_reclaim_limit);
~MappedMemoryManager();
@@ -146,10 +157,15 @@ class GPU_EXPORT MappedMemoryManager {
void FreeUnused();
// Used for testing
- size_t num_chunks() {
+ size_t num_chunks() const {
return chunks_.size();
}
+ // Used for testing
+ size_t allocated_memory() const {
+ return allocated_memory_;
+ }
+
private:
typedef ScopedVector<MemoryChunk> MemoryChunkVector;
@@ -157,6 +173,8 @@ class GPU_EXPORT MappedMemoryManager {
unsigned int chunk_size_multiple_;
CommandBufferHelper* helper_;
MemoryChunkVector chunks_;
+ size_t allocated_memory_;
+ size_t max_free_bytes_;
DISALLOW_COPY_AND_ASSIGN(MappedMemoryManager);
};
« no previous file with comments | « gpu/command_buffer/client/gles2_implementation_unittest.cc ('k') | gpu/command_buffer/client/mapped_memory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698