diff --git a/docs/features.txt b/docs/features.txt index 4987f7b96c9..1ccca4156ad 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -518,7 +518,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_dynamic_rendering_local_read DONE (lvp, nvk, radv) VK_KHR_external_fence_fd DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn) VK_KHR_external_fence_win32 not started - VK_KHR_external_memory_fd DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn) + VK_KHR_external_memory_fd DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_KHR_external_memory_win32 DONE (dzn) VK_KHR_external_semaphore_fd DONE (anv, dzn, hasvk, nvk, pvr, radv, tu, v3dv, vn) VK_KHR_external_semaphore_win32 DONE (dzn) diff --git a/src/panfrost/vulkan/panvk_device_memory.c b/src/panfrost/vulkan/panvk_device_memory.c index b499246cd2d..3f2df4590d0 100644 --- a/src/panfrost/vulkan/panvk_device_memory.c +++ b/src/panfrost/vulkan/panvk_device_memory.c @@ -56,11 +56,6 @@ panvk_AllocateMemory(VkDevice _device, fd_info->handleType == VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT || fd_info->handleType == VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT); - /* - * TODO Importing the same fd twice gives us the same handle without - * reference counting. We need to maintain a per-instance handle-to-bo - * table and add reference count to panvk_bo. - */ mem->bo = pan_kmod_bo_import(device->kmod.dev, fd_info->fd, 0); if (!mem->bo) { result = panvk_error(device, VK_ERROR_INVALID_EXTERNAL_HANDLE); diff --git a/src/panfrost/vulkan/panvk_physical_device.c b/src/panfrost/vulkan/panvk_physical_device.c index 7ebc1328092..64d743fb203 100644 --- a/src/panfrost/vulkan/panvk_physical_device.c +++ b/src/panfrost/vulkan/panvk_physical_device.c @@ -155,6 +155,7 @@ get_device_extensions(const struct panvk_physical_device *device, .KHR_dynamic_rendering = true, .KHR_external_fence = true, .KHR_external_memory = true, + .KHR_external_memory_fd = true, .KHR_external_semaphore = true, .KHR_get_memory_requirements2 = true, .KHR_maintenance1 = true,