Skip to content

Releases: mledour/XR-Layer-Monitor

Release list

v0.0.1

Choose a tag to compare

@github-actions github-actions released this 12 Jun 16:09
ce9599d

XR_APILAYER_MLEDOUR_layer_monitor v0.0.1

Sandwich CPU profiler for OpenXR API layers. Built from commit
ce9599dc17b4a1f393cb8e545171522e8c723dfd. Ships as a pre/post pair -- one DLL
placed before the target layer in the loader chain, one after.
Both halves must be installed.

Assets

File Description
XR_APILAYER_MLEDOUR_layer_monitor-*-x64-Setup.exe Installer (recommended) -- installs both halves to Program Files, registers them in HKLM, creates Add/Remove Programs uninstaller
XR_APILAYER_MLEDOUR_layer_monitor-Release-x64.zip Manual install ZIP -- contains both DLLs + JSONs + PowerShell scripts
XR_APILAYER_MLEDOUR_layer_monitor-Debug-x64.zip Debug build with full symbols for both halves

Install (installer)

  1. Download the ...-Setup.exe.
  2. Run it -- admin elevation is handled automatically.
  3. Both DLLs install to C:\Program Files\OpenXR-Layer-Monitor\
    and register with the OpenXR loader.

Install (manual / ZIP)

  1. Download ...-Release-x64.zip and unzip to a permanent location.
  2. Open an elevated PowerShell and run:
    powershell -ExecutionPolicy Bypass -File .\Install-Layer.ps1
    This registers BOTH manifests in HKLM in one go.

Positioning the target layer

The OpenXR loader walks HKLM\Software\Khronos\OpenXR\1\ApiLayers\Implicit
in insertion order. For the sandwich to measure correctly, the
target layer must sit between _pre and _post. See the README
for the manual ordering step.

Uninstall

  • Installer: Settings -> Apps -> XR_APILAYER_MLEDOUR_layer_monitor -> Uninstall
  • Manual: run Uninstall-Layer.ps1 from an elevated PowerShell

Disable without uninstalling

Set BOTH:

DISABLE_XR_APILAYER_MLEDOUR_layer_monitor_pre=1
DISABLE_XR_APILAYER_MLEDOUR_layer_monitor_post=1

Signed with a Certum Open Source Code Signing Cloud certificate
(subject: Open Source Developer Michael Ledour). Verify with:

signtool verify /pa /v <file>.exe

Anti-cheat systems may flag any OpenXR layer DLL -- even a signed
one -- when loaded into a hooked game.

What's Changed

  • feat: consolidate pre/post output into one %LOCALAPPDATA% folder by @mledour in #1
  • feat: auto-merge pre/post into frames-merged-.csv on shutdown by @mledour in #2
  • Feat/stats in merged csv header by @mledour in #3
  • Feat/hotkey toggle monitoring by @mledour in #4
  • test: unit + integration coverage for merge + analyze + lifecycle by @mledour in #5
  • fix(log): flush every Log() call so .log survives TerminateProcess sh… by @mledour in #6
  • fix(hotkey): drop the foreground-window gate so Ctrl+F9 works under V… by @mledour in #7
  • fix(hotkey): harden against parasitic toggles introduced by the foreg… by @mledour in #8
  • fix: lazy file-open + zero-frame merge guard close the parasitic-togg… by @mledour in #9
  • feat(perf): wide post bracket + SPSC lock-free ring for ~12x less tar… by @mledour in #10
  • feat(gpu): D3D11 sandwich for per-frame GPU cost monitoring by @mledour in #11
  • feat(gpu): D3D12 backend behind IGpuTimer by @mledour in #12
  • fix(entry): guard getenv("LOCALAPPDATA") to avoid host crash by @mledour in #13
  • fix(merge): key pre/post join on displayTime, not a per-DLL counter by @mledour in #14
  • fix(merge): write-temp-then-rename so a failed merge never destroys prior output by @mledour in #15
  • fix(gpu-d3d12): don't sentinel-0 a slot whose command list was already submitted by @mledour in #16
  • fix(merge): pin classic locale on CSV streams so integers can't get grouped by @mledour in #17
  • fix(hotkey): never debounce a STOP, only a START by @mledour in #18
  • fix(analyzer): tolerate malformed qpc_freq / truncated rows instead of crashing by @mledour in #19
  • fix(gpu): drain resolved GPU timestamps at stop/teardown (#11) by @mledour in #20
  • refactor: dedupe stats reduction (#15) + name the data-loss guard (#14) by @mledour in #21
  • test(gpu-d3d12): synthetic-load harness to validate sandwich additivity by @mledour in #22
  • Feat/csv cpu gpu pct headers by @mledour in #23

New Contributors

Full Changelog: https://github.com/mledour/XR-Layer-Monitor/commits/v0.0.1