From e3fdfe5176e28c6b4548aeb860c1abaa1987ee57 Mon Sep 17 00:00:00 2001 From: skallweitNV <64953474+skallweitNV@users.noreply.github.com> Date: Tue, 27 Feb 2024 17:42:39 +0100 Subject: add support for shared resources on vulkan/linux (#3636) --- tools/gfx/vulkan/vk-texture.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tools/gfx/vulkan/vk-texture.cpp') diff --git a/tools/gfx/vulkan/vk-texture.cpp b/tools/gfx/vulkan/vk-texture.cpp index 80a120033..13775cef0 100644 --- a/tools/gfx/vulkan/vk-texture.cpp +++ b/tools/gfx/vulkan/vk-texture.cpp @@ -64,6 +64,23 @@ Result TextureResourceImpl::getSharedHandle(InteropHandle* outHandle) SLANG_RETURN_ON_FAIL( vkCreateSharedHandle(m_device->m_device, &info, (HANDLE*)&outHandle->handleValue) != VK_SUCCESS); +#else + VkMemoryGetFdInfoKHR info = {}; + info.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR; + info.pNext = nullptr; + info.memory = m_imageMemory; + info.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; + + auto& api = m_device->m_api; + PFN_vkGetMemoryFdKHR vkCreateSharedHandle; + vkCreateSharedHandle = api.vkGetMemoryFdKHR; + if (!vkCreateSharedHandle) + { + return SLANG_FAIL; + } + SLANG_RETURN_ON_FAIL( + vkCreateSharedHandle(m_device->m_device, &info, (int*)&outHandle->handleValue) != + VK_SUCCESS); #endif outHandle->api = InteropHandleAPI::Vulkan; return SLANG_OK; -- cgit v1.2.3