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.
Files changed (92) hide show
  1. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/LICENSE +1 -1
  2. rdc_cli-0.3.0/PKG-INFO +133 -0
  3. rdc_cli-0.3.0/README.md +104 -0
  4. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/pyproject.toml +17 -4
  5. rdc_cli-0.3.0/src/rdc/_skills/SKILL.md +158 -0
  6. rdc_cli-0.3.0/src/rdc/_skills/references/commands-quick-ref.md +891 -0
  7. rdc_cli-0.3.0/src/rdc/_transport.py +35 -0
  8. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/cli.py +67 -0
  9. rdc_cli-0.3.0/src/rdc/commands/_helpers.py +74 -0
  10. rdc_cli-0.3.0/src/rdc/commands/assert_ci.py +338 -0
  11. rdc_cli-0.3.0/src/rdc/commands/assert_image.py +66 -0
  12. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/counters.py +27 -7
  13. rdc_cli-0.3.0/src/rdc/commands/debug.py +206 -0
  14. rdc_cli-0.3.0/src/rdc/commands/diff.py +399 -0
  15. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/doctor.py +5 -6
  16. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/export.py +50 -2
  17. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/info.py +47 -34
  18. rdc_cli-0.3.0/src/rdc/commands/install_skill.py +113 -0
  19. rdc_cli-0.3.0/src/rdc/commands/mesh.py +119 -0
  20. rdc_cli-0.3.0/src/rdc/commands/pick_pixel.py +29 -0
  21. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/pipeline.py +98 -55
  22. rdc_cli-0.3.0/src/rdc/commands/pixel.py +61 -0
  23. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/resources.py +58 -50
  24. rdc_cli-0.3.0/src/rdc/commands/script.py +77 -0
  25. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/session.py +9 -1
  26. rdc_cli-0.3.0/src/rdc/commands/shader_edit.py +95 -0
  27. rdc_cli-0.3.0/src/rdc/commands/snapshot.py +79 -0
  28. rdc_cli-0.3.0/src/rdc/commands/tex_stats.py +52 -0
  29. rdc_cli-0.3.0/src/rdc/commands/unix_helpers.py +60 -0
  30. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/usage.py +25 -7
  31. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/vfs.py +84 -9
  32. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/daemon_client.py +3 -14
  33. rdc_cli-0.3.0/src/rdc/daemon_server.py +317 -0
  34. rdc_cli-0.3.0/src/rdc/diff/__init__.py +24 -0
  35. rdc_cli-0.3.0/src/rdc/diff/alignment.py +186 -0
  36. rdc_cli-0.3.0/src/rdc/diff/draws.py +253 -0
  37. rdc_cli-0.3.0/src/rdc/diff/framebuffer.py +97 -0
  38. rdc_cli-0.3.0/src/rdc/diff/pipeline.py +312 -0
  39. rdc_cli-0.3.0/src/rdc/diff/resources.py +218 -0
  40. rdc_cli-0.3.0/src/rdc/diff/stats.py +285 -0
  41. rdc_cli-0.3.0/src/rdc/diff/summary.py +99 -0
  42. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/discover.py +2 -2
  43. rdc_cli-0.3.0/src/rdc/formatters/options.py +22 -0
  44. rdc_cli-0.3.0/src/rdc/handlers/__init__.py +15 -0
  45. rdc_cli-0.3.0/src/rdc/handlers/_helpers.py +283 -0
  46. rdc_cli-0.3.0/src/rdc/handlers/_types.py +16 -0
  47. rdc_cli-0.3.0/src/rdc/handlers/buffer.py +381 -0
  48. rdc_cli-0.3.0/src/rdc/handlers/core.py +120 -0
  49. rdc_cli-0.3.0/src/rdc/handlers/debug.py +273 -0
  50. rdc_cli-0.3.0/src/rdc/handlers/descriptor.py +212 -0
  51. rdc_cli-0.3.0/src/rdc/handlers/pipe_state.py +357 -0
  52. rdc_cli-0.3.0/src/rdc/handlers/pixel.py +194 -0
  53. rdc_cli-0.3.0/src/rdc/handlers/query.py +569 -0
  54. rdc_cli-0.3.0/src/rdc/handlers/script.py +92 -0
  55. rdc_cli-0.3.0/src/rdc/handlers/shader.py +332 -0
  56. rdc_cli-0.3.0/src/rdc/handlers/shader_edit.py +162 -0
  57. rdc_cli-0.3.0/src/rdc/handlers/texture.py +328 -0
  58. rdc_cli-0.3.0/src/rdc/handlers/vfs.py +352 -0
  59. rdc_cli-0.3.0/src/rdc/image_compare.py +74 -0
  60. rdc_cli-0.3.0/src/rdc/services/diff_service.py +269 -0
  61. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/services/query_service.py +181 -49
  62. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/services/session_service.py +29 -8
  63. rdc_cli-0.3.0/src/rdc/session_state.py +112 -0
  64. rdc_cli-0.3.0/src/rdc/vfs/__init__.py +0 -0
  65. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/vfs/formatter.py +20 -0
  66. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/vfs/router.py +18 -0
  67. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/vfs/tree_cache.py +64 -4
  68. rdc_cli-0.3.0/src/rdc_cli.egg-info/PKG-INFO +133 -0
  69. rdc_cli-0.3.0/src/rdc_cli.egg-info/SOURCES.txt +83 -0
  70. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/requires.txt +2 -7
  71. rdc_cli-0.2.0/PKG-INFO +0 -130
  72. rdc_cli-0.2.0/README.md +0 -106
  73. rdc_cli-0.2.0/src/rdc/commands/unix_helpers.py +0 -79
  74. rdc_cli-0.2.0/src/rdc/daemon_server.py +0 -2079
  75. rdc_cli-0.2.0/src/rdc/session_state.py +0 -86
  76. rdc_cli-0.2.0/src/rdc_cli.egg-info/PKG-INFO +0 -130
  77. rdc_cli-0.2.0/src/rdc_cli.egg-info/SOURCES.txt +0 -40
  78. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/setup.cfg +0 -0
  79. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/__init__.py +0 -0
  80. {rdc_cli-0.2.0/src/rdc/vfs → rdc_cli-0.3.0/src/rdc/_skills}/__init__.py +0 -0
  81. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/adapter.py +0 -0
  82. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/capture.py +0 -0
  83. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/completion.py +0 -0
  84. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/events.py +0 -0
  85. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/commands/search.py +0 -0
  86. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/formatters/json_fmt.py +0 -0
  87. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/formatters/tsv.py +0 -0
  88. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/protocol.py +0 -0
  89. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc/services/__init__.py +0 -0
  90. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
  91. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/entry_points.txt +0 -0
  92. {rdc_cli-0.2.0 → rdc_cli-0.3.0}/src/rdc_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Jim
