| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/public/browser/gpu_utils.h" | 5 #include "content/public/browser/gpu_utils.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/single_thread_task_runner.h" |
| 8 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "content/browser/gpu/gpu_process_host.h" |
| 9 #include "content/public/common/content_features.h" | 11 #include "content/public/common/content_features.h" |
| 10 #include "content/public/common/content_switches.h" | 12 #include "content/public/common/content_switches.h" |
| 11 #include "gpu/command_buffer/service/gpu_switches.h" | 13 #include "gpu/command_buffer/service/gpu_switches.h" |
| 12 #include "gpu/config/gpu_switches.h" | 14 #include "gpu/config/gpu_switches.h" |
| 13 #include "media/media_features.h" | 15 #include "media/media_features.h" |
| 14 #include "ui/gl/gl_switches.h" | 16 #include "ui/gl/gl_switches.h" |
| 15 | 17 |
| 16 namespace { | 18 namespace { |
| 17 | 19 |
| 18 bool GetUintFromSwitch(const base::CommandLine* command_line, | 20 bool GetUintFromSwitch(const base::CommandLine* command_line, |
| 19 const base::StringPiece& switch_string, | 21 const base::StringPiece& switch_string, |
| 20 uint32_t* value) { | 22 uint32_t* value) { |
| 21 if (!command_line->HasSwitch(switch_string)) | 23 if (!command_line->HasSwitch(switch_string)) |
| 22 return false; | 24 return false; |
| 23 std::string switch_value(command_line->GetSwitchValueASCII(switch_string)); | 25 std::string switch_value(command_line->GetSwitchValueASCII(switch_string)); |
| 24 return base::StringToUint(switch_value, value); | 26 return base::StringToUint(switch_value, value); |
| 25 } | 27 } |
| 26 | 28 |
| 29 void RunTaskOnTaskRunner( |
| 30 scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
| 31 const base::Closure& callback) { |
| 32 task_runner->PostTask(FROM_HERE, callback); |
| 33 } |
| 34 |
| 35 void StopGpuProcessImpl(const base::Closure& callback, |
| 36 content::GpuProcessHost* host) { |
| 37 if (host) |
| 38 host->gpu_service()->Stop(callback); |
| 39 else |
| 40 callback.Run(); |
| 41 } |
| 42 |
| 27 } // namespace | 43 } // namespace |
| 28 | 44 |
| 29 namespace content { | 45 namespace content { |
| 30 | 46 |
| 31 const gpu::GpuPreferences GetGpuPreferencesFromCommandLine() { | 47 const gpu::GpuPreferences GetGpuPreferencesFromCommandLine() { |
| 32 DCHECK(base::CommandLine::InitializedForCurrentProcess()); | 48 DCHECK(base::CommandLine::InitializedForCurrentProcess()); |
| 33 const base::CommandLine* command_line = | 49 const base::CommandLine* command_line = |
| 34 base::CommandLine::ForCurrentProcess(); | 50 base::CommandLine::ForCurrentProcess(); |
| 35 gpu::GpuPreferences gpu_preferences; | 51 gpu::GpuPreferences gpu_preferences; |
| 36 gpu_preferences.single_process = | 52 gpu_preferences.single_process = |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 command_line->HasSwitch(switches::kEnableGPUServiceLogging); | 125 command_line->HasSwitch(switches::kEnableGPUServiceLogging); |
| 110 gpu_preferences.enable_gpu_service_tracing = | 126 gpu_preferences.enable_gpu_service_tracing = |
| 111 command_line->HasSwitch(switches::kEnableGPUServiceTracing); | 127 command_line->HasSwitch(switches::kEnableGPUServiceTracing); |
| 112 gpu_preferences.use_passthrough_cmd_decoder = | 128 gpu_preferences.use_passthrough_cmd_decoder = |
| 113 command_line->HasSwitch(switches::kUsePassthroughCmdDecoder); | 129 command_line->HasSwitch(switches::kUsePassthroughCmdDecoder); |
| 114 // Some of these preferences are set or adjusted in | 130 // Some of these preferences are set or adjusted in |
| 115 // GpuDataManagerImplPrivate::AppendGpuCommandLine. | 131 // GpuDataManagerImplPrivate::AppendGpuCommandLine. |
| 116 return gpu_preferences; | 132 return gpu_preferences; |
| 117 } | 133 } |
| 118 | 134 |
| 135 void StopGpuProcess(const base::Closure& callback) { |
| 136 content::GpuProcessHost::CallOnIO( |
| 137 content::GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, |
| 138 false /* force_create */, |
| 139 base::Bind(&StopGpuProcessImpl, |
| 140 base::Bind(RunTaskOnTaskRunner, |
| 141 base::ThreadTaskRunnerHandle::Get(), callback))); |
| 142 } |
| 143 |
| 119 } // namespace content | 144 } // namespace content |
| OLD | NEW |