Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HansKristian-Work/vkd3d-proton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2022-07-06 12:36:41 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2022-07-06 13:44:58 +0300
commit02d9b6c61c7884cb11aa9bfd3656fa2028731295 (patch)
tree85d7f5e5f812ec8f96c7407b6f328a1aaa5ca78b
parentb6aac42aa66a772ccd98fd94397136c37d241156 (diff)
profiler: Add --delta to profile helper tool.profiling-improvements
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
-rw-r--r--programs/vkd3d-profile.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/programs/vkd3d-profile.py b/programs/vkd3d-profile.py
index e978127a..b401e557 100644
--- a/programs/vkd3d-profile.py
+++ b/programs/vkd3d-profile.py
@@ -75,17 +75,35 @@ def main():
parser.add_argument('--per-iteration', action = 'store_true', help = 'Represent ticks in terms of ticks / iteration. Cannot be used with --divider.')
parser.add_argument('--name', nargs = '+', type = str, help = 'Only display data for certain counters.')
parser.add_argument('--sort', type = str, default = 'none', help = 'Sorts input data according to "iterations" or "ticks".')
+ parser.add_argument('--delta', type = str, help = 'Subtract iterations and timing from other profile blob.')
parser.add_argument('profile', help = 'The profile binary blob.')
args = parser.parse_args()
if not args.profile:
raise AssertionError('Need profile folder.')
+ delta_map = {}
+ if args.delta is not None:
+ with open(args.delta, 'rb') as f:
+ for block in iter(lambda: f.read(64), b''):
+ if is_valid_block(block):
+ b = parse_block(block)
+ delta_map[b.name] = b
+
blocks = []
with open(args.profile, 'rb') as f:
for block in iter(lambda: f.read(64), b''):
if is_valid_block(block):
- blocks.append(parse_block(block))
+ b = parse_block(block)
+ if b.name in delta_map:
+ d = delta_map[b.name]
+ b = ProfileCase(ticks = b.ticks - d.ticks,
+ iterations = b.iterations - d.iterations,
+ name = b.name)
+ if b.iterations < 0 or b.ticks < 0:
+ raise AssertionError('After subtracting, iterations or ticks became negative.')
+ if b.iterations > 0:
+ blocks.append(b)
if args.divider is not None:
if args.per_iteration: