mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-11 00:11:46 +00:00
The Linux runner has no GPU, so the GPU tests ran on Mesa llvmpipe over GL, which can't render Rgba32Float: 57 GPU checks (50 GPU parity, 3 canvas, 2 adjustment preview parity, 2 effect-map recovery) returned early and passed without comparing anything. A new step after Test installs mesa-vulkan-drivers and runs the nextest `gpu` group on lavapipe (Vulkan), reusing Test's build, and fails unless the parity tests report the Vulkan backend and no test printed a skip. No code change: photocraft's tests take whatever adapter wgpu returns, software adapters included. Follows the CI half of lightcraft#1148. Co-authored-by: FredApps <FredApps@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
2.7 KiB
TOML
48 lines
2.7 KiB
TOML
# Refuse to run under a nextest older than the fixed release: GHSA-vc25-qg58-w57c is fixed in
|
|
# 0.9.150, and CI installs exactly that version (an older nextest exits 92 REQUIRED_VERSION_NOT_MET).
|
|
nextest-version = "0.9.150"
|
|
|
|
# cargo-nextest (https://nexte.st): runs every test in its own process, in parallel across test
|
|
# binaries. CI runs it with the `ci` profile below (#6117); locally it is optional and `cargo test`
|
|
# keeps working (#2204).
|
|
#
|
|
# cargo nextest run --workspace # all tests except doctests
|
|
# cargo test --doc --workspace # nextest does not run doctests
|
|
#
|
|
# GPU tests: each test is its own process here, so the in-process `gpu_lock()` mutexes no longer
|
|
# serialize them. Too many concurrent wgpu devices time out (`PollError: ... Wait timed out`), so
|
|
# this group caps them at 4. scripts/ci-gpu-lavapipe.py reads this group's filters directly.
|
|
[test-groups]
|
|
gpu = { max-threads = 4 }
|
|
|
|
[[profile.default.overrides]]
|
|
filter = 'package(photocraft-gpu) | (package(photocraft-ui-egui) & (kind(test) | test(/canvas|gpu|mip|type_tool|background_redraw::|floating_group_titles|swap_arrow::tests::rendered_glyph/)))'
|
|
test-group = 'gpu'
|
|
|
|
# CI (`--profile ci`, .github/workflows/ci.yml). Collect all failures in one integration run
|
|
# instead of exposing one regression per rebuild. A hanging test still terminates, and every
|
|
# failure is repeated at the end of the log. The default profile's GPU override still applies.
|
|
[profile.ci]
|
|
fail-fast = false
|
|
slow-timeout = { period = "60s", terminate-after = 10 }
|
|
failure-output = "immediate-final"
|
|
|
|
# Keep phase timings for the remaining expensive Windows GPU regressions visible. This does
|
|
# not relax their timeout, isolate failures differently or remove any test cases.
|
|
# Page eviction and budget borrowing redraw multi-effect documents. On the Windows
|
|
# CPU-backed adapter it uses all GPU slots, avoiding oversubscription without skipping work.
|
|
[[profile.ci.overrides]]
|
|
platform = 'cfg(target_os = "windows")'
|
|
filter = 'package(photocraft-gpu) & test(/pages_are_evicted_under_the_budget|layer_pages_that_just_miss_borrow_the_effect_map_share/)'
|
|
threads-required = 4
|
|
success-output = "immediate"
|
|
|
|
[[profile.ci.overrides]]
|
|
platform = 'cfg(target_os = "windows")'
|
|
filter = 'package(photocraft-gpu) & test(/documents_larger_than_the_texture_limit|layer_effects_update_incrementally|pages_are_evicted_under_the_budget|the_focused_view_stays_resident_after_a_full_refresh/)'
|
|
success-output = "immediate"
|
|
# These multi-page effect regressions saturate the Windows software GPU. Reserve two
|
|
# scheduling slots so four independent devices do not compete for the same CPU renderer.
|
|
# All cases and the 60-second warning remain unchanged.
|
|
threads-required = 2
|