Auto-generate knownConformanceVersions
gen_framework.py script now also generates
vkKnownConformanceVersions.inl . This file is
generated by grabing all git tags using
"git ls-remote -t" and then removing
from the list branches that were withdrawn.
Components: Framework
VK-GL-CTS issue: 1953
Affects: dEQP-VK.api.driver_properties.conformance_version
Change-Id: I29edb021049acc921b67c028d861b51cc0975e8f
(cherry picked from commit acbb6c6380b286d3b89a4079a6170c70b481d07e)
diff --git a/external/vulkancts/framework/vulkan/generated/vulkan/vkKnownConformanceVersions.inl b/external/vulkancts/framework/vulkan/generated/vulkan/vkKnownConformanceVersions.inl
new file mode 100644
index 0000000..f994332
--- /dev/null
+++ b/external/vulkancts/framework/vulkan/generated/vulkan/vkKnownConformanceVersions.inl
@@ -0,0 +1,25 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ * This file was generated by /scripts/gen_framework.py
+ */
+
+static const VkConformanceVersion knownConformanceVersions[]
+{
+#ifndef CTS_USES_VULKANSC
+ makeConformanceVersion(1, 3, 6, 0),
+ makeConformanceVersion(1, 3, 5, 2),
+ makeConformanceVersion(1, 3, 5, 1),
+ makeConformanceVersion(1, 3, 5, 0),
+ makeConformanceVersion(1, 3, 4, 1),
+ makeConformanceVersion(1, 3, 4, 0),
+ makeConformanceVersion(1, 3, 3, 1),
+ makeConformanceVersion(1, 3, 3, 0),
+ makeConformanceVersion(1, 3, 2, 0),
+ makeConformanceVersion(1, 3, 1, 1),
+ makeConformanceVersion(1, 3, 1, 0),
+#else
+ makeConformanceVersion(1, 0, 1, 1),
+ makeConformanceVersion(1, 0, 1, 0),
+ makeConformanceVersion(1, 0, 0, 0),
+#endif // CTS_USES_VULKANSC
+};
diff --git a/external/vulkancts/framework/vulkan/generated/vulkansc/vkKnownConformanceVersions.inl b/external/vulkancts/framework/vulkan/generated/vulkansc/vkKnownConformanceVersions.inl
new file mode 100644
index 0000000..f994332
--- /dev/null
+++ b/external/vulkancts/framework/vulkan/generated/vulkansc/vkKnownConformanceVersions.inl
@@ -0,0 +1,25 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ * This file was generated by /scripts/gen_framework.py
+ */
+
+static const VkConformanceVersion knownConformanceVersions[]
+{
+#ifndef CTS_USES_VULKANSC
+ makeConformanceVersion(1, 3, 6, 0),
+ makeConformanceVersion(1, 3, 5, 2),
+ makeConformanceVersion(1, 3, 5, 1),
+ makeConformanceVersion(1, 3, 5, 0),
+ makeConformanceVersion(1, 3, 4, 1),
+ makeConformanceVersion(1, 3, 4, 0),
+ makeConformanceVersion(1, 3, 3, 1),
+ makeConformanceVersion(1, 3, 3, 0),
+ makeConformanceVersion(1, 3, 2, 0),
+ makeConformanceVersion(1, 3, 1, 1),
+ makeConformanceVersion(1, 3, 1, 0),
+#else
+ makeConformanceVersion(1, 0, 1, 1),
+ makeConformanceVersion(1, 0, 1, 0),
+ makeConformanceVersion(1, 0, 0, 0),
+#endif // CTS_USES_VULKANSC
+};
diff --git a/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp
index 83319ce..7cfde11 100644
--- a/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp
+++ b/external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp
@@ -47,68 +47,6 @@
TEST_TYPE_VERSION,
};
-static const VkConformanceVersion knownConformanceVersions[] =
-{
-#ifndef CTS_USES_VULKANSC
- makeConformanceVersion(1, 3, 6, 0),
- makeConformanceVersion(1, 3, 5, 2),
- makeConformanceVersion(1, 3, 5, 1),
- makeConformanceVersion(1, 3, 5, 0),
- makeConformanceVersion(1, 3, 4, 1),
- makeConformanceVersion(1, 3, 4, 0),
- makeConformanceVersion(1, 3, 3, 1),
- makeConformanceVersion(1, 3, 3, 0),
- makeConformanceVersion(1, 3, 2, 0),
- makeConformanceVersion(1, 3, 1, 1),
- makeConformanceVersion(1, 3, 1, 0),
- makeConformanceVersion(1, 3, 0, 0),
- makeConformanceVersion(1, 2, 8, 0),
- makeConformanceVersion(1, 2, 7, 2),
- makeConformanceVersion(1, 2, 7, 1),
- makeConformanceVersion(1, 2, 7, 0),
- makeConformanceVersion(1, 2, 6, 2),
- makeConformanceVersion(1, 2, 6, 1),
- makeConformanceVersion(1, 2, 6, 0),
- makeConformanceVersion(1, 2, 5, 2),
- makeConformanceVersion(1, 2, 5, 1),
- makeConformanceVersion(1, 2, 5, 0),
- makeConformanceVersion(1, 2, 4, 1),
- makeConformanceVersion(1, 2, 4, 0),
- makeConformanceVersion(1, 2, 3, 3),
- makeConformanceVersion(1, 2, 3, 2),
- makeConformanceVersion(1, 2, 3, 1),
- makeConformanceVersion(1, 2, 3, 0),
- makeConformanceVersion(1, 2, 2, 2),
- makeConformanceVersion(1, 2, 2, 1),
- makeConformanceVersion(1, 2, 2, 0),
- makeConformanceVersion(1, 2, 1, 2),
- makeConformanceVersion(1, 2, 1, 1),
- makeConformanceVersion(1, 2, 1, 0),
- makeConformanceVersion(1, 2, 0, 2),
- makeConformanceVersion(1, 2, 0, 1),
- makeConformanceVersion(1, 2, 0, 0),
- makeConformanceVersion(1, 1, 6, 3),
- makeConformanceVersion(1, 1, 6, 2),
- makeConformanceVersion(1, 1, 6, 1),
- makeConformanceVersion(1, 1, 6, 0),
- makeConformanceVersion(1, 1, 5, 2),
- makeConformanceVersion(1, 1, 5, 1),
- makeConformanceVersion(1, 1, 5, 0),
- makeConformanceVersion(1, 1, 4, 3),
- makeConformanceVersion(1, 1, 4, 2),
- makeConformanceVersion(1, 1, 4, 1),
- makeConformanceVersion(1, 1, 4, 0),
- makeConformanceVersion(1, 1, 3, 3),
- makeConformanceVersion(1, 1, 3, 2),
- makeConformanceVersion(1, 1, 3, 1),
- makeConformanceVersion(1, 1, 3, 0),
-#else
- makeConformanceVersion(1, 0, 1, 1),
- makeConformanceVersion(1, 0, 1, 0),
- makeConformanceVersion(1, 0, 0, 0),
-#endif // CTS_USES_VULKANSC
-};
-
DE_INLINE bool isNullTerminated(const char* str, const deUint32 maxSize)
{
return deStrnlen(str, maxSize) < maxSize;
@@ -159,6 +97,9 @@
void testVersion (const VkPhysicalDeviceDriverProperties& deviceDriverProperties, deUint32 usedApiVersion)
{
+
+#include "vkKnownConformanceVersions.inl"
+
const deUint32 apiMajorVersion = VK_API_VERSION_MAJOR(usedApiVersion);
const deUint32 apiMinorVersion = VK_API_VERSION_MINOR(usedApiVersion);
diff --git a/external/vulkancts/scripts/gen_framework.py b/external/vulkancts/scripts/gen_framework.py
index 3d3f935..4c66d69 100755
--- a/external/vulkancts/scripts/gen_framework.py
+++ b/external/vulkancts/scripts/gen_framework.py
@@ -26,6 +26,7 @@
import glob
import json
import argparse
+import datetime
from lxml import etree
scriptPath = os.path.join(os.path.dirname(__file__), "..", "..", "..", "scripts")
@@ -3560,6 +3561,52 @@
writeInlFile(filename, INL_HEADER, stream)
+def writeConformanceVersions(filename):
+ # get list of all vulkan/vulkansc tags from git
+ listOfTags = os.popen("git ls-remote -t").read()
+ vkMatches = re.findall("vulkan-cts-(\d).(\d).(\d).(\d)", listOfTags, re.M)
+ scMatches = re.findall("vulkansc-cts-(\d).(\d).(\d).(\d)", listOfTags, re.M)
+ if len(vkMatches) == 0 or len(scMatches) == 0:
+ return
+ # read all text files in doc folder and find withdrawn cts versions (branches)
+ withdrawnVkBranches = set()
+ withdrawnScBranches = set()
+ today = datetime.date.today()
+ for fileName in glob.glob(os.path.join(os.path.dirname(__file__), "..", "doc", "*.txt")):
+ if "withdrawal" not in fileName:
+ continue
+ fileContent = readFile(fileName)
+ # get date when releases are withdrawn
+ match = re.search(r"(20\d\d)-(\d\d)-(\d\d).+ withdrawn", fileContent, re.IGNORECASE)
+ if match is not None:
+ # check if announcement refers to date in the past
+ if today > datetime.date(int(match[1]), int(match[2]), int(match[3])):
+ # get names of withdrawn branches
+ vkBranchMatches = re.findall("vulkan(\w\w)?-cts-(\d).(\d).(\d).(\d)", fileContent, re.M)
+ for v in vkBranchMatches:
+ selectedSet = withdrawnScBranches if v[0] == "sc" else withdrawnVkBranches
+ selectedSet.add((v[1], v[2], v[3], v[4]))
+ # define helper function that will be used to add entries for both vk and sc
+ def appendToStream(stream, versionsToAdd, maxWithdrawnVersion):
+ addedVersions = set()
+ for v in reversed(versionsToAdd):
+ # add only unique versions; ignore duplicates (e.g. with "-rc1", "-rc2" postfix);
+ # also add versions that are greater then maximal withdrawn version
+ if v in addedVersions or v <= maxWithdrawnVersion:
+ continue
+ addedVersions.add(v)
+ stream.append(f'\tmakeConformanceVersion({v[0]}, {v[1]}, {v[2]}, {v[3]}),')
+ # save array with versions
+ stream = ['static const VkConformanceVersion knownConformanceVersions[]',\
+ '{',\
+ '#ifndef CTS_USES_VULKANSC']
+ appendToStream(stream, vkMatches, max(withdrawnVkBranches))
+ stream.append('#else')
+ appendToStream(stream, scMatches, tuple('0'*4) if len(withdrawnScBranches) == 0 else max(withdrawnScBranches))
+ stream.append('#endif // CTS_USES_VULKANSC')
+ stream.append('};')
+ writeInlFile(filename, INL_HEADER, stream)
+
def parseCmdLineArgs():
parser = argparse.ArgumentParser(description = "Generate Vulkan INL files",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
@@ -3651,6 +3698,7 @@
writeApiExtensionDependencyInfo (api, os.path.join(outputPath, "vkApiExtensionDependencyInfo.inl"))
writeEntryPointValidation (api, os.path.join(outputPath, "vkEntryPointValidation.inl"))
writeGetDeviceProcAddr (api, os.path.join(outputPath, "vkGetDeviceProcAddr.inl"))
+ writeConformanceVersions ( os.path.join(outputPath, "vkKnownConformanceVersions.inl"))
# NOTE: when new files are generated then they should also be added to the
# vk-gl-cts\external\vulkancts\framework\vulkan\CMakeLists.txt outputs list