diff options
Diffstat (limited to 'scripts/unique_objects_generator.py')
| -rw-r--r-- | scripts/unique_objects_generator.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py index bba7cfd5..fdf4c387 100644 --- a/scripts/unique_objects_generator.py +++ b/scripts/unique_objects_generator.py @@ -121,8 +121,9 @@ class UniqueObjectsOutputGenerator(OutputGenerator): diagFile = sys.stdout): OutputGenerator.__init__(self, errFile, warnFile, diagFile) self.INDENT_SPACES = 4 - # Commands to ignore self.intercepts = [] + self.instance_extensions = [] + self.device_extensions = [] # Commands which are not autogenerated but still intercepted self.no_autogen_list = [ 'vkGetDeviceProcAddr', @@ -197,7 +198,23 @@ class UniqueObjectsOutputGenerator(OutputGenerator): write('namespace unique_objects {', file = self.outFile) # def endFile(self): + # Write out device extension white list self.newline() + write('// Layer Device Extension Whitelist', file=self.outFile) + write('static const char *kUniqueObjectsSupportedDeviceExtensions =', file=self.outFile) + for line in self.device_extensions: + write('%s' % line, file=self.outFile) + write(';\n', file=self.outFile) + + # Write out instance extension white list + self.newline() + write('// Layer Instance Extension Whitelist', file=self.outFile) + write('static const char *kUniqueObjectsSupportedInstanceExtensions =', file=self.outFile) + for line in self.instance_extensions: + write('%s' % line, file=self.outFile) + write(';\n', file=self.outFile) + self.newline() + # Record intercepted procedures write('// intercepts', file=self.outFile) write('struct { const char* name; PFN_vkVoidFunction pFunc;} procmap[] = {', file=self.outFile) @@ -222,6 +239,18 @@ class UniqueObjectsOutputGenerator(OutputGenerator): self.flags = set() self.StructMemberData = namedtuple('StructMemberData', ['name', 'members']) self.CmdMemberData = namedtuple('CmdMemberData', ['name', 'members']) + if self.featureName != 'VK_VERSION_1_0': + white_list_entry = [] + if (self.featureExtraProtect != None): + white_list_entry += [ '#ifdef %s' % self.featureExtraProtect ] + white_list_entry += [ '"%s"' % self.featureName ] + if (self.featureExtraProtect != None): + white_list_entry += [ '#endif' ] + featureType = interface.get('type') + if featureType == 'instance': + self.instance_extensions += white_list_entry + elif featureType == 'device': + self.device_extensions += white_list_entry # def endFeature(self): # Actually write the interface to the output file. |
