Files
CLI-Anything/renderdoc/agent-harness/RENDERDOC.md
Levi 17e9aae519 feat: add RenderDoc CLI harness for GPU frame capture analysis
Add CLI harness for RenderDoc GPU frame debugger with support for:
- Frame capture loading and draw call browsing
- Pipeline state inspection and shader export
- Texture inspection, pixel picking, and output saving
- Mesh data viewer and resource listing
- Performance counter collection
- Pipeline state diff between draw calls
- REPL mode with rich formatted output
- 59 tests (45 unit + 14 e2e)

Squashed from 4 commits by alvinshi.
2026-03-25 20:31:49 +08:00

3.9 KiB
Raw Permalink Blame History

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