diff options
author | Chad Versace <chadversary@google.com> | 2017-06-13 02:58:16 -0700 |
---|---|---|
committer | Chad Versace <chad@kiwitree.net> | 2017-06-30 09:49:42 -0700 |
commit | 63d6783940d2e3cf11129dc8fe9f1eb1c25694b6 (patch) | |
tree | 93a265b0abe069ac50bfa461f1715ef888a8e3b1 | |
parent | 671fd5cbeee0fb42559d547deb4ca0075a5340e8 (diff) | |
download | vulkan-spec-1.0-VK_MESAX_external_memory_dma_buf.zip vulkan-spec-1.0-VK_MESAX_external_memory_dma_buf.tar.xz |
VK_MESAX_external_memory_dma_buf: New extension1.0-VK_MESAX_external_memory_dma_buf
-rw-r--r-- | doc/specs/vulkan/appendices/VK_MESAX_external_memory_dma_buf.txt | 100 | ||||
-rw-r--r-- | doc/specs/vulkan/appendices/extensions.txt | 10 | ||||
-rw-r--r-- | doc/specs/vulkan/chapters/devsandqueues.txt | 8 | ||||
-rw-r--r-- | doc/specs/vulkan/chapters/features.txt | 11 | ||||
-rw-r--r-- | doc/specs/vulkan/chapters/memory.txt | 23 | ||||
-rw-r--r-- | doc/specs/vulkan/config/extDependency.py | 3 | ||||
-rw-r--r-- | doc/specs/vulkan/config/extDependency.sh | 3 | ||||
-rw-r--r-- | src/spec/vk.xml | 7 | ||||
-rw-r--r-- | src/vulkan/vulkan.h | 6 |
9 files changed, 153 insertions, 18 deletions
diff --git a/doc/specs/vulkan/appendices/VK_MESAX_external_memory_dma_buf.txt b/doc/specs/vulkan/appendices/VK_MESAX_external_memory_dma_buf.txt new file mode 100644 index 0000000..02aebf3 --- /dev/null +++ b/doc/specs/vulkan/appendices/VK_MESAX_external_memory_dma_buf.txt @@ -0,0 +1,100 @@ +[[VK_MESAX_external_memory_dma_buf]] +== VK_MESAX_external_memory_dma_buf + +*Name String*:: + VK_MESAX_external_memory_dma_buf +*Extension Type*:: + Device extension +*Registered Extension Number*:: + 126 +*Status*:: + Draft +*Last Modified Date*:: + 2017-06-30 +*Revision*:: + 1.0 +*IP Status*:: + No known IP claims. +*Dependencies*:: + - This extension is written against version 1.0.53 of the Vulkan API. + - Requires <<VK_KHX_external_memory_fd>>. + - Interacts with <<VK_KHX_external_memory_capabilities>>. +*Contributors*:: + - Chad Versace, Google <chadversary@chromium.org> + - James Jones <jajones@nvidia.com> + - Jason Ekstrand <jason.ekstrand@intel.com> +*Contact*:: + - Chad Versace, Google <chadversary@chromium.org> + +A dma_buf is a type of file descriptor, defined by the Linux kernel, that +allows sharing memory across kernel device drivers and across processes. + +This extension enables applications to import a dma_buf as +slink:VkDeviceMemory; to export slink:VkDeviceMemory as a dma_buf; and to +create slink:VkBuffer and slink:VkImage objects that can: be bound to that +memory. + +[NOTE] +.Note +==== +This extension is *experimental* and will be removed in a future version of +this specification. This extension is published here to provide vendors and +application developers an opportunity to provide feedback. Vendors should: not +expose this extension in implementations distributed to the general public. +==== + +=== New Object Types + +None. + +=== New Enum Constants + + * Extending elink:VkExternalMemoryHandleTypeFlagBitsKHX: + ** ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX + +=== New Enums + +None. + +=== New Structs + +None. + +=== New Functions + +None. + +=== Issues + +None. + +=== Issues + +1. How does the application, when creating a VkImage that it intends to bind to + dma_buf VkDeviceMemory that contains an externally produced image, specify + the memory layout (such as row pitch and DRM format modifier) of the VkImage? + In other words, how does the application achieve behavior comparable to that provided by + https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt[EGL_EXT_image_dma_buf_import] and + https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt[EGL_EXT_image_dma_buf_import_modifiers]? ++ +-- +*RESOLVED*. Features comparable to those in +https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt[EGL_EXT_image_dma_buf_import] and +https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt[EGL_EXT_image_dma_buf_import_modifiers] +will be provided by an extension layered atop this one. +-- + +2. Without the ability to specify the memory layout of external dma_buf images, + how is this extension useful? ++ +-- +*RESOLVED*. This extension provides exactly one new feature: the ability to +import/export between dma_bufs and slink:VkDeviceMemory. This feature, together +with features provided by <<VK_KHX_external_memory_fd>>, is sufficient to bind +VkBuffers to dma_buf-backed VkDeviceMemory. +-- + +=== Version History + + * Revision 1.0, 2017-06-30 (Chad Versace) + - Squashed internal revisions diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt index 17a9cb2..8ce79de 100644 --- a/doc/specs/vulkan/appendices/extensions.txt +++ b/doc/specs/vulkan/appendices/extensions.txt @@ -319,6 +319,15 @@ endif::VK_IMG_filter_cubic[] // :leveloffset: 1 +// == Mesa `MESAX` Vendor Extensions +// +// :leveloffset: 2 + +ifdef::VK_MESAX_external_memory_dma_buf[] +include::VK_MESAX_external_memory_dma_buf.txt[] +endif::VK_MESAX_external_memory_dma_buf[] + +// :leveloffset: 1 // == MoltenVK `MVK` Vendor Extensions // @@ -343,7 +352,6 @@ ifdef::VK_NN_vi_surface[] include::VK_NN_vi_surface.txt[] endif::VK_NN_vi_surface[] - // == NVIDIA `NV` Vendor Extensions // // :leveloffset: 2 diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt index 5e9c39c..9163807 100644 --- a/doc/specs/vulkan/chapters/devsandqueues.txt +++ b/doc/specs/vulkan/chapters/devsandqueues.txt @@ -246,8 +246,12 @@ include::../api/structs/VkPhysicalDeviceIDPropertiesKHX.txt[] pname:deviceUUID must: be immutable for a given device across instances, processes, driver APIs, and system reboots. -pname:driverUUID must: be identical in all driver components that support -sharing external objects between eachother. +If a pair of driver components support sharing external objects with each other +through any handle type in elink:VkExternalMemoryHandleTypeFlagsKHX, +ifdef::VK_MESAX_external_memory_dma_buf[] +other than ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX, +endif::VK_MESAX_external_memory_dma_buf[] +then pname:driverUUID must be identical in both components. Applications can: compare this value across instance and process boundaries, and can: make similar queries in external APIs to determine whether they are capable of sharing memory objects and resources using them with the device. diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index 33dc446..65ebc98 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -4233,9 +4233,8 @@ If pname:handleType is 0, flink:vkGetPhysicalDeviceImageFormatProperties2KHR will behave as if slink:VkPhysicalDeviceExternalImageFormatInfoKHX was not present, and slink:VkExternalImageFormatPropertiesKHX will be ignored. -If pname:handleType is not compatible with the pname:format, pname:type, -pname:tiling, pname:usage, and pname:flags specified in -slink:VkPhysicalDeviceImageFormatInfo2KHR, then +If pname:handleType is not compatible with the parameters specified in +slink:VkPhysicalDeviceImageFormatInfo2KHR and its pname:pNext chain, then flink:vkGetPhysicalDeviceImageFormatProperties2KHR returns ename:VK_ERROR_FORMAT_NOT_SUPPORTED. @@ -4294,6 +4293,12 @@ include::../api/enums/VkExternalMemoryHandleTypeFlagBitsKHX.txt[] NT handle returned by code:ID3D12Device::code:CreateSharedHandle referring to a Direct3D 12 committed resource. It owns a reference to the memory used by the Direct3D resource. +ifdef::VK_MESAX_external_memory_dma_buf[] + * ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX is a file + descriptor for a Linux dma_buf. + It owns a reference to the underlying memory resource represented by + its Vulkan memory object. +endif::VK_MESAX_external_memory_dma_buf[] -- diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt index cf15fbb..14a4d8f 100644 --- a/doc/specs/vulkan/chapters/memory.txt +++ b/doc/specs/vulkan/chapters/memory.txt @@ -891,12 +891,20 @@ endif::VK_KHX_external_memory_win32,VK_KHX_external_memory_fd[] ifdef::VK_KHX_external_memory+VK_KHX_device_group[] * [[VUID-VkMemoryAllocateInfo-None-00643]] If the parameters define an import operation and the external handle - specified was created by the Vulkan API, the device mask specified by + specified was created by the Vulkan API, +ifdef::VK_MESAX_external_memory_dma_buf[] + and the external handle type is not ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX, +endif::VK_MESAX_external_memory_dma_buf[] + the device mask specified by slink:VkMemoryAllocateFlagsInfoKHX must: match that specified when the memory object being imported was allocated. * [[VUID-VkMemoryAllocateInfo-None-00644]] - If the parameters define an import operation and the external handle - specified was created by the Vulkan API, the list of physical devices + If the parameters define an import operation, the external handle + specified was created by the Vulkan API, +ifdef::VK_MESAX_external_memory_dma_buf[] + and the external handle type is not ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX, +endif::VK_MESAX_external_memory_dma_buf[] + then the list of physical devices that comprise the logical device passed to flink:vkAllocateMemory must: match the list of physical devices that comprise the logical device on which the memory was originally allocated. @@ -1232,8 +1240,7 @@ ifdef::VK_KHX_external_memory_fd[] [open,refpage='VkImportMemoryFdInfoKHX',desc='import memory created on the same physical device from a file descriptor',type='structs'] -- -To import memory created on the same underlying physical device but outside -of the current Vulkan instance from a POSIX file descriptor handle, add a +To import memory from a POSIX file descriptor handle, add a slink:VkImportMemoryFdInfoKHX structure to the pname:pNext chain of the slink:VkMemoryAllocateInfo structure. The sname:VkImportMemoryFdInfoKHX structure is defined as: @@ -1257,7 +1264,8 @@ after a successful import. reported by slink:VkExternalImageFormatPropertiesKHX or slink:VkExternalBufferPropertiesKHX. * [[VUID-VkImportMemoryFdInfoKHX-fd-00668]] - The memory from which pname:fd was exported must: have been created on + If pname:handleType is ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX, + the memory from which pname:fd was exported must: have been created on the same underlying physical device as pname:device. * [[VUID-VkImportMemoryFdInfoKHX-handleType-00669]] If pname:handleType is not `0`, it must: be defined as a POSIX file @@ -1331,7 +1339,8 @@ include::../api/protos/vkGetMemoryFdPropertiesKHX.txt[] pname:fd must: be an external memory handle created outside of the Vulkan API. * [[VUID-vkGetMemoryFdPropertiesKHX-handleType-00674]] - pname:handleType must: not be one of the handle types defined as opaque. + pname:handleType must: not be + ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX. **** include::../validity/protos/vkGetMemoryFdPropertiesKHX.txt[] diff --git a/doc/specs/vulkan/config/extDependency.py b/doc/specs/vulkan/config/extDependency.py index 5ea4962..82975dd 100644 --- a/doc/specs/vulkan/config/extDependency.py +++ b/doc/specs/vulkan/config/extDependency.py @@ -37,6 +37,7 @@ extensions['VK_KHX_external_semaphore_fd'] = [ 'VK_KHR_get_physical_device_prope extensions['VK_KHX_external_semaphore_win32'] = [ 'VK_KHR_get_physical_device_properties2', 'VK_KHX_external_semaphore', 'VK_KHX_external_semaphore_capabilities' ] extensions['VK_KHX_multiview'] = [ 'VK_KHR_get_physical_device_properties2' ] extensions['VK_KHX_win32_keyed_mutex'] = [ 'VK_KHR_get_physical_device_properties2', 'VK_KHX_external_memory', 'VK_KHX_external_memory_capabilities', 'VK_KHX_external_memory_win32' ] +extensions['VK_MESAX_external_memory_dma_buf'] = [ 'VK_KHR_get_physical_device_properties2', 'VK_KHX_external_memory', 'VK_KHX_external_memory_capabilities', 'VK_KHX_external_memory_fd' ] extensions['VK_MVK_ios_surface'] = [ 'VK_KHR_surface' ] extensions['VK_MVK_macos_surface'] = [ 'VK_KHR_surface' ] extensions['VK_NN_vi_surface'] = [ 'VK_KHR_surface' ] @@ -45,6 +46,6 @@ extensions['VK_NV_external_memory_win32'] = [ 'VK_NV_external_memory', 'VK_NV_ex extensions['VK_NV_win32_keyed_mutex'] = [ 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32' ] # Define lists of all / KHR / KHX extensions -allExts = [ 'VK_AMD_draw_indirect_count', 'VK_AMD_gcn_shader', 'VK_AMD_gpu_shader_half_float', 'VK_AMD_gpu_shader_int16', 'VK_AMD_negative_viewport_height', 'VK_AMD_rasterization_order', 'VK_AMD_shader_ballot', 'VK_AMD_shader_explicit_vertex_parameter', 'VK_AMD_shader_trinary_minmax', 'VK_AMD_texture_gather_bias_lod', 'VK_EXT_acquire_xlib_display', 'VK_EXT_blend_operation_advanced', 'VK_EXT_debug_marker', 'VK_EXT_debug_report', 'VK_EXT_direct_mode_display', 'VK_EXT_discard_rectangles', 'VK_EXT_display_control', 'VK_EXT_display_surface_counter', 'VK_EXT_hdr_metadata', 'VK_EXT_sampler_filter_minmax', 'VK_EXT_shader_subgroup_ballot', 'VK_EXT_shader_subgroup_vote', 'VK_EXT_swapchain_colorspace', 'VK_EXT_validation_flags', 'VK_GOOGLE_display_timing', 'VK_IMG_filter_cubic', 'VK_IMG_format_pvrtc', 'VK_KHR_android_surface', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_wayland_surface', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface', 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_external_memory', 'VK_KHX_external_memory_capabilities', 'VK_KHX_external_memory_fd', 'VK_KHX_external_memory_win32', 'VK_KHX_external_semaphore', 'VK_KHX_external_semaphore_capabilities', 'VK_KHX_external_semaphore_fd', 'VK_KHX_external_semaphore_win32', 'VK_KHX_multiview', 'VK_KHX_win32_keyed_mutex', 'VK_MVK_ios_surface', 'VK_MVK_macos_surface', 'VK_NN_vi_surface', 'VK_NVX_device_generated_commands', 'VK_NVX_multiview_per_view_attributes', 'VK_NV_clip_space_w_scaling', 'VK_NV_dedicated_allocation', 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32', 'VK_NV_fill_rectangle', 'VK_NV_fragment_coverage_to_color', 'VK_NV_framebuffer_mixed_samples', 'VK_NV_geometry_shader_passthrough', 'VK_NV_glsl_shader', 'VK_NV_sample_mask_override_coverage', 'VK_NV_viewport_array2', 'VK_NV_viewport_swizzle', 'VK_NV_win32_keyed_mutex' ] +allExts = [ 'VK_AMD_draw_indirect_count', 'VK_AMD_gcn_shader', 'VK_AMD_gpu_shader_half_float', 'VK_AMD_gpu_shader_int16', 'VK_AMD_negative_viewport_height', 'VK_AMD_rasterization_order', 'VK_AMD_shader_ballot', 'VK_AMD_shader_explicit_vertex_parameter', 'VK_AMD_shader_trinary_minmax', 'VK_AMD_texture_gather_bias_lod', 'VK_EXT_acquire_xlib_display', 'VK_EXT_blend_operation_advanced', 'VK_EXT_debug_marker', 'VK_EXT_debug_report', 'VK_EXT_direct_mode_display', 'VK_EXT_discard_rectangles', 'VK_EXT_display_control', 'VK_EXT_display_surface_counter', 'VK_EXT_hdr_metadata', 'VK_EXT_sampler_filter_minmax', 'VK_EXT_shader_subgroup_ballot', 'VK_EXT_shader_subgroup_vote', 'VK_EXT_swapchain_colorspace', 'VK_EXT_validation_flags', 'VK_GOOGLE_display_timing', 'VK_IMG_filter_cubic', 'VK_IMG_format_pvrtc', 'VK_KHR_android_surface', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_wayland_surface', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface', 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_external_memory', 'VK_KHX_external_memory_capabilities', 'VK_KHX_external_memory_fd', 'VK_KHX_external_memory_win32', 'VK_KHX_external_semaphore', 'VK_KHX_external_semaphore_capabilities', 'VK_KHX_external_semaphore_fd', 'VK_KHX_external_semaphore_win32', 'VK_KHX_multiview', 'VK_KHX_win32_keyed_mutex', 'VK_MESAX_external_memory_dma_buf', 'VK_MVK_ios_surface', 'VK_MVK_macos_surface', 'VK_NN_vi_surface', 'VK_NVX_device_generated_commands', 'VK_NVX_multiview_per_view_attributes', 'VK_NV_clip_space_w_scaling', 'VK_NV_dedicated_allocation', 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32', 'VK_NV_fill_rectangle', 'VK_NV_fragment_coverage_to_color', 'VK_NV_framebuffer_mixed_samples', 'VK_NV_geometry_shader_passthrough', 'VK_NV_glsl_shader', 'VK_NV_sample_mask_override_coverage', 'VK_NV_viewport_array2', 'VK_NV_viewport_swizzle', 'VK_NV_win32_keyed_mutex' ] khrExts = [ 'VK_KHR_android_surface', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_wayland_surface', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface' ] khxExts = [ 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_external_memory', 'VK_KHX_external_memory_capabilities', 'VK_KHX_external_memory_fd', 'VK_KHX_external_memory_win32', 'VK_KHX_external_semaphore', 'VK_KHX_external_semaphore_capabilities', 'VK_KHX_external_semaphore_fd', 'VK_KHX_external_semaphore_win32', 'VK_KHX_multiview', 'VK_KHX_win32_keyed_mutex' ] diff --git a/doc/specs/vulkan/config/extDependency.sh b/doc/specs/vulkan/config/extDependency.sh index 1446be3..f82dc58 100644 --- a/doc/specs/vulkan/config/extDependency.sh +++ b/doc/specs/vulkan/config/extDependency.sh @@ -37,6 +37,7 @@ extensions[VK_KHX_external_semaphore_fd]="VK_KHR_get_physical_device_properties2 extensions[VK_KHX_external_semaphore_win32]="VK_KHR_get_physical_device_properties2 VK_KHX_external_semaphore VK_KHX_external_semaphore_capabilities" extensions[VK_KHX_multiview]="VK_KHR_get_physical_device_properties2" extensions[VK_KHX_win32_keyed_mutex]="VK_KHR_get_physical_device_properties2 VK_KHX_external_memory VK_KHX_external_memory_capabilities VK_KHX_external_memory_win32" +extensions[VK_MESAX_external_memory_dma_buf]="VK_KHR_get_physical_device_properties2 VK_KHX_external_memory VK_KHX_external_memory_capabilities VK_KHX_external_memory_fd" extensions[VK_MVK_ios_surface]="VK_KHR_surface" extensions[VK_MVK_macos_surface]="VK_KHR_surface" extensions[VK_NN_vi_surface]="VK_KHR_surface" @@ -45,6 +46,6 @@ extensions[VK_NV_external_memory_win32]="VK_NV_external_memory VK_NV_external_me extensions[VK_NV_win32_keyed_mutex]="VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32" # Define lists of all / KHR / KHX extensions -allExts="VK_AMD_draw_indirect_count VK_AMD_gcn_shader VK_AMD_gpu_shader_half_float VK_AMD_gpu_shader_int16 VK_AMD_negative_viewport_height VK_AMD_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_AMD_texture_gather_bias_lod VK_EXT_acquire_xlib_display VK_EXT_blend_operation_advanced VK_EXT_debug_marker VK_EXT_debug_report VK_EXT_direct_mode_display VK_EXT_discard_rectangles VK_EXT_display_control VK_EXT_display_surface_counter VK_EXT_hdr_metadata VK_EXT_sampler_filter_minmax VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_EXT_swapchain_colorspace VK_EXT_validation_flags VK_GOOGLE_display_timing VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_KHR_android_surface VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_surface VK_KHR_swapchain VK_KHR_wayland_surface VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_external_memory VK_KHX_external_memory_capabilities VK_KHX_external_memory_fd VK_KHX_external_memory_win32 VK_KHX_external_semaphore VK_KHX_external_semaphore_capabilities VK_KHX_external_semaphore_fd VK_KHX_external_semaphore_win32 VK_KHX_multiview VK_KHX_win32_keyed_mutex VK_MVK_ios_surface VK_MVK_macos_surface VK_NN_vi_surface VK_NVX_device_generated_commands VK_NVX_multiview_per_view_attributes VK_NV_clip_space_w_scaling VK_NV_dedicated_allocation VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32 VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_sample_mask_override_coverage VK_NV_viewport_array2 VK_NV_viewport_swizzle VK_NV_win32_keyed_mutex" +allExts="VK_AMD_draw_indirect_count VK_AMD_gcn_shader VK_AMD_gpu_shader_half_float VK_AMD_gpu_shader_int16 VK_AMD_negative_viewport_height VK_AMD_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_AMD_texture_gather_bias_lod VK_EXT_acquire_xlib_display VK_EXT_blend_operation_advanced VK_EXT_debug_marker VK_EXT_debug_report VK_EXT_direct_mode_display VK_EXT_discard_rectangles VK_EXT_display_control VK_EXT_display_surface_counter VK_EXT_hdr_metadata VK_EXT_sampler_filter_minmax VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_EXT_swapchain_colorspace VK_EXT_validation_flags VK_GOOGLE_display_timing VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_KHR_android_surface VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_surface VK_KHR_swapchain VK_KHR_wayland_surface VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_external_memory VK_KHX_external_memory_capabilities VK_KHX_external_memory_fd VK_KHX_external_memory_win32 VK_KHX_external_semaphore VK_KHX_external_semaphore_capabilities VK_KHX_external_semaphore_fd VK_KHX_external_semaphore_win32 VK_KHX_multiview VK_KHX_win32_keyed_mutex VK_MESAX_external_memory_dma_buf VK_MVK_ios_surface VK_MVK_macos_surface VK_NN_vi_surface VK_NVX_device_generated_commands VK_NVX_multiview_per_view_attributes VK_NV_clip_space_w_scaling VK_NV_dedicated_allocation VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32 VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_sample_mask_override_coverage VK_NV_viewport_array2 VK_NV_viewport_swizzle VK_NV_win32_keyed_mutex" khrExts="VK_KHR_android_surface VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_surface VK_KHR_swapchain VK_KHR_wayland_surface VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface" khxExts="VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_external_memory VK_KHX_external_memory_capabilities VK_KHX_external_memory_fd VK_KHX_external_memory_win32 VK_KHX_external_semaphore VK_KHX_external_semaphore_capabilities VK_KHX_external_semaphore_fd VK_KHX_external_semaphore_win32 VK_KHX_multiview VK_KHX_win32_keyed_mutex" diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 3959ca6..b749be0 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -6369,10 +6369,11 @@ private version is maintained in the 1.0 branch of the member gitlab server. <enum value=""VK_MVK_moltenvk"" name="VK_MVK_MOLTENVK_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_MESA_extension_126" number="126" author="MESA" contact="Chad Versace @chadversary" supported="disabled"> + <extension name="VK_MESAX_external_memory_dma_buf" number="126" type="device" requires="VK_KHX_external_memory_fd" author="MESA" contact="Chad Versace @chadversary" supported="vulkan"> <require> - <enum value="0" name="VK_MESA_EXTENSION_126_SPEC_VERSION"/> - <enum value=""VK_MESA_extension_126"" name="VK_MESA_EXTENSION_126_EXTENSION_NAME"/> + <enum value="1" name="VK_MESAX_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/> + <enum value=""VK_MESAX_external_memory_dma_buf"" name="VK_MESAX_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"/> + <enum bitpos="7" extends="VkExternalMemoryHandleTypeFlagBitsKHX" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX"/> </require> </extension> <extension name="VK_MESA_extension_127" number="127" author="MESA" contact="Chad Versace @chadversary" supported="disabled"> diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index 3255e7d..4ec32c2 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -5002,6 +5002,7 @@ typedef enum VkExternalMemoryHandleTypeFlagBitsKHX { VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX = 0x00000080, VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF } VkExternalMemoryHandleTypeFlagBitsKHX; typedef VkFlags VkExternalMemoryHandleTypeFlagsKHX; @@ -5981,6 +5982,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK( #endif #endif /* VK_USE_PLATFORM_MACOS_MVK */ +#define VK_MESAX_external_memory_dma_buf 1 +#define VK_MESAX_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 +#define VK_MESAX_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_MESAX_external_memory_dma_buf" + + #define VK_EXT_sampler_filter_minmax 1 #define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1 #define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" |