82 lines
3.9 KiB
Markdown
82 lines
3.9 KiB
Markdown
# RENDERDOC.md – Software-Specific SOP
|
||
|
||
## About RenderDoc
|
||
|
||
RenderDoc is a free, open-source GPU frame capture and analysis tool for
|
||
Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES. It captures a single frame
|
||
of GPU commands and allows detailed inspection of every draw call, resource,
|
||
shader, and pipeline state.
|
||
|
||
## Key Concepts
|
||
|
||
### Capture File (.rdc)
|
||
A binary file containing all GPU state and commands for a single frame.
|
||
Contains embedded sections (textures, shaders, structured data, thumbnails).
|
||
|
||
### Actions
|
||
GPU operations recorded in the capture. Hierarchical tree structure:
|
||
- **PushMarker / PopMarker**: Debug groups (like `RenderPass: ForwardOpaque`)
|
||
- **Drawcall**: Actual draw calls with triangle/vertex counts
|
||
- **Clear**: Clear render target/depth
|
||
- **Dispatch**: Compute shader dispatch
|
||
- **Copy/Resolve**: Resource copy operations
|
||
- **Present**: Frame present
|
||
|
||
### Resources
|
||
GPU resources tracked by unique `ResourceId`:
|
||
- **Textures**: 2D, 3D, cube, array textures with mips
|
||
- **Buffers**: Vertex, index, constant, structured buffers
|
||
- **Shaders**: Compiled shader programs
|
||
|
||
### Pipeline State
|
||
At any event, the complete GPU pipeline is inspectable:
|
||
- Bound shaders (VS, HS, DS, GS, PS, CS)
|
||
- Vertex inputs (attribute layout)
|
||
- Render targets and depth target
|
||
- Viewports and scissors
|
||
- Blend, depth/stencil, rasterizer state
|
||
- Shader resources (textures, buffers, samplers)
|
||
- Constant buffer contents
|
||
|
||
### Replay
|
||
Captures can be replayed on the local GPU. The ReplayController allows:
|
||
- Setting the current event (seeking to any draw call)
|
||
- Reading back textures, buffers, mesh data
|
||
- Picking pixels
|
||
- Fetching GPU counters
|
||
- Disassembling shaders
|
||
|
||
## CLI Coverage Map
|
||
|
||
| RenderDoc Feature | CLI Command | Status |
|
||
|-----------------------------|---------------------------|-----------|
|
||
| Open/close capture | `capture info` | ✅ Done |
|
||
| Capture metadata | `capture info` | ✅ Done |
|
||
| List sections | `capture info` | ✅ Done |
|
||
| Extract thumbnail | `capture thumb` | ✅ Done |
|
||
| Convert capture | `capture convert` | ✅ Done |
|
||
| List all actions | `actions list` | ✅ Done |
|
||
| Action summary | `actions summary` | ✅ Done |
|
||
| Find actions by name | `actions find` | ✅ Done |
|
||
| Get single action | `actions get` | ✅ Done |
|
||
| Filter draw calls only | `actions list --draws-only` | ✅ Done |
|
||
| List textures | `textures list` | ✅ Done |
|
||
| Get texture details | `textures get` | ✅ Done |
|
||
| Save texture to file | `textures save` | ✅ Done |
|
||
| Save render target outputs | `textures save-outputs` | ✅ Done |
|
||
| Pick pixel value | `textures pick` | ✅ Done |
|
||
| Pipeline state | `pipeline state` | ✅ Done |
|
||
| Shader disassembly | `pipeline shader-export` | ✅ Done |
|
||
| Constant buffer contents | `pipeline cbuffer` | ✅ Done |
|
||
| Pipeline diff | `pipeline diff` | ✅ Done |
|
||
| List resources | `resources list` | ✅ Done |
|
||
| List buffers | `resources buffers` | ✅ Done |
|
||
| Read buffer data | `resources read-buffer` | ✅ Done |
|
||
| Vertex inputs | `mesh inputs` | ✅ Done |
|
||
| Post-VS outputs | `mesh outputs` | ✅ Done |
|
||
| GPU counters list | `counters list` | ✅ Done |
|
||
| Fetch counter results | `counters fetch` | ✅ Done |
|
||
| Remote capture | — | ❌ Future |
|
||
| Shader debugging | — | ❌ Future |
|
||
| Resource diff | — | ❌ Future |
|