summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/common')
-rw-r--r--chrome/common/dx_diag_node.h19
-rw-r--r--chrome/common/gpu_info.cc10
-rw-r--r--chrome/common/gpu_info.h14
-rw-r--r--chrome/common/gpu_messages.cc35
-rw-r--r--chrome/common/gpu_param_traits.h9
5 files changed, 87 insertions, 0 deletions
diff --git a/chrome/common/dx_diag_node.h b/chrome/common/dx_diag_node.h
new file mode 100644
index 0000000..9f20d92
--- /dev/null
+++ b/chrome/common/dx_diag_node.h
@@ -0,0 +1,19 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// A tree of name value pairs that report contain DirectX diagnostic
+// information.
+
+#ifndef CHROME_COMMON_DX_DIAG_NODE_H_
+#define CHROME_COMMON_DX_DIAG_NODE_H_
+
+#include <map>
+#include <string>
+
+struct DxDiagNode {
+ std::map<std::string, std::string> values;
+ std::map<std::string, DxDiagNode> children;
+};
+
+#endif // CHROME_COMMON_DX_DIAG_NODE_H_
diff --git a/chrome/common/gpu_info.cc b/chrome/common/gpu_info.cc
index 9f16bdb..667c375 100644
--- a/chrome/common/gpu_info.cc
+++ b/chrome/common/gpu_info.cc
@@ -60,3 +60,13 @@ void GPUInfo::SetGraphicsInfo(uint32 vendor_id, uint32 device_id,
can_lose_context_ = can_lose_context;
initialized_ = true;
}
+
+#if defined(OS_WIN)
+const DxDiagNode& GPUInfo::dx_diagnostics() const {
+ return dx_diagnostics_;
+}
+
+void GPUInfo::SetDxDiagnostics(const DxDiagNode& dx_diagnostics) {
+ dx_diagnostics_ = dx_diagnostics;
+}
+#endif
diff --git a/chrome/common/gpu_info.h b/chrome/common/gpu_info.h
index 2f8f9da..50728db 100644
--- a/chrome/common/gpu_info.h
+++ b/chrome/common/gpu_info.h
@@ -12,6 +12,8 @@
#include <string>
#include "base/basictypes.h"
+#include "build/build_config.h"
+#include "chrome/common/dx_diag_node.h"
class GPUInfo {
public:
@@ -60,6 +62,14 @@ class GPUInfo {
uint32 vertex_shader_version,
uint32 gl_version,
bool can_lose_context);
+
+#if defined(OS_WIN)
+ // The information returned by the DirectX Diagnostics Tool.
+ const DxDiagNode& dx_diagnostics() const;
+
+ void SetDxDiagnostics(const DxDiagNode& dx_diagnostics);
+#endif
+
private:
bool initialized_;
uint32 vendor_id_;
@@ -69,6 +79,10 @@ class GPUInfo {
uint32 vertex_shader_version_;
uint32 gl_version_;
bool can_lose_context_;
+
+#if defined(OS_WIN)
+ DxDiagNode dx_diagnostics_;
+#endif
};
#endif // CHROME_COMMON_GPU_INFO_H__
diff --git a/chrome/common/gpu_messages.cc b/chrome/common/gpu_messages.cc
index 34f051c..893f8c9 100644
--- a/chrome/common/gpu_messages.cc
+++ b/chrome/common/gpu_messages.cc
@@ -5,6 +5,7 @@
#include "chrome/common/gpu_messages.h"
#include "chrome/common/gpu_info.h"
+#include "chrome/common/dx_diag_node.h"
#include "gfx/rect.h"
#include "gfx/size.h"
#include "ipc/ipc_channel_handle.h"
@@ -85,6 +86,10 @@ void ParamTraits<GPUInfo> ::Write(Message* m, const param_type& p) {
m->WriteUInt32(p.vertex_shader_version());
m->WriteUInt32(p.gl_version());
m->WriteBool(p.can_lose_context());
+
+#if defined(OS_WIN)
+ ParamTraits<DxDiagNode> ::Write(m, p.dx_diagnostics());
+#endif
}
bool ParamTraits<GPUInfo> ::Read(const Message* m, void** iter, param_type* p) {
@@ -109,6 +114,13 @@ bool ParamTraits<GPUInfo> ::Read(const Message* m, void** iter, param_type* p) {
vertex_shader_version,
gl_version,
can_lose_context);
+
+#if defined(OS_WIN)
+ DxDiagNode dx_diagnostics;
+ ret = ret && ParamTraits<DxDiagNode> ::Read(m, iter, &dx_diagnostics);
+ p->SetDxDiagnostics(dx_diagnostics);
+#endif
+
return ret;
}
@@ -120,6 +132,29 @@ void ParamTraits<GPUInfo> ::Log(const param_type& p, std::string* l) {
p.can_lose_context()));
}
+void ParamTraits<DxDiagNode> ::Write(Message* m, const param_type& p) {
+ ParamTraits<std::map<std::string, std::string> >::Write(m, p.values);
+ ParamTraits<std::map<std::string, DxDiagNode> >::Write(m, p.children);
+}
+
+bool ParamTraits<DxDiagNode> ::Read(const Message* m,
+ void** iter,
+ param_type* p) {
+ bool ret = ParamTraits<std::map<std::string, std::string> >::Read(
+ m,
+ iter,
+ &p->values);
+ ret = ret && ParamTraits<std::map<std::string, DxDiagNode> >::Read(
+ m,
+ iter,
+ &p->children);
+ return ret;
+}
+
+void ParamTraits<DxDiagNode> ::Log(const param_type& p, std::string* l) {
+ l->append("<DxDiagNode>");
+}
+
void ParamTraits<gpu::CommandBuffer::State> ::Write(Message* m,
const param_type& p) {
m->WriteInt(p.num_entries);
diff --git a/chrome/common/gpu_param_traits.h b/chrome/common/gpu_param_traits.h
index d8ca851..f2c4e02 100644
--- a/chrome/common/gpu_param_traits.h
+++ b/chrome/common/gpu_param_traits.h
@@ -9,6 +9,7 @@
#include "base/basictypes.h"
#include "base/process.h"
#include "chrome/common/common_param_traits.h"
+#include "chrome/common/dx_diag_node.h"
#include "chrome/common/gpu_info.h"
#include "chrome/common/gpu_native_window_handle.h"
#include "gfx/native_widget_types.h"
@@ -52,6 +53,14 @@ struct ParamTraits<GPUInfo> {
};
template <>
+struct ParamTraits<DxDiagNode> {
+ typedef DxDiagNode param_type;
+ static void Write(Message* m, const param_type& p);
+ static bool Read(const Message* m, void** iter, param_type* p);
+ static void Log(const param_type& p, std::string* l);
+};
+
+template <>
struct ParamTraits<gpu::CommandBuffer::State> {
typedef gpu::CommandBuffer::State param_type;
static void Write(Message* m, const param_type& p);