Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(309)

Side by Side Diff: gpu/command_buffer/client/share_group.cc

Issue 169403005: command_buffer: Implement path rendering functions for CHROMIUM_path_rendering (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nv-pr-02-texgen
Patch Set: rebase Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 return false; 310 return false;
311 } 311 }
312 312
313 void FreeContext(GLES2Implementation* gl_impl) override {} 313 void FreeContext(GLES2Implementation* gl_impl) override {}
314 314
315 private: 315 private:
316 base::Lock lock_; 316 base::Lock lock_;
317 GLuint last_id_; 317 GLuint last_id_;
318 }; 318 };
319 319
320 class RangeIdHandler : public RangeIdHandlerInterface {
321 public:
322 RangeIdHandler() {}
323
324 void MakeIdRange(GLES2Implementation* /*gl_impl*/,
325 GLsizei n,
326 GLuint* first_id) override {
327 base::AutoLock auto_lock(lock_);
328 *first_id = id_allocator_.AllocateIDRange(n);
329 }
330
331 void FreeIdRange(GLES2Implementation* gl_impl,
332 const GLuint first_id,
333 GLsizei range,
334 DeleteRangeFn delete_fn) override {
335 DCHECK(range > 0);
336 id_allocator_.FreeIDRange(first_id, range);
vmiura 2015/06/19 21:55:22 Does this require holding lock_?
Kimmo Kinnunen 2015/06/23 12:03:10 Done.
337 (gl_impl->*delete_fn)(first_id, range);
338 gl_impl->helper()->CommandBufferHelper::Flush();
339 }
340
341 void FreeContext(GLES2Implementation* gl_impl) override {}
342
343 private:
344 base::Lock lock_;
345 IdAllocator id_allocator_;
346 };
347
320 ShareGroup::ShareGroup(bool bind_generates_resource) 348 ShareGroup::ShareGroup(bool bind_generates_resource)
321 : bind_generates_resource_(bind_generates_resource) { 349 : bind_generates_resource_(bind_generates_resource) {
322 if (bind_generates_resource) { 350 if (bind_generates_resource) {
323 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) { 351 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) {
324 if (i == id_namespaces::kProgramsAndShaders) { 352 if (i == id_namespaces::kProgramsAndShaders) {
325 id_handlers_[i].reset(new NonReusedIdHandler()); 353 id_handlers_[i].reset(new NonReusedIdHandler());
326 } else { 354 } else {
327 id_handlers_[i].reset(new IdHandler()); 355 id_handlers_[i].reset(new IdHandler());
328 } 356 }
329 } 357 }
330 } else { 358 } else {
331 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) { 359 for (int i = 0; i < id_namespaces::kNumIdNamespaces; ++i) {
332 if (i == id_namespaces::kProgramsAndShaders) { 360 if (i == id_namespaces::kProgramsAndShaders) {
333 id_handlers_[i].reset(new NonReusedIdHandler()); 361 id_handlers_[i].reset(new NonReusedIdHandler());
334 } else { 362 } else {
335 id_handlers_[i].reset(new StrictIdHandler(i)); 363 id_handlers_[i].reset(new StrictIdHandler(i));
336 } 364 }
337 } 365 }
338 } 366 }
367
339 program_info_manager_.reset(new ProgramInfoManager); 368 program_info_manager_.reset(new ProgramInfoManager);
369 for (auto& range_id_handler : range_id_handlers_) {
370 range_id_handler.reset(new RangeIdHandler());
371 }
340 } 372 }
341 373
342 void ShareGroup::set_program_info_manager(ProgramInfoManager* manager) { 374 void ShareGroup::set_program_info_manager(ProgramInfoManager* manager) {
343 program_info_manager_.reset(manager); 375 program_info_manager_.reset(manager);
344 } 376 }
345 377
346 ShareGroup::~ShareGroup() {} 378 ShareGroup::~ShareGroup() {}
347 379
348 } // namespace gles2 380 } // namespace gles2
349 } // namespace gpu 381 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698