SteamVR: Why is the swapchain triple-buffered?

I’m working to integrate SteamVR via OpenXR into my software. I noticed the swapchain created by xrCreateSwapchain() includes three images. Why is this? I always use two images for my regular 3D rendering. Wouldn’t triple buffering increase latency?

3 images are needed for certain scenarios like temporal reprojection, where 2 past images are held by the compositor (to compute motion vectors) and 1 current image is available to you for drawing.

It doesn’t increase latency, whatever latest image you released prior to submitting to xrEndFrame() is the one used for the upcoming composition and scanout.

1 Like