• src/build/Common.gmake src/conio/bitmap_con.c scale.c x_events.c

    From Deucе@1:103/705 to Git commit to main/sbbs/master on Thu May 20 19:13:31 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/b5488bb3082147c8d3ee3d6d
    Modified Files:
    src/build/Common.gmake src/conio/bitmap_con.c scale.c x_events.c
    Log Message:
    Optimizations:1) Keep a rectangle updated per-screen rather than regenerate each time2) Strip palette info when putting pixels into rectangles rather than during scaling3) Tighten up the screen locks a bit4) Don't require a full resend of both screens on an update request5) Only force a redraw for cursor movement when the cursor is visible (And force it whenever the cursor changes)6) Avoid doubles in interpolation7) Heavily optimize interpolate_height() interpolate_width() likely doesn't need it because it's generally not used and also it reads from the next pixel in memory making the prefetchers job easier.8) Fix some memory-leak-on-error issues9) For ARGB8 XImages, manipulate the data directly rather than through XPutPixel()At this point, the scaling and X11 output time is heavily dominated bycache misses. The only really effective way to reduce this hit is tospread the work across all the L3 caches in the system or move it intothe GPU.With the latest updates, at the SyncTERM menu, over 90% of the time isspent in the rendering pipeline, and over 90% of that time is spentthrashing the caches... the only real easy win left is vectorizing, butthat's highly compiler specific.To that end, I've switched to -O3 for release builds. There was a commentthat -finline-functions broke Baja "badly", but that's clearly false since-f-inline-functions has been part of -O2 for quite a while now, and Bajadoesn't seem any more broken that it ever was.
    --- SBBSecho 3.14-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)