From: Chad Versace <chadvers...@chromium.org> Update vulkan.h and vk.xml from [1]: git://github.com/chadversary/vulkan-spec refs/tags/chadv/test/2017-03-06-VK_MESAX_external
This pulls in the following extensions: - VK_EXT_get_image_properties - VK_MESAX_external_memory_dma_buf - VK_MESAX_external_image_dma_buf WARNING: These extension are still drafts. Khronos has not yet merged them into the Vulkan spec. Up-to-date extension drafts and headers are in my work-in-progress branch [2]. Reference[1]: https://github.com/chadversary/vulkan-spec/commits/chadv/test/2017-03-06-VK_MESAX_external Reference[2]: https://github.com/chadversary/vulkan-spec/commits/wip/1.0-VK_MESAX_external Signed-off-by: Daniel Stone <dani...@collabora.com> --- include/vulkan/vulkan.h | 104 ++++++++++++++++++++++++++++++++++++++++ src/vulkan/registry/vk.xml | 117 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 209 insertions(+), 12 deletions(-) diff --git a/include/vulkan/vulkan.h b/include/vulkan/vulkan.h index 51e5e9e313..dd8c8b40f6 100644 --- a/include/vulkan/vulkan.h +++ b/include/vulkan/vulkan.h @@ -304,6 +304,13 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000, VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, + VK_STRUCTURE_TYPE_DMA_BUF_FORMAT_PROPERTIES_MESAX = 1000126000, + VK_STRUCTURE_TYPE_DMA_BUF_IMAGE_FORMAT_PROPERTIES_MESAX = 1000126001, + VK_STRUCTURE_TYPE_IMPORT_IMAGE_DMA_BUF_INFO_MESAX = 1000126002, + VK_STRUCTURE_TYPE_EXPORT_IMAGE_DMA_BUF_INFO_MESAX = 1000126003, + VK_STRUCTURE_TYPE_IMAGE_PROPERTIES_MESAX = 1000126004, + VK_STRUCTURE_TYPE_IMAGE_DMA_BUF_PROPERTIES_MESAX = 1000126005, + VK_STRUCTURE_TYPE_IMAGE_PROPERTIES_EXT = 1000199000, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), @@ -4940,6 +4947,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 = 0x00020000, VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF } VkExternalMemoryHandleTypeFlagBitsKHX; typedef VkFlags VkExternalMemoryHandleTypeFlagsKHX; @@ -5919,6 +5927,102 @@ 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 0 +#define VK_MESAX_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_MESAX_external_memory_dma_buf" + + +#define VK_MESAX_external_image_dma_buf 1 +#define VK_MESAX_EXTERNAL_IMAGE_DMA_BUF_SPEC_VERSION 0 +#define VK_MESAX_EXTERNAL_IMAGE_DMA_BUF_EXTENSION_NAME "VK_MESAX_external_image_dma_buf" + +typedef struct VkDmaBufFormatModifierPropertiesMESAX { + uint64_t drmFormatModifier; + VkFormatFeatureFlags imageFeatures; +} VkDmaBufFormatModifierPropertiesMESAX; + +typedef struct VkDmaBufFormatPropertiesMESAX { + VkStructureType sType; + void* pNext; + uint32_t modifierCount; + VkDmaBufFormatModifierPropertiesMESAX* pModifierProperties; +} VkDmaBufFormatPropertiesMESAX; + +typedef struct VkDmaBufImageFormatModifierPropertiesMESAX { + uint64_t drmFormatModifier; + VkDeviceSize maxRowPitch; + VkDeviceSize rowPitchAlignment; + VkImageFormatProperties imageFormatProperties; +} VkDmaBufImageFormatModifierPropertiesMESAX; + +typedef struct VkDmaBufImageFormatPropertiesMESAX { + VkStructureType sType; + void* pNext; + uint32_t modifierCount; + VkDmaBufImageFormatModifierPropertiesMESAX* pModifierProperties; +} VkDmaBufImageFormatPropertiesMESAX; + +typedef struct VkImportImageDmaBufPlaneInfoMESAX { + VkDeviceSize offset; + VkDeviceSize size; + VkDeviceSize rowPitch; +} VkImportImageDmaBufPlaneInfoMESAX; + +typedef struct VkImportImageDmaBufInfoMESAX { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + uint32_t planeCount; + const VkImportImageDmaBufPlaneInfoMESAX* pPlanes; +} VkImportImageDmaBufInfoMESAX; + +typedef struct VkExportImageDmaBufInfoMESAX { + VkStructureType sType; + const void* pNext; + uint32_t drmFormatModifierCount; + const uint64_t* pDrmFormatModifiers; +} VkExportImageDmaBufInfoMESAX; + +typedef struct VkImagePropertiesMESAX { + VkStructureType sType; + void* pNext; +} VkImagePropertiesMESAX; + +typedef struct VkImageDmaBufPlanePropertiesMESAX { + VkDeviceSize offset; + VkDeviceSize size; + VkDeviceSize rowPitch; +} VkImageDmaBufPlanePropertiesMESAX; + +typedef struct VkImageDmaBufPropertiesMESAX { + VkStructureType sType; + void* pNext; + uint64_t drmFormatModifier; + uint32_t planeCount; + VkImageDmaBufPlanePropertiesMESAX* pPlanes; +} VkImageDmaBufPropertiesMESAX; + + + +#define VK_EXT_get_image_properties 1 +#define VK_EXT_GET_IMAGE_PROPERTIES_SPEC_VERSION 1 +#define VK_EXT_GET_IMAGE_PROPERTIES_EXTENSION_NAME "VK_EXT_get_image_properties" + +typedef struct VkImagePropertiesEXT { + VkStructureType sType; + void* pNext; +} VkImagePropertiesEXT; + + +typedef VkResult (VKAPI_PTR *PFN_vkGetImagePropertiesEXT)(VkDevice device, VkImage image, VkImagePropertiesEXT* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImagePropertiesEXT( + VkDevice device, + VkImage image, + VkImagePropertiesEXT* pProperties); +#endif + #ifdef __cplusplus } #endif diff --git a/src/vulkan/registry/vk.xml b/src/vulkan/registry/vk.xml index 1beed0b798..f62892d779 100644 --- a/src/vulkan/registry/vk.xml +++ b/src/vulkan/registry/vk.xml @@ -2275,6 +2275,66 @@ maintained in the master branch of the Khronos Vulkan GitHub project. <member noautovalidity="true"><type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure --> <member optional="true"><type>VkImageUsageFlags</type> <name>sharedPresentSupportedUsageFlags</name></member> <!-- Supported image usage flags if swapchain created using a shared present mode --> </type> + <type category="struct" name="VkImagePropertiesEXT"> + <member values="VK_STRUCTURE_TYPE_IMAGE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + </type> + <type category="struct" name="VkDmaBufFormatModifierPropertiesMESAX"> + <member><type>uint64_t</type> <name>drmFormatModifier</name></member> + <member><type>VkFormatFeatureFlags</type> <name>imageFeatures</name></member> + </type> + <type category="struct" name="VkDmaBufFormatPropertiesMESAX"> + <member values="VK_STRUCTURE_TYPE_DMA_BUF_FORMAT_PROPERTIES_MESAX"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>modifierCount</name></member> + <member optional="true" len="modifierCount"><type>VkDmaBufFormatModifierPropertiesMESAX</type>* <name>pModifierProperties</name></member> + </type> + <type category="struct" name="VkDmaBufImageFormatModifierPropertiesMESAX"> + <member><type>uint64_t</type> <name>drmFormatModifier</name></member> + <member><type>VkDeviceSize</type> <name>maxRowPitch</name></member> + <member><type>VkDeviceSize</type> <name>rowPitchAlignment</name></member> + <member><type>VkImageFormatProperties</type> <name>imageFormatProperties</name></member> + </type> + <type category="struct" name="VkDmaBufImageFormatPropertiesMESAX"> + <member values="VK_STRUCTURE_TYPE_DMA_BUF_IMAGE_FORMAT_PROPERTIES_MESAX"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>modifierCount</name></member> + <member optional="true" len="modifierCount"><type>VkDmaBufImageFormatModifierPropertiesMESAX</type>* <name>pModifierProperties</name></member> + </type> + <type category="struct" name="VkImportImageDmaBufPlaneInfoMESAX"> + <member><type>VkDeviceSize</type> <name>offset</name></member> + <member><type>VkDeviceSize</type> <name>size</name></member> + <member><type>VkDeviceSize</type> <name>rowPitch</name></member> + </type> + <type category="struct" name="VkImportImageDmaBufInfoMESAX"> + <member values="VK_STRUCTURE_TYPE_IMPORT_IMAGE_DMA_BUF_INFO_MESAX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member><type>uint64_t</type> <name>drmFormatModifier</name></member> + <member optional="true"><type>uint32_t</type> <name>planeCount</name></member> + <member len="planeCount">const <type>VkImportImageDmaBufPlaneInfoMESAX</type>* <name>pPlanes</name></member> + </type> + <type category="struct" name="VkExportImageDmaBufInfoMESAX"> + <member values="VK_STRUCTURE_TYPE_EXPORT_IMAGE_DMA_BUF_INFO_MESAX"><type>VkStructureType</type> <name>sType</name></member> + <member>const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>drmFormatModifierCount</name></member> + <member len="drmFormatModifierCount">const <type>uint64_t</type>* <name>pDrmFormatModifiers</name></member> + </type> + <type category="struct" name="VkImagePropertiesMESAX"> + <member values="VK_STRUCTURE_TYPE_IMAGE_PROPERTIES_MESAX"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + </type> + <type category="struct" name="VkImageDmaBufPlanePropertiesMESAX"> + <member><type>VkDeviceSize</type> <name>offset</name></member> + <member><type>VkDeviceSize</type> <name>size</name></member> + <member><type>VkDeviceSize</type> <name>rowPitch</name></member> + </type> + <type category="struct" name="VkImageDmaBufPropertiesMESAX"> + <member values="VK_STRUCTURE_TYPE_IMAGE_DMA_BUF_PROPERTIES_MESAX"><type>VkStructureType</type> <name>sType</name></member> + <member><type>void</type>* <name>pNext</name></member> + <member><type>uint64_t</type> <name>drmFormatModifier</name></member> + <member optional="true"><type>uint32_t</type> <name>planeCount</name></member> + <member optional="true" len="planeCount"><type>VkImageDmaBufPlanePropertiesMESAX</type>* <name>pPlanes</name></member> + </type> </types> <!-- SECTION: Vulkan enumerant (token) definitions. --> @@ -4866,6 +4926,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. <param optional="false,true"><type>uint32_t</type>* <name>pSurfaceFormatCount</name></param> <param optional="true" len="pSurfaceFormatCount"><type>VkSurfaceFormat2KHR</type>* <name>pSurfaceFormats</name></param> </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkGetImagePropertiesEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param><type>VkImage</type> <name>image</name></param> + <param><type>VkImagePropertiesEXT</type>* <name>pProperties</name></param> + </command> </commands> <!-- SECTION: Vulkan API interface definitions --> @@ -6302,18 +6368,36 @@ maintained in the master branch of the Khronos Vulkan GitHub project. <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"> - <require> - <enum value="0" name="VK_MESA_EXTENSION_126_SPEC_VERSION"/> - <enum value=""VK_MESA_extension_126"" name="VK_MESA_EXTENSION_126_EXTENSION_NAME"/> - </require> - </extension> - <extension name="VK_MESA_extension_127" number="127" author="MESA" contact="Chad Versace @chadversary" supported="disabled"> - <require> - <enum value="0" name="VK_MESA_EXTENSION_127_SPEC_VERSION"/> - <enum value=""VK_MESA_extension_127"" name="VK_MESA_EXTENSION_127_EXTENSION_NAME"/> - </require> - </extension> + <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_MESAX_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/> + <enum value=""VK_MESAX_external_memory_dma_buf"" name="VK_MESAX_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"/> + <!-- FINISHME(mesa): placeholder bitpos --> + <enum bitpos="17" extends="VkExternalMemoryHandleTypeFlagBitsKHX" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_MESAX"/> + </require> + </extension> + <extension name="VK_MESAX_external_image_dma_buf" number="127" type="device" requires="VK_MESAX_external_memory_dma_buf" author="MESA" contact="Chad Versace @chadversary" supported="vulkan"> + <require> + <enum value="0" name="VK_MESAX_EXTERNAL_IMAGE_DMA_BUF_SPEC_VERSION"/> + <enum value=""VK_MESAX_external_image_dma_buf"" name="VK_MESAX_EXTERNAL_IMAGE_DMA_BUF_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DMA_BUF_FORMAT_PROPERTIES_MESAX"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DMA_BUF_IMAGE_FORMAT_PROPERTIES_MESAX"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_IMAGE_DMA_BUF_INFO_MESAX"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_IMAGE_DMA_BUF_INFO_MESAX"/> + <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PROPERTIES_MESAX"/> + <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_DMA_BUF_PROPERTIES_MESAX"/> + <type name="VkDmaBufFormatPropertiesMESAX"/> + <type name="VkDmaBufFormatModifierPropertiesMESAX"/> + <type name="VkDmaBufImageFormatPropertiesMESAX"/> + <type name="VkDmaBufImageFormatModifierPropertiesMESAX"/> + <type name="VkImportImageDmaBufInfoMESAX"/> + <type name="VkImportImageDmaBufPlaneInfoMESAX"/> + <type name="VkExportImageDmaBufInfoMESAX"/> + <type name="VkImagePropertiesMESAX"/> + <type name="VkImageDmaBufPropertiesMESAX"/> + <type name="VkImageDmaBufPlanePropertiesMESAX"/> + </require> + </extension> <extension name="VK_KHR_extension_128" number="128" author="KHR" contact="James Jones @cubanismo" supported="disabled"> <require> <enum value="0" name="VK_KHR_EXTENSION_128_SPEC_VERSION"/> @@ -6488,5 +6572,14 @@ maintained in the master branch of the Khronos Vulkan GitHub project. <enum value=""VK_NV_extension_156"" name="VK_NV_EXTENSION_156_EXTENSION_NAME"/> </require> </extension> + <extension name="VK_EXT_get_image_properties" number="159" type="device" author="EXT" contact="Chad Versace @chadversary" supported="vulkan"> + <require> + <enum value="1" name="VK_EXT_GET_IMAGE_PROPERTIES_SPEC_VERSION"/> + <enum value=""VK_EXT_get_image_properties"" name="VK_EXT_GET_IMAGE_PROPERTIES_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PROPERTIES_EXT"/> + <type name="VkImagePropertiesEXT"/> + <command name="vkGetImagePropertiesEXT"/> + </require> + </extension> </extensions> </registry> -- 2.13.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev