OLD | NEW |
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 "content/browser/gpu/gpu_data_manager_impl.h" | 5 #include "content/browser/gpu/gpu_data_manager_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 | 41 |
42 // static | 42 // static |
43 GpuDataManagerImpl* GpuDataManagerImpl::GetInstance() { | 43 GpuDataManagerImpl* GpuDataManagerImpl::GetInstance() { |
44 return Singleton<GpuDataManagerImpl>::get(); | 44 return Singleton<GpuDataManagerImpl>::get(); |
45 } | 45 } |
46 | 46 |
47 GpuDataManagerImpl::GpuDataManagerImpl() | 47 GpuDataManagerImpl::GpuDataManagerImpl() |
48 : complete_gpu_info_already_requested_(false), | 48 : complete_gpu_info_already_requested_(false), |
49 gpu_feature_type_(content::GPU_FEATURE_TYPE_UNKNOWN), | 49 gpu_feature_type_(content::GPU_FEATURE_TYPE_UNKNOWN), |
50 preliminary_gpu_feature_type_(content::GPU_FEATURE_TYPE_UNKNOWN), | 50 preliminary_gpu_feature_type_(content::GPU_FEATURE_TYPE_UNKNOWN), |
51 gpu_switching_(content::GPU_SWITCHING_AUTOMATIC), | 51 gpu_switching_(content::GPU_SWITCHING_OPTION_AUTOMATIC), |
52 observer_list_(new GpuDataManagerObserverList), | 52 observer_list_(new GpuDataManagerObserverList), |
53 software_rendering_(false), | 53 software_rendering_(false), |
54 card_blacklisted_(false), | 54 card_blacklisted_(false), |
55 update_histograms_(true) { | 55 update_histograms_(true) { |
56 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 56 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
57 if (command_line->HasSwitch(switches::kDisableAcceleratedCompositing)) { | 57 if (command_line->HasSwitch(switches::kDisableAcceleratedCompositing)) { |
58 command_line->AppendSwitch(switches::kDisableAccelerated2dCanvas); | 58 command_line->AppendSwitch(switches::kDisableAccelerated2dCanvas); |
59 command_line->AppendSwitch(switches::kDisableAcceleratedLayers); | 59 command_line->AppendSwitch(switches::kDisableAcceleratedLayers); |
60 } | 60 } |
61 if (command_line->HasSwitch(switches::kDisableGpu)) | 61 if (command_line->HasSwitch(switches::kDisableGpu)) |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 swiftshader_path = swiftshader_path_; | 292 swiftshader_path = swiftshader_path_; |
293 } else if ((flags & (content::GPU_FEATURE_TYPE_WEBGL | | 293 } else if ((flags & (content::GPU_FEATURE_TYPE_WEBGL | |
294 content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING | | 294 content::GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING | |
295 content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)) && | 295 content::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)) && |
296 (use_gl == "any")) { | 296 (use_gl == "any")) { |
297 command_line->AppendSwitchASCII( | 297 command_line->AppendSwitchASCII( |
298 switches::kUseGL, gfx::kGLImplementationOSMesaName); | 298 switches::kUseGL, gfx::kGLImplementationOSMesaName); |
299 } else if (!use_gl.empty()) { | 299 } else if (!use_gl.empty()) { |
300 command_line->AppendSwitchASCII(switches::kUseGL, use_gl); | 300 command_line->AppendSwitchASCII(switches::kUseGL, use_gl); |
301 } | 301 } |
| 302 switch (gpu_switching_) { |
| 303 case content::GPU_SWITCHING_OPTION_FORCE_DISCRETE: |
| 304 command_line->AppendSwitchASCII(switches::kGpuSwitching, |
| 305 kGpuSwitchingOptionNameForceDiscrete); |
| 306 break; |
| 307 case content::GPU_SWITCHING_OPTION_FORCE_INTEGRATED: |
| 308 command_line->AppendSwitchASCII(switches::kGpuSwitching, |
| 309 kGpuSwitchingOptionNameForceIntegrated); |
| 310 break; |
| 311 default: |
| 312 break; |
| 313 } |
302 | 314 |
303 if (!swiftshader_path.empty()) | 315 if (!swiftshader_path.empty()) |
304 command_line->AppendSwitchPath(switches::kSwiftShaderPath, | 316 command_line->AppendSwitchPath(switches::kSwiftShaderPath, |
305 swiftshader_path); | 317 swiftshader_path); |
306 | 318 |
307 { | 319 { |
308 base::AutoLock auto_lock(gpu_info_lock_); | 320 base::AutoLock auto_lock(gpu_info_lock_); |
309 if (gpu_info_.optimus) | 321 if (gpu_info_.optimus) |
310 command_line->AppendSwitch(switches::kReduceGpuSandbox); | 322 command_line->AppendSwitch(switches::kReduceGpuSandbox); |
311 if (gpu_info_.amd_switchable) { | 323 if (gpu_info_.amd_switchable) { |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 | 438 |
427 void GpuDataManagerImpl::BlacklistCard() { | 439 void GpuDataManagerImpl::BlacklistCard() { |
428 card_blacklisted_ = true; | 440 card_blacklisted_ = true; |
429 | 441 |
430 gpu_feature_type_ = content::GPU_FEATURE_TYPE_ALL; | 442 gpu_feature_type_ = content::GPU_FEATURE_TYPE_ALL; |
431 | 443 |
432 EnableSoftwareRenderingIfNecessary(); | 444 EnableSoftwareRenderingIfNecessary(); |
433 NotifyGpuInfoUpdate(); | 445 NotifyGpuInfoUpdate(); |
434 } | 446 } |
435 | 447 |
OLD | NEW |