BBS:      TELESC.NET.BR
Assunto:  src/conio/scale_spinner.csrc/conio/CMakeLists.txt GNUmakefile scale.c
De:       Deuc¨
Data:     Wed, 27 May 2026 17:29:16 -0700
-----------------------------------------------------------
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.
n
---
  mSynchronetn  hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net

-----------------------------------------------------------
[Voltar]