适用于 OpenGL 的 Swappy(附加函数)

将 Swappy 与 OpenGL 结合使用的附加效用函数。

摘要

函数

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 提供 tick,可以调用此函数。
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
设置自动交换间隔的最长持续时间(以毫秒为单位)。

MAX_FRAME_BUCKETS 6
统计信息表示的最长持续时间(以刷新周期为单位)。

结构体

SwappyStats

Swappy 统计信息,可使用 SwappyGL_enableStats 开启时收集此统计信息。

函数

SwappyGL_enableStats

void SwappyGL_enableStats(
  bool enabled
)

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

默认情况下,统计信息收集功能关闭,不存在与统计信息相关的开销。应用可通过调用 SwappyGL_enableStats(true) 打开统计信息收集。然后,应用应开始对每个帧调用 SwappyGL_recordFrameStart,接着再开始执行任何 CPU 相关的工作。统计信息将以“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 提供 tick,可以调用此函数。

必须在第一次调用 Swappy_swap() 之前调用此函数。然后,为每个 choreographer tick 调用此函数。

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 不会进行任何同步,只会尽快提交帧。

MAX_FRAME_BUCKETS

 MAX_FRAME_BUCKETS 6

统计信息表示的最长持续时间(以刷新周期为单位)。

另请参阅SwappyStats