Commit Graph
5 Commits
Author SHA1 Message Date
aiongg 01608757f5 Merge integration track fx 2026-10-31 03:39:22 +00:00
Jason LukerandClaude Fable 5.1 f98c6e20bb platform: VideoToolbox export takes the RGBA pictures and converts them itself (#3030)
Export > Hardware encoding on macOS was CPU-bound by its own colour conversion: the
encode thread converted every RGBA frame to NV12 (rgba_to_yuv420_8) while the rayon
pool rendered the next batch, so the serial conversion took 20-27 ms a 1080p frame
and the media engine waited (perf.stats: convertMs 29.6 s of a 33.7 s export). The
VideoToolbox session now takes the export's RGBA pictures as 32BGRA buffers tagged
BT.709 and converts them itself, as NVENC has since #486; the encode thread copies
8 MB a frame (0.3-0.4 ms). A VideoToolbox that refuses RGB input on the first picture
gets the planar session and the CPU conversion back, so nothing depends on it.

Apple M2 Max, A/B interleaved, median of 3: hardware-encode export of a 60 s 1080p
timeline 35.8 s -> 29.4 s (now render-bound, waitMs 18-25 s), with GPU rendering
22.2 s -> 18.7 s at 277 % -> 219 % CPU; the software-encoder export is byte-identical.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-29 22:53:44 -07:00
dedandClaude Opus 5.5 820ec007c4 #2419: the parity summary counts Bokeh Blur among the GPU effects too
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:31:52 +03:00
dedandClaude Opus 5.5 034746a407 #2419: Bokeh Blur runs on the GPU
Bokeh Blur had no GPU op, so a clip carrying it left the GPU compositor's
layer path and every frame with it composited on the CPU: up to 625
bilinear taps per pixel, about 3.3 s per 1080p frame at a 12 px amount.

- render: Bokeh Blur is an FxOp (parameters evaluated in FxOp::eval, the
  CPU reference in FxOp::apply, the id in GPU_EFFECTS). The CPU result is
  unchanged; a non-finite amount is now a no-op instead of NaN.
- gpu: four passes on the top-left part of the working textures: each
  halving (Image::downsample2), the highlight boost, the iris gather
  (Image::sample_bilinear_clamped within the halved image) and the scale
  back up (Image::transformed's bilinear).

1080p, RTX 4070 Laptop vs 16 CPU threads: amount 6 947 ms -> ~9 ms,
12 3250 ms -> ~39 ms, 20 617 ms -> ~6 ms, 60 (default) 62 ms -> <1 ms.

Tests: six parity cases (no-op, every halving depth, shapes, rotation,
highlight boost) match the CPU to < 1e-6; hostile rotation / highlight stay
on the CPU, huge and NaN amounts run bounded on the GPU.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:08:55 +03:00
Brandon ThomasandClaude Opus 5.5 3ad5a59321 Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#700)
Progress docs per craftrules standards/progress-docs.md: target-app parity, gaps, roadmap with alpha gate, readiness by audience (full / mainstream / essentials) with Opus 5.5 hours, and feature, format, hardware, UI and localization parity docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:09:14 -04:00