RenderDoc for VS CodeInspect, analyze, and debug GPU captures — without leaving your editor. A native-backed RenderDoc frontend, reimagined for the modern editor workflow. OverviewRenderDoc for VS Code brings the full power of the RenderDoc graphics debugger into Visual Studio Code. Open any No context switching. No external viewers. Just your capture, your editor, and your agent. Highlights
Quick Start
Usage Guide1 · Installing the ExtensionOption A — from VSIX (recommended):
Or: Option B — from source: see Building from Source. 2 · Installing RenderDoc (runtime dependency)The extension loads RenderDoc's replay library ( renderdoc.org/builds — any stable version v1.30 or newer.
For non-default paths, run 3 · Opening a Capture
The activity bar shows three sidebar views: Capture Info, Draw Calls, and Resources. 4 · Inspector WorkflowClick any draw call in the Draw Calls tree to open the tabbed Inspector panel.
Navigation:
5 · GPU Timing Profiling
6 · Mali Offline Compiler Integration
7 · Copilot Chat (
|
| Tool | Description |
|---|---|
#selectionContext |
Current Inspector focus: EID, draw call, pipeline state, Mali analysis |
#captureInfo |
Capture metadata: API, driver, version, sections |
#drawCalls |
Full draw call tree with GPU durationUs timings and pre-sorted expensiveDraws |
#resources |
All GPU resources: textures, buffers, shaders |
#resourceDetail |
Detail for a specific resource by ID |
#eventDetails |
Full event info including pipeline state |
#pipelineState |
Complete pipeline state at a given EID (native bridge required) |
#shaderSource |
GLSL/HLSL source for all bound stages at an EID |
#textureInfo |
Texture-specific metadata |
#analyzeFrame |
Comprehensive frame summary with flagged issues |
8 · Exporting Resources
- Texture → PNG: right-click a texture in Resources → Export Texture (ASTC, HDR, sRGB handled automatically)
- Shader source: Inspector → Shaders tab → Copy button, or Open in Editor for a full VS Code buffer
9 · Troubleshooting
| Symptom | Fix |
|---|---|
| "Native bridge not available" / empty shaders | Install RenderDoc and set renderdoc.installPath |
| Inspector stays blank after clicking a draw | Developer: Reload Window — auto-recreates the panel |
| Textures tab shows nothing | The draw has no sampled inputs/RTs, or pipeline is still loading |
| Mali Offline Compiler button missing | Set renderdoc.maliOfflineCompilerPath to the path of malioc.exe |
@renderdoc not available in Chat |
Ensure GitHub Copilot Chat is signed in and enabled |
GPU timings show N/A |
Click Fetch GPU Timings in the Draw Calls sidebar first |
Architecture
┌──────────────────────────────────────────────────────────────────────┐
│ VS Code Extension Host │
│ ┌──────────────┐ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Sidebar │ │ Inspector │ │ Copilot Participant │ │
│ │ Views │ │ Webview │ │ + LM Tools (10×) │ │
│ └──────┬───────┘ └────────┬─────────┘ └──────────┬───────────┘ │
│ └────────────────────┼────────────────────────┘ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ RenderDocBridge │ ← TypeScript JSON-RPC │
│ └──────────┬──────────┘ │
└──────────────────────────────┼───────────────────────────────────────┘
│ stdin / stdout
▼
┌───────────────────────┐
│ renderdoc_bridge.exe │ ← C++ native bridge
│ (links to RenderDoc) │
└───────────┬───────────┘
│ IReplayController
▼
┌───────────────────────┐
│ renderdoc_replay.dll │
└───────────────────────┘
The native bridge maintains a long-lived replay session, caches pipeline state per EID, and streams results as JSON — shader disassembly, descriptor access, GPU timings, and texture readback all execute at native speed.
Project Layout
renderdoc-for-vscode/
├── src/
│ ├── extension.ts # Activation, command registration
│ ├── renderdocBridge.ts # Native bridge client (JSON-RPC over stdio)
│ ├── rdcParser.ts # Pure-TS .rdc header/section parser
│ ├── views/ # Sidebar tree providers + Inspector webview
│ │ ├── inspectorPanel.ts # Main Inspector panel (IPC, Mali analysis)
│ │ └── inspector/html.ts # Inspector HTML template generation
│ └── copilot/
│ ├── chatParticipant.ts # @renderdoc Copilot Chat handler
│ └── tools.ts # Language model tool implementations
├── native/
│ ├── include/ # RenderDoc public headers (vendored)
│ ├── 3rdparty/ # ASTC decoder, stb_image_write
│ ├── src/ # main.cpp, dll_loader.cpp, json.hpp
│ └── CMakeLists.txt
├── media/inspector/ # Webview frontend (JS + CSS)
├── package.json
├── tsconfig.json
└── LICENSE
Building from Source
Prerequisites
- Node.js 18+ and npm
- CMake 3.20+ with a C++17 compiler (MSVC 2019+ / Clang 12+ / GCC 10+)
- RenderDoc installed locally (replay DLL required at runtime)
Build
# TypeScript extension
npm install
npm run compile
# C++ native bridge (Windows / MSVC)
cd native
cmake -B build -A x64
cmake --build build --config Release
The compiled renderdoc_bridge.exe is discovered automatically by the extension at runtime.
Run in Development
Press F5 in VS Code — launches an Extension Development Host with the extension loaded and the debugger attached.
Configuration
| Setting | Default | Description |
|---|---|---|
renderdoc.installPath |
(auto-detect) | RenderDoc installation directory |
renderdoc.nativeBridge.path |
(auto-detect) | Path to renderdoc_bridge.exe |
renderdoc.maliOfflineCompilerPath |
(empty) | Path to malioc.exe for shader analysis |
Run RenderDoc: Configure RenderDoc Path for a guided setup wizard.
Supported APIs
| API | Capture Load | Pipeline State | Shader Source | Texture Preview | GPU Timings |
|---|---|---|---|---|---|
| Vulkan | ✅ | ✅ | ✅ | ✅ | ✅ |
| D3D12 | ✅ | ✅ | ✅ | ✅ | ✅ |
| D3D11 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenGL | ✅ | ✅ | ✅ | ✅ | ✅ |
| OpenGL ES | ✅ | ✅ | ✅ | ✅ | ✅ |
Contributing
Pull requests are welcome. For significant changes, open an issue first to discuss the design.
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Write conventional commit messages
- Open a PR targeting
main
License
Released under the MIT License.
RenderDoc is © Baldur Karlsson and contributors, licensed under the MIT License.
Built for graphics engineers who live in VS Code.