MCPcopy
hub / github.com/KhronosGroup/Vulkan-Docs / apiGen

Method apiGen

scripts/reg.py:1894–2118  ·  view source on GitHub ↗

Generate interface for specified versions using the current generator and generator options

(self)

Source from the content-addressed store, hash-verified

1892 self.validextensionstructs[parent].sort()
1893
1894 def apiGen(self):
1895 """Generate interface for specified versions using the current
1896 generator and generator options"""
1897
1898 self.gen.logMsg('diag', '*******************************************')
1899 self.gen.logMsg('diag', ' Registry.apiGen file:', self.genOpts.filename,
1900 'api:', self.genOpts.apiname,
1901 'profile:', self.genOpts.profile)
1902 self.gen.logMsg('diag', '*******************************************')
1903
1904 # Could reset required/declared flags for all features here.
1905 # This has been removed as never used. The initial motivation was
1906 # the idea of calling apiGen() repeatedly for different targets, but
1907 # this has never been done. The 20% or so build-time speedup that
1908 # might result is not worth the effort to make it actually work.
1909 #
1910 # self.apiReset()
1911
1912 # Compile regexps used to select versions & extensions
1913 regVersions = re.compile(self.genOpts.versions)
1914 regEmitVersions = re.compile(self.genOpts.emitversions)
1915 regAddExtensions = re.compile(self.genOpts.addExtensions)
1916 regRemoveExtensions = re.compile(self.genOpts.removeExtensions)
1917 regEmitExtensions = re.compile(self.genOpts.emitExtensions)
1918 regEmitSpirv = re.compile(self.genOpts.emitSpirv)
1919 regEmitFormats = re.compile(self.genOpts.emitFormats)
1920
1921 # Get all matching API feature names & add to list of FeatureInfo
1922 # Note we used to select on feature version attributes, not names.
1923 self.genFeatures = {}
1924 apiMatch = False
1925 for key in self.apidict:
1926 fi = self.apidict[key]
1927 api = fi.elem.get('api')
1928 if apiNameMatch(self.genOpts.apiname, api):
1929 apiMatch = True
1930 if regVersions.match(fi.name):
1931 # Matches API & version #s being generated.
1932 # Mark for emission and add to the generated features list.
1933 # @@ Could use 'declared' instead of 'emit'?
1934 fi.emit = (regEmitVersions.match(fi.name) is not None)
1935 self.genFeatures[fi.name] = fi
1936 if not fi.emit:
1937 self.gen.logMsg('diag', 'NOT tagging feature api =', api,
1938 'name =', fi.name, 'version =', fi.version,
1939 'for emission (does not match emitversions pattern)')
1940 else:
1941 self.gen.logMsg('diag', 'Including feature api =', api,
1942 'name =', fi.name, 'version =', fi.version,
1943 'for emission (matches emitversions pattern)')
1944 else:
1945 self.gen.logMsg('diag', 'NOT including feature api =', api,
1946 'name =', fi.name, 'version =', fi.version,
1947 '(does not match requested versions)')
1948 else:
1949 self.gen.logMsg('diag', 'NOT including feature api =', api,
1950 'name =', fi.name,
1951 '(does not match requested API)')

Callers 7

testVulkanObjectFunction · 0.95
testVulkanObjectSCFunction · 0.95
beginFileMethod · 0.95
genvk.pyFile · 0.80

Calls 15

fillFeatureDictionaryMethod · 0.95
requireFeaturesMethod · 0.95
deprecateFeaturesMethod · 0.95
removeFeaturesMethod · 0.95
stripUnsupportedAPIsMethod · 0.95
generateSpirvMethod · 0.95
generateFormatMethod · 0.95

Tested by 4

testVulkanObjectFunction · 0.76
testVulkanObjectSCFunction · 0.76