diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp
index 8d756b6..7a4629a 100644
--- a/VulkanHppGenerator.cpp
+++ b/VulkanHppGenerator.cpp
@@ -2955,6 +2955,48 @@ std::string VulkanHppGenerator::generateCallArgumentEnhancedValue( std::vector
const & returnParams,
+ std::map const & vectorParams,
+ size_t initialSkipCount,
+ std::set const & singularParams,
+ std::set const & templatedParams ) const
+{
+ if ( singularParams.empty() && ( returnParams.size() == 2 ) )
+ {
+ assert( templatedParams.empty() );
+ auto vectorParamIt = vectorParams.find( returnParams[1] );
+ assert( ( vectorParamIt != vectorParams.end() ) && ( vectorParamIt->second == returnParams[0] ) );
+
+ std::string firstCallArguments = generateCallArgumentsEnhanced( commandData, initialSkipCount, true, {}, templatedParams, false );
+ std::string secondCallArguments = generateCallArgumentsEnhanced( commandData, initialSkipCount, false, {}, templatedParams, false );
+ std::string vectorName = startLowerCase( stripPrefix( commandData.params[vectorParamIt->first].name, "p" ) );
+ std::string vectorSize = startLowerCase( stripPrefix( commandData.params[vectorParamIt->second].name, "p" ) );
+
+ std::string const callSequenceTemplate = R"(d.${vkCommand}( ${firstCallArguments} );
+ ${vectorName}.resize( ${vectorSize} );
+ d.${vkCommand}( ${secondCallArguments} );
+ VULKAN_HPP_ASSERT( ${vectorSize} <= ${vectorName}.size() );)";
+
+ return replaceWithMap( callSequenceTemplate,
+ { { "firstCallArguments", firstCallArguments },
+ { "secondCallArguments", secondCallArguments },
+ { "vectorName", vectorName },
+ { "vectorSize", vectorSize },
+ { "vkCommand", name } } );
+ }
+ else
+ {
+ std::string const callSequenceTemplate = R"(${resultAssignment}d.${vkCommand}( ${callArguments} );)";
+
+ std::string callArguments = generateCallArgumentsEnhanced( commandData, initialSkipCount, false, singularParams, templatedParams, false );
+ std::string resultAssignment = generateResultAssignment( commandData );
+
+ return replaceWithMap( callSequenceTemplate, { { "callArguments", callArguments }, { "resultAssignment", resultAssignment }, { "vkCommand", name } } );
+ }
+}
+
std::string VulkanHppGenerator::generateCommand( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition ) const
{
std::string str;
@@ -3095,6 +3137,147 @@ std::string VulkanHppGenerator::generateCommandDefinitions( std::string const &
return str;
}
+std::string VulkanHppGenerator::generateCommandEnhanced( std::string const & name,
+ CommandData const & commandData,
+ size_t initialSkipCount,
+ bool definition,
+ std::map const & vectorParams,
+ std::vector const & returnParams,
+ bool singular,
+ bool withAllocator,
+ bool chained,
+ bool unique ) const
+{
+ assert( returnParams.size() <= 2 );
+ assert( vectorParams.empty() || ( vectorParams.begin()->second != INVALID_INDEX ) );
+ assert( !singular || !returnParams.empty() ); // if singular is true, then there is at least one returnParam !
+ assert( !chained || ( returnParams.size() == 1 ) ); // if chained is true, then there is one returnParam !
+ assert( !chained || isStructureChainAnchor( commandData.params[returnParams[0]].type.type ) );
+
+ std::set skippedParams = determineSkippedParams( commandData.params, initialSkipCount, vectorParams, returnParams, singular );
+ // special handling for vkGetMemoryHostPointerPropertiesEXT: here, we really need to stick with the const void * parameter !
+ std::set templatedParams = ( name == "vkGetMemoryHostPointerPropertiesEXT" ) ? std::set() : determineVoidPointerParams( commandData.params );
+ std::set singularParams = singular ? determineSingularParams( returnParams[0], vectorParams ) : std::set();
+ std::pair>> vectorSizeCheck =
+ needsVectorSizeCheck( commandData.params, vectorParams, returnParams, singularParams );
+
+ std::vector dataTypes;
+ for ( auto rp : returnParams )
+ {
+ dataTypes.push_back( ( templatedParams.find( rp ) != templatedParams.end() )
+ ? ( stripPrefix( commandData.params[rp].name, "p" ) + "Type" )
+ : trimEnd( stripPostfix( commandData.params[rp].type.compose( "VULKAN_HPP_NAMESPACE" ), "*" ) ) );
+ }
+ std::string dataType;
+ switch ( dataTypes.size() )
+ {
+ case 0: dataType = "void"; break;
+ case 1: dataType = dataTypes[0]; break;
+ case 2:
+ {
+ auto vectorParamIt = vectorParams.find( returnParams[1] );
+ if ( vectorParamIt == vectorParams.end() )
+ {
+ dataType = "std::pair<" + dataTypes[0] + ", " + dataTypes[1] + ">";
+ }
+ else
+ {
+ assert( vectorParamIt->second == returnParams[0] );
+ dataType = "std::vector<" + dataTypes[1] + ", " + stripPrefix( dataTypes[1], "VULKAN_HPP_NAMESPACE::" ) + "Allocator>";
+ }
+ }
+ break;
+ default: assert( false ); break;
+ }
+
+ std::string argumentTemplates = generateArgumentTemplates( commandData.params, templatedParams, false );
+ std::string chainTemplates = chained ? "typename X, typename Y, typename... Z, " : "";
+ std::string allocatorTemplates = generateAllocatorTemplates( returnParams, dataTypes, vectorParams, definition, singular );
+ std::string typenameCheck = generateTypenameCheck( commandData, returnParams, vectorParams, definition, false, withAllocator );
+ std::string nodiscard = generateNoDiscard( !returnParams.empty(), 1 < commandData.successCodes.size(), 1 < commandData.errorCodes.size() );
+ std::string returnType = generateReturnType( commandData, returnParams, vectorParams, singular, unique, chained, dataType );
+ std::string className = initialSkipCount ? stripPrefix( commandData.params[initialSkipCount - 1].type.type, "Vk" ) : "";
+ std::string classSeparator = commandData.handle.empty() ? "" : "::";
+ std::string commandName = generateCommandName( name, commandData.params, initialSkipCount, m_tags, singular, unique );
+ std::string argumentList =
+ generateArgumentListEnhanced( commandData.params, skippedParams, singularParams, templatedParams, definition, withAllocator, chained, true );
+ std::string constString = commandData.handle.empty() ? "" : " const";
+
+ // noexcept is only possible with no error codes, and the return param (if any) is not a vector param (unless it's the singular version)
+ std::string noexceptString =
+ ( commandData.errorCodes.empty() &&
+ ( singular || returnParams.empty() ||
+ ( std::find_if( returnParams.begin(), returnParams.end(), [&vectorParams]( size_t rp ) { return vectorParams.find( rp ) != vectorParams.end(); } ) ==
+ returnParams.end() ) ) )
+ ? ( vectorSizeCheck.first ? " VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS" : " VULKAN_HPP_NOEXCEPT" )
+ : "";
+
+ if ( definition )
+ {
+ std::string vectorSizeCheckString =
+ vectorSizeCheck.first ? generateVectorSizeCheck( name, commandData, initialSkipCount, vectorSizeCheck.second, skippedParams, false ) : "";
+ std::string returnVariable = generateReturnVariable( commandData, returnParams, vectorParams, chained, singular );
+ std::string dataDeclarations = generateDataDeclarations(
+ commandData, returnParams, vectorParams, templatedParams, singular, withAllocator, chained, dataTypes, returnType, returnVariable );
+ std::string dataSizeChecks = generateDataSizeChecks( commandData, returnParams, dataTypes, vectorParams, templatedParams, singular );
+ std::string callSequence = generateCallSequence( name, commandData, returnParams, vectorParams, initialSkipCount, singularParams, templatedParams );
+ std::string resultCheck = generateResultCheck( commandData, className, classSeparator, commandName );
+ std::string returnStatement = generateReturnStatement(
+ name, commandData, returnVariable, returnType, dataType, initialSkipCount, returnParams.empty() ? INVALID_INDEX : returnParams[0], unique );
+
+ std::string const functionTemplate =
+ R"( template <${argumentTemplates}${chainTemplates}${allocatorTemplates}typename Dispatch${typenameCheck}>
+ ${nodiscard}VULKAN_HPP_INLINE ${returnType} ${className}${classSeparator}${commandName}( ${argumentList} )${const}${noexcept}
+ {
+ VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
+${vectorSizeCheck}
+ ${dataSizeChecks}
+ ${dataDeclarations}
+ ${callSequence}
+ ${resultCheck}
+ ${returnStatement}
+ })";
+
+ return replaceWithMap( functionTemplate,
+ { { "allocatorTemplates", allocatorTemplates },
+ { "argumentList", argumentList },
+ { "argumentTemplates", argumentTemplates },
+ { "callSequence", callSequence },
+ { "chainTemplates", chainTemplates },
+ { "className", className },
+ { "classSeparator", classSeparator },
+ { "commandName", commandName },
+ { "const", constString },
+ { "dataDeclarations", dataDeclarations },
+ { "dataSizeChecks", dataSizeChecks },
+ { "nodiscard", nodiscard },
+ { "noexcept", noexceptString },
+ { "resultCheck", resultCheck },
+ { "returnStatement", returnStatement },
+ { "returnType", returnType },
+ { "typenameCheck", typenameCheck },
+ { "vectorSizeCheck", vectorSizeCheckString } } );
+ }
+ else
+ {
+ std::string const functionTemplate =
+ R"( template <${argumentTemplates}${chainTemplates}${allocatorTemplates}typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE${typenameCheck}>
+ ${nodiscard}${returnType} ${commandName}( ${argumentList} )${const}${noexcept};)";
+
+ return replaceWithMap( functionTemplate,
+ { { "allocatorTemplates", allocatorTemplates },
+ { "argumentList", argumentList },
+ { "argumentTemplates", argumentTemplates },
+ { "chainTemplates", chainTemplates },
+ { "commandName", commandName },
+ { "const", commandData.handle.empty() ? "" : " const" },
+ { "nodiscard", nodiscard },
+ { "noexcept", noexceptString },
+ { "returnType", returnType },
+ { "typenameCheck", typenameCheck } } );
+ }
+}
+
std::string VulkanHppGenerator::generateCommandName( std::string const & vulkanCommandName,
std::vector const & params,
size_t initialSkipCount,
@@ -3660,7 +3843,7 @@ std::string VulkanHppGenerator::generateCommandResultMultiSuccessNoErrors0Return
{
return generateCommandSetStandardOrEnhanced(
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, {}, {}, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, {}, {}, false, false, false, false ) );
}
}
return "";
@@ -3728,8 +3911,8 @@ std::string VulkanHppGenerator::generateCommandResultMultiSuccessWithErrors1Retu
return generateCommandSetStandardEnhancedSingular(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
}
}
}
@@ -3750,12 +3933,12 @@ std::string VulkanHppGenerator::generateCommandResultMultiSuccessWithErrors1Retu
return generateCommandSetStandardEnhancedWithAllocatorSingularUnique(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ),
generateCommandResultGetVectorOfHandlesUnique( name, commandData, initialSkipCount, definition, vectorParams, returnParam, false ),
generateCommandResultGetVectorOfHandlesUnique( name, commandData, initialSkipCount, definition, vectorParams, returnParam, true ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, true ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, true ) );
}
}
}
@@ -3770,7 +3953,7 @@ std::string VulkanHppGenerator::generateCommandResultMultiSuccessWithErrors1Retu
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
}
}
return "";
@@ -3834,7 +4017,7 @@ std::string VulkanHppGenerator::generateCommandResultMultiSuccessWithErrors2Retu
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, false, false, false ) );
}
}
}
@@ -3896,7 +4079,7 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessNoErrors( std:
{
return generateCommandSetStandardOrEnhanced(
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, {}, {}, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, {}, {}, false, false, false, false ) );
}
}
else if ( vectorParams.size() == 1 )
@@ -3908,7 +4091,7 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessNoErrors( std:
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
}
}
}
@@ -3961,8 +4144,8 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhancedChained(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, true, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, true, false ) );
}
return "";
}
@@ -3977,8 +4160,8 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhancedUnique(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, true ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, true ) );
break;
case 1:
return generateCommandResultSingleSuccessWithErrors1ReturnHandle1Vector(
@@ -4005,8 +4188,8 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhancedWithAllocatorUnique(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, { vectorParamIndex }, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, { vectorParamIndex }, { returnParam }, false, true, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, { vectorParamIndex }, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, { vectorParamIndex }, { returnParam }, false, true, false, false ),
generateCommandResultGetVectorOfHandlesUnique( name, commandData, initialSkipCount, definition, { vectorParamIndex }, returnParam, false ),
generateCommandResultGetVectorOfHandlesUnique( name, commandData, initialSkipCount, definition, { vectorParamIndex }, returnParam, true ) );
}
@@ -4032,12 +4215,12 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhancedWithAllocatorSingularUnique(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ),
generateCommandResultGetVectorOfHandlesUnique( name, commandData, initialSkipCount, definition, vectorParams, returnParam, false ),
generateCommandResultGetVectorOfHandlesUnique( name, commandData, initialSkipCount, definition, vectorParams, returnParam, true ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, true ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, true ) );
}
}
}
@@ -4055,7 +4238,7 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
case 2:
return generateCommandResultSingleSuccessWithErrors1ReturnValue2Vectors( name, commandData, initialSkipCount, definition, returnParam, vectorParams );
break;
@@ -4083,9 +4266,9 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhancedWithAllocatorSingular(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
}
}
}
@@ -4103,7 +4286,7 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
break;
case 1:
if ( returnParam == vectorParams.begin()->first )
@@ -4113,8 +4296,8 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhancedSingular(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
}
}
break;
@@ -4132,8 +4315,8 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors1Ret
return generateCommandSetStandardEnhancedSingular(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
}
}
}
@@ -4174,7 +4357,7 @@ std::string VulkanHppGenerator::generateCommandResultSingleSuccessWithErrors2Ret
generateCommandStandard( name, commandData, initialSkipCount, definition ),
generateCommandResultGetVectorAndValue( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false ),
generateCommandResultGetVectorAndValue( name, commandData, initialSkipCount, definition, vectorParams, returnParams, true ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, returnParams, true, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, returnParams, true, false, false, false ) );
}
}
}
@@ -4196,14 +4379,14 @@ std::string VulkanHppGenerator::generateCommandResultWithErrors0Return( std::str
{
return generateCommandSetStandardOrEnhanced(
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
}
else if ( allVectorSizesSupported( commandData.params, vectorParams ) )
{
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
}
return "";
}
@@ -4437,134 +4620,6 @@ ${commandEnhanced}
return replaceWithMap( commandTemplate, std::map( { { "commandEnhanced", enhanced }, { "commandStandard", standard } } ) );
}
-std::string VulkanHppGenerator::generateCommandSingle( std::string const & name,
- CommandData const & commandData,
- size_t initialSkipCount,
- bool definition,
- std::map const & vectorParams,
- std::vector const & returnParams,
- bool singular,
- bool withAllocator,
- bool chained,
- bool unique ) const
-{
- assert( returnParams.size() <= 2 );
- assert( vectorParams.empty() || ( vectorParams.begin()->second != INVALID_INDEX ) );
- assert( !singular || !returnParams.empty() ); // if singular is true, then there is at least one returnParam !
- assert( !chained || ( returnParams.size() == 1 ) ); // if chained is true, then there is one returnParam !
- assert( !chained || isStructureChainAnchor( commandData.params[returnParams[0]].type.type ) );
-
- std::set skippedParams = determineSkippedParams( commandData.params, initialSkipCount, vectorParams, returnParams, singular );
- // special handling for vkGetMemoryHostPointerPropertiesEXT: here, we really need to stick with the const void * parameter !
- std::set templatedParams = ( name == "vkGetMemoryHostPointerPropertiesEXT" ) ? std::set() : determineVoidPointerParams( commandData.params );
- std::set singularParams = singular ? determineSingularParams( returnParams[0], vectorParams ) : std::set();
- std::pair>> vectorSizeCheck =
- needsVectorSizeCheck( commandData.params, vectorParams, returnParams, singularParams );
-
- std::vector dataTypes;
- for ( auto rp : returnParams )
- {
- dataTypes.push_back( ( templatedParams.find( rp ) != templatedParams.end() )
- ? ( stripPrefix( commandData.params[rp].name, "p" ) + "Type" )
- : trimEnd( stripPostfix( commandData.params[rp].type.compose( "VULKAN_HPP_NAMESPACE" ), "*" ) ) );
- }
- std::string dataType;
- switch ( dataTypes.size() )
- {
- case 0: dataType = "void"; break;
- case 1: dataType = dataTypes[0]; break;
- case 2: dataType = "std::pair<" + dataTypes[0] + ", " + dataTypes[1] + ">"; break;
- default: assert( false ); break;
- }
-
- std::string argumentTemplates = generateArgumentTemplates( commandData.params, templatedParams, false );
- std::string chainTemplates = chained ? "typename X, typename Y, typename... Z, " : "";
- std::string allocatorTemplates = generateAllocatorTemplates( returnParams, dataTypes, vectorParams, definition, singular );
- std::string typenameCheck = generateTypenameCheck( commandData, returnParams, vectorParams, definition, false, withAllocator );
- std::string nodiscard = generateNoDiscard( !returnParams.empty(), 1 < commandData.successCodes.size(), 1 < commandData.errorCodes.size() );
- std::string returnType = generateReturnType( commandData, returnParams, vectorParams, singular, unique, chained, dataType );
- std::string className = initialSkipCount ? stripPrefix( commandData.params[initialSkipCount - 1].type.type, "Vk" ) : "";
- std::string classSeparator = commandData.handle.empty() ? "" : "::";
- std::string commandName = generateCommandName( name, commandData.params, initialSkipCount, m_tags, singular, unique );
- std::string argumentList =
- generateArgumentListEnhanced( commandData.params, skippedParams, singularParams, templatedParams, definition, withAllocator, chained, true );
- std::string constString = commandData.handle.empty() ? "" : " const";
-
- // noexcept is only possible with no error codes, and the return param (if any) is not a vector param (unless it's the singular version)
- std::string noexceptString =
- ( commandData.errorCodes.empty() && ( singular || returnParams.empty() || ( vectorParams.find( returnParams[0] ) == vectorParams.end() ) ) )
- ? ( vectorSizeCheck.first ? " VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS" : " VULKAN_HPP_NOEXCEPT" )
- : "";
-
- if ( definition )
- {
- std::string vectorSizeCheckString =
- vectorSizeCheck.first ? generateVectorSizeCheck( name, commandData, initialSkipCount, vectorSizeCheck.second, skippedParams, false ) : "";
- std::string returnVariable = generateReturnVariable( commandData, returnParams, chained, singular );
- std::string dataDeclarations = generateDataDeclarations(
- commandData, returnParams, vectorParams, templatedParams, singular, withAllocator, chained, dataTypes, returnType, returnVariable );
- std::string dataSizeChecks = generateDataSizeChecks( commandData, returnParams, dataTypes, vectorParams, templatedParams, singular );
- std::string resultAssignment = generateResultAssignment( commandData );
- std::string callArguments = generateCallArgumentsEnhanced( commandData, initialSkipCount, false, singularParams, templatedParams, false );
- std::string resultCheck = generateResultCheck( commandData, className, classSeparator, commandName );
- std::string returnStatement = generateReturnStatement(
- name, commandData, returnVariable, returnType, dataType, initialSkipCount, returnParams.empty() ? INVALID_INDEX : returnParams[0], unique );
-
- std::string const functionTemplate =
- R"( template <${argumentTemplates}${chainTemplates}${allocatorTemplates}typename Dispatch${typenameCheck}>
- ${nodiscard}VULKAN_HPP_INLINE ${returnType} ${className}${classSeparator}${commandName}( ${argumentList} )${const}${noexcept}
- {
- VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
-${vectorSizeCheck}
- ${dataSizeChecks}
- ${dataDeclarations}
- ${resultAssignment}d.${vkCommand}( ${callArguments} );
- ${resultCheck}
- ${returnStatement}
- })";
-
- return replaceWithMap( functionTemplate,
- { { "allocatorTemplates", allocatorTemplates },
- { "argumentList", argumentList },
- { "argumentTemplates", argumentTemplates },
- { "callArguments", callArguments },
- { "chainTemplates", chainTemplates },
- { "className", className },
- { "classSeparator", classSeparator },
- { "commandName", commandName },
- { "const", constString },
- { "dataDeclarations", dataDeclarations },
- { "dataSizeChecks", dataSizeChecks },
- { "nodiscard", nodiscard },
- { "noexcept", noexceptString },
- { "resultAssignment", resultAssignment },
- { "resultCheck", resultCheck },
- { "returnStatement", returnStatement },
- { "returnType", returnType },
- { "typenameCheck", typenameCheck },
- { "vectorSizeCheck", vectorSizeCheckString },
- { "vkCommand", name } } );
- }
- else
- {
- std::string const functionTemplate =
- R"( template <${argumentTemplates}${chainTemplates}${allocatorTemplates}typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE${typenameCheck}>
- ${nodiscard}${returnType} ${commandName}( ${argumentList} )${const}${noexcept};)";
-
- return replaceWithMap( functionTemplate,
- { { "allocatorTemplates", allocatorTemplates },
- { "argumentList", argumentList },
- { "argumentTemplates", argumentTemplates },
- { "chainTemplates", chainTemplates },
- { "commandName", commandName },
- { "const", commandData.handle.empty() ? "" : " const" },
- { "nodiscard", nodiscard },
- { "noexcept", noexceptString },
- { "returnType", returnType },
- { "typenameCheck", typenameCheck } } );
- }
-}
-
std::string
VulkanHppGenerator::generateCommandStandard( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition ) const
{
@@ -4638,7 +4693,7 @@ std::string
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, false, false, false ) );
}
}
}
@@ -4659,7 +4714,7 @@ std::string
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, {}, false, false, false, false ) );
}
return "";
}
@@ -4678,7 +4733,7 @@ std::string VulkanHppGenerator::generateCommandVoid1Return(
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ) );
}
}
}
@@ -4689,7 +4744,7 @@ std::string VulkanHppGenerator::generateCommandVoid1Return(
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ) );
}
}
else if ( isStructureChainAnchor( commandData.params[returnParam].type.type ) )
@@ -4699,8 +4754,8 @@ std::string VulkanHppGenerator::generateCommandVoid1Return(
return generateCommandSetStandardEnhancedChained(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, true, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, true, false ) );
}
}
else if ( commandData.params[returnParam].type.type == "void" )
@@ -4714,7 +4769,7 @@ std::string VulkanHppGenerator::generateCommandVoid1Return(
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, true, false, false, false ) );
}
}
}
@@ -4727,7 +4782,7 @@ std::string VulkanHppGenerator::generateCommandVoid1Return(
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, {}, { returnParam }, false, false, false, false ) );
break;
case 1:
if ( returnParam == vectorParams.begin()->first )
@@ -4736,8 +4791,8 @@ std::string VulkanHppGenerator::generateCommandVoid1Return(
return generateCommandSetStandardEnhancedWithAllocator(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, true, false, false ) );
}
else
{
@@ -4750,7 +4805,7 @@ std::string VulkanHppGenerator::generateCommandVoid1Return(
return generateCommandSetStandardEnhanced(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandSingle( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, { returnParam }, false, false, false, false ) );
}
}
}
@@ -4777,8 +4832,8 @@ std::string VulkanHppGenerator::generateCommandVoid2Return(
return generateCommandSetStandardEnhancedWithAllocatorChained(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandVoidEnumerate( name, commandData, initialSkipCount, definition, *vectorParams.begin(), returnParams, false ),
- generateCommandVoidEnumerate( name, commandData, initialSkipCount, definition, *vectorParams.begin(), returnParams, true ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, true, false, false ),
generateCommandVoidEnumerateChained( name, commandData, initialSkipCount, definition, *vectorParams.begin(), returnParams, false ),
generateCommandVoidEnumerateChained( name, commandData, initialSkipCount, definition, *vectorParams.begin(), returnParams, true ) );
}
@@ -4787,8 +4842,8 @@ std::string VulkanHppGenerator::generateCommandVoid2Return(
return generateCommandSetStandardEnhancedWithAllocator(
definition,
generateCommandStandard( name, commandData, initialSkipCount, definition ),
- generateCommandVoidEnumerate( name, commandData, initialSkipCount, definition, *vectorParams.begin(), returnParams, false ),
- generateCommandVoidEnumerate( name, commandData, initialSkipCount, definition, *vectorParams.begin(), returnParams, true ) );
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, false, false, false ),
+ generateCommandEnhanced( name, commandData, initialSkipCount, definition, vectorParams, returnParams, false, true, false, false ) );
}
}
}
@@ -4797,94 +4852,6 @@ std::string VulkanHppGenerator::generateCommandVoid2Return(
return "";
}
-std::string VulkanHppGenerator::generateCommandVoidEnumerate( std::string const & name,
- CommandData const & commandData,
- size_t initialSkipCount,
- bool definition,
- std::pair const & vectorParamIndex,
- std::vector const & returnParams,
- bool withAllocators ) const
-{
- std::set skippedParams = determineSkippedParams( commandData.params, initialSkipCount, { vectorParamIndex }, returnParams, false );
- std::set templatedParams = determineVoidPointerParams( commandData.params );
- std::string argumentList = generateArgumentListEnhanced( commandData.params, skippedParams, {}, templatedParams, definition, withAllocators, false, true );
- std::string argumentTemplates = generateArgumentTemplates( commandData.params, templatedParams, false );
- std::string commandName = generateCommandName( name, commandData.params, initialSkipCount, m_tags, false, false );
- std::string vectorElementType = ( templatedParams.find( vectorParamIndex.first ) == templatedParams.end() )
- ? stripPrefix( commandData.params[vectorParamIndex.first].type.type, "Vk" )
- : ( stripPrefix( commandData.params[vectorParamIndex.first].name, "p" ) + "Type" );
-
- if ( definition )
- {
- const std::string functionTemplate =
- R"( template <${argumentTemplates}typename ${vectorElementType}Allocator, typename Dispatch${typenameCheck}>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<${vectorElementType}, ${vectorElementType}Allocator> ${className}${classSeparator}${commandName}( ${argumentList} ) const
- {
- VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector<${vectorElementType}, ${vectorElementType}Allocator> ${vectorName}${vectorAllocator};
- ${counterType} ${counterName};
- d.${vkCommand}( ${firstCallArguments} );${templateArgumentSizeAssert}
- ${vectorName}.resize( ${vectorSize} );
- d.${vkCommand}( ${secondCallArguments} );
- VULKAN_HPP_ASSERT( ${counterName} <= ${vectorName}.size()${timesTemplateTypeSize} );
- return ${vectorName};
- })";
-
- std::string counterName = startLowerCase( stripPrefix( commandData.params[vectorParamIndex.second].name, "p" ) );
- std::string templateArgumentSizeAssert, timesTemplateTypeSize, vectorSize;
- if ( templatedParams.find( vectorParamIndex.first ) == templatedParams.end() )
- {
- vectorSize = counterName;
- }
- else
- {
- templateArgumentSizeAssert = "\n VULKAN_HPP_ASSERT( " + counterName + " % sizeof( " + vectorElementType + " ) == 0 );";
- timesTemplateTypeSize = " * sizeof( " + vectorElementType + " )";
- vectorSize = counterName + " / sizeof( " + vectorElementType + " )";
- }
- std::string vectorName = startLowerCase( stripPrefix( commandData.params[vectorParamIndex.first].name, "p" ) );
- std::string typenameCheck =
- withAllocators ? ( ", typename B, typename std::enable_if::value, int>::type " ) : "";
-
- return replaceWithMap( functionTemplate,
- { { "argumentList", argumentList },
- { "argumentTemplates", argumentTemplates },
- { "className", initialSkipCount ? stripPrefix( commandData.params[initialSkipCount - 1].type.type, "Vk" ) : "" },
- { "classSeparator", commandData.handle.empty() ? "" : "::" },
- { "commandName", commandName },
- { "counterName", counterName },
- { "counterType", commandData.params[vectorParamIndex.second].type.type },
- { "firstCallArguments", generateCallArgumentsEnhanced( commandData, initialSkipCount, true, {}, templatedParams, false ) },
- { "secondCallArguments", generateCallArgumentsEnhanced( commandData, initialSkipCount, false, {}, templatedParams, false ) },
- { "templateArgumentSizeAssert", templateArgumentSizeAssert },
- { "timesTemplateTypeSize", timesTemplateTypeSize },
- { "typenameCheck", typenameCheck },
- { "vectorAllocator", withAllocators ? ( "( " + startLowerCase( vectorElementType ) + "Allocator )" ) : "" },
- { "vectorElementType", vectorElementType },
- { "vectorName", vectorName },
- { "vectorSize", vectorSize },
- { "vkCommand", name } } );
- }
- else
- {
- const std::string functionTemplate =
- R"( template <${argumentTemplates}typename ${vectorElementType}Allocator = std::allocator<${vectorElementType}>, typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE${typenameCheck}>
- VULKAN_HPP_NODISCARD std::vector<${vectorElementType}, ${vectorElementType}Allocator> ${commandName}( ${argumentList} ) const;)";
-
- std::string typenameCheck = withAllocators
- ? ( ", typename B = " + vectorElementType + "Allocator, typename std::enable_if::value, int>::type = 0" )
- : "";
-
- return replaceWithMap( functionTemplate,
- { { "argumentList", argumentList },
- { "argumentTemplates", argumentTemplates },
- { "commandName", commandName },
- { "typenameCheck", typenameCheck },
- { "vectorElementType", vectorElementType } } );
- }
-}
-
std::string VulkanHppGenerator::generateCommandVoidEnumerateChained( std::string const & name,
CommandData const & commandData,
size_t initialSkipCount,
@@ -4978,6 +4945,7 @@ std::string VulkanHppGenerator::generateDataDeclarations( CommandData const &
std::string const & returnType,
std::string const & returnVariable ) const
{
+ assert( dataTypes.size() == returnParams.size() );
std::string dataDeclarations;
switch ( returnParams.size() )
{
@@ -5019,26 +4987,48 @@ std::string VulkanHppGenerator::generateDataDeclarations( CommandData const &
}
break;
case 2:
- assert( vectorParams.empty() || singular );
{
- std::string dataNames[2];
- for ( size_t i = 0; i < returnParams.size(); ++i )
+ auto vectorParamIt = vectorParams.find( returnParams[1] );
+ if ( vectorParamIt == vectorParams.end() )
{
- dataNames[i] = startLowerCase( stripPrefix( commandData.params[returnParams[i]].name, "p" ) );
- if ( vectorParams.find( returnParams[i] ) != vectorParams.end() )
+ assert( vectorParams.empty() || singular );
+ std::string dataNames[2];
+ for ( size_t i = 0; i < returnParams.size(); ++i )
{
- assert( singular );
- dataNames[i] = stripPluralS( dataNames[i] );
+ dataNames[i] = startLowerCase( stripPrefix( commandData.params[returnParams[i]].name, "p" ) );
+ if ( vectorParams.find( returnParams[i] ) != vectorParams.end() )
+ {
+ assert( singular );
+ dataNames[i] = stripPluralS( dataNames[i] );
+ }
}
- }
- std::string const dataDeclarationTemplate = R"(std::pair<${firstDataType},${secondDataType}> data;
+ std::string const dataDeclarationTemplate = R"(std::pair<${firstDataType},${secondDataType}> data;
${firstDataType} & ${firstDataName} = data.first;
${secondDataType} & ${secondDataName} = data.second;)";
- dataDeclarations = replaceWithMap(
- dataDeclarationTemplate,
- { { "firstDataName", dataNames[0] }, { "firstDataType", dataTypes[0] }, { "secondDataName", dataNames[1] }, { "secondDataType", dataTypes[1] } } );
+ dataDeclarations = replaceWithMap(
+ dataDeclarationTemplate,
+ { { "firstDataName", dataNames[0] }, { "firstDataType", dataTypes[0] }, { "secondDataName", dataNames[1] }, { "secondDataType", dataTypes[1] } } );
+ }
+ else
+ {
+ assert( !singular && !chained );
+ assert( vectorParamIt->second == returnParams[0] );
+ assert( commandData.params[returnParams[0]].type.isNonConstPointer() );
+
+ std::string vectorAllocator = withAllocator ? ( "( " + startLowerCase( stripPrefix( dataTypes[1], "VULKAN_HPP_NAMESPACE::" ) ) + "Allocator )" ) : "";
+
+ std::string const dataDeclarationTemplate = R"(${returnType} ${vectorName}${vectorAllocator};
+ ${counterType} ${counterName};)";
+
+ dataDeclarations = replaceWithMap( dataDeclarationTemplate,
+ { { "counterName", startLowerCase( stripPrefix( commandData.params[returnParams[0]].name, "p" ) ) },
+ { "counterType", dataTypes[0] },
+ { "returnType", returnType },
+ { "vectorAllocator", vectorAllocator },
+ { "vectorName", returnVariable } } );
+ }
}
break;
default: assert( false ); break;
@@ -10153,8 +10143,8 @@ std::string VulkanHppGenerator::generateReturnType( CommandData const &
return returnType;
}
-std::string
- VulkanHppGenerator::generateReturnVariable( CommandData const & commandData, std::vector const & returnParams, bool chained, bool singular ) const
+std::string VulkanHppGenerator::generateReturnVariable(
+ CommandData const & commandData, std::vector const & returnParams, std::map const & vectorParams, bool chained, bool singular ) const
{
std::string returnVariable;
switch ( returnParams.size() )
@@ -10174,9 +10164,22 @@ std::string
}
}
break;
- case 2: // the return variable is simply named "data", and holds the multi-return value stuff
- assert( !chained && singular );
- returnVariable = "data";
+ case 2:
+ assert( !chained );
+ {
+ auto vectorParamIt = vectorParams.find( returnParams[1] );
+ if ( vectorParamIt == vectorParams.end() )
+ { // the return variable is simply named "data", and holds the multi-return value stuff
+ assert( singular );
+ returnVariable = "data";
+ }
+ else
+ {
+ assert( vectorParamIt->second == returnParams[0] );
+ assert( !singular );
+ returnVariable = startLowerCase( stripPrefix( commandData.params[returnParams[1]].name, "p" ) );
+ }
+ }
break;
}
return returnVariable;
diff --git a/VulkanHppGenerator.hpp b/VulkanHppGenerator.hpp
index a2d8b3d..afbb165 100644
--- a/VulkanHppGenerator.hpp
+++ b/VulkanHppGenerator.hpp
@@ -455,10 +455,27 @@ private:
std::string generateCallArgumentEnhancedNonConstPointer(
ParamData const & param, size_t paramIndex, bool nonConstPointerAsNullptr, std::set const & singularParams, bool raiiHandleMemberFunction ) const;
std::string generateCallArgumentEnhancedValue( std::vector const & params, size_t paramIndex, std::set const & singularParams ) const;
+ std::string generateCallSequence( std::string const & name,
+ CommandData const & commandData,
+ std::vector const & returnParams,
+ std::map const & vectorParams,
+ size_t initialSkipCount,
+ std::set const & singularParams,
+ std::set const & templatedParams ) const;
std::string generateCommand( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition ) const;
std::string
generateCommandDefinitions( std::vector const & requireData, std::set & listedCommands, std::string const & title ) const;
std::string generateCommandDefinitions( std::string const & command, std::string const & handle ) const;
+ std::string generateCommandEnhanced( std::string const & name,
+ CommandData const & commandData,
+ size_t initialSkipCount,
+ bool definition,
+ std::map const & vectorParamIndices,
+ std::vector const & returnParams,
+ bool singular,
+ bool withAllocator,
+ bool chained,
+ bool unique ) const;
std::string generateCommandName( std::string const & vulkanCommandName,
std::vector const & params,
size_t initialSkipCount,
@@ -594,16 +611,6 @@ private:
std::string const & enhancedUnique,
std::string const & enhancedUniqueWithAllocator ) const;
std::string generateCommandSetStandardOrEnhanced( std::string const & standard, std::string const & enhanced ) const;
- std::string generateCommandSingle( std::string const & name,
- CommandData const & commandData,
- size_t initialSkipCount,
- bool definition,
- std::map const & vectorParamIndices,
- std::vector const & returnParams,
- bool singular,
- bool withAllocator,
- bool chained,
- bool unique ) const;
std::string generateCommandStandard( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition ) const;
std::string generateCommandValue( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition ) const;
std::string generateCommandVoid0Return( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition ) const;
@@ -611,13 +618,6 @@ private:
generateCommandVoid1Return( std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition, size_t returnParam ) const;
std::string generateCommandVoid2Return(
std::string const & name, CommandData const & commandData, size_t initialSkipCount, bool definition, std::vector const & returnParamIndices ) const;
- std::string generateCommandVoidEnumerate( std::string const & name,
- CommandData const & commandData,
- size_t initialSkipCount,
- bool definition,
- std::pair const & vectorParamIndex,
- std::vector const & returnParamIndices,
- bool withAllocators ) const;
std::string generateCommandVoidEnumerateChained( std::string const & name,
CommandData const & commandData,
size_t initialSkipCount,
@@ -961,7 +961,11 @@ private:
bool unique,
bool chained,
std::string const & dataType ) const;
- std::string generateReturnVariable( CommandData const & commandData, std::vector const & returnParams, bool chained, bool singular ) const;
+ std::string generateReturnVariable( CommandData const & commandData,
+ std::vector const & returnParams,
+ std::map const & vectorParams,
+ bool chained,
+ bool singular ) const;
std::string
generateSizeCheck( std::vector::const_iterator> const & arrayIts, std::string const & structName, bool mutualExclusiveLens ) const;
std::string generateStruct( std::pair const & structure, std::set & listedStructs ) const;
diff --git a/vulkan/vulkan_funcs.hpp b/vulkan/vulkan_funcs.hpp
index 677b02c..3782d4f 100644
--- a/vulkan/vulkan_funcs.hpp
+++ b/vulkan/vulkan_funcs.hpp
@@ -275,17 +275,19 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getQueueFamilyProperties( Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector queueFamilyProperties;
- uint32_t queueFamilyPropertyCount;
+
+ std::vector queueFamilyProperties;
+ uint32_t queueFamilyPropertyCount;
d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
queueFamilyProperties.resize( queueFamilyPropertyCount );
d.vkGetPhysicalDeviceQueueFamilyProperties(
m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) );
VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
+
return queueFamilyProperties;
}
@@ -293,17 +295,19 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getQueueFamilyProperties( QueueFamilyPropertiesAllocator & queueFamilyPropertiesAllocator, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector queueFamilyProperties( queueFamilyPropertiesAllocator );
- uint32_t queueFamilyPropertyCount;
+
+ std::vector queueFamilyProperties( queueFamilyPropertiesAllocator );
+ uint32_t queueFamilyPropertyCount;
d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
queueFamilyProperties.resize( queueFamilyPropertyCount );
d.vkGetPhysicalDeviceQueueFamilyProperties(
m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) );
VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
+
return queueFamilyProperties;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -1142,12 +1146,13 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements;
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements;
+ uint32_t sparseMemoryRequirementCount;
d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
d.vkGetImageSparseMemoryRequirements( m_device,
@@ -1155,6 +1160,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
@@ -1162,14 +1168,16 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image,
SparseImageMemoryRequirementsAllocator & sparseImageMemoryRequirementsAllocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements( sparseImageMemoryRequirementsAllocator );
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements(
+ sparseImageMemoryRequirementsAllocator );
+ uint32_t sparseMemoryRequirementCount;
d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
d.vkGetImageSparseMemoryRequirements( m_device,
@@ -1177,6 +1185,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -1204,7 +1213,7 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format,
VULKAN_HPP_NAMESPACE::ImageType type,
VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
@@ -1213,8 +1222,9 @@ namespace VULKAN_HPP_NAMESPACE
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector properties;
- uint32_t propertyCount;
+
+ std::vector properties;
+ uint32_t propertyCount;
d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice,
static_cast( format ),
static_cast( type ),
@@ -1233,6 +1243,7 @@ namespace VULKAN_HPP_NAMESPACE
&propertyCount,
reinterpret_cast( properties.data() ) );
VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
+
return properties;
}
@@ -1240,7 +1251,7 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format,
VULKAN_HPP_NAMESPACE::ImageType type,
VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
@@ -1250,8 +1261,9 @@ namespace VULKAN_HPP_NAMESPACE
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector properties( sparseImageFormatPropertiesAllocator );
- uint32_t propertyCount;
+
+ std::vector properties( sparseImageFormatPropertiesAllocator );
+ uint32_t propertyCount;
d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice,
static_cast( format ),
static_cast( type ),
@@ -1270,6 +1282,7 @@ namespace VULKAN_HPP_NAMESPACE
&propertyCount,
reinterpret_cast( properties.data() ) );
VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
+
return properties;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -5356,12 +5369,13 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements;
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements;
+ uint32_t sparseMemoryRequirementCount;
d.vkGetImageSparseMemoryRequirements2(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -5370,6 +5384,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
@@ -5377,14 +5392,16 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info,
SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator );
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements(
+ sparseImageMemoryRequirements2Allocator );
+ uint32_t sparseMemoryRequirementCount;
d.vkGetImageSparseMemoryRequirements2(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -5393,6 +5410,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -5555,17 +5573,19 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getQueueFamilyProperties2( Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector queueFamilyProperties;
- uint32_t queueFamilyPropertyCount;
+
+ std::vector queueFamilyProperties;
+ uint32_t queueFamilyPropertyCount;
d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
queueFamilyProperties.resize( queueFamilyPropertyCount );
d.vkGetPhysicalDeviceQueueFamilyProperties2(
m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) );
VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
+
return queueFamilyProperties;
}
@@ -5573,17 +5593,19 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getQueueFamilyProperties2( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector queueFamilyProperties( queueFamilyProperties2Allocator );
- uint32_t queueFamilyPropertyCount;
+
+ std::vector queueFamilyProperties( queueFamilyProperties2Allocator );
+ uint32_t queueFamilyPropertyCount;
d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
queueFamilyProperties.resize( queueFamilyPropertyCount );
d.vkGetPhysicalDeviceQueueFamilyProperties2(
m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) );
VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
+
return queueFamilyProperties;
}
@@ -5688,12 +5710,13 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector properties;
- uint32_t propertyCount;
+
+ std::vector properties;
+ uint32_t propertyCount;
d.vkGetPhysicalDeviceSparseImageFormatProperties2(
m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr );
properties.resize( propertyCount );
@@ -5702,6 +5725,7 @@ namespace VULKAN_HPP_NAMESPACE
&propertyCount,
reinterpret_cast( properties.data() ) );
VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
+
return properties;
}
@@ -5709,14 +5733,15 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo,
SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector properties( sparseImageFormatProperties2Allocator );
- uint32_t propertyCount;
+
+ std::vector properties( sparseImageFormatProperties2Allocator );
+ uint32_t propertyCount;
d.vkGetPhysicalDeviceSparseImageFormatProperties2(
m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr );
properties.resize( propertyCount );
@@ -5725,6 +5750,7 @@ namespace VULKAN_HPP_NAMESPACE
&propertyCount,
reinterpret_cast( properties.data() ) );
VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
+
return properties;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -7199,12 +7225,13 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements;
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements;
+ uint32_t sparseMemoryRequirementCount;
d.vkGetDeviceImageSparseMemoryRequirements(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -7213,6 +7240,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
@@ -7220,14 +7248,16 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info,
SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator );
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements(
+ sparseImageMemoryRequirements2Allocator );
+ uint32_t sparseMemoryRequirementCount;
d.vkGetDeviceImageSparseMemoryRequirements(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -7236,6 +7266,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -10575,17 +10606,19 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getQueueFamilyProperties2KHR( Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector queueFamilyProperties;
- uint32_t queueFamilyPropertyCount;
+
+ std::vector queueFamilyProperties;
+ uint32_t queueFamilyPropertyCount;
d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
queueFamilyProperties.resize( queueFamilyPropertyCount );
d.vkGetPhysicalDeviceQueueFamilyProperties2KHR(
m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) );
VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
+
return queueFamilyProperties;
}
@@ -10593,17 +10626,19 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getQueueFamilyProperties2KHR( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector queueFamilyProperties( queueFamilyProperties2Allocator );
- uint32_t queueFamilyPropertyCount;
+
+ std::vector queueFamilyProperties( queueFamilyProperties2Allocator );
+ uint32_t queueFamilyPropertyCount;
d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
queueFamilyProperties.resize( queueFamilyPropertyCount );
d.vkGetPhysicalDeviceQueueFamilyProperties2KHR(
m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) );
VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
+
return queueFamilyProperties;
}
@@ -10708,13 +10743,14 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector properties;
- uint32_t propertyCount;
+
+ std::vector properties;
+ uint32_t propertyCount;
d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr );
properties.resize( propertyCount );
@@ -10723,6 +10759,7 @@ namespace VULKAN_HPP_NAMESPACE
&propertyCount,
reinterpret_cast( properties.data() ) );
VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
+
return properties;
}
@@ -10730,14 +10767,15 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
PhysicalDevice::getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo,
SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector properties( sparseImageFormatProperties2Allocator );
- uint32_t propertyCount;
+
+ std::vector properties( sparseImageFormatProperties2Allocator );
+ uint32_t propertyCount;
d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr );
properties.resize( propertyCount );
@@ -10746,6 +10784,7 @@ namespace VULKAN_HPP_NAMESPACE
&propertyCount,
reinterpret_cast( properties.data() ) );
VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
+
return properties;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -13314,12 +13353,13 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements;
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements;
+ uint32_t sparseMemoryRequirementCount;
d.vkGetImageSparseMemoryRequirements2KHR(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -13328,6 +13368,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
@@ -13335,14 +13376,16 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info,
SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator );
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements(
+ sparseImageMemoryRequirements2Allocator );
+ uint32_t sparseMemoryRequirementCount;
d.vkGetImageSparseMemoryRequirements2KHR(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -13351,6 +13394,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -15340,15 +15384,18 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV( Dispatch const & d ) const
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ Queue::getCheckpointDataNV( Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector checkpointData;
- uint32_t checkpointDataCount;
+
+ std::vector checkpointData;
+ uint32_t checkpointDataCount;
d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr );
checkpointData.resize( checkpointDataCount );
d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) );
VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
+
return checkpointData;
}
@@ -15356,16 +15403,18 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Queue::getCheckpointDataNV( CheckpointDataNVAllocator & checkpointDataNVAllocator, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector checkpointData( checkpointDataNVAllocator );
- uint32_t checkpointDataCount;
+
+ std::vector checkpointData( checkpointDataNVAllocator );
+ uint32_t checkpointDataCount;
d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr );
checkpointData.resize( checkpointDataCount );
d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) );
VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
+
return checkpointData;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -17639,15 +17688,18 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointData2NV( Dispatch const & d ) const
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ Queue::getCheckpointData2NV( Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector checkpointData;
- uint32_t checkpointDataCount;
+
+ std::vector checkpointData;
+ uint32_t checkpointDataCount;
d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, nullptr );
checkpointData.resize( checkpointDataCount );
d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) );
VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
+
return checkpointData;
}
@@ -17655,16 +17707,18 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Queue::getCheckpointData2NV( CheckpointData2NVAllocator & checkpointData2NVAllocator, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector checkpointData( checkpointData2NVAllocator );
- uint32_t checkpointDataCount;
+
+ std::vector checkpointData( checkpointData2NVAllocator );
+ uint32_t checkpointDataCount;
d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, nullptr );
checkpointData.resize( checkpointDataCount );
d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) );
VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
+
return checkpointData;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -19077,12 +19131,13 @@ namespace VULKAN_HPP_NAMESPACE
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info, Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements;
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements;
+ uint32_t sparseMemoryRequirementCount;
d.vkGetDeviceImageSparseMemoryRequirementsKHR(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -19091,6 +19146,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
@@ -19098,14 +19154,16 @@ namespace VULKAN_HPP_NAMESPACE
typename Dispatch,
typename B,
typename std::enable_if::value, int>::type>
- VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
+ VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector
Device::getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info,
SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
- std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator );
- uint32_t sparseMemoryRequirementCount;
+
+ std::vector sparseMemoryRequirements(
+ sparseImageMemoryRequirements2Allocator );
+ uint32_t sparseMemoryRequirementCount;
d.vkGetDeviceImageSparseMemoryRequirementsKHR(
m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr );
sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
@@ -19114,6 +19172,7 @@ namespace VULKAN_HPP_NAMESPACE
&sparseMemoryRequirementCount,
reinterpret_cast( sparseMemoryRequirements.data() ) );
VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
+
return sparseMemoryRequirements;
}
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
diff --git a/vulkan/vulkan_handles.hpp b/vulkan/vulkan_handles.hpp
index 6a856c5..60e291c 100644
--- a/vulkan/vulkan_handles.hpp
+++ b/vulkan/vulkan_handles.hpp
@@ -6757,14 +6757,15 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_NAMESPACE::CheckpointDataNV * pCheckpointData,
Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
- template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
- VULKAN_HPP_NODISCARD std::vector
+ template ,
+ typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
+ VULKAN_HPP_NODISCARD std::vector
getCheckpointDataNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
- template ,
- typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE,
- typename B = CheckpointDataNVAllocator,
+ template ,
+ typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE,
+ typename B = CheckpointDataNVAllocator,
typename std::enable_if::value, int>::type = 0>
- VULKAN_HPP_NODISCARD std::vector
+ VULKAN_HPP_NODISCARD std::vector
getCheckpointDataNV( CheckpointDataNVAllocator & checkpointDataNVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -6801,14 +6802,15 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_NAMESPACE::CheckpointData2NV * pCheckpointData,
Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
- template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
- VULKAN_HPP_NODISCARD std::vector
+ template ,
+ typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
+ VULKAN_HPP_NODISCARD std::vector
getCheckpointData2NV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
- template ,
- typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE,
- typename B = CheckpointData2NVAllocator,
+ template ,
+ typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE,
+ typename B = CheckpointData2NVAllocator,
typename std::enable_if::value, int>::type = 0>
- VULKAN_HPP_NODISCARD std::vector
+ VULKAN_HPP_NODISCARD std::vector
getCheckpointData2NV( CheckpointData2NVAllocator & checkpointData2NVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
@@ -7343,15 +7345,15 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements * pSparseMemoryRequirements,
Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
- template ,
+ template ,
typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
- VULKAN_HPP_NODISCARD std::vector
+ VULKAN_HPP_NODISCARD std::vector
getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
- template ,
+ template