First version to support both, "vulkan" and "vulkansc". (#1524)

The files set generated is controlled by command line argument -api [vulkan|vulkansc]
This commit is contained in:
Andreas Süßenbach 2023-03-07 08:23:14 +01:00 committed by GitHub
parent 31554d2aca
commit ae07aa7254
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 117996 additions and 235 deletions

File diff suppressed because it is too large Load Diff

View File

@ -76,18 +76,18 @@ constexpr CommandFlavourFlags operator|( CommandFlavourFlagBits const & lhs, Com
class VulkanHppGenerator class VulkanHppGenerator
{ {
public: public:
VulkanHppGenerator( tinyxml2::XMLDocument const & document ); VulkanHppGenerator( tinyxml2::XMLDocument const & document, std::string const & api );
void generateVulkanEnumsHppFile() const; void generateEnumsHppFile() const;
void generateVulkanFormatTraitsHppFile() const; void generateFormatTraitsHppFile() const;
void generateVulkanFuncsHppFile() const; void generateFuncsHppFile() const;
void generateVulkanHandlesHppFile() const; void generateHandlesHppFile() const;
void generateVulkanHashHppFile() const; void generateHashHppFile() const;
void generateVulkanHppFile() const; void generateHppFile() const;
void generateVulkanRAIIHppFile() const; void generateRAIIHppFile() const;
void generateVulkanStaticAssertionsHppFile() const; void generateStaticAssertionsHppFile() const;
void generateVulkanStructsHppFile() const; void generateStructsHppFile() const;
void generateVulkanToStringHppFile() const; void generateToStringHppFile() const;
void prepareRAIIHandles(); void prepareRAIIHandles();
void prepareVulkanFuncs(); void prepareVulkanFuncs();
@ -201,18 +201,18 @@ private:
std::string alias = {}; std::string alias = {};
std::string name = {}; std::string name = {};
std::string protect = {}; std::string protect = {};
bool required = false;
bool singleBit = false; bool singleBit = false;
int xmlLine = 0; int xmlLine = 0;
}; };
struct EnumData struct EnumData
{ {
void addEnumAlias( int line, std::string const & name, std::string const & alias, std::string const & protect, bool required ); void addEnumAlias( int line, std::string const & name, std::string const & alias, std::string const & protect, bool supported );
void addEnumValue( int line, std::string const & valueName, std::string const & protect, bool singleBit, bool required ); void addEnumValue( int line, std::string const & valueName, std::string const & protect, bool singleBit, bool supported );
std::string bitwidth = {}; std::string bitwidth = {};
bool isBitmask = false; bool isBitmask = false;
std::vector<EnumValueData> unsupportedValues = {};
std::vector<EnumValueData> values = {}; std::vector<EnumValueData> values = {};
int xmlLine = 0; int xmlLine = 0;
}; };
@ -236,7 +236,7 @@ private:
{ {
std::string name = {}; std::string name = {};
std::string number = {}; std::string number = {};
RemoveData removeData = {}; std::vector<RemoveData> removeData = {};
std::vector<RequireData> requireData = {}; std::vector<RequireData> requireData = {};
}; };
@ -485,10 +485,10 @@ private:
void distributeSecondLevelCommands( std::set<std::string> const & specialFunctions ); void distributeSecondLevelCommands( std::set<std::string> const & specialFunctions );
std::map<std::string, AliasData>::const_iterator findAlias( std::string const & name, std::map<std::string, AliasData> const & aliases ) const; std::map<std::string, AliasData>::const_iterator findAlias( std::string const & name, std::map<std::string, AliasData> const & aliases ) const;
std::string findBaseName( std::string aliasName, std::map<std::string, AliasData> const & aliases ) const; std::string findBaseName( std::string aliasName, std::map<std::string, AliasData> const & aliases ) const;
std::vector<ExtensionData>::const_iterator findExtension( std::string const & name ) const;
std::vector<FeatureData>::const_iterator findFeature( std::string const & name ) const; std::vector<FeatureData>::const_iterator findFeature( std::string const & name ) const;
std::vector<MemberData>::const_iterator findStructMemberIt( std::string const & name, std::vector<MemberData> const & memberData ) const; std::vector<MemberData>::const_iterator findStructMemberIt( std::string const & name, std::vector<MemberData> const & memberData ) const;
std::vector<MemberData>::const_iterator findStructMemberItByType( std::string const & type, std::vector<MemberData> const & memberData ) const; std::vector<MemberData>::const_iterator findStructMemberItByType( std::string const & type, std::vector<MemberData> const & memberData ) const;
std::vector<ExtensionData>::const_iterator findSupportedExtension( std::string const & name ) const;
std::string findTag( std::string const & name, std::string const & postfix = "" ) const; std::string findTag( std::string const & name, std::string const & postfix = "" ) const;
std::pair<std::string, std::string> generateAllocatorTemplates( std::vector<size_t> const & returnParams, std::pair<std::string, std::string> generateAllocatorTemplates( std::vector<size_t> const & returnParams,
std::vector<std::string> const & returnDataTypes, std::vector<std::string> const & returnDataTypes,
@ -671,6 +671,7 @@ private:
std::string const & returnVariable ) const; std::string const & returnVariable ) const;
std::string generateDataDeclarations3Returns( CommandData const & commandData, std::string generateDataDeclarations3Returns( CommandData const & commandData,
std::vector<size_t> const & returnParams, std::vector<size_t> const & returnParams,
std::map<size_t, VectorParamData> const & vectorParams,
CommandFlavourFlags flavourFlags, CommandFlavourFlags flavourFlags,
bool raii, bool raii,
std::vector<std::string> const & dataTypes ) const; std::vector<std::string> const & dataTypes ) const;
@ -911,6 +912,10 @@ private:
size_t returnParam, size_t returnParam,
std::string const & returnParamType, std::string const & returnParamType,
std::set<size_t> const & templatedParams ) const; std::set<size_t> const & templatedParams ) const;
void handleRemoval( RemoveData const & removeData );
bool handleRemovalCommand( std::string const & command, std::vector<RequireData> & requireData );
void handleRemovals();
bool handleRemovalType( std::string const & type, std::vector<RequireData> & requireData );
bool hasLen( std::vector<MemberData> const & members, MemberData const & md ) const; bool hasLen( std::vector<MemberData> const & members, MemberData const & md ) const;
bool hasParentHandle( std::string const & handle, std::string const & parent ) const; bool hasParentHandle( std::string const & handle, std::string const & parent ) const;
bool isDeviceCommand( CommandData const & commandData ) const; bool isDeviceCommand( CommandData const & commandData ) const;
@ -923,6 +928,9 @@ private:
bool isParam( std::string const & name, std::vector<ParamData> const & params ) const; bool isParam( std::string const & name, std::vector<ParamData> const & params ) const;
bool isStructMember( std::string const & name, std::vector<MemberData> const & memberData ) const; bool isStructMember( std::string const & name, std::vector<MemberData> const & memberData ) const;
bool isStructureChainAnchor( std::string const & type ) const; bool isStructureChainAnchor( std::string const & type ) const;
bool isSupported( std::set<std::string> const & requiredBy ) const;
bool isSupportedExtension( std::string const & name ) const;
bool isSupportedFeature( std::string const & name ) const;
bool isTypeRequired( std::string const & type ) const; bool isTypeRequired( std::string const & type ) const;
bool isTypeUsed( std::string const & type ) const; bool isTypeUsed( std::string const & type ) const;
std::pair<bool, std::map<size_t, std::vector<size_t>>> needsVectorSizeCheck( std::vector<ParamData> const & params, std::pair<bool, std::map<size_t, std::vector<size_t>>> needsVectorSizeCheck( std::vector<ParamData> const & params,
@ -991,6 +999,7 @@ private:
std::string toString( TypeCategory category ); std::string toString( TypeCategory category );
private: private:
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::map<std::string, AliasData> m_bitmasksAliases; std::map<std::string, AliasData> m_bitmasksAliases;
@ -1018,6 +1027,8 @@ private:
std::map<std::string, TagData> m_tags; std::map<std::string, TagData> m_tags;
std::map<std::string, TypeData> m_types; std::map<std::string, TypeData> m_types;
std::string m_typesafeCheck; std::string m_typesafeCheck;
std::set<std::string> m_unsupportedExtensions;
std::set<std::string> m_unsupportedFeatures;
std::string m_version; std::string m_version;
std::string m_vulkanLicenseHeader; std::string m_vulkanLicenseHeader;
}; };

8195
vulkan/vulkansc.hpp Normal file

File diff suppressed because it is too large Load Diff

3381
vulkan/vulkansc_enums.hpp Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

10643
vulkan/vulkansc_funcs.hpp Normal file

File diff suppressed because it is too large Load Diff

8086
vulkan/vulkansc_handles.hpp Normal file

File diff suppressed because it is too large Load Diff

7412
vulkan/vulkansc_hash.hpp Normal file

File diff suppressed because it is too large Load Diff

10443
vulkan/vulkansc_raii.hpp Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

54572
vulkan/vulkansc_structs.hpp Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff