QA 15 — Buffer Transitions & HiDPI
How to run
emacs --no-init-file -l qa/15-transitions/test.el EMACS_GPU_DISABLE=1 emacs --no-init-file -l qa/15-transitions/test.el
HiDPI tests are macOS-only (Retina display required).
Checklist — Buffer transitions
TODO 15.1 Crossfade — previous buffer fades out
Press t to cycle between buffers with crossfade enabled.
The previous buffer content must fade out smoothly as the new one appears.
Failure: hard cut (no fade), or the fade shows garbled intermediate frames.
TODO 15.2 Crossfade duration — matches configured value
(setq gpu-buffer-transition-duration 0.5) should produce a 0.5s fade.
Failure: fade is instantaneous or takes much longer than configured.
TODO 15.3 No residue after fade completes
After the crossfade finishes, the new buffer must appear perfectly clean. Failure: faint traces of the previous buffer remain after the fade ends.
TODO 15.4 Pump cadence during fade — 60Hz, smooth
The fade must be smooth (not choppy). At 0.5s duration it should produce ~30 intermediate frames. Failure: visible frame-rate drops during the fade; choppy animation.
TODO 15.5 No crossfade when disabled
(setq gpu-buffer-transitions nil)
Pressing t must produce an instant hard cut with no fade.
Failure: fade still occurs after disabling.
Checklist — HiDPI (macOS Retina only)
TODO 15.6 [macOS] Capture size is 2× the logical frame size
(gpu-capture-frame "/tmp/qa-capture.png")
Open the PNG and verify its pixel dimensions are exactly 2×
the Emacs frame's logical pixel width and height.
Failure: capture is 1× size (not Retina-aware).
TODO 15.7 [macOS] Glyph sharpness — per-physical-pixel AA
Zoom into the capture at 6× (pixel viewer or Preview zoom). Each glyph must show antialiasing on individual physical pixels. Failure: glyphs appear as upscaled 1× bitmaps (blocky edges).
TODO 15.8 [macOS] NS vs Metal parity at 2×
Compare a Metal capture with a NS capture (EMACS_GPU_DISABLE=1). Acceptable: fuzz5% ~0.5%, fuzz20% ~0.05% (AA on glyph edges only). Failure: large structural differences (wrong colors, misaligned text).