128 lines
4.6 KiB
Diff
128 lines
4.6 KiB
Diff
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|
Date: Tue, 5 May 2020 07:22:20 +0200
|
|
Subject: Revert "gpu/android: Remove setup for disabling AImageReader."
|
|
|
|
This reverts commit dcd5a39518246eb999f1cc63bf1ec95d93fd5b2f.
|
|
---
|
|
base/android/android_image_reader_compat.cc | 8 +++++++-
|
|
base/android/android_image_reader_compat.h | 4 ++++
|
|
gpu/config/gpu_util.cc | 8 ++++++++
|
|
gpu/config/gpu_workaround_list.txt | 1 +
|
|
gpu/ipc/service/gpu_init.cc | 11 +++++++++++
|
|
5 files changed, 31 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc
|
|
--- a/base/android/android_image_reader_compat.cc
|
|
+++ b/base/android/android_image_reader_compat.cc
|
|
@@ -23,6 +23,8 @@
|
|
namespace base {
|
|
namespace android {
|
|
|
|
+bool AndroidImageReader::disable_support_ = false;
|
|
+
|
|
AndroidImageReader& AndroidImageReader::GetInstance() {
|
|
// C++11 static local variable initialization is
|
|
// thread-safe.
|
|
@@ -30,8 +32,12 @@ AndroidImageReader& AndroidImageReader::GetInstance() {
|
|
return *instance;
|
|
}
|
|
|
|
+void AndroidImageReader::DisableSupport() {
|
|
+ disable_support_ = true;
|
|
+}
|
|
+
|
|
bool AndroidImageReader::IsSupported() {
|
|
- return is_supported_;
|
|
+ return !disable_support_ && is_supported_;
|
|
}
|
|
|
|
// static
|
|
diff --git a/base/android/android_image_reader_compat.h b/base/android/android_image_reader_compat.h
|
|
--- a/base/android/android_image_reader_compat.h
|
|
+++ b/base/android/android_image_reader_compat.h
|
|
@@ -22,6 +22,9 @@ class BASE_EXPORT AndroidImageReader {
|
|
// Thread safe GetInstance.
|
|
static AndroidImageReader& GetInstance();
|
|
|
|
+ // Disable image reader support.
|
|
+ static void DisableSupport();
|
|
+
|
|
// Check if the image reader usage is supported. This function returns TRUE
|
|
// if android version is >=OREO, image reader support is not disabled and all
|
|
// the required functions are loaded.
|
|
@@ -64,6 +67,7 @@ class BASE_EXPORT AndroidImageReader {
|
|
jobject ANativeWindow_toSurface(JNIEnv* env, ANativeWindow* window);
|
|
|
|
private:
|
|
+ static bool disable_support_;
|
|
friend class base::NoDestructor<AndroidImageReader>;
|
|
|
|
AndroidImageReader();
|
|
diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
|
|
--- a/gpu/config/gpu_util.cc
|
|
+++ b/gpu/config/gpu_util.cc
|
|
@@ -111,6 +111,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
|
|
#if !defined(OS_ANDROID)
|
|
return kGpuFeatureStatusDisabled;
|
|
#else
|
|
+ if (blocklisted_features.count(GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL))
|
|
+ return kGpuFeatureStatusBlocklisted;
|
|
+
|
|
if (!gpu_preferences.enable_android_surface_control)
|
|
return kGpuFeatureStatusDisabled;
|
|
|
|
@@ -374,6 +377,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
|
|
gpu_feature_info->status_values[GPU_FEATURE_TYPE_ACCELERATED_WEBGL2] =
|
|
kGpuFeatureStatusBlocklisted;
|
|
}
|
|
+
|
|
+ if (gpu_feature_info->IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
|
|
+ gpu_feature_info->status_values[GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL] =
|
|
+ kGpuFeatureStatusBlocklisted;
|
|
+ }
|
|
}
|
|
|
|
// Estimates roughly user total disk space by counting in the drives where
|
|
diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list.txt
|
|
--- a/gpu/config/gpu_workaround_list.txt
|
|
+++ b/gpu/config/gpu_workaround_list.txt
|
|
@@ -13,6 +13,7 @@ decode_encode_srgb_for_generatemipmap
|
|
depth_stencil_renderbuffer_resize_emulation
|
|
disable_2d_canvas_auto_flush
|
|
disable_accelerated_av1_decode
|
|
+disable_aimagereader
|
|
disable_accelerated_vp8_decode
|
|
disable_accelerated_vp8_encode
|
|
disable_accelerated_vp9_decode
|
|
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
|
|
--- a/gpu/ipc/service/gpu_init.cc
|
|
+++ b/gpu/ipc/service/gpu_init.cc
|
|
@@ -727,6 +727,12 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
|
|
AdjustInfoToSwiftShader();
|
|
}
|
|
|
|
+#if defined(OS_ANDROID)
|
|
+ // Disable AImageReader if the workaround is enabled.
|
|
+ if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
|
|
+ base::android::AndroidImageReader::DisableSupport();
|
|
+ }
|
|
+#endif
|
|
#if defined(USE_OZONE)
|
|
if (features::IsUsingOzonePlatform()) {
|
|
const std::vector<gfx::BufferFormat>
|
|
@@ -746,6 +752,11 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
|
|
gl::DirectCompositionSurfaceWin::DisableDecodeSwapChain();
|
|
#endif
|
|
|
|
+ // Disable AImageReader if the workaround is enabled.
|
|
+ if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
|
|
+ base::android::AndroidImageReader::DisableSupport();
|
|
+ }
|
|
+
|
|
UMA_HISTOGRAM_ENUMERATION("GPU.GLImplementation", gl::GetGLImplementation());
|
|
}
|
|
#endif // OS_ANDROID
|
|
--
|
|
2.17.1
|
|
|