| Index: gpu/command_buffer/service/feature_info.cc
|
| diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
|
| index fd237c32013bfbac0d0621e0d7cee849319f37b0..8056c158917cd0db577820b65f9556e2ef9f3af3 100644
|
| --- a/gpu/command_buffer/service/feature_info.cc
|
| +++ b/gpu/command_buffer/service/feature_info.cc
|
| @@ -13,7 +13,7 @@
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_split.h"
|
| -#include "gpu/command_buffer/service/gpu_switches.h"
|
| +#include "gpu/command_buffer/service/gpu_preferences.h"
|
| #include "gpu/command_buffer/service/texture_definition.h"
|
| #include "gpu/config/gpu_switches.h"
|
| #include "ui/gl/gl_bindings.h"
|
| @@ -83,14 +83,10 @@ class StringSet {
|
| // Process a string of wordaround type IDs (seperated by ',') and set up
|
| // the corresponding Workaround flags.
|
| void StringToWorkarounds(
|
| - const std::string& types, FeatureInfo::Workarounds* workarounds) {
|
| + const std::set<int>& workaround_set,
|
| + FeatureInfo::Workarounds* workarounds) {
|
| DCHECK(workarounds);
|
| - for (const base::StringPiece& piece :
|
| - base::SplitStringPiece(
|
| - types, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
|
| - int number = 0;
|
| - bool succeed = base::StringToInt(piece, &number);
|
| - DCHECK(succeed);
|
| + for (auto number : workaround_set) {
|
| switch (number) {
|
| #define GPU_OP(type, name) \
|
| case gpu::type: \
|
| @@ -206,33 +202,29 @@ void FeatureInfo::InitializeBasicState(const base::CommandLine* command_line) {
|
| if (!command_line)
|
| return;
|
|
|
| - if (command_line->HasSwitch(switches::kGpuDriverBugWorkarounds)) {
|
| - std::string types = command_line->GetSwitchValueASCII(
|
| - switches::kGpuDriverBugWorkarounds);
|
| - StringToWorkarounds(types, &workarounds_);
|
| - }
|
| + const GpuPreferences* gpu_preferences = GpuPreferences::GetInstance();
|
| +
|
| + StringToWorkarounds(gpu_preferences->gpu_driver_bug_workarounds,
|
| + &workarounds_);
|
| feature_flags_.enable_shader_name_hashing =
|
| - !command_line->HasSwitch(switches::kDisableShaderNameHashing);
|
| + !gpu_preferences->disable_shader_name_hashing;
|
|
|
| feature_flags_.is_swiftshader =
|
| (command_line->GetSwitchValueASCII(switches::kUseGL) == "swiftshader");
|
|
|
| feature_flags_.enable_subscribe_uniform =
|
| - command_line->HasSwitch(switches::kEnableSubscribeUniformExtension);
|
| + gpu_preferences->enable_subscribe_uniform_extension;
|
|
|
| - enable_unsafe_es3_apis_switch_ =
|
| - command_line->HasSwitch(switches::kEnableUnsafeES3APIs);
|
| + enable_unsafe_es3_apis_switch_ = gpu_preferences->enable_unsafe_es3_apis;
|
|
|
| - enable_gl_path_rendering_switch_ =
|
| - command_line->HasSwitch(switches::kEnableGLPathRendering);
|
| + enable_gl_path_rendering_switch_ = gpu_preferences->enable_gl_path_rendering;
|
|
|
| // The shader translator is needed to translate from WebGL-conformant GLES SL
|
| // to normal GLES SL, enforce WebGL conformance, translate from GLES SL 1.0 to
|
| // target context GLSL, implement emulation of OpenGL ES features on OpenGL,
|
| // etc.
|
| // The flag here is for testing only.
|
| - disable_shader_translator_ =
|
| - command_line->HasSwitch(switches::kDisableGLSLTranslator);
|
| + disable_shader_translator_ = gpu_preferences->disable_glsl_translator;
|
|
|
| unsafe_es3_apis_enabled_ = false;
|
|
|
|
|