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 #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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |