Fix NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS handling

Fixes: 123541940
Test: CTS HardwareRendererTests#testLotsOfBuffers
Change-Id: I5d96e615f552c4faa0e6dcaaaa828c871eaf6c8e
diff --git a/libs/hwui/renderthread/VulkanSurface.h b/libs/hwui/renderthread/VulkanSurface.h
index 418d40f..305483f 100644
--- a/libs/hwui/renderthread/VulkanSurface.h
+++ b/libs/hwui/renderthread/VulkanSurface.h
@@ -83,14 +83,19 @@
      * as private to this class.
      *
      */
-    static constexpr int sMaxBufferCount = 3;
+
+    // How many buffers we want to be able to use ourselves. We want 1 in active rendering with
+    // 1 more queued, so 2. This will be added to NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS, which is
+    // how many buffers the consumer needs (eg, 1 for SurfaceFlinger), getting to a typically
+    // triple-buffered queue as a result.
+    static constexpr uint32_t sTargetBufferCount = 2;
 
     struct WindowInfo {
         SkISize size;
         PixelFormat pixelFormat;
         android_dataspace dataspace;
         int transform;
-        int bufferCount;
+        size_t bufferCount;
         uint64_t windowUsageFlags;
 
         // size of the ANativeWindow if the inverse of transform requires us to swap width/height
@@ -111,7 +116,8 @@
                                               const SkISize& maxSize);
     void releaseBuffers();
 
-    NativeBufferInfo mNativeBuffers[VulkanSurface::sMaxBufferCount];
+    // TODO: Just use a vector?
+    NativeBufferInfo mNativeBuffers[android::BufferQueueDefs::NUM_BUFFER_SLOTS];
 
     sp<ANativeWindow> mNativeWindow;
     WindowInfo mWindowInfo;