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

1.0 KiB
Raw Blame History

OpenGLFence::Signal()

void Signal() override;
void Signal(uint64_t value) override;

作用

为当前 fence 记录一个新的 signal 点,并插入新的 GPU 栅栏。

无参重载

void Signal() override;

当前实现行为

  • 直接转发到 Signal(1)

需要特别注意

这不是“在当前值基础上递增 1”而是固定把 signal 值设置为 1

带值重载

void Signal(uint64_t value) override;

当前实现行为

  • 如果已有旧 m_sync
    • glClientWaitSync(..., GL_TIMEOUT_IGNORED)
    • glDeleteSync
    • 然后把 m_sync 置空
  • 调用 glFlush()
  • m_signaledValue 更新为 value
  • 调用 glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0) 创建新的同步对象

设计说明

这套实现的本质是“用最新的一次 signal 覆盖上一段历史”。它适合当前引擎的基础提交模型,但和真正能保留完整时间线历史的 fence 仍然不同。

相关文档