scripts: Add PDevFeature index print helper
authorMark Lobodzinski <mark@lunarg.com>
Mon, 24 Jul 2017 22:14:16 +0000 (16:14 -0600)
committerMark Lobodzinski <mark@lunarg.com>
Tue, 25 Jul 2017 16:04:50 +0000 (10:04 -0600)
In the Enum string helper header, tack on a routine to convert an
index into a VkPhysicalDeviceFeatures structure into its
corresponding feature string.

Change-Id: I8fbfb6fcbfa63361a851ffc93ffd832696050d51

scripts/helper_file_generator.py

index 7d00e6d639256f89a3db0a0a1b0d1e090a143bb2..f486a8d777024784600db623789f6a59665d40a7 100644 (file)
@@ -364,6 +364,23 @@ class HelperFileOutputGenerator(OutputGenerator):
         outstring += '}\n'
         return outstring
     #
+    # Tack on a helper which, given an index into a VkPhysicalDeviceFeatures structure, will print the corresponding feature name
+    def DeIndexPhysDevFeatures(self):
+        pdev_members = None
+        for name, members, ifdef in self.structMembers:
+            if name == 'VkPhysicalDeviceFeatures':
+                pdev_members = members
+                break
+        deindex = '\n'
+        deindex += 'static const char * GetPhysDevFeatureString(uint32_t index) {\n'
+        deindex += '    const char * IndexToPhysDevFeatureString[] = {\n'
+        for feature in pdev_members:
+            deindex += '        "%s",\n' % feature.name
+        deindex += '    };\n\n'
+        deindex += '    return IndexToPhysDevFeatureString[index];\n'
+        deindex += '}\n'
+        return deindex
+    #
     # Combine enum string helper header file preamble with body text and return
     def GenerateEnumStringHelperHeader(self):
             enum_string_helper_header = '\n'
@@ -375,6 +392,7 @@ class HelperFileOutputGenerator(OutputGenerator):
             enum_string_helper_header += '#include <vulkan/vulkan.h>\n'
             enum_string_helper_header += '\n'
             enum_string_helper_header += self.enum_output
+            enum_string_helper_header += self.DeIndexPhysDevFeatures()
             return enum_string_helper_header
     #
     # struct_size_header: build function prototypes for header file