| 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 <stack> | 5 #include <stack> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "gpu/command_buffer/client/share_group.h" | 8 #include "gpu/command_buffer/client/share_group.h" |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 return false; | 220 return false; |
| 221 } | 221 } |
| 222 | 222 |
| 223 virtual void FreeContext(GLES2Implementation* gl_impl) OVERRIDE {} | 223 virtual void FreeContext(GLES2Implementation* gl_impl) OVERRIDE {} |
| 224 | 224 |
| 225 private: | 225 private: |
| 226 base::Lock lock_; | 226 base::Lock lock_; |
| 227 GLuint last_id_; | 227 GLuint last_id_; |
| 228 }; | 228 }; |
| 229 | 229 |
| 230 class RangeIdHandler : public RangeIdHandlerInterface { |
| 231 public: |
| 232 RangeIdHandler() {} |
| 233 virtual ~RangeIdHandler() {} |
| 234 |
| 235 virtual void MakeIdRange(GLES2Implementation* /*gl_impl*/, |
| 236 GLsizei n, |
| 237 GLuint* first_id) override { |
| 238 base::AutoLock auto_lock(lock_); |
| 239 *first_id = id_allocator_.AllocateIDRange(n); |
| 240 } |
| 241 |
| 242 virtual void FreeIdRange(GLES2Implementation* gl_impl, |
| 243 const GLuint first_id, |
| 244 GLsizei range, |
| 245 DeleteRangeFn delete_fn) override { |
| 246 DCHECK(range > 0); |
| 247 id_allocator_.FreeIDRange(first_id, range); |
| 248 (gl_impl->*delete_fn)(first_id, range); |
| 249 gl_impl->helper()->CommandBufferHelper::Flush(); |
| 250 } |
| 251 |
| 252 virtual void FreeContext(GLES2Implementation* gl_impl) override {} |
| 253 |
| 254 private: |
| 255 base::Lock lock_; |
| 256 IdAllocator id_allocator_; |
| 257 }; |
| 258 |
| 230 ShareGroup::ShareGroup(bool bind_generates_resource) | 259 ShareGroup::ShareGroup(bool bind_generates_resource) |
| 231 : bind_generates_resource_(bind_generates_resource) { | 260 : bind_generates_resource_(bind_generates_resource) { |
| 232 if (bind_generates_resource) { | 261 if (bind_generates_resource) { |
| 233 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) { | 262 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) { |
| 234 if (i == id_namespaces::kProgramsAndShaders) { | 263 if (i == id_namespaces::kProgramsAndShaders) { |
| 235 id_handlers_[i].reset(new NonReusedIdHandler()); | 264 id_handlers_[i].reset(new NonReusedIdHandler()); |
| 236 } else { | 265 } else { |
| 237 id_handlers_[i].reset(new IdHandler()); | 266 id_handlers_[i].reset(new IdHandler()); |
| 238 } | 267 } |
| 239 } | 268 } |
| 240 } else { | 269 } else { |
| 241 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) { | 270 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) { |
| 242 if (i == id_namespaces::kProgramsAndShaders) { | 271 if (i == id_namespaces::kProgramsAndShaders) { |
| 243 id_handlers_[i].reset(new NonReusedIdHandler()); | 272 id_handlers_[i].reset(new NonReusedIdHandler()); |
| 244 } else { | 273 } else { |
| 245 id_handlers_[i].reset(new StrictIdHandler(i)); | 274 id_handlers_[i].reset(new StrictIdHandler(i)); |
| 246 } | 275 } |
| 247 } | 276 } |
| 248 } | 277 } |
| 278 for (auto& range_id_handler : range_id_handlers_) { |
| 279 range_id_handler.reset(new RangeIdHandler()); |
| 280 } |
| 249 program_info_manager_.reset(ProgramInfoManager::Create(false)); | 281 program_info_manager_.reset(ProgramInfoManager::Create(false)); |
| 250 } | 282 } |
| 251 | 283 |
| 252 void ShareGroup::set_program_info_manager(ProgramInfoManager* manager) { | 284 void ShareGroup::set_program_info_manager(ProgramInfoManager* manager) { |
| 253 program_info_manager_.reset(manager); | 285 program_info_manager_.reset(manager); |
| 254 } | 286 } |
| 255 | 287 |
| 256 ShareGroup::~ShareGroup() {} | 288 ShareGroup::~ShareGroup() {} |
| 257 | 289 |
| 258 } // namespace gles2 | 290 } // namespace gles2 |
| 259 } // namespace gpu | 291 } // namespace gpu |
| OLD | NEW |