Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(366)

Side by Side Diff: chrome/browser/gpu/gl_string_manager.cc

Issue 1547793004: Make gpu black list work again on Linux (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gpu/gl_string_manager.h" 5 #include "chrome/browser/gpu/gl_string_manager.h"
6 6
7 #include "base/command_line.h"
7 #include "base/prefs/pref_registry_simple.h" 8 #include "base/prefs/pref_registry_simple.h"
8 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
9 #include "build/build_config.h" 10 #include "build/build_config.h"
10 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
11 #include "chrome/common/pref_names.h" 12 #include "chrome/common/pref_names.h"
12 #include "content/public/browser/gpu_data_manager.h" 13 #include "content/public/browser/gpu_data_manager.h"
14 #include "ui/gl/gl_switches.h"
13 15
14 // static 16 // static
15 void GLStringManager::RegisterPrefs(PrefRegistrySimple* registry) { 17 void GLStringManager::RegisterPrefs(PrefRegistrySimple* registry) {
16 registry->RegisterStringPref(prefs::kGLVendorString, std::string()); 18 registry->RegisterStringPref(prefs::kGLVendorString, std::string());
17 registry->RegisterStringPref(prefs::kGLRendererString, std::string()); 19 registry->RegisterStringPref(prefs::kGLRendererString, std::string());
18 registry->RegisterStringPref(prefs::kGLVersionString, std::string()); 20 registry->RegisterStringPref(prefs::kGLVersionString, std::string());
19 } 21 }
20 22
21 GLStringManager::GLStringManager() { 23 GLStringManager::GLStringManager() {
22 } 24 }
23 25
24 GLStringManager::~GLStringManager() { 26 GLStringManager::~GLStringManager() {
25 } 27 }
26 28
27 void GLStringManager::Initialize() { 29 void GLStringManager::Initialize() {
28 // On MacOSX or Windows, preliminary GPUInfo is enough. 30 // On MacOSX or Windows, preliminary GPUInfo is enough.
29 #if defined(OS_LINUX) 31 #if defined(OS_LINUX)
30 // We never remove this observer from GpuDataManager. 32 // We never remove this observer from GpuDataManager.
31 content::GpuDataManager::GetInstance()->AddObserver(this); 33 content::GpuDataManager::GetInstance()->AddObserver(this);
32 34
33 PrefService* local_state = g_browser_process->local_state(); 35 PrefService* local_state = g_browser_process->local_state();
34 if (!local_state) 36 if (!local_state)
35 return; 37 return;
36 38
37 gl_vendor_ = local_state->GetString(prefs::kGLVendorString); 39 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
38 gl_renderer_ = local_state->GetString(prefs::kGLRendererString); 40
39 gl_version_ = local_state->GetString(prefs::kGLVersionString); 41 if (command_line->HasSwitch(switches::kGLVendorString))
42 gl_vendor_ = command_line->GetSwitchValueASCII(switches::kGLVendorString);
43 else
44 gl_vendor_ = local_state->GetString(prefs::kGLVendorString);
45
46 if (command_line->HasSwitch(switches::kGLRendererString))
47 gl_renderer_ =
48 command_line->GetSwitchValueASCII(switches::kGLRendererString);
49 else
50 gl_renderer_ = local_state->GetString(prefs::kGLRendererString);
51
52 if (command_line->HasSwitch(switches::kGLVersionString))
53 gl_version_ = command_line->GetSwitchValueASCII(switches::kGLVersionString);
54 else
55 gl_version_ = local_state->GetString(prefs::kGLVersionString);
40 56
41 if (!gl_vendor_.empty() || !gl_renderer_.empty() || !gl_version_.empty()) { 57 if (!gl_vendor_.empty() || !gl_renderer_.empty() || !gl_version_.empty()) {
58 DCHECK(content::GpuDataManager::GetInstance()->IsInitialized());
42 content::GpuDataManager::GetInstance()->SetGLStrings( 59 content::GpuDataManager::GetInstance()->SetGLStrings(
43 gl_vendor_, gl_renderer_, gl_version_); 60 gl_vendor_, gl_renderer_, gl_version_);
44 } 61 }
45 #endif 62 #endif
46 } 63 }
47 64
48 void GLStringManager::OnGpuInfoUpdate() { 65 void GLStringManager::OnGpuInfoUpdate() {
49 std::string gl_vendor, gl_renderer, gl_version; 66 std::string gl_vendor, gl_renderer, gl_version;
50 content::GpuDataManager::GetInstance()->GetGLStrings( 67 content::GpuDataManager::GetInstance()->GetGLStrings(
51 &gl_vendor, &gl_renderer, &gl_version); 68 &gl_vendor, &gl_renderer, &gl_version);
52 69
53 PrefService* local_state = g_browser_process->local_state(); 70 PrefService* local_state = g_browser_process->local_state();
54 if (!local_state) 71 if (!local_state)
55 return; 72 return;
56 73
74 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
75
57 if (!gl_vendor.empty() && gl_vendor != gl_vendor_) { 76 if (!gl_vendor.empty() && gl_vendor != gl_vendor_) {
58 gl_vendor_ = gl_vendor; 77 gl_vendor_ = gl_vendor;
59 local_state->SetString(prefs::kGLVendorString, gl_vendor_); 78 if (!command_line->HasSwitch(switches::kGLVendorString))
79 local_state->SetString(prefs::kGLVendorString, gl_vendor_);
60 } 80 }
61 if (!gl_renderer.empty() && gl_renderer != gl_renderer_) { 81 if (!gl_renderer.empty() && gl_renderer != gl_renderer_) {
62 gl_renderer_ = gl_renderer; 82 gl_renderer_ = gl_renderer;
63 local_state->SetString(prefs::kGLRendererString, gl_renderer_); 83 if (!command_line->HasSwitch(switches::kGLRendererString))
84 local_state->SetString(prefs::kGLRendererString, gl_renderer_);
64 } 85 }
65 if (!gl_version.empty() && gl_version != gl_version_) { 86 if (!gl_version.empty() && gl_version != gl_version_) {
66 gl_version_ = gl_version; 87 gl_version_ = gl_version;
67 local_state->SetString(prefs::kGLVersionString, gl_version_); 88 if (!command_line->HasSwitch(switches::kGLVersionString))
89 local_state->SetString(prefs::kGLVersionString, gl_version_);
68 } 90 }
69 } 91 }
70 92
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698