MCPcopy Index your code
hub / github.com/KhronosGroup/Vulkan-Docs / _VideoStdGenerator

Class _VideoStdGenerator

scripts/base_generator.py:1318–1429  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1316# This object handles all the parsing from the video.xml (i.e. Video Std header definitions)
1317# It will fill in video standard definitions into the VulkanObject
1318class _VideoStdGenerator(BaseGenerator):
1319 def __init__(self):
1320 BaseGenerator.__init__(self)
1321 self.vk.videoStd = VideoStd()
1322
1323 # Track the current Video Std header we are processing
1324 self.currentVideoStdHeader = None
1325
1326 def write(self, data):
1327 # We do not write anything here
1328 return
1329
1330 def beginFile(self, genOpts):
1331 # We intentionally skip default BaseGenerator behavior
1332 OutputGenerator.beginFile(self, genOpts)
1333
1334 def endFile(self):
1335 # Move parsed definitions to the Video Std definitions
1336 self.vk.videoStd.enums = self.vk.enums
1337 self.vk.videoStd.structs = self.vk.structs
1338 self.vk.videoStd.constants = self.vk.constants
1339
1340 # We intentionally skip default BaseGenerator behavior
1341 OutputGenerator.endFile(self)
1342
1343 def beginFeature(self, interface, emit):
1344 # We intentionally skip default BaseGenerator behavior
1345 OutputGenerator.beginFeature(self, interface, emit)
1346
1347 # Only "extension" is possible in the video.xml, identifying the Video Std header
1348 assert interface.tag == 'extension'
1349 name = interface.get('name')
1350 version: (str | None) = None
1351 depends: list[str] = []
1352
1353 # Handle Video Std header version constant
1354 for enum in interface.findall('require/enum[@value]'):
1355 enumName = enum.get('name')
1356 if enumName.endswith('_SPEC_VERSION'):
1357 version = enum.get('value')
1358
1359 # Handle dependencies on other Video Std headers
1360 for type in interface.findall('require/type[@name]'):
1361 typeName = type.get('name')
1362 if typeName.startswith('vk_video/'):
1363 depends.append(typeName[len('vk_video/'):-len('.h')])
1364
1365 headerFile = f'vk_video/{name}.h'
1366
1367 self.vk.videoStd.headers[name] = VideoStdHeader(name, version, headerFile, depends)
1368
1369 self.currentVideoStdHeader = self.vk.videoStd.headers[name]
1370
1371 # Handle constants here as that seems the most straightforward
1372 constantNames = []
1373 for enum in interface.findall('require/enum[@type]'):
1374 constantNames.append(enum.get('name'))
1375 self.addConstants(constantNames)

Callers 1

beginFileMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected