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

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

Issue 1716813002: Use GpuPreferences to avoid directly accessing switches in gpu related code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update Created 4 years, 9 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/in_process_command_buffer.h" 5 #include "gpu/command_buffer/service/in_process_command_buffer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <queue> 10 #include <queue>
(...skipping 10 matching lines...) Expand all
21 #include "base/numerics/safe_conversions.h" 21 #include "base/numerics/safe_conversions.h"
22 #include "base/sequence_checker.h" 22 #include "base/sequence_checker.h"
23 #include "base/single_thread_task_runner.h" 23 #include "base/single_thread_task_runner.h"
24 #include "base/thread_task_runner_handle.h" 24 #include "base/thread_task_runner_handle.h"
25 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" 25 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
26 #include "gpu/command_buffer/common/sync_token.h" 26 #include "gpu/command_buffer/common/sync_token.h"
27 #include "gpu/command_buffer/common/value_state.h" 27 #include "gpu/command_buffer/common/value_state.h"
28 #include "gpu/command_buffer/service/command_buffer_service.h" 28 #include "gpu/command_buffer/service/command_buffer_service.h"
29 #include "gpu/command_buffer/service/context_group.h" 29 #include "gpu/command_buffer/service/context_group.h"
30 #include "gpu/command_buffer/service/gl_context_virtual.h" 30 #include "gpu/command_buffer/service/gl_context_virtual.h"
31 #include "gpu/command_buffer/service/gpu_preferences.h"
31 #include "gpu/command_buffer/service/gpu_scheduler.h" 32 #include "gpu/command_buffer/service/gpu_scheduler.h"
32 #include "gpu/command_buffer/service/gpu_switches.h"
33 #include "gpu/command_buffer/service/image_factory.h" 33 #include "gpu/command_buffer/service/image_factory.h"
34 #include "gpu/command_buffer/service/image_manager.h" 34 #include "gpu/command_buffer/service/image_manager.h"
35 #include "gpu/command_buffer/service/mailbox_manager.h" 35 #include "gpu/command_buffer/service/mailbox_manager.h"
36 #include "gpu/command_buffer/service/memory_program_cache.h" 36 #include "gpu/command_buffer/service/memory_program_cache.h"
37 #include "gpu/command_buffer/service/memory_tracking.h" 37 #include "gpu/command_buffer/service/memory_tracking.h"
38 #include "gpu/command_buffer/service/query_manager.h" 38 #include "gpu/command_buffer/service/query_manager.h"
39 #include "gpu/command_buffer/service/sync_point_manager.h" 39 #include "gpu/command_buffer/service/sync_point_manager.h"
40 #include "gpu/command_buffer/service/transfer_buffer_manager.h" 40 #include "gpu/command_buffer/service/transfer_buffer_manager.h"
41 #include "gpu/command_buffer/service/valuebuffer_manager.h" 41 #include "gpu/command_buffer/service/valuebuffer_manager.h"
42 #include "ui/gfx/geometry/size.h" 42 #include "ui/gfx/geometry/size.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 // ThreadTaskRunnerHandle, which will re-add a new task to the, AtExitManager, 145 // ThreadTaskRunnerHandle, which will re-add a new task to the, AtExitManager,
146 // which causes a deadlock because it's already locked. 146 // which causes a deadlock because it's already locked.
147 base::ThreadTaskRunnerHandle::IsSet(); 147 base::ThreadTaskRunnerHandle::IsSet();
148 return g_default_service.Get().gpu_thread; 148 return g_default_service.Get().gpu_thread;
149 } 149 }
150 150
151 } // anonyous namespace 151 } // anonyous namespace
152 152
153 InProcessCommandBuffer::Service::Service() {} 153 InProcessCommandBuffer::Service::Service() {}
154 154
155 InProcessCommandBuffer::Service::Service(const GpuPreferences& gpu_preferences)
156 : gpu_preferences_(gpu_preferences) {}
157
155 InProcessCommandBuffer::Service::~Service() {} 158 InProcessCommandBuffer::Service::~Service() {}
156 159
160 const gpu::GpuPreferences&
161 InProcessCommandBuffer::Service::gpu_preferences() {
162 return gpu_preferences_;
163 }
164
157 scoped_refptr<gfx::GLShareGroup> 165 scoped_refptr<gfx::GLShareGroup>
158 InProcessCommandBuffer::Service::share_group() { 166 InProcessCommandBuffer::Service::share_group() {
159 if (!share_group_.get()) 167 if (!share_group_.get())
160 share_group_ = new gfx::GLShareGroup; 168 share_group_ = new gfx::GLShareGroup;
161 return share_group_; 169 return share_group_;
162 } 170 }
163 171
164 scoped_refptr<gles2::MailboxManager> 172 scoped_refptr<gles2::MailboxManager>
165 InProcessCommandBuffer::Service::mailbox_manager() { 173 InProcessCommandBuffer::Service::mailbox_manager() {
166 if (!mailbox_manager_.get()) { 174 if (!mailbox_manager_.get()) {
167 mailbox_manager_ = gles2::MailboxManager::Create(); 175 mailbox_manager_ = gles2::MailboxManager::Create(gpu_preferences());
168 } 176 }
169 return mailbox_manager_; 177 return mailbox_manager_;
170 } 178 }
171 179
172 scoped_refptr<gles2::SubscriptionRefSet> 180 scoped_refptr<gles2::SubscriptionRefSet>
173 InProcessCommandBuffer::Service::subscription_ref_set() { 181 InProcessCommandBuffer::Service::subscription_ref_set() {
174 if (!subscription_ref_set_.get()) { 182 if (!subscription_ref_set_.get()) {
175 subscription_ref_set_ = new gles2::SubscriptionRefSet(); 183 subscription_ref_set_ = new gles2::SubscriptionRefSet();
176 } 184 }
177 return subscription_ref_set_; 185 return subscription_ref_set_;
178 } 186 }
179 187
180 scoped_refptr<ValueStateMap> 188 scoped_refptr<ValueStateMap>
181 InProcessCommandBuffer::Service::pending_valuebuffer_state() { 189 InProcessCommandBuffer::Service::pending_valuebuffer_state() {
182 if (!pending_valuebuffer_state_.get()) { 190 if (!pending_valuebuffer_state_.get()) {
183 pending_valuebuffer_state_ = new ValueStateMap(); 191 pending_valuebuffer_state_ = new ValueStateMap();
184 } 192 }
185 return pending_valuebuffer_state_; 193 return pending_valuebuffer_state_;
186 } 194 }
187 195
188 gpu::gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() { 196 gpu::gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() {
189 if (!program_cache_.get() && 197 if (!program_cache_.get() &&
190 (gfx::g_driver_gl.ext.b_GL_ARB_get_program_binary || 198 (gfx::g_driver_gl.ext.b_GL_ARB_get_program_binary ||
191 gfx::g_driver_gl.ext.b_GL_OES_get_program_binary) && 199 gfx::g_driver_gl.ext.b_GL_OES_get_program_binary) &&
192 !base::CommandLine::ForCurrentProcess()->HasSwitch( 200 !gpu_preferences().disable_gpu_program_cache) {
193 switches::kDisableGpuProgramCache)) { 201 program_cache_.reset(new gpu::gles2::MemoryProgramCache(
194 program_cache_.reset(new gpu::gles2::MemoryProgramCache()); 202 gpu_preferences().gpu_program_cache_size,
203 gpu_preferences().disable_gpu_shader_disk_cache));
195 } 204 }
196 return program_cache_.get(); 205 return program_cache_.get();
197 } 206 }
198 207
199 InProcessCommandBuffer::InProcessCommandBuffer( 208 InProcessCommandBuffer::InProcessCommandBuffer(
200 const scoped_refptr<Service>& service) 209 const scoped_refptr<Service>& service)
201 : command_buffer_id_( 210 : command_buffer_id_(
202 CommandBufferId::FromUnsafeValue(g_next_command_buffer_id.GetNext())), 211 CommandBufferId::FromUnsafeValue(g_next_command_buffer_id.GetNext())),
203 context_lost_(false), 212 context_lost_(false),
204 delayed_work_pending_(false), 213 delayed_work_pending_(false),
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 : service_->share_group(); 338 : service_->share_group();
330 339
331 #if defined(OS_ANDROID) 340 #if defined(OS_ANDROID)
332 stream_texture_manager_.reset(new StreamTextureManagerInProcess); 341 stream_texture_manager_.reset(new StreamTextureManagerInProcess);
333 #endif 342 #endif
334 343
335 bool bind_generates_resource = false; 344 bool bind_generates_resource = false;
336 decoder_.reset(gles2::GLES2Decoder::Create( 345 decoder_.reset(gles2::GLES2Decoder::Create(
337 params.context_group 346 params.context_group
338 ? params.context_group->decoder_->GetContextGroup() 347 ? params.context_group->decoder_->GetContextGroup()
339 : new gles2::ContextGroup(service_->mailbox_manager(), NULL, 348 : new gles2::ContextGroup(service_->gpu_preferences(),
349 service_->mailbox_manager(), NULL,
340 service_->shader_translator_cache(), 350 service_->shader_translator_cache(),
341 service_->framebuffer_completeness_cache(), 351 service_->framebuffer_completeness_cache(),
342 NULL, service_->subscription_ref_set(), 352 NULL, service_->subscription_ref_set(),
343 service_->pending_valuebuffer_state(), 353 service_->pending_valuebuffer_state(),
344 bind_generates_resource))); 354 bind_generates_resource)));
345 355
346 gpu_scheduler_.reset( 356 gpu_scheduler_.reset(
347 new GpuScheduler(command_buffer.get(), decoder_.get(), decoder_.get())); 357 new GpuScheduler(command_buffer.get(), decoder_.get(), decoder_.get()));
348 command_buffer->SetGetBufferChangeCallback(base::Bind( 358 command_buffer->SetGetBufferChangeCallback(base::Bind(
349 &GpuScheduler::SetGetBuffer, base::Unretained(gpu_scheduler_.get()))); 359 &GpuScheduler::SetGetBuffer, base::Unretained(gpu_scheduler_.get())));
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 task_runner()->PostDelayedTask(FROM_HERE, callback, 1073 task_runner()->PostDelayedTask(FROM_HERE, callback,
1064 base::TimeDelta::FromMilliseconds(2)); 1074 base::TimeDelta::FromMilliseconds(2));
1065 } 1075 }
1066 1076
1067 bool GpuInProcessThread::UseVirtualizedGLContexts() { 1077 bool GpuInProcessThread::UseVirtualizedGLContexts() {
1068 return false; 1078 return false;
1069 } 1079 }
1070 1080
1071 scoped_refptr<gles2::ShaderTranslatorCache> 1081 scoped_refptr<gles2::ShaderTranslatorCache>
1072 GpuInProcessThread::shader_translator_cache() { 1082 GpuInProcessThread::shader_translator_cache() {
1073 if (!shader_translator_cache_.get()) 1083 if (!shader_translator_cache_.get()) {
1074 shader_translator_cache_ = new gpu::gles2::ShaderTranslatorCache; 1084 shader_translator_cache_ =
1085 new gpu::gles2::ShaderTranslatorCache(gpu_preferences());
1086 }
1075 return shader_translator_cache_; 1087 return shader_translator_cache_;
1076 } 1088 }
1077 1089
1078 scoped_refptr<gles2::FramebufferCompletenessCache> 1090 scoped_refptr<gles2::FramebufferCompletenessCache>
1079 GpuInProcessThread::framebuffer_completeness_cache() { 1091 GpuInProcessThread::framebuffer_completeness_cache() {
1080 if (!framebuffer_completeness_cache_.get()) 1092 if (!framebuffer_completeness_cache_.get())
1081 framebuffer_completeness_cache_ = 1093 framebuffer_completeness_cache_ =
1082 new gpu::gles2::FramebufferCompletenessCache; 1094 new gpu::gles2::FramebufferCompletenessCache;
1083 return framebuffer_completeness_cache_; 1095 return framebuffer_completeness_cache_;
1084 } 1096 }
1085 1097
1086 SyncPointManager* GpuInProcessThread::sync_point_manager() { 1098 SyncPointManager* GpuInProcessThread::sync_point_manager() {
1087 return sync_point_manager_; 1099 return sync_point_manager_;
1088 } 1100 }
1089 1101
1090 } // namespace gpu 1102 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/in_process_command_buffer.h ('k') | gpu/command_buffer/service/mailbox_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698