mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-14 19:27:05 -04:00
Render: render.backend says why it renders on the CPU; mcp --gpu documented (#262)
get_project / render.backend reported "gpuAcceleration": true with "active": "cpu" and no reason, which read as a broken GPU. The headless MCP server only attaches the GPU compositor when started with --gpu, which docs/agents.md didn't mention, and a failed --gpu said only "no usable GPU adapter" (the adapter's error went to a log no one sees). The session now keeps the host's reason there is no GPU compositor (accel_note): the CLI's "headless: renders on the CPU unless started with --gpu", or the desktop app's compositor setup or retirement error. The status reports it as `why` whenever it renders on the CPU (or that the project's renderer is Software Only). --gpu failures include the adapter's error (Gpu::try_headless). docs/agents.md documents `mcp --gpu`. Test: render_backend_says_why_it_renders_on_the_cpu (engine). Checked with effectcraft-cli mcp and mcp --gpu. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
0d3b5ed286
commit
4eb69e7577
7 files changed
+46
-5
No files matched your search
@@ -322,8 +322,10 @@ fn backend(args: &Args, default_demo: bool) -> Result<Backend, Failure> {
|
||||
fn session(args: &Args) -> Result<effectcraft_engine::Session, Failure> {
|
||||
let mut s = effectcraft_host::session();
|
||||
if args.flag("--gpu") {
|
||||
let g = effectcraft_gpu::Gpu::headless().ok_or_else(|| Failure::Error("--gpu: no usable GPU adapter".into()))?;
|
||||
let g = effectcraft_gpu::Gpu::try_headless().map_err(|e| Failure::Error(format!("--gpu: no usable GPU adapter ({e})")))?;
|
||||
s.accel = Some(std::sync::Arc::new(g));
|
||||
} else {
|
||||
s.accel_note = Some("headless: renders on the CPU unless started with --gpu".into());
|
||||
}
|
||||
Ok(s)
|
||||
}
|
||||
@@ -1069,7 +1071,7 @@ fn adv3d_bench_comp(p: &mut effectcraft_engine::project::Project) -> Option<Item
|
||||
/// warm; "up/dn MB" are the GPU's uploads / readbacks per warm GPU frame.
|
||||
fn bench_gpu(s: &Session, args: &Args) -> Result<(), Failure> {
|
||||
use effectcraft_render::Backend;
|
||||
let gpu = effectcraft_gpu::Gpu::headless().ok_or_else(|| Failure::Error("--gpu: no usable GPU adapter".into()))?;
|
||||
let gpu = effectcraft_gpu::Gpu::try_headless().map_err(|e| Failure::Error(format!("--gpu: no usable GPU adapter ({e})")))?;
|
||||
let n = args.num("--n")?.unwrap_or(10.0).max(1.0) as usize;
|
||||
// Every comp, plus an adjustment-layer comp built for the benchmark (the main comp under a
|
||||
// full-frame adjustment layer with a GPU effect stack) and an Advanced 3D comp (`--adv3d`:
|
||||
|
||||
Reference in new issue
Block a user