| 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 <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "gpu/command_buffer/common/id_allocator.h" | 10 #include "gpu/command_buffer/common/id_allocator.h" |
| 11 #include "gpu/command_buffer/service/buffer_manager.h" | 11 #include "gpu/command_buffer/service/buffer_manager.h" |
| 12 #include "gpu/command_buffer/service/display.h" |
| 12 #include "gpu/command_buffer/service/framebuffer_manager.h" | 13 #include "gpu/command_buffer/service/framebuffer_manager.h" |
| 13 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 14 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 14 #include "gpu/command_buffer/service/program_manager.h" | 15 #include "gpu/command_buffer/service/program_manager.h" |
| 15 #include "gpu/command_buffer/service/renderbuffer_manager.h" | 16 #include "gpu/command_buffer/service/renderbuffer_manager.h" |
| 16 #include "gpu/command_buffer/service/shader_manager.h" | 17 #include "gpu/command_buffer/service/shader_manager.h" |
| 17 #include "gpu/command_buffer/service/texture_manager.h" | 18 #include "gpu/command_buffer/service/texture_manager.h" |
| 18 #include "ui/gfx/gl/gl_implementation.h" | 19 #include "ui/gfx/gl/gl_implementation.h" |
| 19 | 20 |
| 20 namespace gpu { | 21 namespace gpu { |
| 21 namespace gles2 { | 22 namespace gles2 { |
| 22 | 23 |
| 23 ContextGroup::ContextGroup(bool bind_generates_resource) | 24 ContextGroup::ContextGroup(Display* display, bool bind_generates_resource) |
| 24 : num_contexts_(0), | 25 : display_(display ? display : new Display), |
| 26 num_contexts_(0), |
| 25 bind_generates_resource_(bind_generates_resource), | 27 bind_generates_resource_(bind_generates_resource), |
| 26 max_vertex_attribs_(0u), | 28 max_vertex_attribs_(0u), |
| 27 max_texture_units_(0u), | 29 max_texture_units_(0u), |
| 28 max_texture_image_units_(0u), | 30 max_texture_image_units_(0u), |
| 29 max_vertex_texture_image_units_(0u), | 31 max_vertex_texture_image_units_(0u), |
| 30 max_fragment_uniform_vectors_(0u), | 32 max_fragment_uniform_vectors_(0u), |
| 31 max_varying_vectors_(0u), | 33 max_varying_vectors_(0u), |
| 32 max_vertex_uniform_vectors_(0u), | 34 max_vertex_uniform_vectors_(0u), |
| 33 feature_info_(new FeatureInfo()) { | 35 feature_info_(new FeatureInfo()) { |
| 34 id_namespaces_[id_namespaces::kBuffers].reset(new IdAllocator); | 36 id_namespaces_[id_namespaces::kBuffers].reset(new IdAllocator); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 if (framebuffer_manager_ != NULL) { | 165 if (framebuffer_manager_ != NULL) { |
| 164 framebuffer_manager_->Destroy(have_context); | 166 framebuffer_manager_->Destroy(have_context); |
| 165 framebuffer_manager_.reset(); | 167 framebuffer_manager_.reset(); |
| 166 } | 168 } |
| 167 | 169 |
| 168 if (renderbuffer_manager_ != NULL) { | 170 if (renderbuffer_manager_ != NULL) { |
| 169 renderbuffer_manager_->Destroy(have_context); | 171 renderbuffer_manager_->Destroy(have_context); |
| 170 renderbuffer_manager_.reset(); | 172 renderbuffer_manager_.reset(); |
| 171 } | 173 } |
| 172 | 174 |
| 175 display_->DestroyOwnedTextures(texture_manager_.get(), have_context); |
| 176 |
| 173 if (texture_manager_ != NULL) { | 177 if (texture_manager_ != NULL) { |
| 174 texture_manager_->Destroy(have_context); | 178 texture_manager_->Destroy(have_context); |
| 175 texture_manager_.reset(); | 179 texture_manager_.reset(); |
| 176 } | 180 } |
| 177 | 181 |
| 178 if (program_manager_ != NULL) { | 182 if (program_manager_ != NULL) { |
| 179 program_manager_->Destroy(have_context); | 183 program_manager_->Destroy(have_context); |
| 180 program_manager_.reset(); | 184 program_manager_.reset(); |
| 181 } | 185 } |
| 182 | 186 |
| 183 if (shader_manager_ != NULL) { | 187 if (shader_manager_ != NULL) { |
| 184 shader_manager_->Destroy(have_context); | 188 shader_manager_->Destroy(have_context); |
| 185 shader_manager_.reset(); | 189 shader_manager_.reset(); |
| 186 } | 190 } |
| 187 } | 191 } |
| 188 | 192 |
| 189 IdAllocatorInterface* ContextGroup::GetIdAllocator(unsigned namespace_id) { | 193 IdAllocatorInterface* ContextGroup::GetIdAllocator(unsigned namespace_id) { |
| 190 if (namespace_id >= arraysize(id_namespaces_)) | 194 if (namespace_id >= arraysize(id_namespaces_)) |
| 191 return NULL; | 195 return NULL; |
| 192 | 196 |
| 193 return id_namespaces_[namespace_id].get(); | 197 return id_namespaces_[namespace_id].get(); |
| 194 } | 198 } |
| 195 | 199 |
| 196 } // namespace gles2 | 200 } // namespace gles2 |
| 197 } // namespace gpu | 201 } // namespace gpu |
| 198 | 202 |
| 199 | 203 |
| OLD | NEW |