mirror of
https://github.com/KhronosGroup/Vulkan-Hpp.git
synced 2024-10-14 16:32:17 +00:00
Extent extension dependency inspection to allow multiple sets of dependencies per version. (#1578)
This commit is contained in:
parent
40e76b7c24
commit
523491a7df
@ -575,10 +575,10 @@ Some functions might provide information that depends on the vulkan version. As
|
||||
Gets all instance extensions specified for the current platform. Note, that not all of them might be supported by the actual instances.
|
||||
- `std::map<std::string, std::string> const & getDeprecatedExtensions();`
|
||||
Gets a map of all deprecated extensions to the extension or vulkan version that is supposed to replace that functionality.
|
||||
- `std::map<std::string, std::vector<std::string>> const & getExtensionDepends( std::string const & extension );`
|
||||
Some extensions depends on other extensions. That dependencies might differ for different vulkan versions. This function gets a vector of extensions per vulkan version that the given extension depends on.
|
||||
- `std::pair<bool, std::vector<std::string> const &> getExtensionDepends( std::string const & version, std::string const & extension );`
|
||||
The `first` member of the returned `std::pair` is true, if the given extension is specified for the given vulkan version, otherwise `false`. The `second` member of the returned `std::pair` is a vector of extensions, the given extension depends on for the given vulkan version.
|
||||
- `std::map<std::string, std::vector<std::vector<std::string>>> const & getExtensionDepends( std::string const & extension );`
|
||||
Some extensions depends on other extensions. That dependencies might differ for different vulkan versions, and there might be different sets of dependencies for the very same vulkan version. This function gets a vector of vectors of extensions per vulkan version that the given extension depends on.
|
||||
- `std::pair<bool, std::vector<std::vector<std::string>> const &> getExtensionDepends( std::string const & version, std::string const & extension );`
|
||||
The `first` member of the returned `std::pair` is true, if the given extension is specified for the given vulkan version, otherwise `false`. The `second` member of the returned `std::pair` is a vector of vectors of extensions, listing the separate sets of extensions the given extension depends on for the given vulkan version.
|
||||
- `std::map<std::string, std::string> const & getObsoletedExtensions();`
|
||||
Gets a map of all obsoleted extensions to the extension or vulkan version that has obsoleted that extension.
|
||||
- `std::map<std::string, std::string> const & getPromotedExtensions();`
|
||||
|
@ -137,10 +137,10 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
//=== Extension inspection functions ===
|
||||
//======================================
|
||||
|
||||
std::set<std::string> const & getDeviceExtensions();
|
||||
std::set<std::string> const & getInstanceExtensions();
|
||||
std::map<std::string, std::string> const & getDeprecatedExtensions();
|
||||
std::map<std::string, std::vector<std::string>> const & getExtensionDepends( std::string const & extension );
|
||||
std::set<std::string> const & getDeviceExtensions();
|
||||
std::set<std::string> const & getInstanceExtensions();
|
||||
std::map<std::string, std::string> const & getDeprecatedExtensions();
|
||||
std::map<std::string, std::vector<std::vector<std::string>>> const & getExtensionDepends( std::string const & extension );
|
||||
${getExtensionDependsByVersionDeclaration}
|
||||
std::map<std::string, std::string> const & getObsoletedExtensions();
|
||||
std::map<std::string, std::string> const & getPromotedExtensions();
|
||||
@ -175,10 +175,10 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
return instanceExtensions;
|
||||
}
|
||||
|
||||
VULKAN_HPP_INLINE std::map<std::string, std::vector<std::string>> const & getExtensionDepends( std::string const & extension )
|
||||
VULKAN_HPP_INLINE std::map<std::string, std::vector<std::vector<std::string>>> const & getExtensionDepends( std::string const & extension )
|
||||
{
|
||||
static std::map<std::string, std::vector<std::string>> noDependencies;
|
||||
static std::map<std::string, std::map<std::string, std::vector<std::string>>> dependencies = { ${extensionDependencies} };
|
||||
static std::map<std::string, std::vector<std::vector<std::string>>> noDependencies;
|
||||
static std::map<std::string, std::map<std::string, std::vector<std::vector<std::string>>>> dependencies = { ${extensionDependencies} };
|
||||
auto depIt = dependencies.find( extension );
|
||||
return ( depIt != dependencies.end() ) ? depIt->second : noDependencies;
|
||||
}
|
||||
@ -1189,14 +1189,17 @@ void VulkanHppGenerator::checkExtensionCorrectness() const
|
||||
for ( auto const & extension : m_extensions )
|
||||
{
|
||||
// check for existence of any depends, deprecation, obsoletion, or promotion
|
||||
for ( auto const & dependsPerVersion : extension.depends )
|
||||
for ( auto const & dependsByVersion : extension.depends )
|
||||
{
|
||||
checkForError( isFeature( dependsPerVersion.first ),
|
||||
checkForError( isFeature( dependsByVersion.first ),
|
||||
extension.xmlLine,
|
||||
"extension <" + extension.name + "> lists an unknown feature <" + dependsPerVersion.first + ">" );
|
||||
for ( auto const & depends : dependsPerVersion.second )
|
||||
"extension <" + extension.name + "> lists an unknown feature <" + dependsByVersion.first + ">" );
|
||||
for ( auto const & dependsSet : dependsByVersion.second )
|
||||
{
|
||||
checkForError( isExtension( depends ), extension.xmlLine, "extension <" + extension.name + "> lists an unknown depends <" + depends + ">" );
|
||||
for ( auto const & depends : dependsSet )
|
||||
{
|
||||
checkForError( isExtension( depends ), extension.xmlLine, "extension <" + extension.name + "> lists an unknown depends <" + depends + ">" );
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( !extension.deprecatedBy.empty() )
|
||||
@ -5723,15 +5726,20 @@ std::string VulkanHppGenerator::generateExtensionDependencies() const
|
||||
if ( !extension.depends.empty() )
|
||||
{
|
||||
std::string dependsPerExtension = "{ \"" + extension.name + "\", { ";
|
||||
for ( auto const & dependsPerVersion : extension.depends )
|
||||
for ( auto const & dependsByVersion : extension.depends )
|
||||
{
|
||||
dependsPerExtension += "{ \"" + dependsPerVersion.first + "\", { ";
|
||||
if ( !dependsPerVersion.second.empty() )
|
||||
dependsPerExtension += "{ \"" + dependsByVersion.first + "\", { ";
|
||||
if ( !dependsByVersion.second.empty() )
|
||||
{
|
||||
for ( auto const & depends : dependsPerVersion.second )
|
||||
dependsPerExtension += " { ";
|
||||
for ( auto const & dependsSet : dependsByVersion.second )
|
||||
{
|
||||
dependsPerExtension += "\"" + depends + "\", ";
|
||||
for ( auto const & depends : dependsSet )
|
||||
{
|
||||
dependsPerExtension += "\"" + depends + "\", ";
|
||||
}
|
||||
}
|
||||
dependsPerExtension += " }, ";
|
||||
assert( dependsPerExtension.ends_with( ", " ) );
|
||||
dependsPerExtension = dependsPerExtension.substr( 0, dependsPerExtension.length() - 2 );
|
||||
}
|
||||
@ -5767,15 +5775,15 @@ std::string VulkanHppGenerator::generateExtensionDependsByVersion( bool definiti
|
||||
if ( definition )
|
||||
{
|
||||
const std::string generateExtensionDependsTemplate =
|
||||
R"( VULKAN_HPP_INLINE std::pair<bool, std::vector<std::string> const &> getExtensionDepends( std::string const & version, std::string const & extension )
|
||||
R"( VULKAN_HPP_INLINE std::pair<bool, std::vector<std::vector<std::string>> const &> getExtensionDepends( std::string const & version, std::string const & extension )
|
||||
{
|
||||
#if !defined( NDEBUG )
|
||||
static std::set<std::string> versions = { ${versions} };
|
||||
assert( versions.find( version ) != versions.end() );
|
||||
#endif
|
||||
static std::vector<std::string> noDependencies;
|
||||
static std::vector<std::vector<std::string>> noDependencies;
|
||||
|
||||
std::map<std::string, std::vector<std::string>> const & dependencies = getExtensionDepends( extension );
|
||||
std::map<std::string, std::vector<std::vector<std::string>>> const & dependencies = getExtensionDepends( extension );
|
||||
if ( dependencies.empty() )
|
||||
{
|
||||
return { true, noDependencies };
|
||||
@ -5808,7 +5816,7 @@ std::string VulkanHppGenerator::generateExtensionDependsByVersion( bool definiti
|
||||
}
|
||||
else
|
||||
{
|
||||
return "std::pair<bool, std::vector<std::string> const &> getExtensionDepends( std::string const & version, std::string const & extension );";
|
||||
return "std::pair<bool, std::vector<std::vector<std::string>> const &> getExtensionDepends( std::string const & version, std::string const & extension );";
|
||||
}
|
||||
}
|
||||
|
||||
@ -11965,28 +11973,32 @@ void VulkanHppGenerator::readExtension( tinyxml2::XMLElement const * element )
|
||||
{ "(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+(VK_KHR_dynamic_rendering,VK_VERSION_1_3)",
|
||||
"VK_KHR_get_physical_device_properties2+VK_KHR_dynamic_rendering,VK_VERSION_1_1+VK_KHR_dynamic_rendering,VK_VERSION_1_3" }
|
||||
};
|
||||
auto canonicalIt = complexToCanonicalDepends.find( attribute.second );
|
||||
std::string depends = ( canonicalIt == complexToCanonicalDepends.end() ) ? attribute.second : canonicalIt->second;
|
||||
checkForError( depends.find( '(' ) == std::string::npos, line, "encountered not-yet-handled complex attribute depends=\"" + depends + "\"" );
|
||||
|
||||
// for ease of handling, prepend the (optional) VK_VERSION_1_0
|
||||
if ( !depends.starts_with( "VK_VERSION" ) )
|
||||
auto canonicalIt = complexToCanonicalDepends.find( attribute.second );
|
||||
std::string depends;
|
||||
if ( canonicalIt == complexToCanonicalDepends.end() )
|
||||
{
|
||||
depends = "VK_VERSION_1_0+" + depends;
|
||||
depends = attribute.second;
|
||||
std::erase_if( depends, []( char c ) { return ( c == '(' ) || ( c == ')' ); } );
|
||||
}
|
||||
else
|
||||
{
|
||||
depends = canonicalIt->second;
|
||||
}
|
||||
|
||||
// first tokenize by ',', giving a vector of dependencies for different vulkan versions
|
||||
std::vector<std::string> allDependencies = tokenize( depends, "," );
|
||||
for ( auto dep : allDependencies )
|
||||
{
|
||||
// for ease of handling, prepend the (optional) VK_VERSION_1_0
|
||||
if ( !dep.starts_with( "VK_VERSION" ) )
|
||||
{
|
||||
assert( dep.find( "VK_VERSION" ) == std::string::npos );
|
||||
dep = "VK_VERSION_1_0+" + dep;
|
||||
}
|
||||
|
||||
// then tokenize by '+', giving a vector of dependendies for the vulkan version listed as the first element here
|
||||
std::vector<std::string> dependsPerVersion = tokenize( dep, "+" );
|
||||
assert( dependsPerVersion[0].starts_with( "VK_VERSION_" ) );
|
||||
assert( std::find_if( std::next( dependsPerVersion.begin() ),
|
||||
dependsPerVersion.end(),
|
||||
[]( std::string const & d ) { return d.starts_with( "VK_VERSION_" ); } ) == dependsPerVersion.end() );
|
||||
assert( extensionData.depends.find( dependsPerVersion[0] ) == extensionData.depends.end() );
|
||||
extensionData.depends[dependsPerVersion[0]] = { std::next( dependsPerVersion.begin() ), dependsPerVersion.end() };
|
||||
std::vector<std::string> dependsByVersion = tokenize( dep, "+" );
|
||||
extensionData.depends[dependsByVersion[0]].push_back( { std::next( dependsByVersion.begin() ), dependsByVersion.end() } );
|
||||
}
|
||||
}
|
||||
else if ( attribute.first == "deprecatedby" )
|
||||
|
@ -244,17 +244,17 @@ private:
|
||||
|
||||
struct ExtensionData
|
||||
{
|
||||
std::string deprecatedBy = {};
|
||||
bool isDeprecated = false;
|
||||
std::string name = {};
|
||||
std::string number = {};
|
||||
std::string obsoletedBy = {};
|
||||
std::string platform = {};
|
||||
std::string promotedTo = {};
|
||||
std::map<std::string, std::vector<std::string>> depends = {};
|
||||
std::vector<RequireData> requireData = {};
|
||||
std::string type = {};
|
||||
int xmlLine = 0;
|
||||
std::string deprecatedBy = {};
|
||||
bool isDeprecated = false;
|
||||
std::string name = {};
|
||||
std::string number = {};
|
||||
std::string obsoletedBy = {};
|
||||
std::string platform = {};
|
||||
std::string promotedTo = {};
|
||||
std::map<std::string, std::vector<std::vector<std::string>>> depends = {};
|
||||
std::vector<RequireData> requireData = {};
|
||||
std::string type = {};
|
||||
int xmlLine = 0;
|
||||
};
|
||||
|
||||
struct ExternalTypeData
|
||||
|
@ -49,18 +49,18 @@ int main( int /*argc*/, char ** /*argv*/ )
|
||||
std::set<std::string> const & deviceExtensions = vk::getDeviceExtensions();
|
||||
assert( deviceExtensions.find( VK_KHR_SWAPCHAIN_EXTENSION_NAME ) != deviceExtensions.end() );
|
||||
|
||||
std::map<std::string, std::vector<std::string>> depends = vk::getExtensionDepends( VK_KHR_SWAPCHAIN_EXTENSION_NAME );
|
||||
std::map<std::string, std::vector<std::vector<std::string>>> depends = vk::getExtensionDepends( VK_KHR_SWAPCHAIN_EXTENSION_NAME );
|
||||
assert( ( depends.size() == 1 ) && ( depends.begin()->first == "VK_VERSION_1_0" ) && ( depends.begin()->second.size() == 1 ) &&
|
||||
( depends.begin()->second[0] == VK_KHR_SURFACE_EXTENSION_NAME ) );
|
||||
( depends.begin()->second[0].size() == 1 ) && ( depends.begin()->second[0][0] == VK_KHR_SURFACE_EXTENSION_NAME ) );
|
||||
|
||||
auto [available0, deps0] = vk::getExtensionDepends( "VK_VERSION_1_0", VK_KHR_SURFACE_EXTENSION_NAME );
|
||||
assert( available0 && deps0.empty() );
|
||||
|
||||
auto [available1, deps1] = vk::getExtensionDepends( "VK_VERSION_1_0", VK_KHR_SWAPCHAIN_EXTENSION_NAME );
|
||||
assert( available1 && ( deps1.size() == 1 ) && ( deps1[0] == VK_KHR_SURFACE_EXTENSION_NAME ) );
|
||||
assert( available1 && ( deps1.size() == 1 ) && ( deps1[0].size() == 1 ) && ( deps1[0][0] == VK_KHR_SURFACE_EXTENSION_NAME ) );
|
||||
|
||||
auto [available2, deps2] = vk::getExtensionDepends( "VK_VERSION_1_1", VK_KHR_SWAPCHAIN_EXTENSION_NAME );
|
||||
assert( available2 && ( deps2.size() == 1 ) && ( deps2[0] == VK_KHR_SURFACE_EXTENSION_NAME ) );
|
||||
assert( available2 && ( deps2.size() == 1 ) && ( deps2[0].size() == 1 ) && ( deps2[0][0] == VK_KHR_SURFACE_EXTENSION_NAME ) );
|
||||
|
||||
auto [available3, deps3] = vk::getExtensionDepends( "VK_VERSION_1_1", VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME );
|
||||
assert( !available3 );
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -18,10 +18,10 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
//=== Extension inspection functions ===
|
||||
//======================================
|
||||
|
||||
std::set<std::string> const & getDeviceExtensions();
|
||||
std::set<std::string> const & getInstanceExtensions();
|
||||
std::map<std::string, std::string> const & getDeprecatedExtensions();
|
||||
std::map<std::string, std::vector<std::string>> const & getExtensionDepends( std::string const & extension );
|
||||
std::set<std::string> const & getDeviceExtensions();
|
||||
std::set<std::string> const & getInstanceExtensions();
|
||||
std::map<std::string, std::string> const & getDeprecatedExtensions();
|
||||
std::map<std::string, std::vector<std::vector<std::string>>> const & getExtensionDepends( std::string const & extension );
|
||||
|
||||
std::map<std::string, std::string> const & getObsoletedExtensions();
|
||||
std::map<std::string, std::string> const & getPromotedExtensions();
|
||||
@ -134,84 +134,364 @@ namespace VULKAN_HPP_NAMESPACE
|
||||
return instanceExtensions;
|
||||
}
|
||||
|
||||
VULKAN_HPP_INLINE std::map<std::string, std::vector<std::string>> const & getExtensionDepends( std::string const & extension )
|
||||
VULKAN_HPP_INLINE std::map<std::string, std::vector<std::vector<std::string>>> const & getExtensionDepends( std::string const & extension )
|
||||
{
|
||||
static std::map<std::string, std::vector<std::string>> noDependencies;
|
||||
static std::map<std::string, std::map<std::string, std::vector<std::string>>> dependencies = {
|
||||
{ "VK_KHR_swapchain", { { "VK_VERSION_1_0", { "VK_KHR_surface" } } } },
|
||||
{ "VK_KHR_display", { { "VK_VERSION_1_0", { "VK_KHR_surface" } } } },
|
||||
{ "VK_KHR_display_swapchain", { { "VK_VERSION_1_0", { "VK_KHR_swapchain", "VK_KHR_display" } } } },
|
||||
{ "VK_EXT_texture_compression_astc_hdr", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_astc_decode_mode", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_external_memory_fd", { { "VK_VERSION_1_0", { "VK_KHR_external_memory" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_external_semaphore_fd", { { "VK_VERSION_1_0", { "VK_KHR_external_semaphore" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_incremental_present", { { "VK_VERSION_1_0", { "VK_KHR_swapchain" } } } },
|
||||
{ "VK_EXT_direct_mode_display", { { "VK_VERSION_1_0", { "VK_KHR_display" } } } },
|
||||
{ "VK_EXT_display_surface_counter", { { "VK_VERSION_1_0", { "VK_KHR_display" } } } },
|
||||
{ "VK_EXT_display_control", { { "VK_VERSION_1_0", { "VK_EXT_display_surface_counter", "VK_KHR_swapchain" } } } },
|
||||
{ "VK_EXT_discard_rectangles", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_conservative_rasterization", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_depth_clip_enable", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_swapchain_colorspace", { { "VK_VERSION_1_0", { "VK_KHR_surface" } } } },
|
||||
{ "VK_EXT_hdr_metadata", { { "VK_VERSION_1_0", { "VK_KHR_swapchain" } } } },
|
||||
static std::map<std::string, std::vector<std::vector<std::string>>> noDependencies;
|
||||
static std::map<std::string, std::map<std::string, std::vector<std::vector<std::string>>>> dependencies = {
|
||||
{ "VK_KHR_swapchain",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
} } } } },
|
||||
{ "VK_KHR_display",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
} } } } },
|
||||
{ "VK_KHR_display_swapchain",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_display",
|
||||
} } } } },
|
||||
{ "VK_EXT_texture_compression_astc_hdr",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_astc_decode_mode",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_external_memory_fd",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_memory",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_external_semaphore_fd",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_semaphore",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_incremental_present",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_EXT_direct_mode_display",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_display",
|
||||
} } } } },
|
||||
{ "VK_EXT_display_surface_counter",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_display",
|
||||
} } } } },
|
||||
{ "VK_EXT_display_control",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_display_surface_counter",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_EXT_discard_rectangles",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_conservative_rasterization",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_depth_clip_enable",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_swapchain_colorspace",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
} } } } },
|
||||
{ "VK_EXT_hdr_metadata",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_KHR_shared_presentable_image",
|
||||
{ { "VK_VERSION_1_0", { "VK_KHR_swapchain", "VK_KHR_get_surface_capabilities2", "VK_KHR_get_physical_device_properties2" } },
|
||||
{ "VK_VERSION_1_1", { "VK_KHR_swapchain", "VK_KHR_get_surface_capabilities2" } } } },
|
||||
{ "VK_KHR_external_fence_fd", { { "VK_VERSION_1_0", { "VK_KHR_external_fence" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_performance_query", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_get_surface_capabilities2", { { "VK_VERSION_1_0", { "VK_KHR_surface" } } } },
|
||||
{ "VK_KHR_get_display_properties2", { { "VK_VERSION_1_0", { "VK_KHR_display" } } } },
|
||||
{ "VK_EXT_external_memory_dma_buf", { { "VK_VERSION_1_0", { "VK_KHR_external_memory_fd" } } } },
|
||||
{ "VK_EXT_queue_family_foreign", { { "VK_VERSION_1_0", { "VK_KHR_external_memory" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_sample_locations", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_blend_operation_advanced", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
} } } } },
|
||||
{ "VK_KHR_external_fence_fd",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_fence",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_performance_query",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_get_surface_capabilities2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
} } } } },
|
||||
{ "VK_KHR_get_display_properties2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_display",
|
||||
} } } } },
|
||||
{ "VK_EXT_external_memory_dma_buf",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_memory_fd",
|
||||
} } } } },
|
||||
{ "VK_EXT_queue_family_foreign",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_memory",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_sample_locations",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_blend_operation_advanced",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_image_drm_format_modifier",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ "VK_KHR_bind_memory2", "VK_KHR_get_physical_device_properties2", "VK_KHR_sampler_ycbcr_conversion", "VK_KHR_image_format_list" } },
|
||||
{ "VK_VERSION_1_1", { "VK_KHR_image_format_list" } },
|
||||
{ "VK_VERSION_1_2", {} } } },
|
||||
{ "VK_EXT_external_memory_host", { { "VK_VERSION_1_0", { "VK_KHR_external_memory" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_shader_clock", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_calibrated_timestamps", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_vertex_attribute_divisor", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ {
|
||||
"VK_KHR_bind_memory2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
"VK_KHR_image_format_list",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_image_format_list",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2", { {} } } } },
|
||||
{ "VK_EXT_external_memory_host",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_memory",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_shader_clock",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_calibrated_timestamps",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_vertex_attribute_divisor",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_swapchain_mutable_format",
|
||||
{ { "VK_VERSION_1_0", { "VK_KHR_swapchain", "VK_KHR_maintenance2", "VK_KHR_image_format_list" } },
|
||||
{ "VK_VERSION_1_1", { "VK_KHR_swapchain", "VK_KHR_image_format_list" } },
|
||||
{ "VK_VERSION_1_2", { "VK_KHR_swapchain" } } } },
|
||||
{ "VK_EXT_pci_bus_info", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_shader_terminate_invocation", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_subgroup_size_control", { { "VK_VERSION_1_1", {} } } },
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_maintenance2",
|
||||
"VK_KHR_image_format_list",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_image_format_list",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_EXT_pci_bus_info",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_shader_terminate_invocation",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_subgroup_size_control", { { "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_fragment_shading_rate",
|
||||
{ { "VK_VERSION_1_0", { "VK_KHR_create_renderpass2", "VK_KHR_get_physical_device_properties2" } },
|
||||
{ "VK_VERSION_1_1", { "VK_KHR_create_renderpass2" } },
|
||||
{ "VK_VERSION_1_2", {} } } },
|
||||
{ "VK_EXT_shader_image_atomic_int64", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_memory_budget", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_fragment_shader_interlock", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_ycbcr_image_arrays", { { "VK_VERSION_1_0", { "VK_KHR_sampler_ycbcr_conversion" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_headless_surface", { { "VK_VERSION_1_0", { "VK_KHR_surface" } } } },
|
||||
{ "VK_EXT_line_rasterization", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_shader_atomic_float", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_index_type_uint8", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_extended_dynamic_state", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_shader_demote_to_helper_invocation", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_texel_buffer_alignment", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_robustness2", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_custom_border_color", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_synchronization2", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_ycbcr_2plane_444_formats", { { "VK_VERSION_1_0", { "VK_KHR_sampler_ycbcr_conversion" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_image_robustness", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_KHR_copy_commands2", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_4444_formats", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_vertex_input_dynamic_state", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_create_renderpass2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_create_renderpass2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2", { {} } } } },
|
||||
{ "VK_EXT_shader_image_atomic_int64",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_memory_budget",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_fragment_shader_interlock",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_ycbcr_image_arrays",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_headless_surface",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
} } } } },
|
||||
{ "VK_EXT_line_rasterization",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_shader_atomic_float",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_index_type_uint8",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_extended_dynamic_state",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_shader_demote_to_helper_invocation",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_texel_buffer_alignment",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_robustness2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_custom_border_color",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_synchronization2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_ycbcr_2plane_444_formats",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_image_robustness",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_copy_commands2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_4444_formats",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_vertex_input_dynamic_state",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
#if defined( VK_USE_PLATFORM_SCI )
|
||||
{ "VK_NV_external_sci_sync", { { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_NV_external_memory_sci_buf", { { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_NV_external_sci_sync", { { "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_NV_external_memory_sci_buf", { { "VK_VERSION_1_1", { {} } } } },
|
||||
#endif /*VK_USE_PLATFORM_SCI*/
|
||||
{ "VK_EXT_extended_dynamic_state2", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_color_write_enable", { { "VK_VERSION_1_0", { "VK_KHR_get_physical_device_properties2" } }, { "VK_VERSION_1_1", {} } } },
|
||||
{ "VK_EXT_extended_dynamic_state2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_color_write_enable",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
#if defined( VK_USE_PLATFORM_SCI )
|
||||
{ "VK_NV_external_sci_sync2", { { "VK_VERSION_1_1", {} } } }
|
||||
{ "VK_NV_external_sci_sync2", { { "VK_VERSION_1_1", { {} } } } }
|
||||
#endif /*VK_USE_PLATFORM_SCI*/
|
||||
};
|
||||
auto depIt = dependencies.find( extension );
|
||||
|
Loading…
Reference in New Issue
Block a user