diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index 3902232..de14a2f 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -1015,27 +1015,6 @@ std::string VulkanHppGenerator::generateCall(std::pair return call.str(); } -std::set VulkanHppGenerator::gatherForwardDeclarations() -{ - // all structures in command parameters need to be forward declared - std::set forwardDeclarations; - for (auto const& handle : m_handles) - { - for (auto const& command : handle.second.commands) - { - for (auto const& parameter : command.second.params) - { - auto structureIt = m_structures.find(parameter.type.type); - if (structureIt != m_structures.end()) - { - forwardDeclarations.insert(parameter.type.type); - } - } - } - } - return forwardDeclarations; -} - std::string const& VulkanHppGenerator::getTypesafeCheck() const { return m_typesafeCheck; @@ -1560,7 +1539,7 @@ void VulkanHppGenerator::readExtensionRequire(tinyxml2::XMLElement const* elemen } else if (value == "enum") { - readExtensionRequireEnum(child, tag); + readRequireEnum(child, tag); } else if (value == "type") { @@ -1596,70 +1575,6 @@ void VulkanHppGenerator::readExtensionRequireCommand(tinyxml2::XMLElement const* } } -void VulkanHppGenerator::readExtensionRequireEnum(tinyxml2::XMLElement const* element, std::string const& tag) -{ - std::map attributes = getAttributes(element); - checkAttributes(attributes, element->GetLineNum(), - { - { "name",{} } - }, - { - { "alias",{} }, - { "bitpos",{} }, - { "comment",{} }, - { "dir",{ "-" } }, - { "extends",{} }, - { "extnumber",{} }, - { "offset",{} }, - { "value",{} } - }); - checkElements(getChildElements(element), {}); - - // TODO process enums which don't extend existing enums - auto extendsIt = attributes.find("extends"); - if (extendsIt != attributes.end()) - { - bool bitmask = false; - std::string extends = extendsIt->second; - auto enumIt = m_enums.find(extends); - if (enumIt == m_enums.end()) - { - enumIt = m_bitmaskBits.find(extends); - assert(enumIt != m_bitmaskBits.end()); - bitmask = true; - } - - std::string prefix = getEnumPrefix(enumIt->first, bitmask); - std::string postfix = getEnumPostfix(enumIt->first, m_tags, prefix); - - auto nameIt = attributes.find("name"); - assert(nameIt != attributes.end()); - - auto aliasIt = attributes.find("alias"); - if (aliasIt != attributes.end()) - { - checkAttributes(attributes, element->GetLineNum(), { { "alias",{} },{ "extends",{} },{ "name",{} } }, { { "comment",{} } }); - - // look for the aliased enum value - std::string alias = createEnumValueName(aliasIt->second, prefix, postfix, bitmask, findTag(m_tags, aliasIt->second)); - auto valueIt = std::find_if(enumIt->second.values.begin(), enumIt->second.values.end(), [&alias](std::pair const& value) { return value.second == alias; }); - assert(valueIt != enumIt->second.values.end()); - - std::string name = createEnumValueName(nameIt->second, prefix, postfix, bitmask, tag); - if (valueIt->second != name) - { - // only add an alias if it's different from the aliased name - enumIt->second.aliases.push_back(std::make_pair(nameIt->second, name)); - } - } - else - { - assert((attributes.find("bitpos") != attributes.end()) + (attributes.find("offset") != attributes.end()) + (attributes.find("value") != attributes.end()) == 1); - enumIt->second.addEnumValue(nameIt->second, bitmask, prefix, postfix, tag); - } - } -} - void VulkanHppGenerator::readExtensionRequireType(tinyxml2::XMLElement const* element, std::string const& platform) { std::map attributes = getAttributes(element); @@ -1734,49 +1649,11 @@ void VulkanHppGenerator::readFeatureRequire(tinyxml2::XMLElement const* element) std::string value = child->Value(); if (value == "enum") { - readFeatureRequireEnum(child); + readRequireEnum(child, ""); } } } -void VulkanHppGenerator::readFeatureRequireEnum(tinyxml2::XMLElement const* element) -{ - std::map attributes = getAttributes(element); - checkAttributes(attributes, element->GetLineNum(), - { - { "name",{} } - }, - { - { "bitpos",{} }, - { "comment",{} }, - { "dir", { "-" } }, - { "extends",{} }, - { "extnumber", {} }, - { "offset", {} }, - { "value",{} } - }); - checkElements(getChildElements(element), {}); - - auto extendsAttribute = attributes.find("extends"); - if (extendsAttribute != attributes.end()) - { - bool bitmask = false; - assert(strncmp(extendsAttribute->second.c_str(), "Vk", 2) == 0); - std::string extends = extendsAttribute->second; - auto enumIt = m_enums.find(extends); - if (enumIt == m_enums.end()) - { - enumIt = m_bitmaskBits.find(extends); - assert(enumIt != m_bitmaskBits.end()); - bitmask = true; - } - - std::string prefix = getEnumPrefix(enumIt->first, bitmask); - std::string postfix = getEnumPostfix(enumIt->first, m_tags, prefix); - enumIt->second.addEnumValue(attributes.find("name")->second, bitmask, prefix, postfix, ""); - } -} - void VulkanHppGenerator::readFuncpointer(tinyxml2::XMLElement const* element, std::map const& attributes) { checkAttributes(attributes, element->GetLineNum(), { { "category",{ "funcpointer" } } }, { { "requires",{} } }); @@ -1871,6 +1748,75 @@ void VulkanHppGenerator::readPlatforms(tinyxml2::XMLElement const* element) } } +void VulkanHppGenerator::readRequireEnum(tinyxml2::XMLElement const* element, std::string const& tag) +{ + std::map attributes = getAttributes(element); + checkAttributes(attributes, element->GetLineNum(), + { + { "name",{} } + }, + { + { "alias",{} }, + { "bitpos",{} }, + { "comment",{} }, + { "dir",{ "-" } }, + { "extends",{} }, + { "extnumber",{} }, + { "offset",{} }, + { "value",{} } + }); + checkElements(getChildElements(element), {}); + + // TODO process enums which don't extend existing enums + auto extendsIt = attributes.find("extends"); + if (extendsIt != attributes.end()) + { + bool bitmask = false; + std::string extends = extendsIt->second; + auto enumIt = m_enums.find(extends); + if (enumIt == m_enums.end()) + { + enumIt = m_bitmaskBits.find(extends); + assert(enumIt != m_bitmaskBits.end()); + bitmask = true; + } + + std::string prefix = getEnumPrefix(enumIt->first, bitmask); + std::string postfix = getEnumPostfix(enumIt->first, m_tags, prefix); + + auto nameIt = attributes.find("name"); + assert(nameIt != attributes.end()); + + auto aliasIt = attributes.find("alias"); + if (aliasIt != attributes.end()) + { + checkAttributes(attributes, element->GetLineNum(), { { "alias",{} },{ "extends",{} },{ "name",{} } }, { { "comment",{} } }); + + // look for the aliased enum value + std::string alias = aliasIt->second; + auto valueIt = std::find_if(enumIt->second.values.begin(), enumIt->second.values.end(), [&alias](std::pair const& value) { return value.first == alias; }); + if (valueIt == enumIt->second.values.end()) + { + // if the aliased enum value is not found in the values, look in the aliases as well! + valueIt = std::find_if(enumIt->second.aliases.begin(), enumIt->second.aliases.end(), [&alias](std::pair const& value) { return value.first == alias; }); + assert(valueIt != enumIt->second.aliases.end()); + } + + std::string name = createEnumValueName(nameIt->second, prefix, postfix, bitmask, tag); + if (valueIt->second != name) + { + // only add an alias if it's different from the aliased name + enumIt->second.aliases.push_back(std::make_pair(nameIt->second, name)); + } + } + else + { + assert((attributes.find("bitpos") != attributes.end()) + (attributes.find("offset") != attributes.end()) + (attributes.find("value") != attributes.end()) == 1); + enumIt->second.addEnumValue(nameIt->second, bitmask, prefix, postfix, tag); + } + } +} + void VulkanHppGenerator::readStruct(tinyxml2::XMLElement const* element, bool isUnion, std::map const& attributes) { checkAttributes(attributes, element->GetLineNum(), @@ -1913,8 +1859,8 @@ void VulkanHppGenerator::readStructAlias(int lineNum, std::string const& name, s checkAlias(m_structures, alias, lineNum); auto structsIt = m_structures.find(alias); - assert((structsIt != m_structures.end()) && structsIt->second.alias.empty()); - structsIt->second.alias = stripPrefix(name, "Vk"); + assert((structsIt != m_structures.end()) && (std::find(structsIt->second.aliases.begin(), structsIt->second.aliases.end(), name) == structsIt->second.aliases.end())); + structsIt->second.aliases.push_back(name); assert(m_structureAliases.find(name) == m_structureAliases.end()); m_structureAliases[name] = alias; @@ -2598,20 +2544,18 @@ void VulkanHppGenerator::writeEnums(std::ostream & os) const } } -void VulkanHppGenerator::writeForwardDeclarations(std::ostream & os, std::set const& forwardDeclarations) const +void VulkanHppGenerator::writeForwardDeclarations(std::ostream & os) const { os << std::endl; - for (auto const& fd : forwardDeclarations) + for (auto const& structure : m_structures) { - auto structureIt = m_structures.find(fd); - assert(structureIt != m_structures.end()); - enterProtect(os, structureIt->second.protect); - os << " " << (structureIt->second.isUnion ? "union" : "struct") << " " << stripPrefix(structureIt->first, "Vk") << ";" << std::endl; - if (!structureIt->second.alias.empty()) + enterProtect(os, structure.second.protect); + os << " " << (structure.second.isUnion ? "union" : "struct") << " " << stripPrefix(structure.first, "Vk") << ";" << std::endl; + for (std::string const& alias : structure.second.aliases) { - os << " using " << stripPrefix(structureIt->second.alias, "Vk") << " = " << stripPrefix(structureIt->first, "Vk") << ";" << std::endl; + os << " using " << stripPrefix(alias, "Vk") << " = " << stripPrefix(structure.first, "Vk") << ";" << std::endl; } - leaveProtect(os, structureIt->second.protect); + leaveProtect(os, structure.second.protect); } } @@ -3971,7 +3915,7 @@ void VulkanHppGenerator::writeStructureChainValidation(std::ostream & os) errorString << extendName << " does not specify a struct in structextends field."; // check if symbol name is an alias to a struct - auto itAlias = std::find_if(m_structures.begin(), m_structures.end(), [&extendName](std::pair const &it) -> bool {return it.second.alias == extendName; }); + auto itAlias = std::find_if(m_structures.begin(), m_structures.end(), [&extendName](std::pair const &it) -> bool {return std::find(it.second.aliases.begin(), it.second.aliases.end(), extendName) != it.second.aliases.end(); }); if (itAlias != m_structures.end()) { errorString << " The symbol is an alias and maps to " << itAlias->first << "."; @@ -5100,8 +5044,6 @@ namespace std generator.checkCorrectness(); - std::set forwardDeclarations = generator.gatherForwardDeclarations(); - std::ofstream ofs(VULKAN_HPP_FILE); ofs << generator.getVulkanLicenseHeader() << std::endl << includes @@ -5143,7 +5085,7 @@ namespace std generator.writeThrowExceptions(ofs); ofs << "#endif" << std::endl; ofs << structResultValue; - generator.writeForwardDeclarations(ofs, forwardDeclarations); + generator.writeForwardDeclarations(ofs); generator.writeHandles(ofs); generator.writeStructs(ofs); generator.writeHandlesCommandDefintions(ofs); diff --git a/VulkanHppGenerator.hpp b/VulkanHppGenerator.hpp index f79085b..616cb98 100644 --- a/VulkanHppGenerator.hpp +++ b/VulkanHppGenerator.hpp @@ -29,7 +29,6 @@ class VulkanHppGenerator } void checkCorrectness(); - std::set gatherForwardDeclarations(); std::string const& getTypesafeCheck() const; std::string const& getVersion() const; std::string const& getVulkanLicenseHeader() const; @@ -46,7 +45,7 @@ class VulkanHppGenerator void writeDispatchLoaderDynamic(std::ostream &os); // use vkGet*ProcAddress to get function pointers void writeDispatchLoaderStatic(std::ostream &os); // use exported symbols from loader void writeEnums(std::ostream & os) const; - void writeForwardDeclarations(std::ostream & os, std::set const& forwardDeclarations) const; + void writeForwardDeclarations(std::ostream & os) const; void writeHandles(std::ostream & os) const; void writeHandlesCommandDefintions(std::ostream & os) const; void writeResultExceptions(std::ostream & os) const; @@ -142,7 +141,7 @@ class VulkanHppGenerator std::vector members; std::string protect; std::vector structExtends; - std::string alias; + std::vector aliases; std::string subStruct; }; @@ -172,13 +171,12 @@ class VulkanHppGenerator void readExtensionDisabledRequire(tinyxml2::XMLElement const* element); void readExtensionRequire(tinyxml2::XMLElement const* element, std::string const& platform, std::string const& tag); void readExtensionRequireCommand(tinyxml2::XMLElement const* element, std::string const& platform); - void readExtensionRequireEnum(tinyxml2::XMLElement const* element, std::string const& tag); void readExtensionRequireType(tinyxml2::XMLElement const* element, std::string const& platform); void readFeatureRequire(tinyxml2::XMLElement const* element); - void readFeatureRequireEnum(tinyxml2::XMLElement const* element); void readFuncpointer(tinyxml2::XMLElement const* element, std::map const& attributes); void readHandle(tinyxml2::XMLElement const* element, std::map const& attributes); void readPlatform(tinyxml2::XMLElement const* element); + void readRequireEnum(tinyxml2::XMLElement const* element, std::string const& tag); void readStruct(tinyxml2::XMLElement const* element, bool isUnion, std::map const& attributes); void readStructAlias(int lineNum, std::string const& name, std::string const& alias, std::map const& attributes); MemberData readStructMember(tinyxml2::XMLElement const* element); diff --git a/vulkan/vulkan.hpp b/vulkan/vulkan.hpp index 1ca3e04..a19cc9f 100644 --- a/vulkan/vulkan.hpp +++ b/vulkan/vulkan.hpp @@ -10518,20 +10518,42 @@ namespace VULKAN_HPP_NAMESPACE struct AccelerationStructureMemoryRequirementsInfoNV; struct AcquireNextImageInfoKHR; struct AllocationCallbacks; +#ifdef VK_USE_PLATFORM_ANDROID_KHR + struct AndroidHardwareBufferFormatPropertiesANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ #ifdef VK_USE_PLATFORM_ANDROID_KHR struct AndroidHardwareBufferPropertiesANDROID; #endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#ifdef VK_USE_PLATFORM_ANDROID_KHR + struct AndroidHardwareBufferUsageANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ #ifdef VK_USE_PLATFORM_ANDROID_KHR struct AndroidSurfaceCreateInfoKHR; #endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + struct ApplicationInfo; + struct AttachmentDescription; + struct AttachmentDescription2KHR; + struct AttachmentReference; + struct AttachmentReference2KHR; + struct AttachmentSampleLocationsEXT; + struct BaseInStructure; + struct BaseOutStructure; struct BindAccelerationStructureMemoryInfoNV; + struct BindBufferMemoryDeviceGroupInfo; + using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo; struct BindBufferMemoryInfo; using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; + struct BindImageMemoryDeviceGroupInfo; + using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo; struct BindImageMemoryInfo; using BindImageMemoryInfoKHR = BindImageMemoryInfo; + struct BindImageMemorySwapchainInfoKHR; + struct BindImagePlaneMemoryInfo; + using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; struct BindSparseInfo; struct BufferCopy; struct BufferCreateInfo; + struct BufferDeviceAddressCreateInfoEXT; struct BufferDeviceAddressInfoEXT; struct BufferImageCopy; struct BufferMemoryBarrier; @@ -10544,16 +10566,25 @@ namespace VULKAN_HPP_NAMESPACE union ClearColorValue; struct ClearDepthStencilValue; struct ClearRect; + union ClearValue; struct CmdProcessCommandsInfoNVX; struct CmdReserveSpaceForCommandsInfoNVX; + struct CoarseSampleLocationNV; struct CoarseSampleOrderCustomNV; struct CommandBufferAllocateInfo; struct CommandBufferBeginInfo; + struct CommandBufferInheritanceConditionalRenderingInfoEXT; + struct CommandBufferInheritanceInfo; struct CommandPoolCreateInfo; + struct ComponentMapping; struct ComputePipelineCreateInfo; struct ConditionalRenderingBeginInfoEXT; + struct ConformanceVersionKHR; struct CooperativeMatrixPropertiesNV; struct CopyDescriptorSet; +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct D3D12FenceSubmitInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ struct DebugMarkerMarkerInfoEXT; struct DebugMarkerObjectNameInfoEXT; struct DebugMarkerObjectTagInfoEXT; @@ -10563,21 +10594,51 @@ namespace VULKAN_HPP_NAMESPACE struct DebugUtilsMessengerCreateInfoEXT; struct DebugUtilsObjectNameInfoEXT; struct DebugUtilsObjectTagInfoEXT; + struct DedicatedAllocationBufferCreateInfoNV; + struct DedicatedAllocationImageCreateInfoNV; + struct DedicatedAllocationMemoryAllocateInfoNV; + struct DescriptorBufferInfo; + struct DescriptorImageInfo; struct DescriptorPoolCreateInfo; + struct DescriptorPoolInlineUniformBlockCreateInfoEXT; + struct DescriptorPoolSize; struct DescriptorSetAllocateInfo; + struct DescriptorSetLayoutBinding; + struct DescriptorSetLayoutBindingFlagsCreateInfoEXT; struct DescriptorSetLayoutCreateInfo; struct DescriptorSetLayoutSupport; using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; + struct DescriptorSetVariableDescriptorCountAllocateInfoEXT; + struct DescriptorSetVariableDescriptorCountLayoutSupportEXT; struct DescriptorUpdateTemplateCreateInfo; using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; + struct DescriptorUpdateTemplateEntry; + using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry; struct DeviceCreateInfo; struct DeviceEventInfoEXT; struct DeviceGeneratedCommandsFeaturesNVX; struct DeviceGeneratedCommandsLimitsNVX; + struct DeviceGroupBindSparseInfo; + using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo; + struct DeviceGroupCommandBufferBeginInfo; + using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo; + struct DeviceGroupDeviceCreateInfo; + using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo; struct DeviceGroupPresentCapabilitiesKHR; + struct DeviceGroupPresentInfoKHR; + struct DeviceGroupRenderPassBeginInfo; + using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo; + struct DeviceGroupSubmitInfo; + using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo; + struct DeviceGroupSwapchainCreateInfoKHR; + struct DeviceMemoryOverallocationCreateInfoAMD; + struct DeviceQueueCreateInfo; + struct DeviceQueueGlobalPriorityCreateInfoEXT; struct DeviceQueueInfo2; + struct DispatchIndirectCommand; struct DisplayEventInfoEXT; struct DisplayModeCreateInfoKHR; + struct DisplayModeParametersKHR; struct DisplayModeProperties2KHR; struct DisplayModePropertiesKHR; struct DisplayPlaneCapabilities2KHR; @@ -10586,17 +10647,55 @@ namespace VULKAN_HPP_NAMESPACE struct DisplayPlaneProperties2KHR; struct DisplayPlanePropertiesKHR; struct DisplayPowerInfoEXT; + struct DisplayPresentInfoKHR; struct DisplayProperties2KHR; struct DisplayPropertiesKHR; struct DisplaySurfaceCreateInfoKHR; + struct DrawIndexedIndirectCommand; + struct DrawIndirectCommand; + struct DrawMeshTasksIndirectCommandNV; + struct DrmFormatModifierPropertiesEXT; + struct DrmFormatModifierPropertiesListEXT; struct EventCreateInfo; + struct ExportFenceCreateInfo; + using ExportFenceCreateInfoKHR = ExportFenceCreateInfo; +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct ExportFenceWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + struct ExportMemoryAllocateInfo; + using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo; + struct ExportMemoryAllocateInfoNV; +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct ExportMemoryWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct ExportMemoryWin32HandleInfoNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + struct ExportSemaphoreCreateInfo; + using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo; +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct ExportSemaphoreWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ struct ExtensionProperties; struct Extent2D; + struct Extent3D; struct ExternalBufferProperties; using ExternalBufferPropertiesKHR = ExternalBufferProperties; struct ExternalFenceProperties; using ExternalFencePropertiesKHR = ExternalFenceProperties; +#ifdef VK_USE_PLATFORM_ANDROID_KHR + struct ExternalFormatANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + struct ExternalImageFormatProperties; + using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties; struct ExternalImageFormatPropertiesNV; + struct ExternalMemoryBufferCreateInfo; + using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo; + struct ExternalMemoryImageCreateInfo; + using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo; + struct ExternalMemoryImageCreateInfoNV; + struct ExternalMemoryProperties; + using ExternalMemoryPropertiesKHR = ExternalMemoryProperties; struct ExternalSemaphoreProperties; using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; struct FenceCreateInfo; @@ -10604,10 +10703,15 @@ namespace VULKAN_HPP_NAMESPACE #ifdef VK_USE_PLATFORM_WIN32_KHR struct FenceGetWin32HandleInfoKHR; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ + struct FilterCubicImageViewImageFormatPropertiesEXT; struct FormatProperties; struct FormatProperties2; using FormatProperties2KHR = FormatProperties2; struct FramebufferCreateInfo; + struct GeometryAABBNV; + struct GeometryDataNV; + struct GeometryNV; + struct GeometryTrianglesNV; struct GraphicsPipelineCreateInfo; struct HdrMetadataEXT; #ifdef VK_USE_PLATFORM_IOS_MVK @@ -10616,7 +10720,10 @@ namespace VULKAN_HPP_NAMESPACE struct ImageBlit; struct ImageCopy; struct ImageCreateInfo; + struct ImageDrmFormatModifierExplicitCreateInfoEXT; + struct ImageDrmFormatModifierListCreateInfoEXT; struct ImageDrmFormatModifierPropertiesEXT; + struct ImageFormatListCreateInfoKHR; struct ImageFormatProperties; struct ImageFormatProperties2; using ImageFormatProperties2KHR = ImageFormatProperties2; @@ -10626,30 +10733,59 @@ namespace VULKAN_HPP_NAMESPACE #ifdef VK_USE_PLATFORM_FUCHSIA struct ImagePipeSurfaceCreateInfoFUCHSIA; #endif /*VK_USE_PLATFORM_FUCHSIA*/ + struct ImagePlaneMemoryRequirementsInfo; + using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo; struct ImageResolve; struct ImageSparseMemoryRequirementsInfo2; using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; + struct ImageStencilUsageCreateInfoEXT; struct ImageSubresource; + struct ImageSubresourceLayers; struct ImageSubresourceRange; + struct ImageSwapchainCreateInfoKHR; + struct ImageViewASTCDecodeModeEXT; struct ImageViewCreateInfo; struct ImageViewHandleInfoNVX; + struct ImageViewUsageCreateInfo; + using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo; +#ifdef VK_USE_PLATFORM_ANDROID_KHR + struct ImportAndroidHardwareBufferInfoANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ struct ImportFenceFdInfoKHR; #ifdef VK_USE_PLATFORM_WIN32_KHR struct ImportFenceWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + struct ImportMemoryFdInfoKHR; + struct ImportMemoryHostPointerInfoEXT; +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct ImportMemoryWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct ImportMemoryWin32HandleInfoNV; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ struct ImportSemaphoreFdInfoKHR; #ifdef VK_USE_PLATFORM_WIN32_KHR struct ImportSemaphoreWin32HandleInfoKHR; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ struct IndirectCommandsLayoutCreateInfoNVX; + struct IndirectCommandsLayoutTokenNVX; + struct IndirectCommandsTokenNVX; + struct InputAttachmentAspectReference; + using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference; struct InstanceCreateInfo; struct LayerProperties; #ifdef VK_USE_PLATFORM_MACOS_MVK struct MacOSSurfaceCreateInfoMVK; #endif /*VK_USE_PLATFORM_MACOS_MVK*/ struct MappedMemoryRange; + struct MemoryAllocateFlagsInfo; + using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo; struct MemoryAllocateInfo; struct MemoryBarrier; + struct MemoryDedicatedAllocateInfo; + using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo; + struct MemoryDedicatedRequirements; + using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements; struct MemoryFdPropertiesKHR; #ifdef VK_USE_PLATFORM_ANDROID_KHR struct MemoryGetAndroidHardwareBufferInfoANDROID; @@ -10658,10 +10794,13 @@ namespace VULKAN_HPP_NAMESPACE #ifdef VK_USE_PLATFORM_WIN32_KHR struct MemoryGetWin32HandleInfoKHR; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ + struct MemoryHeap; struct MemoryHostPointerPropertiesEXT; + struct MemoryPriorityAllocateInfoEXT; struct MemoryRequirements; struct MemoryRequirements2; using MemoryRequirements2KHR = MemoryRequirements2; + struct MemoryType; #ifdef VK_USE_PLATFORM_WIN32_KHR struct MemoryWin32HandlePropertiesKHR; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ @@ -10670,83 +10809,251 @@ namespace VULKAN_HPP_NAMESPACE #endif /*VK_USE_PLATFORM_METAL_EXT*/ struct MultisamplePropertiesEXT; struct ObjectTableCreateInfoNVX; + struct ObjectTableDescriptorSetEntryNVX; struct ObjectTableEntryNVX; + struct ObjectTableIndexBufferEntryNVX; + struct ObjectTablePipelineEntryNVX; + struct ObjectTablePushConstantEntryNVX; + struct ObjectTableVertexBufferEntryNVX; + struct Offset2D; + struct Offset3D; struct PastPresentationTimingGOOGLE; + struct PhysicalDevice16BitStorageFeatures; + using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures; + struct PhysicalDevice8BitStorageFeaturesKHR; + struct PhysicalDeviceASTCDecodeFeaturesEXT; + struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT; + struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT; + struct PhysicalDeviceBufferAddressFeaturesEXT; + struct PhysicalDeviceComputeShaderDerivativesFeaturesNV; + struct PhysicalDeviceConditionalRenderingFeaturesEXT; + struct PhysicalDeviceConservativeRasterizationPropertiesEXT; + struct PhysicalDeviceCooperativeMatrixFeaturesNV; + struct PhysicalDeviceCooperativeMatrixPropertiesNV; + struct PhysicalDeviceCornerSampledImageFeaturesNV; + struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + struct PhysicalDeviceDepthClipEnableFeaturesEXT; + struct PhysicalDeviceDepthStencilResolvePropertiesKHR; + struct PhysicalDeviceDescriptorIndexingFeaturesEXT; + struct PhysicalDeviceDescriptorIndexingPropertiesEXT; + struct PhysicalDeviceDiscardRectanglePropertiesEXT; + struct PhysicalDeviceDriverPropertiesKHR; + struct PhysicalDeviceExclusiveScissorFeaturesNV; struct PhysicalDeviceExternalBufferInfo; using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; struct PhysicalDeviceExternalFenceInfo; using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; + struct PhysicalDeviceExternalImageFormatInfo; + using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo; + struct PhysicalDeviceExternalMemoryHostPropertiesEXT; struct PhysicalDeviceExternalSemaphoreInfo; using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; struct PhysicalDeviceFeatures; struct PhysicalDeviceFeatures2; using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; + struct PhysicalDeviceFloat16Int8FeaturesKHR; + struct PhysicalDeviceFloatControlsPropertiesKHR; + struct PhysicalDeviceFragmentDensityMapFeaturesEXT; + struct PhysicalDeviceFragmentDensityMapPropertiesEXT; + struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV; struct PhysicalDeviceGroupProperties; using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; + struct PhysicalDeviceIDProperties; + using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties; + struct PhysicalDeviceImageDrmFormatModifierInfoEXT; struct PhysicalDeviceImageFormatInfo2; using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; + struct PhysicalDeviceImageViewImageFormatInfoEXT; + struct PhysicalDeviceInlineUniformBlockFeaturesEXT; + struct PhysicalDeviceInlineUniformBlockPropertiesEXT; + struct PhysicalDeviceLimits; + struct PhysicalDeviceMaintenance3Properties; + using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties; + struct PhysicalDeviceMemoryBudgetPropertiesEXT; + struct PhysicalDeviceMemoryPriorityFeaturesEXT; struct PhysicalDeviceMemoryProperties; struct PhysicalDeviceMemoryProperties2; using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2; + struct PhysicalDeviceMeshShaderFeaturesNV; + struct PhysicalDeviceMeshShaderPropertiesNV; + struct PhysicalDeviceMultiviewFeatures; + using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures; + struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + struct PhysicalDeviceMultiviewProperties; + using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties; + struct PhysicalDevicePCIBusInfoPropertiesEXT; + struct PhysicalDevicePointClippingProperties; + using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties; struct PhysicalDeviceProperties; struct PhysicalDeviceProperties2; using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2; + struct PhysicalDeviceProtectedMemoryFeatures; + struct PhysicalDeviceProtectedMemoryProperties; + struct PhysicalDevicePushDescriptorPropertiesKHR; + struct PhysicalDeviceRayTracingPropertiesNV; + struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV; + struct PhysicalDeviceSampleLocationsPropertiesEXT; + struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT; + struct PhysicalDeviceSamplerYcbcrConversionFeatures; + using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures; + struct PhysicalDeviceScalarBlockLayoutFeaturesEXT; + struct PhysicalDeviceShaderAtomicInt64FeaturesKHR; + struct PhysicalDeviceShaderCorePropertiesAMD; + struct PhysicalDeviceShaderDrawParameterFeatures; + struct PhysicalDeviceShaderImageFootprintFeaturesNV; + struct PhysicalDeviceShadingRateImageFeaturesNV; + struct PhysicalDeviceShadingRateImagePropertiesNV; struct PhysicalDeviceSparseImageFormatInfo2; using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; + struct PhysicalDeviceSparseProperties; + struct PhysicalDeviceSubgroupProperties; struct PhysicalDeviceSurfaceInfo2KHR; + struct PhysicalDeviceTransformFeedbackFeaturesEXT; + struct PhysicalDeviceTransformFeedbackPropertiesEXT; + struct PhysicalDeviceVariablePointerFeatures; + using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointerFeatures; + struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT; + struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT; + struct PhysicalDeviceVulkanMemoryModelFeaturesKHR; + struct PhysicalDeviceYcbcrImageArraysFeaturesEXT; struct PipelineCacheCreateInfo; + struct PipelineColorBlendAdvancedStateCreateInfoEXT; + struct PipelineColorBlendAttachmentState; + struct PipelineColorBlendStateCreateInfo; + struct PipelineCoverageModulationStateCreateInfoNV; + struct PipelineCoverageToColorStateCreateInfoNV; + struct PipelineDepthStencilStateCreateInfo; + struct PipelineDiscardRectangleStateCreateInfoEXT; + struct PipelineDynamicStateCreateInfo; + struct PipelineInputAssemblyStateCreateInfo; struct PipelineLayoutCreateInfo; + struct PipelineMultisampleStateCreateInfo; + struct PipelineRasterizationConservativeStateCreateInfoEXT; + struct PipelineRasterizationDepthClipStateCreateInfoEXT; + struct PipelineRasterizationStateCreateInfo; + struct PipelineRasterizationStateRasterizationOrderAMD; + struct PipelineRasterizationStateStreamCreateInfoEXT; + struct PipelineRepresentativeFragmentTestStateCreateInfoNV; + struct PipelineSampleLocationsStateCreateInfoEXT; + struct PipelineShaderStageCreateInfo; + struct PipelineTessellationDomainOriginStateCreateInfo; + using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo; + struct PipelineTessellationStateCreateInfo; + struct PipelineVertexInputDivisorStateCreateInfoEXT; + struct PipelineVertexInputStateCreateInfo; + struct PipelineViewportCoarseSampleOrderStateCreateInfoNV; + struct PipelineViewportExclusiveScissorStateCreateInfoNV; + struct PipelineViewportShadingRateImageStateCreateInfoNV; + struct PipelineViewportStateCreateInfo; + struct PipelineViewportSwizzleStateCreateInfoNV; + struct PipelineViewportWScalingStateCreateInfoNV; struct PresentInfoKHR; + struct PresentRegionKHR; + struct PresentRegionsKHR; + struct PresentTimeGOOGLE; + struct PresentTimesInfoGOOGLE; + struct ProtectedSubmitInfo; + struct PushConstantRange; struct QueryPoolCreateInfo; + struct QueueFamilyCheckpointPropertiesNV; struct QueueFamilyProperties; struct QueueFamilyProperties2; using QueueFamilyProperties2KHR = QueueFamilyProperties2; struct RayTracingPipelineCreateInfoNV; + struct RayTracingShaderGroupCreateInfoNV; struct Rect2D; + struct RectLayerKHR; struct RefreshCycleDurationGOOGLE; struct RenderPassBeginInfo; struct RenderPassCreateInfo; struct RenderPassCreateInfo2KHR; + struct RenderPassFragmentDensityMapCreateInfoEXT; + struct RenderPassInputAttachmentAspectCreateInfo; + using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo; + struct RenderPassMultiviewCreateInfo; + using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo; + struct RenderPassSampleLocationsBeginInfoEXT; + struct SampleLocationEXT; struct SampleLocationsInfoEXT; struct SamplerCreateInfo; + struct SamplerReductionModeCreateInfoEXT; struct SamplerYcbcrConversionCreateInfo; using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; + struct SamplerYcbcrConversionImageFormatProperties; + using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties; + struct SamplerYcbcrConversionInfo; + using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo; struct SemaphoreCreateInfo; struct SemaphoreGetFdInfoKHR; #ifdef VK_USE_PLATFORM_WIN32_KHR struct SemaphoreGetWin32HandleInfoKHR; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ struct ShaderModuleCreateInfo; + struct ShaderModuleValidationCacheCreateInfoEXT; + struct ShaderResourceUsageAMD; + struct ShaderStatisticsInfoAMD; struct ShadingRatePaletteNV; + struct SharedPresentSurfaceCapabilitiesKHR; + struct SparseBufferMemoryBindInfo; struct SparseImageFormatProperties; struct SparseImageFormatProperties2; using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; + struct SparseImageMemoryBind; + struct SparseImageMemoryBindInfo; struct SparseImageMemoryRequirements; struct SparseImageMemoryRequirements2; using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; + struct SparseImageOpaqueMemoryBindInfo; + struct SparseMemoryBind; + struct SpecializationInfo; + struct SpecializationMapEntry; + struct StencilOpState; struct SubmitInfo; struct SubpassBeginInfoKHR; + struct SubpassDependency; + struct SubpassDependency2KHR; + struct SubpassDescription; + struct SubpassDescription2KHR; + struct SubpassDescriptionDepthStencilResolveKHR; struct SubpassEndInfoKHR; + struct SubpassSampleLocationsEXT; struct SubresourceLayout; struct SurfaceCapabilities2EXT; struct SurfaceCapabilities2KHR; struct SurfaceCapabilitiesKHR; struct SurfaceFormat2KHR; struct SurfaceFormatKHR; + struct SwapchainCounterCreateInfoEXT; struct SwapchainCreateInfoKHR; + struct TextureLODGatherFormatPropertiesAMD; struct ValidationCacheCreateInfoEXT; + struct ValidationFeaturesEXT; + struct ValidationFlagsEXT; + struct VertexInputAttributeDescription; + struct VertexInputBindingDescription; + struct VertexInputBindingDivisorDescriptionEXT; #ifdef VK_USE_PLATFORM_VI_NN struct ViSurfaceCreateInfoNN; #endif /*VK_USE_PLATFORM_VI_NN*/ struct Viewport; + struct ViewportSwizzleNV; struct ViewportWScalingNV; #ifdef VK_USE_PLATFORM_WAYLAND_KHR struct WaylandSurfaceCreateInfoKHR; #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct Win32KeyedMutexAcquireReleaseInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ +#ifdef VK_USE_PLATFORM_WIN32_KHR + struct Win32KeyedMutexAcquireReleaseInfoNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ #ifdef VK_USE_PLATFORM_WIN32_KHR struct Win32SurfaceCreateInfoKHR; #endif /*VK_USE_PLATFORM_WIN32_KHR*/ struct WriteDescriptorSet; + struct WriteDescriptorSetAccelerationStructureNV; + struct WriteDescriptorSetInlineUniformBlockEXT; + struct XYColorEXT; #ifdef VK_USE_PLATFORM_XCB_KHR struct XcbSurfaceCreateInfoKHR; #endif /*VK_USE_PLATFORM_XCB_KHR*/