Commit Graph
5 Commits
Author SHA1 Message Date
vangel76andClaude Sonnet 5.5 d61c52e8ae test(cms): cover the 8-bit first-stage table with curv table TRCs and the 16-bit path
The exact-core test only used sRGB, whose curves are parametric. Run it over
a profile with distinct per-channel curv table TRCs as well, and check
convert_u16 against the untabulated evaluation for both.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 00:47:24 +01:00
vangel76andClaude Sonnet 5.5 c64ca3365b perf(cms): tabulate the first-stage curves for 8-bit exact pipelines
run_u8 on a core without a lookup table (for example sRGB to Lab) evaluated the
first stage's curves with powf on every channel of every pixel. An 8-bit channel
has 256 values, so the curves are tabulated once per transform with the same
Curve::eval and the remaining stages run from there. Output is bit-identical.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 21:58:03 +01:00
vangel76andClaude Sonnet 5.5 914de3cd21 perf(cms): block the matrix/TRC maths of 8/16-bit conversion over 64 pixels
run_u8 and run_u16 pushed every pixel through Vec/Option indirection
(apply_matrix, Post::eval, eval_fast). For a three-channel matrix/TRC transform
the matrix and the output-table index maths now run over blocks of 64 pixels on
fixed-size arrays. Same float operations in the same order per pixel, so the
output is bit-identical.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 21:56:02 +01:00
aiongg ffa400c754 Keep tests correct and docs current with one test binary per crate
- gpu: the test modules share one GPU_LOCK, and timing and vector_mask
  take it too, so one process drives one wgpu device at a time.
- ui-egui: the wgpu tests in pattern_preview_canvas, adjust_preview_gpu,
  marquee_autoscroll and layout_perf take gpu_lock().
- affinity compound_limits: the child process selects its test by the
  module path (compound_limits::<name>); with --exact, the bare name
  matches no test and the child passes without running the check.
- xtask scorecard reads crates/io/tests/it/corpus.rs.
- Docs and comments name the new test paths and the --test it filters.
2026-10-22 16:55:34 +00:00
aiongg a6428d3dfb Build each crate's integration tests as one binary
Every tests/*.rs file is its own executable that links the whole crate
graph. Move each crate's test files into tests/it/ as modules of one
tests/it/main.rs; helper modules under tests/common move with them.

These keep their own binary (own process):
- engine panic_hunt: a process-wide panic hook counts every panic.
- engine text_gamma: changes the process-wide text gamma.
- engine smart_filter_stages, mask_cache_purge: assert on global caches.
- codecs pnm_peak_memory: reads the process's peak RSS.
- photocraft mac_menu_appkit: harness = false.
2026-10-22 16:55:34 +00:00