summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/common')
-rw-r--r--chrome/common/chrome_switches.cc4
-rw-r--r--chrome/common/chrome_switches.h1
-rw-r--r--chrome/common/gpu_info.cc10
-rw-r--r--chrome/common/gpu_info.h8
-rw-r--r--chrome/common/gpu_messages.cc11
-rw-r--r--chrome/common/gpu_messages_unittest.cc5
6 files changed, 36 insertions, 3 deletions
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index 1a6b7d0..30dd178 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -195,6 +195,10 @@ const char kDisableGeolocation[] = "disable-geolocation";
// Disable the GLSL translator.
const char kDisableGLSLTranslator[] = "disable-glsl-translator";
+// Disable the thread that crashes the GPU process if it stops responding to
+// messages.
+const char kDisableGpuWatchdog[] = "disable-gpu-watchdog";
+
// Suppresses hang monitor dialogs in renderer processes. This may allow slow
// unload handlers on a page to prevent the tab from closing, but the Task
// Manager can be used to terminate the offending process in this case.
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 0e742a0..93558c9 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -67,6 +67,7 @@ extern const char kDisableExtensions[];
extern const char kDisableFileSystem[];
extern const char kDisableGLSLTranslator[];
extern const char kDisableGeolocation[];
+extern const char kDisableGpuWatchdog[];
extern const char kDisableHangMonitor[];
extern const char kDisableHistoryQuickProvider[];
extern const char kDisableHistoryURLProvider[];
diff --git a/chrome/common/gpu_info.cc b/chrome/common/gpu_info.cc
index 667c375..64f0498 100644
--- a/chrome/common/gpu_info.cc
+++ b/chrome/common/gpu_info.cc
@@ -16,6 +16,10 @@ bool GPUInfo::initialized() const {
return initialized_;
}
+base::TimeDelta GPUInfo::initialization_time() const {
+ return initialization_time_;
+}
+
uint32 GPUInfo::vendor_id() const {
return vendor_id_;
}
@@ -45,6 +49,12 @@ bool GPUInfo::can_lose_context() const {
return can_lose_context_;
}
+void GPUInfo::SetInitializationTime(
+ const base::TimeDelta& initialization_time) {
+ initialization_time_ = initialization_time;
+}
+
+
void GPUInfo::SetGraphicsInfo(uint32 vendor_id, uint32 device_id,
const std::wstring& driver_version,
uint32 pixel_shader_version,
diff --git a/chrome/common/gpu_info.h b/chrome/common/gpu_info.h
index 50728db..bdf8709 100644
--- a/chrome/common/gpu_info.h
+++ b/chrome/common/gpu_info.h
@@ -12,6 +12,7 @@
#include <string>
#include "base/basictypes.h"
+#include "base/time.h"
#include "build/build_config.h"
#include "chrome/common/dx_diag_node.h"
@@ -23,6 +24,10 @@ class GPUInfo {
// Returns whether this GPUInfo has been initialized with information
bool initialized() const;
+ // The amount of time taken to get from the process starting to the message
+ // loop being pumped.
+ base::TimeDelta initialization_time() const;
+
// Return the DWORD (uint32) representing the graphics card vendor id.
uint32 vendor_id() const;
@@ -55,6 +60,8 @@ class GPUInfo {
// semantics are available.
bool can_lose_context() const;
+ void SetInitializationTime(const base::TimeDelta& initialization_time);
+
// Populate variables with passed in values
void SetGraphicsInfo(uint32 vendor_id, uint32 device_id,
const std::wstring& driver_version,
@@ -72,6 +79,7 @@ class GPUInfo {
private:
bool initialized_;
+ base::TimeDelta initialization_time_;
uint32 vendor_id_;
uint32 device_id_;
std::wstring driver_version_;
diff --git a/chrome/common/gpu_messages.cc b/chrome/common/gpu_messages.cc
index b8232b8..671a6a6 100644
--- a/chrome/common/gpu_messages.cc
+++ b/chrome/common/gpu_messages.cc
@@ -10,6 +10,7 @@
#include "gfx/rect.h"
#include "gfx/size.h"
#include "ipc/ipc_channel_handle.h"
+#include "ipc/ipc_message_utils.h"
#define MESSAGES_INTERNAL_IMPL_FILE \
"chrome/common/gpu_messages_internal.h"
@@ -80,6 +81,7 @@ void ParamTraits<GpuHostMsg_AcceleratedSurfaceSetIOSurface_Params> ::Log(
#endif // if defined(OS_MACOSX)
void ParamTraits<GPUInfo> ::Write(Message* m, const param_type& p) {
+ ParamTraits<base::TimeDelta> ::Write(m, p.initialization_time());
m->WriteUInt32(p.vendor_id());
m->WriteUInt32(p.device_id());
m->WriteWString(p.driver_version());
@@ -94,6 +96,7 @@ void ParamTraits<GPUInfo> ::Write(Message* m, const param_type& p) {
}
bool ParamTraits<GPUInfo> ::Read(const Message* m, void** iter, param_type* p) {
+ base::TimeDelta initialization_time;
uint32 vendor_id;
uint32 device_id;
std::wstring driver_version;
@@ -101,13 +104,15 @@ bool ParamTraits<GPUInfo> ::Read(const Message* m, void** iter, param_type* p) {
uint32 vertex_shader_version;
uint32 gl_version;
bool can_lose_context;
- bool ret = m->ReadUInt32(iter, &vendor_id);
+ bool ret = ParamTraits<base::TimeDelta> ::Read(m, iter, &initialization_time);
+ ret = ret && m->ReadUInt32(iter, &vendor_id);
ret = ret && m->ReadUInt32(iter, &device_id);
ret = ret && m->ReadWString(iter, &driver_version);
ret = ret && m->ReadUInt32(iter, &pixel_shader_version);
ret = ret && m->ReadUInt32(iter, &vertex_shader_version);
ret = ret && m->ReadUInt32(iter, &gl_version);
ret = ret && m->ReadBool(iter, &can_lose_context);
+ p->SetInitializationTime(initialization_time);
p->SetGraphicsInfo(vendor_id,
device_id,
driver_version,
@@ -126,7 +131,9 @@ bool ParamTraits<GPUInfo> ::Read(const Message* m, void** iter, param_type* p) {
}
void ParamTraits<GPUInfo> ::Log(const param_type& p, std::string* l) {
- l->append(base::StringPrintf("<GPUInfo> %x %x %ls %d",
+ l->append(base::StringPrintf("<GPUInfo> %d %x %x %ls %d",
+ static_cast<int32>(
+ p.initialization_time().InMilliseconds()),
p.vendor_id(),
p.device_id(),
p.driver_version().c_str(),
diff --git a/chrome/common/gpu_messages_unittest.cc b/chrome/common/gpu_messages_unittest.cc
index 455458f..59d42ed 100644
--- a/chrome/common/gpu_messages_unittest.cc
+++ b/chrome/common/gpu_messages_unittest.cc
@@ -13,6 +13,7 @@
TEST(GPUIPCMessageTest, GPUInfo) {
GPUInfo input;
// Test variables taken from Lenovo T61
+ input.SetInitializationTime(base::TimeDelta::FromMilliseconds(100));
input.SetGraphicsInfo(0x10de, 0x429, L"6.14.11.7715",
0xffff0300,
0xfffe0300,
@@ -25,6 +26,8 @@ TEST(GPUIPCMessageTest, GPUInfo) {
GPUInfo output;
void* iter = NULL;
EXPECT_TRUE(IPC::ReadParam(&msg, &iter, &output));
+ EXPECT_EQ(input.initialization_time().InMilliseconds(),
+ output.initialization_time().InMilliseconds());
EXPECT_EQ(input.vendor_id(), output.vendor_id());
EXPECT_EQ(input.device_id(), output.device_id());
EXPECT_EQ(input.driver_version(), output.driver_version());
@@ -35,5 +38,5 @@ TEST(GPUIPCMessageTest, GPUInfo) {
std::string log_message;
IPC::LogParam(output, &log_message);
- EXPECT_STREQ("<GPUInfo> 10de 429 6.14.11.7715 1", log_message.c_str());
+ EXPECT_STREQ("<GPUInfo> 100 10de 429 6.14.11.7715 1", log_message.c_str());
}