From adcfd4ef42bb17ab0482686348b0f96ca8ce941c Mon Sep 17 00:00:00 2001
From: Mark Lobodzinski <mark@lunarg.com>
Date: Mon, 27 Mar 2017 15:47:01 -0600
Subject: [PATCH] loader: Fix loader_extensions codegen for name defs

Codegen attempted to infer name definitions instead of pulling from
the source XML, causing errors in new header updates.

Change-Id: I04e03b45dacf7c943b91e47f6ecffc82354c6f1b
---
 scripts/loader_extension_generator.py | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/scripts/loader_extension_generator.py b/scripts/loader_extension_generator.py
index f44a2dceb..8a8586f28 100644
--- a/scripts/loader_extension_generator.py
+++ b/scripts/loader_extension_generator.py
@@ -103,7 +103,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator):
         self.CommandParam = namedtuple('CommandParam', ['type', 'name', 'cdecl'])
         self.CommandData = namedtuple('CommandData', ['name', 'ext_name', 'ext_type', 'protect', 'return_type', 'handle_type', 'params', 'cdecl'])
         self.instanceExtensions = []
-        self.ExtensionData = namedtuple('ExtensionData', ['name', 'type', 'protect', 'num_commands'])
+        self.ExtensionData = namedtuple('ExtensionData', ['name', 'type', 'protect', 'define', 'num_commands'])
 
     #
     # Called once at the beginning of each run
@@ -204,10 +204,17 @@ class LoaderExtensionOutputGenerator(OutputGenerator):
         # Start processing in superclass
         OutputGenerator.beginFeature(self, interface, emit)
 
+        enums = interface[0].findall('enum')
         self.currentExtension = ''
+        self.name_definition = ''
+
+        for item in enums:
+            name_definition = item.get('name')
+            if 'EXTENSION_NAME' in name_definition:
+                self.name_definition = name_definition
+
         self.type = interface.get('type')
         self.num_commands = 0
-
         name = interface.get('name')
         self.currentExtension = name 
 
@@ -231,6 +238,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator):
             self.instanceExtensions.append(self.ExtensionData(name=self.currentExtension,
                                                               type=self.type,
                                                               protect=self.featureExtraProtect,
+                                                              define=self.name_definition,
                                                               num_commands=self.num_commands))
 
         # Finish processing in superclass
@@ -1150,12 +1158,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator):
             else:
                 create_func += '        } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], '
 
-            if 'VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES2' == ext.name.upper():
-                create_func += 'VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {\n'
-            else:
-                create_func += ext.name.upper()
-                create_func += '_EXTENSION_NAME)) {\n'
-
+            create_func += ext.define + ')) {\n'
             create_func += '            ptr_instance->enabled_known_extensions.'
             create_func += ext.name[3:].lower()
             create_func += ' = 1;\n'
@@ -1283,12 +1286,7 @@ class LoaderExtensionOutputGenerator(OutputGenerator):
             if ext.protect is not None:
                 table += '#ifdef %s\n' % ext.protect
             table += '                                                  '
-
-            if 'VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES2' == ext.name.upper():
-                table += 'VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,\n'
-            else:
-                table += ext.name.upper()
-                table += '_EXTENSION_NAME,\n'
+            table += ext.define + ',\n'
 
             if ext.protect is not None:
                 table += '#endif // %s\n' % ext.protect
-- 
GitLab