ADR-0006: Reconcile built-in performance-mode terminologyΒΆ
StatusΒΆ
Accepted. The fixed-mode mapping is amended below on 2026-09-11.
DateΒΆ
2026-08-09
ContextΒΆ
ADR-0004 and ADR-0005 record the validation and adaptive-policy decisions for Blur and Glass.
They predate the unified built-in HazePerformanceMode API, so they describe built-in effects with
the former HazeSampling vocabulary. That vocabulary is still correct for generic custom effects,
but it no longer describes the public modifiers for built-in Blur and Glass.
The historical measurements remain useful evidence for the separate Blur and Glass resolver policies. Rewriting their tables would silently alter a record of the conditions, API, and metrics that were accepted at the time.
DecisionΒΆ
Built-in Blur and Glass use HazePerformanceMode; custom effects retain HazeSampling as their
generic input-sampling contract.
HazePerformanceMode.DefaultisAdaptive.Qualityreplaces the former built-in full-resolution choice.Quality,Balanced, andPerformanceare effect-owned named profiles. Their internal resolution mappings are not a cross-effect public contract.Fixed(qualityFraction)is a normalized, effect-owned override. A previous built-in fixed input-pixel fraction has no direct equivalent and must be remeasured for the effect and layout in use.- The adaptive resolver thresholds, cadence handling, and hysteresis recorded in ADR-0004 and ADR-0005 remain unchanged. Changing them requires fresh paired physical-device evidence and representative visual review.
The controlled Android Macrobenchmark suite runs every named built-in performance mode for both effects under stable and rapidly changing input workloads. It records frame-duration CPU and frame-overrun metrics; changing Glass workloads also record peak memory. Release documentation summarizes the device, build, refresh rate, iteration count, scenarios, and accepted metrics rather than committing raw traces or JSON reports.
ValidationΒΆ
The compatibility and terminology change is covered by public API compilation, effect-specific resolver tests, deterministic controlled benchmark navigation, and representative screenshot coverage. The current physical-device reference measurements are recorded in the Blur and Glass performance guidance; raw Macrobenchmark artifacts remain local build outputs.
ConsequencesΒΆ
- Existing callers can choose a stable named profile without knowing a renderer's input-pixel calculation.
- Existing custom effects keep their explicit
HazeSamplingbehavior. - Documentation and migration guidance distinguish the two contracts and require remeasurement instead of presenting a speculative fixed-fraction conversion.
- ADR-0004 and ADR-0005 retain their historical evidence and implementation-policy decisions, but their built-in public-API terminology is superseded by this ADR.
Amendment: continuous fixed quality (2026-09-11)ΒΆ
Fixed(qualityFraction) now interpolates the total input pixel fraction between the supported
minimum and full resolution, replacing the three-bucket fixed selector above. The minimum is an
internal implementation value, not a documented numeric guarantee. Interpolation is linear in
total input pixels, rather than each dimension.
The public name and finite 0f..1f validation remain unchanged. Renderer resource limits and
whole-pixel rounding still apply.
Quality = Fixed(1f) and Performance = Fixed(0f) retain their previous scales.
Balanced = Fixed(0.5f) requests the midpoint between minimum and full-resolution pixel counts.
Adaptive retains its previous scales, workload thresholds, cadence handling, and hysteresis;
its tiers are resolved independently from fixed quality.
The implementation preserves the existing minimum fixed resolution. It is not a newly measured visual quality threshold. Fresh paired visual and performance testing remains necessary before changing Adaptive's default behavior. Earlier benchmark tables describe the old fixed profiles and must not be interpreted as measurements of this new mapping.