summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChad Versace <chadversary@google.com>2017-06-13 02:58:16 -0700
committerChad Versace <chad@kiwitree.net>2017-06-30 09:49:42 -0700
commit63d6783940d2e3cf11129dc8fe9f1eb1c25694b6 (patch)
tree93a265b0abe069ac50bfa461f1715ef888a8e3b1
parent671fd5cbeee0fb42559d547deb4ca0075a5340e8 (diff)
downloadvulkan-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.txt100
-rw-r--r--doc/specs/vulkan/appendices/extensions.txt10
-rw-r--r--doc/specs/vulkan/chapters/devsandqueues.txt8
-rw-r--r--doc/specs/vulkan/chapters/features.txt11
-rw-r--r--doc/specs/vulkan/chapters/memory.txt23
-rw-r--r--doc/specs/vulkan/config/extDependency.py3
-rw-r--r--doc/specs/vulkan/config/extDependency.sh3
-rw-r--r--src/spec/vk.xml7
-rw-r--r--src/vulkan/vulkan.h6
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="&quot;VK_MVK_moltenvk&quot;" 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="&quot;VK_MESA_extension_126&quot;" name="VK_MESA_EXTENSION_126_EXTENSION_NAME"/>
+ <enum value="1" name="VK_MESAX_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/>
+ <enum value="&quot;VK_MESAX_external_memory_dma_buf&quot;" 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"