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

Side by Side Diff: content/browser/gpu/gpu_process_host.cc

Issue 498833002: Move |kSwitchNames| to anonymous namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« 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 "content/browser/gpu/gpu_process_host.h" 5 #include "content/browser/gpu/gpu_process_host.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/base_switches.h" 8 #include "base/base_switches.h"
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 bool GpuProcessHost::gpu_enabled_ = true; 64 bool GpuProcessHost::gpu_enabled_ = true;
65 bool GpuProcessHost::hardware_gpu_enabled_ = true; 65 bool GpuProcessHost::hardware_gpu_enabled_ = true;
66 int GpuProcessHost::gpu_crash_count_ = 0; 66 int GpuProcessHost::gpu_crash_count_ = 0;
67 int GpuProcessHost::gpu_recent_crash_count_ = 0; 67 int GpuProcessHost::gpu_recent_crash_count_ = 0;
68 bool GpuProcessHost::crashed_before_ = false; 68 bool GpuProcessHost::crashed_before_ = false;
69 int GpuProcessHost::swiftshader_crash_count_ = 0; 69 int GpuProcessHost::swiftshader_crash_count_ = 0;
70 70
71 namespace { 71 namespace {
72 72
73 // Command-line switches to propagate to the GPU process.
74 static const char* const kSwitchNames[] = {
75 switches::kDisableAcceleratedVideoDecode,
76 switches::kDisableBreakpad,
77 switches::kDisableGpuSandbox,
78 switches::kDisableGpuWatchdog,
79 switches::kDisableLogging,
80 switches::kDisableSeccompFilterSandbox,
81 #if defined(ENABLE_WEBRTC)
82 switches::kDisableWebRtcHWEncoding,
83 #endif
84 switches::kEnableLogging,
85 switches::kEnableShareGroupAsyncTextureUpload,
86 #if defined(OS_CHROMEOS)
87 switches::kDisableVaapiAcceleratedVideoEncode,
88 #endif
89 switches::kGpuStartupDialog,
90 switches::kGpuSandboxAllowSysVShm,
91 switches::kGpuSandboxFailuresFatal,
92 switches::kGpuSandboxStartEarly,
93 switches::kIgnoreResolutionLimitsForAcceleratedVideoDecode,
94 switches::kLoggingLevel,
95 switches::kLowEndDeviceMode,
96 switches::kNoSandbox,
97 switches::kTestGLLib,
98 switches::kTraceStartup,
99 switches::kTraceToConsole,
100 switches::kV,
101 switches::kVModule,
102 #if defined(OS_MACOSX)
103 switches::kEnableRemoteCoreAnimation,
104 switches::kEnableSandboxLogging,
105 #endif
106 #if defined(USE_AURA)
107 switches::kUIPrioritizeInGpuProcess,
108 #endif
109 #if defined(USE_OZONE)
110 switches::kOzonePlatform,
111 switches::kOzoneUseSurfaceless,
112 #endif
113 #if defined(USE_X11) && !defined(OS_CHROMEOS)
114 switches::kX11Display,
115 #endif
116 };
117
73 enum GPUProcessLifetimeEvent { 118 enum GPUProcessLifetimeEvent {
74 LAUNCHED, 119 LAUNCHED,
75 DIED_FIRST_TIME, 120 DIED_FIRST_TIME,
76 DIED_SECOND_TIME, 121 DIED_SECOND_TIME,
77 DIED_THIRD_TIME, 122 DIED_THIRD_TIME,
78 DIED_FOURTH_TIME, 123 DIED_FOURTH_TIME,
79 GPU_PROCESS_LIFETIME_EVENT_MAX = 100 124 GPU_PROCESS_LIFETIME_EVENT_MAX = 100
80 }; 125 };
81 126
82 // Indexed by GpuProcessKind. There is one of each kind maximum. This array may 127 // Indexed by GpuProcessKind. There is one of each kind maximum. This array may
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 if (exe_path.empty()) 868 if (exe_path.empty())
824 return false; 869 return false;
825 870
826 base::CommandLine* cmd_line = new base::CommandLine(exe_path); 871 base::CommandLine* cmd_line = new base::CommandLine(exe_path);
827 cmd_line->AppendSwitchASCII(switches::kProcessType, switches::kGpuProcess); 872 cmd_line->AppendSwitchASCII(switches::kProcessType, switches::kGpuProcess);
828 cmd_line->AppendSwitchASCII(switches::kProcessChannelID, channel_id); 873 cmd_line->AppendSwitchASCII(switches::kProcessChannelID, channel_id);
829 874
830 if (kind_ == GPU_PROCESS_KIND_UNSANDBOXED) 875 if (kind_ == GPU_PROCESS_KIND_UNSANDBOXED)
831 cmd_line->AppendSwitch(switches::kDisableGpuSandbox); 876 cmd_line->AppendSwitch(switches::kDisableGpuSandbox);
832 877
833 // Propagate relevant command line switches. 878 // If you want a browser command-line switch passed to the GPU process
834 static const char* const kSwitchNames[] = { 879 // you need to add it to |kSwitchNames| at the beginning of this file.
835 switches::kDisableAcceleratedVideoDecode,
836 switches::kDisableBreakpad,
837 switches::kDisableGpuSandbox,
838 switches::kDisableGpuWatchdog,
839 switches::kDisableLogging,
840 switches::kDisableSeccompFilterSandbox,
841 #if defined(ENABLE_WEBRTC)
842 switches::kDisableWebRtcHWEncoding,
843 #endif
844 switches::kEnableLogging,
845 switches::kEnableShareGroupAsyncTextureUpload,
846 #if defined(OS_CHROMEOS)
847 switches::kDisableVaapiAcceleratedVideoEncode,
848 #endif
849 switches::kGpuStartupDialog,
850 switches::kGpuSandboxAllowSysVShm,
851 switches::kGpuSandboxFailuresFatal,
852 switches::kGpuSandboxStartEarly,
853 switches::kIgnoreResolutionLimitsForAcceleratedVideoDecode,
854 switches::kLoggingLevel,
855 switches::kLowEndDeviceMode,
856 switches::kNoSandbox,
857 switches::kTestGLLib,
858 switches::kTraceStartup,
859 switches::kTraceToConsole,
860 switches::kV,
861 switches::kVModule,
862 #if defined(OS_MACOSX)
863 switches::kEnableRemoteCoreAnimation,
864 switches::kEnableSandboxLogging,
865 #endif
866 #if defined(USE_AURA)
867 switches::kUIPrioritizeInGpuProcess,
868 #endif
869 #if defined(USE_OZONE)
870 switches::kOzonePlatform,
871 switches::kOzoneUseSurfaceless,
872 #endif
873 #if defined(USE_X11) && !defined(OS_CHROMEOS)
874 switches::kX11Display,
875 #endif
876 };
877 cmd_line->CopySwitchesFrom(browser_command_line, kSwitchNames, 880 cmd_line->CopySwitchesFrom(browser_command_line, kSwitchNames,
878 arraysize(kSwitchNames)); 881 arraysize(kSwitchNames));
879 cmd_line->CopySwitchesFrom( 882 cmd_line->CopySwitchesFrom(
880 browser_command_line, switches::kGpuSwitches, switches::kNumGpuSwitches); 883 browser_command_line, switches::kGpuSwitches, switches::kNumGpuSwitches);
881 cmd_line->CopySwitchesFrom( 884 cmd_line->CopySwitchesFrom(
882 browser_command_line, switches::kGLSwitchesCopiedFromGpuProcessHost, 885 browser_command_line, switches::kGLSwitchesCopiedFromGpuProcessHost,
883 switches::kGLSwitchesCopiedFromGpuProcessHostNumSwitches); 886 switches::kGLSwitchesCopiedFromGpuProcessHostNumSwitches);
884 887
885 GetContentClient()->browser()->AppendExtraCommandLineSwitches( 888 GetContentClient()->browser()->AppendExtraCommandLineSwitches(
886 cmd_line, process_->GetData().id); 889 cmd_line, process_->GetData().id);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 GpuDataManagerImpl::GetInstance()->BlockDomainFrom3DAPIs( 937 GpuDataManagerImpl::GetInstance()->BlockDomainFrom3DAPIs(
935 *iter, GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN); 938 *iter, GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN);
936 } 939 }
937 } 940 }
938 941
939 void GpuProcessHost::RecordProcessCrash() { 942 void GpuProcessHost::RecordProcessCrash() {
940 // Skip if a GPU process crash was already counted. 943 // Skip if a GPU process crash was already counted.
941 if (gpu_crash_recorded_) 944 if (gpu_crash_recorded_)
942 return; 945 return;
943 946
944 // Maximum number of times the gpu process is allowed to crash in a session. 947 // Maximum number of times the GPU process is allowed to crash in a session.
945 // Once this limit is reached, any request to launch the gpu process will 948 // Once this limit is reached, any request to launch the GPU process will
946 // fail. 949 // fail.
947 const int kGpuMaxCrashCount = 3; 950 const int kGpuMaxCrashCount = 3;
948 951
949 // Last time the GPU process crashed. 952 // Last time the GPU process crashed.
950 static base::Time last_gpu_crash_time; 953 static base::Time last_gpu_crash_time;
951 954
952 bool disable_crash_limit = base::CommandLine::ForCurrentProcess()->HasSwitch( 955 bool disable_crash_limit = base::CommandLine::ForCurrentProcess()->HasSwitch(
953 switches::kDisableGpuProcessCrashLimit); 956 switches::kDisableGpuProcessCrashLimit);
954 957
955 // Ending only acts as a failure if the GPU process was actually started and 958 // Ending only acts as a failure if the GPU process was actually started and
(...skipping 29 matching lines...) Expand all
985 std::max(0, gpu_recent_crash_count_ - hours_different); 988 std::max(0, gpu_recent_crash_count_ - hours_different);
986 } 989 }
987 990
988 crashed_before_ = true; 991 crashed_before_ = true;
989 last_gpu_crash_time = current_time; 992 last_gpu_crash_time = current_time;
990 993
991 if ((gpu_recent_crash_count_ >= kGpuMaxCrashCount && 994 if ((gpu_recent_crash_count_ >= kGpuMaxCrashCount &&
992 !disable_crash_limit) || 995 !disable_crash_limit) ||
993 !initialized_) { 996 !initialized_) {
994 #if !defined(OS_CHROMEOS) 997 #if !defined(OS_CHROMEOS)
995 // The gpu process is too unstable to use. Disable it for current 998 // The GPU process is too unstable to use. Disable it for current
996 // session. 999 // session.
997 hardware_gpu_enabled_ = false; 1000 hardware_gpu_enabled_ = false;
998 GpuDataManagerImpl::GetInstance()->DisableHardwareAcceleration(); 1001 GpuDataManagerImpl::GetInstance()->DisableHardwareAcceleration();
999 #endif 1002 #endif
1000 } 1003 }
1001 } 1004 }
1002 } 1005 }
1003 } 1006 }
1004 1007
1005 std::string GpuProcessHost::GetShaderPrefixKey() { 1008 std::string GpuProcessHost::GetShaderPrefixKey() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1047 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); 1050 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader");
1048 ClientIdToShaderCacheMap::iterator iter = 1051 ClientIdToShaderCacheMap::iterator iter =
1049 client_id_to_shader_cache_.find(client_id); 1052 client_id_to_shader_cache_.find(client_id);
1050 // If the cache doesn't exist then this is an off the record profile. 1053 // If the cache doesn't exist then this is an off the record profile.
1051 if (iter == client_id_to_shader_cache_.end()) 1054 if (iter == client_id_to_shader_cache_.end())
1052 return; 1055 return;
1053 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); 1056 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader);
1054 } 1057 }
1055 1058
1056 } // namespace content 1059 } // 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