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

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: More code review feedback incorporated 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 return InitializeWithMemoryLimit(
137 starting_transfer_buffer_size,
138 min_transfer_buffer_size,
139 min_transfer_buffer_size,
140 MappedMemoryManager::kNoLimit);
141 }
142
143 bool GLES2Implementation::InitializeWithMemoryLimit(
144 unsigned int starting_transfer_buffer_size,
145 unsigned int min_transfer_buffer_size,
146 unsigned int max_transfer_buffer_size,
147 unsigned int mapped_memory_limit) {
no sievers 2013/08/19 21:57:44 you can just add it to Initialize, it already has
kaanb 2013/08/20 01:23:43 Done.
137 GPU_DCHECK_GE(starting_transfer_buffer_size, min_transfer_buffer_size); 148 GPU_DCHECK_GE(starting_transfer_buffer_size, min_transfer_buffer_size);
138 GPU_DCHECK_LE(starting_transfer_buffer_size, max_transfer_buffer_size); 149 GPU_DCHECK_LE(starting_transfer_buffer_size, max_transfer_buffer_size);
139 GPU_DCHECK_GE(min_transfer_buffer_size, kStartingOffset); 150 GPU_DCHECK_GE(min_transfer_buffer_size, kStartingOffset);
140 151
141 if (!transfer_buffer_->Initialize( 152 if (!transfer_buffer_->Initialize(
142 starting_transfer_buffer_size, 153 starting_transfer_buffer_size,
143 kStartingOffset, 154 kStartingOffset,
144 min_transfer_buffer_size, 155 min_transfer_buffer_size,
145 max_transfer_buffer_size, 156 max_transfer_buffer_size,
146 kAlignment, 157 kAlignment,
147 kSizeToFlush)) { 158 kSizeToFlush)) {
148 return false; 159 return false;
149 } 160 }
150 161
151 mapped_memory_.reset(new MappedMemoryManager(helper_)); 162 mapped_memory_.reset(new MappedMemoryManager(helper_, mapped_memory_limit));
152 SetSharedMemoryChunkSizeMultiple(1024 * 1024 * 2);
no sievers 2013/08/19 21:57:44 Why are you removing this?
kaanb 2013/08/20 01:23:43 Done.
153 163
154 if (!QueryAndCacheStaticState()) 164 if (!QueryAndCacheStaticState())
155 return false; 165 return false;
156 166
157 util_.set_num_compressed_texture_formats( 167 util_.set_num_compressed_texture_formats(
158 static_state_.int_state.num_compressed_texture_formats); 168 static_state_.int_state.num_compressed_texture_formats);
159 util_.set_num_shader_binary_formats( 169 util_.set_num_shader_binary_formats(
160 static_state_.int_state.num_shader_binary_formats); 170 static_state_.int_state.num_shader_binary_formats);
161 171
162 texture_units_.reset( 172 texture_units_.reset(
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 } 292 }
283 293
284 int32 GLES2Implementation::GetResultShmId() { 294 int32 GLES2Implementation::GetResultShmId() {
285 return transfer_buffer_->GetShmId(); 295 return transfer_buffer_->GetShmId();
286 } 296 }
287 297
288 uint32 GLES2Implementation::GetResultShmOffset() { 298 uint32 GLES2Implementation::GetResultShmOffset() {
289 return transfer_buffer_->GetResultOffset(); 299 return transfer_buffer_->GetResultOffset();
290 } 300 }
291 301
292 void GLES2Implementation::SetSharedMemoryChunkSizeMultiple(
293 unsigned int multiple) {
294 mapped_memory_->set_chunk_size_multiple(multiple);
295 }
296
297 void GLES2Implementation::FreeUnusedSharedMemory() { 302 void GLES2Implementation::FreeUnusedSharedMemory() {
298 mapped_memory_->FreeUnused(); 303 mapped_memory_->FreeUnused();
299 } 304 }
300 305
301 void GLES2Implementation::FreeEverything() { 306 void GLES2Implementation::FreeEverything() {
302 WaitForCmd(); 307 WaitForCmd();
303 query_tracker_->Shrink(); 308 query_tracker_->Shrink();
304 FreeUnusedSharedMemory(); 309 FreeUnusedSharedMemory();
305 transfer_buffer_->Free(); 310 transfer_buffer_->Free();
306 helper_->FreeRingBuffer(); 311 helper_->FreeRingBuffer();
(...skipping 3515 matching lines...) Expand 10 before | Expand all | Expand 10 after
3822 CheckGLError(); 3827 CheckGLError();
3823 } 3828 }
3824 3829
3825 // Include the auto-generated part of this file. We split this because it means 3830 // 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 3831 // 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. 3832 // instead of having to edit some template or the code generator.
3828 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h" 3833 #include "gpu/command_buffer/client/gles2_implementation_impl_autogen.h"
3829 3834
3830 } // namespace gles2 3835 } // namespace gles2
3831 } // namespace gpu 3836 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698