Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 05:46
· 2 commits to main since this release
  • perf_baseline and perf_check: a regression reference. perf_baseline saves copies of several equal recordings
    (ideally 3 or more) as a named reference in baselines.json beside the runs, so it outlives KEEP_RUNS, and
    returns the range each number spans across them. perf_check judges a recording against that range: regressed
    when FPS falls under it by more than margin_pct (default 3), GPU ms per frame rises over it, or encoders or
    command buffers per frame exceed it; improved when a number leaves the range the other way; same otherwise.
    The range, not one run, is the reference because 5 equal runs of drawstress d3d12 on an M1 Pro differed by 4.4 %
    in FPS and 6.1 % in GPU ms per frame. Frame pacing, short encoders and GPU idle time are reported but do not
    decide: they varied 13 % and 7 points between equal runs.
  • perf_compare says what changed in the GPU work and where: encoders and command buffers per frame, the share of
    encoders under short_us, the GPU's idle share and idle ms per frame, and labels, each encoder label's count and
    GPU ms per frame in both runs, largest change in ms per frame first. Labels compare per frame because two
    recordings of different lengths do not compare by total time; a label missing from a run that holds the full 20
    labels is outside_top_20, not gone. A run summarized before 0.4.0 is named in encoders.missing_in, and the
    headline numbers still compare. Shares (short encoders, GPU idle) give their change in points, without a %.
  • The compare-layer prompt reports perf_compare's table and labels instead of rebuilding them from two
    perf_diagnose calls.
  • Each recording names its translation layer in layer: the Wine version, the overrides in force (environment and
    the prefix's registry), the size and SHA-256 of d3d12, d3d12core, d3d11, d3d10core and dxgi in Wine and
    in the prefix, a 12-character fingerprint of all of it, and the program's variables (MULLION_DIAG=profile) with
    paths cut to file names. Native runs say they have no layer. perf_runs shows the fingerprint and Wine;
    perf_compare says whether both runs share a layer, which DLLs differ, and that different layers compare layers,
    not one change. Which copy of a DLL Wine loads is not recorded: Instruments does not keep Wine's own log.
  • perf_record.sh keeps the caller's WINEDLLOVERRIDES (a Mullion built for system32 needs d3d12,...=n) and
    adds mscoree=;mshtml= after it; before, it replaced them.
  • A prefix copy of a Direct3D DLL identical to Wine's own (Wine's first boot makes one) leaves the layer
    fingerprint unchanged: the fingerprint and differs look at the copy Wine loads, the prefix's when it exists.
    Measured on an M1 Pro: the first drawstress run on a new prefix got a different fingerprint from the next
    three, with identical DLLs.
  • Downloads are hashed in 1 MiB blocks.