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

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

Issue 1905743002: Improve BindBufferBase/BindBufferRange in GPU command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 #include "gpu/command_buffer/service/context_group.h" 5 #include "gpu/command_buffer/service/context_group.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 max_fragment_uniform_vectors_(0u), 94 max_fragment_uniform_vectors_(0u),
95 max_varying_vectors_(0u), 95 max_varying_vectors_(0u),
96 max_vertex_uniform_vectors_(0u), 96 max_vertex_uniform_vectors_(0u),
97 max_color_attachments_(1u), 97 max_color_attachments_(1u),
98 max_draw_buffers_(1u), 98 max_draw_buffers_(1u),
99 max_dual_source_draw_buffers_(0u), 99 max_dual_source_draw_buffers_(0u),
100 max_vertex_output_components_(0u), 100 max_vertex_output_components_(0u),
101 max_fragment_input_components_(0u), 101 max_fragment_input_components_(0u),
102 min_program_texel_offset_(0), 102 min_program_texel_offset_(0),
103 max_program_texel_offset_(0), 103 max_program_texel_offset_(0),
104 max_transform_feedback_separate_attribs_(0u),
105 max_uniform_buffer_bindings_(0u),
106 uniform_buffer_offset_alignment_(1u),
104 program_cache_(NULL), 107 program_cache_(NULL),
105 feature_info_(feature_info) { 108 feature_info_(feature_info) {
106 { 109 {
107 if (!mailbox_manager_.get()) 110 if (!mailbox_manager_.get())
108 mailbox_manager_ = new MailboxManagerImpl; 111 mailbox_manager_ = new MailboxManagerImpl;
109 if (!subscription_ref_set_.get()) 112 if (!subscription_ref_set_.get())
110 subscription_ref_set_ = new SubscriptionRefSet(); 113 subscription_ref_set_ = new SubscriptionRefSet();
111 if (!pending_valuebuffer_state_.get()) 114 if (!pending_valuebuffer_state_.get())
112 pending_valuebuffer_state_ = new ValueStateMap(); 115 pending_valuebuffer_state_ = new ValueStateMap();
113 if (!feature_info.get()) 116 if (!feature_info.get())
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 GetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &max_draw_buffers_); 172 GetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &max_draw_buffers_);
170 if (max_draw_buffers_ < 1) 173 if (max_draw_buffers_ < 1)
171 max_draw_buffers_ = 1; 174 max_draw_buffers_ = 1;
172 } 175 }
173 if (feature_info_->feature_flags().ext_blend_func_extended) { 176 if (feature_info_->feature_flags().ext_blend_func_extended) {
174 GetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT, 177 GetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT,
175 &max_dual_source_draw_buffers_); 178 &max_dual_source_draw_buffers_);
176 DCHECK(max_dual_source_draw_buffers_ >= 1); 179 DCHECK(max_dual_source_draw_buffers_ >= 1);
177 } 180 }
178 181
182 if (feature_info_->gl_version_info().IsES3Capable()) {
183 const GLint kMinTransformFeedbackSeparateAttribs = 4;
184 if (!QueryGLFeatureU(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
185 kMinTransformFeedbackSeparateAttribs,
186 &max_transform_feedback_separate_attribs_)) {
187 LOG(ERROR) << "ContextGroup::Initialize failed because maximum "
piman 2016/04/20 21:14:35 nit: DLOG
Zhenyao Mo 2016/04/20 22:08:50 This is consistent with the rest of the code. We
piman 2016/04/20 22:14:52 We should stop doing that. Strings and logging cod
188 << "transform feedback separate attribs is too small ("
189 << max_transform_feedback_separate_attribs_ << ", should be "
190 << kMinTransformFeedbackSeparateAttribs << ").";
191 return false;
192 }
193
194 const GLint kMinUniformBufferBindings = 24;
195 if (!QueryGLFeatureU(GL_MAX_UNIFORM_BUFFER_BINDINGS,
196 kMinUniformBufferBindings,
197 &max_uniform_buffer_bindings_)) {
198 LOG(ERROR) << "ContextGroup::Initialize failed because maximum "
piman 2016/04/20 21:14:35 nit: DLOG
Zhenyao Mo 2016/04/20 22:08:50 Same here.
199 << "uniform buffer bindings is too small ("
200 << max_uniform_buffer_bindings_ << ", should be "
201 << kMinUniformBufferBindings << ").";
202 return false;
203 }
204
205 // TODO(zmo): Should we check max UNIFORM_BUFFER_OFFSET_ALIGNMENT is 256?
206 GetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT,
207 &uniform_buffer_offset_alignment_);
208 }
209
179 buffer_manager_.reset( 210 buffer_manager_.reset(
180 new BufferManager(memory_tracker_.get(), feature_info_.get())); 211 new BufferManager(memory_tracker_.get(), feature_info_.get()));
181 framebuffer_manager_.reset(new FramebufferManager( 212 framebuffer_manager_.reset(new FramebufferManager(
182 max_draw_buffers_, max_color_attachments_, feature_info_->context_type(), 213 max_draw_buffers_, max_color_attachments_, feature_info_->context_type(),
183 framebuffer_completeness_cache_)); 214 framebuffer_completeness_cache_));
184 renderbuffer_manager_.reset(new RenderbufferManager( 215 renderbuffer_manager_.reset(new RenderbufferManager(
185 memory_tracker_.get(), max_renderbuffer_size, max_samples, 216 memory_tracker_.get(), max_renderbuffer_size, max_samples,
186 feature_info_.get())); 217 feature_info_.get()));
187 shader_manager_.reset(new ShaderManager()); 218 shader_manager_.reset(new ShaderManager());
188 sampler_manager_.reset(new SamplerManager(feature_info_.get())); 219 sampler_manager_.reset(new SamplerManager(feature_info_.get()));
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 GLuint client_id, GLuint* service_id) const { 597 GLuint client_id, GLuint* service_id) const {
567 Buffer* buffer = buffer_manager_->GetBuffer(client_id); 598 Buffer* buffer = buffer_manager_->GetBuffer(client_id);
568 if (!buffer) 599 if (!buffer)
569 return false; 600 return false;
570 *service_id = buffer->service_id(); 601 *service_id = buffer->service_id();
571 return true; 602 return true;
572 } 603 }
573 604
574 } // namespace gles2 605 } // namespace gles2
575 } // namespace gpu 606 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698