Files
XCEngine/docs/api/XCEngine/RHI/OpenGL/OpenGLFence/GetCompletedValue.md

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 的时间线语义。

相关文档