Index: content/gpu/gpu_dx_diagnostics_win.cc |
=================================================================== |
--- content/gpu/gpu_dx_diagnostics_win.cc (revision 201645) |
+++ content/gpu/gpu_dx_diagnostics_win.cc (working copy) |
@@ -1,139 +0,0 @@ |
-// 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. |
-// |
-// Functions to enumerate the Dx Diagnostic Tool hierarchy and build up |
-// a tree of nodes with name / value properties. |
- |
-#define INITGUID |
-#include <dxdiag.h> |
-#include <windows.h> |
- |
-#include "base/string_number_conversions.h" |
-#include "base/utf_string_conversions.h" |
-#include "base/win/scoped_com_initializer.h" |
-#include "content/gpu/gpu_info_collector.h" |
- |
-// Functions in this file depend on functions exported from dxguid.dll. |
-#pragma comment(lib, "dxguid.lib") |
- |
-namespace { |
- |
-// Traverses the IDxDiagContainer tree and populates a tree of DxDiagNode |
-// structures that contains property name / value pairs and subtrees of DirectX |
-// diagnostic information. |
-void RecurseDiagnosticTree(content::DxDiagNode* output, |
- IDxDiagContainer* container, |
- int depth) { |
- HRESULT hr; |
- |
- VARIANT variant; |
- VariantInit(&variant); |
- |
- DWORD prop_count; |
- hr = container->GetNumberOfProps(&prop_count); |
- if (SUCCEEDED(hr)) { |
- for (DWORD i = 0; i < prop_count; i++) { |
- WCHAR prop_name16[256]; |
- hr = container->EnumPropNames(i, prop_name16, arraysize(prop_name16)); |
- if (SUCCEEDED(hr)) { |
- std::string prop_name8 = WideToUTF8(prop_name16); |
- |
- hr = container->GetProp(prop_name16, &variant); |
- if (SUCCEEDED(hr)) { |
- switch (variant.vt) { |
- case VT_UI4: |
- output->values[prop_name8] = base::UintToString(variant.ulVal); |
- break; |
- case VT_I4: |
- output->values[prop_name8] = base::IntToString(variant.lVal); |
- break; |
- case VT_BOOL: |
- output->values[prop_name8] = variant.boolVal ? "true" : "false"; |
- break; |
- case VT_BSTR: |
- output->values[prop_name8] = WideToUTF8(variant.bstrVal); |
- break; |
- default: |
- break; |
- } |
- |
- // Clear the variant (this is needed to free BSTR memory). |
- VariantClear(&variant); |
- } |
- } |
- } |
- } |
- |
- if (depth > 0) { |
- DWORD child_count; |
- hr = container->GetNumberOfChildContainers(&child_count); |
- if (SUCCEEDED(hr)) { |
- for (DWORD i = 0; i < child_count; i++) { |
- WCHAR child_name16[256]; |
- hr = container->EnumChildContainerNames(i, |
- child_name16, |
- arraysize(child_name16)); |
- if (SUCCEEDED(hr)) { |
- std::string child_name8 = WideToUTF8(child_name16); |
- content::DxDiagNode* output_child = |
- &output->children[child_name8]; |
- |
- IDxDiagContainer* child_container = NULL; |
- hr = container->GetChildContainer(child_name16, &child_container); |
- if (SUCCEEDED(hr)) { |
- RecurseDiagnosticTree(output_child, child_container, depth - 1); |
- |
- child_container->Release(); |
- } |
- } |
- } |
- } |
- } |
-} |
-} // namespace anonymous |
- |
-namespace gpu_info_collector { |
- |
-bool GetDxDiagnostics(content::DxDiagNode* output) { |
- HRESULT hr; |
- bool success = false; |
- base::win::ScopedCOMInitializer com_initializer; |
- |
- IDxDiagProvider* provider = NULL; |
- hr = CoCreateInstance(CLSID_DxDiagProvider, |
- NULL, |
- CLSCTX_INPROC_SERVER, |
- IID_IDxDiagProvider, |
- reinterpret_cast<void**>(&provider)); |
- if (SUCCEEDED(hr)) { |
- DXDIAG_INIT_PARAMS params = { sizeof(params) }; |
- params.dwDxDiagHeaderVersion = DXDIAG_DX9_SDK_VERSION; |
- params.bAllowWHQLChecks = FALSE; |
- params.pReserved = NULL; |
- |
- hr = provider->Initialize(¶ms); |
- if (SUCCEEDED(hr)) { |
- IDxDiagContainer* root = NULL; |
- hr = provider->GetRootContainer(&root); |
- if (SUCCEEDED(hr)) { |
- // Limit to the DisplayDevices subtree. The tree in its entirity is |
- // enormous and only this branch contains useful information. |
- IDxDiagContainer* display_devices = NULL; |
- hr = root->GetChildContainer(L"DxDiag_DisplayDevices", |
- &display_devices); |
- if (SUCCEEDED(hr)) { |
- RecurseDiagnosticTree(output, display_devices, 1); |
- success = true; |
- display_devices->Release(); |
- } |
- |
- root->Release(); |
- } |
- } |
- provider->Release(); |
- } |
- |
- return success; |
-} |
-} // namespace gpu_info_collector |