915 B
915 B
OpenGLFence::GetCompletedValue()
uint64_t GetCompletedValue() const override;
作用
查询当前 fence 已完成到哪个值。
当前实现行为
- 如果
m_sync == nullptr,直接返回m_completedValue - 否则调用
glGetSynciv(..., GL_SYNC_STATUS, ...)读取同步对象状态 - 当状态为
GL_SIGNALED时,返回m_signaledValue - 当状态仍未完成时,返回
m_completedValue
需要特别注意
- 这个方法不会在
GL_SIGNALED时自动更新m_completedValue - 也不会删除当前
m_sync - 因为当前实现不强制值单调递增,所以返回值理论上也可能比历史更小
设计说明
这体现了当前类的本质: 它只是用一个 GLsync 加两份 CPU 侧原子计数去“近似” timeline fence 接口,而不是严格复刻显式 API 的时间线语义。