使用 VK_EXT_present_timing 测量输入延迟
本文探讨了如何利用 Vulkan 扩展 VK_EXT_present_timing 来精准测量输入延迟。作者通过侧线实验,详细介绍了该扩展的工作原理、实现方法以及在实际应用中的效果,为开发者提供了一种低开销、高精度的延迟测量工具,有助于优化图形渲染和交互体验。
背景速读
- 作者「Themaister」本名 Hans-Kristian Arntzen,是开源图形栈知名开发者,维护着 Vulkan 驱动的通用模拟器前端 RetroArches、以及 Vulkan 兼容层 DXVK 和 VKD3D 等关键项目。
- VK_EXT_present_timing 是作者在 Vulkan 官方扩展中主导设计的新扩展,让应用能精确查询画面实际显示到屏幕的时机(而非仅提交时的时间戳),从而测出从输入到像素亮起的「全链路延迟」。
- 测延迟的常见方法是用高速摄像机拍屏幕+输入设备 LED,人工数帧;该扩展提供了一种纯软件、不需要昂贵仪器且可自动化的替代方案。
- 游戏和 VR 应用对此尤其敏感:高延迟直接影响操作手感与晕动症;能精确测量是整个延迟优化链条的前提。
- 文章详细讲述了该扩展的设计动机、实现细节(如何在 GPU 得空时回读时间戳)、以及如何把它集成到 RetroArches 和 DXVK 中实测延迟。