2.4 KiB
2.4 KiB
RHICommandQueue
命名空间: XCEngine::RHI
类型: class (抽象基类)
头文件: XCEngine/RHI/RHICommandQueue.h
描述: GPU 命令队列抽象接口,负责提交和执行命令列表,以及 GPU/CPU 同步。
概述
RHICommandQueue 是 RHI(Render Hardware Interface)系统中的核心抽象接口之一,封装了底层图形 API(D3D12/Vulkan/Metal 等)的命令队列功能。
主要职责:
- 命令提交:将准备好的命令列表提交到 GPU 执行
- GPU/CPU 同步:通过栅栏(Fence)机制协调 CPU 和 GPU 的执行顺序
- 队列类型管理:区分直接队列、计算队列和复制队列
使用场景:
- 渲染循环中提交绘制命令
- 资源在 GPU 和 CPU 之间传输时的同步
- 多线程渲染时的命令生成和提交
公共方法
| 方法 | 描述 |
|---|---|
Shutdown |
关闭并释放资源 |
ExecuteCommandLists |
执行命令列表 |
Signal |
向栅栏发送信号 |
Wait |
等待栅栏达到指定值 |
GetCompletedValue |
获取栅栏已完成的值 |
WaitForIdle |
等待队列所有操作完成 |
GetType |
获取队列类型 |
GetTimestampFrequency |
获取时间戳频率 |
GetNativeHandle |
获取原生句柄 |
使用示例
#include "RHICommandQueue.h"
#include "RHIDevice.h"
#include "RHIFence.h"
#include "RHICommandList.h"
void RenderLoop(RHIDevice* device, RHICommandQueue* cmdQueue) {
CommandQueueDesc queueDesc;
queueDesc.queueType = (uint32_t)CommandQueueType::Direct;
RHICommandQueue* commandQueue = device->CreateCommandQueue(queueDesc);
FenceDesc fenceDesc;
RHIFence* fence = device->CreateFence(fenceDesc);
RHICommandList* commandList = device->CreateCommandList();
commandList->Begin();
commandList->DrawInstanced(vertices, vertexCount, 0);
commandList->End();
void* lists[1] = { commandList };
commandQueue->ExecuteCommandLists(1, lists);
commandQueue->Signal(fence, 1);
fence->Wait(1);
commandQueue->WaitForIdle();
commandQueue->Shutdown();
}
相关文档
- RHI 模块 - RHI 模块总览
- RHICommandList - 命令列表
- RHIFence - 同步栅栏