summaryrefslogtreecommitdiffstats
path: root/content/common/gpu/gpu_info.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/common/gpu/gpu_info.cc')
-rw-r--r--content/common/gpu/gpu_info.cc63
1 files changed, 63 insertions, 0 deletions
diff --git a/content/common/gpu/gpu_info.cc b/content/common/gpu/gpu_info.cc
new file mode 100644
index 0000000..f067baf
--- /dev/null
+++ b/content/common/gpu/gpu_info.cc
@@ -0,0 +1,63 @@
+// Copyright (c) 2011 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.
+
+#include "content/common/gpu/gpu_info.h"
+
+GPUInfo::GPUInfo()
+ : finalized(false),
+ vendor_id(0),
+ device_id(0),
+ can_lose_context(false) {
+}
+
+GPUInfo::~GPUInfo() { }
+
+bool GPUInfo::Merge(const GPUInfo& other) {
+ if (device_id != other.device_id || vendor_id != other.vendor_id) {
+ *this = other;
+ return true;
+ }
+
+ bool changed = false;
+ if (!finalized) {
+ finalized = other.finalized;
+ initialization_time = other.initialization_time;
+ if (driver_vendor.empty() && !other.driver_vendor.empty()) {
+ driver_vendor = other.driver_vendor;
+ changed = true;
+ }
+ if (driver_version.empty() && !other.driver_version.empty()) {
+ driver_version = other.driver_version;
+ changed = true;
+ }
+ if (driver_date.empty() && !other.driver_date.empty()) {
+ driver_date = other.driver_date;
+ changed = true;
+ }
+ if (pixel_shader_version.empty())
+ pixel_shader_version = other.pixel_shader_version;
+ if (vertex_shader_version.empty())
+ vertex_shader_version = other.vertex_shader_version;
+ if (gl_version.empty())
+ gl_version = other.gl_version;
+ if (gl_version_string.empty())
+ gl_version_string = other.gl_version_string;
+ if (gl_vendor.empty())
+ gl_vendor = other.gl_vendor;
+ if (gl_renderer.empty() && !other.gl_renderer.empty()) {
+ gl_renderer = other.gl_renderer;
+ changed = true;
+ }
+ if (gl_extensions.empty())
+ gl_extensions = other.gl_extensions;
+ can_lose_context = other.can_lose_context;
+#if defined(OS_WIN)
+ if (dx_diagnostics.values.size() == 0 &&
+ dx_diagnostics.children.size() == 0)
+ dx_diagnostics = other.dx_diagnostics;
+#endif
+ }
+ return changed;
+}
+