mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-27 11:27:21 -06:00
A brush dab on an A4 300 ppi CMYK page spent ~5 ms per touched tile in the GPU canvas's tile upload: every pixel of the 256x256 tile went through the CMYK -> sRGB transform on one thread. CMYK and Lab tiles now convert in 16-row bands in parallel, and a run of identical pixels (the transparent or flat area around a dab) is converted once. Texels are bit-identical to the per-pixel conversion. The band workers enter the document's CMYK profile scope; before, the rayon workers converting tiles did not, so a CMYK document tagged with its own profile uploaded tiles through the built-in coated CMYK instead. P33 (Windows 11, 32 threads, RTX 5070 Ti, 15 reps): p95 13.7-16.8 ms -> 2.6-3.3 ms. enforce stays false: the committed baseline machine measures every row over budget, so it is left for the next baseline. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
32 lines
931 B
TOML
32 lines
931 B
TOML
[package]
|
|
name = "photocraft-gpu"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
half = "2"
|
|
photocraft-geom = { workspace = true }
|
|
photocraft-color = { workspace = true }
|
|
photocraft-raster = { workspace = true }
|
|
photocraft-doc = { workspace = true }
|
|
photocraft-compose = { workspace = true }
|
|
# Same major version as eframe's wgpu so the app's device can be shared.
|
|
wgpu = { version = "30", default-features = false, features = ["std", "wgsl"] }
|
|
log = { workspace = true }
|
|
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
# Effect distance fields are computed in parallel bands.
|
|
rayon = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
wgpu = { version = "30" }
|
|
pollster = "1"
|
|
# Shape layers in the effect parity tests.
|
|
photocraft-vector = { workspace = true }
|
|
# A document-tagged CMYK profile in the tile conversion test.
|
|
photocraft-cms = { workspace = true }
|