Re: [Mesa-dev] [PATCH v2 07/32] radv: Implement VK_EXT_external_memory_dma_buf
On Tue 28 Nov 2017, Jason Ekstrand wrote: > --- > src/amd/vulkan/radv_device.c | 8 ++-- > src/amd/vulkan/radv_extensions.py | 1 + > src/amd/vulkan/radv_formats.c | 8 ++-- > 3 files changed, 13 insertions(+), 4 deletions(-) With the changes in your wip/vulkan-wsi-prime branch, patches 6 & 7 are Reviewed-by: Chad Versace___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH v2 07/32] radv: Implement VK_EXT_external_memory_dma_buf
On Wed, Nov 29, 2017 at 1:41 PM, Chad Versacewrote: > On Tue 28 Nov 2017, Jason Ekstrand wrote: > > --- > > src/amd/vulkan/radv_device.c | 8 ++-- > > src/amd/vulkan/radv_extensions.py | 1 + > > src/amd/vulkan/radv_formats.c | 8 ++-- > > 3 files changed, 13 insertions(+), 4 deletions(-) > > > > diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c > > index 8e5ae0b..4517227 100644 > > --- a/src/amd/vulkan/radv_device.c > > +++ b/src/amd/vulkan/radv_device.c > > @@ -2166,7 +2166,9 @@ VkResult radv_alloc_memory(VkDevice > _device, > > > > if (import_info) { > > assert(import_info->handleType == > > -VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR); > > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR || > > +import_info->handleType == > > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT); > > mem->bo = device->ws->buffer_from_fd(device->ws, > import_info->fd, > >NULL, NULL); > > if (!mem->bo) { > > @@ -3540,7 +3542,9 @@ VkResult radv_GetMemoryFdKHR(VkDevice _device, > > > > /* We support only one handle type. */ > > This comment needs updating. I suggest copy-pasting the comment from > anvil. > Done. > > assert(pGetFdInfo->handleType == > > -VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR); > > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR || > > +pGetFdInfo->handleType == > > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT); > > > > bool ret = radv_get_memory_fd(device, memory, pFD); > > if (ret == false) > > Also, radv_GetMemoryFdPropertiesKHR() (the next function in this file) > needs updating to support dma-buf. Today it unconditionally fails. > This was missing from anv as well. I've added it and will re-push the branch in a minute. For radv, I really don't know what to do here. I'm sure there are some FD properties I should probably query and then walk a list of types and fill out some bits. I have no idea how their memory handle interfaces work. Dave? --Jason ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH v2 07/32] radv: Implement VK_EXT_external_memory_dma_buf
On Tue 28 Nov 2017, Jason Ekstrand wrote: > --- > src/amd/vulkan/radv_device.c | 8 ++-- > src/amd/vulkan/radv_extensions.py | 1 + > src/amd/vulkan/radv_formats.c | 8 ++-- > 3 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c > index 8e5ae0b..4517227 100644 > --- a/src/amd/vulkan/radv_device.c > +++ b/src/amd/vulkan/radv_device.c > @@ -2166,7 +2166,9 @@ VkResult radv_alloc_memory(VkDevice >_device, > > if (import_info) { > assert(import_info->handleType == > -VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR); > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR || > +import_info->handleType == > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT); > mem->bo = device->ws->buffer_from_fd(device->ws, > import_info->fd, >NULL, NULL); > if (!mem->bo) { > @@ -3540,7 +3542,9 @@ VkResult radv_GetMemoryFdKHR(VkDevice _device, > > /* We support only one handle type. */ This comment needs updating. I suggest copy-pasting the comment from anvil. > assert(pGetFdInfo->handleType == > -VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR); > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR || > +pGetFdInfo->handleType == > +VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT); > > bool ret = radv_get_memory_fd(device, memory, pFD); > if (ret == false) Also, radv_GetMemoryFdPropertiesKHR() (the next function in this file) needs updating to support dma-buf. Today it unconditionally fails. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH v2 07/32] radv: Implement VK_EXT_external_memory_dma_buf
--- src/amd/vulkan/radv_device.c | 8 ++-- src/amd/vulkan/radv_extensions.py | 1 + src/amd/vulkan/radv_formats.c | 8 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 8e5ae0b..4517227 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2166,7 +2166,9 @@ VkResult radv_alloc_memory(VkDevice _device, if (import_info) { assert(import_info->handleType == - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR); + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR || + import_info->handleType == + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT); mem->bo = device->ws->buffer_from_fd(device->ws, import_info->fd, NULL, NULL); if (!mem->bo) { @@ -3540,7 +3542,9 @@ VkResult radv_GetMemoryFdKHR(VkDevice _device, /* We support only one handle type. */ assert(pGetFdInfo->handleType == - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR); + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR || + pGetFdInfo->handleType == + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT); bool ret = radv_get_memory_fd(device, memory, pFD); if (ret == false) diff --git a/src/amd/vulkan/radv_extensions.py b/src/amd/vulkan/radv_extensions.py index eeb679d..4af137c 100644 --- a/src/amd/vulkan/radv_extensions.py +++ b/src/amd/vulkan/radv_extensions.py @@ -78,6 +78,7 @@ EXTENSIONS = [ Extension('VK_KHR_xlib_surface', 6, 'VK_USE_PLATFORM_XLIB_KHR'), Extension('VK_KHX_multiview', 1, True), Extension('VK_EXT_debug_report', 8, True), +Extension('VK_EXT_external_memory_dma_buf', 1, True), Extension('VK_EXT_global_priority', 1, 'device->rad_info.has_ctx_priority'), Extension('VK_AMD_draw_indirect_count', 1, True), Extension('VK_AMD_rasterization_order', 1, 'device->rad_info.chip_class >= VI && device->rad_info.max_se >= 2'), diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c index 5c79ea7..c008c1b 100644 --- a/src/amd/vulkan/radv_formats.c +++ b/src/amd/vulkan/radv_formats.c @@ -1182,7 +1182,8 @@ get_external_image_format_properties(const VkPhysicalDeviceImageFormatInfo2KHR * switch (pImageFormatInfo->type) { case VK_IMAGE_TYPE_2D: flags = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR|VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR; - compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR; + compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR | + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; break; default: break; @@ -1241,6 +1242,7 @@ VkResult radv_GetPhysicalDeviceImageFormatProperties2KHR( if (external_info && external_info->handleType != 0) { switch (external_info->handleType) { case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR: + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT: get_external_image_format_properties(base_info, _props->externalMemoryProperties); break; default: @@ -1309,9 +1311,11 @@ void radv_GetPhysicalDeviceExternalBufferPropertiesKHR( VkExternalMemoryHandleTypeFlagsKHR compat_flags = 0; switch(pExternalBufferInfo->handleType) { case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR: + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT: flags = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR | VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR; - compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR; + compat_flags = export_flags = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR | + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; break; default: break; -- 2.5.0.400.gff86faf ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev