 Chromium Code Reviews
 Chromium Code Reviews Issue 2654993004:
  Move GPU blacklist calculation to GPU proc  (Closed)
    
  
    Issue 2654993004:
  Move GPU blacklist calculation to GPU proc  (Closed) 
  | Index: content/browser/gpu/gpu_data_manager_impl_private.cc | 
| diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc | 
| index e9d5277fa2e2550547ebdc9ab6d6518c9fcb83b1..2bb33b58f1b7a774c1d60034b51e712425a086df 100644 | 
| --- a/content/browser/gpu/gpu_data_manager_impl_private.cc | 
| +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc | 
| @@ -61,13 +61,6 @@ namespace content { | 
| namespace { | 
| -enum GpuFeatureStatus { | 
| - kGpuFeatureEnabled = 0, | 
| - kGpuFeatureBlacklisted = 1, | 
| - kGpuFeatureDisabled = 2, // disabled by user but not blacklisted | 
| - kGpuFeatureNumStatus | 
| -}; | 
| - | 
| #if defined(OS_WIN) | 
| enum WinSubVersion { | 
| @@ -82,7 +75,7 @@ enum WinSubVersion { | 
| kNumWinSubVersions | 
| }; | 
| -int GetGpuBlacklistHistogramValueWin(GpuFeatureStatus status) { | 
| +int GetGpuBlacklistHistogramValueWin(gpu::GpuFeatureStatus status) { | 
| static WinSubVersion sub_version = kNumWinSubVersions; | 
| if (sub_version == kNumWinSubVersions) { | 
| sub_version = kWinOthers; | 
| @@ -110,17 +103,17 @@ int GetGpuBlacklistHistogramValueWin(GpuFeatureStatus status) { | 
| break; | 
| } | 
| } | 
| - int entry_index = static_cast<int>(sub_version) * kGpuFeatureNumStatus; | 
| + int entry_index = static_cast<int>(sub_version) * gpu::kGpuFeatureStatusMax; | 
| switch (status) { | 
| - case kGpuFeatureEnabled: | 
| + case gpu::kGpuFeatureStatusEnabled: | 
| break; | 
| - case kGpuFeatureBlacklisted: | 
| + case gpu::kGpuFeatureStatusBlacklisted: | 
| entry_index++; | 
| break; | 
| - case kGpuFeatureDisabled: | 
| + case gpu::kGpuFeatureStatusDisabled: | 
| entry_index += 2; | 
| break; | 
| - case kGpuFeatureNumStatus: | 
| + case gpu::kGpuFeatureStatusMax: | 
| NOTREACHED(); | 
| break; | 
| } | 
| @@ -201,21 +194,21 @@ void UpdateStats(const gpu::GPUInfo& gpu_info, | 
| for (size_t i = 0; i < kNumFeatures; ++i) { | 
| // We can't use UMA_HISTOGRAM_ENUMERATION here because the same name is | 
| // expected if the macro is used within a loop. | 
| - GpuFeatureStatus value = kGpuFeatureEnabled; | 
| + gpu::GpuFeatureStatus value = gpu::kGpuFeatureStatusEnabled; | 
| if (blacklisted_features.count(kGpuFeatures[i])) | 
| - value = kGpuFeatureBlacklisted; | 
| + value = gpu::kGpuFeatureStatusBlacklisted; | 
| else if (kGpuFeatureUserFlags[i]) | 
| - value = kGpuFeatureDisabled; | 
| + value = gpu::kGpuFeatureStatusDisabled; | 
| base::HistogramBase* histogram_pointer = base::LinearHistogram::FactoryGet( | 
| - kGpuBlacklistFeatureHistogramNames[i], | 
| - 1, kGpuFeatureNumStatus, kGpuFeatureNumStatus + 1, | 
| + kGpuBlacklistFeatureHistogramNames[i], 1, gpu::kGpuFeatureStatusMax, | 
| + gpu::kGpuFeatureStatusMax + 1, | 
| base::HistogramBase::kUmaTargetedHistogramFlag); | 
| histogram_pointer->Add(value); | 
| #if defined(OS_WIN) | 
| histogram_pointer = base::LinearHistogram::FactoryGet( | 
| - kGpuBlacklistFeatureHistogramNamesWin[i], | 
| - 1, kNumWinSubVersions * kGpuFeatureNumStatus, | 
| - kNumWinSubVersions * kGpuFeatureNumStatus + 1, | 
| + kGpuBlacklistFeatureHistogramNamesWin[i], 1, | 
| + kNumWinSubVersions * gpu::kGpuFeatureStatusMax, | 
| + kNumWinSubVersions * gpu::kGpuFeatureStatusMax + 1, | 
| base::HistogramBase::kUmaTargetedHistogramFlag); | 
| histogram_pointer->Add(GetGpuBlacklistHistogramValueWin(value)); | 
| #endif | 
| @@ -309,6 +302,13 @@ bool GpuDataManagerImplPrivate::IsFeatureBlacklisted(int feature) const { | 
| return (blacklisted_features_.count(feature) == 1); | 
| } | 
| +bool GpuDataManagerImplPrivate::IsFeatureEnabled(int feature) const { | 
| 
Zhenyao Mo
2017/02/03 23:57:32
What is the design for the situation if this is ca
 
ericrk
2017/02/06 19:51:38
makes sense - added disabled.
 | 
| + DCHECK_EQ(feature, gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION); | 
| + return gpu_feature_info_ | 
| 
ericrk
2017/01/30 15:41:24
We could also put an IsFeatureEnabled on GpuFeatur
 
Zhenyao Mo
2017/02/03 23:57:32
Sounds good.
 | 
| + .status_values[gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION] == | 
| + gpu::kGpuFeatureStatusEnabled; | 
| +} | 
| + | 
| bool GpuDataManagerImplPrivate::IsDriverBugWorkaroundActive(int feature) const { | 
| return (gpu_driver_bugs_.count(feature) == 1); | 
| } | 
| @@ -682,6 +682,11 @@ void GpuDataManagerImplPrivate::UpdateGpuInfo(const gpu::GPUInfo& gpu_info) { | 
| UpdateGpuInfoHelper(); | 
| } | 
| +void GpuDataManagerImplPrivate::UpdateGpuFeatureInfo( | 
| + const gpu::GpuFeatureInfo& gpu_feature_info) { | 
| + gpu_feature_info_ = gpu_feature_info; | 
| +} | 
| + | 
| void GpuDataManagerImplPrivate::UpdateVideoMemoryUsageStats( | 
| const gpu::VideoMemoryUsageStats& video_memory_usage_stats) { | 
| GpuDataManagerImpl::UnlockedSession session(owner_); |