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

Unified Diff: content/browser/gpu/gpu_data_manager_impl_private.cc

Issue 23703017: Enable GPU control lists in tests on Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more back to prior code on Mac Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.h ('k') | content/public/common/content_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/gpu/gpu_data_manager_impl_private.cc
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
index d48c2fc617eb5dbd8d43c12f5cae38c506f65c34..4872bfd55bb66263570bc471bdd4db88784f2e86 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -320,6 +320,9 @@ void GpuDataManagerImplPrivate::InitializeForTesting(
// This function is for testing only, so disable histograms.
update_histograms_ = false;
+ // Prevent all further initialization.
+ finalized_ = true;
+
InitializeImpl(gpu_blacklist_json, std::string(), std::string(), gpu_info);
}
@@ -533,13 +536,35 @@ void GpuDataManagerImplPrivate::GetGLStrings(std::string* gl_vendor,
void GpuDataManagerImplPrivate::Initialize() {
TRACE_EVENT0("startup", "GpuDataManagerImpl::Initialize");
- CommandLine* command_line = CommandLine::ForCurrentProcess();
- if (command_line->HasSwitch(switches::kSkipGpuDataLoading) &&
- !command_line->HasSwitch(switches::kUseGpuInTests))
+ if (finalized_) {
+ DLOG(INFO) << "GpuDataManagerImpl marked as finalized; skipping Initialize";
+ return;
+ }
+
+ const CommandLine* command_line = CommandLine::ForCurrentProcess();
+ if (command_line->HasSwitch(switches::kSkipGpuDataLoading))
return;
gpu::GPUInfo gpu_info;
- {
+ if (command_line->GetSwitchValueASCII(
+ switches::kUseGL) == gfx::kGLImplementationOSMesaName) {
+ // If using the OSMesa GL implementation, use fake vendor and device ids to
+ // make sure it never gets blacklisted. This is better than simply
+ // cancelling GPUInfo gathering as it allows us to proceed with loading the
+ // blacklist below which may have non-device specific entries we want to
+ // apply anyways (e.g., OS version blacklisting).
+ gpu_info.gpu.vendor_id = 0xffff;
+ gpu_info.gpu.device_id = 0xffff;
+
+ // Hardcode some values otherwise some blacklisting rules in
+ // kSoftwareRenderingListJson result in a positive match as GpuControlList
+ // assumes a match (by design) when a property is required for the
+ // verification yet not present in the GpuInfo.
+ gpu_info.driver_vendor =
+ gfx::kGLImplementationOSMesaName; // Bypass rule #74.
Vangelis Kokkevis 2013/10/08 23:09:48 I think that it would be better to modify the blac
gab 2013/10/09 18:13:02 The problem is that if we leave gpu_info empty, th
+ gpu_info.driver_date = "2013.8"; // Bypass rules #12 and #55.
+ gpu_info.driver_version = "9.0.3"; // Bypass rule #23.
+ } else {
TRACE_EVENT0("startup",
"GpuDataManagerImpl::Initialize:CollectBasicGraphicsInfo");
gpu::CollectBasicGraphicsInfo(&gpu_info);
@@ -973,7 +998,8 @@ GpuDataManagerImplPrivate::GpuDataManagerImplPrivate(
owner_(owner),
display_count_(0),
gpu_process_accessible_(true),
- use_software_compositor_(false) {
+ use_software_compositor_(false),
+ finalized_(false) {
DCHECK(owner_);
CommandLine* command_line = CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kDisableAcceleratedCompositing)) {
@@ -1018,8 +1044,14 @@ void GpuDataManagerImplPrivate::InitializeImpl(
GetContentClient()->GetProduct());
CHECK(!browser_version_string.empty());
+ const bool log_gpu_control_list_decisions =
+ CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kLogGpuControlListDecisions);
+
if (!gpu_blacklist_json.empty()) {
gpu_blacklist_.reset(gpu::GpuBlacklist::Create());
+ if (log_gpu_control_list_decisions)
+ gpu_blacklist_->enable_control_list_logging("gpu_blacklist");
bool success = gpu_blacklist_->LoadList(
browser_version_string, gpu_blacklist_json,
gpu::GpuControlList::kCurrentOsOnly);
@@ -1027,6 +1059,8 @@ void GpuDataManagerImplPrivate::InitializeImpl(
}
if (!gpu_switching_list_json.empty()) {
gpu_switching_list_.reset(gpu::GpuSwitchingList::Create());
+ if (log_gpu_control_list_decisions)
+ gpu_switching_list_->enable_control_list_logging("gpu_switching_list");
bool success = gpu_switching_list_->LoadList(
browser_version_string, gpu_switching_list_json,
gpu::GpuControlList::kCurrentOsOnly);
@@ -1034,6 +1068,8 @@ void GpuDataManagerImplPrivate::InitializeImpl(
}
if (!gpu_driver_bug_list_json.empty()) {
gpu_driver_bug_list_.reset(gpu::GpuDriverBugList::Create());
+ if (log_gpu_control_list_decisions)
+ gpu_driver_bug_list_->enable_control_list_logging("gpu_driver_bug_list");
bool success = gpu_driver_bug_list_->LoadList(
browser_version_string, gpu_driver_bug_list_json,
gpu::GpuControlList::kCurrentOsOnly);
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.h ('k') | content/public/common/content_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698