Add check on <syncstage> <syncsupport> "queues" being specified with at least one command. (#1968)
Some checks are pending
Set Version Tag / set-version-tag (push) Waiting to run

This commit is contained in:
Andreas Süßenbach 2024-10-08 13:25:37 +02:00 committed by GitHub
parent b8e4e70adf
commit 00dac1bd21
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 5 deletions

View File

@ -13340,7 +13340,7 @@ void VulkanHppGenerator::readCommand( tinyxml2::XMLElement const * element )
{ "cmdbufferlevel", { "primary", "secondary" } }, { "cmdbufferlevel", { "primary", "secondary" } },
{ "comment", {} }, { "comment", {} },
{ "errorcodes", {} }, { "errorcodes", {} },
{ "queues", { "compute", "decode", "encode", "graphics", "opticalflow", "sparse_binding", "transfer" } }, { "queues", {} },
{ "renderpass", { "both", "inside", "outside" } }, { "renderpass", { "both", "inside", "outside" } },
{ "successcodes", {} }, { "successcodes", {} },
{ "tasks", { "action", "indirection", "state", "synchronization" } }, { "tasks", { "action", "indirection", "state", "synchronization" } },
@ -13363,6 +13363,10 @@ void VulkanHppGenerator::readCommand( tinyxml2::XMLElement const * element )
commandData.errorCodes = tokenize( attribute.second, "," ); commandData.errorCodes = tokenize( attribute.second, "," );
// errorCodes are checked in checkCorrectness after complete reading // errorCodes are checked in checkCorrectness after complete reading
} }
else if ( attribute.first == "queues" )
{
m_commandQueues.insert( attribute.second );
}
else if ( attribute.first == "successcodes" ) else if ( attribute.first == "successcodes" )
{ {
commandData.successCodes = tokenize( attribute.second, "," ); commandData.successCodes = tokenize( attribute.second, "," );
@ -15267,9 +15271,16 @@ void VulkanHppGenerator::readSyncStageEquivalent( tinyxml2::XMLElement const * e
void VulkanHppGenerator::readSyncStageSupport( tinyxml2::XMLElement const * element ) void VulkanHppGenerator::readSyncStageSupport( tinyxml2::XMLElement const * element )
{ {
const int line = element->GetLineNum(); const int line = element->GetLineNum();
checkAttributes( line, getAttributes( element ), { { "queues", { "compute", "decode", "encode", "graphics", "opticalflow", "transfer" } } }, {} ); std::map<std::string, std::string> attributes = getAttributes( element );
checkAttributes( line, attributes, { { "queues", {} } }, {} );
checkElements( line, getChildElements( element ), {}, {} ); checkElements( line, getChildElements( element ), {}, {} );
for ( auto const & attribute : attributes )
{
assert( attribute.first == "queues" );
checkForError( m_commandQueues.contains( attribute.second ), line, "syncsupport queues uses unknown value <" + attribute.second + ">" );
}
} }
void VulkanHppGenerator::readTag( tinyxml2::XMLElement const * element ) void VulkanHppGenerator::readTag( tinyxml2::XMLElement const * element )

View File

@ -1102,8 +1102,7 @@ private:
void readSPIRVExtensions( tinyxml2::XMLElement const * element ); void readSPIRVExtensions( tinyxml2::XMLElement const * element );
void readStructMember( tinyxml2::XMLElement const * element, std::vector<MemberData> & members, bool isUnion ); void readStructMember( tinyxml2::XMLElement const * element, std::vector<MemberData> & members, bool isUnion );
void readSync( tinyxml2::XMLElement const * element ); void readSync( tinyxml2::XMLElement const * element );
void readSyncAccess( tinyxml2::XMLElement const * element, void readSyncAccess( tinyxml2::XMLElement const * element, std::map<std::string, EnumData>::const_iterator accessFlagBits2It );
std::map<std::string, EnumData>::const_iterator accessFlagBits2It );
void readSyncAccessEquivalent( tinyxml2::XMLElement const * element, std::map<std::string, EnumData>::const_iterator accessFlagBits2It ); void readSyncAccessEquivalent( tinyxml2::XMLElement const * element, std::map<std::string, EnumData>::const_iterator accessFlagBits2It );
void readSyncAccessSupport( tinyxml2::XMLElement const * element ); void readSyncAccessSupport( tinyxml2::XMLElement const * element );
void readSyncPipeline( tinyxml2::XMLElement const * element ); void readSyncPipeline( tinyxml2::XMLElement const * element );
@ -1151,6 +1150,7 @@ private:
std::string m_api; std::string m_api;
std::map<std::string, BaseTypeData> m_baseTypes; std::map<std::string, BaseTypeData> m_baseTypes;
std::map<std::string, BitmaskData> m_bitmasks; std::map<std::string, BitmaskData> m_bitmasks;
std::set<std::string> m_commandQueues;
std::map<std::string, CommandData> m_commands; std::map<std::string, CommandData> m_commands;
std::map<std::string, ConstantData> m_constants; std::map<std::string, ConstantData> m_constants;
std::map<std::string, DefineData> m_defines; std::map<std::string, DefineData> m_defines;