• src/conio/scale.c

    From Deucе@VERT to Git commit to main/sbbs/master on Fri May 14 11:23:13 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/519520da478586166e0cbe5f
    Modified Files:
    src/conio/scale.c
    Log Message:
    Make a generic odd pointy scaler.

    Since we have all odd numbers thanks to the pointy scaler, and we
    have 2x thanks to xBR, we should now be able to build any integer
    scaling from a combination of those two scalers.

    This, of course, assumes you have enough CPU and RAM to actually
    do the scaling you want... powers of two will likely be the worst
    case for scaling.

    Also, do pointy scaling before xBR.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri May 14 16:11:05 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/27980120d384a8180f69ac22
    Modified Files:
    src/conio/scale.c
    Log Message:
    Include the necessary

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wed May 19 12:55:05 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/176075498ed8cc04b6eb0581
    Modified Files:
    src/conio/scale.c
    Log Message:
    On scale fail, but both buffers back in the pool

    If do_scale ever failed, it would result in graphics buffers not
    returning to the pool, resulting in them never being reused.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thu May 20 01:17:03 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/a47c0a08a85fdb9fff8234c5
    Modified Files:
    src/conio/scale.c
    Log Message:
    Declare blend() as inline to eliminate gcc warning

    warning: always_inline function might not be inlinable [-Wattributes]

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu May 20 01:28:27 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/0c28f0192b77c5b42e47a33a
    Modified Files:
    src/conio/scale.c
    Log Message:
    Screw it, if the compiler doesn't optimize it, just use more CPU.

    At least the warnings are gone.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thu May 20 20:34:08 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/e5207b5673336e23e80c0754
    Modified Files:
    src/conio/scale.c
    Log Message:
    Fix error: ‘stderr’ undeclared (first use in this function)

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sun Apr 30 23:55:12 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/3d8c103ac68b26d823749c94
    Modified Files:
    src/conio/scale.c
    Log Message:
    Fix off-by-one error and increase precision

    Cleans up artifacts in interpolated values nicely.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon May 1 09:16:26 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/2d915f2b0149c11b98b68d5d
    Modified Files:
    src/conio/scale.c
    Log Message:
    Scaling optimizations

    Use weight == 0 instead of int == double when deciding to copy pixel
    When interpolating width, do it by column, not row

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Jul 3 22:58:58 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/476f5e8a5f2b11e42c5e19dc
    Modified Files:
    src/conio/scale.c
    Log Message:
    UBSan claims this is undefined behaviour...

    I don't believe them, but I'll fix it anyway.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Oct 22 13:51:54 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/19e20fd9e27799f0c9bc77bd
    Modified Files:
    src/conio/scale.c
    Log Message:
    Decorate some arguments to allow compiler to optimize harder

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Oct 22 14:35:00 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/30a163fae2b0e9fe34f08acb
    Modified Files:
    src/conio/scale.c
    Log Message:
    Don't use the C99 restrict keyword because MSVC is apparently still
    more than 25 years behind the C standard.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Nov 4 19:49:46 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/80b9fccc77dbfe64da1ff062
    Modified Files:
    src/conio/scale.c
    Log Message:
    Add most const decorations.

    Not sure what macOS is doing, but it looks like something weird is
    happening in interpolate_width... maybe some unexpected integer
    promotion?

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Nov 5 09:13:24 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/76d03c231fcf2d6bd76a2bef
    Modified Files:
    src/conio/scale.c
    Log Message:
    Use uint64_t instead of double for interpolation.

    More effort to fix the macOS issue. This could potentially result
    in slight problens with the rightmost pixel, but will protect
    against any weird FP issues and -ffast-math concerns.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net