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

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

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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 <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 14 matching lines...) Expand all
25 #include "ui/gl/gl_implementation.h" 25 #include "ui/gl/gl_implementation.h"
26 26
27 namespace gpu { 27 namespace gpu {
28 namespace gles2 { 28 namespace gles2 {
29 29
30 ContextGroup::ContextGroup( 30 ContextGroup::ContextGroup(
31 const scoped_refptr<MailboxManager>& mailbox_manager, 31 const scoped_refptr<MailboxManager>& mailbox_manager,
32 const scoped_refptr<MemoryTracker>& memory_tracker, 32 const scoped_refptr<MemoryTracker>& memory_tracker,
33 const scoped_refptr<ShaderTranslatorCache>& shader_translator_cache, 33 const scoped_refptr<ShaderTranslatorCache>& shader_translator_cache,
34 const scoped_refptr<FeatureInfo>& feature_info, 34 const scoped_refptr<FeatureInfo>& feature_info,
35 const scoped_refptr<ValueStateMap>& pending_valuebuffer_state,
35 bool bind_generates_resource) 36 bool bind_generates_resource)
36 : mailbox_manager_(mailbox_manager), 37 : mailbox_manager_(mailbox_manager),
37 memory_tracker_(memory_tracker), 38 memory_tracker_(memory_tracker),
38 shader_translator_cache_(shader_translator_cache), 39 shader_translator_cache_(shader_translator_cache),
40 pending_valuebuffer_state_(pending_valuebuffer_state),
39 enforce_gl_minimums_(CommandLine::ForCurrentProcess()->HasSwitch( 41 enforce_gl_minimums_(CommandLine::ForCurrentProcess()->HasSwitch(
40 switches::kEnforceGLMinimums)), 42 switches::kEnforceGLMinimums)),
41 bind_generates_resource_(bind_generates_resource), 43 bind_generates_resource_(bind_generates_resource),
42 max_vertex_attribs_(0u), 44 max_vertex_attribs_(0u),
43 max_texture_units_(0u), 45 max_texture_units_(0u),
44 max_texture_image_units_(0u), 46 max_texture_image_units_(0u),
45 max_vertex_texture_image_units_(0u), 47 max_vertex_texture_image_units_(0u),
46 max_fragment_uniform_vectors_(0u), 48 max_fragment_uniform_vectors_(0u),
47 max_varying_vectors_(0u), 49 max_varying_vectors_(0u),
48 max_vertex_uniform_vectors_(0u), 50 max_vertex_uniform_vectors_(0u),
49 max_color_attachments_(1u), 51 max_color_attachments_(1u),
50 max_draw_buffers_(1u), 52 max_draw_buffers_(1u),
51 program_cache_(NULL), 53 program_cache_(NULL),
52 feature_info_(feature_info), 54 feature_info_(feature_info),
53 draw_buffer_(GL_BACK) { 55 draw_buffer_(GL_BACK) {
54 { 56 {
55 if (!mailbox_manager_.get()) 57 if (!mailbox_manager_.get())
56 mailbox_manager_ = new MailboxManagerImpl; 58 mailbox_manager_ = new MailboxManagerImpl;
59 if (!pending_valuebuffer_state_.get())
60 pending_valuebuffer_state_ = new ValueStateMap();
57 if (!feature_info.get()) 61 if (!feature_info.get())
58 feature_info_ = new FeatureInfo; 62 feature_info_ = new FeatureInfo;
59 TransferBufferManager* manager = new TransferBufferManager(); 63 TransferBufferManager* manager = new TransferBufferManager();
60 transfer_buffer_manager_.reset(manager); 64 transfer_buffer_manager_.reset(manager);
61 manager->Initialize(); 65 manager->Initialize();
62 } 66 }
63 } 67 }
64 68
65 static void GetIntegerv(GLenum pname, uint32* var) { 69 static void GetIntegerv(GLenum pname, uint32* var) {
66 GLint value = 0; 70 GLint value = 0;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 119
116 const bool depth24_supported = feature_info_->feature_flags().oes_depth24; 120 const bool depth24_supported = feature_info_->feature_flags().oes_depth24;
117 121
118 buffer_manager_.reset( 122 buffer_manager_.reset(
119 new BufferManager(memory_tracker_.get(), feature_info_.get())); 123 new BufferManager(memory_tracker_.get(), feature_info_.get()));
120 framebuffer_manager_.reset( 124 framebuffer_manager_.reset(
121 new FramebufferManager(max_draw_buffers_, max_color_attachments_)); 125 new FramebufferManager(max_draw_buffers_, max_color_attachments_));
122 renderbuffer_manager_.reset(new RenderbufferManager( 126 renderbuffer_manager_.reset(new RenderbufferManager(
123 memory_tracker_.get(), max_renderbuffer_size, max_samples, 127 memory_tracker_.get(), max_renderbuffer_size, max_samples,
124 depth24_supported)); 128 depth24_supported));
125 valuebuffer_manager_.reset(new ValuebufferManager());
126 shader_manager_.reset(new ShaderManager()); 129 shader_manager_.reset(new ShaderManager());
130 valuebuffer_manager_.reset(
131 new ValuebufferManager(pending_valuebuffer_state_.get()));
127 132
128 // Lookup GL things we need to know. 133 // Lookup GL things we need to know.
129 const GLint kGLES2RequiredMinimumVertexAttribs = 8u; 134 const GLint kGLES2RequiredMinimumVertexAttribs = 8u;
130 if (!QueryGLFeatureU( 135 if (!QueryGLFeatureU(
131 GL_MAX_VERTEX_ATTRIBS, kGLES2RequiredMinimumVertexAttribs, 136 GL_MAX_VERTEX_ATTRIBS, kGLES2RequiredMinimumVertexAttribs,
132 &max_vertex_attribs_)) { 137 &max_vertex_attribs_)) {
133 LOG(ERROR) << "ContextGroup::Initialize failed because too few " 138 LOG(ERROR) << "ContextGroup::Initialize failed because too few "
134 << "vertex attributes supported."; 139 << "vertex attributes supported.";
135 return false; 140 return false;
136 } 141 }
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 if (texture_manager_) 300 if (texture_manager_)
296 texture_manager_->set_framebuffer_manager(NULL); 301 texture_manager_->set_framebuffer_manager(NULL);
297 framebuffer_manager_.reset(); 302 framebuffer_manager_.reset();
298 } 303 }
299 304
300 if (renderbuffer_manager_ != NULL) { 305 if (renderbuffer_manager_ != NULL) {
301 renderbuffer_manager_->Destroy(have_context); 306 renderbuffer_manager_->Destroy(have_context);
302 renderbuffer_manager_.reset(); 307 renderbuffer_manager_.reset();
303 } 308 }
304 309
305 if (valuebuffer_manager_ != NULL) {
306 valuebuffer_manager_->Destroy();
307 valuebuffer_manager_.reset();
308 }
309
310 if (texture_manager_ != NULL) { 310 if (texture_manager_ != NULL) {
311 texture_manager_->Destroy(have_context); 311 texture_manager_->Destroy(have_context);
312 texture_manager_.reset(); 312 texture_manager_.reset();
313 } 313 }
314 314
315 if (program_manager_ != NULL) { 315 if (program_manager_ != NULL) {
316 program_manager_->Destroy(have_context); 316 program_manager_->Destroy(have_context);
317 program_manager_.reset(); 317 program_manager_.reset();
318 } 318 }
319 319
320 if (shader_manager_ != NULL) { 320 if (shader_manager_ != NULL) {
321 shader_manager_->Destroy(have_context); 321 shader_manager_->Destroy(have_context);
322 shader_manager_.reset(); 322 shader_manager_.reset();
323 } 323 }
324 324
325 if (valuebuffer_manager_ != NULL) {
326 valuebuffer_manager_->Destroy();
327 valuebuffer_manager_.reset();
328 }
329
325 memory_tracker_ = NULL; 330 memory_tracker_ = NULL;
326 } 331 }
327 332
328 uint32 ContextGroup::GetMemRepresented() const { 333 uint32 ContextGroup::GetMemRepresented() const {
329 uint32 total = 0; 334 uint32 total = 0;
330 if (buffer_manager_.get()) 335 if (buffer_manager_.get())
331 total += buffer_manager_->mem_represented(); 336 total += buffer_manager_->mem_represented();
332 if (renderbuffer_manager_.get()) 337 if (renderbuffer_manager_.get())
333 total += renderbuffer_manager_->mem_represented(); 338 total += renderbuffer_manager_->mem_represented();
334 if (texture_manager_.get()) 339 if (texture_manager_.get())
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 GLenum pname, GLint min_required, uint32* v) { 383 GLenum pname, GLint min_required, uint32* v) {
379 uint32 value = 0; 384 uint32 value = 0;
380 GetIntegerv(pname, &value); 385 GetIntegerv(pname, &value);
381 bool result = CheckGLFeatureU(min_required, &value); 386 bool result = CheckGLFeatureU(min_required, &value);
382 *v = value; 387 *v = value;
383 return result; 388 return result;
384 } 389 }
385 390
386 } // namespace gles2 391 } // namespace gles2
387 } // namespace gpu 392 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/context_group.h ('k') | gpu/command_buffer/service/context_group_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698