Skip to content

Commit 5a38a17

Browse files
prdubey-nvoddhack
authored andcommitted
Add parent and extending fields to EnumField and Flag data class
1 parent 145b19c commit 5a38a17

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

scripts/base_generator.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -961,10 +961,13 @@ def genGroup(self, groupinfo, groupName, alias):
961961
protect = elem.get('protect')
962962
(valueInt, valueStr) = self.enumToValue(elem, True, bitwidth)
963963

964+
parent = elem.get('extends') or groupName
965+
extending = elem.get('extends') is not None
966+
964967
# Some values have multiple extensions (ex VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
965968
# genGroup() lists them twice
966969
if next((x for x in fields if x.name == fieldName), None) is None:
967-
self.enumFieldMap[fieldName] = EnumField(fieldName, [], protect, negative, valueInt, valueStr, [])
970+
self.enumFieldMap[fieldName] = EnumField(fieldName, [], parent, protect, negative, valueInt, valueStr, [], extending)
968971
fields.append(self.enumFieldMap[fieldName])
969972

970973
self.vk.enums[groupName] = Enum(groupName, [], groupProtect, bitwidth, True, fields, [], [])
@@ -1001,11 +1004,13 @@ def genGroup(self, groupinfo, groupName, alias):
10011004

10021005
bitpos_val = elem.get('bitpos')
10031006
bitpos_int = int(bitpos_val) if bitpos_val else None
1007+
parent = elem.get('extends') or groupName
1008+
extending = elem.get('extends') is not None
10041009

10051010
# Some values have multiple extensions (ex VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)
10061011
# genGroup() lists them twice
10071012
if next((x for x in fields if x.name == flagName), None) is None:
1008-
self.flagMap[flagName] = Flag(flagName, [], protect, valueInt, valueStr, bitpos_int, flagMultiBit, flagZero, [])
1013+
self.flagMap[flagName] = Flag(flagName, [], parent, protect, valueInt, valueStr, bitpos_int, flagMultiBit, flagZero, [], extending)
10091014
fields.append(self.flagMap[flagName])
10101015

10111016
flagName = groupName.replace('FlagBits', 'Flags')

scripts/vulkan_object.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ class EnumField:
330330
"""<enum> of type enum"""
331331
name: str # ex) VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
332332
aliases: list[str] # ex) ['VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT']
333+
parent: str # ex) "VkStructureType" - Name of parent enum, Allows for reverse lookup
333334

334335
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
335336

@@ -339,6 +340,10 @@ class EnumField:
339340

340341
# some fields are enabled from 2 extensions (ex) VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
341342
extensions: list[str] # None if part of 1.0 core
343+
# True when this field was added from an extension or version
344+
# ex) VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR extends VkStructureType
345+
# False if this field is part of the original enum
346+
extending: bool
342347

343348
# This dict tells where this enum field is actually defined in an extension or version.
344349
# Note: Only base name, not aliases (aliases in aliasFieldRequirements).
@@ -382,6 +387,7 @@ class Flag:
382387
"""<enum> of type bitmask"""
383388
name: str # ex) VK_ACCESS_2_SHADER_READ_BIT
384389
aliases: str # ex) ['VK_ACCESS_2_SHADER_READ_BIT_KHR']
390+
parent: str # ex) "VkAccessFlagBits2" - Name of parent bitmask, Allows for reverse lookup
385391

386392
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
387393

@@ -393,6 +399,10 @@ class Flag:
393399

394400
# some fields are enabled from 2 extensions (ex) VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)
395401
extensions: list[str] # None if part of 1.0 core
402+
# True when this flag was added from an extension or version
403+
# ex) VK_ACCESS_2_SHADER_READ_BIT_KHR extends VkAccessFlagBits2
404+
# False if this field is part of the original bitmask
405+
extending: bool
396406

397407
# This dict tells where this flag is actually defined in an extension or version, whether under a <require depends="..."> attribute or not.
398408
# Note: Only base name, not aliases (aliases in aliasFlagRequirements).

0 commit comments

Comments
 (0)