https://gitlab.synchro.net/main/sbbs/-/commit/85593274bd6e22a844637bd9
Added Files:
src/conio/scale_spinner.c
Modified Files:
src/conio/CMakeLists.txt GNUmakefile scale.c
Log Message:
Optimize scaled row interpolation
The scaler commonly applies integer scaling before the final
aspect-correction interpolation. That produces repeated adjacent rows,
but interpolate_height() still blended those rows pixel by pixel.
Track the vertical repeat count from multiply_scale() and let interpolate_height() copy rows that are known duplicates. Also replace
its static temporary row buffers with direct source row pointers and use
the actual row byte count.
This removes thread-hostile static state and avoids unnecessary row
copies.
On the scale_spinner X11 profiling run with a dense 0xB2 screen,
sampled totals dropped from 4,132 to 2,630 (-36.4%). do_scale samples
dropped from 3,407 to 1,844 (-45.9%), and interpolate_height dropped
from 3,186 to 1,580 (-50.4%).
Add a small scale_spinner profiling binary target for exercising
one-cell updates under internal/external scaling.
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)