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

Side by Side Diff: gpu/command_buffer/service/context_group.cc

Issue 1922633002: Implement TransformFeedbackManager in GPU command buffer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 "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>
11 #include <string> 11 #include <string>
12 12
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "gpu/command_buffer/service/buffer_manager.h" 14 #include "gpu/command_buffer/service/buffer_manager.h"
15 #include "gpu/command_buffer/service/framebuffer_manager.h" 15 #include "gpu/command_buffer/service/framebuffer_manager.h"
16 #include "gpu/command_buffer/service/gpu_preferences.h" 16 #include "gpu/command_buffer/service/gpu_preferences.h"
17 #include "gpu/command_buffer/service/mailbox_manager_impl.h" 17 #include "gpu/command_buffer/service/mailbox_manager_impl.h"
18 #include "gpu/command_buffer/service/path_manager.h" 18 #include "gpu/command_buffer/service/path_manager.h"
19 #include "gpu/command_buffer/service/program_manager.h" 19 #include "gpu/command_buffer/service/program_manager.h"
20 #include "gpu/command_buffer/service/renderbuffer_manager.h" 20 #include "gpu/command_buffer/service/renderbuffer_manager.h"
21 #include "gpu/command_buffer/service/sampler_manager.h" 21 #include "gpu/command_buffer/service/sampler_manager.h"
22 #include "gpu/command_buffer/service/shader_manager.h" 22 #include "gpu/command_buffer/service/shader_manager.h"
23 #include "gpu/command_buffer/service/texture_manager.h" 23 #include "gpu/command_buffer/service/texture_manager.h"
24 #include "gpu/command_buffer/service/transfer_buffer_manager.h" 24 #include "gpu/command_buffer/service/transfer_buffer_manager.h"
25 #include "gpu/command_buffer/service/transform_feedback_manager.h"
25 #include "ui/gl/gl_bindings.h" 26 #include "ui/gl/gl_bindings.h"
26 #include "ui/gl/gl_version_info.h" 27 #include "ui/gl/gl_version_info.h"
27 28
28 namespace gpu { 29 namespace gpu {
29 namespace gles2 { 30 namespace gles2 {
30 31
31 namespace { 32 namespace {
32 33
33 void GetIntegerv(GLenum pname, uint32_t* var) { 34 void GetIntegerv(GLenum pname, uint32_t* var) {
34 GLint value = 0; 35 GLint value = 0;
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 buffer_manager_.reset( 200 buffer_manager_.reset(
200 new BufferManager(memory_tracker_.get(), feature_info_.get())); 201 new BufferManager(memory_tracker_.get(), feature_info_.get()));
201 framebuffer_manager_.reset(new FramebufferManager( 202 framebuffer_manager_.reset(new FramebufferManager(
202 max_draw_buffers_, max_color_attachments_, feature_info_->context_type(), 203 max_draw_buffers_, max_color_attachments_, feature_info_->context_type(),
203 framebuffer_completeness_cache_)); 204 framebuffer_completeness_cache_));
204 renderbuffer_manager_.reset(new RenderbufferManager( 205 renderbuffer_manager_.reset(new RenderbufferManager(
205 memory_tracker_.get(), max_renderbuffer_size, max_samples, 206 memory_tracker_.get(), max_renderbuffer_size, max_samples,
206 feature_info_.get())); 207 feature_info_.get()));
207 shader_manager_.reset(new ShaderManager()); 208 shader_manager_.reset(new ShaderManager());
208 sampler_manager_.reset(new SamplerManager(feature_info_.get())); 209 sampler_manager_.reset(new SamplerManager(feature_info_.get()));
210 transform_feedback_manager_.reset(new TransformFeedbackManager(
211 max_transform_feedback_separate_attribs_));
209 212
210 // Lookup GL things we need to know. 213 // Lookup GL things we need to know.
211 const GLint kGLES2RequiredMinimumVertexAttribs = 8u; 214 const GLint kGLES2RequiredMinimumVertexAttribs = 8u;
212 if (!QueryGLFeatureU( 215 if (!QueryGLFeatureU(
213 GL_MAX_VERTEX_ATTRIBS, kGLES2RequiredMinimumVertexAttribs, 216 GL_MAX_VERTEX_ATTRIBS, kGLES2RequiredMinimumVertexAttribs,
214 &max_vertex_attribs_)) { 217 &max_vertex_attribs_)) {
215 LOG(ERROR) << "ContextGroup::Initialize failed because too few " 218 LOG(ERROR) << "ContextGroup::Initialize failed because too few "
216 << "vertex attributes supported (" << max_vertex_attribs_ 219 << "vertex attributes supported (" << max_vertex_attribs_
217 << ", should be " << kGLES2RequiredMinimumVertexAttribs << ")."; 220 << ", should be " << kGLES2RequiredMinimumVertexAttribs << ").";
218 return false; 221 return false;
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 if (shader_manager_ != NULL) { 508 if (shader_manager_ != NULL) {
506 shader_manager_->Destroy(have_context); 509 shader_manager_->Destroy(have_context);
507 shader_manager_.reset(); 510 shader_manager_.reset();
508 } 511 }
509 512
510 if (sampler_manager_ != NULL) { 513 if (sampler_manager_ != NULL) {
511 sampler_manager_->Destroy(have_context); 514 sampler_manager_->Destroy(have_context);
512 sampler_manager_.reset(); 515 sampler_manager_.reset();
513 } 516 }
514 517
518 if (transform_feedback_manager_ != NULL) {
519 transform_feedback_manager_->Destroy(have_context);
520 transform_feedback_manager_.reset();
521 }
522
515 memory_tracker_ = NULL; 523 memory_tracker_ = NULL;
516 } 524 }
517 525
518 uint32_t ContextGroup::GetMemRepresented() const { 526 uint32_t ContextGroup::GetMemRepresented() const {
519 uint32_t total = 0; 527 uint32_t total = 0;
520 if (buffer_manager_.get()) 528 if (buffer_manager_.get())
521 total += buffer_manager_->mem_represented(); 529 total += buffer_manager_->mem_represented();
522 if (renderbuffer_manager_.get()) 530 if (renderbuffer_manager_.get())
523 total += renderbuffer_manager_->mem_represented(); 531 total += renderbuffer_manager_->mem_represented();
524 if (texture_manager_.get()) 532 if (texture_manager_.get())
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 GLuint client_id, GLuint* service_id) const { 586 GLuint client_id, GLuint* service_id) const {
579 Buffer* buffer = buffer_manager_->GetBuffer(client_id); 587 Buffer* buffer = buffer_manager_->GetBuffer(client_id);
580 if (!buffer) 588 if (!buffer)
581 return false; 589 return false;
582 *service_id = buffer->service_id(); 590 *service_id = buffer->service_id();
583 return true; 591 return true;
584 } 592 }
585 593
586 } // namespace gles2 594 } // namespace gles2
587 } // namespace gpu 595 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698