From 96b42bdbee1c7dafb60829849b807eda6d8058a9 Mon Sep 17 00:00:00 2001 From: Serdar Kocdemir Date: Wed, 26 Jun 2024 22:34:31 +0100 Subject: [PATCH] Remove direct usages of MoltenVK library functions These APIs and the related extension are deprecated in favor of the new metal_objects extension to make sure the loader can intercept them, so that the layers, such as VVL, would work fine. Removes necessity to load functions directly from a separate dylib. VK_MVK_moltenvk extension support is still passed to the guest side due to the existing checks for enabling the AHB extension. Reviewed-by: Aaron Ruby Acked-by: Yonggang Luo Acked-by: Adam Jackson Part-of: --- .../codegen/scripts/cereal/dispatch.py | 9 +---- .../codegen/scripts/cereal/marshalingdefs.py | 6 --- .../codegen/scripts/cerealgenerator.py | 4 -- src/gfxstream/codegen/xml/vk_gfxstream.xml | 40 ------------------- .../guest/vulkan_enc/ResourceTracker.cpp | 1 + 5 files changed, 2 insertions(+), 58 deletions(-) diff --git a/src/gfxstream/codegen/scripts/cereal/dispatch.py b/src/gfxstream/codegen/scripts/cereal/dispatch.py index 031f52ed69e..4fdf9929835 100644 --- a/src/gfxstream/codegen/scripts/cereal/dispatch.py +++ b/src/gfxstream/codegen/scripts/cereal/dispatch.py @@ -46,14 +46,7 @@ getProcAddrFuncs = [ # address using vkGetInstProcAddr() or vkGetDeviceProcAddr(). These function # pointers should only be initialized when setting up the dispatch from system # loader. -getProcAddrOnlyFuncs = [ - "vkGetMTLDeviceMVK", - "vkSetMTLTextureMVK", - "vkGetMTLTextureMVK", - "vkGetMTLBufferMVK", - "vkUseIOSurfaceMVK", - "vkGetIOSurfaceMVK", -] +getProcAddrOnlyFuncs = [] getInstanceProcAddrNoInstanceFuncs = [ "vkCreateInstance", diff --git a/src/gfxstream/codegen/scripts/cereal/marshalingdefs.py b/src/gfxstream/codegen/scripts/cereal/marshalingdefs.py index 88791f68b86..a78de96e830 100644 --- a/src/gfxstream/codegen/scripts/cereal/marshalingdefs.py +++ b/src/gfxstream/codegen/scripts/cereal/marshalingdefs.py @@ -346,12 +346,6 @@ KNOWN_FUNCTION_OPCODES = { "vkQueueWaitIdleAsyncGOOGLE": 20331, "vkQueueBindSparseAsyncGOOGLE": 20332, "vkGetLinearImageLayoutGOOGLE": 20333, - "vkGetMTLDeviceMVK": 20334, - "vkSetMTLTextureMVK": 20335, - "vkGetMTLTextureMVK": 20336, - "vkGetMTLBufferMVK": 20337, - "vkUseIOSurfaceMVK": 20338, - "vkGetIOSurfaceMVK": 20339, "vkQueueFlushCommandsGOOGLE": 20340, "vkGetBlobGOOGLE": 20341, } diff --git a/src/gfxstream/codegen/scripts/cerealgenerator.py b/src/gfxstream/codegen/scripts/cerealgenerator.py index 59db4fa27e1..be52de3f1ff 100644 --- a/src/gfxstream/codegen/scripts/cerealgenerator.py +++ b/src/gfxstream/codegen/scripts/cerealgenerator.py @@ -120,7 +120,6 @@ SUPPORTED_FEATURES = [ "VK_KHR_xcb_surface", "VK_KHR_win32_surface", "VK_EXT_metal_surface", - "VK_MVK_moltenvk", "VK_EXT_metal_objects", "VK_KHR_external_semaphore_win32", "VK_KHR_external_memory_win32", @@ -160,9 +159,6 @@ SUPPORTED_MODULES = { "VK_KHR_xcb_surface": ["goldfish_vk_dispatch"], "VK_KHR_win32_surface": ["goldfish_vk_dispatch"], "VK_EXT_metal_surface": ["goldfish_vk_dispatch"], - # VK_MVK_moltenvk doesn't generate a generate dispatch entry for some reason, but should. The - # lack of this extension doesn't cause any build failures though. - "VK_MVK_moltenvk": ["goldfish_vk_dispatch"], "VK_EXT_metal_objects": ["goldfish_vk_dispatch"], "VK_KHR_external_semaphore_win32" : ["goldfish_vk_dispatch"], "VK_KHR_external_memory_win32" : ["goldfish_vk_dispatch"], diff --git a/src/gfxstream/codegen/xml/vk_gfxstream.xml b/src/gfxstream/codegen/xml/vk_gfxstream.xml index 249f34f766a..a42bcde21bc 100644 --- a/src/gfxstream/codegen/xml/vk_gfxstream.xml +++ b/src/gfxstream/codegen/xml/vk_gfxstream.xml @@ -246,36 +246,6 @@ specific entries. VkDeviceSize dataOffset VkDeviceSize dataSize - - 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 - @@ -316,15 +286,5 @@ specific entries. - - - - - - - - - - \ No newline at end of file diff --git a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp index a197dc304db..7a73c8a1cb4 100644 --- a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp +++ b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp @@ -1855,6 +1855,7 @@ VkResult ResourceTracker::on_vkEnumerateDeviceExtensionProperties( bool win32ExtMemAvailable = getHostDeviceExtensionIndex("VK_KHR_external_memory_win32") != -1; bool posixExtMemAvailable = getHostDeviceExtensionIndex("VK_KHR_external_memory_fd") != -1; + //TODO(b/349066492): this should check external_memory_metal extension when it's ready bool moltenVkExtAvailable = getHostDeviceExtensionIndex("VK_MVK_moltenvk") != -1; bool qnxExtMemAvailable = getHostDeviceExtensionIndex("VK_QNX_external_memory_screen_buffer") != -1;