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 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 return false; | 212 return false; |
213 } | 213 } |
214 | 214 |
215 // TODO(zmo): Should we check max UNIFORM_BUFFER_OFFSET_ALIGNMENT is 256? | 215 // TODO(zmo): Should we check max UNIFORM_BUFFER_OFFSET_ALIGNMENT is 256? |
216 GetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, | 216 GetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, |
217 &uniform_buffer_offset_alignment_); | 217 &uniform_buffer_offset_alignment_); |
218 } | 218 } |
219 | 219 |
220 buffer_manager_.reset( | 220 buffer_manager_.reset( |
221 new BufferManager(memory_tracker_.get(), feature_info_.get())); | 221 new BufferManager(memory_tracker_.get(), feature_info_.get())); |
222 framebuffer_manager_.reset( | |
223 new FramebufferManager(max_draw_buffers_, max_color_attachments_, | |
224 framebuffer_completeness_cache_)); | |
225 renderbuffer_manager_.reset(new RenderbufferManager( | 222 renderbuffer_manager_.reset(new RenderbufferManager( |
226 memory_tracker_.get(), max_renderbuffer_size, max_samples, | 223 memory_tracker_.get(), max_renderbuffer_size, max_samples, |
227 feature_info_.get())); | 224 feature_info_.get())); |
228 shader_manager_.reset(new ShaderManager(progress_reporter_)); | 225 shader_manager_.reset(new ShaderManager(progress_reporter_)); |
229 sampler_manager_.reset(new SamplerManager(feature_info_.get())); | 226 sampler_manager_.reset(new SamplerManager(feature_info_.get())); |
230 | 227 |
231 // Lookup GL things we need to know. | 228 // Lookup GL things we need to know. |
232 const GLint kGLES2RequiredMinimumVertexAttribs = 8u; | 229 const GLint kGLES2RequiredMinimumVertexAttribs = 8u; |
233 if (!QueryGLFeatureU( | 230 if (!QueryGLFeatureU( |
234 GL_MAX_VERTEX_ATTRIBS, kGLES2RequiredMinimumVertexAttribs, | 231 GL_MAX_VERTEX_ATTRIBS, kGLES2RequiredMinimumVertexAttribs, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 max_rectangle_texture_size = std::min( | 307 max_rectangle_texture_size = std::min( |
311 max_rectangle_texture_size, | 308 max_rectangle_texture_size, |
312 feature_info_->workarounds().max_texture_size); | 309 feature_info_->workarounds().max_texture_size); |
313 } | 310 } |
314 | 311 |
315 texture_manager_.reset(new TextureManager( | 312 texture_manager_.reset(new TextureManager( |
316 memory_tracker_.get(), feature_info_.get(), max_texture_size, | 313 memory_tracker_.get(), feature_info_.get(), max_texture_size, |
317 max_cube_map_texture_size, max_rectangle_texture_size, | 314 max_cube_map_texture_size, max_rectangle_texture_size, |
318 max_3d_texture_size, max_array_texture_layers, bind_generates_resource_, | 315 max_3d_texture_size, max_array_texture_layers, bind_generates_resource_, |
319 progress_reporter_)); | 316 progress_reporter_)); |
320 texture_manager_->set_framebuffer_manager(framebuffer_manager_.get()); | |
321 | 317 |
322 const GLint kMinTextureImageUnits = 8; | 318 const GLint kMinTextureImageUnits = 8; |
323 const GLint kMinVertexTextureImageUnits = 0; | 319 const GLint kMinVertexTextureImageUnits = 0; |
324 if (!QueryGLFeatureU(GL_MAX_TEXTURE_IMAGE_UNITS, kMinTextureImageUnits, | 320 if (!QueryGLFeatureU(GL_MAX_TEXTURE_IMAGE_UNITS, kMinTextureImageUnits, |
325 &max_texture_image_units_)) { | 321 &max_texture_image_units_)) { |
326 DLOG(ERROR) << "ContextGroup::Initialize failed because too few " | 322 DLOG(ERROR) << "ContextGroup::Initialize failed because too few " |
327 << "texture image units supported (" | 323 << "texture image units supported (" |
328 << max_texture_image_units_ | 324 << max_texture_image_units_ |
329 << ", should be " << kMinTextureImageUnits << ")."; | 325 << ", should be " << kMinTextureImageUnits << ")."; |
330 } | 326 } |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 | 499 |
504 if (buffer_manager_ != nullptr) { | 500 if (buffer_manager_ != nullptr) { |
505 if (!have_context) { | 501 if (!have_context) { |
506 buffer_manager_->MarkContextLost(); | 502 buffer_manager_->MarkContextLost(); |
507 } | 503 } |
508 buffer_manager_->Destroy(); | 504 buffer_manager_->Destroy(); |
509 buffer_manager_.reset(); | 505 buffer_manager_.reset(); |
510 ReportProgress(); | 506 ReportProgress(); |
511 } | 507 } |
512 | 508 |
513 if (framebuffer_manager_ != NULL) { | |
514 framebuffer_manager_->Destroy(have_context); | |
515 if (texture_manager_) | |
516 texture_manager_->set_framebuffer_manager(NULL); | |
517 framebuffer_manager_.reset(); | |
518 ReportProgress(); | |
519 } | |
520 | |
521 if (renderbuffer_manager_ != NULL) { | 509 if (renderbuffer_manager_ != NULL) { |
522 renderbuffer_manager_->Destroy(have_context); | 510 renderbuffer_manager_->Destroy(have_context); |
523 renderbuffer_manager_.reset(); | 511 renderbuffer_manager_.reset(); |
524 ReportProgress(); | 512 ReportProgress(); |
525 } | 513 } |
526 | 514 |
527 if (texture_manager_ != NULL) { | 515 if (texture_manager_ != NULL) { |
528 texture_manager_->Destroy(have_context); | 516 texture_manager_->Destroy(have_context); |
529 texture_manager_.reset(); | 517 texture_manager_.reset(); |
530 ReportProgress(); | 518 ReportProgress(); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 GLuint client_id, GLuint* service_id) const { | 617 GLuint client_id, GLuint* service_id) const { |
630 Buffer* buffer = buffer_manager_->GetBuffer(client_id); | 618 Buffer* buffer = buffer_manager_->GetBuffer(client_id); |
631 if (!buffer) | 619 if (!buffer) |
632 return false; | 620 return false; |
633 *service_id = buffer->service_id(); | 621 *service_id = buffer->service_id(); |
634 return true; | 622 return true; |
635 } | 623 } |
636 | 624 |
637 } // namespace gles2 | 625 } // namespace gles2 |
638 } // namespace gpu | 626 } // namespace gpu |
OLD | NEW |