Index: content/gpu/gpu_info_collector.cc |
=================================================================== |
--- content/gpu/gpu_info_collector.cc (revision 201645) |
+++ content/gpu/gpu_info_collector.cc (working copy) |
@@ -1,140 +0,0 @@ |
-// 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. |
- |
-#include "content/gpu/gpu_info_collector.h" |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/debug/trace_event.h" |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/string_number_conversions.h" |
-#include "base/strings/string_piece.h" |
-#include "base/strings/string_split.h" |
-#include "ui/gl/gl_bindings.h" |
-#include "ui/gl/gl_context.h" |
-#include "ui/gl/gl_surface.h" |
- |
-namespace { |
- |
-scoped_refptr<gfx::GLSurface> InitializeGLSurface() { |
- scoped_refptr<gfx::GLSurface> surface( |
- gfx::GLSurface::CreateOffscreenGLSurface(false, gfx::Size(1, 1))); |
- if (!surface) { |
- LOG(ERROR) << "gfx::GLContext::CreateOffscreenGLSurface failed"; |
- return NULL; |
- } |
- |
- return surface; |
-} |
- |
-scoped_refptr<gfx::GLContext> InitializeGLContext(gfx::GLSurface* surface) { |
- |
- scoped_refptr<gfx::GLContext> context( |
- gfx::GLContext::CreateGLContext(NULL, |
- surface, |
- gfx::PreferIntegratedGpu)); |
- if (!context) { |
- LOG(ERROR) << "gfx::GLContext::CreateGLContext failed"; |
- return NULL; |
- } |
- |
- if (!context->MakeCurrent(surface)) { |
- LOG(ERROR) << "gfx::GLContext::MakeCurrent() failed"; |
- return NULL; |
- } |
- |
- return context; |
-} |
- |
-std::string GetGLString(unsigned int pname) { |
- const char* gl_string = |
- reinterpret_cast<const char*>(glGetString(pname)); |
- if (gl_string) |
- return std::string(gl_string); |
- return std::string(); |
-} |
- |
-// Return a version string in the format of "major.minor". |
-std::string GetVersionFromString(const std::string& version_string) { |
- size_t begin = version_string.find_first_of("0123456789"); |
- if (begin != std::string::npos) { |
- size_t end = version_string.find_first_not_of("01234567890.", begin); |
- std::string sub_string; |
- if (end != std::string::npos) |
- sub_string = version_string.substr(begin, end - begin); |
- else |
- sub_string = version_string.substr(begin); |
- std::vector<std::string> pieces; |
- base::SplitString(sub_string, '.', &pieces); |
- if (pieces.size() >= 2) |
- return pieces[0] + "." + pieces[1]; |
- } |
- return std::string(); |
-} |
- |
-} // namespace anonymous |
- |
-namespace gpu_info_collector { |
- |
-bool CollectGraphicsInfoGL(content::GPUInfo* gpu_info) { |
- TRACE_EVENT0("startup", "gpu_info_collector::CollectGraphicsInfoGL"); |
- if (!gfx::GLSurface::InitializeOneOff()) { |
- LOG(ERROR) << "gfx::GLSurface::InitializeOneOff() failed"; |
- return false; |
- } |
- |
- scoped_refptr<gfx::GLSurface> surface(InitializeGLSurface()); |
- if (!surface) |
- return false; |
- |
- scoped_refptr<gfx::GLContext> context(InitializeGLContext(surface.get())); |
- if (!context) |
- return false; |
- |
- gpu_info->gl_renderer = GetGLString(GL_RENDERER); |
- gpu_info->gl_vendor = GetGLString(GL_VENDOR); |
- gpu_info->gl_extensions = GetGLString(GL_EXTENSIONS); |
- gpu_info->gl_version_string = GetGLString(GL_VERSION); |
- std::string glsl_version_string = GetGLString(GL_SHADING_LANGUAGE_VERSION); |
- // TODO(kbr): remove once the destruction of a current context automatically |
- // clears the current context. |
- context->ReleaseCurrent(surface.get()); |
- |
- gpu_info->gl_version = GetVersionFromString(gpu_info->gl_version_string); |
- std::string glsl_version = GetVersionFromString(glsl_version_string); |
- gpu_info->pixel_shader_version = glsl_version; |
- gpu_info->vertex_shader_version = glsl_version; |
- |
- return CollectDriverInfoGL(gpu_info); |
-} |
- |
-void MergeGPUInfoGL(content::GPUInfo* basic_gpu_info, |
- const content::GPUInfo& context_gpu_info) { |
- DCHECK(basic_gpu_info); |
- basic_gpu_info->gl_renderer = context_gpu_info.gl_renderer; |
- basic_gpu_info->gl_vendor = context_gpu_info.gl_vendor; |
- basic_gpu_info->gl_version_string = context_gpu_info.gl_version_string; |
- basic_gpu_info->gl_extensions = context_gpu_info.gl_extensions; |
- basic_gpu_info->gl_version = context_gpu_info.gl_version; |
- basic_gpu_info->pixel_shader_version = |
- context_gpu_info.pixel_shader_version; |
- basic_gpu_info->vertex_shader_version = |
- context_gpu_info.vertex_shader_version; |
- |
- if (!context_gpu_info.driver_vendor.empty()) |
- basic_gpu_info->driver_vendor = context_gpu_info.driver_vendor; |
- if (!context_gpu_info.driver_version.empty()) |
- basic_gpu_info->driver_version = context_gpu_info.driver_version; |
- |
- basic_gpu_info->can_lose_context = context_gpu_info.can_lose_context; |
- basic_gpu_info->sandboxed = context_gpu_info.sandboxed; |
- basic_gpu_info->gpu_accessible = context_gpu_info.gpu_accessible; |
- basic_gpu_info->finalized = context_gpu_info.finalized; |
- basic_gpu_info->initialization_time = context_gpu_info.initialization_time; |
-} |
- |
-} // namespace gpu_info_collector |
- |