Improve alias handling of enums and structs: (#305)

- Extend and unify alias handling on feature and extension enums
- Extend aliases of enums handling to accept two levels of aliasing
- Extend aliases of structures to allow mulitple aliases of the same structure
- Simplify forward declarations to just declare all structures and aliases
This commit is contained in:
Andreas Süßenbach 2019-03-18 20:48:10 +01:00 committed by Markus Tavenrath
parent cd8e5283c3
commit 48ceca69f3
3 changed files with 392 additions and 145 deletions

View File

@ -1015,27 +1015,6 @@ std::string VulkanHppGenerator::generateCall(std::pair<std::string, CommandData>
return call.str(); return call.str();
} }
std::set<std::string> VulkanHppGenerator::gatherForwardDeclarations()
{
// all structures in command parameters need to be forward declared
std::set<std::string> 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 std::string const& VulkanHppGenerator::getTypesafeCheck() const
{ {
return m_typesafeCheck; return m_typesafeCheck;
@ -1560,7 +1539,7 @@ void VulkanHppGenerator::readExtensionRequire(tinyxml2::XMLElement const* elemen
} }
else if (value == "enum") else if (value == "enum")
{ {
readExtensionRequireEnum(child, tag); readRequireEnum(child, tag);
} }
else if (value == "type") 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<std::string, std::string> 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<std::string, std::string> 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) void VulkanHppGenerator::readExtensionRequireType(tinyxml2::XMLElement const* element, std::string const& platform)
{ {
std::map<std::string, std::string> attributes = getAttributes(element); std::map<std::string, std::string> attributes = getAttributes(element);
@ -1734,49 +1649,11 @@ void VulkanHppGenerator::readFeatureRequire(tinyxml2::XMLElement const* element)
std::string value = child->Value(); std::string value = child->Value();
if (value == "enum") if (value == "enum")
{ {
readFeatureRequireEnum(child); readRequireEnum(child, "");
} }
} }
} }
void VulkanHppGenerator::readFeatureRequireEnum(tinyxml2::XMLElement const* element)
{
std::map<std::string, std::string> 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<std::string, std::string> const& attributes) void VulkanHppGenerator::readFuncpointer(tinyxml2::XMLElement const* element, std::map<std::string, std::string> const& attributes)
{ {
checkAttributes(attributes, element->GetLineNum(), { { "category",{ "funcpointer" } } }, { { "requires",{} } }); 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<std::string, std::string> 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<std::string, std::string> 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<std::string, std::string> 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<std::string, std::string> const& attributes) void VulkanHppGenerator::readStruct(tinyxml2::XMLElement const* element, bool isUnion, std::map<std::string, std::string> const& attributes)
{ {
checkAttributes(attributes, element->GetLineNum(), checkAttributes(attributes, element->GetLineNum(),
@ -1913,8 +1859,8 @@ void VulkanHppGenerator::readStructAlias(int lineNum, std::string const& name, s
checkAlias(m_structures, alias, lineNum); checkAlias(m_structures, alias, lineNum);
auto structsIt = m_structures.find(alias); auto structsIt = m_structures.find(alias);
assert((structsIt != m_structures.end()) && structsIt->second.alias.empty()); assert((structsIt != m_structures.end()) && (std::find(structsIt->second.aliases.begin(), structsIt->second.aliases.end(), name) == structsIt->second.aliases.end()));
structsIt->second.alias = stripPrefix(name, "Vk"); structsIt->second.aliases.push_back(name);
assert(m_structureAliases.find(name) == m_structureAliases.end()); assert(m_structureAliases.find(name) == m_structureAliases.end());
m_structureAliases[name] = alias; m_structureAliases[name] = alias;
@ -2598,20 +2544,18 @@ void VulkanHppGenerator::writeEnums(std::ostream & os) const
} }
} }
void VulkanHppGenerator::writeForwardDeclarations(std::ostream & os, std::set<std::string> const& forwardDeclarations) const void VulkanHppGenerator::writeForwardDeclarations(std::ostream & os) const
{ {
os << std::endl; os << std::endl;
for (auto const& fd : forwardDeclarations) for (auto const& structure : m_structures)
{ {
auto structureIt = m_structures.find(fd); enterProtect(os, structure.second.protect);
assert(structureIt != m_structures.end()); os << " " << (structure.second.isUnion ? "union" : "struct") << " " << stripPrefix(structure.first, "Vk") << ";" << std::endl;
enterProtect(os, structureIt->second.protect); for (std::string const& alias : structure.second.aliases)
os << " " << (structureIt->second.isUnion ? "union" : "struct") << " " << stripPrefix(structureIt->first, "Vk") << ";" << std::endl;
if (!structureIt->second.alias.empty())
{ {
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."; errorString << extendName << " does not specify a struct in structextends field.";
// check if symbol name is an alias to a struct // check if symbol name is an alias to a struct
auto itAlias = std::find_if(m_structures.begin(), m_structures.end(), [&extendName](std::pair<std::string, StructureData> const &it) -> bool {return it.second.alias == extendName; }); auto itAlias = std::find_if(m_structures.begin(), m_structures.end(), [&extendName](std::pair<std::string, StructureData> const &it) -> bool {return std::find(it.second.aliases.begin(), it.second.aliases.end(), extendName) != it.second.aliases.end(); });
if (itAlias != m_structures.end()) if (itAlias != m_structures.end())
{ {
errorString << " The symbol is an alias and maps to " << itAlias->first << "."; errorString << " The symbol is an alias and maps to " << itAlias->first << ".";
@ -5100,8 +5044,6 @@ namespace std
generator.checkCorrectness(); generator.checkCorrectness();
std::set<std::string> forwardDeclarations = generator.gatherForwardDeclarations();
std::ofstream ofs(VULKAN_HPP_FILE); std::ofstream ofs(VULKAN_HPP_FILE);
ofs << generator.getVulkanLicenseHeader() << std::endl ofs << generator.getVulkanLicenseHeader() << std::endl
<< includes << includes
@ -5143,7 +5085,7 @@ namespace std
generator.writeThrowExceptions(ofs); generator.writeThrowExceptions(ofs);
ofs << "#endif" << std::endl; ofs << "#endif" << std::endl;
ofs << structResultValue; ofs << structResultValue;
generator.writeForwardDeclarations(ofs, forwardDeclarations); generator.writeForwardDeclarations(ofs);
generator.writeHandles(ofs); generator.writeHandles(ofs);
generator.writeStructs(ofs); generator.writeStructs(ofs);
generator.writeHandlesCommandDefintions(ofs); generator.writeHandlesCommandDefintions(ofs);

View File

@ -29,7 +29,6 @@ class VulkanHppGenerator
} }
void checkCorrectness(); void checkCorrectness();
std::set<std::string> gatherForwardDeclarations();
std::string const& getTypesafeCheck() const; std::string const& getTypesafeCheck() const;
std::string const& getVersion() const; std::string const& getVersion() const;
std::string const& getVulkanLicenseHeader() 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 writeDispatchLoaderDynamic(std::ostream &os); // use vkGet*ProcAddress to get function pointers
void writeDispatchLoaderStatic(std::ostream &os); // use exported symbols from loader void writeDispatchLoaderStatic(std::ostream &os); // use exported symbols from loader
void writeEnums(std::ostream & os) const; void writeEnums(std::ostream & os) const;
void writeForwardDeclarations(std::ostream & os, std::set<std::string> const& forwardDeclarations) const; void writeForwardDeclarations(std::ostream & os) const;
void writeHandles(std::ostream & os) const; void writeHandles(std::ostream & os) const;
void writeHandlesCommandDefintions(std::ostream & os) const; void writeHandlesCommandDefintions(std::ostream & os) const;
void writeResultExceptions(std::ostream & os) const; void writeResultExceptions(std::ostream & os) const;
@ -142,7 +141,7 @@ class VulkanHppGenerator
std::vector<MemberData> members; std::vector<MemberData> members;
std::string protect; std::string protect;
std::vector<std::string> structExtends; std::vector<std::string> structExtends;
std::string alias; std::vector<std::string> aliases;
std::string subStruct; std::string subStruct;
}; };
@ -172,13 +171,12 @@ class VulkanHppGenerator
void readExtensionDisabledRequire(tinyxml2::XMLElement const* element); void readExtensionDisabledRequire(tinyxml2::XMLElement const* element);
void readExtensionRequire(tinyxml2::XMLElement const* element, std::string const& platform, std::string const& tag); 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 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 readExtensionRequireType(tinyxml2::XMLElement const* element, std::string const& platform);
void readFeatureRequire(tinyxml2::XMLElement const* element); void readFeatureRequire(tinyxml2::XMLElement const* element);
void readFeatureRequireEnum(tinyxml2::XMLElement const* element);
void readFuncpointer(tinyxml2::XMLElement const* element, std::map<std::string, std::string> const& attributes); void readFuncpointer(tinyxml2::XMLElement const* element, std::map<std::string, std::string> const& attributes);
void readHandle(tinyxml2::XMLElement const* element, std::map<std::string, std::string> const& attributes); void readHandle(tinyxml2::XMLElement const* element, std::map<std::string, std::string> const& attributes);
void readPlatform(tinyxml2::XMLElement const* element); 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<std::string, std::string> const& attributes); void readStruct(tinyxml2::XMLElement const* element, bool isUnion, std::map<std::string, std::string> const& attributes);
void readStructAlias(int lineNum, std::string const& name, std::string const& alias, std::map<std::string, std::string> const& attributes); void readStructAlias(int lineNum, std::string const& name, std::string const& alias, std::map<std::string, std::string> const& attributes);
MemberData readStructMember(tinyxml2::XMLElement const* element); MemberData readStructMember(tinyxml2::XMLElement const* element);

View File

@ -10518,20 +10518,42 @@ namespace VULKAN_HPP_NAMESPACE
struct AccelerationStructureMemoryRequirementsInfoNV; struct AccelerationStructureMemoryRequirementsInfoNV;
struct AcquireNextImageInfoKHR; struct AcquireNextImageInfoKHR;
struct AllocationCallbacks; struct AllocationCallbacks;
#ifdef VK_USE_PLATFORM_ANDROID_KHR
struct AndroidHardwareBufferFormatPropertiesANDROID;
#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
#ifdef VK_USE_PLATFORM_ANDROID_KHR #ifdef VK_USE_PLATFORM_ANDROID_KHR
struct AndroidHardwareBufferPropertiesANDROID; struct AndroidHardwareBufferPropertiesANDROID;
#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ #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 #ifdef VK_USE_PLATFORM_ANDROID_KHR
struct AndroidSurfaceCreateInfoKHR; struct AndroidSurfaceCreateInfoKHR;
#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ #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 BindAccelerationStructureMemoryInfoNV;
struct BindBufferMemoryDeviceGroupInfo;
using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
struct BindBufferMemoryInfo; struct BindBufferMemoryInfo;
using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; using BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
struct BindImageMemoryDeviceGroupInfo;
using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
struct BindImageMemoryInfo; struct BindImageMemoryInfo;
using BindImageMemoryInfoKHR = BindImageMemoryInfo; using BindImageMemoryInfoKHR = BindImageMemoryInfo;
struct BindImageMemorySwapchainInfoKHR;
struct BindImagePlaneMemoryInfo;
using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
struct BindSparseInfo; struct BindSparseInfo;
struct BufferCopy; struct BufferCopy;
struct BufferCreateInfo; struct BufferCreateInfo;
struct BufferDeviceAddressCreateInfoEXT;
struct BufferDeviceAddressInfoEXT; struct BufferDeviceAddressInfoEXT;
struct BufferImageCopy; struct BufferImageCopy;
struct BufferMemoryBarrier; struct BufferMemoryBarrier;
@ -10544,16 +10566,25 @@ namespace VULKAN_HPP_NAMESPACE
union ClearColorValue; union ClearColorValue;
struct ClearDepthStencilValue; struct ClearDepthStencilValue;
struct ClearRect; struct ClearRect;
union ClearValue;
struct CmdProcessCommandsInfoNVX; struct CmdProcessCommandsInfoNVX;
struct CmdReserveSpaceForCommandsInfoNVX; struct CmdReserveSpaceForCommandsInfoNVX;
struct CoarseSampleLocationNV;
struct CoarseSampleOrderCustomNV; struct CoarseSampleOrderCustomNV;
struct CommandBufferAllocateInfo; struct CommandBufferAllocateInfo;
struct CommandBufferBeginInfo; struct CommandBufferBeginInfo;
struct CommandBufferInheritanceConditionalRenderingInfoEXT;
struct CommandBufferInheritanceInfo;
struct CommandPoolCreateInfo; struct CommandPoolCreateInfo;
struct ComponentMapping;
struct ComputePipelineCreateInfo; struct ComputePipelineCreateInfo;
struct ConditionalRenderingBeginInfoEXT; struct ConditionalRenderingBeginInfoEXT;
struct ConformanceVersionKHR;
struct CooperativeMatrixPropertiesNV; struct CooperativeMatrixPropertiesNV;
struct CopyDescriptorSet; struct CopyDescriptorSet;
#ifdef VK_USE_PLATFORM_WIN32_KHR
struct D3D12FenceSubmitInfoKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
struct DebugMarkerMarkerInfoEXT; struct DebugMarkerMarkerInfoEXT;
struct DebugMarkerObjectNameInfoEXT; struct DebugMarkerObjectNameInfoEXT;
struct DebugMarkerObjectTagInfoEXT; struct DebugMarkerObjectTagInfoEXT;
@ -10563,21 +10594,51 @@ namespace VULKAN_HPP_NAMESPACE
struct DebugUtilsMessengerCreateInfoEXT; struct DebugUtilsMessengerCreateInfoEXT;
struct DebugUtilsObjectNameInfoEXT; struct DebugUtilsObjectNameInfoEXT;
struct DebugUtilsObjectTagInfoEXT; struct DebugUtilsObjectTagInfoEXT;
struct DedicatedAllocationBufferCreateInfoNV;
struct DedicatedAllocationImageCreateInfoNV;
struct DedicatedAllocationMemoryAllocateInfoNV;
struct DescriptorBufferInfo;
struct DescriptorImageInfo;
struct DescriptorPoolCreateInfo; struct DescriptorPoolCreateInfo;
struct DescriptorPoolInlineUniformBlockCreateInfoEXT;
struct DescriptorPoolSize;
struct DescriptorSetAllocateInfo; struct DescriptorSetAllocateInfo;
struct DescriptorSetLayoutBinding;
struct DescriptorSetLayoutBindingFlagsCreateInfoEXT;
struct DescriptorSetLayoutCreateInfo; struct DescriptorSetLayoutCreateInfo;
struct DescriptorSetLayoutSupport; struct DescriptorSetLayoutSupport;
using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
struct DescriptorSetVariableDescriptorCountAllocateInfoEXT;
struct DescriptorSetVariableDescriptorCountLayoutSupportEXT;
struct DescriptorUpdateTemplateCreateInfo; struct DescriptorUpdateTemplateCreateInfo;
using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
struct DescriptorUpdateTemplateEntry;
using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
struct DeviceCreateInfo; struct DeviceCreateInfo;
struct DeviceEventInfoEXT; struct DeviceEventInfoEXT;
struct DeviceGeneratedCommandsFeaturesNVX; struct DeviceGeneratedCommandsFeaturesNVX;
struct DeviceGeneratedCommandsLimitsNVX; struct DeviceGeneratedCommandsLimitsNVX;
struct DeviceGroupBindSparseInfo;
using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
struct DeviceGroupCommandBufferBeginInfo;
using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
struct DeviceGroupDeviceCreateInfo;
using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
struct DeviceGroupPresentCapabilitiesKHR; 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 DeviceQueueInfo2;
struct DispatchIndirectCommand;
struct DisplayEventInfoEXT; struct DisplayEventInfoEXT;
struct DisplayModeCreateInfoKHR; struct DisplayModeCreateInfoKHR;
struct DisplayModeParametersKHR;
struct DisplayModeProperties2KHR; struct DisplayModeProperties2KHR;
struct DisplayModePropertiesKHR; struct DisplayModePropertiesKHR;
struct DisplayPlaneCapabilities2KHR; struct DisplayPlaneCapabilities2KHR;
@ -10586,17 +10647,55 @@ namespace VULKAN_HPP_NAMESPACE
struct DisplayPlaneProperties2KHR; struct DisplayPlaneProperties2KHR;
struct DisplayPlanePropertiesKHR; struct DisplayPlanePropertiesKHR;
struct DisplayPowerInfoEXT; struct DisplayPowerInfoEXT;
struct DisplayPresentInfoKHR;
struct DisplayProperties2KHR; struct DisplayProperties2KHR;
struct DisplayPropertiesKHR; struct DisplayPropertiesKHR;
struct DisplaySurfaceCreateInfoKHR; struct DisplaySurfaceCreateInfoKHR;
struct DrawIndexedIndirectCommand;
struct DrawIndirectCommand;
struct DrawMeshTasksIndirectCommandNV;
struct DrmFormatModifierPropertiesEXT;
struct DrmFormatModifierPropertiesListEXT;
struct EventCreateInfo; 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 ExtensionProperties;
struct Extent2D; struct Extent2D;
struct Extent3D;
struct ExternalBufferProperties; struct ExternalBufferProperties;
using ExternalBufferPropertiesKHR = ExternalBufferProperties; using ExternalBufferPropertiesKHR = ExternalBufferProperties;
struct ExternalFenceProperties; struct ExternalFenceProperties;
using ExternalFencePropertiesKHR = 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 ExternalImageFormatPropertiesNV;
struct ExternalMemoryBufferCreateInfo;
using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
struct ExternalMemoryImageCreateInfo;
using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
struct ExternalMemoryImageCreateInfoNV;
struct ExternalMemoryProperties;
using ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
struct ExternalSemaphoreProperties; struct ExternalSemaphoreProperties;
using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
struct FenceCreateInfo; struct FenceCreateInfo;
@ -10604,10 +10703,15 @@ namespace VULKAN_HPP_NAMESPACE
#ifdef VK_USE_PLATFORM_WIN32_KHR #ifdef VK_USE_PLATFORM_WIN32_KHR
struct FenceGetWin32HandleInfoKHR; struct FenceGetWin32HandleInfoKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/ #endif /*VK_USE_PLATFORM_WIN32_KHR*/
struct FilterCubicImageViewImageFormatPropertiesEXT;
struct FormatProperties; struct FormatProperties;
struct FormatProperties2; struct FormatProperties2;
using FormatProperties2KHR = FormatProperties2; using FormatProperties2KHR = FormatProperties2;
struct FramebufferCreateInfo; struct FramebufferCreateInfo;
struct GeometryAABBNV;
struct GeometryDataNV;
struct GeometryNV;
struct GeometryTrianglesNV;
struct GraphicsPipelineCreateInfo; struct GraphicsPipelineCreateInfo;
struct HdrMetadataEXT; struct HdrMetadataEXT;
#ifdef VK_USE_PLATFORM_IOS_MVK #ifdef VK_USE_PLATFORM_IOS_MVK
@ -10616,7 +10720,10 @@ namespace VULKAN_HPP_NAMESPACE
struct ImageBlit; struct ImageBlit;
struct ImageCopy; struct ImageCopy;
struct ImageCreateInfo; struct ImageCreateInfo;
struct ImageDrmFormatModifierExplicitCreateInfoEXT;
struct ImageDrmFormatModifierListCreateInfoEXT;
struct ImageDrmFormatModifierPropertiesEXT; struct ImageDrmFormatModifierPropertiesEXT;
struct ImageFormatListCreateInfoKHR;
struct ImageFormatProperties; struct ImageFormatProperties;
struct ImageFormatProperties2; struct ImageFormatProperties2;
using ImageFormatProperties2KHR = ImageFormatProperties2; using ImageFormatProperties2KHR = ImageFormatProperties2;
@ -10626,30 +10733,59 @@ namespace VULKAN_HPP_NAMESPACE
#ifdef VK_USE_PLATFORM_FUCHSIA #ifdef VK_USE_PLATFORM_FUCHSIA
struct ImagePipeSurfaceCreateInfoFUCHSIA; struct ImagePipeSurfaceCreateInfoFUCHSIA;
#endif /*VK_USE_PLATFORM_FUCHSIA*/ #endif /*VK_USE_PLATFORM_FUCHSIA*/
struct ImagePlaneMemoryRequirementsInfo;
using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
struct ImageResolve; struct ImageResolve;
struct ImageSparseMemoryRequirementsInfo2; struct ImageSparseMemoryRequirementsInfo2;
using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
struct ImageStencilUsageCreateInfoEXT;
struct ImageSubresource; struct ImageSubresource;
struct ImageSubresourceLayers;
struct ImageSubresourceRange; struct ImageSubresourceRange;
struct ImageSwapchainCreateInfoKHR;
struct ImageViewASTCDecodeModeEXT;
struct ImageViewCreateInfo; struct ImageViewCreateInfo;
struct ImageViewHandleInfoNVX; struct ImageViewHandleInfoNVX;
struct ImageViewUsageCreateInfo;
using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
#ifdef VK_USE_PLATFORM_ANDROID_KHR
struct ImportAndroidHardwareBufferInfoANDROID;
#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
struct ImportFenceFdInfoKHR; struct ImportFenceFdInfoKHR;
#ifdef VK_USE_PLATFORM_WIN32_KHR #ifdef VK_USE_PLATFORM_WIN32_KHR
struct ImportFenceWin32HandleInfoKHR; 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*/ #endif /*VK_USE_PLATFORM_WIN32_KHR*/
struct ImportSemaphoreFdInfoKHR; struct ImportSemaphoreFdInfoKHR;
#ifdef VK_USE_PLATFORM_WIN32_KHR #ifdef VK_USE_PLATFORM_WIN32_KHR
struct ImportSemaphoreWin32HandleInfoKHR; struct ImportSemaphoreWin32HandleInfoKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/ #endif /*VK_USE_PLATFORM_WIN32_KHR*/
struct IndirectCommandsLayoutCreateInfoNVX; struct IndirectCommandsLayoutCreateInfoNVX;
struct IndirectCommandsLayoutTokenNVX;
struct IndirectCommandsTokenNVX;
struct InputAttachmentAspectReference;
using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
struct InstanceCreateInfo; struct InstanceCreateInfo;
struct LayerProperties; struct LayerProperties;
#ifdef VK_USE_PLATFORM_MACOS_MVK #ifdef VK_USE_PLATFORM_MACOS_MVK
struct MacOSSurfaceCreateInfoMVK; struct MacOSSurfaceCreateInfoMVK;
#endif /*VK_USE_PLATFORM_MACOS_MVK*/ #endif /*VK_USE_PLATFORM_MACOS_MVK*/
struct MappedMemoryRange; struct MappedMemoryRange;
struct MemoryAllocateFlagsInfo;
using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
struct MemoryAllocateInfo; struct MemoryAllocateInfo;
struct MemoryBarrier; struct MemoryBarrier;
struct MemoryDedicatedAllocateInfo;
using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
struct MemoryDedicatedRequirements;
using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
struct MemoryFdPropertiesKHR; struct MemoryFdPropertiesKHR;
#ifdef VK_USE_PLATFORM_ANDROID_KHR #ifdef VK_USE_PLATFORM_ANDROID_KHR
struct MemoryGetAndroidHardwareBufferInfoANDROID; struct MemoryGetAndroidHardwareBufferInfoANDROID;
@ -10658,10 +10794,13 @@ namespace VULKAN_HPP_NAMESPACE
#ifdef VK_USE_PLATFORM_WIN32_KHR #ifdef VK_USE_PLATFORM_WIN32_KHR
struct MemoryGetWin32HandleInfoKHR; struct MemoryGetWin32HandleInfoKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/ #endif /*VK_USE_PLATFORM_WIN32_KHR*/
struct MemoryHeap;
struct MemoryHostPointerPropertiesEXT; struct MemoryHostPointerPropertiesEXT;
struct MemoryPriorityAllocateInfoEXT;
struct MemoryRequirements; struct MemoryRequirements;
struct MemoryRequirements2; struct MemoryRequirements2;
using MemoryRequirements2KHR = MemoryRequirements2; using MemoryRequirements2KHR = MemoryRequirements2;
struct MemoryType;
#ifdef VK_USE_PLATFORM_WIN32_KHR #ifdef VK_USE_PLATFORM_WIN32_KHR
struct MemoryWin32HandlePropertiesKHR; struct MemoryWin32HandlePropertiesKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/ #endif /*VK_USE_PLATFORM_WIN32_KHR*/
@ -10670,83 +10809,251 @@ namespace VULKAN_HPP_NAMESPACE
#endif /*VK_USE_PLATFORM_METAL_EXT*/ #endif /*VK_USE_PLATFORM_METAL_EXT*/
struct MultisamplePropertiesEXT; struct MultisamplePropertiesEXT;
struct ObjectTableCreateInfoNVX; struct ObjectTableCreateInfoNVX;
struct ObjectTableDescriptorSetEntryNVX;
struct ObjectTableEntryNVX; struct ObjectTableEntryNVX;
struct ObjectTableIndexBufferEntryNVX;
struct ObjectTablePipelineEntryNVX;
struct ObjectTablePushConstantEntryNVX;
struct ObjectTableVertexBufferEntryNVX;
struct Offset2D;
struct Offset3D;
struct PastPresentationTimingGOOGLE; 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; struct PhysicalDeviceExternalBufferInfo;
using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
struct PhysicalDeviceExternalFenceInfo; struct PhysicalDeviceExternalFenceInfo;
using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
struct PhysicalDeviceExternalImageFormatInfo;
using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
struct PhysicalDeviceExternalMemoryHostPropertiesEXT;
struct PhysicalDeviceExternalSemaphoreInfo; struct PhysicalDeviceExternalSemaphoreInfo;
using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
struct PhysicalDeviceFeatures; struct PhysicalDeviceFeatures;
struct PhysicalDeviceFeatures2; struct PhysicalDeviceFeatures2;
using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
struct PhysicalDeviceFloat16Int8FeaturesKHR;
struct PhysicalDeviceFloatControlsPropertiesKHR;
struct PhysicalDeviceFragmentDensityMapFeaturesEXT;
struct PhysicalDeviceFragmentDensityMapPropertiesEXT;
struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV;
struct PhysicalDeviceGroupProperties; struct PhysicalDeviceGroupProperties;
using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
struct PhysicalDeviceIDProperties;
using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
struct PhysicalDeviceImageDrmFormatModifierInfoEXT;
struct PhysicalDeviceImageFormatInfo2; struct PhysicalDeviceImageFormatInfo2;
using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
struct PhysicalDeviceImageViewImageFormatInfoEXT;
struct PhysicalDeviceInlineUniformBlockFeaturesEXT;
struct PhysicalDeviceInlineUniformBlockPropertiesEXT;
struct PhysicalDeviceLimits;
struct PhysicalDeviceMaintenance3Properties;
using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
struct PhysicalDeviceMemoryBudgetPropertiesEXT;
struct PhysicalDeviceMemoryPriorityFeaturesEXT;
struct PhysicalDeviceMemoryProperties; struct PhysicalDeviceMemoryProperties;
struct PhysicalDeviceMemoryProperties2; struct PhysicalDeviceMemoryProperties2;
using PhysicalDeviceMemoryProperties2KHR = 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 PhysicalDeviceProperties;
struct PhysicalDeviceProperties2; struct PhysicalDeviceProperties2;
using PhysicalDeviceProperties2KHR = 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; struct PhysicalDeviceSparseImageFormatInfo2;
using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
struct PhysicalDeviceSparseProperties;
struct PhysicalDeviceSubgroupProperties;
struct PhysicalDeviceSurfaceInfo2KHR; struct PhysicalDeviceSurfaceInfo2KHR;
struct PhysicalDeviceTransformFeedbackFeaturesEXT;
struct PhysicalDeviceTransformFeedbackPropertiesEXT;
struct PhysicalDeviceVariablePointerFeatures;
using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointerFeatures;
struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT;
struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
struct PhysicalDeviceVulkanMemoryModelFeaturesKHR;
struct PhysicalDeviceYcbcrImageArraysFeaturesEXT;
struct PipelineCacheCreateInfo; struct PipelineCacheCreateInfo;
struct PipelineColorBlendAdvancedStateCreateInfoEXT;
struct PipelineColorBlendAttachmentState;
struct PipelineColorBlendStateCreateInfo;
struct PipelineCoverageModulationStateCreateInfoNV;
struct PipelineCoverageToColorStateCreateInfoNV;
struct PipelineDepthStencilStateCreateInfo;
struct PipelineDiscardRectangleStateCreateInfoEXT;
struct PipelineDynamicStateCreateInfo;
struct PipelineInputAssemblyStateCreateInfo;
struct PipelineLayoutCreateInfo; 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 PresentInfoKHR;
struct PresentRegionKHR;
struct PresentRegionsKHR;
struct PresentTimeGOOGLE;
struct PresentTimesInfoGOOGLE;
struct ProtectedSubmitInfo;
struct PushConstantRange;
struct QueryPoolCreateInfo; struct QueryPoolCreateInfo;
struct QueueFamilyCheckpointPropertiesNV;
struct QueueFamilyProperties; struct QueueFamilyProperties;
struct QueueFamilyProperties2; struct QueueFamilyProperties2;
using QueueFamilyProperties2KHR = QueueFamilyProperties2; using QueueFamilyProperties2KHR = QueueFamilyProperties2;
struct RayTracingPipelineCreateInfoNV; struct RayTracingPipelineCreateInfoNV;
struct RayTracingShaderGroupCreateInfoNV;
struct Rect2D; struct Rect2D;
struct RectLayerKHR;
struct RefreshCycleDurationGOOGLE; struct RefreshCycleDurationGOOGLE;
struct RenderPassBeginInfo; struct RenderPassBeginInfo;
struct RenderPassCreateInfo; struct RenderPassCreateInfo;
struct RenderPassCreateInfo2KHR; struct RenderPassCreateInfo2KHR;
struct RenderPassFragmentDensityMapCreateInfoEXT;
struct RenderPassInputAttachmentAspectCreateInfo;
using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
struct RenderPassMultiviewCreateInfo;
using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
struct RenderPassSampleLocationsBeginInfoEXT;
struct SampleLocationEXT;
struct SampleLocationsInfoEXT; struct SampleLocationsInfoEXT;
struct SamplerCreateInfo; struct SamplerCreateInfo;
struct SamplerReductionModeCreateInfoEXT;
struct SamplerYcbcrConversionCreateInfo; struct SamplerYcbcrConversionCreateInfo;
using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
struct SamplerYcbcrConversionImageFormatProperties;
using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
struct SamplerYcbcrConversionInfo;
using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
struct SemaphoreCreateInfo; struct SemaphoreCreateInfo;
struct SemaphoreGetFdInfoKHR; struct SemaphoreGetFdInfoKHR;
#ifdef VK_USE_PLATFORM_WIN32_KHR #ifdef VK_USE_PLATFORM_WIN32_KHR
struct SemaphoreGetWin32HandleInfoKHR; struct SemaphoreGetWin32HandleInfoKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/ #endif /*VK_USE_PLATFORM_WIN32_KHR*/
struct ShaderModuleCreateInfo; struct ShaderModuleCreateInfo;
struct ShaderModuleValidationCacheCreateInfoEXT;
struct ShaderResourceUsageAMD;
struct ShaderStatisticsInfoAMD;
struct ShadingRatePaletteNV; struct ShadingRatePaletteNV;
struct SharedPresentSurfaceCapabilitiesKHR;
struct SparseBufferMemoryBindInfo;
struct SparseImageFormatProperties; struct SparseImageFormatProperties;
struct SparseImageFormatProperties2; struct SparseImageFormatProperties2;
using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; using SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
struct SparseImageMemoryBind;
struct SparseImageMemoryBindInfo;
struct SparseImageMemoryRequirements; struct SparseImageMemoryRequirements;
struct SparseImageMemoryRequirements2; struct SparseImageMemoryRequirements2;
using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
struct SparseImageOpaqueMemoryBindInfo;
struct SparseMemoryBind;
struct SpecializationInfo;
struct SpecializationMapEntry;
struct StencilOpState;
struct SubmitInfo; struct SubmitInfo;
struct SubpassBeginInfoKHR; struct SubpassBeginInfoKHR;
struct SubpassDependency;
struct SubpassDependency2KHR;
struct SubpassDescription;
struct SubpassDescription2KHR;
struct SubpassDescriptionDepthStencilResolveKHR;
struct SubpassEndInfoKHR; struct SubpassEndInfoKHR;
struct SubpassSampleLocationsEXT;
struct SubresourceLayout; struct SubresourceLayout;
struct SurfaceCapabilities2EXT; struct SurfaceCapabilities2EXT;
struct SurfaceCapabilities2KHR; struct SurfaceCapabilities2KHR;
struct SurfaceCapabilitiesKHR; struct SurfaceCapabilitiesKHR;
struct SurfaceFormat2KHR; struct SurfaceFormat2KHR;
struct SurfaceFormatKHR; struct SurfaceFormatKHR;
struct SwapchainCounterCreateInfoEXT;
struct SwapchainCreateInfoKHR; struct SwapchainCreateInfoKHR;
struct TextureLODGatherFormatPropertiesAMD;
struct ValidationCacheCreateInfoEXT; struct ValidationCacheCreateInfoEXT;
struct ValidationFeaturesEXT;
struct ValidationFlagsEXT;
struct VertexInputAttributeDescription;
struct VertexInputBindingDescription;
struct VertexInputBindingDivisorDescriptionEXT;
#ifdef VK_USE_PLATFORM_VI_NN #ifdef VK_USE_PLATFORM_VI_NN
struct ViSurfaceCreateInfoNN; struct ViSurfaceCreateInfoNN;
#endif /*VK_USE_PLATFORM_VI_NN*/ #endif /*VK_USE_PLATFORM_VI_NN*/
struct Viewport; struct Viewport;
struct ViewportSwizzleNV;
struct ViewportWScalingNV; struct ViewportWScalingNV;
#ifdef VK_USE_PLATFORM_WAYLAND_KHR #ifdef VK_USE_PLATFORM_WAYLAND_KHR
struct WaylandSurfaceCreateInfoKHR; struct WaylandSurfaceCreateInfoKHR;
#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ #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 #ifdef VK_USE_PLATFORM_WIN32_KHR
struct Win32SurfaceCreateInfoKHR; struct Win32SurfaceCreateInfoKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/ #endif /*VK_USE_PLATFORM_WIN32_KHR*/
struct WriteDescriptorSet; struct WriteDescriptorSet;
struct WriteDescriptorSetAccelerationStructureNV;
struct WriteDescriptorSetInlineUniformBlockEXT;
struct XYColorEXT;
#ifdef VK_USE_PLATFORM_XCB_KHR #ifdef VK_USE_PLATFORM_XCB_KHR
struct XcbSurfaceCreateInfoKHR; struct XcbSurfaceCreateInfoKHR;
#endif /*VK_USE_PLATFORM_XCB_KHR*/ #endif /*VK_USE_PLATFORM_XCB_KHR*/