Files
photocraft/docs/hardware-parity.md
T
5c157e8400 Build the GPU compositor off the UI thread (#9969)
* Prepare GPU compositor in background

* Add compositor startup performance scenarios

* Generate scorecard in scratch CI

* Fix pipeline build type inference

* Address compositor startup review and document measurements

* Run startup performance checks on scratch CI

* Remove scratch performance job

* Count failed GPU attempts in frame timing

* Make shader fingerprint test portable

* Address review: run first-document scenario as a guarded group; share COMPOSITOR_BUILDING constant

* Handle compositor startup benchmark failures

* Fix frame timing after upstream merge

* Keep GPU startup failures on CPU fallback

* Record the failed GPU attempt of a deferred redraw, and bound --reps

A redraw deferred after a failed GPU composite carries that attempt's time to its end, where it is
recorded once beside the CPU time. Perf::record clears the attempt so a direct CPU refresh doesn't
inherit the last one's. perf_scenarios caps --reps.

* Refresh cached canvases after compositor build

* Expose canvas cache key to GPU completion handler

* ci: drop the GPU compositor probe job

AGENTS.md: feature and fix PRs don't add or change CI, and app workflows
only call the shared craft-common-actions workflows. The probe example
stays as a manual tool (cargo run -p photocraft-gpu --example
compositor_build_probe).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: FredApps <153173854+FredApps@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 22:49:12 +01:00

5.0 KiB
Raw Blame History

Hardware parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-28 · Change: minor (GPU compositor startup builds in the background, measurements pending; Camera Raw's preview develops its per-pixel stages on the GPU) · Target: Adobe Photoshop 2026

Each hardware feature Photoshop 2026 (27.11.0) uses, per platform, against PhotoCraft. Photoshop side: its bundle (Metal and OpenCL paths, "Precise Color Management for HDR Display" and EDR strings, Touch Bar resources, pen pressure/tilt strings) and Adobe's GPU FAQ. PhotoCraft side: crates/tablet, crates/ui-egui/src/stylus.rs, apps/photocraft/src/gpu_startup.rs, engine/src/display_color.rs, apps/photocraft/src/monitor_profile.rs.

Summary (estimated): ~50% ready. GPU compositing and colour-managed display are solid; pen input is uneven by platform (Windows lacks tilt/rotation, Wayland is broken) and there is no HDR output. Remaining: 80–150 h (gap G12). Human: tablets (Wacom, XP-Pen, Huion) on each OS and an HDR display to verify.

GPU

Feature Photoshop PhotoCraft Status
GPU canvas, zoom/pan, rotate view Metal (macOS), DirectX/OpenCL (Windows) wgpu 30: Metal, Vulkan, DX12, GL; backend selectable done
GPU compositing of layers, blend modes, effects partial (Photoshop composites mostly on CPU) wgpu compositor, ≤ 1/255 vs CPU oracle; Multichannel and > texture-limit regions fall back to CPU done (ahead in places)
GPU compositor startup available Pipeline preparation runs in the background on native hardware; the CPU composites until ready. Windows WARP probe: 0.329 ms p95, 6.860 ms maximum device-work stall during two FXC builds; hardware measurements remain pending (#9157, #9364, #6419) partial
GPU filters (Blur Gallery, Liquify, Smart Sharpen, Camera Raw) yes CPU (rayon) for filters; GPU for compose and effects. Camera Raw's preview runs its per-pixel stages (white balance to grain) in one wgpu pass, about 2-3 ms vs 11-28 ms on the CPU for the 858×572 proxy, depending on the machine; spatial stages, Calibration and OK still develop on the CPU (#6916) partial
Documents larger than the GPU texture limit yes (tiled) CPU fallback; tiling in progress (#49) partial
CPU-only fallback when no GPU yes, reduced cpu canvas preference; fails to start without an adapter on some Linux systems (#2519, #2412) partial
Choosing the GPU on a multi-GPU machine Preferences › Performance › Use Graphics Processor Linux only: Preferences › Performance › Advanced › GPU adapter and PHOTOCRAFT_GPU_ADAPTER (#1885); ignored on Windows and macOS partial
Old / integrated GPUs yes black line on Intel HD (#2426), OpenCore Macs fail (#1859), Rgba32Float panic (#2020) partial

Pen tablets

Feature Photoshop macOS Windows Linux X11 Linux Wayland Web
Pressure yes yes (AppKit monitor) yes (WM_POINTER), jumpy (#2046) yes (XInput2) via Xwayland only; GNOME 50 pen doesn't click (#2622), KDE (#2297) yes
Tilt yes yes no yes no yes
Barrel rotation yes yes (not applied to tip angle, #1301) no partial no yes (twist)
Eraser end yes yes no (#2285) partial no partial
WinTab driver mode yes – no – – –
Pressure curve Windows Ink / driver global curve in Preferences (#2195) same same same same

Displays and colour

Feature Photoshop PhotoCraft Status
Colour-managed canvas (document → monitor profile) yes yes, folded into the GPU 3D LUT done
Monitor profile detection per display, live macOS per display at launch; others sRGB or a chosen .icc partial
HDR / EDR output for 32-bit and HDR images yes ("Precise Color Management for HDR Display") no; 8-bit sRGB-encoded canvas texture missing
High-DPI, physical 100% yes yes (#1943) done
Multiple monitors: documents in separate OS windows yes yes (extra_windows) done
Panels in separate OS windows yes in-app floating only (UI-217-5) missing

Input devices

Feature Photoshop PhotoCraft Status
Trackpad pinch zoom, two-finger pan yes yes; pinch scrolls instead in 0.6.0 (#2463) partial
Trackpad rotate (Rotate View) yes yes (rotate_view.rs) done
Touch Bar yes (Intel Macs) no missing (low value)
Touch screens (Windows) yes basic pointer only partial
3D mouse, MIDI, Surface Dial Surface Dial on Windows no missing (low value)
Scanners (WIA / TWAIN) WIA menu (Windows) menu item live; no driver integration partial

Revision history

Date Change Summary
2026-10-28 minor Build GPU compositor pipelines in the background; benchmark baseline pending (#9157)
2026-10-10 major First version
2026-10-17 minor GPU filters: Camera Raw's preview, per-pixel stages (#6916 step 1)
2026-10-19 minor Graphics Adapter choice on Linux (#1885)