mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-21 18:56:44 +02:00
Some drivers (e.g. Intel Vulkan on Linux/Windows) can't render to Rgba32Float, so creating the 'fs_content' pipeline panicked with 'Format Rgba32Float is not renderable' as soon as a document/image was opened. The accumulation format is now chosen per adapter: Compositor::preferred_acc_format() keeps Rgba32Float where it's a valid render target and falls back to Rgba16Float otherwise. The compositor carries the format (pipelines, accumulation texture, byte size and the readback half-decode all follow it); the app picks it from the eframe adapter. Capable GPUs are unchanged (parity still exact, 18/18). A new test forces the Rgba16Float path on any GPU and confirms it renders within display tolerance (blend + adjustment). wasm green. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
30 lines
831 B
TOML
30 lines
831 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 }
|