rdc-cli 0.6.0__tar.gz → 0.6.2__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 (356) hide show
  1. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.gitignore +2 -0
  2. {rdc_cli-0.6.0/src/rdc_cli.egg-info → rdc_cli-0.6.2}/PKG-INFO +1 -1
  3. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/data/commands.json +1 -1
  4. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/_skills/references/commands-quick-ref.md +4 -0
  5. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/cbuffer.py +1 -1
  6. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/descriptors.py +2 -0
  7. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/mesh.py +27 -1
  8. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/resources.py +2 -1
  9. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/_helpers.py +54 -7
  10. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/buffer.py +377 -60
  11. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/debug.py +9 -9
  12. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/descriptor.py +3 -0
  13. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/query.py +3 -0
  14. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/texture.py +5 -2
  15. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/vfs/router.py +24 -0
  16. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/vfs/tree_cache.py +22 -2
  17. {rdc_cli-0.6.0 → rdc_cli-0.6.2/src/rdc_cli.egg-info}/PKG-INFO +1 -1
  18. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc_cli.egg-info/scm_file_list.json +288 -288
  19. rdc_cli-0.6.2/src/rdc_cli.egg-info/scm_version.json +8 -0
  20. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/mocks/mock_renderdoc.py +10 -1
  21. rdc_cli-0.6.2/tests/unit/test_buffer_decode.py +1837 -0
  22. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_cbuffer_commands.py +17 -1
  23. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_daemon_shader_api_fix.py +57 -0
  24. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_debug_handlers.py +52 -1
  25. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_descriptors_commands.py +5 -0
  26. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_descriptors_daemon.py +12 -3
  27. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_fix2_vfs_intermediate_dirs.py +21 -0
  28. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_formatters.py +3 -3
  29. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_mesh_commands.py +59 -0
  30. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_resources_commands.py +5 -1
  31. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_resources_filter.py +18 -0
  32. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_tex_stats_handler.py +46 -0
  33. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_vfs_router.py +14 -0
  34. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/uv.lock +91 -95
  35. rdc_cli-0.6.0/src/rdc_cli.egg-info/scm_version.json +0 -8
  36. rdc_cli-0.6.0/tests/unit/test_buffer_decode.py +0 -917
  37. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.commitlintrc.yml +0 -0
  38. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.githooks/pre-commit +0 -0
  39. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.githooks/pre-push +0 -0
  40. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/CODEOWNERS +0 -0
  41. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  42. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  43. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  44. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  45. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/workflows/aur.yml +0 -0
  46. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/workflows/ci.yml +0 -0
  47. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/workflows/commitlint.yml +0 -0
  48. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.github/workflows/docs.yml +0 -0
  49. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.python-version +0 -0
  50. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/.release-please-manifest.json +0 -0
  51. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/CONTRIBUTING.md +0 -0
  52. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/LICENSE +0 -0
  53. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/Makefile +0 -0
  54. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/README.md +0 -0
  55. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/SECURITY.md +0 -0
  56. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/aur/PKGBUILD +0 -0
  57. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/aur/stable/PKGBUILD +0 -0
  58. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docker/Dockerfile +0 -0
  59. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/astro.config.mjs +0 -0
  60. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/package-lock.json +0 -0
  61. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/package.json +0 -0
  62. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/public/.nojekyll +0 -0
  63. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/public/favicon.svg +0 -0
  64. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Commands.astro +0 -0
  65. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Demo.astro +0 -0
  66. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Features.astro +0 -0
  67. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Footer.astro +0 -0
  68. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Hero.astro +0 -0
  69. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Install.astro +0 -0
  70. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Navbar.astro +0 -0
  71. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Philosophy.astro +0 -0
  72. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/Terminal.astro +0 -0
  73. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
  74. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/data/replay.json +0 -0
  75. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/data/stats.json +0 -0
  76. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/layouts/Base.astro +0 -0
  77. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/layouts/Docs.astro +0 -0
  78. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/ai-integration.astro +0 -0
  79. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/commands.astro +0 -0
  80. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/design.astro +0 -0
  81. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/examples.astro +0 -0
  82. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/index.astro +0 -0
  83. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/install.astro +0 -0
  84. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/remote.astro +0 -0
  85. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/usage.astro +0 -0
  86. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/docs/vfs.astro +0 -0
  87. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/pages/index.astro +0 -0
  88. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/src/styles/global.css +0 -0
  89. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/tailwind.config.mjs +0 -0
  90. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/tapes/pipeline.tape +0 -0
  91. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/tapes/quickstart.tape +0 -0
  92. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/tests/validate.mjs +0 -0
  93. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/docs-astro/tsconfig.json +0 -0
  94. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/mypy.ini +0 -0
  95. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/pixi.lock +0 -0
  96. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/pixi.toml +0 -0
  97. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/pyproject.toml +0 -0
  98. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/release-please-config.json +0 -0
  99. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/ruff.toml +0 -0
  100. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/build-renderdoc.sh +0 -0
  101. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/build_renderdoc.py +0 -0
  102. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/capture_fixture.sh +0 -0
  103. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/dev_install.py +0 -0
  104. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/e2e_test.py +0 -0
  105. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/ensure-renderdoc.py +0 -0
  106. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/ensure-renderdoc.sh +0 -0
  107. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/ensure-skill-link.py +0 -0
  108. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/gen-commands.py +0 -0
  109. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/gen-replay.py +0 -0
  110. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/gen-skill-ref.py +0 -0
  111. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/gen-stats.py +0 -0
  112. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/gen_and_check.py +0 -0
  113. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/setup-renderdoc.sh +0 -0
  114. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/setup-vulkan-samples.sh +0 -0
  115. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/setup_android_tools.py +0 -0
  116. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/setup_vulkan_samples.py +0 -0
  117. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/verify-package.sh +0 -0
  118. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/scripts/verify_package.py +0 -0
  119. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/setup.cfg +0 -0
  120. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/__init__.py +0 -0
  121. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/_build_renderdoc.py +0 -0
  122. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/_platform.py +0 -0
  123. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/_progress.py +0 -0
  124. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/_skills/SKILL.md +0 -0
  125. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/_skills/__init__.py +0 -0
  126. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/_transport.py +0 -0
  127. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/adapter.py +0 -0
  128. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/capture_core.py +0 -0
  129. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/cli.py +0 -0
  130. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/_helpers.py +0 -0
  131. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/android.py +0 -0
  132. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/assert_ci.py +0 -0
  133. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/assert_image.py +0 -0
  134. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/capture.py +0 -0
  135. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/capture_control.py +0 -0
  136. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/capturefile.py +0 -0
  137. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/completion.py +0 -0
  138. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/counters.py +0 -0
  139. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/debug.py +0 -0
  140. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/diff.py +0 -0
  141. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/doctor.py +0 -0
  142. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/events.py +0 -0
  143. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/export.py +0 -0
  144. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/info.py +0 -0
  145. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/install_skill.py +0 -0
  146. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/pick_pixel.py +0 -0
  147. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/pipeline.py +0 -0
  148. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/pixel.py +0 -0
  149. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/remote.py +0 -0
  150. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/script.py +0 -0
  151. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/search.py +0 -0
  152. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/serve.py +0 -0
  153. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/session.py +0 -0
  154. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/setup_renderdoc.py +0 -0
  155. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/shader_edit.py +0 -0
  156. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/snapshot.py +0 -0
  157. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/tex_stats.py +0 -0
  158. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/unix_helpers.py +0 -0
  159. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/unused_targets.py +0 -0
  160. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/usage.py +0 -0
  161. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/commands/vfs.py +0 -0
  162. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/daemon_client.py +0 -0
  163. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/daemon_server.py +0 -0
  164. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/__init__.py +0 -0
  165. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/alignment.py +0 -0
  166. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/draws.py +0 -0
  167. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/framebuffer.py +0 -0
  168. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/pipeline.py +0 -0
  169. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/resources.py +0 -0
  170. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/stats.py +0 -0
  171. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/diff/summary.py +0 -0
  172. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/discover.py +0 -0
  173. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/formatters/json_fmt.py +0 -0
  174. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/formatters/kv.py +0 -0
  175. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/formatters/options.py +0 -0
  176. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/formatters/tsv.py +0 -0
  177. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/__init__.py +0 -0
  178. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/_types.py +0 -0
  179. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/capture.py +0 -0
  180. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/capturefile.py +0 -0
  181. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/core.py +0 -0
  182. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/pipe_state.py +0 -0
  183. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/pixel.py +0 -0
  184. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/script.py +0 -0
  185. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/shader.py +0 -0
  186. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/shader_edit.py +0 -0
  187. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/unused.py +0 -0
  188. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/handlers/vfs.py +0 -0
  189. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/image_compare.py +0 -0
  190. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/protocol.py +0 -0
  191. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/remote_core.py +0 -0
  192. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/remote_state.py +0 -0
  193. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/services/__init__.py +0 -0
  194. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/services/diff_service.py +0 -0
  195. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/services/query_service.py +0 -0
  196. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/services/session_service.py +0 -0
  197. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/session_state.py +0 -0
  198. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/target_state.py +0 -0
  199. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/vfs/__init__.py +0 -0
  200. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc/vfs/formatter.py +0 -0
  201. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc_cli.egg-info/SOURCES.txt +0 -0
  202. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
  203. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc_cli.egg-info/entry_points.txt +0 -0
  204. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc_cli.egg-info/requires.txt +0 -0
  205. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/src/rdc_cli.egg-info/top_level.txt +0 -0
  206. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/conftest.py +0 -0
  207. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/__init__.py +0 -0
  208. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/blackbox_test_catalog.md +0 -0
  209. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/conftest.py +0 -0
  210. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/e2e_helpers.py +0 -0
  211. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_advanced.py +0 -0
  212. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_assert.py +0 -0
  213. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_capture.py +0 -0
  214. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_capturefile.py +0 -0
  215. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_debug.py +0 -0
  216. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_diff.py +0 -0
  217. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_export.py +0 -0
  218. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_formats.py +0 -0
  219. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_presession.py +0 -0
  220. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_query.py +0 -0
  221. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_session.py +0 -0
  222. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_shader_edit.py +0 -0
  223. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/e2e/test_vfs.py +0 -0
  224. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/fixtures/gles-multipass-debug.apk +0 -0
  225. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/fixtures/gles-triangle-debug.apk +0 -0
  226. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/fixtures/gles_android_mali.rdc +0 -0
  227. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/fixtures/gles_multipass_mali.rdc +0 -0
  228. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/fixtures/hello_triangle.rdc +0 -0
  229. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/fixtures/vkcube.rdc +0 -0
  230. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/fixtures/vkcube_validation.rdc +0 -0
  231. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/integration/test_build_renderdoc_integration.py +0 -0
  232. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/integration/test_daemon_handlers_real.py +0 -0
  233. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/integration/test_mock_api_sync.py +0 -0
  234. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/integration/test_real_replay.py +0 -0
  235. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/integration/test_vulkan_samples.py +0 -0
  236. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/conftest.py +0 -0
  237. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_adapter.py +0 -0
  238. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_android_commands.py +0 -0
  239. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_assert_ci_commands.py +0 -0
  240. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_assert_image_command.py +0 -0
  241. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_binary_daemon.py +0 -0
  242. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_build_renderdoc.py +0 -0
  243. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_capture.py +0 -0
  244. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_capture_control.py +0 -0
  245. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_capture_core.py +0 -0
  246. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_capture_handlers.py +0 -0
  247. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_capturefile_commands.py +0 -0
  248. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_capturefile_handlers.py +0 -0
  249. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_ci_files.py +0 -0
  250. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_cli.py +0 -0
  251. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_cli_session_flag.py +0 -0
  252. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_completion.py +0 -0
  253. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_count_shadermap.py +0 -0
  254. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_counters_commands.py +0 -0
  255. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_counters_daemon.py +0 -0
  256. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_daemon_crash_regression.py +0 -0
  257. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_daemon_output_quality.py +0 -0
  258. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_daemon_pipeline_extended.py +0 -0
  259. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_daemon_server_unit.py +0 -0
  260. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_daemon_shader_extended.py +0 -0
  261. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_daemon_transport.py +0 -0
  262. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_debug_commands.py +0 -0
  263. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_dev_install.py +0 -0
  264. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_alignment.py +0 -0
  265. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_command.py +0 -0
  266. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_draws.py +0 -0
  267. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_framebuffer.py +0 -0
  268. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_pipeline.py +0 -0
  269. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_resources.py +0 -0
  270. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_service.py +0 -0
  271. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_stats.py +0 -0
  272. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_diff_summary.py +0 -0
  273. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_discover.py +0 -0
  274. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_doctor.py +0 -0
  275. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_doctor_hints.py +0 -0
  276. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_draws_daemon.py +0 -0
  277. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_draws_events_cli.py +0 -0
  278. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_draws_events_daemon.py +0 -0
  279. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_eid_completion.py +0 -0
  280. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_events_commands.py +0 -0
  281. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_export_commands.py +0 -0
  282. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_export_overlay.py +0 -0
  283. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_fix1_draws_pass_name.py +0 -0
  284. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
  285. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_formatters_kv.py +0 -0
  286. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_gen_skill_ref.py +0 -0
  287. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_handlers_remote.py +0 -0
  288. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_image_compare.py +0 -0
  289. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_info_commands.py +0 -0
  290. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_install_skill.py +0 -0
  291. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_json_errors.py +0 -0
  292. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_keep_remote.py +0 -0
  293. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_mesh_handler.py +0 -0
  294. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_mock_capture_types.py +0 -0
  295. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_mock_renderdoc.py +0 -0
  296. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_open_remote.py +0 -0
  297. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_output_options.py +0 -0
  298. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_overlay_handler.py +0 -0
  299. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pass_deps.py +0 -0
  300. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pick_pixel_commands.py +0 -0
  301. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pick_pixel_daemon.py +0 -0
  302. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pipeline_cli_phase27.py +0 -0
  303. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pipeline_commands.py +0 -0
  304. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pipeline_daemon.py +0 -0
  305. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pipeline_section_routing.py +0 -0
  306. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pipeline_shader.py +0 -0
  307. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pipeline_state.py +0 -0
  308. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pixel_history_commands.py +0 -0
  309. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pixel_history_daemon.py +0 -0
  310. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_pixi_files.py +0 -0
  311. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_platform.py +0 -0
  312. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_progress.py +0 -0
  313. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_protocol.py +0 -0
  314. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_query_service.py +0 -0
  315. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_quickfix_batch.py +0 -0
  316. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_remote_commands.py +0 -0
  317. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_remote_core.py +0 -0
  318. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_remote_replay.py +0 -0
  319. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_remote_setup.py +0 -0
  320. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_remote_state.py +0 -0
  321. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_remote_status_disconnect.py +0 -0
  322. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_require_pipe.py +0 -0
  323. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_resource_semantic_completion.py +0 -0
  324. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_script_command.py +0 -0
  325. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_script_handler.py +0 -0
  326. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_search.py +0 -0
  327. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_semantic_completion.py +0 -0
  328. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_serve.py +0 -0
  329. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_session_commands.py +0 -0
  330. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_session_completion.py +0 -0
  331. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_session_service.py +0 -0
  332. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_session_state.py +0 -0
  333. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_setup_renderdoc.py +0 -0
  334. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_setup_vulkan_samples.py +0 -0
  335. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_shader_edit_commands.py +0 -0
  336. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_shader_edit_handlers.py +0 -0
  337. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_shader_preload.py +0 -0
  338. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_skill_structure.py +0 -0
  339. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_snapshot_command.py +0 -0
  340. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_split_binary.py +0 -0
  341. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_split_core.py +0 -0
  342. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_stats_event_count.py +0 -0
  343. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_target_state.py +0 -0
  344. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_tex_stats_commands.py +0 -0
  345. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_tooling_files.py +0 -0
  346. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_unix_helpers_commands.py +0 -0
  347. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_unused_targets.py +0 -0
  348. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_usage_commands.py +0 -0
  349. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_usage_daemon.py +0 -0
  350. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_vfs_binary.py +0 -0
  351. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_vfs_commands.py +0 -0
  352. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_vfs_completion.py +0 -0
  353. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_vfs_daemon.py +0 -0
  354. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_vfs_formatter.py +0 -0
  355. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_vfs_tree_cache.py +0 -0
  356. {rdc_cli-0.6.0 → rdc_cli-0.6.2}/tests/unit/test_windows_compat.py +0 -0
