[vulkan] Fix missing macros/definitions on guest side

bug: 122080810

- Takes codegen for AHardwareBuffer entry points
- Need vk.xml change to get Fuchsia external memory entry points
- Adjust Fuchsia external memory definitions in ResourceTracker.cpp
to fit with what will be generated

Change-Id: Ib59951770158745f8d9a52dc1c2e6f9a30dbdac8
diff --git a/system/vulkan/func_table.cpp b/system/vulkan/func_table.cpp
index 3ce65a1..970b642 100644
--- a/system/vulkan/func_table.cpp
+++ b/system/vulkan/func_table.cpp
@@ -36,7 +36,6 @@
 // required extensions, but the approach will be to
 // implement them completely on the guest side.
 #undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
 
 
 namespace goldfish_vk {
@@ -3503,7 +3502,8 @@
     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
     auto vkEnc = HostConnection::get()->vkEncoder();
     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
-    vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = vkEnc->vkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
+    auto resources = ResourceTracker::get();
+    vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
 }
 static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
@@ -3514,7 +3514,8 @@
     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
     auto vkEnc = HostConnection::get()->vkEncoder();
     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
-    vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = vkEnc->vkGetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
+    auto resources = ResourceTracker::get();
+    vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
 }
 #endif
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index f55f577..a93a5df 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -948,6 +948,7 @@
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
     VkResult on_vkGetAndroidHardwareBufferPropertiesANDROID(
+        void*, VkResult,
         VkDevice device,
         const AHardwareBuffer* buffer,
         VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
@@ -957,6 +958,7 @@
     }
 
     VkResult on_vkGetMemoryAndroidHardwareBufferANDROID(
+        void*, VkResult,
         VkDevice device,
         const VkMemoryGetAndroidHardwareBufferInfoANDROID *pInfo,
         struct AHardwareBuffer** pBuffer) {
@@ -993,6 +995,7 @@
 
 #ifdef VK_USE_PLATFORM_FUCHSIA
     VkResult on_vkGetMemoryFuchsiaHandleKHR(
+        void*, VkResult,
         VkDevice device,
         const VkMemoryGetFuchsiaHandleInfoKHR* pInfo,
         uint32_t* pHandle) {
@@ -1027,6 +1030,7 @@
     }
 
     VkResult on_vkGetMemoryFuchsiaHandlePropertiesKHR(
+        void*, VkResult,
         VkDevice device,
         VkExternalMemoryHandleTypeFlagBitsKHR handleType,
         uint32_t handle,
@@ -1036,6 +1040,7 @@
     }
 
     VkResult on_vkImportSemaphoreFuchsiaHandleKHR(
+        void*, VkResult,
         VkDevice device,
         const VkImportSemaphoreFuchsiaHandleInfoKHR* pInfo) {
 
@@ -1067,6 +1072,7 @@
     }
 
     VkResult on_vkGetSemaphoreFuchsiaHandleKHR(
+        void*, VkResult,
         VkDevice device,
         const VkSemaphoreGetFuchsiaHandleInfoKHR* pInfo,
         uint32_t* pHandle) {
@@ -2423,23 +2429,59 @@
 
 #ifdef VK_USE_PLATFORM_FUCHSIA
 VkResult ResourceTracker::on_vkGetMemoryFuchsiaHandleKHR(
+    void* context, VkResult input_result,
     VkDevice device,
     const VkMemoryGetFuchsiaHandleInfoKHR* pInfo,
     uint32_t* pHandle) {
-    return mImpl->on_vkGetMemoryFuchsiaHandleKHR(device, pInfo, pHandle);
+    return mImpl->on_vkGetMemoryFuchsiaHandleKHR(
+        context, input_result, device, pInfo, pHandle);
+}
+
+VkResult on_vkGetMemoryFuchsiaHandlePropertiesKHR(
+    void* context, VkResult input_result,
+    VkDevice device,
+    VkExternalMemoryHandleTypeFlagBitsKHR handleType,
+    uint32_t handle,
+    VkMemoryFuchsiaHandlePropertiesKHR* pProperties) {
+    return mImpl->on_vkGetMemoryFuchsiaHandlePropertiesKHR(
+        context, input_result, device, handleType, handle, pProperties);
 }
 
 VkResult ResourceTracker::on_vkGetSemaphoreFuchsiaHandleKHR(
+    void* context, VkResult input_result,
     VkDevice device,
     const VkSemaphoreGetFuchsiaHandleInfoKHR* pInfo,
     uint32_t* pHandle) {
-    return mImpl->on_vkGetSemaphoreFuchsiaHandleKHR(device, pInfo, pHandle);
+    return mImpl->on_vkGetSemaphoreFuchsiaHandleKHR(
+        context, input_result, device, pInfo, pHandle);
 }
 
 VkResult ResourceTracker::on_vkImportSemaphoreFuchsiaHandleKHR(
+    void* context, VkResult input_result,
     VkDevice device,
     const VkImportSemaphoreFuchsiaHandleInfoKHR* pInfo) {
-    return mImpl->on_vkImportSemaphoreFuchsiaHandleKHR(device, pInfo);
+    return mImpl->on_vkImportSemaphoreFuchsiaHandleKHR(
+        context, input_result, device, pInfo);
+}
+#endif
+
+#ifdef VK_USE_PLATFORM_ANDROID_KHR
+VkResult ResourceTracker::on_vkGetAndroidHardwareBufferPropertiesANDROID(
+    void* context, VkResult input_result,
+    VkDevice device,
+    const AHardwareBuffer* buffer,
+    VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
+    return mImpl->on_vkGetAndroidHardwareBufferPropertiesANDROID(
+        context, input_result, device, buffer, pProperties);
+}
+VkResult ResourceTracker::on_vkGetMemoryAndroidHardwareBufferANDROID(
+    void* context, VkResult input_result,
+    VkDevice device,
+    const VkMemoryGetAndroidHardwareBufferInfoANDROID *pInfo,
+    struct AHardwareBuffer** pBuffer) {
+    return mImpl->on_vkGetMemoryAndroidHardwareBufferANDROID(
+        context, input_result,
+        device, pInfo, pBuffer);
 }
 #endif
 
diff --git a/system/vulkan_enc/ResourceTracker.h b/system/vulkan_enc/ResourceTracker.h
index 1f4d420..aca9ad4 100644
--- a/system/vulkan_enc/ResourceTracker.h
+++ b/system/vulkan_enc/ResourceTracker.h
@@ -209,18 +209,40 @@
 
 #ifdef VK_USE_PLATFORM_FUCHSIA
     VkResult on_vkGetMemoryFuchsiaHandleKHR(
+        void* context, VkResult input_result,
         VkDevice device,
         const VkMemoryGetFuchsiaHandleInfoKHR* pInfo,
         uint32_t* pHandle);
+    VkResult on_vkGetMemoryFuchsiaHandlePropertiesKHR(
+        void* context, VkResult input_result,
+        VkDevice device,
+        VkExternalMemoryHandleTypeFlagBitsKHR handleType,
+        uint32_t handle,
+        VkMemoryFuchsiaHandlePropertiesKHR* pProperties);
     VkResult on_vkGetSemaphoreFuchsiaHandleKHR(
+        void* context, VkResult input_result,
         VkDevice device,
         const VkSemaphoreGetFuchsiaHandleInfoKHR* pInfo,
         uint32_t* pHandle);
     VkResult on_vkImportSemaphoreFuchsiaHandleKHR(
+        void* context, VkResult input_result,
         VkDevice device,
         const VkImportSemaphoreFuchsiaHandleInfoKHR* pInfo);
 #endif
 
+#ifdef VK_USE_PLATFORM_ANDROID_KHR
+    VkResult on_vkGetAndroidHardwareBufferPropertiesANDROID(
+        void* context, VkResult input_result,
+        VkDevice device,
+        const AHardwareBuffer* buffer,
+        VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+    VkResult on_vkGetMemoryAndroidHardwareBufferANDROID(
+        void* context, VkResult input_result,
+        VkDevice device,
+        const VkMemoryGetAndroidHardwareBufferInfoANDROID *pInfo,
+        struct AHardwareBuffer** pBuffer);
+#endif
+
     VkResult on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(
         void* context,
         VkResult input_result,
diff --git a/system/vulkan_enc/goldfish_vk_private_defs.h b/system/vulkan_enc/goldfish_vk_private_defs.h
index 77510d5..0b4777b 100644
--- a/system/vulkan_enc/goldfish_vk_private_defs.h
+++ b/system/vulkan_enc/goldfish_vk_private_defs.h
@@ -114,6 +114,11 @@
 typedef VkResult (VKAPI_PTR *PFN_vkRegisterImageColorBufferGOOGLE)(VkDevice device, VkImage image, uint32_t colorBuffer);
 typedef VkResult (VKAPI_PTR *PFN_vkRegisterBufferColorBufferGOOGLE)(VkDevice device, VkBuffer image, uint32_t colorBuffer);
 
+#define VK_ANDROID_external_memory_android_hardware_buffer 1
+struct AHardwareBuffer;
+struct VkAndroidHardwareBufferPropertiesANDROID;
+struct VkMemoryGetAndroidHardwareBufferInfoANDROID;
+
 #ifdef __cplusplus
 } // extern "C"
 #endif