Releases: mledour/XR-Layer-Monitor
Release list
v0.0.1
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)
- Download the
...-Setup.exe. - Run it -- admin elevation is handled automatically.
- Both DLLs install to
C:\Program Files\OpenXR-Layer-Monitor\
and register with the OpenXR loader.
Install (manual / ZIP)
- Download
...-Release-x64.zipand unzip to a permanent location. - Open an elevated PowerShell and run:
This registers BOTH manifests in HKLM in one go.
powershell -ExecutionPolicy Bypass -File .\Install-Layer.ps1
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.ps1from 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>.exeAnti-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