Remove warning on "ratified" and "supported" being different for an extension. (#1728)

This commit is contained in:
Andreas Süßenbach 2023-11-14 16:50:41 +01:00 committed by GitHub
parent e86419f738
commit 846ac99cee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 9 deletions

View File

@ -13271,7 +13271,6 @@ void VulkanHppGenerator::readExtension( tinyxml2::XMLElement const * element )
checkElements( line, children, { { "require", false } } );
ExtensionData extensionData{ .xmlLine = line };
std::vector<std::string> ratified, supported;
for ( auto const & attribute : attributes )
{
if ( attribute.first == "depends" )
@ -13363,11 +13362,11 @@ void VulkanHppGenerator::readExtension( tinyxml2::XMLElement const * element )
}
else if ( attribute.first == "ratified" )
{
ratified = tokenize( attribute.second, "," );
extensionData.ratified = tokenize( attribute.second, "," );
}
else if ( attribute.first == "supported" )
{
supported = tokenize( attribute.second, "," );
extensionData.supported = tokenize( attribute.second, "," );
}
else if ( attribute.first == "type" )
{
@ -13375,18 +13374,16 @@ void VulkanHppGenerator::readExtension( tinyxml2::XMLElement const * element )
}
}
checkForWarning( std::any_of( supported.begin(), supported.end(), []( std::string const & s ) { return s == "disabled"; } ) || extensionData.isDeprecated ||
ratified.empty() || ( supported == ratified ),
line,
"attribute \"ratified\" differs from attribute \"supported\"" );
bool extensionSupported = supported.empty() || std::any_of( supported.begin(), supported.end(), [this]( std::string const & s ) { return s == m_api; } );
bool extensionSupported =
extensionData.supported.empty() ||
std::any_of( extensionData.supported.begin(), extensionData.supported.end(), [this]( std::string const & s ) { return s == m_api; } );
checkForError( !extensionSupported || !extensionData.type.empty(), line, "missing attribute \"type\" for supported extension <" + extensionData.name + ">" );
for ( auto child : children )
{
readExtensionRequire( child, extensionData, extensionSupported );
}
if ( std::none_of( supported.begin(), supported.end(), []( std::string const & s ) { return s == "disabled"; } ) )
if ( std::none_of( extensionData.supported.begin(), extensionData.supported.end(), []( std::string const & s ) { return s == "disabled"; } ) )
{
// extract the tag from the name, which is supposed to look like VK_<tag>_<other>
size_t tagStart = extensionData.name.find( '_' );

View File

@ -238,7 +238,9 @@ private:
std::string platform = {};
std::string promotedTo = {};
std::map<std::string, std::vector<std::vector<std::string>>> depends = {};
std::vector<std::string> ratified = {};
std::vector<RequireData> requireData = {};
std::vector<std::string> supported = {};
std::string type = {};
int xmlLine = 0;
};