[vulkan] Improve QueueSubmit handling

Change-Id: Id4036c9fe5113c0c193efed31c5328e8ab33475b
diff --git a/system/vulkan/func_table.cpp b/system/vulkan/func_table.cpp
index ff12cfe..3ce65a1 100644
--- a/system/vulkan/func_table.cpp
+++ b/system/vulkan/func_table.cpp
@@ -235,7 +235,8 @@
     AEMU_SCOPED_TRACE("vkQueueSubmit");
     auto vkEnc = HostConnection::get()->vkEncoder();
     VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
-    vkQueueSubmit_VkResult_return = vkEnc->vkQueueSubmit(queue, submitCount, pSubmits, fence);
+    auto resources = ResourceTracker::get();
+    vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
     return vkQueueSubmit_VkResult_return;
 }
 static VkResult entry_vkQueueWaitIdle(
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 614a39e..fb99ce3 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -1482,6 +1482,13 @@
         enc->vkDestroySemaphore(device, semaphore, pAllocator);
     }
 
+    VkResult on_vkQueueSubmit(
+        void* context, VkResult,
+        VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
+        VkEncoder* enc = (VkEncoder*)context;
+        return enc->vkQueueSubmit(queue, submitCount, pSubmits, fence);
+    }
+
     void unwrap_VkNativeBufferANDROID(
         const VkImageCreateInfo* pCreateInfo,
         VkImageCreateInfo* local_pCreateInfo) {
@@ -1519,9 +1526,6 @@
         }
     }
 
-    void unwrap_vkQueueSubmit(uint32_t, const VkSubmitInfo*, VkSubmitInfo*) {
-    }
-
     // Action of vkMapMemoryIntoAddressSpaceGOOGLE:
     // 1. preprocess (on_vkMapMemoryIntoAddressSpaceGOOGLE_pre):
     //    uses address space device to reserve the right size of
@@ -2001,6 +2005,13 @@
     mImpl->on_vkDestroySemaphore(context, device, semaphore, pAllocator);
 }
 
+VkResult ResourceTracker::on_vkQueueSubmit(
+    void* context, VkResult input_result,
+    VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {
+    return mImpl->on_vkQueueSubmit(
+        context, input_result, queue, submitCount, pSubmits, fence);
+}
+
 void ResourceTracker::unwrap_VkNativeBufferANDROID(
     const VkImageCreateInfo* pCreateInfo,
     VkImageCreateInfo* local_pCreateInfo) {
@@ -2011,11 +2022,6 @@
     mImpl->unwrap_vkAcquireImageANDROID_nativeFenceFd(fd, fd_out);
 }
 
-void ResourceTracker::unwrap_vkQueueSubmit(
-    uint32_t submitCount, const VkSubmitInfo* pSubmits, VkSubmitInfo* local_pSubmits) {
-    mImpl->unwrap_vkQueueSubmit(submitCount, pSubmits, local_pSubmits);
-}
-
 VkResult ResourceTracker::on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(
     void* context,
     VkResult input_result,
diff --git a/system/vulkan_enc/ResourceTracker.h b/system/vulkan_enc/ResourceTracker.h
index 4cfebba..4da1292 100644
--- a/system/vulkan_enc/ResourceTracker.h
+++ b/system/vulkan_enc/ResourceTracker.h
@@ -195,14 +195,15 @@
         void* context,
         VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks *pAllocator);
 
+    VkResult on_vkQueueSubmit(
+        void* context, VkResult input_result,
+        VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
+
     void unwrap_VkNativeBufferANDROID(
         const VkImageCreateInfo* pCreateInfo,
         VkImageCreateInfo* local_pCreateInfo);
     void unwrap_vkAcquireImageANDROID_nativeFenceFd(int fd, int* fd_out);
 
-    void unwrap_vkQueueSubmit(
-        uint32_t submitCount, const VkSubmitInfo* pSubmits, VkSubmitInfo* local_pSubmits);
-
     VkResult on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(
         void* context,
         VkResult input_result,
diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp
index 10bbeab..8eb589d 100644
--- a/system/vulkan_enc/VkEncoder.cpp
+++ b/system/vulkan_enc/VkEncoder.cpp
@@ -1428,7 +1428,6 @@
         }
     }
     local_fence = fence;
-    mImpl->resources()->unwrap_vkQueueSubmit(submitCount, pSubmits, local_pSubmits);
     if (local_pSubmits)
     {
         for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)