Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |