Update guest encoder generated code for MoltenVK

Bug: 177241396

Change-Id: I17663ddab5cceebbc7b32295612e2b413558ad6e
diff --git a/system/vulkan/func_table.cpp b/system/vulkan/func_table.cpp
index 6a4a128..b5b1174 100644
--- a/system/vulkan/func_table.cpp
+++ b/system/vulkan/func_table.cpp
@@ -5365,6 +5365,60 @@
     vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment);
 }
 #endif
+#ifdef VK_MVK_moltenvk
+static void entry_vkGetMTLDeviceMVK(
+    VkPhysicalDevice physicalDevice,
+    void** pMTLDevice)
+{
+    AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
+    auto vkEnc = HostConnection::get()->vkEncoder();
+    vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice);
+}
+static VkResult entry_vkSetMTLTextureMVK(
+    VkImage image,
+    void* mtlTexture)
+{
+    AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
+    auto vkEnc = HostConnection::get()->vkEncoder();
+    VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
+    vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture);
+    return vkSetMTLTextureMVK_VkResult_return;
+}
+static void entry_vkGetMTLTextureMVK(
+    VkImage image,
+    void** pMTLTexture)
+{
+    AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
+    auto vkEnc = HostConnection::get()->vkEncoder();
+    vkEnc->vkGetMTLTextureMVK(image, pMTLTexture);
+}
+static void entry_vkGetMTLBufferMVK(
+    VkBuffer buffer,
+    void** pMTLBuffer)
+{
+    AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
+    auto vkEnc = HostConnection::get()->vkEncoder();
+    vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer);
+}
+static VkResult entry_vkUseIOSurfaceMVK(
+    VkImage image,
+    void* ioSurface)
+{
+    AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
+    auto vkEnc = HostConnection::get()->vkEncoder();
+    VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
+    vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface);
+    return vkUseIOSurfaceMVK_VkResult_return;
+}
+static void entry_vkGetIOSurfaceMVK(
+    VkImage image,
+    void** pIOSurface)
+{
+    AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
+    auto vkEnc = HostConnection::get()->vkEncoder();
+    vkEnc->vkGetIOSurfaceMVK(image, pIOSurface);
+}
+#endif
 void* goldfish_vulkan_get_proc_address(const char* name){
 #ifdef VK_VERSION_1_0
     if (!strcmp(name, "vkCreateInstance"))
@@ -6846,6 +6900,32 @@
         return nullptr;
     }
 #endif
+#ifdef VK_MVK_moltenvk
+    if (!strcmp(name, "vkGetMTLDeviceMVK"))
+    {
+        return nullptr;
+    }
+    if (!strcmp(name, "vkSetMTLTextureMVK"))
+    {
+        return nullptr;
+    }
+    if (!strcmp(name, "vkGetMTLTextureMVK"))
+    {
+        return nullptr;
+    }
+    if (!strcmp(name, "vkGetMTLBufferMVK"))
+    {
+        return nullptr;
+    }
+    if (!strcmp(name, "vkUseIOSurfaceMVK"))
+    {
+        return nullptr;
+    }
+    if (!strcmp(name, "vkGetIOSurfaceMVK"))
+    {
+        return nullptr;
+    }
+#endif
     return nullptr;
 }
 void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
@@ -8428,6 +8508,38 @@
         return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
     }
 #endif
+#ifdef VK_MVK_moltenvk
+    if (!strcmp(name, "vkGetMTLDeviceMVK"))
+    {
+        bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
+    }
+    if (!strcmp(name, "vkSetMTLTextureMVK"))
+    {
+        bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
+    }
+    if (!strcmp(name, "vkGetMTLTextureMVK"))
+    {
+        bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
+    }
+    if (!strcmp(name, "vkGetMTLBufferMVK"))
+    {
+        bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
+    }
+    if (!strcmp(name, "vkUseIOSurfaceMVK"))
+    {
+        bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
+    }
+    if (!strcmp(name, "vkGetIOSurfaceMVK"))
+    {
+        bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
+    }
+#endif
     return nullptr;
 }
 void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
@@ -10082,6 +10194,38 @@
         return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
     }
 #endif
+#ifdef VK_MVK_moltenvk
+    if (!strcmp(name, "vkGetMTLDeviceMVK"))
+    {
+        bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
+    }
+    if (!strcmp(name, "vkSetMTLTextureMVK"))
+    {
+        bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
+    }
+    if (!strcmp(name, "vkGetMTLTextureMVK"))
+    {
+        bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
+    }
+    if (!strcmp(name, "vkGetMTLBufferMVK"))
+    {
+        bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
+    }
+    if (!strcmp(name, "vkUseIOSurfaceMVK"))
+    {
+        bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
+    }
+    if (!strcmp(name, "vkGetIOSurfaceMVK"))
+    {
+        bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
+        return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
+    }
+#endif
     return nullptr;
 }
 
diff --git a/system/vulkan/func_table.h b/system/vulkan/func_table.h
index a3a7f99..eb4dd21 100644
--- a/system/vulkan/func_table.h
+++ b/system/vulkan/func_table.h
@@ -296,6 +296,8 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 void* goldfish_vulkan_get_proc_address(const char* name);
 void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name);
 void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name);
diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp
index 88b8329..e90a931 100644
--- a/system/vulkan_enc/VkEncoder.cpp
+++ b/system/vulkan_enc/VkEncoder.cpp
@@ -23207,5 +23207,229 @@
 }
 
 #endif
+#ifdef VK_MVK_moltenvk
+void VkEncoder::vkGetMTLDeviceMVK(
+    VkPhysicalDevice physicalDevice,
+    void** pMTLDevice)
+{
+    EncoderAutoLock encoderLock(this);
+    mImpl->log("start vkGetMTLDeviceMVK");
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    auto resources = mImpl->resources();
+    auto pool = mImpl->pool();
+    stream->setHandleMapping(resources->unwrapMapping());
+    VkPhysicalDevice local_physicalDevice;
+    local_physicalDevice = physicalDevice;
+    countingStream->rewind();
+    {
+        uint64_t cgen_var_1567;
+        countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1567, 1);
+        countingStream->write((uint64_t*)&cgen_var_1567, 1 * 8);
+        countingStream->write((void**)pMTLDevice, sizeof(void*));
+    }
+    uint32_t packetSize_vkGetMTLDeviceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMTLDeviceMVK = OP_vkGetMTLDeviceMVK;
+    stream->write(&opcode_vkGetMTLDeviceMVK, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMTLDeviceMVK, sizeof(uint32_t));
+    uint64_t cgen_var_1568;
+    stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1568, 1);
+    stream->write((uint64_t*)&cgen_var_1568, 1 * 8);
+    stream->write((void**)pMTLDevice, sizeof(void*));
+    stream->read((void**)pMTLDevice, sizeof(void*));
+    pool->freeAll();
+    countingStream->clearPool();
+    stream->clearPool();
+    mImpl->log("finish vkGetMTLDeviceMVK");;
+}
+
+VkResult VkEncoder::vkSetMTLTextureMVK(
+    VkImage image,
+    void* mtlTexture)
+{
+    EncoderAutoLock encoderLock(this);
+    mImpl->log("start vkSetMTLTextureMVK");
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    auto resources = mImpl->resources();
+    auto pool = mImpl->pool();
+    stream->setHandleMapping(resources->unwrapMapping());
+    VkImage local_image;
+    local_image = image;
+    countingStream->rewind();
+    {
+        uint64_t cgen_var_1569;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1569, 1);
+        countingStream->write((uint64_t*)&cgen_var_1569, 1 * 8);
+        countingStream->write((void*)mtlTexture, sizeof(uint8_t));
+    }
+    uint32_t packetSize_vkSetMTLTextureMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkSetMTLTextureMVK = OP_vkSetMTLTextureMVK;
+    stream->write(&opcode_vkSetMTLTextureMVK, sizeof(uint32_t));
+    stream->write(&packetSize_vkSetMTLTextureMVK, sizeof(uint32_t));
+    uint64_t cgen_var_1570;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1570, 1);
+    stream->write((uint64_t*)&cgen_var_1570, 1 * 8);
+    stream->write((void*)mtlTexture, sizeof(uint8_t));
+    stream->read((void*)mtlTexture, sizeof(uint8_t));
+    VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
+    stream->read(&vkSetMTLTextureMVK_VkResult_return, sizeof(VkResult));
+    pool->freeAll();
+    countingStream->clearPool();
+    stream->clearPool();
+    mImpl->log("finish vkSetMTLTextureMVK");;
+    return vkSetMTLTextureMVK_VkResult_return;
+}
+
+void VkEncoder::vkGetMTLTextureMVK(
+    VkImage image,
+    void** pMTLTexture)
+{
+    EncoderAutoLock encoderLock(this);
+    mImpl->log("start vkGetMTLTextureMVK");
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    auto resources = mImpl->resources();
+    auto pool = mImpl->pool();
+    stream->setHandleMapping(resources->unwrapMapping());
+    VkImage local_image;
+    local_image = image;
+    countingStream->rewind();
+    {
+        uint64_t cgen_var_1571;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1571, 1);
+        countingStream->write((uint64_t*)&cgen_var_1571, 1 * 8);
+        countingStream->write((void**)pMTLTexture, sizeof(void*));
+    }
+    uint32_t packetSize_vkGetMTLTextureMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMTLTextureMVK = OP_vkGetMTLTextureMVK;
+    stream->write(&opcode_vkGetMTLTextureMVK, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMTLTextureMVK, sizeof(uint32_t));
+    uint64_t cgen_var_1572;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1572, 1);
+    stream->write((uint64_t*)&cgen_var_1572, 1 * 8);
+    stream->write((void**)pMTLTexture, sizeof(void*));
+    stream->read((void**)pMTLTexture, sizeof(void*));
+    pool->freeAll();
+    countingStream->clearPool();
+    stream->clearPool();
+    mImpl->log("finish vkGetMTLTextureMVK");;
+}
+
+void VkEncoder::vkGetMTLBufferMVK(
+    VkBuffer buffer,
+    void** pMTLBuffer)
+{
+    EncoderAutoLock encoderLock(this);
+    mImpl->log("start vkGetMTLBufferMVK");
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    auto resources = mImpl->resources();
+    auto pool = mImpl->pool();
+    stream->setHandleMapping(resources->unwrapMapping());
+    VkBuffer local_buffer;
+    local_buffer = buffer;
+    countingStream->rewind();
+    {
+        uint64_t cgen_var_1573;
+        countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1573, 1);
+        countingStream->write((uint64_t*)&cgen_var_1573, 1 * 8);
+        countingStream->write((void**)pMTLBuffer, sizeof(void*));
+    }
+    uint32_t packetSize_vkGetMTLBufferMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetMTLBufferMVK = OP_vkGetMTLBufferMVK;
+    stream->write(&opcode_vkGetMTLBufferMVK, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetMTLBufferMVK, sizeof(uint32_t));
+    uint64_t cgen_var_1574;
+    stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1574, 1);
+    stream->write((uint64_t*)&cgen_var_1574, 1 * 8);
+    stream->write((void**)pMTLBuffer, sizeof(void*));
+    stream->read((void**)pMTLBuffer, sizeof(void*));
+    pool->freeAll();
+    countingStream->clearPool();
+    stream->clearPool();
+    mImpl->log("finish vkGetMTLBufferMVK");;
+}
+
+VkResult VkEncoder::vkUseIOSurfaceMVK(
+    VkImage image,
+    void* ioSurface)
+{
+    EncoderAutoLock encoderLock(this);
+    mImpl->log("start vkUseIOSurfaceMVK");
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    auto resources = mImpl->resources();
+    auto pool = mImpl->pool();
+    stream->setHandleMapping(resources->unwrapMapping());
+    VkImage local_image;
+    local_image = image;
+    countingStream->rewind();
+    {
+        uint64_t cgen_var_1575;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1575, 1);
+        countingStream->write((uint64_t*)&cgen_var_1575, 1 * 8);
+        countingStream->write((void*)ioSurface, sizeof(uint8_t));
+    }
+    uint32_t packetSize_vkUseIOSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkUseIOSurfaceMVK = OP_vkUseIOSurfaceMVK;
+    stream->write(&opcode_vkUseIOSurfaceMVK, sizeof(uint32_t));
+    stream->write(&packetSize_vkUseIOSurfaceMVK, sizeof(uint32_t));
+    uint64_t cgen_var_1576;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1576, 1);
+    stream->write((uint64_t*)&cgen_var_1576, 1 * 8);
+    stream->write((void*)ioSurface, sizeof(uint8_t));
+    stream->read((void*)ioSurface, sizeof(uint8_t));
+    VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
+    stream->read(&vkUseIOSurfaceMVK_VkResult_return, sizeof(VkResult));
+    pool->freeAll();
+    countingStream->clearPool();
+    stream->clearPool();
+    mImpl->log("finish vkUseIOSurfaceMVK");;
+    return vkUseIOSurfaceMVK_VkResult_return;
+}
+
+void VkEncoder::vkGetIOSurfaceMVK(
+    VkImage image,
+    void** pIOSurface)
+{
+    EncoderAutoLock encoderLock(this);
+    mImpl->log("start vkGetIOSurfaceMVK");
+    auto stream = mImpl->stream();
+    auto countingStream = mImpl->countingStream();
+    auto resources = mImpl->resources();
+    auto pool = mImpl->pool();
+    stream->setHandleMapping(resources->unwrapMapping());
+    VkImage local_image;
+    local_image = image;
+    countingStream->rewind();
+    {
+        uint64_t cgen_var_1577;
+        countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1577, 1);
+        countingStream->write((uint64_t*)&cgen_var_1577, 1 * 8);
+        countingStream->write((void**)pIOSurface, sizeof(void*));
+    }
+    uint32_t packetSize_vkGetIOSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+    countingStream->rewind();
+    uint32_t opcode_vkGetIOSurfaceMVK = OP_vkGetIOSurfaceMVK;
+    stream->write(&opcode_vkGetIOSurfaceMVK, sizeof(uint32_t));
+    stream->write(&packetSize_vkGetIOSurfaceMVK, sizeof(uint32_t));
+    uint64_t cgen_var_1578;
+    stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1578, 1);
+    stream->write((uint64_t*)&cgen_var_1578, 1 * 8);
+    stream->write((void**)pIOSurface, sizeof(void*));
+    stream->read((void**)pIOSurface, sizeof(void*));
+    pool->freeAll();
+    countingStream->clearPool();
+    stream->clearPool();
+    mImpl->log("finish vkGetIOSurfaceMVK");;
+}
+
+#endif
 
 } // namespace goldfish_vk
diff --git a/system/vulkan_enc/VkEncoder.h b/system/vulkan_enc/VkEncoder.h
index d263823..6e3eba1 100644
--- a/system/vulkan_enc/VkEncoder.h
+++ b/system/vulkan_enc/VkEncoder.h
@@ -1843,6 +1843,26 @@
         VkDeviceSize* pOffset,
         VkDeviceSize* pRowPitchAlignment);
 #endif
+#ifdef VK_MVK_moltenvk
+    void vkGetMTLDeviceMVK(
+    VkPhysicalDevice physicalDevice,
+        void** pMTLDevice);
+    VkResult vkSetMTLTextureMVK(
+    VkImage image,
+        void* mtlTexture);
+    void vkGetMTLTextureMVK(
+    VkImage image,
+        void** pMTLTexture);
+    void vkGetMTLBufferMVK(
+    VkBuffer buffer,
+        void** pMTLBuffer);
+    VkResult vkUseIOSurfaceMVK(
+    VkImage image,
+        void* ioSurface);
+    void vkGetIOSurfaceMVK(
+    VkImage image,
+        void** pIOSurface);
+#endif
 
 private:
     class Impl;
diff --git a/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp b/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
index a6fb577..e1966fc 100644
--- a/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
@@ -6428,6 +6428,8 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 void deepcopy_extension_struct(
     BumpPool* pool,
     const void* structExtension,
diff --git a/system/vulkan_enc/goldfish_vk_deepcopy_guest.h b/system/vulkan_enc/goldfish_vk_deepcopy_guest.h
index c29802b..03fe03c 100644
--- a/system/vulkan_enc/goldfish_vk_deepcopy_guest.h
+++ b/system/vulkan_enc/goldfish_vk_deepcopy_guest.h
@@ -2048,5 +2048,7 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 
 } // namespace goldfish_vk
diff --git a/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp b/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
index ee84c21..8ea86d4 100644
--- a/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
@@ -294,6 +294,8 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 uint32_t goldfish_vk_struct_type(
     const void* structExtension)
 {
diff --git a/system/vulkan_enc/goldfish_vk_extension_structs_guest.h b/system/vulkan_enc/goldfish_vk_extension_structs_guest.h
index e549de9..8b9ac38 100644
--- a/system/vulkan_enc/goldfish_vk_extension_structs_guest.h
+++ b/system/vulkan_enc/goldfish_vk_extension_structs_guest.h
@@ -315,5 +315,7 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 
 } // namespace goldfish_vk
diff --git a/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp b/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp
index ff9a069..4c38700 100644
--- a/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp
@@ -4784,6 +4784,8 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 void handlemap_extension_struct(
     VulkanHandleMapping* handlemap,
     void* structExtension_out)
diff --git a/system/vulkan_enc/goldfish_vk_handlemap_guest.h b/system/vulkan_enc/goldfish_vk_handlemap_guest.h
index 88fca6c..797dee9 100644
--- a/system/vulkan_enc/goldfish_vk_handlemap_guest.h
+++ b/system/vulkan_enc/goldfish_vk_handlemap_guest.h
@@ -1699,5 +1699,7 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 
 } // namespace goldfish_vk
diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
index 15fa96f..a6a60b0 100644
--- a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
@@ -10372,6 +10372,8 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 void marshal_extension_struct(
     VulkanStreamGuest* vkStream,
     const void* structExtension)
@@ -13249,6 +13251,32 @@
             return "OP_vkGetLinearImageLayoutGOOGLE";
         }
 #endif
+#ifdef VK_MVK_moltenvk
+        case OP_vkGetMTLDeviceMVK:
+        {
+            return "OP_vkGetMTLDeviceMVK";
+        }
+        case OP_vkSetMTLTextureMVK:
+        {
+            return "OP_vkSetMTLTextureMVK";
+        }
+        case OP_vkGetMTLTextureMVK:
+        {
+            return "OP_vkGetMTLTextureMVK";
+        }
+        case OP_vkGetMTLBufferMVK:
+        {
+            return "OP_vkGetMTLBufferMVK";
+        }
+        case OP_vkUseIOSurfaceMVK:
+        {
+            return "OP_vkUseIOSurfaceMVK";
+        }
+        case OP_vkGetIOSurfaceMVK:
+        {
+            return "OP_vkGetIOSurfaceMVK";
+        }
+#endif
         default:
         {
             return "OP_UNKNOWN_API_CALL";
diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.h b/system/vulkan_enc/goldfish_vk_marshaling_guest.h
index d8cb1b0..cb41c63 100644
--- a/system/vulkan_enc/goldfish_vk_marshaling_guest.h
+++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.h
@@ -3427,6 +3427,14 @@
 #ifdef VK_GOOGLE_linear_image_layout
 #define OP_vkGetLinearImageLayoutGOOGLE 20333
 #endif
+#ifdef VK_MVK_moltenvk
+#define OP_vkGetMTLDeviceMVK 20334
+#define OP_vkSetMTLTextureMVK 20335
+#define OP_vkGetMTLTextureMVK 20336
+#define OP_vkGetMTLBufferMVK 20337
+#define OP_vkUseIOSurfaceMVK 20338
+#define OP_vkGetIOSurfaceMVK 20339
+#endif
 const char* api_opcode_to_string(
     const uint32_t opcode);
 
diff --git a/system/vulkan_enc/goldfish_vk_transform_guest.cpp b/system/vulkan_enc/goldfish_vk_transform_guest.cpp
index b829c49..8a7e656 100644
--- a/system/vulkan_enc/goldfish_vk_transform_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_transform_guest.cpp
@@ -9005,6 +9005,8 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 void transform_tohost_extension_struct(
     ResourceTracker* resourceTracker,
     void* structExtension_out)
diff --git a/system/vulkan_enc/goldfish_vk_transform_guest.h b/system/vulkan_enc/goldfish_vk_transform_guest.h
index b29e205..a0c0762 100644
--- a/system/vulkan_enc/goldfish_vk_transform_guest.h
+++ b/system/vulkan_enc/goldfish_vk_transform_guest.h
@@ -3095,5 +3095,7 @@
 #endif
 #ifdef VK_GOOGLE_linear_image_layout
 #endif
+#ifdef VK_MVK_moltenvk
+#endif
 
 } // namespace goldfish_vk