2.1 KiB
2.1 KiB
RHICommandQueue
命名空间: XCEngine::RHI
类型: class (abstract)
描述: GPU 命令队列抽象接口,负责提交和执行命令列表,以及 GPU/CPU 同步。
概述
RHICommandQueue 封装了 GPU 命令队列的操作,包括命令列表提交、同步栅栏操作、GPU 空闲等待等功能。
公共方法
生命周期
| 方法 | 描述 |
|---|---|
virtual void Shutdown() |
关闭命令队列 |
命令执行
| 方法 | 描述 |
|---|---|
virtual void ExecuteCommandLists(uint32_t count, void** lists) |
执行命令列表 |
virtual void Signal(RHIFence* fence, uint64_t value) |
信号通知栅栏 |
virtual void Wait(RHIFence* fence, uint64_t value) |
等待栅栏 |
virtual uint64_t GetCompletedValue() |
获取已完成的值 |
virtual void WaitForIdle() |
等待队列空闲 |
属性访问
| 方法 | 描述 |
|---|---|
virtual CommandQueueType GetType() const |
获取队列类型 |
virtual uint64_t GetTimestampFrequency() const |
获取时间戳频率 |
其他
| 方法 | 描述 |
|---|---|
virtual void* GetNativeHandle() |
获取原生 API 句柄 |
命令队列类型 (CommandQueueType)
| 枚举值 | 描述 |
|---|---|
Direct |
直接队列,用于图形和计算命令 |
Compute |
计算队列,专门用于计算着色器 |
Copy |
复制队列,专门用于资源复制 |
使用示例
// 创建命令队列
CommandQueueDesc queueDesc;
queueDesc.queueType = (uint32_t)CommandQueueType::Direct;
RHICommandQueue* commandQueue = device->CreateCommandQueue(queueDesc);
// 创建同步栅栏
FenceDesc fenceDesc;
fenceDesc.initialValue = 0;
RHIFence* fence = device->CreateFence(fenceDesc);
// 提交命令列表执行
commandQueue->ExecuteCommandLists(1, (void**)&commandList);
// 信号通知栅栏
commandQueue->Signal(fence, 1);
// CPU 等待 GPU 完成
fence->Wait(1);
// 或者让 CPU 等待队列空闲
commandQueue->WaitForIdle();
相关文档
- RHICommandList - 命令列表
- RHIFence - 同步栅栏
- RHIDevice - 创建设备