chassis: Version check promoted APIs in GPA
When GetXxxProcAddr is called on a promoted API, NULL will be returned
for invalid API levels.
Change-Id: I6db404694910e0f7343a9fa9393422f8c438df0d
diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py
index ef3810d..ab48b22 100644
--- a/scripts/helper_file_generator.py
+++ b/scripts/helper_file_generator.py
@@ -488,6 +488,10 @@
# Generate extension helper header file
def GenerateExtensionHelperHeader(self):
+ V_1_1_level_feature_set = [
+ 'VK_VERSION_1_1',
+ ]
+
V_1_0_instance_extensions_promoted_to_core = [
'vk_khr_device_group_creation',
'vk_khr_external_fence_capabilities',
@@ -552,6 +556,7 @@
extension_items = sorted(extension_dict.items())
field_name = { ext_name: re.sub('_extension_name', '', info['define'].lower()) for ext_name, info in extension_items }
+
if type == 'Instance':
instance_field_name = field_name
instance_extension_dict = extension_dict
@@ -563,6 +568,7 @@
# Output the data member list
struct = [struct_decl]
+ struct.extend([ ' bool vk_feature_version_1_1{false};'])
struct.extend([ ' bool %s{false};' % field_name[ext_name] for ext_name, info in extension_items])
# Construct the extension information map -- mapping name to data member (field), and required extensions
@@ -587,6 +593,8 @@
' typedef std::unordered_map<std::string,%s> %s;' % (info_type, info_map_type),
' static const %s &get_info(const char *name) {' %info_type,
' static const %s info_map = {' % info_map_type ])
+ struct.extend([
+ ' std::make_pair("VK_VERSION_1_1", %sInfo(&%sExtensions::vk_feature_version_1_1, {})),' % (type, type)])
field_format = '&' + struct_type + '::%s'
req_format = '{' + field_format+ ', %s}'
@@ -633,6 +641,7 @@
'',
' static const std::vector<const char *> V_1_0_promoted_%s_extensions = {' % type.lower() ])
struct.extend([' %s_EXTENSION_NAME,' % ext_name.upper() for ext_name in promoted_ext_list])
+ struct.extend([' "VK_VERSION_1_1",'])
struct.extend([
' };',
'',