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

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 and cleanup ids Created 6 years, 2 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698