blob: 80a53dd463dce6e920bf274c6f0efbd9991a0a43 [file] [log] [blame]
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import glob
import subprocess
out_file = open("resources.gni", "w")
out_file.write("""\
### NOTE: This file auto-generated from gen.py
cts_resources = [
{
path=rebase_path("../external/vulkancts/mustpass/1.1.4/vk-default.txt")
dest="vk-default-1.1.4.txt"
},
{
path=rebase_path("../external/vulkancts/mustpass/1.1.3/vk-default.txt")
dest="vk-default-1.1.3.txt"
},
{
path=rebase_path("../external/vulkancts/mustpass/1.1.2/vk-default.txt")
dest="vk-default-1.1.2.txt"
},
{
path=rebase_path("../external/vulkancts/mustpass/1.0.2/vk-default.txt")
dest="vk-default-1.0.2.txt"
},
""")
files = subprocess.check_output(
["find", "../external/vulkancts/data/vulkan", "-type", "f"])
file_lines = files.splitlines()
for file in sorted(file_lines):
file_split = file.split("/")
file_split = file_split[4:]
out_file.write(" {\n")
out_file.write(' path=rebase_path("%s")\n' % file)
out_file.write(' dest="%s"\n' % "/".join(file_split))
out_file.write(" },\n")
out_file.write(" ]\n")
out_file.close()
cts_version = "1.1.4"
dirs_to_delete = ["data", "meta"]
for dir_delete in dirs_to_delete:
assert (os.path.isdir(os.path.join("split-cts", dir_delete)))
for f in glob.glob("split-cts/meta/*.cmx"):
os.remove(f)
for f in glob.glob("split-cts/data/*.txt"):
os.remove(f)
out_file = open("split-cts/BUILD.gn", "w")
out_file.write("""# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# File generated by ../gen.py - do not modify.
import("//build/package.gni")
import("//src/graphics/lib/magma/gnbuild/magma.gni")
import("../resources.gni")
# Add a label of "vulkan-cts" for each environment given in the list
# of general hardware environments for magma tests. The label ensures
# that the Vulkan CTS will not be run in the general test pipeline;
# the label will be keyed on so that the suite may be run in a special
# builder.
labeled_magma_hardware_envs = []
foreach(env, magma_hardware_envs) {
labeled_env = {
} # Clear from previous iteration.
labeled_env = {
forward_variables_from(env, "*")
if (defined(tags)) {
tags += [ "vulkan-cts" ]
} else {
tags = [ "vulkan-cts" ]
}
}
labeled_magma_hardware_envs += [ labeled_env ]
}
""")
cts_file_list = open(
"../external/vulkancts/mustpass/%s/vk-default.txt" % cts_version,
"r").read().split("\n")
chunk_size = 1000
cts_chunks = []
while cts_file_list:
first_section = cts_file_list[:chunk_size]
cts_file_list = cts_file_list[chunk_size:]
cts_chunks.append(first_section)
test_list = []
meta_list = []
resources_list = []
for chunk_num in range(len(cts_chunks)):
test_list.append("""
{
name = "vulkan-cts"
dest = "vulkan-cts-%03d"
environments = labeled_magma_hardware_envs
},""" % chunk_num)
meta_list.append("""
{
path = rebase_path("meta/vulkan-cts-%03d.cmx")
dest = "vulkan-cts-%03d.cmx"
},""" % (chunk_num, chunk_num))
resources_list.append("""
{
path = rebase_path("data/vulkan-%03d.txt")
dest = "vk-list-%03d.txt"
},""" % (chunk_num, chunk_num))
for current_index in range(len(cts_chunks)):
with open("split-cts/data/vulkan-%03d.txt" % current_index, "w") as f:
f.write("\n".join(cts_chunks[current_index]))
with open("split-cts/meta/vulkan-cts-%03d.cmx" % current_index, "w") as f:
f.write("""
{
"facets": {
"fuchsia.test": {
"system-services": [
"fuchsia.sysmem.Allocator",
"fuchsia.vulkan.loader.Loader"
]
}
},
"program": {
"args": [
"--deqp-caselist-file=/pkg/data/vk-list-%03d.txt",
"--deqp-log-images=disable",
"--deqp-log-shader-sources=disable",
"--deqp-log-filename=/data/TestResults.qpa",
"--deqp-log-flush=disable"
],
"binary": "test/vulkan-cts-%03d"
},
"sandbox": {
"dev": [
"class/framebuffer"
],
"features": [
"vulkan",
"isolated-persistent-storage"
],
"services": [
"fuchsia.sysmem.Allocator",
"fuchsia.tracing.provider.Registry",
"fuchsia.logger.LogSink",
"fuchsia.vulkan.loader.Loader"
]
}
}
""" % (current_index, current_index))
out_file.write("""
package("vulkan-cts-split") {
deps = [
"..:copy",
"..:vulkan_cts_build_id",
]
tests = [%s
]
meta = [%s
]
resources = [%s
]
resources += cts_resources
}
group("split-cts") {
deps = [
":vulkan-cts-split",
]
}
""" % ("".join(test_list), "".join(meta_list), "".join(resources_list)))
out_file.close()