diff options
author | Andres Gomez <tanty@igalia.com> | 2020-03-08 23:40:04 +0200 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-03-27 13:48:17 +0000 |
commit | 9f4acd465edc1360a1d5ea2646379bd5db3e1598 (patch) | |
tree | e71cfefeb55f8a73a1a3aaaacda26b6584215661 /.gitlab-ci | |
parent | fb8fa83a30a1ec66982854da0a8d7870cf1d2f93 (diff) |
gitlab-ci: add apitrace's DXGI traces support
v2:
- Pass the whole retrace command for apitrace traces (Alexandros).
Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4238>
Diffstat (limited to '.gitlab-ci')
-rw-r--r-- | .gitlab-ci/tracie/README.md | 5 | ||||
-rw-r--r-- | .gitlab-ci/tracie/dump_trace_images.py | 18 | ||||
-rw-r--r-- | .gitlab-ci/tracie/traceutil.py | 4 |
3 files changed, 18 insertions, 9 deletions
diff --git a/.gitlab-ci/tracie/README.md b/.gitlab-ci/tracie/README.md index e7fccfaf481..8dc32d043c9 100644 --- a/.gitlab-ci/tracie/README.md +++ b/.gitlab-ci/tracie/README.md @@ -152,3 +152,8 @@ To ensure that this layer can be found when running the trace you need to set `VK_LAYER_PATH` to point to the location of `VkLayer_screenshot.json` and `LD_LIBRARY_PATH` to point to the location of `libVkLayer_screenshot.so`. + +In the case of DXGI traces, the scripts require Wine, a recent version +of DXVK installed in the default `WINEPREFIX`, and a recent binary +version of apitrace for Windows which should be reachable through +Windows' `PATH` environment variable. diff --git a/.gitlab-ci/tracie/dump_trace_images.py b/.gitlab-ci/tracie/dump_trace_images.py index 343ff77bb31..0416414dfab 100644 --- a/.gitlab-ci/tracie/dump_trace_images.py +++ b/.gitlab-ci/tracie/dump_trace_images.py @@ -1,7 +1,7 @@ #!/usr/bin/python3 # Copyright (c) 2019 Collabora Ltd -# Copyright © 2019 Valve Corporation. +# Copyright © 2019-2020 Valve Corporation. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), @@ -48,8 +48,8 @@ def run_logged_command(cmd, env, log_path): logoutput.decode(errors='replace') + "[dump_traces_images] Process failed with error code: %d" % ret.returncode) -def get_last_apitrace_frame_call(trace_path): - cmd = ["apitrace", "dump", "--calls=frame", str(trace_path)] +def get_last_apitrace_frame_call(cmd_wrapper, trace_path): + cmd = cmd_wrapper + ["apitrace", "dump", "--calls=frame", str(trace_path)] ret = subprocess.run(cmd, stdout=subprocess.PIPE) for l in reversed(ret.stdout.decode(errors='replace').splitlines()): s = l.split(None, 1) @@ -71,14 +71,14 @@ def get_last_gfxreconstruct_frame_call(trace_path): return int(c[0]) return -1 -def dump_with_apitrace(trace_path, calls, device_name): +def dump_with_apitrace(retrace_cmd, trace_path, calls, device_name): outputdir = str(trace_path.parent / "test" / device_name) os.makedirs(outputdir, exist_ok=True) outputprefix = str(Path(outputdir) / trace_path.name) + "-" if len(calls) == 0: - calls = [str(get_last_apitrace_frame_call(trace_path))] - cmd = ["eglretrace", "--snapshot=" + ','.join(calls), - "--snapshot-prefix=" + outputprefix, str(trace_path)] + calls = [str(get_last_apitrace_frame_call(retrace_cmd[:-1], trace_path))] + cmd = retrace_cmd + ["--snapshot=" + ','.join(calls), + "--snapshot-prefix=" + outputprefix, str(trace_path)] log_path = Path(outputdir) / (trace_path.name + ".log") run_logged_command(cmd, None, log_path) @@ -137,7 +137,9 @@ def dump_from_trace(trace_path, calls, device_name): trace_type = trace_type_from_filename(trace_path.name) try: if trace_type == TraceType.APITRACE: - dump_with_apitrace(trace_path, calls, device_name) + dump_with_apitrace(["eglretrace"], trace_path, calls, device_name) + elif trace_type == TraceType.APITRACE_DXGI: + dump_with_apitrace(["wine", "d3dretrace"], trace_path, calls, device_name) elif trace_type == TraceType.RENDERDOC: dump_with_renderdoc(trace_path, calls, device_name) elif trace_type == TraceType.GFXRECONSTRUCT: diff --git a/.gitlab-ci/tracie/traceutil.py b/.gitlab-ci/tracie/traceutil.py index d383e41df30..dc5e3a6cf6c 100644 --- a/.gitlab-ci/tracie/traceutil.py +++ b/.gitlab-ci/tracie/traceutil.py @@ -1,5 +1,5 @@ # Copyright (c) 2019 Collabora Ltd -# Copyright © 2019 Valve Corporation. +# Copyright © 2019-2020 Valve Corporation. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), @@ -28,12 +28,14 @@ from enum import Enum, auto class TraceType(Enum): UNKNOWN = auto() APITRACE = auto() + APITRACE_DXGI = auto() RENDERDOC = auto() GFXRECONSTRUCT = auto() TESTTRACE = auto() _trace_type_info_map = { TraceType.APITRACE : ("apitrace", ".trace"), + TraceType.APITRACE_DXGI : ("apitrace-dxgi", ".trace-dxgi"), TraceType.RENDERDOC : ("renderdoc", ".rdc"), TraceType.GFXRECONSTRUCT : ("gfxreconstruct", ".gfxr"), TraceType.TESTTRACE : ("testtrace", ".testtrace") |