SteamVR

SteamVR

How to get accurate GPU frame timing info with OpenXR for dynamic resolution?
For dynamic resolution, I had modified unreal to use SteamVR's compositor GetFrameTiming() method, and found FrameTiming.m_flTotalRenderGpuMs worked best.

Unreal's normal GPU frame timing and alternative DX12 timestamp query stuff is inaccurate when vsync is on or with VR compositors, except on intel GPUs. Does OpenXR provide any alternative for driving dynamic resolution?
< >
Showing 1-3 of 3 comments
Rectus 8 May @ 8:30am 
Unfortunately there isn't any support for anything like it in the OpenXR spec. I brought it up a long time ago, but nothing has happened.
Mentioned in another thread, but if Valve would implement one or both of these it should be enough:

https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#XR_META_performance_metrics
https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#XR_META_recommended_layer_resolution

XR_META_performance_metrics seems to be the same stats as openvr's GetFrameTiming which I previously used and worked well for dynamic resolution.
Rectus 9 May @ 12:35pm 
Oh neat, I must have missed those ones.

Looking at the performance metric one it only provides values for some arbitrary ranges, and not per-frame stats like the OpenVR interface does. It also seems to just be designed for data collection, it specifically dissallows using the metrics to affect the application.

The application should not change its behavior based on the counter reads.

Note: the measurement intervals of individual performance metrics counters are defined by the OpenXR runtime. The application must not make assumptions or change its behavior at runtime by measuring them.
< >
Showing 1-3 of 3 comments
Per page: 1530 50