From a14cc82d46ea3c1b39e9bdb6ff752bce68bd8fd4 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Fri, 31 Oct 2025 15:58:05 +0500 Subject: [PATCH] engine: add buffer size argument to RefAPI's Mod_ProcessRenderData, bump RefAPI version --- engine/client/cl_game.c | 2 +- engine/common/model.c | 4 ++-- engine/ref_api.h | 5 +++-- ref/gl/gl_context.c | 2 +- ref/null/r_context.c | 2 +- ref/soft/r_context.c | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/engine/client/cl_game.c b/engine/client/cl_game.c index 40d62c52..d5ea0b47 100644 --- a/engine/client/cl_game.c +++ b/engine/client/cl_game.c @@ -1282,7 +1282,7 @@ static qboolean CL_LoadHudSprite( const char *szSpriteName, model_t *m_pSprite, else { Mod_LoadSpriteModel( m_pSprite, buf, size, &loaded ); - ref.dllFuncs.Mod_ProcessRenderData( m_pSprite, true, buf ); + ref.dllFuncs.Mod_ProcessRenderData( m_pSprite, true, buf, size ); } Mem_Free( buf ); diff --git a/engine/common/model.c b/engine/common/model.c index 05686f43..2afcb3bc 100644 --- a/engine/common/model.c +++ b/engine/common/model.c @@ -87,7 +87,7 @@ static void Mod_FreeUserData( model_t *mod ) #if !XASH_DEDICATED else { - ref.dllFuncs.Mod_ProcessRenderData( mod, false, NULL ); + ref.dllFuncs.Mod_ProcessRenderData( mod, false, NULL, 0 ); } #endif } @@ -334,7 +334,7 @@ model_t *Mod_LoadModel( model_t *mod, qboolean crash ) #if !XASH_DEDICATED else { - loaded2 = ref.dllFuncs.Mod_ProcessRenderData( mod, true, buf ); + loaded2 = ref.dllFuncs.Mod_ProcessRenderData( mod, true, buf, length ); } #endif } diff --git a/engine/ref_api.h b/engine/ref_api.h index e87397eb..ed119f69 100644 --- a/engine/ref_api.h +++ b/engine/ref_api.h @@ -58,7 +58,8 @@ GNU General Public License for more details. // Removed R_DrawTileClear and Mod_LoadMapSprite, as they're implemented on engine side // Removed FillRGBABlend. Now FillRGBA accepts rendermode parameter. // 10. Added R_GetWindowHandle to retrieve platform-specific window object. -#define REF_API_VERSION 10 +// 11. Added size argument to Mod_ProcessRenderData +#define REF_API_VERSION 11 #define TF_SKY (TF_SKYSIDE|TF_NOMIPMAP|TF_ALLOW_NEAREST) #define TF_FONT (TF_NOMIPMAP|TF_CLAMP|TF_ALLOW_NEAREST) @@ -565,7 +566,7 @@ typedef struct ref_interface_s // model management // flags ignored for everything except spritemodels - qboolean (*Mod_ProcessRenderData)( model_t *mod, qboolean create, const byte *buffer ); + qboolean (*Mod_ProcessRenderData)( model_t *mod, qboolean create, const byte *buffer, size_t buffersize ); void (*Mod_StudioLoadTextures)( model_t *mod, void *data ); // efx implementation diff --git a/ref/gl/gl_context.c b/ref/gl/gl_context.c index 53bf1235..be380035 100644 --- a/ref/gl/gl_context.c +++ b/ref/gl/gl_context.c @@ -140,7 +140,7 @@ static void Mod_UnloadTextures( model_t *mod ) } } -static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf ) +static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf, size_t buffersize ) { qboolean loaded = false; diff --git a/ref/null/r_context.c b/ref/null/r_context.c index c7ad177f..9d87e9fc 100644 --- a/ref/null/r_context.c +++ b/ref/null/r_context.c @@ -194,7 +194,7 @@ static int R_GetSpriteTexture( const model_t *m_pSpriteModel, int frame ) return 0; } -static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buffer ) +static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buffer, size_t buffersize ) { return true; } diff --git a/ref/soft/r_context.c b/ref/soft/r_context.c index 00e02d28..c81373bf 100644 --- a/ref/soft/r_context.c +++ b/ref/soft/r_context.c @@ -64,7 +64,7 @@ static void GAME_EXPORT CL_FillRGBA( int rendermode, float _x, float _y, float _ void Mod_UnloadTextures( model_t *mod ); -static qboolean GAME_EXPORT Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf ) +static qboolean GAME_EXPORT Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf, size_t buffersize ) { qboolean loaded = false;