Files
photocraft/crates/gpu/Cargo.toml
Brandon ThomasandClaude Opus 4.8 ae7d802726 GPU: fall back to Rgba16Float when Rgba32Float isn't renderable (#7, #4) (#22)
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>
2026-10-04 02:27:54 -04:00

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 }