OpenXR runtimes can generate Vulkan/D3D API commands to perform work required in the API. This could include compositing images, However, when capturing OpenXR and graphics API commands, we do not want to mix Vulkan/D3D commands the application is generating with those generated by the OpenXR runtime. Because of this, we stop recording API commands when calling down to the OpenXR runtime, and start again once it returns.
However, this can be inaccurate and produce incomplete results:
If the graphics API is running separate threads and generates valid calls while OpenXR runtime is executing
If the XR runtime is generating Vulkan commands outside of an OpenXR command (looping on xrWaitForFences or xrResetFences in a thread)
Investigate improving the re-entrance handling with these possible scenarios in mind.
OpenXR runtimes can generate Vulkan/D3D API commands to perform work required in the API. This could include compositing images, However, when capturing OpenXR and graphics API commands, we do not want to mix Vulkan/D3D commands the application is generating with those generated by the OpenXR runtime. Because of this, we stop recording API commands when calling down to the OpenXR runtime, and start again once it returns.
However, this can be inaccurate and produce incomplete results:
Investigate improving the re-entrance handling with these possible scenarios in mind.