Add ANGLE backend flag to about:flags
The flag is only available on Windows and offers choices to use the
OpenGL, D3D9 or D3D11 backend.
TEST=manual test on Windows
BUG=chromium:693090
Change-Id: Ia9ce5d58a0658af513b070e564014398f35a243e
Reviewed-on: https://chromium-review.googlesource.com/1202203
Commit-Queue: Olli Etuaho <[email protected]>
Reviewed-by: Kenneth Russell <[email protected]>
Cr-Commit-Position: refs/heads/master@{#589480}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 826d068..909a26c 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -361,6 +361,17 @@
{flag_descriptions::kDefaultTileHeightVenti, switches::kDefaultTileHeight,
"1024"}};
+#if defined(OS_WIN)
+const FeatureEntry::Choice kUseAngleChoices[] = {
+ {flag_descriptions::kUseAngleDefault, "", ""},
+ {flag_descriptions::kUseAngleGL, switches::kUseANGLE,
+ gl::kANGLEImplementationOpenGLName},
+ {flag_descriptions::kUseAngleD3D11, switches::kUseANGLE,
+ gl::kANGLEImplementationD3D11Name},
+ {flag_descriptions::kUseAngleD3D9, switches::kUseANGLE,
+ gl::kANGLEImplementationD3D9Name}};
+#endif
+
#if BUILDFLAG(ENABLE_DICE_SUPPORT)
const FeatureEntry::FeatureParam kAccountConsistencyDice[] = {
{kAccountConsistencyFeatureMethodParameter,
@@ -4436,6 +4447,12 @@
// "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
// Histograms" in tools/metrics/histograms/README.md (run the
// AboutFlagsHistogramTest unit test to verify this process).
+
+#if defined(OS_WIN)
+ {"use-angle", flag_descriptions::kUseAngleName,
+ flag_descriptions::kUseAngleDescription, kOsWin,
+ MULTI_VALUE_TYPE(kUseAngleChoices)},
+#endif
};
class FlagsStateSingleton {
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index eb561be8..1ab1763 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2941,6 +2941,19 @@
"Windows (ETW) and can then be captured by tools such as UIForETW or "
"Xperf.";
+const char kUseAngleName[] = "Choose ANGLE graphics backend";
+const char kUseAngleDescription[] =
+ "Choose the graphics backend for ANGLE. D3D11 is used on most Windows "
+ "computers by default. Using the OpenGL driver as the graphics backend may "
+ "result in higher performance in some graphics-heavy applications, "
+ "particularly on NVIDIA GPUs. It can increase battery and memory usage of "
+ "video playback.";
+
+const char kUseAngleDefault[] = "Default";
+const char kUseAngleGL[] = "OpenGL";
+const char kUseAngleD3D11[] = "D3D11";
+const char kUseAngleD3D9[] = "D3D9";
+
const char kUseWinrtMidiApiName[] = "Use Windows Runtime MIDI API";
const char kUseWinrtMidiApiDescription[] =
"Use Windows Runtime MIDI API for WebMIDI (effective only on Windows 10 or "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index e10c5cef..9b6085f8 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1771,6 +1771,14 @@
extern const char kTraceExportEventsToEtwName[];
extern const char kTraceExportEventsToEtwDesription[];
+extern const char kUseAngleName[];
+extern const char kUseAngleDescription[];
+
+extern const char kUseAngleDefault[];
+extern const char kUseAngleGL[];
+extern const char kUseAngleD3D11[];
+extern const char kUseAngleD3D9[];
+
extern const char kUseWinrtMidiApiName[];
extern const char kUseWinrtMidiApiDescription[];