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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation.cc

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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 // A class to emulate GLES2 over command buffers. 5 // A class to emulate GLES2 over command buffers.
6 6
7 #include "gpu/command_buffer/client/gles2_implementation.h" 7 #include "gpu/command_buffer/client/gles2_implementation.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <map> 10 #include <map>
11 #include <queue> 11 #include <queue>
12 #include <set> 12 #include <set>
13 #include <limits> 13 #include <limits>
14 #include <stdio.h> 14 #include <stdio.h>
15 #include <string.h> 15 #include <string.h>
16 #include <GLES2/gl2ext.h> 16 #include <GLES2/gl2ext.h>
17 #include <GLES2/gl2extchromium.h> 17 #include <GLES2/gl2extchromium.h>
18 #include "gpu/command_buffer/client/buffer_tracker.h" 18 #include "gpu/command_buffer/client/buffer_tracker.h"
19 #include "gpu/command_buffer/client/gpu_memory_buffer_tracker.h" 19 #include "gpu/command_buffer/client/gpu_memory_buffer_tracker.h"
20 #include "gpu/command_buffer/client/mapped_memory.h"
21 #include "gpu/command_buffer/client/program_info_manager.h" 20 #include "gpu/command_buffer/client/program_info_manager.h"
22 #include "gpu/command_buffer/client/query_tracker.h" 21 #include "gpu/command_buffer/client/query_tracker.h"
23 #include "gpu/command_buffer/client/transfer_buffer.h" 22 #include "gpu/command_buffer/client/transfer_buffer.h"
24 #include "gpu/command_buffer/client/vertex_array_object_manager.h" 23 #include "gpu/command_buffer/client/vertex_array_object_manager.h"
25 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 24 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
26 #include "gpu/command_buffer/common/trace_event.h" 25 #include "gpu/command_buffer/common/trace_event.h"
27 #include "ui/gfx/gpu_memory_buffer.h" 26 #include "ui/gfx/gpu_memory_buffer.h"
28 27
29 #if defined(__native_client__) && !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) 28 #if defined(__native_client__) && !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
30 #define GLES2_SUPPORT_CLIENT_SIDE_ARRAYS 29 #define GLES2_SUPPORT_CLIENT_SIDE_ARRAYS
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 125
127 share_group_ = 126 share_group_ =
128 (share_group ? share_group : new ShareGroup(bind_generates_resource)); 127 (share_group ? share_group : new ShareGroup(bind_generates_resource));
129 128
130 memset(&reserved_ids_, 0, sizeof(reserved_ids_)); 129 memset(&reserved_ids_, 0, sizeof(reserved_ids_));
131 } 130 }
132 131
133 bool GLES2Implementation::Initialize( 132 bool GLES2Implementation::Initialize(
134 unsigned int starting_transfer_buffer_size, 133 unsigned int starting_transfer_buffer_size,
135 unsigned int min_transfer_buffer_size, 134 unsigned int min_transfer_buffer_size,
136 unsigned int max_transfer_buffer_size) { 135 unsigned int max_transfer_buffer_size,
136 unsigned int mapped_memory_limit) {
137 GPU_DCHECK_GE(starting_transfer_buffer_size, min_transfer_buffer_size); 137 GPU_DCHECK_GE(starting_transfer_buffer_size, min_transfer_buffer_size);
138 GPU_DCHECK_LE(starting_transfer_buffer_size, max_transfer_buffer_size); 138 GPU_DCHECK_LE(starting_transfer_buffer_size, max_transfer_buffer_size);
139 GPU_DCHECK_GE(min_transfer_buffer_size, kStartingOffset); 139 GPU_DCHECK_GE(min_transfer_buffer_size, kStartingOffset);
140 140
141 if (!transfer_buffer_->Initialize( 141 if (!transfer_buffer_->Initialize(
142 starting_transfer_buffer_size, 142 starting_transfer_buffer_size,
143 kStartingOffset, 143 kStartingOffset,
144 min_transfer_buffer_size, 144 min_transfer_buffer_size,
145 max_transfer_buffer_size, 145 max_transfer_buffer_size,
146 kAlignment, 146 kAlignment,
147 kSizeToFlush)) { 147 kSizeToFlush)) {
148 return false; 148 return false;
149 } 149 }
150 150
151 mapped_memory_.reset(new MappedMemoryManager(helper_)); 151 mapped_memory_.reset(new MappedMemoryManager(helper_, mapped_memory_limit));
152 SetSharedMemoryChunkSizeMultiple(1024 * 1024 * 2); 152 mapped_memory_->set_chunk_size_multiple(2 * 1024 * 1024);
153 153
154 if (!QueryAndCacheStaticState()) 154 if (!QueryAndCacheStaticState())
155 return false; 155 return false;
156 156
157 util_.set_num_compressed_texture_formats( 157 util_.set_num_compressed_texture_formats(
158 static_state_.int_state.num_compressed_texture_formats); 158 static_state_.int_state.num_compressed_texture_formats);
159 util_.set_num_shader_binary_formats( 159 util_.set_num_shader_binary_formats(
160 static_state_.int_state.num_shader_binary_formats); 160 static_state_.int_state.num_shader_binary_formats);
161 161
162 texture_units_.reset( 162 texture_units_.reset(
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 } 282 }
283 283
284 int32 GLES2Implementation::GetResultShmId() { 284 int32 GLES2Implementation::GetResultShmId() {
285 return transfer_buffer_->GetShmId(); 285 return transfer_buffer_->GetShmId();
286 } 286 }
287 287
288 uint32 GLES2Implementation::GetResultShmOffset() { 288 uint32 GLES2Implementation::GetResultShmOffset() {
289 return transfer_buffer_->GetResultOffset(); 289 return transfer_buffer_->GetResultOffset();
290 } 290 }
291 291
292 void GLES2Implementation::SetSharedMemoryChunkSizeMultiple(
293 unsigned int multiple) {
294 mapped_memory_->set_chunk_size_multiple(multiple);
295 }
296
297 void GLES2Implementation::FreeUnusedSharedMemory() { 292 void GLES2Implementation::FreeUnusedSharedMemory() {
298 mapped_memory_->FreeUnused(); 293 mapped_memory_->FreeUnused();
299 } 294 }
300 295
301 void GLES2Implementation::FreeEverything() { 296 void GLES2Implementation::FreeEverything() {
302 WaitForCmd(); 297 WaitForCmd();
303 query_tracker_->Shrink(); 298 query_tracker_->Shrink();
304 FreeUnusedSharedMemory(); 299 FreeUnusedSharedMemory();
305 transfer_buffer_->Free(); 300 transfer_buffer_->Free();
306 helper_->FreeRingBuffer(); 301 helper_->FreeRingBuffer();
(...skipping 3515 matching lines...) Expand 10 before | Expand all | Expand 10 after
3822 CheckGLError(); 3817 CheckGLError();
3823 } 3818 }
3824 3819
3825 // Include the auto-generated part of this file. We split this because it means 3820 // Include the auto-generated part of this file. We split this because it means
3826 // we can easily edit the non-auto generated parts right here in this file 3821 // we can easily edit the non-auto generated parts right here in this file
3827 // instead of having to edit some template or the code generator. 3822 // instead of having to edit some template or the code generator.
3828 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h" 3823 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h"
3829 3824
3830 } // namespace gles2 3825 } // namespace gles2
3831 } // namespace gpu 3826 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/gles2_implementation.h ('k') | gpu/command_buffer/client/gles2_implementation_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698