early-access version 2323

This commit is contained in:
pineappleEA
2021-12-18 08:41:22 +01:00
parent 994096ad3a
commit f244f6654f
31 changed files with 41800 additions and 121887 deletions

View File

@@ -19,11 +19,13 @@ from interfacedocgenerator import InterfaceDocGenerator
from generator import write
from spirvcapgenerator import SpirvCapabilityOutputGenerator
from hostsyncgenerator import HostSynchronizationOutputGenerator
from formatsgenerator import FormatsOutputGenerator
from pygenerator import PyOutputGenerator
from rubygenerator import RubyOutputGenerator
from reflib import logDiag, logWarn, setLogFile
from reg import Registry
from validitygenerator import ValidityOutputGenerator
from vkconventions import VulkanConventions
from apiconventions import APIConventions
# Simple timer functions
@@ -77,6 +79,9 @@ def makeGenOpts(args):
# SPIR-V capabilities / features to emit (list of extensions & capabilities)
emitSpirv = args.emitSpirv
# Vulkan Formats to emit
emitFormats = args.emitFormats
# Features to include (list of features)
features = args.feature
@@ -97,13 +102,14 @@ def makeGenOpts(args):
# Descriptive names for various regexp patterns used to select
# versions and extensions
allSpirv = allFeatures = allExtensions = r'.*'
allFormats = allSpirv = allFeatures = allExtensions = r'.*'
# Turn lists of names/patterns into matching regular expressions
addExtensionsPat = makeREstring(extensions, None)
removeExtensionsPat = makeREstring(removeExtensions, None)
emitExtensionsPat = makeREstring(emitExtensions, allExtensions)
emitSpirvPat = makeREstring(emitSpirv, allSpirv)
emitFormatsPat = makeREstring(emitFormats, allFormats)
featuresPat = makeREstring(features, allFeatures)
# Copyright text prefixing all headers (list of strings).
@@ -130,7 +136,9 @@ def makeGenOpts(args):
protectFile = protect
# An API style conventions object
conventions = VulkanConventions()
conventions = APIConventions()
defaultAPIName = conventions.xml_api_name
# API include files for spec and ref pages
# Overwrites include subdirectories in spec source tree
@@ -146,7 +154,7 @@ def makeGenOpts(args):
filename = 'timeMarker',
directory = directory,
genpath = genpath,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
@@ -162,8 +170,8 @@ def makeGenOpts(args):
expandEnumerants = False)
]
# Python representation of API information, used by scripts that
# don't need to load the full XML.
# Python and Ruby representations of API information, used by scripts
# that do not need to load the full XML.
genOpts['api.py'] = [
PyOutputGenerator,
DocGeneratorOptions(
@@ -171,7 +179,7 @@ def makeGenOpts(args):
filename = 'api.py',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
@@ -182,7 +190,30 @@ def makeGenOpts(args):
reparentEnums = False)
]
genOpts['api.rb'] = [
RubyOutputGenerator,
DocGeneratorOptions(
conventions = conventions,
filename = 'api.rb',
directory = directory,
genpath = None,
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
defaultExtensions = None,
addExtensions = addExtensionsPat,
removeExtensions = removeExtensionsPat,
emitExtensions = emitExtensionsPat,
reparentEnums = False)
]
# API validity files for spec
#
# requireCommandAliases is set to True because we need validity files
# for the command something is promoted to even when the promoted-to
# feature is not included. This avoids wordy includes of validity files.
genOpts['validinc'] = [
ValidityOutputGenerator,
DocGeneratorOptions(
@@ -190,14 +221,16 @@ def makeGenOpts(args):
filename = 'timeMarker',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
defaultExtensions = None,
addExtensions = addExtensionsPat,
removeExtensions = removeExtensionsPat,
emitExtensions = emitExtensionsPat)
emitExtensions = emitExtensionsPat,
requireCommandAliases = True,
)
]
# API host sync table files for spec
@@ -208,7 +241,7 @@ def makeGenOpts(args):
filename = 'timeMarker',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
@@ -230,7 +263,7 @@ def makeGenOpts(args):
filename = 'timeMarker',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = None,
@@ -249,7 +282,7 @@ def makeGenOpts(args):
filename = 'timeMarker',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
@@ -267,7 +300,7 @@ def makeGenOpts(args):
filename = 'timeMarker',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
@@ -279,6 +312,26 @@ def makeGenOpts(args):
reparentEnums = False)
]
# Used to generate various format chapter tables
genOpts['formatsinc'] = [
FormatsOutputGenerator,
DocGeneratorOptions(
conventions = conventions,
filename = 'timeMarker',
directory = directory,
genpath = None,
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
defaultExtensions = None,
addExtensions = addExtensionsPat,
removeExtensions = removeExtensionsPat,
emitExtensions = emitExtensionsPat,
emitFormats = emitFormatsPat,
reparentEnums = False)
]
# Platform extensions, in their own header files
# Each element of the platforms[] array defines information for
# generating a single platform:
@@ -307,6 +360,7 @@ def makeGenOpts(args):
'VK_EXT_video_decode_h264',
'VK_EXT_video_decode_h265',
'VK_EXT_video_encode_h264',
'VK_EXT_video_encode_h265',
]
betaSuppressExtensions = []
@@ -314,10 +368,13 @@ def makeGenOpts(args):
platforms = [
[ 'vulkan_android.h', [ 'VK_KHR_android_surface',
'VK_ANDROID_external_memory_android_hardware_buffer'
], commonSuppressExtensions ],
], commonSuppressExtensions +
[ 'VK_KHR_format_feature_flags2',
] ],
[ 'vulkan_fuchsia.h', [ 'VK_FUCHSIA_imagepipe_surface',
'VK_FUCHSIA_external_memory',
'VK_FUCHSIA_external_semaphore' ], commonSuppressExtensions ],
'VK_FUCHSIA_external_semaphore',
'VK_FUCHSIA_buffer_collection' ], commonSuppressExtensions ],
[ 'vulkan_ggp.h', [ 'VK_GGP_stream_descriptor_surface',
'VK_GGP_frame_token' ], commonSuppressExtensions ],
[ 'vulkan_ios.h', [ 'VK_MVK_ios_surface' ], commonSuppressExtensions ],
@@ -357,7 +414,7 @@ def makeGenOpts(args):
filename = headername,
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = None,
@@ -398,7 +455,7 @@ def makeGenOpts(args):
filename = 'vulkan_core.h',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
@@ -432,7 +489,7 @@ def makeGenOpts(args):
filename = 'vulkan10.h',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = 'VK_VERSION_1_0',
emitversions = 'VK_VERSION_1_0',
@@ -466,7 +523,7 @@ def makeGenOpts(args):
filename = 'vulkan11.h',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = '^VK_VERSION_1_[01]$',
emitversions = '^VK_VERSION_1_[01]$',
@@ -495,7 +552,7 @@ def makeGenOpts(args):
filename = 'alias.h',
directory = directory,
genpath = None,
apiname = 'vulkan',
apiname = defaultAPIName,
profile = None,
versions = featuresPat,
emitversions = featuresPat,
@@ -546,6 +603,8 @@ def genTarget(args):
logDiag('* options.addExtensions =', options.addExtensions)
logDiag('* options.removeExtensions =', options.removeExtensions)
logDiag('* options.emitExtensions =', options.emitExtensions)
logDiag('* options.emitSpirv =', options.emitSpirv)
logDiag('* options.emitFormats =', options.emitFormats)
gen = createGenerator(errFile=errWarn,
warnFile=errWarn,
@@ -564,7 +623,7 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-defaultExtensions', action='store',
default='vulkan',
default=APIConventions().xml_api_name,
help='Specify a single class of extensions to add to targets')
parser.add_argument('-extension', action='append',
default=[],
@@ -578,6 +637,9 @@ if __name__ == '__main__':
parser.add_argument('-emitSpirv', action='append',
default=[],
help='Specify a SPIR-V extension or capability to emit in targets')
parser.add_argument('-emitFormats', action='append',
default=[],
help='Specify Vulkan Formats to emit in targets')
parser.add_argument('-feature', action='append',
default=[],
help='Specify a core API feature name or names to add to targets')
@@ -601,7 +663,7 @@ if __name__ == '__main__':
parser.add_argument('-time', action='store_true',
help='Enable timing')
parser.add_argument('-validate', action='store_true',
help='Enable XML group validation')
help='Validate the registry properties and exit')
parser.add_argument('-genpath', action='store', default='gen',
help='Path to generated files')
parser.add_argument('-o', action='store', dest='directory',
@@ -635,8 +697,14 @@ if __name__ == '__main__':
else:
diag = None
# Create the API generator & generator options
(gen, options) = genTarget(args)
if args.time:
# Log diagnostics and warnings
setLogFile(setDiag = True, setWarn = True, filename = '-')
(gen, options) = (None, None)
if not args.validate:
# Create the API generator & generator options
(gen, options) = genTarget(args)
# Create the registry object with the specified generator and generator
# options. The options are set before XML loading as they may affect it.
@@ -653,7 +721,8 @@ if __name__ == '__main__':
endTimer(args.time, '* Time to parse ElementTree =')
if args.validate:
reg.validateGroups()
success = reg.validateRegistry()
sys.exit(0 if success else 1)
if args.dump:
logDiag('* Dumping registry to regdump.txt')