panvk: fill in VkExternalBufferProperties

Opaque fds are internally dma-bufs.  We also support both export and
import.

Fixes: 17b81d1fdc ("panvk: expose KHR_external_memory and KHR_external_memory_capabilities")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31649>
This commit is contained in:
Chia-I Wu 2024-10-14 14:23:06 -07:00 committed by Marge Bot
parent 50a9d1b987
commit 75f833ca82

View file

@ -1477,5 +1477,27 @@ panvk_GetPhysicalDeviceExternalBufferProperties(
const VkPhysicalDeviceExternalBufferInfo *pExternalBufferInfo,
VkExternalBufferProperties *pExternalBufferProperties)
{
panvk_stub();
const VkExternalMemoryHandleTypeFlags supported_handle_types =
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT |
VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT;
/* From the Vulkan 1.3.298 spec:
*
* compatibleHandleTypes must include at least handleType.
*/
VkExternalMemoryHandleTypeFlags handle_types =
pExternalBufferInfo->handleType;
VkExternalMemoryFeatureFlags features = 0;
if (pExternalBufferInfo->handleType & supported_handle_types) {
handle_types |= supported_handle_types;
features |= VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT |
VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT;
}
pExternalBufferProperties->externalMemoryProperties =
(VkExternalMemoryProperties){
.externalMemoryFeatures = features,
.exportFromImportedHandleTypes = handle_types,
.compatibleHandleTypes = handle_types,
};
}