rdc-cli 0.2.0__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/LICENSE +1 -1
- rdc_cli-0.3.0/PKG-INFO +133 -0
- rdc_cli-0.3.0/README.md +104 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/pyproject.toml +17 -4
- rdc_cli-0.3.0/src/rdc/_skills/SKILL.md +158 -0
- rdc_cli-0.3.0/src/rdc/_skills/references/commands-quick-ref.md +891 -0
- rdc_cli-0.3.0/src/rdc/_transport.py +35 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/cli.py +67 -0
- rdc_cli-0.3.0/src/rdc/commands/_helpers.py +74 -0
- rdc_cli-0.3.0/src/rdc/commands/assert_ci.py +338 -0
- rdc_cli-0.3.0/src/rdc/commands/assert_image.py +66 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/counters.py +27 -7
- rdc_cli-0.3.0/src/rdc/commands/debug.py +206 -0
- rdc_cli-0.3.0/src/rdc/commands/diff.py +399 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/doctor.py +5 -6
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/export.py +50 -2
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/info.py +47 -34
- rdc_cli-0.3.0/src/rdc/commands/install_skill.py +113 -0
- rdc_cli-0.3.0/src/rdc/commands/mesh.py +119 -0
- rdc_cli-0.3.0/src/rdc/commands/pick_pixel.py +29 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/pipeline.py +98 -55
- rdc_cli-0.3.0/src/rdc/commands/pixel.py +61 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/resources.py +58 -50
- rdc_cli-0.3.0/src/rdc/commands/script.py +77 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/session.py +9 -1
- rdc_cli-0.3.0/src/rdc/commands/shader_edit.py +95 -0
- rdc_cli-0.3.0/src/rdc/commands/snapshot.py +79 -0
- rdc_cli-0.3.0/src/rdc/commands/tex_stats.py +52 -0
- rdc_cli-0.3.0/src/rdc/commands/unix_helpers.py +60 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/usage.py +25 -7
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/vfs.py +84 -9
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/daemon_client.py +3 -14
- rdc_cli-0.3.0/src/rdc/daemon_server.py +317 -0
- rdc_cli-0.3.0/src/rdc/diff/__init__.py +24 -0
- rdc_cli-0.3.0/src/rdc/diff/alignment.py +186 -0
- rdc_cli-0.3.0/src/rdc/diff/draws.py +253 -0
- rdc_cli-0.3.0/src/rdc/diff/framebuffer.py +97 -0
- rdc_cli-0.3.0/src/rdc/diff/pipeline.py +312 -0
- rdc_cli-0.3.0/src/rdc/diff/resources.py +218 -0
- rdc_cli-0.3.0/src/rdc/diff/stats.py +285 -0
- rdc_cli-0.3.0/src/rdc/diff/summary.py +99 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/discover.py +2 -2
- rdc_cli-0.3.0/src/rdc/formatters/options.py +22 -0
- rdc_cli-0.3.0/src/rdc/handlers/__init__.py +15 -0
- rdc_cli-0.3.0/src/rdc/handlers/_helpers.py +283 -0
- rdc_cli-0.3.0/src/rdc/handlers/_types.py +16 -0
- rdc_cli-0.3.0/src/rdc/handlers/buffer.py +381 -0
- rdc_cli-0.3.0/src/rdc/handlers/core.py +120 -0
- rdc_cli-0.3.0/src/rdc/handlers/debug.py +273 -0
- rdc_cli-0.3.0/src/rdc/handlers/descriptor.py +212 -0
- rdc_cli-0.3.0/src/rdc/handlers/pipe_state.py +357 -0
- rdc_cli-0.3.0/src/rdc/handlers/pixel.py +194 -0
- rdc_cli-0.3.0/src/rdc/handlers/query.py +569 -0
- rdc_cli-0.3.0/src/rdc/handlers/script.py +92 -0
- rdc_cli-0.3.0/src/rdc/handlers/shader.py +332 -0
- rdc_cli-0.3.0/src/rdc/handlers/shader_edit.py +162 -0
- rdc_cli-0.3.0/src/rdc/handlers/texture.py +328 -0
- rdc_cli-0.3.0/src/rdc/handlers/vfs.py +352 -0
- rdc_cli-0.3.0/src/rdc/image_compare.py +74 -0
- rdc_cli-0.3.0/src/rdc/services/diff_service.py +269 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/services/query_service.py +181 -49
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/services/session_service.py +29 -8
- rdc_cli-0.3.0/src/rdc/session_state.py +112 -0
- rdc_cli-0.3.0/src/rdc/vfs/__init__.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/vfs/formatter.py +20 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/vfs/router.py +18 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/vfs/tree_cache.py +64 -4
- rdc_cli-0.3.0/src/rdc_cli.egg-info/PKG-INFO +133 -0
- rdc_cli-0.3.0/src/rdc_cli.egg-info/SOURCES.txt +83 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/requires.txt +2 -7
- rdc_cli-0.2.0/PKG-INFO +0 -130
- rdc_cli-0.2.0/README.md +0 -106
- rdc_cli-0.2.0/src/rdc/commands/unix_helpers.py +0 -79
- rdc_cli-0.2.0/src/rdc/daemon_server.py +0 -2079
- rdc_cli-0.2.0/src/rdc/session_state.py +0 -86
- rdc_cli-0.2.0/src/rdc_cli.egg-info/PKG-INFO +0 -130
- rdc_cli-0.2.0/src/rdc_cli.egg-info/SOURCES.txt +0 -40
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/setup.cfg +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/__init__.py +0 -0
- {rdc_cli-0.2.0/src/rdc/vfs → rdc_cli-0.3.0/src/rdc/_skills}/__init__.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/adapter.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/capture.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/completion.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/events.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/search.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/formatters/json_fmt.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/formatters/tsv.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/protocol.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/services/__init__.py +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/entry_points.txt +0 -0
- {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/top_level.txt +0 -0
rdc_cli-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rdc-cli
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Unix-friendly CLI for RenderDoc .rdc captures
|
|
5
|
+
Author: Jim
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Topic :: Multimedia :: Graphics
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Requires-Dist: click>=8.1
|
|
19
|
+
Requires-Dist: Pillow>=10.0
|
|
20
|
+
Requires-Dist: numpy>=1.24
|
|
21
|
+
Provides-Extra: rich
|
|
22
|
+
Requires-Dist: rich>=13.0; extra == "rich"
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
25
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
26
|
+
Requires-Dist: mypy>=1.10; extra == "dev"
|
|
27
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
_____ _____ _____
|
|
32
|
+
| __ \| __ \ / ____|
|
|
33
|
+
| |__) | | | | |
|
|
34
|
+
| _ /| | | | |
|
|
35
|
+
| | \ \| |__| | |____
|
|
36
|
+
|_| \_\_____/ \_____| cli
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
[](https://pypi.org/project/rdc-cli/)
|
|
40
|
+
[](https://pypi.org/project/rdc-cli/)
|
|
41
|
+
[](LICENSE)
|
|
42
|
+
[](https://bananasjim.github.io/rdc-cli/)
|
|
43
|
+
[](https://bananasjim.github.io/rdc-cli/)
|
|
44
|
+
[](https://bananasjim.github.io/rdc-cli/)
|
|
45
|
+
|
|
46
|
+
Pipe-friendly TSV output, JSON mode, 51 commands, daemon-backed session for interactive exploration of [RenderDoc](https://renderdoc.org/) `.rdc` captures.
|
|
47
|
+
|
|
48
|
+
**[Full documentation →](https://bananasjim.github.io/rdc-cli/)**
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
rdc open capture.rdc # start session
|
|
52
|
+
rdc draws # list draw calls (TSV)
|
|
53
|
+
rdc pipeline 142 # pipeline state at EID 142
|
|
54
|
+
rdc shader 142 ps # pixel shader disassembly
|
|
55
|
+
rdc texture 5 -o out.png # export texture
|
|
56
|
+
rdc debug 142 ps 400 300 # debug pixel shader at (400,300)
|
|
57
|
+
rdc assert-pixel 142 400 300 \
|
|
58
|
+
--expect 0.5,0.0,0.0,1.0 # CI pixel assertion
|
|
59
|
+
rdc draws --json | jq '...' # machine-readable output
|
|
60
|
+
rdc close # end session
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Install
|
|
64
|
+
|
|
65
|
+
**PyPI** (recommended)
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pipx install rdc-cli
|
|
69
|
+
# build renderdoc Python module (one-time, ~3 min, needs cmake/ninja/python3)
|
|
70
|
+
curl -fsSL https://raw.githubusercontent.com/BANANASJIM/rdc-cli/master/scripts/build-renderdoc.sh | bash
|
|
71
|
+
rdc doctor # verify installation
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**AUR** (Arch Linux — builds renderdoc Python module automatically)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
yay -S rdc-cli-git
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**From source**
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
git clone https://github.com/BANANASJIM/rdc-cli.git
|
|
84
|
+
cd rdc-cli
|
|
85
|
+
pixi install && pixi run sync
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Commands
|
|
89
|
+
|
|
90
|
+
Run `rdc --help` for the full command list, or `rdc <command> --help` for details.
|
|
91
|
+
|
|
92
|
+
| Category | Commands |
|
|
93
|
+
|----------|----------|
|
|
94
|
+
| Session | `open`, `close`, `status`, `goto` |
|
|
95
|
+
| Inspection | `info`, `stats`, `events`, `draws`, `event`, `draw`, `log` |
|
|
96
|
+
| GPU state | `pipeline`, `bindings`, `shader`, `shaders`, `shader-map` |
|
|
97
|
+
| Debug | `debug`, `pixel`, `pick-pixel`, `tex-stats` |
|
|
98
|
+
| Shader Edit | `shader-build`, `shader-replace`, `shader-restore`, `shader-restore-all`, `shader-encodings` |
|
|
99
|
+
| Resources | `resources`, `resource`, `passes`, `pass`, `usage` |
|
|
100
|
+
| Export | `texture`, `rt`, `buffer`, `mesh`, `snapshot` |
|
|
101
|
+
| Search | `search`, `counters` |
|
|
102
|
+
| Assertions | `assert-pixel`, `assert-state`, `assert-image`, `assert-count`, `assert-clean` |
|
|
103
|
+
| VFS | `ls`, `cat`, `tree` |
|
|
104
|
+
| Utility | `doctor`, `completion`, `capture`, `count`, `script`, `diff` |
|
|
105
|
+
|
|
106
|
+
All commands support `--json` for machine-readable output.
|
|
107
|
+
|
|
108
|
+
### Shell completions
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
rdc completion bash > ~/.local/share/bash-completion/completions/rdc
|
|
112
|
+
rdc completion zsh > ~/.zfunc/_rdc
|
|
113
|
+
rdc completion fish > ~/.config/fish/completions/rdc.fish
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Development
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pixi run sync # install deps + activate git hooks
|
|
120
|
+
pixi run check # lint + typecheck + test (1729 tests, 95.51% coverage)
|
|
121
|
+
pixi run verify # full packaging verification (19 checks)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
GPU integration tests require a real renderdoc module:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
export RENDERDOC_PYTHON_PATH=/path/to/renderdoc/build/lib
|
|
128
|
+
pixi run test-gpu
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
[MIT](LICENSE)
|
rdc_cli-0.3.0/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
```
|
|
2
|
+
_____ _____ _____
|
|
3
|
+
| __ \| __ \ / ____|
|
|
4
|
+
| |__) | | | | |
|
|
5
|
+
| _ /| | | | |
|
|
6
|
+
| | \ \| |__| | |____
|
|
7
|
+
|_| \_\_____/ \_____| cli
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
[](https://pypi.org/project/rdc-cli/)
|
|
11
|
+
[](https://pypi.org/project/rdc-cli/)
|
|
12
|
+
[](LICENSE)
|
|
13
|
+
[](https://bananasjim.github.io/rdc-cli/)
|
|
14
|
+
[](https://bananasjim.github.io/rdc-cli/)
|
|
15
|
+
[](https://bananasjim.github.io/rdc-cli/)
|
|
16
|
+
|
|
17
|
+
Pipe-friendly TSV output, JSON mode, 51 commands, daemon-backed session for interactive exploration of [RenderDoc](https://renderdoc.org/) `.rdc` captures.
|
|
18
|
+
|
|
19
|
+
**[Full documentation →](https://bananasjim.github.io/rdc-cli/)**
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
rdc open capture.rdc # start session
|
|
23
|
+
rdc draws # list draw calls (TSV)
|
|
24
|
+
rdc pipeline 142 # pipeline state at EID 142
|
|
25
|
+
rdc shader 142 ps # pixel shader disassembly
|
|
26
|
+
rdc texture 5 -o out.png # export texture
|
|
27
|
+
rdc debug 142 ps 400 300 # debug pixel shader at (400,300)
|
|
28
|
+
rdc assert-pixel 142 400 300 \
|
|
29
|
+
--expect 0.5,0.0,0.0,1.0 # CI pixel assertion
|
|
30
|
+
rdc draws --json | jq '...' # machine-readable output
|
|
31
|
+
rdc close # end session
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
**PyPI** (recommended)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pipx install rdc-cli
|
|
40
|
+
# build renderdoc Python module (one-time, ~3 min, needs cmake/ninja/python3)
|
|
41
|
+
curl -fsSL https://raw.githubusercontent.com/BANANASJIM/rdc-cli/master/scripts/build-renderdoc.sh | bash
|
|
42
|
+
rdc doctor # verify installation
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**AUR** (Arch Linux — builds renderdoc Python module automatically)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
yay -S rdc-cli-git
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**From source**
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
git clone https://github.com/BANANASJIM/rdc-cli.git
|
|
55
|
+
cd rdc-cli
|
|
56
|
+
pixi install && pixi run sync
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Commands
|
|
60
|
+
|
|
61
|
+
Run `rdc --help` for the full command list, or `rdc <command> --help` for details.
|
|
62
|
+
|
|
63
|
+
| Category | Commands |
|
|
64
|
+
|----------|----------|
|
|
65
|
+
| Session | `open`, `close`, `status`, `goto` |
|
|
66
|
+
| Inspection | `info`, `stats`, `events`, `draws`, `event`, `draw`, `log` |
|
|
67
|
+
| GPU state | `pipeline`, `bindings`, `shader`, `shaders`, `shader-map` |
|
|
68
|
+
| Debug | `debug`, `pixel`, `pick-pixel`, `tex-stats` |
|
|
69
|
+
| Shader Edit | `shader-build`, `shader-replace`, `shader-restore`, `shader-restore-all`, `shader-encodings` |
|
|
70
|
+
| Resources | `resources`, `resource`, `passes`, `pass`, `usage` |
|
|
71
|
+
| Export | `texture`, `rt`, `buffer`, `mesh`, `snapshot` |
|
|
72
|
+
| Search | `search`, `counters` |
|
|
73
|
+
| Assertions | `assert-pixel`, `assert-state`, `assert-image`, `assert-count`, `assert-clean` |
|
|
74
|
+
| VFS | `ls`, `cat`, `tree` |
|
|
75
|
+
| Utility | `doctor`, `completion`, `capture`, `count`, `script`, `diff` |
|
|
76
|
+
|
|
77
|
+
All commands support `--json` for machine-readable output.
|
|
78
|
+
|
|
79
|
+
### Shell completions
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
rdc completion bash > ~/.local/share/bash-completion/completions/rdc
|
|
83
|
+
rdc completion zsh > ~/.zfunc/_rdc
|
|
84
|
+
rdc completion fish > ~/.config/fish/completions/rdc.fish
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Development
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pixi run sync # install deps + activate git hooks
|
|
91
|
+
pixi run check # lint + typecheck + test (1729 tests, 95.51% coverage)
|
|
92
|
+
pixi run verify # full packaging verification (19 checks)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
GPU integration tests require a real renderdoc module:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
export RENDERDOC_PYTHON_PATH=/path/to/renderdoc/build/lib
|
|
99
|
+
pixi run test-gpu
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## License
|
|
103
|
+
|
|
104
|
+
[MIT](LICENSE)
|
|
@@ -4,20 +4,30 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rdc-cli"
|
|
7
|
-
version = "0.
|
|
8
|
-
description = "Unix-friendly CLI for RenderDoc captures"
|
|
7
|
+
version = "0.3.0"
|
|
8
|
+
description = "Unix-friendly CLI for RenderDoc .rdc captures"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
11
|
license = "MIT"
|
|
12
12
|
authors = [{name = "Jim"}]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Programming Language :: Python :: 3",
|
|
15
|
+
"Programming Language :: Python :: 3.10",
|
|
16
|
+
"Programming Language :: Python :: 3.11",
|
|
17
|
+
"Programming Language :: Python :: 3.12",
|
|
18
|
+
"Programming Language :: Python :: 3.13",
|
|
19
|
+
"Programming Language :: Python :: 3.14",
|
|
20
|
+
"Environment :: Console",
|
|
21
|
+
"Topic :: Multimedia :: Graphics",
|
|
22
|
+
]
|
|
13
23
|
dependencies = [
|
|
14
24
|
"click>=8.1",
|
|
25
|
+
"Pillow>=10.0",
|
|
26
|
+
"numpy>=1.24",
|
|
15
27
|
]
|
|
16
28
|
|
|
17
29
|
[project.optional-dependencies]
|
|
18
30
|
rich = ["rich>=13.0"]
|
|
19
|
-
imaging = ["Pillow>=10.0"]
|
|
20
|
-
diff = ["Pillow>=10.0", "numpy>=1.24"]
|
|
21
31
|
dev = [
|
|
22
32
|
"pytest>=8.0",
|
|
23
33
|
"pytest-cov>=5.0",
|
|
@@ -31,6 +41,9 @@ rdc = "rdc.cli:main"
|
|
|
31
41
|
[tool.setuptools]
|
|
32
42
|
package-dir = {"" = "src"}
|
|
33
43
|
|
|
44
|
+
[tool.setuptools.package-data]
|
|
45
|
+
"rdc._skills" = ["**/*.md"]
|
|
46
|
+
|
|
34
47
|
[tool.setuptools.packages.find]
|
|
35
48
|
where = ["src"]
|
|
36
49
|
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rdc-cli
|
|
3
|
+
description: >
|
|
4
|
+
Use this skill when working with RenderDoc capture files (.rdc), analyzing GPU frames,
|
|
5
|
+
tracing shaders, inspecting draw calls, or running CI assertions against GPU captures.
|
|
6
|
+
Trigger phrases: "open capture", "rdc file", ".rdc", "renderdoc", "shader debug",
|
|
7
|
+
"pixel trace", "draw calls", "GPU frame", "assert pixel", "export render target".
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# rdc-cli Skill
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
rdc-cli is a Unix-friendly command-line interface for RenderDoc GPU captures. It provides a daemon-backed architecture using JSON-RPC over TCP, a virtual filesystem (VFS) path namespace for navigating capture internals, and composable commands designed for shell pipelines, scripting, and CI assertions.
|
|
15
|
+
|
|
16
|
+
Install: `pip install rdc-cli` (requires a local RenderDoc build with Python bindings).
|
|
17
|
+
Check setup: `rdc doctor`.
|
|
18
|
+
|
|
19
|
+
## Core Workflow
|
|
20
|
+
|
|
21
|
+
Follow this session lifecycle for any capture analysis task:
|
|
22
|
+
|
|
23
|
+
1. **Open** a capture: `rdc open path/to/capture.rdc`
|
|
24
|
+
2. **Inspect** metadata: `rdc info`, `rdc stats`, `rdc events`
|
|
25
|
+
3. **Navigate** the VFS: `rdc ls /`, `rdc ls /textures`, `rdc cat /pipelines/0`
|
|
26
|
+
4. **Analyze** specifics: `rdc shaders`, `rdc pipeline`, `rdc resources`, `rdc bindings`
|
|
27
|
+
5. **Debug** shaders: `rdc debug pixel X Y`, `rdc debug vertex EID VTXID`, `rdc debug thread EID GX GY GZ`
|
|
28
|
+
6. **Export** data: `rdc texture EID -o out.png`, `rdc rt EID`, `rdc buffer EID -o buf.bin`, `rdc log`
|
|
29
|
+
7. **Close** the session: `rdc close`
|
|
30
|
+
|
|
31
|
+
### Session Management
|
|
32
|
+
|
|
33
|
+
- Default session name: `default` (or value of `$RDC_SESSION`).
|
|
34
|
+
- Override per-command: `rdc --session myname open capture.rdc`.
|
|
35
|
+
- Check active session: `rdc status`.
|
|
36
|
+
- Navigate to a specific event: `rdc goto EID`.
|
|
37
|
+
|
|
38
|
+
## Output Formats
|
|
39
|
+
|
|
40
|
+
All list/table commands default to TSV (tab-separated values) with a header row, suitable for `cut`, `awk`, and `sort`.
|
|
41
|
+
|
|
42
|
+
| Flag | Format | Use Case |
|
|
43
|
+
|------|--------|----------|
|
|
44
|
+
| *(default)* | TSV with header | Human reading, shell pipelines |
|
|
45
|
+
| `--no-header` | TSV without header | Piping to `awk`/`cut` without stripping |
|
|
46
|
+
| `--json` | JSON array | Structured processing with `jq` |
|
|
47
|
+
| `--jsonl` | Newline-delimited JSON | Streaming processing, large datasets |
|
|
48
|
+
| `-q` / `--quiet` | Minimal (single column) | Extracting IDs for loops |
|
|
49
|
+
|
|
50
|
+
Example -- get all draw call EIDs as a plain list:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
rdc draws -q
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Example -- JSON pipeline with jq:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
rdc events --json | jq '.[] | select(.type == "DrawIndexed")'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Common Tasks
|
|
63
|
+
|
|
64
|
+
### Find all draw calls
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
rdc draws
|
|
68
|
+
rdc draws --pass "GBuffer" --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Trace a pixel
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
rdc debug pixel 512 384
|
|
75
|
+
rdc debug pixel 512 384 --json # structured output
|
|
76
|
+
rdc debug pixel 512 384 --trace # full step-by-step trace
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Search shaders by name or source
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
rdc search "main" --type shader
|
|
83
|
+
rdc shaders --name "GBuffer*"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Export render targets
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
rdc rt EID -o output.png
|
|
90
|
+
rdc texture EID --format png -o tex.png
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Browse VFS paths
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
rdc ls /
|
|
97
|
+
rdc ls /textures -l
|
|
98
|
+
rdc tree /pipelines --depth 2
|
|
99
|
+
rdc cat /events/42
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Inspect pipeline state at a draw call
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
rdc goto EID
|
|
106
|
+
rdc pipeline --json
|
|
107
|
+
rdc bindings --json
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Compare state before/after a pass
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
rdc goto 100 && rdc pipeline --json > before.json
|
|
114
|
+
rdc goto 200 && rdc pipeline --json > after.json
|
|
115
|
+
diff before.json after.json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## CI Assertions
|
|
119
|
+
|
|
120
|
+
rdc-cli provides assertion commands that exit non-zero on failure, designed for automated testing pipelines:
|
|
121
|
+
|
|
122
|
+
| Command | Purpose |
|
|
123
|
+
|---------|---------|
|
|
124
|
+
| `rdc assert-pixel X Y --expect R,G,B,A` | Assert pixel color at coordinates |
|
|
125
|
+
| `rdc assert-clean` | Assert no validation errors in capture |
|
|
126
|
+
| `rdc assert-count --type DrawIndexed --min N` | Assert minimum draw call count |
|
|
127
|
+
| `rdc assert-state FIELD VALUE` | Assert pipeline state field matches value |
|
|
128
|
+
| `rdc assert-image EID --ref reference.png` | Assert render target matches reference image |
|
|
129
|
+
|
|
130
|
+
Example CI script:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
#!/bin/bash
|
|
134
|
+
set -e
|
|
135
|
+
rdc open test_capture.rdc
|
|
136
|
+
rdc assert-clean
|
|
137
|
+
rdc assert-count --type DrawIndexed --min 10
|
|
138
|
+
rdc assert-pixel 256 256 --expect 1.0,0.0,0.0,1.0
|
|
139
|
+
rdc close
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Shader Edit-Replay
|
|
143
|
+
|
|
144
|
+
Modify and replay shaders without recompiling the application:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
rdc shader-encodings EID # list available encodings
|
|
148
|
+
rdc shader EID --source > s.frag # extract shader source
|
|
149
|
+
# ... edit s.frag ...
|
|
150
|
+
rdc shader-build s.frag --encoding glsl # compile edited shader
|
|
151
|
+
rdc shader-replace EID s.frag # hot-swap into capture
|
|
152
|
+
rdc shader-restore EID # revert single shader
|
|
153
|
+
rdc shader-restore-all # revert all modifications
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Command Reference
|
|
157
|
+
|
|
158
|
+
For the complete list of all commands with their arguments, options, types, and defaults, see [references/commands-quick-ref.md](references/commands-quick-ref.md).
|