docs: close out Θ-W6 and Phase Θ, and file two legibility-pass deferrals
This commit is contained in:
@@ -252,3 +252,60 @@ controls stacked internally (e.g. the filter's static control knobs above its en
|
||||
knobs) per Daniel's design notes once they land. The VELOCITY↔VOICE adjacency criterion
|
||||
is re-evaluated (or explicitly retired) against the new layout rather than the old
|
||||
per-row one.
|
||||
|
||||
## The AA waveform stroke's cost on the docked bank panel's card thumbnails
|
||||
|
||||
**Context (what shipped — Θ-W6-T1, legibility-and-antialiasing).** The antialiasing
|
||||
audit fixed the min/max waveform column plot by adding an AA `LICE_FLine` stroke across
|
||||
each column's extremes, on top of the existing fill (`draw_kit.cpp` `drawWaveform`).
|
||||
`drawWaveform` is shared by the editor's hero waveform lanes, the docked bank panel's
|
||||
card thumbnails, and the browse cards — the stroke lands on all three.
|
||||
|
||||
**The wart.** Measured cost (Release, MSVC 14.44, real LICE, 24 stereo cards ×
|
||||
136 columns = 6528 columns): fill alone 0.070 ms per full-grid repaint, fill+stroke
|
||||
0.48 ms — the stroke adds ~0.41 ms, about 2.5% of a 60 Hz frame. At card-thumbnail
|
||||
scale the added smoothness is far less visible than on the editor's hero lanes, so the
|
||||
cost is paid on every repaint of every card for a benefit concentrated in one consumer.
|
||||
|
||||
**Intended fix.** The identified cheap lever: skip the stroke below a card-sized box
|
||||
and keep it only on the editor's hero lanes.
|
||||
|
||||
**The constraint the fix MUST handle.** Not done, because it is a product call about
|
||||
where the comb artifact — the min/max column plot's jagged outline — actually reads
|
||||
badly enough to matter, not a performance-forced decision (2.5% of a frame on
|
||||
hover/scroll/drag repaint, not a continuous cost, is not itself disqualifying).
|
||||
|
||||
**Priority / risk.** Low. The measurement is a one-off scratchpad number
|
||||
(`docs/product/visual-design-language.md` §8), not a standing regression guard —
|
||||
re-measure before relying on it again.
|
||||
|
||||
**Done looks like.** A size threshold (or explicit per-consumer flag) below which
|
||||
`drawWaveform` skips the AA stroke, with the panel/browse cards confirmed still
|
||||
readable and the editor's hero lanes unchanged.
|
||||
|
||||
## High-DPI host scaling is unverified (distinct from the antialiasing audit)
|
||||
|
||||
**Context (what shipped — Θ-W6-T1, legibility-and-antialiasing).** The antialiasing
|
||||
audit (item 13) confirmed every drawn surface renders smooth at 100% scale — the
|
||||
disposition table in `docs/product/visual-design-language.md` §8 is the record. That
|
||||
audit is about rasterization quality at the pixel level the plugin already draws at;
|
||||
it says nothing about what happens when a host scales the plugin window itself.
|
||||
|
||||
**The wart.** Nothing in the instrument implements `IPlugViewContentScaleSupport`. A
|
||||
host that applies DPI scaling to the plugin window resamples the already-rasterized
|
||||
output rather than asking the plugin to redraw at the target resolution — every AA
|
||||
guarantee the audit just confirmed (and the piano-key uniform-width guarantee, §8.1)
|
||||
holds only at the client-pixel level the plugin itself draws, not above it.
|
||||
|
||||
**Intended fix.** Not proposed. Implementing `IPlugViewContentScaleSupport` (or
|
||||
confirming the host compositor's resampling is acceptable without it) is the shape of
|
||||
a fix, not yet scoped.
|
||||
|
||||
**The constraint the fix MUST handle.** Not yet known — no design work has started.
|
||||
|
||||
**Priority / risk.** Not stated. Recorded as a gap, not a defect: no host behavior has
|
||||
been observed to be wrong, only unverified.
|
||||
|
||||
**Done looks like.** Either `IPlugViewContentScaleSupport` is implemented and the
|
||||
AA/uniform-width guarantees are re-verified at a scaled client size, or a decision is
|
||||
recorded that host-side resampling of the rasterized output is an accepted tradeoff.
|
||||
|
||||
Reference in New Issue
Block a user