| 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 |