ADR-0526: Add enable_lcs and enable_chroma to float_ms_ssim SYCL twin¶
- Status: Accepted
- Date: 2026-05-17
- Deciders: lusoris
- Tags:
sycl,parity,options
Context¶
The option-parity audit (.workingdir/feature-option-parity-audit-2026-05-16.md) identified that the SYCL twin of float_ms_ssim was missing enable_lcs and enable_chroma, both of which the CUDA twin already exposed (added in PR #933 and via the enable_chroma cross-backend pass). The SYCL collect_fex_sycl() already computed per-scale L, C, S means internally for the Wang product; the only gap was that the values were never forwarded to the feature collector when enable_lcs=true. The enable_chroma option is structural (MS-SSIM is luma-only by construction) and is accepted for option-table symmetry without semantic effect.
Decision¶
Add enable_lcs and enable_chroma fields to MsSsimStateSycl, expose them in options_ms_ssim_sycl[], and in collect_fex_sycl() emit the 15 per-scale intermediates (float_ms_ssim_{l,c,s}_scale{0..4}) when enable_lcs=true. The default-path output (both flags false) is bit-for-bit unchanged.
Alternatives considered¶
| Option | Pros | Cons | Why not chosen |
|---|---|---|---|
| Defer until SYCL MS-SSIM is fully refactored | No churn now | Leaves a silent option-drop bug longer | The fix is three lines; deferral adds no value |
Add only enable_lcs, skip enable_chroma | Slightly smaller diff | Options table stays asymmetric with CUDA | Symmetry is the whole point of the parity pass |
Consequences¶
- Positive: SYCL
float_ms_ssimnow matches CUDA's option table; callers usingenable_lcs=trueget the same 15 per-scale outputs on both GPU backends. - Negative: None — default-path is unchanged;
enable_chromais a no-op accepted for future compatibility. - Neutral / follow-ups: The audit row for SYCL
enable_lcscan be marked DONE.
References¶
- Option-parity audit:
.workingdir/feature-option-parity-audit-2026-05-16.md - ADR-0485:
enable_db/clip_dbparity (this PR extends the same SYCL file) - CUDA reference implementation:
core/src/feature/cuda/integer_ms_ssim_cuda.c