Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RenderDoc HTTP RPC

English README

qrenderdoc-rpc 为 qrenderdoc 提供远程 RPC 控制能力,使外部客户端能够通过本地 HTTP JSON-RPC 调用 qrenderdoc 的 Qt UI,并执行截帧、加载捕获、回放和分析等操作。项目同时提供独立的命令行客户端。

目录结构

extension/renderdoc_http_rpc/  RenderDoc 扩展包
scripts/install_extension.py   扩展安装脚本
scripts/install_codex_skill.py Codex skill 安装脚本
skills/qrenderdoc-rpc/         可分发的 Codex skill 与命令行客户端

扩展启动的服务不使用 HTTP 鉴权,并且只会绑定至 127.0.0.1。它不是用于暴露到公网的服务;“远程”指独立进程通过 RPC 远程控制 qrenderdoc Qt UI。

安装扩展

在仓库根目录运行安装脚本。它会检测 qrenderdoc 的平台与 CPU 架构:Windows x86/x64 会从 python.org 下载并校验对应的 CPython 3.6.4 二进制模块;Linux 与 macOS 仅安装扩展并使用系统提供的 socket 支持:

python .\scripts\install_extension.py

使用 --force 覆盖已存在的安装。可用 --platform--architecture 为交叉安装显式选择目标,例如 Windows 为 64 位、而 qrenderdoc 是 32 位版本:

python .\scripts\install_extension.py --platform windows --architecture x86 --force

随后在 RenderDoc 中打开 Tools > Manage Extensions,加载 RenderDoc HTTP RPC 并启用 Always Load。运行中的服务会将端点信息写入:

%APPDATA%\qrenderdoc\renderdoc_http_rpc\runtime.json

使用 CLI

扩展安装后,使用 skill 中自包含的命令行客户端:

python .\skills\qrenderdoc-rpc\scripts\rdocctl.py start
python .\skills\qrenderdoc-rpc\scripts\rdocctl.py status
python .\skills\qrenderdoc-rpc\scripts\rdocctl.py methods
python .\skills\qrenderdoc-rpc\scripts\rdocctl.py call analysis.frame_summary --wait

需要时可通过 RENDERDOC_HTTP_RPC_STATE 覆盖运行时目录。

对于 AI agent 或脚本,可将 --compact 放在子命令前,以单行 JSON 输出结果:

python .\skills\qrenderdoc-rpc\scripts\rdocctl.py --compact status

Codex Skill

可分发的 qrenderdoc-rpc skill 位于 skills/qrenderdoc-rpc/。运行以下脚本即可安装到 CODEX_HOME/skills;未设置 CODEX_HOME 时安装至 %USERPROFILE%\.codex\skills\qrenderdoc-rpc

python .\scripts\install_codex_skill.py

使用 --force 覆盖已有版本。安装后,Codex 可通过 $qrenderdoc-rpc 触发 qrenderdoc RPC 工作流;skill 自带独立 CLI 与方法参考,不依赖仓库目录。

协议

GET  /health
GET  /openrpc.json
POST /rpc
GET  /jobs/<job_id>
GET  /artifacts/<artifact_id>

访问 RenderDoc UI、ReplayControllerTargetControl 的操作会返回 job_id。使用 job.getjob.wait 获取最终结果。

运行机制与依赖

HTTP 请求不会直接访问 qrenderdoc 对象。Qt UI 操作通过 MiniQtHelper.InvokeOntoUIThread() 调度,ReplayController 操作通过 ReplayManager.AsyncInvoke() 调度,TargetControl 则由独立线程串行处理。

RenderDoc 1.45 内嵌的 Python 3.6.4 缺少 _socketselect 原生模块。发布源码不包含这些二进制文件;安装脚本会从官方 CPython 3.6.4 embeddable 发行包下载并校验匹配 CPU 架构的模块。

About

qrenderdoc HTTP RPC with cli, agent skill

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages