change prefix of all public compile time options from SW_ to RLSW_ (#6029)

This commit is contained in:
Bigfoot
2026-07-30 10:05:20 +02:00
committed by GitHub
parent ea0dcbdb7c
commit e5aaed2a3f

110
src/external/rlsw.h vendored
View File

@@ -51,13 +51,13 @@
* rlsw capabilities could be customized defining some internal
* values before library inclusion (default values listed):
*
* #define SW_FRAMEBUFFER_OUTPUT_BGRA true
* #define SW_FRAMEBUFFER_COLOR_TYPE R8G8B8A8
* #define SW_FRAMEBUFFER_DEPTH_TYPE D32
* #define SW_MAX_PROJECTION_STACK_SIZE 2
* #define SW_MAX_MODELVIEW_STACK_SIZE 8
* #define SW_MAX_TEXTURE_STACK_SIZE 2
* #define SW_MAX_TEXTURES 128
* #define RLSW_FRAMEBUFFER_OUTPUT_BGRA true
* #define RLSW_FRAMEBUFFER_COLOR_TYPE R8G8B8A8
* #define RLSW_FRAMEBUFFER_DEPTH_TYPE D32
* #define RLSW_MAX_PROJECTION_STACK_SIZE 2
* #define RLSW_MAX_MODELVIEW_STACK_SIZE 8
* #define RLSW_MAX_TEXTURE_STACK_SIZE 2
* #define RLSW_MAX_TEXTURES 128
*
*
* LICENSE: MIT
@@ -95,54 +95,54 @@
//----------------------------------------------------------------------------------
// RLSW Configuration
//----------------------------------------------------------------------------------
#ifndef SW_FRAMEBUFFER_OUTPUT_BGRA
#define SW_FRAMEBUFFER_OUTPUT_BGRA true
#ifndef RLSW_FRAMEBUFFER_OUTPUT_BGRA
#define RLSW_FRAMEBUFFER_OUTPUT_BGRA true
#endif
#ifndef SW_FRAMEBUFFER_COLOR_TYPE
#define SW_FRAMEBUFFER_COLOR_TYPE R8G8B8A8 // Or R5G6B5, R3G3B2, etc; see `sw_pixelformat_t`
#ifndef RLSW_FRAMEBUFFER_COLOR_TYPE
#define RLSW_FRAMEBUFFER_COLOR_TYPE R8G8B8A8 // Or R5G6B5, R3G3B2, etc; see `sw_pixelformat_t`
#endif
#ifndef SW_FRAMEBUFFER_DEPTH_TYPE
#define SW_FRAMEBUFFER_DEPTH_TYPE D32 // Or D16, D8
#ifndef RLSW_FRAMEBUFFER_DEPTH_TYPE
#define RLSW_FRAMEBUFFER_DEPTH_TYPE D32 // Or D16, D8
#endif
#ifndef SW_MAX_PROJECTION_STACK_SIZE
#define SW_MAX_PROJECTION_STACK_SIZE 2
#ifndef RLSW_MAX_PROJECTION_STACK_SIZE
#define RLSW_MAX_PROJECTION_STACK_SIZE 2
#endif
#ifndef SW_MAX_MODELVIEW_STACK_SIZE
#define SW_MAX_MODELVIEW_STACK_SIZE 8
#ifndef RLSW_MAX_MODELVIEW_STACK_SIZE
#define RLSW_MAX_MODELVIEW_STACK_SIZE 8
#endif
#ifndef SW_MAX_TEXTURE_STACK_SIZE
#define SW_MAX_TEXTURE_STACK_SIZE 2
#ifndef RLSW_MAX_TEXTURE_STACK_SIZE
#define RLSW_MAX_TEXTURE_STACK_SIZE 2
#endif
#ifndef SW_MAX_FRAMEBUFFERS
#define SW_MAX_FRAMEBUFFERS 8
#ifndef RLSW_MAX_FRAMEBUFFERS
#define RLSW_MAX_FRAMEBUFFERS 8
#endif
#ifndef SW_MAX_TEXTURES
#define SW_MAX_TEXTURES 128
#ifndef RLSW_MAX_TEXTURES
#define RLSW_MAX_TEXTURES 128
#endif
// Enable the use of a lookup table for uint8_t to float conversion
// Requires an additional 1KB of global memory
// Disabled when SIMD intrinsics are enabled
#ifndef SW_USE_COLOR_LUT
#ifndef RLSW_USE_COLOR_LUT
#if RLSW_USE_SIMD_INTRINSICS
#define SW_USE_COLOR_LUT false
#define RLSW_USE_COLOR_LUT false
#else
#define SW_USE_COLOR_LUT true
#define RLSW_USE_COLOR_LUT true
#endif
#endif
// Full NPOT texture support (enabled by default)
// When disabled, SW_REPEAT requires POT on its axis (fast bitmask wrap)
// SW_CLAMP remains supported for any dimension, per-axis
#ifndef SW_SUPPORT_NPOT_TEXTURE
# define SW_SUPPORT_NPOT_TEXTURE true
#ifndef RLSW_SUPPORT_NPOT_TEXTURE
# define RLSW_SUPPORT_NPOT_TEXTURE true
#endif
//----------------------------------------------------------------------------------
@@ -906,15 +906,15 @@ SWAPI void swGetFramebufferAttachmentParameteriv(SWattachment attachment, SWatta
#define SW_CONCAT(a, b) a##b
#define SW_CONCATX(a, b) SW_CONCAT(a, b)
#define SW_FRAMEBUFFER_COLOR8_GET(c,p,o) SW_CONCATX(sw_pixel_read_color8_, SW_FRAMEBUFFER_COLOR_TYPE)((c),(p),(o))
#define SW_FRAMEBUFFER_COLOR_GET(c,p,o) SW_CONCATX(sw_pixel_read_color_, SW_FRAMEBUFFER_COLOR_TYPE)((c),(p),(o))
#define SW_FRAMEBUFFER_COLOR_SET(p,c,o) SW_CONCATX(sw_pixel_write_color_, SW_FRAMEBUFFER_COLOR_TYPE)((p),(c),(o))
#define SW_FRAMEBUFFER_COLOR8_GET(c,p,o) SW_CONCATX(sw_pixel_read_color8_, RLSW_FRAMEBUFFER_COLOR_TYPE)((c),(p),(o))
#define SW_FRAMEBUFFER_COLOR_GET(c,p,o) SW_CONCATX(sw_pixel_read_color_, RLSW_FRAMEBUFFER_COLOR_TYPE)((c),(p),(o))
#define SW_FRAMEBUFFER_COLOR_SET(p,c,o) SW_CONCATX(sw_pixel_write_color_, RLSW_FRAMEBUFFER_COLOR_TYPE)((p),(c),(o))
#define SW_FRAMEBUFFER_DEPTH_GET(p,o) SW_CONCATX(sw_pixel_read_depth_, SW_FRAMEBUFFER_DEPTH_TYPE)((p),(o))
#define SW_FRAMEBUFFER_DEPTH_SET(p,d,o) SW_CONCATX(sw_pixel_write_depth_, SW_FRAMEBUFFER_DEPTH_TYPE)((p),(d),(o))
#define SW_FRAMEBUFFER_DEPTH_GET(p,o) SW_CONCATX(sw_pixel_read_depth_, RLSW_FRAMEBUFFER_DEPTH_TYPE)((p),(o))
#define SW_FRAMEBUFFER_DEPTH_SET(p,d,o) SW_CONCATX(sw_pixel_write_depth_, RLSW_FRAMEBUFFER_DEPTH_TYPE)((p),(d),(o))
#define SW_FRAMEBUFFER_COLOR_FORMAT SW_CONCATX(SW_PIXELFORMAT_COLOR_, SW_FRAMEBUFFER_COLOR_TYPE)
#define SW_FRAMEBUFFER_DEPTH_FORMAT SW_CONCATX(SW_PIXELFORMAT_DEPTH_, SW_FRAMEBUFFER_DEPTH_TYPE)
#define SW_FRAMEBUFFER_COLOR_FORMAT SW_CONCATX(SW_PIXELFORMAT_COLOR_, RLSW_FRAMEBUFFER_COLOR_TYPE)
#define SW_FRAMEBUFFER_DEPTH_FORMAT SW_CONCATX(SW_PIXELFORMAT_DEPTH_, RLSW_FRAMEBUFFER_DEPTH_TYPE)
#define SW_FRAMEBUFFER_COLOR_SIZE SW_PIXELFORMAT_SIZE[SW_FRAMEBUFFER_COLOR_FORMAT]
#define SW_FRAMEBUFFER_DEPTH_SIZE SW_PIXELFORMAT_SIZE[SW_FRAMEBUFFER_DEPTH_FORMAT]
@@ -1072,9 +1072,9 @@ typedef struct {
float pointRadius; // Rasterized point radius
float lineWidth; // Rasterized line width
sw_matrix_t stackProjection[SW_MAX_PROJECTION_STACK_SIZE]; // Projection matrix stack for push/pop operations
sw_matrix_t stackModelview[SW_MAX_MODELVIEW_STACK_SIZE]; // Modelview matrix stack for push/pop operations
sw_matrix_t stackTexture[SW_MAX_TEXTURE_STACK_SIZE]; // Texture matrix stack for push/pop operations
sw_matrix_t stackProjection[RLSW_MAX_PROJECTION_STACK_SIZE]; // Projection matrix stack for push/pop operations
sw_matrix_t stackModelview[RLSW_MAX_MODELVIEW_STACK_SIZE]; // Modelview matrix stack for push/pop operations
sw_matrix_t stackTexture[RLSW_MAX_TEXTURE_STACK_SIZE]; // Texture matrix stack for push/pop operations
uint32_t stackProjectionCounter; // Counter for matrix stack operations
uint32_t stackModelviewCounter; // Counter for matrix stack operations
uint32_t stackTextureCounter; // Counter for matrix stack operations
@@ -1112,7 +1112,7 @@ typedef struct {
//----------------------------------------------------------------------------------
static sw_context_t RLSW = { 0 };
#if SW_USE_COLOR_LUT
#if RLSW_USE_COLOR_LUT
static float SW_LUT_UINT8_TO_FLOAT[256] = { 0 };
#endif
@@ -1428,7 +1428,7 @@ static SW_INLINE void sw_color8_to_color(float *SW_RESTRICT dst, const uint8_t *
vfloat32m1_t vnorm = __riscv_vfmul_vf_f32m1(vsrc_f32, SW_INV_255, vl); // Multiply by 1/255.0 to normalize
__riscv_vse32_v_f32m1(dst, vnorm, vl); // Store result
#elif SW_USE_COLOR_LUT
#elif RLSW_USE_COLOR_LUT
dst[0] = SW_LUT_UINT8_TO_FLOAT[src[0]];
dst[1] = SW_LUT_UINT8_TO_FLOAT[src[1]];
dst[2] = SW_LUT_UINT8_TO_FLOAT[src[2]];
@@ -2403,7 +2403,7 @@ static void sw_texture_sample_nearest(float *SW_RESTRICT color, const sw_texture
{
int x, y;
#if SW_SUPPORT_NPOT_TEXTURE
#if RLSW_SUPPORT_NPOT_TEXTURE
if (tex->sWrap == SW_REPEAT) x = (int)(sw_fract(u)*tex->width);
else x = (int)(sw_saturate(u)*tex->width);
@@ -2436,7 +2436,7 @@ static void sw_texture_sample_linear(float *SW_RESTRICT color, const sw_texture_
if (tex->sWrap == SW_REPEAT)
{
#if SW_SUPPORT_NPOT_TEXTURE
#if RLSW_SUPPORT_NPOT_TEXTURE
x0 = (x0%tex->width + tex->width)%tex->width;
x1 = (x1%tex->width + tex->width)%tex->width;
#else
@@ -2452,7 +2452,7 @@ static void sw_texture_sample_linear(float *SW_RESTRICT color, const sw_texture_
if (tex->tWrap == SW_REPEAT)
{
#if SW_SUPPORT_NPOT_TEXTURE
#if RLSW_SUPPORT_NPOT_TEXTURE
y0 = (y0%tex->height + tex->height)%tex->height;
y1 = (y1%tex->height + tex->height)%tex->height;
#else
@@ -2617,7 +2617,7 @@ static void sw_framebuffer_output_fast(void *dst, const sw_texture_t *buffer)
uint8_t *d = (uint8_t *)dst;
#if SW_FRAMEBUFFER_OUTPUT_BGRA && (SW_FRAMEBUFFER_COLOR_FORMAT == SW_PIXELFORMAT_COLOR_R8G8B8A8)
#if RLSW_FRAMEBUFFER_OUTPUT_BGRA && (SW_FRAMEBUFFER_COLOR_FORMAT == SW_PIXELFORMAT_COLOR_R8G8B8A8)
for (int y = height - 1; y >= 0; y--)
{
const uint8_t *src = (uint8_t *)(buffer->pixels) + y*width*4;
@@ -2629,7 +2629,7 @@ static void sw_framebuffer_output_fast(void *dst, const sw_texture_t *buffer)
d[3] = src[3];
}
}
#elif SW_FRAMEBUFFER_OUTPUT_BGRA && (SW_FRAMEBUFFER_COLOR_FORMAT == SW_PIXELFORMAT_COLOR_R8G8B8)
#elif RLSW_FRAMEBUFFER_OUTPUT_BGRA && (SW_FRAMEBUFFER_COLOR_FORMAT == SW_PIXELFORMAT_COLOR_R8G8B8)
for (int y = height - 1; y >= 0; y--)
{
const uint8_t *src = (uint8_t *)(buffer->pixels) + y*width*3;
@@ -2670,7 +2670,7 @@ static void sw_framebuffer_output_copy(void *dst, const sw_texture_t *buffer, in
uint8_t color[4];
SW_FRAMEBUFFER_COLOR8_GET(color, line, 0);
#if SW_FRAMEBUFFER_OUTPUT_BGRA
#if RLSW_FRAMEBUFFER_OUTPUT_BGRA
if (format == SW_PIXELFORMAT_COLOR_R8G8B8A8 || format == SW_PIXELFORMAT_COLOR_R8G8B8)
{
uint8_t tmp = color[0]; color[0] = color[2]; color[2] = tmp;
@@ -2716,7 +2716,7 @@ static void sw_framebuffer_output_blit(void *dst, const sw_texture_t *buffer,
uint8_t color[4];
SW_FRAMEBUFFER_COLOR8_GET(color, pixel, 0);
#if SW_FRAMEBUFFER_OUTPUT_BGRA
#if RLSW_FRAMEBUFFER_OUTPUT_BGRA
if (format == SW_PIXELFORMAT_COLOR_R8G8B8A8 || format == SW_PIXELFORMAT_COLOR_R8G8B8)
{
uint8_t tmp = color[0]; color[0] = color[2]; color[2] = tmp;
@@ -3900,13 +3900,13 @@ bool swInit(int w, int h)
return false;
}
if (!sw_pool_init(&RLSW.framebufferPool, SW_MAX_FRAMEBUFFERS, sizeof(sw_framebuffer_t)))
if (!sw_pool_init(&RLSW.framebufferPool, RLSW_MAX_FRAMEBUFFERS, sizeof(sw_framebuffer_t)))
{
swClose();
return false;
}
if (!sw_pool_init(&RLSW.texturePool, SW_MAX_TEXTURES, sizeof(sw_texture_t)))
if (!sw_pool_init(&RLSW.texturePool, RLSW_MAX_TEXTURES, sizeof(sw_texture_t)))
{
swClose();
return false;
@@ -3953,7 +3953,7 @@ bool swInit(int w, int h)
RLSW.polyMode = SW_FILL;
RLSW.cullFace = SW_BACK;
#if SW_USE_COLOR_LUT
#if RLSW_USE_COLOR_LUT
for (int i = 0; i < 256; i++) SW_LUT_UINT8_TO_FLOAT[i] = (float)i*SW_INV_255;
#endif
@@ -4329,7 +4329,7 @@ void swPushMatrix(void)
{
case SW_PROJECTION:
{
if (RLSW.stackProjectionCounter >= SW_MAX_PROJECTION_STACK_SIZE)
if (RLSW.stackProjectionCounter >= RLSW_MAX_PROJECTION_STACK_SIZE)
{
RLSW.errCode = SW_STACK_OVERFLOW;
return;
@@ -4347,7 +4347,7 @@ void swPushMatrix(void)
} break;
case SW_MODELVIEW:
{
if (RLSW.stackModelviewCounter >= SW_MAX_MODELVIEW_STACK_SIZE)
if (RLSW.stackModelviewCounter >= RLSW_MAX_MODELVIEW_STACK_SIZE)
{
RLSW.errCode = SW_STACK_OVERFLOW;
return;
@@ -4365,7 +4365,7 @@ void swPushMatrix(void)
} break;
case SW_TEXTURE:
{
if (RLSW.stackTextureCounter >= SW_MAX_TEXTURE_STACK_SIZE)
if (RLSW.stackTextureCounter >= RLSW_MAX_TEXTURE_STACK_SIZE)
{
RLSW.errCode = SW_STACK_OVERFLOW;
return;
@@ -5095,7 +5095,7 @@ void swTexParameteri(int param, int value)
case SW_TEXTURE_WRAP_S:
{
if (!sw_is_texture_wrap_valid(value)) { RLSW.errCode = SW_INVALID_ENUM; return; }
#if !SW_SUPPORT_NPOT_TEXTURE
#if !RLSW_SUPPORT_NPOT_TEXTURE
if (value == SW_REPEAT && (RLSW.boundTexture->width & RLSW.boundTexture->wMinus1) != 0)
{
RLSW.errCode = SW_INVALID_OPERATION;
@@ -5107,7 +5107,7 @@ void swTexParameteri(int param, int value)
case SW_TEXTURE_WRAP_T:
{
if (!sw_is_texture_wrap_valid(value)) { RLSW.errCode = SW_INVALID_ENUM; return; }
#if !SW_SUPPORT_NPOT_TEXTURE
#if !RLSW_SUPPORT_NPOT_TEXTURE
if (value == SW_REPEAT && (RLSW.boundTexture->height & RLSW.boundTexture->hMinus1) != 0)
{
RLSW.errCode = SW_INVALID_OPERATION;