mirror of
https://github.com/blender/blender
synced 2026-09-27 01:34:15 +03:00
A new command line option `--debug-gpu-backend-no-fallback` is added that skips the GPU backend support checks. This is primarily useful for the GPU tests that should not fall back to another backend. This has the useful side effect of skipping `vk_instance_create_for_platform_checks`, which would otherwise create its own Vulkan instance. `vkCreateInstance` can be an expensive function call depending on the used GPU driver (see https://projects.blender.org/infrastructure/meta/issues/231). Pull Request: https://projects.blender.org/blender/blender/pulls/163203
86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
# SPDX-FileCopyrightText: 2015-2026 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import argparse
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
BLOCKLIST = [
|
|
"hdr_simple_export_hlg_12bit.blend",
|
|
"hdr_simple_export_pq_12bit.blend",
|
|
"sdr_simple_export_p3_aces_10bit.blend",
|
|
"hdr_simple_still_test_file.blend",
|
|
]
|
|
|
|
|
|
def get_compositor_device_setter_script(execution_device):
|
|
return f"import bpy; bpy.data.scenes[0].render.compositor_device = '{execution_device}'"
|
|
|
|
|
|
def get_arguments(filepath, output_filepath, backend):
|
|
dirname = os.path.dirname(filepath)
|
|
basedir = os.path.dirname(dirname)
|
|
|
|
args = [
|
|
"--background",
|
|
"--factory-startup",
|
|
"--enable-autoexec",
|
|
"--debug-memory",
|
|
"--console-crash-handler",
|
|
"--debug-exit-on-error"]
|
|
|
|
execution_device = "CPU"
|
|
if backend != "CPU":
|
|
execution_device = "GPU"
|
|
args.extend(["--gpu-backend", backend, "--debug-gpu-backend-no-fallback"])
|
|
|
|
args.extend([
|
|
filepath,
|
|
"--python-expr", get_compositor_device_setter_script(execution_device),
|
|
"-o", output_filepath,
|
|
"-F", "PNG",
|
|
"-f", "1",
|
|
])
|
|
|
|
return args
|
|
|
|
|
|
def create_argparse():
|
|
parser = argparse.ArgumentParser(
|
|
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
|
|
)
|
|
parser.add_argument("--blender", required=True)
|
|
parser.add_argument("--testdir", required=True)
|
|
parser.add_argument("--outdir", required=True)
|
|
parser.add_argument("--oiiotool", required=True)
|
|
parser.add_argument("--batch", default=False, action="store_true")
|
|
parser.add_argument('--gpu-backend')
|
|
return parser
|
|
|
|
|
|
def main():
|
|
parser = create_argparse()
|
|
args = parser.parse_args()
|
|
|
|
from modules import render_report
|
|
backend = args.gpu_backend if args.gpu_backend else "CPU"
|
|
report_title = f"Sequencer {backend.upper()}"
|
|
report = render_report.Report(report_title, args.outdir, args.oiiotool, blocklist=BLOCKLIST)
|
|
report.set_pixelated(True)
|
|
# Default error tolerances are quite large, lower them.
|
|
report.set_fail_threshold(2.0 / 255.0)
|
|
report.set_fail_percent(0.01)
|
|
report.set_reference_dir("reference")
|
|
|
|
def arguments_callback(filepath, output_filepath): return get_arguments(filepath, output_filepath, backend)
|
|
ok = report.run(args.testdir, args.blender, arguments_callback, batch=args.batch)
|
|
|
|
sys.exit(not ok)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|