From 661c26be2d14e30fcb26a08bfa1ba69726f4038b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 26 Jan 2021 13:32:51 +0100 Subject: [PATCH] Vk: recognize VK_EXT_extended_dynamic_state. --- doc/vulkan-mapping.dox | 16 ++++++- doc/vulkan-support.dox | 1 + src/Magnum/Vk/Device.cpp | 3 ++ src/Magnum/Vk/DeviceCreateInfo.h | 2 + src/Magnum/Vk/DeviceFeatures.h | 9 ++++ src/Magnum/Vk/DeviceProperties.cpp | 2 + src/Magnum/Vk/DeviceProperties.h | 3 ++ src/Magnum/Vk/Extensions.cpp | 1 + src/Magnum/Vk/Extensions.h | 1 + src/Magnum/Vk/Implementation/DeviceFeatures.h | 1 + .../Implementation/deviceFeatureMapping.hpp | 2 + src/MagnumExternal/Vulkan/extensions.txt | 1 + src/MagnumExternal/Vulkan/flextVk.cpp | 12 ++++++ src/MagnumExternal/Vulkan/flextVk.h | 42 +++++++++++++++++++ src/MagnumExternal/Vulkan/flextVkGlobal.h | 18 ++++++++ 15 files changed, 112 insertions(+), 2 deletions(-) diff --git a/doc/vulkan-mapping.dox b/doc/vulkan-mapping.dox index ebfc60047..b2f7937cf 100644 --- a/doc/vulkan-mapping.dox +++ b/doc/vulkan-mapping.dox @@ -115,7 +115,7 @@ Vulkan function | Matching API @fn_vk{CmdBindDescriptorSets} | | @fn_vk{CmdBindIndexBuffer} | | @fn_vk{CmdBindPipeline} | | -@fn_vk{CmdBindVertexBuffers} | | +@fn_vk{CmdBindVertexBuffers}, \n @fn_vk{CmdBindVertexBuffers2EXT} @m_class{m-label m-flat m-warning} **EXT** | | @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** | | @@ -150,17 +150,28 @@ Vulkan function | Matching API @fn_vk{CmdResetQueryPool} | | @fn_vk{CmdResolveImage}, \n @fn_vk{CmdResolveImage2KHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdSetBlendConstants} | | +@fn_vk{CmdSetCullModeEXT} @m_class{m-label m-flat m-warning} **EXT** | | @fn_vk{CmdSetDepthBias} | | -@fn_vk{CmdSetDeviceMask} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @fn_vk{CmdSetDepthBounds} | | +@fn_vk{CmdSetDepthBoundsTestEnableEXT} @m_class{m-label m-flat m-warning} **EXT** | | +@fn_vk{CmdSetDepthCompareOpEXT} @m_class{m-label m-flat m-warning} **EXT** | | +@fn_vk{CmdSetDepthTestEnableEXT} @m_class{m-label m-flat m-warning} **EXT** | | +@fn_vk{CmdSetDepthWriteEnableEXT} @m_class{m-label m-flat m-warning} **EXT** | | +@fn_vk{CmdSetDeviceMask} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @fn_vk{CmdSetEvent} | | +@fn_vk{CmdSetFrontFaceEXT} @m_class{m-label m-flat m-warning} **EXT** | | @fn_vk{CmdSetLineWidth} | | +@fn_vk{CmdSetPrimitiveTopologyEXT} @m_class{m-label m-flat m-warning} **EXT** | | @fn_vk{CmdSetRayTracingPipelineStackSizeKHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdSetScissor} | | +@fn_vk{CmdSetScissorWithCountEXT} @m_class{m-label m-flat m-warning} **EXT** | | @fn_vk{CmdSetStencilCompareMask} | | +@fn_vk{CmdSetStencilOpEXT} @m_class{m-label m-flat m-warning} **EXT** | | @fn_vk{CmdSetStencilReference} | | +@fn_vk{CmdSetStencilTestEnableEXT} @m_class{m-label m-flat m-warning} **EXT** | | @fn_vk{CmdSetStencilWriteMask} | | @fn_vk{CmdSetViewport} | | +@fn_vk{CmdSetViewportWithCountEXT} @m_class{m-label m-flat m-warning} **EXT** | | @fn_vk{CmdTraceRaysIndirectKHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdTraceRaysKHR} @m_class{m-label m-flat m-warning} **KHR** | | @fn_vk{CmdUpdateBuffer} | | @@ -593,6 +604,7 @@ Vulkan structure | Matching API @type_vk{PhysicalDeviceDescriptorIndexingFeatures} @m_class{m-label m-flat m-success} **EXT, 1.2** | @ref DeviceFeatures @type_vk{PhysicalDeviceDescriptorIndexingProperties} @m_class{m-label m-flat m-success} **EXT, 1.2** | | @type_vk{PhysicalDeviceDriverProperties} @m_class{m-label m-flat m-success} **KHR, 1.2** | | +@type_vk{PhysicalDeviceExtendedDynamicStateFeaturesEXT} @m_class{m-label m-flat m-warning} **EXT** | @ref DeviceFeatures @type_vk{PhysicalDeviceExternalBufferInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @type_vk{PhysicalDeviceExternalFenceInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | | @type_vk{PhysicalDeviceExternalImageFormatInfo} @m_class{m-label m-flat m-success} **KHR, 1.1** | | diff --git a/doc/vulkan-support.dox b/doc/vulkan-support.dox index 45cffd24d..7215f8a66 100644 --- a/doc/vulkan-support.dox +++ b/doc/vulkan-support.dox @@ -122,6 +122,7 @@ Extension | Status @vk_extension{EXT,validation_features} @m_class{m-label m-info} **instance** | | @vk_extension{EXT,vertex_attribute_divisor} | done @vk_extension{EXT,index_type_uint8} | @ref Vk::vkIndexType() only +@vk_extension{EXT,extended_dynamic_state} | | @vk_extension{KHR,acceleration_structure} | | @vk_extension{KHR,portability_subset} | done except properties @vk_extension{KHR,deferred_host_operations} | | diff --git a/src/Magnum/Vk/Device.cpp b/src/Magnum/Vk/Device.cpp index 5764a5687..80c4072ba 100644 --- a/src/Magnum/Vk/Device.cpp +++ b/src/Magnum/Vk/Device.cpp @@ -411,6 +411,7 @@ DeviceCreateInfo& DeviceCreateInfo::setEnabledFeatures(const DeviceFeatures& fea _state->features.bufferDeviceAddress, _state->features.hostQueryReset, _state->features.indexTypeUint8, + _state->features.extendedDynamicState, _state->features.rayTracingPipeline, _state->features.rayQuery }); @@ -530,6 +531,8 @@ DeviceCreateInfo& DeviceCreateInfo::setEnabledFeatures(const DeviceFeatures& fea _state->features.hostQueryReset, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES); structureConnectIfUsed(next, _state->firstEnabledFeature, _state->features.indexTypeUint8, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT); + structureConnectIfUsed(next, _state->firstEnabledFeature, + _state->features.extendedDynamicState, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT); structureConnectIfUsed(next, _state->firstEnabledFeature, _state->features.rayTracingPipeline, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR); structureConnectIfUsed(next, _state->firstEnabledFeature, diff --git a/src/Magnum/Vk/DeviceCreateInfo.h b/src/Magnum/Vk/DeviceCreateInfo.h index ff2d4886b..bb5b9babc 100644 --- a/src/Magnum/Vk/DeviceCreateInfo.h +++ b/src/Magnum/Vk/DeviceCreateInfo.h @@ -266,6 +266,8 @@ class MAGNUM_VK_EXPORT DeviceCreateInfo { * 1.2, @vk_extension{EXT,host_query_reset}) * - @type_vk_keyword{PhysicalDeviceIndexTypeUint8FeaturesEXT} * (@vk_extension{EXT,index_type_uint8}) + * - @type_vk_keyword{PhysicalDeviceExtendedDynamicStateFeaturesEXT} + * (@vk_extension{EXT,extended_dynamic_state}) * - @type_vk_keyword{PhysicalDeviceRayTracingPipelineFeaturesKHR} * (@vk_extension{KHR,ray_tracing_pipeline}) * - @type_vk_keyword{PhysicalDeviceRayQueryFeaturesKHR} diff --git a/src/Magnum/Vk/DeviceFeatures.h b/src/Magnum/Vk/DeviceFeatures.h index 33f138a70..291337a3b 100644 --- a/src/Magnum/Vk/DeviceFeatures.h +++ b/src/Magnum/Vk/DeviceFeatures.h @@ -1261,6 +1261,15 @@ enum class DeviceFeature: UnsignedShort { */ IndexTypeUint8, + /* VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, #268 */ + + /** + * Extended dynamic state is supported. + * @requires_vk_extension Extension @vk_extension{EXT,extended_dynamic_state} + * @todoc list the actual DynamicState values once the enum exists + */ + ExtendedDynamicState, + /* VkPhysicalDeviceRayTracingPipelineFeaturesKHR, #348 */ /** diff --git a/src/Magnum/Vk/DeviceProperties.cpp b/src/Magnum/Vk/DeviceProperties.cpp index 1d5b070ee..b9263f136 100644 --- a/src/Magnum/Vk/DeviceProperties.cpp +++ b/src/Magnum/Vk/DeviceProperties.cpp @@ -337,6 +337,8 @@ const DeviceFeatures& DeviceProperties::features() { Implementation::structureConnect(next, features.hostQueryReset, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES); if(isOrVersionSupportedInternal()) Implementation::structureConnect(next, features.indexTypeUint8, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT); + if(isOrVersionSupportedInternal()) + Implementation::structureConnect(next, features.extendedDynamicState, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT); if(isOrVersionSupportedInternal()) Implementation::structureConnect(next, features.rayTracingPipeline, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR); if(isOrVersionSupportedInternal()) diff --git a/src/Magnum/Vk/DeviceProperties.h b/src/Magnum/Vk/DeviceProperties.h index 9858955b4..3c9f4e1dd 100644 --- a/src/Magnum/Vk/DeviceProperties.h +++ b/src/Magnum/Vk/DeviceProperties.h @@ -489,6 +489,9 @@ class MAGNUM_VK_EXPORT DeviceProperties { * - If the @vk_extension{EXT,index_type_uint8} extension is * supported by the device, the `pNext` chain contains * @type_vk_keyword{PhysicalDeviceIndexTypeUint8FeaturesEXT} + * - If the @vk_extension{EXT,extended_dynamic_state} extension is + * supported by the device, the `pNext` chain contains + * @type_vk_keyword{PhysicalDeviceExtendedDynamicStateFeaturesEXT} * - If the @vk_extension{KHR,ray_tracing_pipeline} extension is * supported by the device, the `pNext` chain contains * @type_vk_keyword{PhysicalDeviceRayTracingPipelineFeaturesKHR} diff --git a/src/Magnum/Vk/Extensions.cpp b/src/Magnum/Vk/Extensions.cpp index 35e1606f2..bc8e10523 100644 --- a/src/Magnum/Vk/Extensions.cpp +++ b/src/Magnum/Vk/Extensions.cpp @@ -68,6 +68,7 @@ namespace { alphabetically. */ constexpr Extension DeviceExtensions[] { Extensions::EXT::debug_marker{}, + Extensions::EXT::extended_dynamic_state{}, Extensions::EXT::index_type_uint8{}, Extensions::EXT::texture_compression_astc_hdr{}, Extensions::EXT::vertex_attribute_divisor{}, diff --git a/src/Magnum/Vk/Extensions.h b/src/Magnum/Vk/Extensions.h index b55a718bb..0057ad49a 100644 --- a/src/Magnum/Vk/Extensions.h +++ b/src/Magnum/Vk/Extensions.h @@ -123,6 +123,7 @@ namespace EXT { _extension(7, EXT,separate_stencil_usage, Vk10, Vk12) // #247 _extension(8, EXT,host_query_reset, Vk10, Vk12) // #262 _extension(9, EXT,index_type_uint8, Vk10, None) // #266 + _extension(10, EXT,extended_dynamic_state, Vk10, None) // #268 } namespace IMG { _extension(20, IMG,format_pvrtc, Vk10, None) // #55 } namespace KHR { diff --git a/src/Magnum/Vk/Implementation/DeviceFeatures.h b/src/Magnum/Vk/Implementation/DeviceFeatures.h index 08d347cb5..4d567c67c 100644 --- a/src/Magnum/Vk/Implementation/DeviceFeatures.h +++ b/src/Magnum/Vk/Implementation/DeviceFeatures.h @@ -60,6 +60,7 @@ struct DeviceFeatures { VkPhysicalDeviceBufferDeviceAddressFeatures bufferDeviceAddress; VkPhysicalDeviceHostQueryResetFeatures hostQueryReset; VkPhysicalDeviceIndexTypeUint8FeaturesEXT indexTypeUint8; + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extendedDynamicState; VkPhysicalDeviceRayTracingPipelineFeaturesKHR rayTracingPipeline; VkPhysicalDeviceRayQueryFeaturesKHR rayQuery; }; diff --git a/src/Magnum/Vk/Implementation/deviceFeatureMapping.hpp b/src/Magnum/Vk/Implementation/deviceFeatureMapping.hpp index 719304b91..8c218c4f8 100644 --- a/src/Magnum/Vk/Implementation/deviceFeatureMapping.hpp +++ b/src/Magnum/Vk/Implementation/deviceFeatureMapping.hpp @@ -215,6 +215,8 @@ _cext(HostQueryReset, hostQueryReset, hostQueryReset, EXT::host_query_reset) _cext(IndexTypeUint8, indexTypeUint8, indexTypeUint8, EXT::index_type_uint8) +_cext(ExtendedDynamicState, extendedDynamicState, extendedDynamicState, EXT::extended_dynamic_state) + #define _ce(value, field) _cext(value, field, rayTracingPipeline, KHR::ray_tracing_pipeline) _ce(RayTracingPipeline, rayTracingPipeline) _ce(RayTracingPipelineShaderGroupHandleCaptureReplay, rayTracingPipelineShaderGroupHandleCaptureReplay) diff --git a/src/MagnumExternal/Vulkan/extensions.txt b/src/MagnumExternal/Vulkan/extensions.txt index c265a6a18..f70bd97c2 100644 --- a/src/MagnumExternal/Vulkan/extensions.txt +++ b/src/MagnumExternal/Vulkan/extensions.txt @@ -63,6 +63,7 @@ extension EXT_validation_features optional extension EXT_texture_compression_astc_hdr optional extension EXT_vertex_attribute_divisor optional extension EXT_index_type_uint8 optional +extension EXT_extended_dynamic_state optional extension IMG_format_pvrtc optional extension KHR_acceleration_structure optional extension KHR_portability_subset optional diff --git a/src/MagnumExternal/Vulkan/flextVk.cpp b/src/MagnumExternal/Vulkan/flextVk.cpp index cbf1f0ba3..b4c0187f0 100644 --- a/src/MagnumExternal/Vulkan/flextVk.cpp +++ b/src/MagnumExternal/Vulkan/flextVk.cpp @@ -89,6 +89,18 @@ void flextVkInitDevice(VkDevice device, FlextVkDevice* data, PFN_vkVoidFunction( data->QueueInsertDebugUtilsLabelEXT = reinterpret_cast(getDeviceProcAddr(device, "vkQueueInsertDebugUtilsLabelEXT")); data->SetDebugUtilsObjectNameEXT = reinterpret_cast(getDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT")); data->SetDebugUtilsObjectTagEXT = reinterpret_cast(getDeviceProcAddr(device, "vkSetDebugUtilsObjectTagEXT")); + data->CmdBindVertexBuffers2EXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBindVertexBuffers2EXT")); + data->CmdSetCullModeEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetCullModeEXT")); + data->CmdSetDepthBoundsTestEnableEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDepthBoundsTestEnableEXT")); + data->CmdSetDepthCompareOpEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDepthCompareOpEXT")); + data->CmdSetDepthTestEnableEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDepthTestEnableEXT")); + data->CmdSetDepthWriteEnableEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDepthWriteEnableEXT")); + data->CmdSetFrontFaceEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetFrontFaceEXT")); + data->CmdSetPrimitiveTopologyEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetPrimitiveTopologyEXT")); + data->CmdSetScissorWithCountEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetScissorWithCountEXT")); + data->CmdSetStencilOpEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetStencilOpEXT")); + data->CmdSetStencilTestEnableEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetStencilTestEnableEXT")); + data->CmdSetViewportWithCountEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetViewportWithCountEXT")); data->ResetQueryPoolEXT = reinterpret_cast(getDeviceProcAddr(device, "vkResetQueryPoolEXT")); data->BuildAccelerationStructuresKHR = reinterpret_cast(getDeviceProcAddr(device, "vkBuildAccelerationStructuresKHR")); data->CmdBuildAccelerationStructuresIndirectKHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBuildAccelerationStructuresIndirectKHR")); diff --git a/src/MagnumExternal/Vulkan/flextVk.h b/src/MagnumExternal/Vulkan/flextVk.h index f6f68792f..d20946024 100644 --- a/src/MagnumExternal/Vulkan/flextVk.h +++ b/src/MagnumExternal/Vulkan/flextVk.h @@ -254,6 +254,11 @@ extern "C" { #define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1 #define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8" +/* VK_EXT_extended_dynamic_state */ + +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state" + /* VK_IMG_format_pvrtc */ #define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 @@ -647,6 +652,18 @@ typedef enum { VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000, + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010, + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011, VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000 } VkDynamicState; @@ -1545,6 +1562,7 @@ typedef enum { VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, @@ -4744,6 +4762,12 @@ typedef struct VkCopyMemoryToAccelerationStructureInfoKHR { VkCopyAccelerationStructureModeKHR mode; } VkCopyMemoryToAccelerationStructureInfoKHR; +typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState; +} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; + typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { VkStructureType sType; void* pNext; @@ -4923,6 +4947,9 @@ struct FlextVkInstance { void (VKAPI_PTR *DestroyDebugUtilsMessengerEXT)(VkInstance, VkDebugUtilsMessengerEXT, const VkAllocationCallbacks*); void (VKAPI_PTR *SubmitDebugUtilsMessageEXT)(VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, const VkDebugUtilsMessengerCallbackDataEXT*); + /* VK_EXT_extended_dynamic_state */ + + /* VK_EXT_host_query_reset */ @@ -5058,6 +5085,21 @@ struct FlextVkDevice { VkResult (VKAPI_PTR *SetDebugUtilsObjectNameEXT)(VkDevice, const VkDebugUtilsObjectNameInfoEXT*); VkResult (VKAPI_PTR *SetDebugUtilsObjectTagEXT)(VkDevice, const VkDebugUtilsObjectTagInfoEXT*); + /* VK_EXT_extended_dynamic_state */ + + void (VKAPI_PTR *CmdBindVertexBuffers2EXT)(VkCommandBuffer, uint32_t, uint32_t, const VkBuffer*, const VkDeviceSize*, const VkDeviceSize*, const VkDeviceSize*); + void (VKAPI_PTR *CmdSetCullModeEXT)(VkCommandBuffer, VkCullModeFlags); + void (VKAPI_PTR *CmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer, VkBool32); + void (VKAPI_PTR *CmdSetDepthCompareOpEXT)(VkCommandBuffer, VkCompareOp); + void (VKAPI_PTR *CmdSetDepthTestEnableEXT)(VkCommandBuffer, VkBool32); + void (VKAPI_PTR *CmdSetDepthWriteEnableEXT)(VkCommandBuffer, VkBool32); + void (VKAPI_PTR *CmdSetFrontFaceEXT)(VkCommandBuffer, VkFrontFace); + void (VKAPI_PTR *CmdSetPrimitiveTopologyEXT)(VkCommandBuffer, VkPrimitiveTopology); + void (VKAPI_PTR *CmdSetScissorWithCountEXT)(VkCommandBuffer, uint32_t, const VkRect2D*); + void (VKAPI_PTR *CmdSetStencilOpEXT)(VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp); + void (VKAPI_PTR *CmdSetStencilTestEnableEXT)(VkCommandBuffer, VkBool32); + void (VKAPI_PTR *CmdSetViewportWithCountEXT)(VkCommandBuffer, uint32_t, const VkViewport*); + /* VK_EXT_host_query_reset */ void (VKAPI_PTR *ResetQueryPoolEXT)(VkDevice, VkQueryPool, uint32_t, uint32_t); diff --git a/src/MagnumExternal/Vulkan/flextVkGlobal.h b/src/MagnumExternal/Vulkan/flextVkGlobal.h index 7eca9fd3f..da852f00d 100644 --- a/src/MagnumExternal/Vulkan/flextVkGlobal.h +++ b/src/MagnumExternal/Vulkan/flextVkGlobal.h @@ -51,6 +51,9 @@ extern FLEXTVK_EXPORT FlextVkInstance flextVkInstance; #define vkDestroyDebugUtilsMessengerEXT flextVkInstance.DestroyDebugUtilsMessengerEXT #define vkSubmitDebugUtilsMessageEXT flextVkInstance.SubmitDebugUtilsMessageEXT +/* VK_EXT_extended_dynamic_state */ + + /* VK_EXT_host_query_reset */ @@ -182,6 +185,21 @@ extern FLEXTVK_EXPORT FlextVkDevice flextVkDevice; #define vkSetDebugUtilsObjectNameEXT flextVkDevice.SetDebugUtilsObjectNameEXT #define vkSetDebugUtilsObjectTagEXT flextVkDevice.SetDebugUtilsObjectTagEXT +/* VK_EXT_extended_dynamic_state */ + +#define vkCmdBindVertexBuffers2EXT flextVkDevice.CmdBindVertexBuffers2EXT +#define vkCmdSetCullModeEXT flextVkDevice.CmdSetCullModeEXT +#define vkCmdSetDepthBoundsTestEnableEXT flextVkDevice.CmdSetDepthBoundsTestEnableEXT +#define vkCmdSetDepthCompareOpEXT flextVkDevice.CmdSetDepthCompareOpEXT +#define vkCmdSetDepthTestEnableEXT flextVkDevice.CmdSetDepthTestEnableEXT +#define vkCmdSetDepthWriteEnableEXT flextVkDevice.CmdSetDepthWriteEnableEXT +#define vkCmdSetFrontFaceEXT flextVkDevice.CmdSetFrontFaceEXT +#define vkCmdSetPrimitiveTopologyEXT flextVkDevice.CmdSetPrimitiveTopologyEXT +#define vkCmdSetScissorWithCountEXT flextVkDevice.CmdSetScissorWithCountEXT +#define vkCmdSetStencilOpEXT flextVkDevice.CmdSetStencilOpEXT +#define vkCmdSetStencilTestEnableEXT flextVkDevice.CmdSetStencilTestEnableEXT +#define vkCmdSetViewportWithCountEXT flextVkDevice.CmdSetViewportWithCountEXT + /* VK_EXT_host_query_reset */ #define vkResetQueryPoolEXT flextVkDevice.ResetQueryPoolEXT