| // Copyright (c) 2012 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. |
| |
| #ifndef CONTENT_GPU_GPU_INFO_COLLECTOR_H_ |
| #define CONTENT_GPU_GPU_INFO_COLLECTOR_H_ |
| |
| #include "base/basictypes.h" |
| #include "build/build_config.h" |
| #include "content/common/content_export.h" |
| #include "content/public/common/gpu_info.h" |
| |
| struct IDirect3D9; |
| |
| namespace gpu_info_collector { |
| |
| // Populate variables with necessary graphics card information. |
| // Returns true on success. |
| bool CollectGraphicsInfo(content::GPUInfo* gpu_info); |
| |
| // Similar to CollectGraphicsInfo, only this collects a subset of variables |
| // without creating a GL/DirectX context (and without the danger of crashing). |
| // The subset each platform collects may be different. |
| CONTENT_EXPORT bool CollectPreliminaryGraphicsInfo( |
| content::GPUInfo* gpu_info); |
| |
| #if defined(OS_WIN) |
| // Windows provides two ways of doing graphics so we need two ways of |
| // collecting info based on what's on a user's machine. |
| // The selection between the two methods is done in the cc file. |
| |
| // A D3D argument is passed in for testing purposes |
| CONTENT_EXPORT bool CollectGraphicsInfoD3D(IDirect3D9* d3d, |
| content::GPUInfo* gpu_info); |
| |
| // Collects D3D driver version/date through registry lookup. |
| // Note that this does not require a D3D context. |
| // device_id here is the raw data in DISPLAY_DEVICE. |
| CONTENT_EXPORT bool CollectDriverInfoD3D(const std::wstring& device_id, |
| content::GPUInfo* gpu_info); |
| |
| // Collect the DirectX Disagnostics information about the attached displays. |
| bool GetDxDiagnostics(content::DxDiagNode* output); |
| #endif // OS_WIN |
| |
| // All platforms have a GL version for collecting information |
| CONTENT_EXPORT bool CollectGraphicsInfoGL(content::GPUInfo* gpu_info); |
| |
| // Collect GL and Shading language version information |
| bool CollectGLVersionInfo(content::GPUInfo* gpu_info); |
| |
| // Platform specific method for collecting vendor and device ids |
| bool CollectVideoCardInfo(content::GPUInfo* gpu_info); |
| |
| // Each platform stores the driver version on the GL_VERSION string differently |
| bool CollectDriverInfoGL(content::GPUInfo* gpu_info); |
| |
| // Advanced Micro Devices has interesting configurations on laptops were |
| // there are two videocards that can alternatively a given process output. |
| enum AMDVideoCardType { |
| UNKNOWN, |
| STANDALONE, |
| INTEGRATED, |
| SWITCHABLE |
| }; |
| |
| } // namespace gpu_info_collector |
| |
| #endif // CONTENT_GPU_GPU_INFO_COLLECTOR_H_ |