3
+ Copyright (c) 2024 BANANASJIM
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
+ [![PyPI](https://img.shields.io/pypi/v/rdc-cli)](https://pypi.org/project/rdc-cli/)
40
+ [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://pypi.org/project/rdc-cli/)
41
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
42
+ [![Commands](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/commands.json)](https://bananasjim.github.io/rdc-cli/)
43
+ [![Tests](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/tests.json)](https://bananasjim.github.io/rdc-cli/)
44
+ [![Coverage](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/coverage.json)](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)
@@ -0,0 +1,104 @@
1
+ ```
2
+ _____ _____ _____
3
+ | __ \| __ \ / ____|
4
+ | |__) | | | | |
5
+ | _ /| | | | |
6
+ | | \ \| |__| | |____
7
+ |_| \_\_____/ \_____| cli
8
+ ```
9
+
10
+ [![PyPI](https://img.shields.io/pypi/v/rdc-cli)](https://pypi.org/project/rdc-cli/)
11
+ [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://pypi.org/project/rdc-cli/)
12
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
13
+ [![Commands](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/commands.json)](https://bananasjim.github.io/rdc-cli/)
14
+ [![Tests](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/tests.json)](https://bananasjim.github.io/rdc-cli/)
15
+ [![Coverage](https://img.shields.io/endpoint?url=https://bananasjim.github.io/rdc-cli/badges/coverage.json)](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.2.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).