mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
venus: enable external memory support
This enables VK_KHR_external_memory_fd and VK_EXT_external_memory_dma_buf support. Signed-off-by: Chia-I Wu <olvaffe@gmail.com> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10437>
This commit is contained in:
parent
efa185ed5c
commit
1e3981f69c
1 changed files with 22 additions and 1 deletions
|
|
@ -1363,6 +1363,11 @@ vn_physical_device_init_external_memory(
|
|||
physical_dev->external_memory.supported_handle_types =
|
||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT |
|
||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT;
|
||||
|
||||
physical_dev->base.base.supported_extensions.KHR_external_memory_fd =
|
||||
true;
|
||||
physical_dev->base.base.supported_extensions
|
||||
.EXT_external_memory_dma_buf = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2890,7 +2895,8 @@ vn_EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,
|
|||
if (physical_dev->base.base.supported_extensions.extensions[i]) {
|
||||
vk_outarray_append(&out, prop) {
|
||||
*prop = vk_device_extensions[i];
|
||||
prop->specVersion = physical_dev->extension_spec_versions[i];
|
||||
if (physical_dev->extension_spec_versions[i])
|
||||
prop->specVersion = physical_dev->extension_spec_versions[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3048,6 +3054,7 @@ vn_device_fix_create_info(const struct vn_device *dev,
|
|||
VkDeviceCreateInfo *local_info)
|
||||
{
|
||||
/* extra_exts and block_exts must not overlap */
|
||||
const struct vn_physical_device *physical_dev = dev->physical_device;
|
||||
const char *extra_exts[8];
|
||||
const char *block_exts[8];
|
||||
uint32_t extra_count = 0;
|
||||
|
|
@ -3063,6 +3070,20 @@ vn_device_fix_create_info(const struct vn_device *dev,
|
|||
if (dev->base.base.enabled_extensions.ANDROID_native_buffer)
|
||||
block_exts[block_count++] = VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME;
|
||||
|
||||
if (dev->base.base.enabled_extensions.KHR_external_memory_fd ||
|
||||
dev->base.base.enabled_extensions.EXT_external_memory_dma_buf) {
|
||||
switch (physical_dev->external_memory.renderer_handle_type) {
|
||||
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT:
|
||||
extra_exts[extra_count++] = VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME;
|
||||
FALLTHROUGH;
|
||||
case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
|
||||
extra_exts[extra_count++] = VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!extra_count && (!block_count || !dev_info->enabledExtensionCount))
|
||||
return dev_info;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue