Adom Bridge
Public Made by Adomby adom
Adom Bridge unleashes your AI onto your full PC: full power, full safety. The AI breaks out of the container it runs in and onto your real machine, managing and running your entire laptop as you: launch apps, move files, drive any window, control KiCad, Fusion 360 or your real signed-in browser. Works with any AI, cloud or local (Claude Desktop, Claude Code, Codex), no Hydrogen required. Bridge and its bridges are an operating system for AI, with managed Node and Python runtimes, and a human-onl
Native recorder: zero-copy GPU frame path (DXGI surface buffers -> NVENC/QSV/AMF) instead of the per-frame GPU->CPU staging hop
Follow-up to #143 (John, 2026-09-05: "if a user has an nvidia gpu ... do we take advantage of that as well for full-screen recording? cuz we should").
State in ab 2.1.36: the native recorder (wgc_record.rs) creates its Media Foundation sink writer with MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, so MF instantiates the vendor H.264/HEVC encoder MFT when one is registered (NVENC on NVIDIA, Quick Sync on Intel, AMF on AMD); desktop_record_start reports encoder and hardwareEncoder (hardware detected from the live transform's MFT_ENUM_HARDWARE_URL_Attribute). So the ENCODE is on the GPU where one exists.
What is still on the CPU: every captured frame takes a GPU -> CPU hop (WGC texture -> D3D11 staging copy -> Map -> BGRA slot -> IMFMediaBuffer), and the encoder MFT re-uploads it. At 2560x1600@30 that is ~490 MB/s of PCIe/memory traffic each way; at 4K@60 it is ~2 GB/s and the copy itself starts to cost frames.
Ask: a zero-copy path when a hardware encoder is present.
- Create the sink writer with MF_SINK_WRITER_D3D_MANAGER set to an IMFDXGIDeviceManager bound to the same D3D11 device WGC captures into.
- Per frame, copy the WGC texture into a pool of encoder-owned NV12 (or BGRA, if the MFT accepts it) default-usage textures on the GPU (a D3D11 video processor does the BGRA->NV12 conversion on the GPU), wrap with MFCreateDXGISurfaceBuffer, and WriteSample that - no Map, no CPU BGRA slot.
- Keep the CPU path as the fallback for software encoders (WARP boxes, VMs) and report which path is in use (
framePath: "gpu" | "cpu") next toencoder. - Measure before/after on AdomLapper (NVIDIA): CPU % of ab during a 4K@60 take, dropped frames vs requested fps.
Also worth doing in the same pass: expose codec:"hevc" in the hint once the hardware HEVC MFT is confirmed on all three NVIDIA boxes (smaller files at the same quality), and a bitrate arg.