Rework API graphique Vulkan - EnTT pour ECS + Chargement modèle 3D assimp + SDL3 pour events input et fenetre + mesh texture camera transform ok + attention tous les assets nouveaus ne sont pas commités et il y a du code test en dur dans scene addentity + restructuration globale
This commit is contained in:
72
lib/All/SPIRV-Reflect/tests/build_golden_yaml.py
Normal file
72
lib/All/SPIRV-Reflect/tests/build_golden_yaml.py
Normal file
@@ -0,0 +1,72 @@
|
||||
# Usage:
|
||||
# Prereq: build spirv-reflect
|
||||
# Prereq: build shader SPVs
|
||||
# python tests/build_golden_yaml.py
|
||||
import argparse
|
||||
import os
|
||||
import pathlib
|
||||
import platform
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Generate golden YAML from test shader .spv files")
|
||||
parser.add_argument("--verbose", "-v", help="enable verbose output", action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
print("""\
|
||||
WARNING: This script regenerates the golden YAML output for all test shaders.
|
||||
The new YAML will be considered the expected correct output for future test
|
||||
runs. Before commiting the updated YAML to GitHub, it is therefore critical
|
||||
to carefully inspect the diffs between the old and new YAML output, to ensure
|
||||
that all differences can be traced back to intentional changes to either the
|
||||
reflection code or the test shaders.
|
||||
""")
|
||||
|
||||
test_dir = pathlib.Path(__file__).parent.resolve()
|
||||
root_dir = test_dir.parent.resolve()
|
||||
|
||||
spirv_reflect_exe_paths_windows = [
|
||||
os.path.join(root_dir, "bin", "Debug", "spirv-reflect.exe"),
|
||||
os.path.join(root_dir, "bin", "Release", "spirv-reflect.exe"),
|
||||
]
|
||||
spirv_reflect_exe_paths_unix = [
|
||||
os.path.join(root_dir, "bin", "spirv-reflect"),
|
||||
]
|
||||
spirv_reflect_exe = None
|
||||
if platform.system() == "Windows":
|
||||
for path in spirv_reflect_exe_paths_windows:
|
||||
if os.path.isfile(path):
|
||||
spirv_reflect_exe = path
|
||||
break
|
||||
else:
|
||||
for path in spirv_reflect_exe_paths_unix:
|
||||
if os.path.isfile(path):
|
||||
spirv_reflect_exe = path
|
||||
break
|
||||
|
||||
if spirv_reflect_exe is None:
|
||||
exit("spirv-reflect executable not found!")
|
||||
|
||||
spv_paths = []
|
||||
for root, dirs, files in os.walk(test_dir):
|
||||
for f in files:
|
||||
base, ext = os.path.splitext(f)
|
||||
if ext.lower() == ".spv":
|
||||
spv_paths.append(os.path.normpath(os.path.join(root, f)))
|
||||
|
||||
for spv_path in spv_paths:
|
||||
yaml_path = spv_path + ".yaml"
|
||||
try:
|
||||
# TODO Replace hard-coded EXE path with something less brittle.
|
||||
yaml_cmd_args = [spirv_reflect_exe, "-y", "-v", "1", spv_path]
|
||||
if args.verbose:
|
||||
print(" ".join(yaml_cmd_args))
|
||||
subprocess.run(yaml_cmd_args, stdout=open(yaml_path, "w"))
|
||||
subprocess.run(yaml_cmd_args)
|
||||
print("%s -> %s" % (spv_path, yaml_path))
|
||||
except NameError:
|
||||
print("spirv-reflect application not found; did you build it first?")
|
||||
sys.exit()
|
||||
except subprocess.CalledProcessError as error:
|
||||
print("YAML generation failed with error code %d:\n%s" % (error.returncode, error.output.decode('utf-8')))
|
||||
Reference in New Issue
Block a user