| Index: gpu/config/gpu_util.cc
|
| diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
|
| index 49eb25b7f1cfb7d1b66f3d17a7a82245e61d82b3..a741aa81b78602b6a3eb8f600ec4ffd84a754259 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,21 @@ void StringToIds(const std::string& str, std::vector<uint32_t>* list) {
|
| }
|
| }
|
|
|
| +bool IsGpuRasterizationEnabled(const std::set<int>& blacklisted_features,
|
| + const base::CommandLine& command_line) {
|
| + if (command_line.HasSwitch(switches::kDisableGpuRasterization))
|
| + return false;
|
| + else if (command_line.HasSwitch(switches::kEnableGpuRasterization))
|
| + return true;
|
| +
|
| + if (blacklisted_features.count(GPU_FEATURE_TYPE_GPU_RASTERIZATION))
|
| + return false;
|
| +
|
| + // Gpu Rasterization on platforms that are not fully enabled is controlled by
|
| + // a finch experiment.
|
| + return base::FeatureList::IsEnabled(features::kDefaultEnableGpuRasterization);
|
| +}
|
| +
|
| } // namespace anonymous
|
|
|
| void ApplyGpuDriverBugWorkarounds(const GPUInfo& gpu_info,
|
| @@ -151,4 +169,21 @@ void InitializeDualGpusIfSupported(
|
| ui::GpuSwitchingManager::GetInstance()->ForceUseOfIntegratedGpu();
|
| }
|
|
|
| +GPUFeatureStatus GetGpuFeatureStatus(const GPUInfo& gpu_info,
|
| + const base::CommandLine& command_line) {
|
| + GPUFeatureStatus feature_status;
|
| + std::unique_ptr<GpuBlacklist> list(GpuBlacklist::Create());
|
| + list->LoadList(kSoftwareRenderingListJson, GpuControlList::kCurrentOsOnly);
|
| + feature_status.blacklisted_features =
|
| + list->MakeDecision(GpuControlList::kOsAny, std::string(), gpu_info);
|
| +
|
| + // Currently only used for GPU rasterization.
|
| + if (IsGpuRasterizationEnabled(feature_status.blacklisted_features,
|
| + command_line)) {
|
| + feature_status.enabled_features.insert(GPU_FEATURE_TYPE_GPU_RASTERIZATION);
|
| + }
|
| +
|
| + return feature_status;
|
| +}
|
| +
|
| } // namespace gpu
|
|
|