Chromium Code Reviews| Index: gpu/config/gpu_util.cc |
| diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc |
| index 49eb25b7f1cfb7d1b66f3d17a7a82245e61d82b3..b50fca7bf44170076da7eb6ee468ae71704d5aab 100644 |
| --- a/gpu/config/gpu_util.cc |
| +++ b/gpu/config/gpu_util.cc |
| @@ -12,8 +12,11 @@ |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_split.h" |
| #include "base/strings/string_util.h" |
| +#include "gpu/config/gpu_blacklist.h" |
| #include "gpu/config/gpu_control_list_jsons.h" |
| #include "gpu/config/gpu_driver_bug_list.h" |
| +#include "gpu/config/gpu_feature_type.h" |
| +#include "gpu/config/gpu_features.h" |
| #include "gpu/config/gpu_info_collector.h" |
| #include "gpu/config/gpu_switches.h" |
| #include "ui/gl/gl_switches.h" |
| @@ -59,6 +62,25 @@ void StringToIds(const std::string& str, std::vector<uint32_t>* list) { |
| } |
| } |
| +GpuFeatureStatus GetGpuRasterizationFeatureStatus( |
| + const std::set<int>& blacklisted_features, |
| + const base::CommandLine& command_line) { |
| + if (command_line.HasSwitch(switches::kDisableGpuRasterization)) |
| + return kGpuFeatureStatusDisabled; |
| + else if (command_line.HasSwitch(switches::kEnableGpuRasterization)) |
| + return kGpuFeatureStatusEnabled; |
| + |
| + if (blacklisted_features.count(GPU_FEATURE_TYPE_GPU_RASTERIZATION)) |
| + return kGpuFeatureStatusBlacklisted; |
| + |
| + // Gpu Rasterization on platforms that are not fully enabled is controlled by |
| + // a finch experiment. |
| + if (!base::FeatureList::IsEnabled(features::kDefaultEnableGpuRasterization)) |
| + return kGpuFeatureStatusDisabled; |
| + |
| + return kGpuFeatureStatusEnabled; |
| +} |
| + |
| } // namespace anonymous |
| void ApplyGpuDriverBugWorkarounds(const GPUInfo& gpu_info, |
| @@ -151,4 +173,22 @@ void InitializeDualGpusIfSupported( |
| ui::GpuSwitchingManager::GetInstance()->ForceUseOfIntegratedGpu(); |
| } |
| +GpuFeatureInfo GetGpuFeatureInfo(const GPUInfo& gpu_info, |
| + const base::CommandLine& command_line) { |
|
Zhenyao Mo
2017/02/03 23:57:32
Can we DCHECK it's either in-process gpu mode or i
ericrk
2017/02/06 19:51:38
I did a bit of searching and I couldn't find a goo
|
| + GpuFeatureInfo gpu_feature_info; |
| + std::set<int> blacklisted_features; |
| + if (!command_line.HasSwitch(switches::kIgnoreGpuBlacklist)) { |
| + std::unique_ptr<GpuBlacklist> list(GpuBlacklist::Create()); |
| + list->LoadList(kSoftwareRenderingListJson, GpuControlList::kCurrentOsOnly); |
| + blacklisted_features = |
| + list->MakeDecision(GpuControlList::kOsAny, std::string(), gpu_info); |
| + } |
| + |
| + // Currently only used for GPU rasterization. |
| + gpu_feature_info.status_values[GPU_FEATURE_TYPE_GPU_RASTERIZATION] = |
| + GetGpuRasterizationFeatureStatus(blacklisted_features, command_line); |
| + |
| + return gpu_feature_info; |
| +} |
| + |
| } // namespace gpu |