Better track color buffer usage in Vulkan

Sometimes guest renders to an AHB without calling
vkQueueSignalReleaseImageANDROIDAsyncGOOGLE. This would result in the
color buffer not being updated from Vulkan.

This commit tracks the situation that AHB is rendered to, and copies its
content to color buffer.

Note that it adds extra wait, which could hurt performance.

Bug: 327522469
Test: run Chrome with -gpu swiftshader
Change-Id: I3687a68eb222039291c6f73fc65fb0e9ec0b443b
diff --git a/host/vulkan/VkSubDecoder.cpp b/host/vulkan/VkSubDecoder.cpp
index c89cd81..f49f53e 100644
--- a/host/vulkan/VkSubDecoder.cpp
+++ b/host/vulkan/VkSubDecoder.cpp
@@ -1319,8 +1319,8 @@
                     transform_tohost_VkRenderPassBeginInfo(
                         globalstate, (VkRenderPassBeginInfo*)(pRenderPassBegin));
                 }
-                vk->vkCmdBeginRenderPass((VkCommandBuffer)dispatchHandle, pRenderPassBegin,
-                                         contents);
+                this->on_vkCmdBeginRenderPass(pool, (VkCommandBuffer)(boxed_dispatchHandle),
+                                              pRenderPassBegin, contents);
                 android::base::endTrace();
                 break;
             }
@@ -1486,8 +1486,8 @@
                     transform_tohost_VkSubpassBeginInfo(globalstate,
                                                         (VkSubpassBeginInfo*)(pSubpassBeginInfo));
                 }
-                vk->vkCmdBeginRenderPass2((VkCommandBuffer)dispatchHandle, pRenderPassBegin,
-                                          pSubpassBeginInfo);
+                this->on_vkCmdBeginRenderPass2(pool, (VkCommandBuffer)(boxed_dispatchHandle),
+                                               pRenderPassBegin, pSubpassBeginInfo);
                 android::base::endTrace();
                 break;
             }
@@ -2121,8 +2121,8 @@
                     transform_tohost_VkSubpassBeginInfo(globalstate,
                                                         (VkSubpassBeginInfo*)(pSubpassBeginInfo));
                 }
-                vk->vkCmdBeginRenderPass2KHR((VkCommandBuffer)dispatchHandle, pRenderPassBegin,
-                                             pSubpassBeginInfo);
+                this->on_vkCmdBeginRenderPass2KHR(pool, (VkCommandBuffer)(boxed_dispatchHandle),
+                                                  pRenderPassBegin, pSubpassBeginInfo);
                 android::base::endTrace();
                 break;
             }