From 443a8b75fc843293bd2dd965902598c4d1e4f4d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 13 Jan 2021 21:30:40 +0100 Subject: [PATCH] external: expose VK_KHR_copy_commands2. At this point it's getting easier to say which commands *don't* have a "V2" yet. --- doc/developers.dox | 6 +- doc/vulkan-mapping.dox | 28 +++-- doc/vulkan-support.dox | 1 + src/Magnum/Vk/Device.h | 2 +- src/Magnum/Vk/Extensions.cpp | 1 + src/Magnum/Vk/Extensions.h | 5 +- src/MagnumExternal/Vulkan/extensions.txt | 1 + src/MagnumExternal/Vulkan/flextVk.cpp | 6 + src/MagnumExternal/Vulkan/flextVk.h | 141 +++++++++++++++++++++- src/MagnumExternal/Vulkan/flextVkGlobal.h | 12 ++ 10 files changed, 185 insertions(+), 18 deletions(-) diff --git a/doc/developers.dox b/doc/developers.dox index 48e602410..572bf7a37 100644 --- a/doc/developers.dox +++ b/doc/developers.dox @@ -737,9 +737,9 @@ unless it doesn't affect public API at all. - update the numbering to stay monotonic and unique, round up start index of next section to nearest ten to make the updates bearable - in case there's a lot of new extensions, - @cpp Implementation::InstanceExtensionCount @ce / - @cpp Implementation::DeviceExtensionCount @ce might needed to be - increased + @cpp Implementation::InstanceExtensionCount @ce in `Instance.h` / + @cpp Implementation::DeviceExtensionCount @ce in `Device.h` might + need to be increased 2. Add them alphabetically ordered to the correct list in `src/Magnum/Vk/Extensions.cpp` 3. Update existing extensions with version in which they become core (last diff --git a/doc/vulkan-mapping.dox b/doc/vulkan-mapping.dox index 0005c81b1..275063bf0 100644 --- a/doc/vulkan-mapping.dox +++ b/doc/vulkan-mapping.dox @@ -80,7 +80,7 @@ Vulkan function | Matching API @fn_vk{CmdBindIndexBuffer} | | @fn_vk{CmdBindPipeline} | | @fn_vk{CmdBindVertexBuffers} | | -@fn_vk{CmdBlitImage} | | +@fn_vk{CmdBlitImage}, \n @fn_vk{CmdBlitImage2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdBuildAccelerationStructuresIndirectKHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdBuildAccelerationStructuresKHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdClearAttachments} | | @@ -88,10 +88,10 @@ Vulkan function | Matching API @fn_vk{CmdClearDepthStencilImage} | | @fn_vk{CmdCopyAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdCopyAccelerationStructureToMemoryKHR} @m_class{m-label m-flat m-warning} **KHR** | | -@fn_vk{CmdCopyBuffer} | | -@fn_vk{CmdCopyBufferToImage} | | -@fn_vk{CmdCopyImage} | | -@fn_vk{CmdCopyImageToBuffer} | | +@fn_vk{CmdCopyBuffer}, \n @fn_vk{CmdCopyBuffer2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@fn_vk{CmdCopyBufferToImage}, \n @fn_vk{CmdCopyBufferToImage2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@fn_vk{CmdCopyImage}, \n @fn_vk{CmdCopyImage2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@fn_vk{CmdCopyImageToBuffer}, \n @fn_vk{CmdCopyImageToBuffer2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdCopyMemoryToAccelerationStructureKHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdCopyQueryPoolResults} | | @fn_vk{CmdDebugMarkerBeginEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT**, \n @fn_vk{CmdDebugMarkerEndEXT} @m_class{m-label m-danger} **deprecated** @m_class{m-label m-flat m-warning} **EXT** | | @@ -112,7 +112,7 @@ Vulkan function | Matching API @fn_vk{CmdPushConstants} | | @fn_vk{CmdResetEvent} | | @fn_vk{CmdResetQueryPool} | | -@fn_vk{CmdResolveImage} | | +@fn_vk{CmdResolveImage}, \n @fn_vk{CmdResolveImage2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdSetBlendConstants} | | @fn_vk{CmdSetDepthBias} | | @fn_vk{CmdSetDeviceMask} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @@ -363,10 +363,11 @@ Vulkan structure | Matching API @type_vk{BaseInStructure} | | @type_vk{BaseOutStructure} | | @type_vk{BindSparseInfo} | | -@type_vk{BufferCopy} | | +@type_vk{BlitImageInfo2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@type_vk{BufferCopy}, \n @type_vk{BufferCopy2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{BufferCreateInfo} | @ref BufferCreateInfo @type_vk{BufferDeviceAddressInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | | -@type_vk{BufferImageCopy} | | +@type_vk{BufferImageCopy}, \n @type_vk{BufferImageCopy2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{BufferMemoryBarrier} | | @type_vk{BufferMemoryRequirementsInfo}, \n @type_vk{BufferMemoryRequirementsInfo2} @m_class{m-label m-flat m-success} **KHR, 1.1** | not exposed, internal to @ref Buffer::memoryRequirements() @type_vk{BufferOpaqueCaptureAddressCreateInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | | @@ -390,6 +391,10 @@ Vulkan structure | Matching API @type_vk{ComponentMapping} | | @type_vk{ComputePipelineCreateInfo} | | @type_vk{ConformanceVersion} | | +@type_vk{CopyBufferInfo2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@type_vk{CopyBufferToImageInfo2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@type_vk{CopyImageInfo2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@type_vk{CopyImageToBuffer2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{CopyAccelerationStructureInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{CopyAccelerationStructureToMemoryInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{CopyMemoryToAccelerationStructureInfoKHR} @m_class{m-label m-flat m-warning} **KHR** | | @@ -486,8 +491,8 @@ Vulkan structure | Matching API Vulkan structure | Matching API --------------------------------------- | ------------ -@type_vk{ImageBlit} | | -@type_vk{ImageCopy} | | +@type_vk{ImageBlit}, \n @type_vk{ImageBlit2KHR} @m_class{m-label m-flat m-warning} **KHR** | | +@type_vk{ImageCopy}, \n @type_vk{ImageCopy2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{ImageCreateInfo} | @ref ImageCreateInfo @type_vk{ImageFormatListCreateInfo} @m_class{m-label m-flat m-success} **KHR, 1.2** | | @type_vk{ImageFormatProperties}, \n @type_vk{ImageFormatProperties2} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @@ -495,7 +500,7 @@ Vulkan structure | Matching API @type_vk{ImageMemoryBarrier} | | @type_vk{ImageMemoryRequirementsInfo}, \n @type_vk{ImageMemoryRequirementsInfo2} @m_class{m-label m-flat m-success} **KHR, 1.1** | not exposed, internal to @ref Image::memoryRequirements() @type_vk{ImagePlaneMemoryRequirementsInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | | -@type_vk{ImageResolve} | | +@type_vk{ImageResolve}, \n @type_vk{ImageResolve2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{ImageSparseMemoryRequirementsInfo2} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @type_vk{ImageStencilUsageCreateInfo} @m_class{m-label m-flat m-success} **EXT, 1.2** | | @type_vk{ImageViewCreateInfo} | @ref ImageViewCreateInfo @@ -644,6 +649,7 @@ Vulkan structure | Matching API @type_vk{RenderPassCreateInfo}, \n @type_vk{RenderPassCreateInfo2} @m_class{m-label m-flat m-success} **KHR, 1.2** | @ref RenderPassCreateInfo @type_vk{RenderPassMultiviewCreateInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @type_vk{RenderPassInputAttachmentAspectCreateInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | | +@type_vk{ResolveImageInfo2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @subsection vulkan-mapping-structures-s S diff --git a/doc/vulkan-support.dox b/doc/vulkan-support.dox index 295e81cd8..2a9457cf3 100644 --- a/doc/vulkan-support.dox +++ b/doc/vulkan-support.dox @@ -126,6 +126,7 @@ Extension | Status @vk_extension{KHR,portability_subset} | done except properties @vk_extension{KHR,deferred_host_operations} | | @vk_extension{KHR,pipeline_library} | | +@vk_extension{KHR,copy_commands2} | | @vk_extension{KHR,ray_tracing_pipeline} | | @vk_extension{KHR,ray_query} | | @vk_extension{IMG,format_pvrtc} | done diff --git a/src/Magnum/Vk/Device.h b/src/Magnum/Vk/Device.h index 40dfa7ae1..b9366d73f 100644 --- a/src/Magnum/Vk/Device.h +++ b/src/Magnum/Vk/Device.h @@ -44,7 +44,7 @@ namespace Magnum { namespace Vk { namespace Implementation { - enum: std::size_t { ExtensionCount = 72 }; + enum: std::size_t { ExtensionCount = 96 }; struct DeviceState; } diff --git a/src/Magnum/Vk/Extensions.cpp b/src/Magnum/Vk/Extensions.cpp index 8bb62501b..35e1606f2 100644 --- a/src/Magnum/Vk/Extensions.cpp +++ b/src/Magnum/Vk/Extensions.cpp @@ -73,6 +73,7 @@ constexpr Extension DeviceExtensions[] { Extensions::EXT::vertex_attribute_divisor{}, Extensions::IMG::format_pvrtc{}, Extensions::KHR::acceleration_structure{}, + Extensions::KHR::copy_commands2{}, Extensions::KHR::deferred_host_operations{}, Extensions::KHR::pipeline_library{}, Extensions::KHR::portability_subset{}, diff --git a/src/Magnum/Vk/Extensions.h b/src/Magnum/Vk/Extensions.h index 75261a7a3..b55a718bb 100644 --- a/src/Magnum/Vk/Extensions.h +++ b/src/Magnum/Vk/Extensions.h @@ -166,8 +166,9 @@ namespace EXT { _extension(67, KHR,buffer_device_address, Vk10, Vk12) // #258 _extension(68, KHR,deferred_host_operations, Vk10, None) // #259 _extension(69, KHR,pipeline_library, Vk10, None) // #291 - _extension(70, KHR,ray_tracing_pipeline, Vk11, None) // #348 - _extension(71, KHR,ray_query, Vk11, None) // #349 + _extension(70, KHR,copy_commands2, Vk10, None) // #338 + _extension(71, KHR,ray_tracing_pipeline, Vk11, None) // #348 + _extension(72, KHR,ray_query, Vk11, None) // #349 } #undef _extension diff --git a/src/MagnumExternal/Vulkan/extensions.txt b/src/MagnumExternal/Vulkan/extensions.txt index a631d97f1..c265a6a18 100644 --- a/src/MagnumExternal/Vulkan/extensions.txt +++ b/src/MagnumExternal/Vulkan/extensions.txt @@ -68,6 +68,7 @@ extension KHR_acceleration_structure optional extension KHR_portability_subset optional extension KHR_deferred_host_operations optional extension KHR_pipeline_library optional +extension KHR_copy_commands2 optional extension KHR_ray_tracing_pipeline optional extension KHR_ray_query optional diff --git a/src/MagnumExternal/Vulkan/flextVk.cpp b/src/MagnumExternal/Vulkan/flextVk.cpp index 515d9bef1..cbf1f0ba3 100644 --- a/src/MagnumExternal/Vulkan/flextVk.cpp +++ b/src/MagnumExternal/Vulkan/flextVk.cpp @@ -111,6 +111,12 @@ void flextVkInitDevice(VkDevice device, FlextVkDevice* data, PFN_vkVoidFunction( data->GetBufferDeviceAddressKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR")); data->GetBufferOpaqueCaptureAddressKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddressKHR")); data->GetDeviceMemoryOpaqueCaptureAddressKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR")); + data->CmdBlitImage2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBlitImage2KHR")); + data->CmdCopyBuffer2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyBuffer2KHR")); + data->CmdCopyBufferToImage2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyBufferToImage2KHR")); + data->CmdCopyImage2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyImage2KHR")); + data->CmdCopyImageToBuffer2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyImageToBuffer2KHR")); + data->CmdResolveImage2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdResolveImage2KHR")); data->CmdBeginRenderPass2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBeginRenderPass2KHR")); data->CmdEndRenderPass2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdEndRenderPass2KHR")); data->CmdNextSubpass2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdNextSubpass2KHR")); diff --git a/src/MagnumExternal/Vulkan/flextVk.h b/src/MagnumExternal/Vulkan/flextVk.h index 90bf377db..66abe63dd 100644 --- a/src/MagnumExternal/Vulkan/flextVk.h +++ b/src/MagnumExternal/Vulkan/flextVk.h @@ -284,6 +284,11 @@ extern "C" { #define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1 #define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library" +/* VK_KHR_copy_commands2 */ + +#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2" + /* VK_KHR_shader_float_controls */ #define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4 @@ -319,7 +324,7 @@ extern "C" { // Vulkan 1.2 version number #define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 165 +#define VK_HEADER_VERSION 166 // Complete version of this file #define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -1563,6 +1568,17 @@ typedef enum { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005, + VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006, + VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, @@ -4754,6 +4770,117 @@ typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { uint32_t minVertexInputBindingStrideAlignment; } VkPhysicalDevicePortabilitySubsetPropertiesKHR; +typedef struct VkBufferCopy2KHR { + VkStructureType sType; + const void* pNext; + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy2KHR; + +typedef struct VkImageCopy2KHR { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy2KHR; + +typedef struct VkImageBlit2KHR { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit2KHR; + +typedef struct VkBufferImageCopy2KHR { + VkStructureType sType; + const void* pNext; + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy2KHR; + +typedef struct VkImageResolve2KHR { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve2KHR; + +typedef struct VkCopyBufferInfo2KHR { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferCopy2KHR* pRegions; +} VkCopyBufferInfo2KHR; + +typedef struct VkCopyImageInfo2KHR { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2KHR* pRegions; +} VkCopyImageInfo2KHR; + +typedef struct VkBlitImageInfo2KHR { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageBlit2KHR* pRegions; + VkFilter filter; +} VkBlitImageInfo2KHR; + +typedef struct VkCopyBufferToImageInfo2KHR { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkBufferImageCopy2KHR* pRegions; +} VkCopyBufferToImageInfo2KHR; + +typedef struct VkCopyImageToBufferInfo2KHR { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferImageCopy2KHR* pRegions; +} VkCopyImageToBufferInfo2KHR; + +typedef struct VkResolveImageInfo2KHR { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageResolve2KHR* pRegions; +} VkResolveImageInfo2KHR; + typedef struct VkAccelerationStructureBuildSizesInfoKHR { VkStructureType sType; const void* pNext; @@ -4808,6 +4935,9 @@ struct FlextVkInstance { /* VK_KHR_buffer_device_address */ + /* VK_KHR_copy_commands2 */ + + /* VK_KHR_create_renderpass2 */ @@ -4962,6 +5092,15 @@ struct FlextVkDevice { uint64_t (VKAPI_PTR *GetBufferOpaqueCaptureAddressKHR)(VkDevice, const VkBufferDeviceAddressInfo*); uint64_t (VKAPI_PTR *GetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice, const VkDeviceMemoryOpaqueCaptureAddressInfo*); + /* VK_KHR_copy_commands2 */ + + void (VKAPI_PTR *CmdBlitImage2KHR)(VkCommandBuffer, const VkBlitImageInfo2KHR*); + void (VKAPI_PTR *CmdCopyBuffer2KHR)(VkCommandBuffer, const VkCopyBufferInfo2KHR*); + void (VKAPI_PTR *CmdCopyBufferToImage2KHR)(VkCommandBuffer, const VkCopyBufferToImageInfo2KHR*); + void (VKAPI_PTR *CmdCopyImage2KHR)(VkCommandBuffer, const VkCopyImageInfo2KHR*); + void (VKAPI_PTR *CmdCopyImageToBuffer2KHR)(VkCommandBuffer, const VkCopyImageToBufferInfo2KHR*); + void (VKAPI_PTR *CmdResolveImage2KHR)(VkCommandBuffer, const VkResolveImageInfo2KHR*); + /* VK_KHR_create_renderpass2 */ void (VKAPI_PTR *CmdBeginRenderPass2KHR)(VkCommandBuffer, const VkRenderPassBeginInfo*, const VkSubpassBeginInfo*); diff --git a/src/MagnumExternal/Vulkan/flextVkGlobal.h b/src/MagnumExternal/Vulkan/flextVkGlobal.h index ecd701cc6..7eca9fd3f 100644 --- a/src/MagnumExternal/Vulkan/flextVkGlobal.h +++ b/src/MagnumExternal/Vulkan/flextVkGlobal.h @@ -63,6 +63,9 @@ extern FLEXTVK_EXPORT FlextVkInstance flextVkInstance; /* VK_KHR_buffer_device_address */ +/* VK_KHR_copy_commands2 */ + + /* VK_KHR_create_renderpass2 */ @@ -213,6 +216,15 @@ extern FLEXTVK_EXPORT FlextVkDevice flextVkDevice; #define vkGetBufferOpaqueCaptureAddressKHR flextVkDevice.GetBufferOpaqueCaptureAddressKHR #define vkGetDeviceMemoryOpaqueCaptureAddressKHR flextVkDevice.GetDeviceMemoryOpaqueCaptureAddressKHR +/* VK_KHR_copy_commands2 */ + +#define vkCmdBlitImage2KHR flextVkDevice.CmdBlitImage2KHR +#define vkCmdCopyBuffer2KHR flextVkDevice.CmdCopyBuffer2KHR +#define vkCmdCopyBufferToImage2KHR flextVkDevice.CmdCopyBufferToImage2KHR +#define vkCmdCopyImage2KHR flextVkDevice.CmdCopyImage2KHR +#define vkCmdCopyImageToBuffer2KHR flextVkDevice.CmdCopyImageToBuffer2KHR +#define vkCmdResolveImage2KHR flextVkDevice.CmdResolveImage2KHR + /* VK_KHR_create_renderpass2 */ #define vkCmdBeginRenderPass2KHR flextVkDevice.CmdBeginRenderPass2KHR