// 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 GPU_CONFIG_GPU_INFO_COLLECTOR_H_ #define GPU_CONFIG_GPU_INFO_COLLECTOR_H_ #include "base/basictypes.h" #include "build/build_config.h" #include "gpu/config/gpu_info.h" #include "gpu/gpu_export.h" namespace gpu { enum GpuIDResult { kGpuIDFailure, kGpuIDSuccess, kGpuIDNotSupported }; // Result for the various Collect*Info* functions below. // Fatal failures are for cases where we can't create a context at all or // something, making the use of the GPU impossible. // Non-fatal failures are for cases where we could gather most info, but maybe // some is missing (e.g. unable to parse a version string or to detect the exact // model). enum CollectInfoResult { kCollectInfoFatalFailure, kCollectInfoNonFatalFailure, kCollectInfoSuccess }; // Collect GPU vendor_id and device ID. GPU_EXPORT GpuIDResult CollectGpuID(uint32* vendor_id, uint32* device_id); // Collects basic GPU info without creating a GL/DirectX context (and without // the danger of crashing), including vendor_id and device_id. // This is called at browser process startup time. // The subset each platform collects may be different. GPU_EXPORT CollectInfoResult CollectBasicGraphicsInfo(GPUInfo* gpu_info); // Create a GL/DirectX context and collect related info. // This is called at GPU process startup time. GPU_EXPORT CollectInfoResult CollectContextGraphicsInfo(GPUInfo* gpu_info); #if defined(OS_WIN) // Collect the DirectX Disagnostics information about the attached displays. GPU_EXPORT bool GetDxDiagnostics(DxDiagNode* output); #endif // OS_WIN // Create a GL context and collect GL strings and versions. GPU_EXPORT CollectInfoResult CollectGraphicsInfoGL(GPUInfo* gpu_info); // Each platform stores the driver version on the GL_VERSION string differently GPU_EXPORT CollectInfoResult CollectDriverInfoGL(GPUInfo* gpu_info); // Merge GPUInfo from CollectContextGraphicsInfo into basic GPUInfo. // This is platform specific, depending on which info are collected at which // stage. GPU_EXPORT void MergeGPUInfo(GPUInfo* basic_gpu_info, const GPUInfo& context_gpu_info); // MergeGPUInfo() when GL driver is used. GPU_EXPORT void MergeGPUInfoGL(GPUInfo* basic_gpu_info, const GPUInfo& context_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 #endif // GPU_CONFIG_GPU_INFO_COLLECTOR_H_