docs: update RHI API docs
This commit is contained in:
@@ -13,6 +13,15 @@ void BeginQuery(ID3D12QueryHeap* queryHeap, QueryType type, uint32_t index);
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12QueryHeap* queryHeap = /* 获取查询堆 */;
|
||||
cmdList.BeginQuery(queryHeap, QueryType::Timestamp, 0);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [EndQuery](end-query.md) - 结束查询
|
||||
- [ResolveQueryData](resolve-query-data.md) - 解析查询数据
|
||||
|
||||
21
docs/api/rhi/d3d12/command-list/clear.md
Normal file
21
docs/api/rhi/d3d12/command-list/clear.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# D3D12CommandList::Clear
|
||||
|
||||
```cpp
|
||||
void Clear(float r, float g, float b, float a, uint32_t buffers) override;
|
||||
```
|
||||
|
||||
清除渲染目标和/或深度模板缓冲区。
|
||||
|
||||
**参数:**
|
||||
- `r` - 清除颜色(红色通道)
|
||||
- `g` - 清除颜色(绿色通道)
|
||||
- `b` - 清除颜色(蓝色通道)
|
||||
- `a` - 清除颜色(Alpha通道)
|
||||
- `buffers` - 要清除的缓冲区标志
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [RHICommandList::Clear](../../command-list/command-list.md) - 基类方法
|
||||
14
docs/api/rhi/d3d12/command-list/close.md
Normal file
14
docs/api/rhi/d3d12/command-list/close.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# D3D12CommandList::Close
|
||||
|
||||
```cpp
|
||||
void Close() override;
|
||||
```
|
||||
|
||||
关闭命令列表,停止录制。
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [RHICommandList::Close](../../command-list/command-list.md) - 基类方法
|
||||
@@ -2,18 +2,33 @@
|
||||
|
||||
**命名空间**: `XCEngine::RHI`
|
||||
|
||||
**描述**: DirectX 12 命令列表的 D3D12 实现,继承自 `RHICommandList`。
|
||||
**继承自**: [`RHICommandList`](../../command-list/command-list.md)
|
||||
|
||||
**头文件**: `XCEngine/RHI/D3D12/D3D12CommandList.h`
|
||||
|
||||
## 概述
|
||||
|
||||
`D3D12CommandList` 是 DirectX 12 命令列表的 RHI 实现,封装了 `ID3D12GraphicsCommandList` 接口。该类负责记录 GPU 命令,包括绘制调用、资源状态转换、渲染目标设置等。
|
||||
|
||||
### 主要功能
|
||||
|
||||
- **命令录制**: 支持图形和计算命令的录制
|
||||
- **资源状态管理**: 维护资源状态映射表,跟踪资源转换
|
||||
- **描述符管理**: 管理 GPU 描述符堆和描述符表
|
||||
- **状态设置**: 设置管线状态、根签名、视口、裁剪矩形等
|
||||
|
||||
## 公共方法
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| [`Shutdown`](../../../threading/task-system/shutdown.md) | 关闭命令列表 |
|
||||
| [`Reset`](../../command-list/reset.md) | 重置命令列表 |
|
||||
| [`Close`](../../command-list/close.md) | 关闭命令列表 |
|
||||
| [`D3D12CommandList`](../../../threading/lambdatask/constructor.md) | 构造函数 |
|
||||
| [`~D3D12CommandList`](../../../threading/readwritelock/destructor.md) | 析构函数 |
|
||||
| [`Initialize`](initialize.md) | 初始化命令列表 |
|
||||
| [`Shutdown`](shutdown.md) | 关闭命令列表 |
|
||||
| [`Reset`](reset.md) | 重置命令列表 |
|
||||
| [`Close`](close.md) | 关闭命令列表 |
|
||||
| [`GetCommandList`](get-command-list.md) | 获取 D3D12 命令列表 |
|
||||
| [`TransitionBarrier`](transition-barrier.md) | 资源状态转换 |
|
||||
| [`TransitionBarrierInternal`](transition-barrier-internal.md) | 内部资源状态转换 |
|
||||
| [`UAVBarrier`](uav-barrier.md) | UAV 屏障 |
|
||||
| [`AliasBarrier`](alias-barrier.md) | 别名屏障 |
|
||||
| [`SetPipelineState`](set-pipeline-state.md) | 设置管线状态 |
|
||||
@@ -24,8 +39,6 @@
|
||||
| [`SetScissorRect`](set-scissor-rect.md) | 设置裁剪矩形 |
|
||||
| [`SetScissorRects`](set-scissor-rects.md) | 设置多个裁剪矩形 |
|
||||
| [`SetRenderTargets`](set-render-targets.md) | 设置渲染目标 |
|
||||
| [`SetRenderTargetsInternal`](set-render-targets-internal.md) | 内部渲染目标设置 |
|
||||
| [`SetRenderTargetsHandle`](set-render-targets-handle.md) | 句柄渲染目标设置 |
|
||||
| [`SetVertexBuffer`](set-vertex-buffer.md) | 设置顶点缓冲 |
|
||||
| [`SetVertexBuffers`](set-vertex-buffers.md) | 设置多个顶点缓冲 |
|
||||
| [`SetIndexBuffer`](set-index-buffer.md) | 设置索引缓冲 |
|
||||
@@ -44,7 +57,7 @@
|
||||
| [`DrawIndexed`](draw-indexed.md) | 索引绘制 |
|
||||
| [`DrawInstancedIndirect`](draw-instanced-indirect.md) | 实例化间接绘制 |
|
||||
| [`DrawIndexedInstancedIndirect`](draw-indexed-instanced-indirect.md) | 索引实例化间接绘制 |
|
||||
| [`Clear`](../../command-list/clear.md) | 清除 |
|
||||
| [`Clear`](clear.md) | 清除 |
|
||||
| [`ClearRenderTarget`](clear-render-target.md) | 清除渲染目标 |
|
||||
| [`ClearDepthStencil`](clear-depth-stencil.md) | 清除深度模板 |
|
||||
| [`CopyResource`](copy-resource.md) | 复制资源 |
|
||||
@@ -59,7 +72,45 @@
|
||||
| [`GetResourceState`](get-resource-state.md) | 获取资源状态 |
|
||||
| [`TrackResource`](track-resource.md) | 跟踪资源 |
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
#include "XCEngine/RHI/D3D12/D3D12CommandList.h"
|
||||
#include "XCEngine/RHI/D3D12/D3D12Device.h"
|
||||
|
||||
using namespace XCEngine::RHI;
|
||||
|
||||
// 创建命令列表
|
||||
D3D12CommandList cmdList;
|
||||
ID3D12Device* device = /* 获取设备 */;
|
||||
|
||||
// 初始化
|
||||
if (!cmdList.Initialize(device, CommandQueueType::Direct)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 重置并开始录制
|
||||
cmdList.Reset();
|
||||
|
||||
// 设置渲染状态
|
||||
cmdList.SetPipelineState(pipelineState);
|
||||
cmdList.SetRootSignature(rootSignature);
|
||||
cmdList.SetPrimitiveTopology(PrimitiveTopology::TriangleList);
|
||||
cmdList.SetViewport(viewport);
|
||||
cmdList.SetRenderTargets(1, renderTargets, depthStencil);
|
||||
|
||||
// 绑定资源
|
||||
cmdList.SetVertexBuffer(0, vertexBuffer, 0, sizeof(Vertex));
|
||||
cmdList.SetIndexBuffer(indexBuffer, 0, Format::R32_UINT);
|
||||
|
||||
// 绘制
|
||||
cmdList.DrawIndexed(indexCount, 1, 0, 0, 0);
|
||||
|
||||
// 关闭命令列表
|
||||
cmdList.Close();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12 后端总览](../../opengl/overview.md)
|
||||
- [D3D12 后端总览](../d3d12.md)
|
||||
- [RHICommandList](../../command-list/command-list.md) - 抽象命令列表接口
|
||||
|
||||
@@ -13,8 +13,18 @@ void CopyBuffer(ID3D12Resource* dst, uint64_t dstOffset, ID3D12Resource* src, ui
|
||||
- `srcOffset` - 源偏移
|
||||
- `size` - 复制大小
|
||||
|
||||
**复杂度:** O(n)
|
||||
**复杂度:** O(n),n 为复制数据量
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12Resource* srcBuffer = /* 源缓冲区 */;
|
||||
ID3D12Resource* dstBuffer = /* 目标缓冲区 */;
|
||||
cmdList.CopyBuffer(dstBuffer, 0, srcBuffer, 0, 1024);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [CopyResource](copy-resource.md) - 复制整个资源
|
||||
- [CopyTexture](copy-texture.md) - 复制纹理数据
|
||||
|
||||
@@ -10,8 +10,18 @@ void CopyResource(void* dst, void* src) override;
|
||||
- `dst` - 目标资源指针
|
||||
- `src` - 源资源指针
|
||||
|
||||
**复杂度:** O(n)
|
||||
**复杂度:** O(n),n 为资源大小
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12Resource* dst = /* 目标资源 */;
|
||||
ID3D12Resource* src = /* 源资源 */;
|
||||
cmdList.CopyResource(dst, src);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [CopyBuffer](copy-buffer.md) - 复制缓冲区数据
|
||||
- [CopyTexture](copy-texture.md) - 复制纹理数据
|
||||
|
||||
@@ -12,8 +12,26 @@ void CopyTexture(ID3D12Resource* dst, const D3D12_TEXTURE_COPY_LOCATION& dstLoca
|
||||
- `src` - 源纹理
|
||||
- `srcLocation` - 源位置
|
||||
|
||||
**复杂度:** O(n)
|
||||
**复杂度:** O(n),n 为复制数据量
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
D3D12_TEXTURE_COPY_LOCATION dstLoc = {};
|
||||
dstLoc.pResource = dstTexture;
|
||||
dstLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
|
||||
dstLoc.SubresourceIndex = 0;
|
||||
|
||||
D3D12_TEXTURE_COPY_LOCATION srcLoc = {};
|
||||
srcLoc.pResource = srcTexture;
|
||||
srcLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
|
||||
srcLoc.SubresourceIndex = 0;
|
||||
|
||||
cmdList.CopyTexture(dst, dstLoc, src, srcLoc);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [CopyResource](copy-resource.md) - 复制整个资源
|
||||
- [CopyBuffer](copy-buffer.md) - 复制缓冲区数据
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
void DispatchIndirect(void* argBuffer, uint64_t alignedByteOffset);
|
||||
```
|
||||
|
||||
间接分发计算命令。
|
||||
间接分发计算命令,使用存储在缓冲区中的参数执行 `Dispatch` 操作。
|
||||
|
||||
**参数:**
|
||||
- `argBuffer` - 参数缓冲区
|
||||
@@ -12,6 +12,14 @@ void DispatchIndirect(void* argBuffer, uint64_t alignedByteOffset);
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12Resource* argBuffer = /* 包含 DispatchIndirect 参数的缓冲区 */;
|
||||
cmdList.DispatchIndirect(argBuffer, 0);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [Dispatch](dispatch.md) - 直接分发计算任务
|
||||
|
||||
@@ -13,6 +13,15 @@ void EndQuery(ID3D12QueryHeap* queryHeap, QueryType type, uint32_t index);
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12QueryHeap* queryHeap = /* 获取查询堆 */;
|
||||
cmdList.EndQuery(queryHeap, QueryType::Timestamp, 0);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [BeginQuery](begin-query.md) - 开始查询
|
||||
- [ResolveQueryData](resolve-query-data.md) - 解析查询数据
|
||||
|
||||
@@ -11,6 +11,13 @@ void ExecuteBundle(ID3D12GraphicsCommandList* bundle);
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12GraphicsCommandList* bundle = /* 获取 Bundle */;
|
||||
cmdList.ExecuteBundle(bundle);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
|
||||
@@ -9,10 +9,22 @@ ResourceStates GetResourceState(ID3D12Resource* resource) const;
|
||||
**参数:**
|
||||
- `resource` - D3D12 资源指针
|
||||
|
||||
**返回:** 资源当前状态
|
||||
**返回值:** 资源当前状态,如果资源未被跟踪则返回 `ResourceStates::Common`
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12Resource* resource = /* 获取资源 */;
|
||||
ResourceStates state = cmdList.GetResourceState(resource);
|
||||
if (state == ResourceStates::RenderTarget) {
|
||||
// 资源当前为渲染目标状态
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [TrackResource](track-resource.md) - 跟踪资源
|
||||
- [TransitionBarrier](transition-barrier.md) - 资源状态转换
|
||||
40
docs/api/rhi/d3d12/command-list/initialize.md
Normal file
40
docs/api/rhi/d3d12/command-list/initialize.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# D3D12CommandList::Initialize
|
||||
|
||||
```cpp
|
||||
bool Initialize(ID3D12Device* device, CommandQueueType type = CommandQueueType::Direct, ID3D12CommandAllocator* allocator = nullptr);
|
||||
```
|
||||
|
||||
初始化 D3D12 命令列表,创建 `ID3D12GraphicsCommandList` 实例。
|
||||
|
||||
**参数:**
|
||||
- `device` - D3D12 设备指针
|
||||
- `type` - 命令队列类型,默认为 `CommandQueueType::Direct`
|
||||
- `allocator` - 命令分配器指针,如果为 `nullptr`,则由方法内部创建
|
||||
|
||||
**返回值:**
|
||||
- `bool` - 初始化成功返回 `true`,失败返回 `false`
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
D3D12CommandList cmdList;
|
||||
ID3D12Device* device = /* 获取设备 */;
|
||||
|
||||
if (!cmdList.Initialize(device)) {
|
||||
// 处理初始化失败
|
||||
return;
|
||||
}
|
||||
|
||||
// 使用命令列表...
|
||||
cmdList.Reset();
|
||||
// ... 录制命令
|
||||
cmdList.Close();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [Shutdown](shutdown.md) - 关闭命令列表
|
||||
- [Close](close.md) - 关闭命令列表
|
||||
14
docs/api/rhi/d3d12/command-list/reset.md
Normal file
14
docs/api/rhi/d3d12/command-list/reset.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# D3D12CommandList::Reset
|
||||
|
||||
```cpp
|
||||
void Reset() override;
|
||||
```
|
||||
|
||||
重置命令列表,准备录制新命令。
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [RHICommandList::Reset](../../command-list/command-list.md) - 基类方法
|
||||
@@ -14,8 +14,18 @@ void ResolveQueryData(ID3D12QueryHeap* queryHeap, QueryType type, uint32_t start
|
||||
- `resultBuffer` - 结果缓冲区
|
||||
- `resultOffset` - 结果偏移
|
||||
|
||||
**复杂度:** O(n)
|
||||
**复杂度:** O(n),n 为查询数量
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12QueryHeap* queryHeap = /* 获取查询堆 */;
|
||||
ID3D12Resource* resultBuffer = /* 结果缓冲区 */;
|
||||
cmdList.ResolveQueryData(queryHeap, QueryType::Timestamp, 0, 1, resultBuffer, 0);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [BeginQuery](begin-query.md) - 开始查询
|
||||
- [EndQuery](end-query.md) - 结束查询
|
||||
|
||||
@@ -13,6 +13,16 @@ void SetDepthBias(float depthBias, float slopeScaledDepthBias, float depthBiasCl
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**注意:** 当前实现为空,深度偏移通过管线状态对象设置。
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
// 深度偏移参数通常在 PSO 中设置
|
||||
// 此方法当前为空实现
|
||||
cmdList.SetDepthBias(0.0f, 0.0f, 0.0f);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
|
||||
14
docs/api/rhi/d3d12/command-list/shutdown.md
Normal file
14
docs/api/rhi/d3d12/command-list/shutdown.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# D3D12CommandList::Shutdown
|
||||
|
||||
```cpp
|
||||
void Shutdown() override;
|
||||
```
|
||||
|
||||
关闭命令列表并释放相关资源。
|
||||
|
||||
**复杂度:** O(n) - 遍历释放所有跟踪的资源
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [RHICommandList::Shutdown](../../command-list/command-list.md) - 基类方法
|
||||
@@ -11,6 +11,15 @@ void TrackResource(ID3D12Resource* resource);
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
ID3D12Resource* resource = /* 获取资源 */;
|
||||
cmdList.TrackResource(resource);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12CommandList 总览](command-list.md) - 返回类总览
|
||||
- [GetResourceState](get-resource-state.md) - 获取资源状态
|
||||
- [TransitionBarrier](transition-barrier.md) - 资源状态转换
|
||||
Reference in New Issue
Block a user