softsurface: Perform a "divisor known at compile time" optimization

git-svn-id: https://svn.eduke32.com/eduke32@6947 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2018-07-23 02:55:46 +00:00
parent 142b97b9fb
commit 0116b51b2d

View file

@ -24,7 +24,8 @@ static uint32_t pPal[256];
// lookup table to find the source position within a scanline // lookup table to find the source position within a scanline
static uint16_t* scanPosLookupTable; static uint16_t* scanPosLookupTable;
static uint32_t roundUp(uint32_t num, uint32_t multiple) template <uint32_t multiple>
static uint32_t roundUp(uint32_t num)
{ {
return (num+multiple-1)/multiple * multiple; return (num+multiple-1)/multiple * multiple;
} }
@ -59,7 +60,7 @@ bool softsurface_initialize(vec2_t bufferResolution,
// allocate one continuous block of memory large enough to hold the buffer, the palette, // allocate one continuous block of memory large enough to hold the buffer, the palette,
// and the scanPosLookupTable while maintaining alignment for each // and the scanPosLookupTable while maintaining alignment for each
uint32_t bufferSize = roundUp(bufferRes.x * bufferRes.y, 16); uint32_t bufferSize = roundUp<16>(bufferRes.x * bufferRes.y);
buffer = (uint8_t*) Xaligned_alloc(16, bufferSize + sizeof(uint16_t)*destBufferRes.x); buffer = (uint8_t*) Xaligned_alloc(16, bufferSize + sizeof(uint16_t)*destBufferRes.x);
scanPosLookupTable = (uint16_t*) (buffer + bufferSize); scanPosLookupTable = (uint16_t*) (buffer + bufferSize);