summaryrefslogtreecommitdiffstats
path: root/gpu/config
diff options
context:
space:
mode:
authorgab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-10 19:59:57 +0000
committergab@chromium.org <gab@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-10 19:59:57 +0000
commitad15e527d974aa222677e2ebe80b320ba0fd4803 (patch)
treed3cb6e9325b04a35bb7e19879f9755d9961b7cbb /gpu/config
parent55398d2c62c998c1665451cd1046d41f1238b0b2 (diff)
downloadchromium_src-ad15e527d974aa222677e2ebe80b320ba0fd4803.zip
chromium_src-ad15e527d974aa222677e2ebe80b320ba0fd4803.tar.gz
chromium_src-ad15e527d974aa222677e2ebe80b320ba0fd4803.tar.bz2
Enable GPU control lists in tests.
Reland of https://codereview.chromium.org/23534006/ (see that and the bug for more details). Also adding INFO-level logging to spell out each control list rule being applied on the bots (makes debugging and understanding failures much easier). R=piman@chromium.org TBR=jcivelli, piman, zmo BUG=295799, 304833 Previously Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=224810 Reverted: https://src.chromium.org/viewvc/chrome?view=rev&revision=224845 Review URL: https://codereview.chromium.org/23703017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227977 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/config')
-rw-r--r--gpu/config/gpu_control_list.cc14
-rw-r--r--gpu/config/gpu_control_list.h15
-rw-r--r--gpu/config/software_rendering_list_json.cc42
3 files changed, 66 insertions, 5 deletions
diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
index 1d45d72..0c645b5 100644
--- a/gpu/config/gpu_control_list.cc
+++ b/gpu/config/gpu_control_list.cc
@@ -10,6 +10,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
#include "base/sys_info.h"
#include "gpu/config/gpu_info.h"
#include "gpu/config/gpu_util.h"
@@ -1030,6 +1031,14 @@ GpuControlList::GpuControlListEntry::StringToMultiGpuCategory(
return kMultiGpuCategoryNone;
}
+void GpuControlList::GpuControlListEntry::LogControlListMatch(
+ const std::string& control_list_logging_name) const {
+ static const char kControlListMatchMessage[] =
+ "Control list match for rule #%u in %s.";
+ LOG(INFO) << base::StringPrintf(kControlListMatchMessage, id_,
+ control_list_logging_name.c_str());
+}
+
bool GpuControlList::GpuControlListEntry::Contains(
OsType os_type, const std::string& os_version,
const GPUInfo& gpu_info) const {
@@ -1185,7 +1194,8 @@ bool GpuControlList::GpuControlListEntry::StringToFeature(
GpuControlList::GpuControlList()
: max_entry_id_(0),
needs_more_info_(false),
- supports_feature_type_all_(false) {
+ supports_feature_type_all_(false),
+ control_list_logging_enabled_(false) {
}
GpuControlList::~GpuControlList() {
@@ -1292,6 +1302,8 @@ std::set<int> GpuControlList::MakeDecision(
for (size_t i = 0; i < entries_.size(); ++i) {
if (entries_[i]->Contains(os, os_version, gpu_info)) {
if (!entries_[i]->disabled()) {
+ if (control_list_logging_enabled_)
+ entries_[i]->LogControlListMatch(control_list_logging_name_);
MergeFeatureSets(&possible_features, entries_[i]->features());
if (!entries_[i]->NeedsMoreInfo(gpu_info))
MergeFeatureSets(&features, entries_[i]->features());
diff --git a/gpu/config/gpu_control_list.h b/gpu/config/gpu_control_list.h
index ced3b52..29a5f77 100644
--- a/gpu/config/gpu_control_list.h
+++ b/gpu/config/gpu_control_list.h
@@ -93,6 +93,13 @@ class GPU_EXPORT GpuControlList {
// Register whether "all" is recognized as all features.
void set_supports_feature_type_all(bool supported);
+ // Enables logging of control list decisions.
+ void enable_control_list_logging(
+ const std::string& control_list_logging_name) {
+ control_list_logging_enabled_ = true;
+ control_list_logging_name_ = control_list_logging_name;
+ }
+
private:
friend class GpuControlListEntryTest;
friend class MachineModelInfoTest;
@@ -289,6 +296,11 @@ class GPU_EXPORT GpuControlList {
const FeatureMap& feature_map,
bool supports_feature_type_all);
+ // Logs a control list match for this rule in the list identified by
+ // |control_list_logging_name|.
+ void LogControlListMatch(
+ const std::string& control_list_logging_name) const;
+
// Determines if a given os/gc/machine_model/driver is included in the
// Entry set.
bool Contains(OsType os_type, const std::string& os_version,
@@ -479,6 +491,9 @@ class GPU_EXPORT GpuControlList {
// The features a GpuControlList recognizes and handles.
FeatureMap feature_map_;
bool supports_feature_type_all_;
+
+ bool control_list_logging_enabled_;
+ std::string control_list_logging_name_;
};
} // namespace gpu
diff --git a/gpu/config/software_rendering_list_json.cc b/gpu/config/software_rendering_list_json.cc
index 5256740..7ea63b3 100644
--- a/gpu/config/software_rendering_list_json.cc
+++ b/gpu/config/software_rendering_list_json.cc
@@ -18,7 +18,7 @@ const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
{
"name": "software rendering list",
// Please update the version number whenever you change this file.
- "version": "6.11",
+ "version": "6.12",
"entries": [
{
"id": 1,
@@ -138,6 +138,12 @@ const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
"op": ">=",
"value": "7.15.10.1624"
}
+ },
+ {
+ "driver_vendor": {
+ "op": "=",
+ "value": "osmesa"
+ }
}
],
"features": [
@@ -329,6 +335,14 @@ const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
"op": "<",
"value": "7.11"
},
+ "exceptions": [
+ {
+ "driver_vendor": {
+ "op": "=",
+ "value": "osmesa"
+ }
+ }
+ ],
"features": [
"all"
]
@@ -761,6 +775,12 @@ const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
"op": ">=",
"value": "7.15.10.1624"
}
+ },
+ {
+ "driver_vendor": {
+ "op": "=",
+ "value": "osmesa"
+ }
}
],
"features": [
@@ -1064,6 +1084,8 @@ const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
"all"
]
},
+) // String split to avoid MSVC char limit.
+LONG_STRING_CONST(
{
"id": 75,
"description": "Texture sharing not supported on AMD Switchable GPUs due to driver issues",
@@ -1076,8 +1098,6 @@ const char kSoftwareRenderingListJson[] = LONG_STRING_CONST(
"texture_sharing"
]
},
-) // String split to avoid MSVC char limit.
-LONG_STRING_CONST(
{
"id": 76,
"description": "WebGL is disabled on Android unless GPU reset notification is supported",
@@ -1129,6 +1149,21 @@ LONG_STRING_CONST(
"features": [
"accelerated_video_decode"
]
+ },
+ {
+ "id": 79,
+ "description": "Disable force compositing mode on all Windows versions prior to Vista.",
+ "cr_bugs": [273920],
+ "os": {
+ "type": "win",
+ "version": {
+ "op": "<",
+ "value": "6.0"
+ }
+ },
+ "features": [
+ "force_compositing_mode"
+ ]
}
]
}
@@ -1136,4 +1171,3 @@ LONG_STRING_CONST(
); // LONG_STRING_CONST macro
} // namespace gpu
-