开发

启用相位同步

更新时间: 2025年2月18日
相位同步是一种帧定时管理技术,用于自适应地管理延迟。相位同步作为最新 Meta XR 核心 SDK 中的一个选项用于 Meta Quest 应用。
要激活相位同步自适应帧定时,请参阅启用相位同步

关于相位同步的更多信息

相位同步提供了一种替代固定延迟模式的方式,用于管理 Meta Quest 应用中的帧定时。固定延迟模式意味着尽可能早地合成帧,以免丢失当前帧和重用过时的帧。过时的帧会对用户体验产生负面影响。
与固定延迟不同,相位同步会根据应用的工作负载管理帧定时。其旨在在合成器需要之前完成帧渲染,以减少渲染延迟并避免丢帧。
下图展示了典型的多线程 VR 应用采用固定延迟模式与启用相位同步时的区别。
Chart comparing Phase Sync to Fixed Latency
启用相位同步时,请注意以下事项:
  • 无需额外性能开销:相位同步不会增加应用程序的性能负担。
  • 对工作负载波动敏感:当应用程序的工作负载频繁波动或激增时,相位同步可能会导致更多过时的帧出现。
  • 补充延迟锁定:相位同步和延迟锁定通常能有效协作。
  • 额外延迟模式:如果额外延迟模式和相位同步均启用,则将忽略额外延迟模式。

启用相位同步

如要启用相位同步:
  1. 在 Unity 中打开项目。
  2. 在菜单中,前往 Edit(编辑)> Project Settings(项目设置)。
  3. 从左侧导航中选择 XR Plug-in Management(XR 插件管理),然后点击 Install XR Plugin Management(安装 XR 插件管理)。
  4. 点击 Android 选项卡,然后选择 XR provider plugin(XR 提供方插件):
    • OpenXR(Unity 版本 6+ 和 Meta XR SDK v74+)
    • Oculus(Unity 版本 < 6 和 SDK 版本 < v74)

测试相位同步

在应用中启用相位同步后,您可以通过检查 logcat 日志来验证它是否已经激活,并查看该功能减少的延迟量。
adb logcat -s VrApi
Logcat output when Phase Sync is active
  • 如果相位同步未处于活动状态,Lat 值为 Lat=0Lat=1,表示处于额外延迟模式。
  • 如果相位同步处于活动状态,Lat 值为 Lat=-1,表示系统对延迟进行动态管理。
Prd 值表示由运行时测量的渲染延迟。要计算启动相位同步后节省的延迟量,请比较该功能处于活动状态和未处于活动状态时的 Prd 值。例如,如果启用相位同步时的 Prd 值为 35ms,而未启用时为 45ms,则使用相位同步节省了 10ms 的延迟。
为了更方便地比较启用和未启用相位同步时的性能,您可以使用 adb shell setprop 来开启和关闭该功能。更改 setprop 后,必须重启应用,更改才会生效。
  • 关闭:adb shell setprop debug.Meta.phaseSync 0
  • 开启:adb shell setprop debug.Meta.phaseSync 1

深入学习