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

Side by Side Diff: content/gpu/gpu_main.cc

Issue 567133002: Allow maximum timer coalescing of the GPU watchdog thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stdlib.h> 5 #include <stdlib.h>
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <dwmapi.h> 8 #include <dwmapi.h>
9 #include <windows.h> 9 #include <windows.h>
10 #endif 10 #endif
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 // startup. 199 // startup.
200 delayed_watchdog_enable = true; 200 delayed_watchdog_enable = true;
201 #endif 201 #endif
202 202
203 scoped_refptr<GpuWatchdogThread> watchdog_thread; 203 scoped_refptr<GpuWatchdogThread> watchdog_thread;
204 204
205 // Start the GPU watchdog only after anything that is expected to be time 205 // Start the GPU watchdog only after anything that is expected to be time
206 // consuming has completed, otherwise the process is liable to be aborted. 206 // consuming has completed, otherwise the process is liable to be aborted.
207 if (enable_watchdog && !delayed_watchdog_enable) { 207 if (enable_watchdog && !delayed_watchdog_enable) {
208 watchdog_thread = new GpuWatchdogThread(kGpuTimeout); 208 watchdog_thread = new GpuWatchdogThread(kGpuTimeout);
209 watchdog_thread->Start(); 209 base::Thread::Options options;
210 options.timer_slack = base::TIMER_SLACK_MAXIMUM;
211 watchdog_thread->StartWithOptions(options);
210 } 212 }
211 213
212 gpu::GPUInfo gpu_info; 214 gpu::GPUInfo gpu_info;
213 // Get vendor_id, device_id, driver_version from browser process through 215 // Get vendor_id, device_id, driver_version from browser process through
214 // commandline switches. 216 // commandline switches.
215 GetGpuInfoFromCommandLine(gpu_info, command_line); 217 GetGpuInfoFromCommandLine(gpu_info, command_line);
216 218
217 base::TimeDelta collect_context_time; 219 base::TimeDelta collect_context_time;
218 base::TimeDelta initialize_one_off_time; 220 base::TimeDelta initialize_one_off_time;
219 221
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 } else { // gl_initialized 295 } else { // gl_initialized
294 VLOG(1) << "gfx::GLSurface::InitializeOneOff failed"; 296 VLOG(1) << "gfx::GLSurface::InitializeOneOff failed";
295 dead_on_arrival = true; 297 dead_on_arrival = true;
296 } 298 }
297 299
298 initialize_one_off_time = 300 initialize_one_off_time =
299 base::TimeTicks::Now() - before_initialize_one_off; 301 base::TimeTicks::Now() - before_initialize_one_off;
300 302
301 if (enable_watchdog && delayed_watchdog_enable) { 303 if (enable_watchdog && delayed_watchdog_enable) {
302 watchdog_thread = new GpuWatchdogThread(kGpuTimeout); 304 watchdog_thread = new GpuWatchdogThread(kGpuTimeout);
303 watchdog_thread->Start(); 305 base::Thread::Options options;
306 options.timer_slack = base::TIMER_SLACK_MAXIMUM;
307 watchdog_thread->StartWithOptions(options);
304 } 308 }
305 309
306 // OSMesa is expected to run very slowly, so disable the watchdog in that 310 // OSMesa is expected to run very slowly, so disable the watchdog in that
307 // case. 311 // case.
308 if (enable_watchdog && 312 if (enable_watchdog &&
309 gfx::GetGLImplementation() == gfx::kGLImplementationOSMesaGL) { 313 gfx::GetGLImplementation() == gfx::kGLImplementationOSMesaGL) {
310 watchdog_thread->Stop(); 314 watchdog_thread->Stop();
311 watchdog_thread = NULL; 315 watchdog_thread = NULL;
312 } 316 }
313 317
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 linux_sandbox->sanitizer_args()->coverage_sandboxed = 1; 492 linux_sandbox->sanitizer_args()->coverage_sandboxed = 1;
489 linux_sandbox->sanitizer_args()->coverage_fd = 493 linux_sandbox->sanitizer_args()->coverage_fd =
490 __sanitizer_maybe_open_cov_file(sancov_file_name.c_str()); 494 __sanitizer_maybe_open_cov_file(sancov_file_name.c_str());
491 linux_sandbox->sanitizer_args()->coverage_max_block_size = 0; 495 linux_sandbox->sanitizer_args()->coverage_max_block_size = 0;
492 #endif 496 #endif
493 497
494 // LinuxSandbox::InitializeSandbox() must always be called 498 // LinuxSandbox::InitializeSandbox() must always be called
495 // with only one thread. 499 // with only one thread.
496 res = LinuxSandbox::InitializeSandbox(); 500 res = LinuxSandbox::InitializeSandbox();
497 if (watchdog_thread) { 501 if (watchdog_thread) {
498 watchdog_thread->Start(); 502 base::Thread::Options options;
503 options.timer_slack = base::TIMER_SLACK_MAXIMUM;
504 watchdog_thread->StartWithOptions(options);
499 } 505 }
500 506
501 return res; 507 return res;
502 } 508 }
503 #endif // defined(OS_LINUX) 509 #endif // defined(OS_LINUX)
504 510
505 #if defined(OS_WIN) 511 #if defined(OS_WIN)
506 bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) { 512 bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) {
507 TRACE_EVENT0("gpu", "Lower token"); 513 TRACE_EVENT0("gpu", "Lower token");
508 514
509 // For Windows, if the target_services interface is not zero, the process 515 // For Windows, if the target_services interface is not zero, the process
510 // is sandboxed and we must call LowerToken() before rendering untrusted 516 // is sandboxed and we must call LowerToken() before rendering untrusted
511 // content. 517 // content.
512 sandbox::TargetServices* target_services = sandbox_info->target_services; 518 sandbox::TargetServices* target_services = sandbox_info->target_services;
513 if (target_services) { 519 if (target_services) {
514 target_services->LowerToken(); 520 target_services->LowerToken();
515 return true; 521 return true;
516 } 522 }
517 523
518 return false; 524 return false;
519 } 525 }
520 #endif // defined(OS_WIN) 526 #endif // defined(OS_WIN)
521 527
522 } // namespace. 528 } // namespace.
523 529
524 } // namespace content 530 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698