Module: Mesa Branch: main Commit: 0afd9e272ee80234af945359f6adae05a0ef0c22 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0afd9e272ee80234af945359f6adae05a0ef0c22
Author: Pierre-Eric Pelloux-Prayer <[email protected]> Date: Thu Sep 23 12:00:02 2021 +0200 radeonsi/test: add --gpu to select the GPU to test And specify DRI_PRIME + WAFFLE_GBM_DEVICE to avoid testing the wrong GPU. Acked-by: Marek Olšák <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13021> --- .../drivers/radeonsi/ci/radeonsi-run-tests.py | 43 ++++++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py b/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py index 506a8e3b0ae..0bf53f5cf1f 100755 --- a/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py +++ b/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py @@ -47,6 +47,12 @@ def print_yellow(txt, end_line=True, prefix=None): print("\033[1;33m{}\033[0m".format(txt), end="\n" if end_line else " ") +def print_green(txt, end_line=True, prefix=None): + if prefix: + print(prefix, end="") + print("\033[1;32m{}\033[0m".format(txt), end="\n" if end_line else " ") + + parser = argparse.ArgumentParser(description="radeonsi tester", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument( "--jobs", @@ -125,6 +131,19 @@ parser.add_argument( help="Output folder (logs, etc)", default=os.path.join(tempfile.gettempdir(), datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))) +available_gpus = [] +for f in os.listdir("/dev/dri/by-path"): + idx = f.find("-render") + if idx < 0: + continue + # gbm name is the full path, but DRI_PRIME expects a different + # format + available_gpus += [(os.path.join("/dev/dri/by-path", f), + f[:idx].replace(':', '_').replace('.', '_'))] + +if len(available_gpus) > 1: + parser.add_argument('--gpu', type=int, dest="gpu", default=0, help='Select GPU (0..{})'.format(len(available_gpus) - 1)) + args = parser.parse_args(sys.argv[1:]) piglit_path = args.piglit_path glcts_path = args.glcts_path @@ -145,20 +164,38 @@ else: base = args.baseline skips = os.path.join(os.path.dirname(__file__), "skips.csv") +env = os.environ.copy() +env["PIGLIT_PLATFORM"] = "gbm" + +if "DRI_PRIME" in env: + print("Don't use DRI_PRIME. Instead use --gpu N") + del env["DRI_PRIME"] +if "gpu" in args: + env["DRI_PRIME"] = available_gpus[args.gpu][1] + env["WAFFLE_GBM_DEVICE"] = available_gpus[args.gpu][0] + # Use piglit's glinfo to determine the GPU name gpu_name = "unknown" +gpu_name_full = "" + p = subprocess.run( ["./glinfo"], capture_output="True", cwd=os.path.join(piglit_path, "bin"), check=True, + env=env ) for line in p.stdout.decode().split("\n"): if "GL_RENDER" in line: + line = line.split("=")[1] + gpu_name_full = '('.join(line.split("(")[:-1]).strip() gpu_name = line.replace("(TM)", "").split("(")[1].split(",")[0].lower() break output_folder = args.output_folder +print_green("Tested GPU: '{}' ({})".format(gpu_name_full, gpu_name)) +print_green("Output folder: '{}'".format(output_folder)) + count = 1 while os.path.exists(output_folder): output_folder = "{}.{}".format(os.path.abspath(args.output_folder), count) @@ -173,7 +210,7 @@ logfile = open(os.path.join(output_folder, "{}-run-tests.log".format(gpu_name)), spin = itertools.cycle("-\\|/") -def run_cmd(args, verbosity, env=None): +def run_cmd(args, verbosity): if verbosity > 1: print_yellow( "| Command line argument '" @@ -266,9 +303,7 @@ if args.piglit: if os.path.exists(baseline): cmd += ["--baseline", baseline] print_yellow("[baseline {}]".format(baseline), args.verbose > 0) - env = os.environ.copy() - env["PIGLIT_PLATFORM"] = "gbm" - run_cmd(cmd, args.verbose, env) + run_cmd(cmd, args.verbose) shutil.copy(os.path.join(out, "failures.csv"), new_baseline) verify_results(baseline, new_baseline)
