layers: Codegen unique-objects extension whitelists
These lists are now generated from vk.xml.
Change-Id: Id7571d8b18b272c7d7ead905d53e5ff778afcb6e
diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py
index bba7cfd..fdf4c38 100644
--- a/scripts/unique_objects_generator.py
+++ b/scripts/unique_objects_generator.py
@@ -121,8 +121,9 @@
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 @@
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 @@
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.