Swappy (适用于 OpenGL 附加功能)

用于将 Swappy 与 OpenGL 配合使用的额外实用函数。

摘要

函数

SwappyGL_clearStats()
void
清除目前已收集的帧统计信息。
SwappyGL_enableStats(bool enabled)
void
开启/关闭统计信息收集。
SwappyGL_getStats(SwappyStats *swappyStats)
void
如果统计信息收集已开启,则返回收集到的统计信息。
SwappyGL_injectTracer(const SwappyTracer *t)
void
传递回调,以便在每一帧调用以跟踪执行情况。
SwappyGL_onChoreographer(int64_t frameTimeNanos)
void
如果应用希望使用 Android Choreographer 向 Swappy 提供计时信号,可以调用此函数。
SwappyGL_recordFrameStart(EGLDisplay display, EGLSurface surface)
void
如果已通过 SwappyGL_enableStats 开启统计信息,则应调用此函数。
SwappyGL_setAutoPipelineMode(bool enabled)
void
开启/关闭自动流水线模式。
SwappyGL_setAutoSwapInterval(bool enabled)
void
开启/关闭自动交换间隔检测。
SwappyGL_setMaxAutoSwapIntervalNS(uint64_t max_swap_ns)
void
设置自动交换间隔的最大持续时间(以纳秒为单位)。
SwappyGL_uninjectTracer(const SwappyTracer *t)
void
移除之前使用 SwappyGL_injectTracer 添加的回调。

函数

SwappyGL_clearStats

void SwappyGL_clearStats()

清除目前已收集的帧统计信息。

收集到的所有帧统计信息都重置为 0;在此调用之后,帧统计信息会正常收集。

SwappyGL_enableStats

void SwappyGL_enableStats(
  bool enabled
)

开启/关闭统计信息收集。

默认情况下,统计信息收集处于关闭状态,没有任何与统计信息相关的开销。应用可以通过调用 SwappyGL_enableStats(true) 开启统计信息收集。然后,应用应在开始进行任何与 CPU 相关的工作之前,为每一帧调用 SwappyGL_recordFrameStart。统计信息将以 'FrameStatistics' 标签记录到 logcat。应用可以通过调用 SwappyGL_getStats 获取统计信息。

SwappyGL_getStats

void SwappyGL_getStats(
  SwappyStats *swappyStats
)

如果统计信息收集已开启,则返回收集到的统计信息。

另请参阅: SwappyStats 另请参阅: SwappyGL_enableStats

详情
参数
swappyStats
指向 SwappyStats 的指针,该指针将填充收集到的统计信息。

SwappyGL_injectTracer

void SwappyGL_injectTracer(
  const SwappyTracer *t
)

传递回调,以便在每一帧调用以跟踪执行情况。

SwappyGL_onChoreographer

void SwappyGL_onChoreographer(
  int64_t frameTimeNanos
)

如果应用希望使用 Android Choreographer 向 Swappy 提供计时信号,可以调用此函数。

此函数必须在第一次调用 Swappy_swap() 之前调用。之后,请在每个 choreographer 计时信号时调用此函数。

SwappyGL_recordFrameStart

void SwappyGL_recordFrameStart(
  EGLDisplay display,
  EGLSurface surface
)

如果已通过 SwappyGL_enableStats 开启统计信息,则应调用此函数。

当通过 SwappyGL_enableStats 开启统计信息收集时,应用应在开始进行任何与 CPU 相关的工作之前,为每一帧调用此函数。

另请参阅:SwappyGL_enableStats

SwappyGL_setAutoPipelineMode

void SwappyGL_setAutoPipelineMode(
  bool enabled
)

开启/关闭自动流水线模式。

默认情况下,如果自动交换间隔开启,则自动流水线处理也会开启,Swappy 将尝试通过在同一流水线阶段调度 CPU 和 GPU 工作来减少延迟(如果适合)。

SwappyGL_setAutoSwapInterval

void SwappyGL_setAutoSwapInterval(
  bool enabled
)

开启/关闭自动交换间隔检测。

默认情况下,Swappy 会根据实际帧渲染时间调整交换间隔。如果应用想覆盖 Swappy 计算的交换间隔,可以调用 SwappyGL_setSwapIntervalNS。这将暂时覆盖 Swappy 的帧计时,但除非调用 SwappyGL_setAutoSwapInterval(false),否则计时会继续动态更新,因此交换间隔可能会改变。

SwappyGL_setMaxAutoSwapIntervalNS

void SwappyGL_setMaxAutoSwapIntervalNS(
  uint64_t max_swap_ns
)

设置自动交换间隔的最大持续时间(以纳秒为单位)。

如果 Swappy 在自动交换间隔模式下运行,并且帧持续时间长于 max_swap_ns,Swappy 将不进行任何同步,并尽快提交帧。

SwappyGL_uninjectTracer

void SwappyGL_uninjectTracer(
  const SwappyTracer *t
)

移除之前使用 SwappyGL_injectTracer 添加的回调。