diff options
author | 2024-04-26 15:31:37 -0400 | |
---|---|---|
committer | 2024-04-26 15:32:54 -0400 | |
commit | 1391d8ee77c9fb4147e84be17892c7e0b95766c6 (patch) | |
tree | fb76b29f78d4d91792da71e8a2747b7f3b413f1b | |
parent | e234e53b6fd78784d691c94b8b47ef792bd19e89 (diff) |
Don't call set_buffer_count for single buffer surfaces
Fixes: 296145618
Test: atest android.graphics.cts.HardwareRendererTest#lockHardwareCanvasSingleBuffer
Change-Id: I1513d6f484e44cb27a7683594899f99e0d802c2b
-rw-r--r-- | libs/hwui/renderthread/VulkanSurface.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/libs/hwui/renderthread/VulkanSurface.cpp b/libs/hwui/renderthread/VulkanSurface.cpp index a8e85475aff0..0f29613cad33 100644 --- a/libs/hwui/renderthread/VulkanSurface.cpp +++ b/libs/hwui/renderthread/VulkanSurface.cpp @@ -322,11 +322,16 @@ bool VulkanSurface::UpdateWindow(ANativeWindow* window, const WindowInfo& window return false; } - err = native_window_set_buffer_count(window, windowInfo.bufferCount); - if (err != 0) { - ALOGE("VulkanSurface::UpdateWindow() native_window_set_buffer_count(%zu) failed: %s (%d)", - windowInfo.bufferCount, strerror(-err), err); - return false; + // If bufferCount == 1 then we're in shared buffer mode and we cannot actually call + // set_buffer_count, it'll just fail. + if (windowInfo.bufferCount > 1) { + err = native_window_set_buffer_count(window, windowInfo.bufferCount); + if (err != 0) { + ALOGE("VulkanSurface::UpdateWindow() native_window_set_buffer_count(%zu) failed: %s " + "(%d)", + windowInfo.bufferCount, strerror(-err), err); + return false; + } } err = native_window_set_usage(window, windowInfo.windowUsageFlags); |