gpu: Add finch param to blacklist SurfaceControl on specific builds.
[email protected]
Bug: 948946
Change-Id: I7ca2f7cbc7e9772a36e699908684b8356daee6dd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1548444
Commit-Queue: Khushal <[email protected]>
Auto-Submit: Khushal <[email protected]>
Reviewed-by: Eric Karl <[email protected]>
Cr-Commit-Position: refs/heads/master@{#647942}
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
index e597994..5ca2706 100644
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -4,10 +4,30 @@
#include "gpu/config/gpu_finch_features.h"
#if defined(OS_ANDROID)
+#include "base/android/build_info.h"
+#include "base/metrics/field_trial_params.h"
+#include "base/strings/string_split.h"
#include "ui/gl/android/android_surface_control_compat.h"
#endif
namespace features {
+namespace {
+
+#if defined(OS_ANDROID)
+bool FieldIsInBlacklist(const char* current_value, std::string blacklist_str) {
+ std::vector<std::string> blacklist = base::SplitString(
+ blacklist_str, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+ for (const std::string& value : blacklist) {
+ if (value == current_value)
+ return true;
+ }
+
+ return false;
+}
+#endif
+
+} // namespace
+
#if defined(OS_ANDROID)
// Use android AImageReader when playing videos with MediaPlayer.
const base::Feature kAImageReaderMediaPlayer{"AImageReaderMediaPlayer",
@@ -80,8 +100,26 @@
#if defined(OS_ANDROID)
bool IsAndroidSurfaceControlEnabled() {
- return base::FeatureList::IsEnabled(kAndroidSurfaceControl) &&
- gl::SurfaceControl::IsSupported();
+ if (!gl::SurfaceControl::IsSupported())
+ return false;
+
+ if (!base::FeatureList::IsEnabled(kAndroidSurfaceControl))
+ return false;
+
+ if (FieldIsInBlacklist(base::android::BuildInfo::GetInstance()->model(),
+ base::GetFieldTrialParamValueByFeature(
+ kAndroidSurfaceControl, "blacklisted_models"))) {
+ return false;
+ }
+
+ if (FieldIsInBlacklist(
+ base::android::BuildInfo::GetInstance()->android_build_id(),
+ base::GetFieldTrialParamValueByFeature(kAndroidSurfaceControl,
+ "blacklisted_build_ids"))) {
+ return false;
+ }
+
+ return true;
}
#endif