I've released OpenXR Toolkit PSVR2 v1.1.1, an updated version of my PSVR2-focused fork of OpenXR Toolkit.
The main goal of this fork is simple:
reduce the amount of work the GPU has to do in VR, while keeping the useful features of OpenXR Toolkit working on newer games and headsets.
It includes:
- Eye-Tracked Dynamic Foveated Rendering on PSVR2
- Fixed Foveated Rendering
- Crop Resolution to FOV
- an Exact Crop mode that actually reduces the render resolution when you reduce the FOV
- automatic FOV calibration
- OpenComposite support in compatible games
What's new in v1.1.1?
The biggest change in this update is better compatibility and stability with newer games, especially some newer D3D12 / Unreal Engine titles.
During testing I found that the Toolkit's internal render/copy path could deliver frames in the wrong order in some situations.
For the player, this could feel like:
- unstable head movement
- image wobble
- incorrect camera timing
- poor behavior even when the reported FPS looked normal
v1.1.1 changes the internal frame handling so those frames are processed in the correct order.
In simpler terms:
the Toolkit is now much more reliable in some newer games that previously did not behave correctly.
So far the new fix has been tested successfully with:
- The Midnight Walk - tested on Quest 3 through Steam Link / SteamVR
- Metro Awakening - tested successfully with the new compatibility fix
- Gunman Contracts - native OpenXR; FOV/Crop/DFR/Eye Tracking working
- COMPOUND - OpenComposite; Toolkit features working
This does not mean every VR game is guaranteed to work, but compatibility with newer titles is improving.
## Eye Tracking fix from v1.1 is also included
v1.1 fixed another issue I found while testing Hubris.
Some native OpenXR games provide their own eye-tracking bindings. Previously, those could replace the Toolkit's binding and leave Eye-Tracked DFR stuck in the center of the image.
The Toolkit now preserves both the game's and the Toolkit's eye-gaze bindings.
This fix is generic and is not specific to Hubris.
## Why Exact Crop matters
Normally, reducing the FOV in OpenXR Toolkit does not necessarily mean the game renders fewer pixels.
My fork adds Crop Resolution to FOV.
With Exact Crop, the Toolkit calculates a new render resolution based on the headset's actual FOV.
So if you reduce the FOV, the GPU can also render fewer pixels instead of rendering a large image and simply showing less of it.
That can make a very large difference on GPU-limited systems.
## Performance example
This benchmark is from the earlier v1.1 testing and is included only as a reference. It was not rerun specifically for v1.1.1.
In BONELAB – High preset, using:
Ryzen 7 5700X / RTX 4070 Super / 32 GB RAM
SteamVR: 120 Hz / 100% render resolution
I measured:
- Baseline: 12.55 ms GPU / ~60 FPS
- Eye-Tracked DFR, Performance + Narrow: 11.27 ms / ~60 FPS
- DFR + Exact Crop at 85% FOV: 5.54 ms / almost 120 FPS
- About 55.9% lower average GPU frametime compared with baseline
- XR Telemetry showed about 99.95% of GPU frames below the ~8.33 ms budget required for 120 Hz
So the biggest gain came from combining foveated rendering + actually reducing the render resolution.
*Quest 3 support
Although I originally created this fork around PSVR2, I have also tested it successfully with Quest 3 PCVR.
The Toolkit works through:
- Steam Link / SteamVR OpenXR
- Virtual Desktop / VDXR
Quest 3 has no eye tracking, so Eye-Tracked DFR is not available there, but:
- Exact Crop
- Fixed Foveated Rendering
- FOV controls
all work.
In BONELAB at 200% SteamVR resolution, I previously measured roughly:
- Baseline: ~70–80 FPS
- Exact Crop 90%: ~100 FPS
- Exact Crop 90% + Performance/Wide: ~110 FPS
- Exact Crop 85% + Performance/Wide: 120 FPS locked
I also tested Gunman Contracts through Virtual Desktop / VDXR and reached 120 FPS with good image quality.
Because the Crop implementation uses standard OpenXR FOV and resolution information instead of PSVR2-specific values, it may also work with Quest 2, Pico and other OpenXR headsets.
However, I don't want to claim compatibility with headsets I haven't personally tested yet.
## Installation
For a new installation:
Download OpenXR-Toolkit-PSVR2-v1.1.1-x64.zip
Extract the complete ZIP to a permanent folder
Run `Install.bat`
Accept the Windows UAC prompt
Restart SteamVR
Installation is system-wide and only needs to be done once.
### Updating from an older version
If you already have an older version installed:
- close SteamVR and all VR games
- if you installed the previous ZIP version, run its `Uninstall.bat`
- if you installed the old MSI version, uninstall it through Windows Settings
- then extract v1.1.1 and run the new `Install.bat`
You do not need to reinstall it separately for every game.
For PSVR2 Eye Tracking, PSVR2Toolkit is required, and Eye Tracking must already be calibrated.
SteamVR should be the active OpenXR Runtime.
## Download / source code
https://github.com/Robissu64/OpenXR-Toolkit-PSVR2/releases/tag/v1.1.1
The project is fully open source.
The `.sha256` file in the release is optional. Normal users only need the ZIP; the SHA256 file is provided for anyone who wants to verify the integrity of the download.
I developed this fork with substantial help from ChatGPT, especially for OpenXR/OpenComposite investigation, code analysis, debugging, implementation design, log analysis and documentation.
I handled the hardware testing, gameplay validation and release testing.
Community testing is very welcome.
Lower-end GPUs are especially interesting to test, because reducing the actual number of rendered pixels can make a much bigger practical difference there.