Files
XCEngine/docs/api/rhi/rhi-fence.md

1.5 KiB
Raw Blame History

RHIFence

命名空间: XCEngine::RHI

类型: class (abstract)

描述: GPU 同步栅栏抽象接口,用于 GPU/CPU 同步和跨队列同步。

概述

RHIFence 封装了 GPU 栅栏操作,提供了一种可靠的方式来同步 CPU 和 GPU 之间的执行,以及不同命令队列之间的同步。

公共方法

生命周期

方法 描述
virtual void Shutdown() 释放栅栏资源

同步操作

方法 描述
virtual void Signal() 信号通知(值为 1
virtual void Signal(uint64_t value) 信号通知(指定值)
virtual void Wait(uint64_t value) 等待指定值
virtual uint64_t GetCompletedValue() const 获取已完成的值
virtual bool IsSignaled() const 检查是否已信号通知

其他

方法 描述
virtual void* GetNativeHandle() 获取原生 API 句柄

使用示例

// 创建栅栏
FenceDesc desc;
desc.initialValue = 0;
RHIFence* fence = device->CreateFence(desc);

// CPU 等待 GPU 完成工作
commandQueue->Signal(fence, 1);
fence->Wait(1);

// 或者使用 GetCompletedValue 轮询
commandQueue->Signal(fence, 100);
while (fence->GetCompletedValue() < 100) {
    // CPU 可以做其他工作
    DoOtherWork();
}

// 检查栅栏状态
if (fence->IsSignaled()) {
    // GPU 工作已完成
}

// 重置和复用
fence->Signal(0);

相关文档