aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Giessen <charles@lunarg.com>2019-11-18 15:11:37 -0700
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2019-11-19 09:09:34 -0700
commit73d9cfa91968bf8a6d792718e3aad76ea9ac1cb8 (patch)
tree01577248a3f8f396fbf710a0d7ac5328a40944ea
parent99b986c82b14fc75c261feae2fac4fb7bd8ee364 (diff)
downloadusermoji-73d9cfa91968bf8a6d792718e3aad76ea9ac1cb8.tar.xz
vulkaninfo: check that extensions aren't disabled
Previous versions of vulkainfo's autogen code didn't check if enums and bitmasks from extensions were disabled, possibly letting them leak into the generated code. This commit checks and skips any fields which aren't supported. File changed: scripts/vulkaninfo_generator.py Change-Id: I0e6fd9872d9377a17797cfcf6c2fbcee649e3657
-rw-r--r--scripts/vulkaninfo_generator.py33
1 files changed, 11 insertions, 22 deletions
diff --git a/scripts/vulkaninfo_generator.py b/scripts/vulkaninfo_generator.py
index 3846e345..eda3ec62 100644
--- a/scripts/vulkaninfo_generator.py
+++ b/scripts/vulkaninfo_generator.py
@@ -187,7 +187,6 @@ class VulkanInfoGenerator(OutputGenerator):
self.extFuncs = OrderedDict()
self.extTypes = OrderedDict()
- self.extensions = set()
def beginFile(self, genOpts):
gen.OutputGenerator.beginFile(self, genOpts)
@@ -201,7 +200,6 @@ class VulkanInfoGenerator(OutputGenerator):
for node in root.find('extensions').findall('extension'):
ext = VulkanExtension(node)
- self.extensions.add(ext)
for item in ext.vktypes:
self.extTypes[item] = ext
for item in ext.vkfuncs:
@@ -312,9 +310,9 @@ class VulkanInfoGenerator(OutputGenerator):
return
if groupinfo.elem.get('type') == 'bitmask':
- self.bitmasks.add(VulkanBitmask(groupinfo.elem, self.extensions))
+ self.bitmasks.add(VulkanBitmask(groupinfo.elem))
elif groupinfo.elem.get('type') == 'enum':
- self.enums.add(VulkanEnum(groupinfo.elem, self.extensions))
+ self.enums.add(VulkanEnum(groupinfo.elem))
def genType(self, typeinfo, name, alias):
gen.OutputGenerator.genType(self, typeinfo, name, alias)
@@ -697,11 +695,11 @@ class VulkanEnum:
'optMultiValue': self.multiValue,
}
- def __init__(self, rootNode, extensions):
+ def __init__(self, rootNode):
self.name = rootNode.get('name')
self.type = rootNode.get('type')
self.options = []
- self.ext = None
+
for child in rootNode:
childName = child.get('name')
childValue = child.get('value')
@@ -710,6 +708,9 @@ class VulkanEnum:
childExtends = child.get('extends')
childOffset = child.get('offset')
childExtNum = child.get('extnumber')
+ support = child.get('supported')
+ if(support == "disabled"):
+ continue
if childName is None:
continue
@@ -735,20 +736,12 @@ class VulkanEnum:
self.options.append(VulkanEnum.Option(
childName, childValue, childBitpos, childComment))
- for ext in extensions:
- if self.name in ext.enumValues:
- self.ext = ext
- childName, childValue = ext.enumValues[self.name]
- self.options.append(VulkanEnum.Option(
- childName, childValue, None, None))
-
class VulkanBitmask:
- def __init__(self, rootNode, extensions):
+ def __init__(self, rootNode):
self.name = rootNode.get('name')
self.type = rootNode.get('type')
- self.ext = None
# Read each value that the enum contains
self.options = []
@@ -757,19 +750,15 @@ class VulkanBitmask:
childValue = child.get('value')
childBitpos = child.get('bitpos')
childComment = child.get('comment')
+ support = child.get('supported')
if childName is None or (childValue is None and childBitpos is None):
continue
+ if(support == "disabled"):
+ continue
self.options.append(VulkanEnum.Option(
childName, childValue, childBitpos, childComment))
- for ext in extensions:
- if self.name in ext.enumValues:
- self.ext = ext
- childName, childValue = ext.enumValues[self.name]
- self.options.append(VulkanEnum.Option(
- childName, childValue, None, None))
-
class VulkanFlags: