docs: update RHI API docs
This commit is contained in:
@@ -2,23 +2,38 @@
|
||||
|
||||
**命名空间**: `XCEngine::RHI`
|
||||
|
||||
**描述**: DirectX 12 栅栏同步对象的 D3D12 实现,继承自 `RHIFence`。
|
||||
**继承自**: `RHIFence`
|
||||
|
||||
**描述**: DirectX 12 栅栏同步对象,用于 GPU/CPU 同步和跨队列同步。
|
||||
|
||||
## 公共方法
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| [`Initialize`](../../../threading/task-system/initialize.md) | 初始化栅栏 |
|
||||
| [`Shutdown`](../../../threading/task-system/shutdown.md) | 关闭栅栏 |
|
||||
| [`Initialize`](initialize.md) | 初始化栅栏 |
|
||||
| [`Shutdown`](shutdown.md) | 关闭并释放资源 |
|
||||
| [`Signal`](signal.md) | 信号栅栏 |
|
||||
| [`Wait`](../../../threading/task-group/wait.md) | 等待栅栏 |
|
||||
| [`Wait`](wait.md) | 等待栅栏 |
|
||||
| [`GetCompletedValue`](get-completed-value.md) | 获取完成值 |
|
||||
| [`IsSignaled`](is-signaled.md) | 检查是否已信号 |
|
||||
| [`GetEventHandle`](get-event-handle.md) | 获取事件句柄 |
|
||||
| [`GetNativeHandle`](../../buffer/get-native-handle.md) | 获取原生句柄 |
|
||||
| [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 |
|
||||
| [`GetFence`](get-fence.md) | 获取 D3D12 栅栏 |
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
ID3D12Device* device = /* 获取 D3D12 设备 */;
|
||||
D3D12Fence fence;
|
||||
if (!fence.Initialize(device, 0)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
commandQueue->Signal(&fence, 1);
|
||||
fence.Wait(1);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12 后端总览](../../opengl/overview.md)
|
||||
- [RHIFence](../../fence/fence.md) - 抽象栅栏接口
|
||||
- [D3D12 后端总览](../d3d12.md) - D3D12 后端总览
|
||||
- [RHIFence](../../fence/fence.md) - 抽象栅栏接口
|
||||
@@ -28,4 +28,4 @@ WaitForSingleObject(eventHandle, INFINITE);
|
||||
## 相关文档
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::Wait](../../../threading/task-group/wait.md) - 等待栅栏
|
||||
- [D3D12Fence::Wait](wait.md) - 等待栅栏
|
||||
|
||||
@@ -27,4 +27,4 @@ ID3D12Fence* fence = d3d12Fence->GetFence();
|
||||
## 相关文档
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::GetNativeHandle](../../buffer/get-native-handle.md) - 获取原生句柄
|
||||
- [D3D12Fence::GetNativeHandle](get-native-handle.md) - 获取原生句柄
|
||||
|
||||
30
docs/api/rhi/d3d12/fence/get-native-handle.md
Normal file
30
docs/api/rhi/d3d12/fence/get-native-handle.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# D3D12Fence::GetNativeHandle
|
||||
|
||||
## 函数签名
|
||||
|
||||
```cpp
|
||||
void* GetNativeHandle() override
|
||||
```
|
||||
|
||||
## 中文描述
|
||||
|
||||
获取底层 D3D12 栅栏指针。
|
||||
|
||||
## 返回值
|
||||
|
||||
`void*` - 底层 `ID3D12Fence*` 指针
|
||||
|
||||
## 复杂度
|
||||
|
||||
O(1)
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
ID3D12Fence* nativeFence = static_cast<ID3D12Fence*>(d3d12Fence->GetNativeHandle());
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::GetFence](get-fence.md) - 获取 D3D12 栅栏接口
|
||||
75
docs/api/rhi/d3d12/fence/index.md
Normal file
75
docs/api/rhi/d3d12/fence/index.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# D3D12Fence
|
||||
|
||||
## 命名空间
|
||||
|
||||
`XCEngine::RHI`
|
||||
|
||||
## 类型
|
||||
|
||||
类 (Class)
|
||||
|
||||
## 描述
|
||||
|
||||
D3D12Fence 是 DirectX 12 栅栏同步原语的实现类,继承自 RHIFence。该类封装了 ID3D12Fence 对象和 Win32 事件句柄,提供 GPU 与 CPU 之间的同步机制。
|
||||
|
||||
## 概述
|
||||
|
||||
D3D12Fence 通过 DirectX 12 的栅栏机制实现 GPU 命令队列的同步。每个栅栏关联一个 64 位递增数值,当 GPU 到达指定栅栏点时会更新该值,CPU 端可以等待栅栏达到目标值后继续执行。
|
||||
|
||||
## 公共方法表格
|
||||
|
||||
| 方法 | 签名 | 描述 |
|
||||
|------|------|------|
|
||||
| Initialize | `bool Initialize(ID3D12Device* device, uint64_t initialValue = 0)` | 初始化 D3D12Fence 对象 |
|
||||
| Shutdown | `void Shutdown() override` | 释放栅栏相关资源 |
|
||||
| Signal | `void Signal() override` | 使用默认值 1 触发栅栏 |
|
||||
| Signal | `void Signal(uint64_t value) override` | 使用指定值触发栅栏 |
|
||||
| Wait | `void Wait(uint64_t value) override` | 等待栅栏达到指定值 |
|
||||
| GetCompletedValue | `uint64_t GetCompletedValue() const override` | 获取栅栏当前完成值 |
|
||||
| IsSignaled | `bool IsSignaled() const override` | 检查栅栏是否已触发 |
|
||||
| GetEventHandle | `void* GetEventHandle()` | 获取 Win32 事件句柄 |
|
||||
| GetNativeHandle | `void* GetNativeHandle() override` | 获取底层 D3D12Fence 指针 |
|
||||
| GetFence | `ID3D12Fence* GetFence() const` | 获取 ID3D12Fence 接口 |
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
#include "XCEngine/RHI/D3D12/D3D12Fence.h"
|
||||
#include <d3d12.h>
|
||||
|
||||
// 创建设备后初始化栅栏
|
||||
ID3D12Device* device = ...;
|
||||
D3D12Fence fence;
|
||||
if (!fence.Initialize(device)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 在 GPU 命令完成后触发栅栏
|
||||
fence.Signal(1);
|
||||
|
||||
// 在 CPU 端等待栅栏
|
||||
fence.Wait(1);
|
||||
|
||||
// 检查栅栏状态
|
||||
if (fence.IsSignaled()) {
|
||||
// 栅栏已触发,可以继续执行
|
||||
}
|
||||
|
||||
// 获取底层 D3D12Fence 进行高级操作
|
||||
ID3D12Fence* nativeFence = fence.GetFence();
|
||||
|
||||
// 销毁前关闭
|
||||
fence.Shutdown();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Initialize](methods/initialize.md)
|
||||
- [Shutdown](methods/shutdown.md)
|
||||
- [Signal](methods/signal.md)
|
||||
- [Wait](methods/wait.md)
|
||||
- [GetCompletedValue](methods/get-completed-value.md)
|
||||
- [IsSignaled](methods/is-signaled.md)
|
||||
- [GetEventHandle](methods/get-event-handle.md)
|
||||
- [GetNativeHandle](methods/get-native-handle.md)
|
||||
- [GetFence](methods/get-fence.md)
|
||||
43
docs/api/rhi/d3d12/fence/initialize.md
Normal file
43
docs/api/rhi/d3d12/fence/initialize.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# D3D12Fence::Initialize
|
||||
|
||||
## 函数签名
|
||||
|
||||
```cpp
|
||||
bool Initialize(ID3D12Device* device, uint64_t initialValue = 0)
|
||||
```
|
||||
|
||||
## 中文描述
|
||||
|
||||
创建 D3D12 栅栏对象并初始化同步事件。
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| `device` | `ID3D12Device*` | D3D12 设备指针 |
|
||||
| `initialValue` | `uint64_t` | 栅栏初始值,默认为 0 |
|
||||
|
||||
## 返回值
|
||||
|
||||
`bool` - 初始化成功返回 `true`,失败返回 `false`
|
||||
|
||||
## 复杂度
|
||||
|
||||
O(1)
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
ID3D12Device* device = /* 获取 D3D12 设备 */;
|
||||
D3D12Fence fence;
|
||||
if (!fence.Initialize(device, 0)) {
|
||||
// 初始化失败
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::Shutdown](shutdown.md) - 关闭栅栏
|
||||
- [D3D12Fence::Signal](signal.md) - 信号栅栏
|
||||
@@ -30,4 +30,4 @@ if (d3d12Fence->IsSignaled()) {
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::GetCompletedValue](get-completed-value.md) - 获取完成值
|
||||
- [D3D12Fence::Wait](../../../threading/task-group/wait.md) - 等待栅栏
|
||||
- [D3D12Fence::Wait](wait.md) - 等待栅栏
|
||||
|
||||
37
docs/api/rhi/d3d12/fence/shutdown.md
Normal file
37
docs/api/rhi/d3d12/fence/shutdown.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# D3D12Fence::Shutdown
|
||||
|
||||
## 函数签名
|
||||
|
||||
```cpp
|
||||
void Shutdown() override
|
||||
```
|
||||
|
||||
## 中文描述
|
||||
|
||||
关闭栅栏并释放关联的 Win32 事件句柄。
|
||||
|
||||
## 参数
|
||||
|
||||
无
|
||||
|
||||
## 返回值
|
||||
|
||||
无
|
||||
|
||||
## 复杂度
|
||||
|
||||
O(1)
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
D3D12Fence fence;
|
||||
fence.Initialize(device, 0);
|
||||
// 使用栅栏...
|
||||
fence.Shutdown();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::Initialize](initialize.md) - 初始化栅栏
|
||||
@@ -42,5 +42,5 @@ d3d12Fence->Signal(1);
|
||||
## 相关文档
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::Wait](../../../threading/task-group/wait.md) - 等待栅栏
|
||||
- [D3D12Fence::Wait](wait.md) - 等待栅栏
|
||||
- [D3D12Fence::GetCompletedValue](get-completed-value.md) - 获取完成值
|
||||
|
||||
37
docs/api/rhi/d3d12/fence/wait.md
Normal file
37
docs/api/rhi/d3d12/fence/wait.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# D3D12Fence::Wait
|
||||
|
||||
## 函数签名
|
||||
|
||||
```cpp
|
||||
void Wait(uint64_t value) override
|
||||
```
|
||||
|
||||
## 中文描述
|
||||
|
||||
阻塞等待直到栅栏值达到指定值。利用 Win32 事件进行高效等待。
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| `value` | `uint64_t` | 要等待的栅栏值 |
|
||||
|
||||
## 返回值
|
||||
|
||||
无
|
||||
|
||||
## 复杂度
|
||||
|
||||
O(1) 到 O(n),n 为等待时间
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
fence.Wait(1); // 等待栅栏值达到 1
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [D3D12Fence](fence.md) - 类总览
|
||||
- [D3D12Fence::Signal](signal.md) - 信号栅栏
|
||||
- [D3D12Fence::GetCompletedValue](get-completed-value.md) - 获取完成值
|
||||
Reference in New Issue
Block a user