@@ -18,4 +18,6 @@ tests/fixtures/vulkan_samples
18
18
  .claude/*
19
19
  !.claude/skills/
20
20
  _site/
21
+ docs-astro/.astro/
21
22
  docs-astro/dist/
23
+ docs-astro/node_modules/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdc-cli
3
- Version: 0.6.0
3
+ Version: 0.6.2
4
4
  Summary: CLI for RenderDoc .rdc captures
5
5
  Author: Jim
6
6
  License-Expression: MIT
@@ -223,7 +223,7 @@
223
223
  "name": "mesh",
224
224
  "id": "mesh",
225
225
  "help": "Export post-transform mesh as OBJ.",
226
- "usage": "rdc mesh [EID] [--stage CHOICE] [-o PATH] [--json] [--no-header]"
226
+ "usage": "rdc mesh [EID] [--stage CHOICE] [-o PATH] [--json] [--no-header] [--position-attribute TEXT] [--position-index INTEGER] [--position-slot INTEGER] [--position-offset INTEGER]"
227
227
  },
228
228
  {
229
229
  "name": "snapshot",
@@ -642,6 +642,10 @@ Export post-transform mesh as OBJ.
642
642
  | `-o, --output` | Write to file | path | |
643
643
  | `--json` | JSON output | flag | |
644
644
  | `--no-header` | Suppress OBJ header comment | flag | |
645
+ | `--position-attribute` | VS-IN position input name/semantic | text | |
646
+ | `--position-index` | VS-IN position input list index | integer | |
647
+ | `--position-slot` | VS-IN position vertex buffer slot | integer | |
648
+ | `--position-offset` | VS-IN position byte offset | integer | |
645
649
 
646
650
  ## `rdc open`
647
651
 
@@ -50,7 +50,7 @@ def cbuffer_cmd(
50
50
  raise click.UsageError("-o/--output is required with --raw")
51
51
  if eid is None:
52
52
  raise click.UsageError("EID is required with --raw")
53
- _export_vfs_path(f"/draws/{eid}/cbuffer/{cb_set}/{binding}/data", output, raw)
53
+ _export_vfs_path(f"/draws/{eid}/cbuffer/{stage}/{cb_set}/{binding}/data", output, raw)
54
54
  return
55
55
 
56
56
  del use_json
@@ -68,6 +68,7 @@ def descriptors_cmd( # noqa: PLR0913
68
68
  r.get("format", "-"),
69
69
  r.get("width", "-"),
70
70
  r.get("height", "-"),
71
+ r.get("depth", "-"),
71
72
  ]
72
73
  for r in rows
73
74
  ]
@@ -85,6 +86,7 @@ def descriptors_cmd( # noqa: PLR0913
85
86
  "FORMAT",
86
87
  "WIDTH",
87
88
  "HEIGHT",
89
+ "DEPTH",
88
90
  ],
89
91
  no_header=no_header,
90
92
  )
@@ -22,17 +22,33 @@ from rdc.formatters.json_fmt import write_json
22
22
  @click.option("-o", "--output", type=click.Path(), default=None, help="Write to file")
23
23
  @click.option("--json", "use_json", is_flag=True, help="JSON output")
24
24
  @click.option("--no-header", is_flag=True, help="Suppress OBJ header comment")
25
+ @click.option("--position-attribute", default=None, help="VS-IN position input name/semantic")
26
+ @click.option("--position-index", type=int, default=None, help="VS-IN position input list index")
27
+ @click.option("--position-slot", type=int, default=None, help="VS-IN position vertex buffer slot")
28
+ @click.option("--position-offset", type=int, default=None, help="VS-IN position byte offset")
25
29
  def mesh_cmd(
26
30
  eid: int | None,
27
31
  stage: str,
28
32
  output: str | None,
29
33
  use_json: bool,
30
34
  no_header: bool,
35
+ position_attribute: str | None,
36
+ position_index: int | None,
37
+ position_slot: int | None,
38
+ position_offset: int | None,
31
39
  ) -> None:
32
40
  """Export post-transform mesh as OBJ."""
33
41
  params: dict[str, Any] = {"stage": stage}
34
42
  if eid is not None:
35
43
  params["eid"] = eid
44
+ if position_attribute is not None:
45
+ params["position_attribute"] = position_attribute
46
+ if position_index is not None:
47
+ params["position_index"] = position_index
48
+ if position_slot is not None:
49
+ params["position_slot"] = position_slot
50
+ if position_offset is not None:
51
+ params["position_offset"] = position_offset
36
52
 
37
53
  result = call("mesh_data", params)
38
54
 
@@ -47,6 +63,8 @@ def mesh_cmd(
47
63
  positions = _extract_positions(result["vertices"])
48
64
  faces = _generate_faces(result["vertex_count"], result["indices"], result["topology"])
49
65
  _warn_if_no_faces(result["topology"], len(positions), faces)
66
+ if result.get("position_warning"):
67
+ click.echo(f"mesh: warning: {result['position_warning']}", err=True)
50
68
  obj_text = _format_obj(
51
69
  positions,
52
70
  faces,
@@ -54,6 +72,7 @@ def mesh_cmd(
54
72
  stage=result["stage"],
55
73
  topology=result["topology"],
56
74
  no_header=no_header,
75
+ position_metadata=result,
57
76
  )
58
77
 
59
78
  if output:
@@ -116,15 +135,22 @@ def _format_obj(
116
135
  stage: str,
117
136
  topology: str,
118
137
  no_header: bool = False,
138
+ position_metadata: dict[str, Any] | None = None,
119
139
  ) -> str:
120
140
  """Format vertex positions and faces as OBJ text."""
121
141
  lines: list[str] = []
122
142
  if not no_header:
123
- lines.append(
143
+ header = (
124
144
  f"# rdc mesh export: eid={eid} stage={stage} "
125
145
  f"vertices={len(positions)} faces={len(faces)} "
126
146
  f"topology={topology}"
127
147
  )
148
+ if position_metadata and position_metadata.get("position_attribute"):
149
+ header += (
150
+ f" position={position_metadata['position_attribute']}"
151
+ f" position_source={position_metadata.get('position_source', 'unknown')}"
152
+ )
153
+ lines.append(header)
128
154
  for x, y, z in positions:
129
155
  lines.append(f"v {x:.6f} {y:.6f} {z:.6f}")
130
156
  for face in faces:
@@ -139,12 +139,13 @@ def resources_cmd( # noqa: PLR0913
139
139
  r.get("name", "-"),
140
140
  r.get("width", "-"),
141
141
  r.get("height", "-"),
142
+ r.get("depth", "-"),
142
143
  r.get("format", "-"),
143
144
  r.get("size", "-"),
144
145
  ]
145
146
  for r in rows
146
147
  ]
147
- header = ["ID", "TYPE", "NAME", "WIDTH", "HEIGHT", "FORMAT", "SIZE"]
148
+ header = ["ID", "TYPE", "NAME", "WIDTH", "HEIGHT", "DEPTH", "FORMAT", "SIZE"]
148
149
  write_tsv(tsv_rows, header=header, no_header=no_header)
149
150
 
150
151
  render_list(
@@ -508,6 +508,58 @@ def get_default_disasm_target(controller: Any) -> str:
508
508
  return str(targets[0]) if targets else "SPIR-V"
509
509
 
510
510
 
511
+ def _shader_value_lane_name(var_type: Any) -> str:
512
+ """Return the ShaderValue lane name for a reflected variable type."""
513
+ if isinstance(var_type, int):
514
+ return {
515
+ 0: "f32v",
516
+ 1: "f64v",
517
+ 2: "f16v",
518
+ 3: "s32v",
519
+ 4: "u32v",
520
+ 5: "s16v",
521
+ 6: "u16v",
522
+ 7: "s64v",
523
+ 8: "u64v",
524
+ 9: "s8v",
525
+ 10: "u8v",
526
+ 11: "u32v",
527
+ }.get(var_type, "f32v")
528
+
529
+ type_name = getattr(var_type, "name", var_type)
530
+ type_str = str(type_name).lower()
531
+ if "double" in type_str or type_str in {"f64", "float64"}:
532
+ return "f64v"
533
+ if "half" in type_str or type_str in {"f16", "float16"}:
534
+ return "f16v"
535
+ if "uint64" in type_str or "ulong" in type_str or type_str == "u64":
536
+ return "u64v"
537
+ if "uint16" in type_str or "ushort" in type_str or type_str == "u16":
538
+ return "u16v"
539
+ if "uint8" in type_str or "ubyte" in type_str or type_str == "u8":
540
+ return "u8v"
541
+ if "uint" in type_str or type_str in {"u32", "uint32"}:
542
+ return "u32v"
543
+ if "int64" in type_str or "slong" in type_str or type_str in {"s64", "long"}:
544
+ return "s64v"
545
+ if "int16" in type_str or "sshort" in type_str or type_str in {"s16", "short"}:
546
+ return "s16v"
547
+ if "int8" in type_str or "sbyte" in type_str or type_str == "s8":
548
+ return "s8v"
549
+ if "sint" in type_str or "int" in type_str or type_str in {"s32", "int32"}:
550
+ return "s32v"
551
+ if "bool" in type_str:
552
+ return "u32v"
553
+ return "f32v"
554
+
555
+
556
+ def _shader_value_lane_fallback(lane_name: str) -> list[float | int]:
557
+ """Return a type-stable fallback for a missing ShaderValue lane."""
558
+ if lane_name.startswith(("u", "s")):
559
+ return [0] * 16
560
+ return [0.0] * 16
561
+
562
+
511
563
  def _flatten_shader_var(var: Any) -> dict[str, Any]:
512
564
  """Recursively convert a ShaderVariable to a dict."""
513
565
  members = getattr(var, "members", [])
@@ -529,13 +581,8 @@ def _flatten_shader_var(var: Any) -> dict[str, Any]:
529
581
  if val is None:
530
582
  values: list[Any] = []
531
583
  else:
532
- type_str = str(getattr(var, "type", "")).lower()
533
- if "uint" in type_str:
534
- values = list(getattr(val, "u32v", [0.0] * 16)[:count])
535
- elif "int" in type_str or "sint" in type_str:
536
- values = list(getattr(val, "s32v", [0] * 16)[:count])
537
- else:
538
- values = list(getattr(val, "f32v", [0.0] * 16)[:count])
584
+ lane_name = _shader_value_lane_name(getattr(var, "type", ""))
585
+ values = list(getattr(val, lane_name, _shader_value_lane_fallback(lane_name))[:count])
539
586
 
540
587
  return {
541
588
  "name": var.name,