1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef GPU_CONFIG_GPU_INFO_COLLECTOR_H_ 6 #define GPU_CONFIG_GPU_INFO_COLLECTOR_H_ 7 8 #include "base/basictypes.h" 9 #include "build/build_config.h" 10 #include "gpu/config/gpu_info.h" 11 #include "gpu/gpu_export.h" 12 13 namespace gpu { 14 15 enum GpuIDResult { 16 kGpuIDFailure, 17 kGpuIDSuccess, 18 kGpuIDNotSupported 19 }; 20 21 // Result for the various Collect*Info* functions below. 22 // Fatal failures are for cases where we can't create a context at all or 23 // something, making the use of the GPU impossible. 24 // Non-fatal failures are for cases where we could gather most info, but maybe 25 // some is missing (e.g. unable to parse a version string or to detect the exact 26 // model). 27 enum CollectInfoResult { 28 kCollectInfoFatalFailure, 29 kCollectInfoNonFatalFailure, 30 kCollectInfoSuccess 31 }; 32 33 // Collect GPU vendor_id and device ID. 34 GPU_EXPORT GpuIDResult CollectGpuID(uint32* vendor_id, uint32* device_id); 35 36 // Collects basic GPU info without creating a GL/DirectX context (and without 37 // the danger of crashing), including vendor_id and device_id. 38 // This is called at browser process startup time. 39 // The subset each platform collects may be different. 40 GPU_EXPORT CollectInfoResult CollectBasicGraphicsInfo(GPUInfo* gpu_info); 41 42 // Create a GL/DirectX context and collect related info. 43 // This is called at GPU process startup time. 44 GPU_EXPORT CollectInfoResult CollectContextGraphicsInfo(GPUInfo* gpu_info); 45 46 #if defined(OS_WIN) 47 // Collect the DirectX Disagnostics information about the attached displays. 48 GPU_EXPORT bool GetDxDiagnostics(DxDiagNode* output); 49 #endif // OS_WIN 50 51 // Create a GL context and collect GL strings and versions. 52 GPU_EXPORT CollectInfoResult CollectGraphicsInfoGL(GPUInfo* gpu_info); 53 54 // Each platform stores the driver version on the GL_VERSION string differently 55 GPU_EXPORT CollectInfoResult CollectDriverInfoGL(GPUInfo* gpu_info); 56 57 // Merge GPUInfo from CollectContextGraphicsInfo into basic GPUInfo. 58 // This is platform specific, depending on which info are collected at which 59 // stage. 60 GPU_EXPORT void MergeGPUInfo(GPUInfo* basic_gpu_info, 61 const GPUInfo& context_gpu_info); 62 63 // MergeGPUInfo() when GL driver is used. 64 GPU_EXPORT void MergeGPUInfoGL(GPUInfo* basic_gpu_info, 65 const GPUInfo& context_gpu_info); 66 67 } // namespace gpu 68 69 #endif // GPU_CONFIG_GPU_INFO_COLLECTOR_H_ 70