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 @@ -22,6 +22,8 @@ namespace base { namespace android { +bool AndroidImageReader::disable_support_ = false; + AndroidImageReader& AndroidImageReader::GetInstance() { // C++11 static local variable initialization is // thread-safe. @@ -29,8 +31,12 @@ AndroidImageReader& AndroidImageReader::GetInstance() { return *instance; } +void AndroidImageReader::DisableSupport() { + disable_support_ = true; +} + bool AndroidImageReader::IsSupported() { - return is_supported_; + return !disable_support_ && is_supported_; } AndroidImageReader::AndroidImageReader() { 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 { AndroidImageReader(); bool LoadFunctions(); + static bool disable_support_; bool is_supported_; pAImage_delete AImage_delete_; pAImage_deleteAsync AImage_deleteAsync_; 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 @@ -710,6 +710,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 @@ -729,6 +735,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