启用相位同步
更新时间: 2025年2月18日
相位同步是一种帧定时管理技术,用于自适应地管理延迟。相位同步作为最新
Meta XR 核心 SDK 中的一个选项用于 Meta Quest 应用。
相位同步提供了一种替代固定延迟模式的方式,用于管理 Meta Quest 应用中的帧定时。固定延迟模式意味着尽可能早地合成帧,以免丢失当前帧和重用过时的帧。过时的帧会对用户体验产生负面影响。
与固定延迟不同,相位同步会根据应用的工作负载管理帧定时。其旨在在合成器需要之前完成帧渲染,以减少渲染延迟并避免丢帧。
下图展示了典型的多线程 VR 应用采用固定延迟模式与启用相位同步时的区别。
启用相位同步时,请注意以下事项:
- 无需额外性能开销:相位同步不会增加应用程序的性能负担。
- 对工作负载波动敏感:当应用程序的工作负载频繁波动或激增时,相位同步可能会导致更多过时的帧出现。
- 补充延迟锁定:相位同步和延迟锁定通常能有效协作。
- 额外延迟模式:如果额外延迟模式和相位同步均启用,则将忽略额外延迟模式。
如要启用相位同步:
- 在 Unity 中打开项目。
- 在菜单中,前往 Edit(编辑)> Project Settings(项目设置)。
- 从左侧导航中选择 XR Plug-in Management(XR 插件管理),然后点击 Install XR Plugin Management(安装 XR 插件管理)。
- 点击 Android 选项卡,然后选择 XR provider plugin(XR 提供方插件):
- OpenXR(Unity 版本 6+ 和 Meta XR SDK v74+)
- Oculus(Unity 版本 < 6 和 SDK 版本 < v74)
在应用中启用相位同步后,您可以通过检查 logcat 日志来验证它是否已经激活,并查看该功能减少的延迟量。
- 如果相位同步未处于活动状态,Lat 值为 Lat=0 或 Lat=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