# Hardware parity > **Last reviewed:** 2026-10-10 ยท **Last updated:** 2026-10-12 ยท **Change:** minor (monitor profile from colord on Linux); previously major (created from the code, gpu-pipeline.md and the parity checklist) ยท **Target:** Adobe Lightroom Classic 15.5 / Lightroom 9.6 What Lightroom does with the machine's hardware, per platform, and what LightCraft does. Sources: [gpu-pipeline.md](gpu-pipeline.md), [display-profiles.md](display-profiles.md), [denoise.md](denoise.md), [ai-masks.md](ai-masks.md), `crates/gpu`, `crates/engine/src/devices.rs`, `crates/ui-egui/src/panels/second.rs`. | Feature | Target | LightCraft: macOS | Windows | Linux / BSD | Web | Status | |---|---|---|---|---|---|---| | GPU for display and editing | Metal / DX12, "Use GPU for display / image processing / export" | wgpu Metal: geometry, resize, blur, WB, NR, guided filter, dehaze, masks, finish; CPU fallback per render | DX12 only (Vulkan opt-in, #136) | Vulkan (CPU โ†” GPU equivalence verified on an AMD Radeon 8060S, RADV) | CPU only (no WebGPU yet) | ๐ŸŸก defringe, spot removal, heuristic masks, long brushes and high-bit exports stay on CPU | | GPU export | โœ… | โœ… (6000 ร— 4000 in ~0.3 s vs ~1.2 s CPU) | โœ… | โœ… | โ€” | โœ… (black-export fix on an Intel iGPU, #78) | | AI on GPU / neural engine | Metal / DirectML / Core ML, model per feature | AI denoise on GPU or CPU (setting); SAM 3 on Metal via candle; faces on CPU | CPU / GPU denoise | CPU / GPU denoise | โ€” | ๐ŸŸก no Core ML / Neural Engine / DirectML | | HDR (EDR) display | โœ… (macOS EDR, Windows HDR) | โฌœ | โฌœ | โฌœ | โฌœ | โฌœ (LR-VIEW-HDR-DISPLAY) | | Monitor profile | automatic per display, follows the window | โœ… the screen's profile, followed across screens | ๐ŸŸก picked by hand (WCS needs FFI) | ๐ŸŸก colord's profile (one display, or all sharing one); no follow across monitors | โ€” | ๐ŸŸก Windows OS profile not read; Linux per-monitor follow missing | | Second window / second monitor | โœ… (Classic) | โœ… (โŒ˜F11) | โœ… | โœ… | โ€” | โœ… (Classic secondary-window keys missing) | | Pen pressure / tilt (brush masks) | โœ… pressure for size / flow | โฌœ | โฌœ | โฌœ | โฌœ | โฌœ | | Trackpad gestures | pinch zoom, pan | โœ… pinch, two-finger pan | ๐ŸŸก (winit) | ๐ŸŸก | ๐ŸŸก | โœ… on macOS | | Card readers / cameras as import sources | โœ… (devices panel, eject after import) | โœ… mounted volumes with DCIM | โœ… | โœ… | โ€” | ๐ŸŸก no eject-after-import check, no MTP / PTP phones | | Tethered capture | โœ… Classic (Canon, Nikon, Sony, Leica) | โฌœ | โฌœ | โฌœ | โ€” | โฌœ | | Printers | โœ… Print module, printer colour management | โฌœ (PDF contact sheets only) | โฌœ | โฌœ | โ€” | โฌœ | | Control surfaces (MIDI / Loupedeck via plug-ins) | via SDK plug-ins | control channel and MCP can drive every command | same | same | โ€” | ๐ŸŸก different mechanism; no MIDI mapping | | Multi-core CPU | โœ… | โœ… worker pools, parallel JPEG decode, parallel import copy | โœ… | โœ… | single thread | โœ… | | Memory pressure | managed | โœ… memory budget, `crates/sysmem` returns allocator pages on macOS | โœ… budget | โœ… budget | โ€” | โœ… | ## Score **~40% ready** (estimated): the GPU editing path is real and fast (measured: 24 MP exposure drag 3.9 ms on GPU vs 22โ€“42 ms CPU; NR drag 18 ms vs 301โ€“471 ms), but HDR display, pen pressure, tethering, printing, automatic monitor profiles and neural-engine inference are missing. GPU correctness is proven on Apple GPUs and on one AMD GPU on Linux (Radeon 8060S, Vulkan / RADV: the equivalence suite passes with the same max 1โ€“2 LSB as on Metal, [gpu-pipeline.md](gpu-pipeline.md#correctness-cpu-oracle-and-equivalence-tests)). NVIDIA, Intel and Windows DX12 still rely on user reports. ## Remaining (Opus 5.5 agent hours) | Work | Hours | Needs | |---|---:|---| | HDR display (EDR on macOS, Windows HDR, Linux where possible) | 10โ€“20 | an HDR display to verify (human) | | OS monitor profile: Windows WCS (an FFI helper crate, like `crates/sysmem`), follow the window across displays on Linux | 4โ€“8 | multi-monitor setup | | Pen pressure for brush masks (winit tablet events or a pure-Rust tablet layer) | 6โ€“12 | a tablet | | Remaining stages on GPU (defringe, spot removal, masks) | 10โ€“20 | | | Tethered capture (PTP over USB in pure Rust, Canon / Nikon / Sony first) | 25โ€“45 | cameras (human) | | Printing with colour management | 15โ€“25 | printers (human) | | Neural-engine / DirectML inference for AI features | 10โ€“20 | depends on the AI model decision | | **Total** | **80โ€“150 h** (the core set for beta, HDR display + monitor profile + pen pressure: 20โ€“40 h) | | ## Revision history | Date | Change | Summary | |---|---|---| | 2026-10-12 | minor | Monitor profile: Linux reads the display profile from colord; macOS row reflects #787 | | 2026-10-12 | minor | CPU โ†” GPU equivalence suite run on an AMD Radeon 8060S (Vulkan, RADV, Linux): 16 tests / 135 cases pass, max 2 LSB, mean โ‰ค 0.0003; first GPU verified outside Apple | | 2026-10-10 | major | Created |