1.5 KiB
1.5 KiB
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);
相关文档
- RHICommandQueue - 命令队列
- RHIDevice - 创建设备