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 <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13021>
This commit is contained in:
parent
814e98c3a0
commit
0afd9e272e
|
@ -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 " ")
|
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 = argparse.ArgumentParser(description="radeonsi tester", formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--jobs",
|
"--jobs",
|
||||||
|
@ -125,6 +131,19 @@ parser.add_argument(
|
||||||
help="Output folder (logs, etc)",
|
help="Output folder (logs, etc)",
|
||||||
default=os.path.join(tempfile.gettempdir(), datetime.now().strftime('%Y-%m-%d-%H-%M-%S')))
|
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:])
|
args = parser.parse_args(sys.argv[1:])
|
||||||
piglit_path = args.piglit_path
|
piglit_path = args.piglit_path
|
||||||
glcts_path = args.glcts_path
|
glcts_path = args.glcts_path
|
||||||
|
@ -145,20 +164,38 @@ else:
|
||||||
base = args.baseline
|
base = args.baseline
|
||||||
skips = os.path.join(os.path.dirname(__file__), "skips.csv")
|
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
|
# Use piglit's glinfo to determine the GPU name
|
||||||
gpu_name = "unknown"
|
gpu_name = "unknown"
|
||||||
|
gpu_name_full = ""
|
||||||
|
|
||||||
p = subprocess.run(
|
p = subprocess.run(
|
||||||
["./glinfo"],
|
["./glinfo"],
|
||||||
capture_output="True",
|
capture_output="True",
|
||||||
cwd=os.path.join(piglit_path, "bin"),
|
cwd=os.path.join(piglit_path, "bin"),
|
||||||
check=True,
|
check=True,
|
||||||
|
env=env
|
||||||
)
|
)
|
||||||
for line in p.stdout.decode().split("\n"):
|
for line in p.stdout.decode().split("\n"):
|
||||||
if "GL_RENDER" in line:
|
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()
|
gpu_name = line.replace("(TM)", "").split("(")[1].split(",")[0].lower()
|
||||||
break
|
break
|
||||||
|
|
||||||
output_folder = args.output_folder
|
output_folder = args.output_folder
|
||||||
|
print_green("Tested GPU: '{}' ({})".format(gpu_name_full, gpu_name))
|
||||||
|
print_green("Output folder: '{}'".format(output_folder))
|
||||||
|
|
||||||
count = 1
|
count = 1
|
||||||
while os.path.exists(output_folder):
|
while os.path.exists(output_folder):
|
||||||
output_folder = "{}.{}".format(os.path.abspath(args.output_folder), count)
|
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("-\\|/")
|
spin = itertools.cycle("-\\|/")
|
||||||
|
|
||||||
|
|
||||||
def run_cmd(args, verbosity, env=None):
|
def run_cmd(args, verbosity):
|
||||||
if verbosity > 1:
|
if verbosity > 1:
|
||||||
print_yellow(
|
print_yellow(
|
||||||
"| Command line argument '"
|
"| Command line argument '"
|
||||||
|
@ -266,9 +303,7 @@ if args.piglit:
|
||||||
if os.path.exists(baseline):
|
if os.path.exists(baseline):
|
||||||
cmd += ["--baseline", baseline]
|
cmd += ["--baseline", baseline]
|
||||||
print_yellow("[baseline {}]".format(baseline), args.verbose > 0)
|
print_yellow("[baseline {}]".format(baseline), args.verbose > 0)
|
||||||
env = os.environ.copy()
|
run_cmd(cmd, args.verbose)
|
||||||
env["PIGLIT_PLATFORM"] = "gbm"
|
|
||||||
run_cmd(cmd, args.verbose, env)
|
|
||||||
shutil.copy(os.path.join(out, "failures.csv"), new_baseline)
|
shutil.copy(os.path.join(out, "failures.csv"), new_baseline)
|
||||||
verify_results(baseline, new_baseline)
|
verify_results(baseline, new_baseline)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue