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

Side by Side Diff: gpu/command_buffer/service/buffer_manager.cc

Issue 833243008: Update from https://crrev.com/311145 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « gpu/command_buffer/service/buffer_manager.h ('k') | gpu/command_buffer/service/context_group.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "gpu/command_buffer/service/buffer_manager.h" 5 #include "gpu/command_buffer/service/buffer_manager.h"
6 #include <limits> 6 #include <limits>
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 9 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
10 #include "gpu/command_buffer/service/context_state.h" 10 #include "gpu/command_buffer/service/context_state.h"
11 #include "gpu/command_buffer/service/error_state.h" 11 #include "gpu/command_buffer/service/error_state.h"
12 #include "gpu/command_buffer/service/feature_info.h" 12 #include "gpu/command_buffer/service/feature_info.h"
13 #include "gpu/command_buffer/service/memory_tracking.h" 13 #include "gpu/command_buffer/service/memory_tracking.h"
14 #include "ui/gl/gl_bindings.h" 14 #include "ui/gl/gl_bindings.h"
15 #include "ui/gl/gl_implementation.h"
15 16
16 namespace gpu { 17 namespace gpu {
17 namespace gles2 { 18 namespace gles2 {
18 19
19 BufferManager::BufferManager( 20 BufferManager::BufferManager(
20 MemoryTracker* memory_tracker, 21 MemoryTracker* memory_tracker,
21 FeatureInfo* feature_info) 22 FeatureInfo* feature_info)
22 : memory_tracker_( 23 : memory_tracker_(
23 new MemoryTypeTracker(memory_tracker, MemoryTracker::kManaged)), 24 new MemoryTypeTracker(memory_tracker, MemoryTracker::kManaged)),
24 feature_info_(feature_info), 25 feature_info_(feature_info),
25 allow_buffers_on_multiple_targets_(false), 26 allow_buffers_on_multiple_targets_(false),
27 allow_fixed_attribs_(false),
26 buffer_count_(0), 28 buffer_count_(0),
27 have_context_(true), 29 have_context_(true),
28 use_client_side_arrays_for_stream_buffers_( 30 use_client_side_arrays_for_stream_buffers_(
29 feature_info ? feature_info->workarounds( 31 feature_info ? feature_info->workarounds(
30 ).use_client_side_arrays_for_stream_buffers : 0) { 32 ).use_client_side_arrays_for_stream_buffers : 0) {
31 } 33 }
32 34
33 BufferManager::~BufferManager() { 35 BufferManager::~BufferManager() {
34 DCHECK(buffers_.empty()); 36 DCHECK(buffers_.empty());
35 CHECK_EQ(buffer_count_, 0u); 37 CHECK_EQ(buffer_count_, 0u);
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 bool BufferManager::UseNonZeroSizeForClientSideArrayBuffer() { 246 bool BufferManager::UseNonZeroSizeForClientSideArrayBuffer() {
245 return feature_info_.get() && 247 return feature_info_.get() &&
246 feature_info_->workarounds() 248 feature_info_->workarounds()
247 .use_non_zero_size_for_client_side_stream_buffers; 249 .use_non_zero_size_for_client_side_stream_buffers;
248 } 250 }
249 251
250 void BufferManager::SetInfo( 252 void BufferManager::SetInfo(
251 Buffer* buffer, GLsizeiptr size, GLenum usage, const GLvoid* data) { 253 Buffer* buffer, GLsizeiptr size, GLenum usage, const GLvoid* data) {
252 DCHECK(buffer); 254 DCHECK(buffer);
253 memory_tracker_->TrackMemFree(buffer->size()); 255 memory_tracker_->TrackMemFree(buffer->size());
254 bool is_client_side_array = IsUsageClientSideArray(usage); 256 const bool is_client_side_array = IsUsageClientSideArray(usage);
255 bool shadow = buffer->target() == GL_ELEMENT_ARRAY_BUFFER || 257 const bool support_fixed_attribs =
256 allow_buffers_on_multiple_targets_ || 258 gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2;
257 is_client_side_array; 259 const bool shadow = buffer->target() == GL_ELEMENT_ARRAY_BUFFER ||
260 allow_buffers_on_multiple_targets_ ||
261 (allow_fixed_attribs_ && !support_fixed_attribs) ||
262 is_client_side_array;
258 buffer->SetInfo(size, usage, shadow, data, is_client_side_array); 263 buffer->SetInfo(size, usage, shadow, data, is_client_side_array);
259 memory_tracker_->TrackMemAlloc(buffer->size()); 264 memory_tracker_->TrackMemAlloc(buffer->size());
260 } 265 }
261 266
262 void BufferManager::ValidateAndDoBufferData( 267 void BufferManager::ValidateAndDoBufferData(
263 ContextState* context_state, GLenum target, GLsizeiptr size, 268 ContextState* context_state, GLenum target, GLsizeiptr size,
264 const GLvoid * data, GLenum usage) { 269 const GLvoid * data, GLenum usage) {
265 ErrorState* error_state = context_state->GetErrorState(); 270 ErrorState* error_state = context_state->GetErrorState();
266 if (!feature_info_->validators()->buffer_target.IsValid(target)) { 271 if (!feature_info_->validators()->buffer_target.IsValid(target)) {
267 ERRORSTATE_SET_GL_ERROR_INVALID_ENUM( 272 ERRORSTATE_SET_GL_ERROR_INVALID_ENUM(
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 return state->bound_array_buffer.get(); 403 return state->bound_array_buffer.get();
399 } else { 404 } else {
400 return state->vertex_attrib_manager->element_array_buffer(); 405 return state->vertex_attrib_manager->element_array_buffer();
401 } 406 }
402 } 407 }
403 408
404 } // namespace gles2 409 } // namespace gles2
405 } // namespace gpu 410 } // namespace gpu
406 411
407 412
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/buffer_manager.h ('k') | gpu/command_buffer/service/context_group.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698