Commit c091d33a authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

Fix vulkan crashes with low end device mode

With low end device mode, the android surface control should be
disabled. Fix the problem by following GpuPreferences to enable or
disable android surface control with Vulkan.

Bug: 1033170
Change-Id: I1887be2cac0d17b3213c9271893b68b8bdfe35b8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036403
Commit-Queue: Peng Huang <penghuang@chromium.org>
Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org>
Auto-Submit: Peng Huang <penghuang@chromium.org>
Reviewed-by: default avatarVasiliy Telezhnikov <vasilyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#737943}
parent 78ed8694
...@@ -242,6 +242,7 @@ SkiaOutputDeviceBufferQueue::SkiaOutputDeviceBufferQueue( ...@@ -242,6 +242,7 @@ SkiaOutputDeviceBufferQueue::SkiaOutputDeviceBufferQueue(
image_format_ = RGBA_8888; image_format_ = RGBA_8888;
#endif #endif
capabilities_.android_surface_control_feature_enabled = true;
capabilities_.supports_post_sub_buffer = gl_surface_->SupportsPostSubBuffer(); capabilities_.supports_post_sub_buffer = gl_surface_->SupportsPostSubBuffer();
// TODO(vasilyt): Need to figure out why partial swap isn't working // TODO(vasilyt): Need to figure out why partial swap isn't working
capabilities_.supports_post_sub_buffer = false; capabilities_.supports_post_sub_buffer = false;
...@@ -277,8 +278,12 @@ SkiaOutputDeviceBufferQueue::Create( ...@@ -277,8 +278,12 @@ SkiaOutputDeviceBufferQueue::Create(
gpu::MemoryTracker* memory_tracker, gpu::MemoryTracker* memory_tracker,
const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback) { const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback) {
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
if (!features::IsAndroidSurfaceControlEnabled()) if (deps->GetGpuFeatureInfo()
.status_values[gpu::GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL] !=
gpu::kGpuFeatureStatusEnabled) {
return nullptr; return nullptr;
}
bool can_be_used_with_surface_control = false; bool can_be_used_with_surface_control = false;
ANativeWindow* window = ANativeWindow* window =
gpu::GpuSurfaceLookup::GetInstance()->AcquireNativeWidget( gpu::GpuSurfaceLookup::GetInstance()->AcquireNativeWidget(
......
...@@ -702,11 +702,6 @@ void SkiaOutputSurfaceImpl::InitializeOnGpuThread( ...@@ -702,11 +702,6 @@ void SkiaOutputSurfaceImpl::InitializeOnGpuThread(
*result = false; *result = false;
} else { } else {
capabilities_ = impl_on_gpu_->capabilities(); capabilities_ = impl_on_gpu_->capabilities();
capabilities_.android_surface_control_feature_enabled =
dependency_->GetGpuFeatureInfo()
.status_values[gpu::GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL] ==
gpu::kGpuFeatureStatusEnabled;
is_displayed_as_overlay_ = impl_on_gpu_->IsDisplayedAsOverlay(); is_displayed_as_overlay_ = impl_on_gpu_->IsDisplayedAsOverlay();
*result = true; *result = true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment