Try to reduce memory usage.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5902 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
b0e4884b7b
commit
b34618507a
5 changed files with 22 additions and 19 deletions
|
@ -6383,6 +6383,8 @@ double Host_Frame (double time)
|
||||||
cl.playerview[i].audio.reverbtype = 0;
|
cl.playerview[i].audio.reverbtype = 0;
|
||||||
VectorClear(cl.playerview[i].audio.velocity);
|
VectorClear(cl.playerview[i].audio.velocity);
|
||||||
}
|
}
|
||||||
|
if (cls.state && r_worldentity.model && r_worldentity.model->loadstate == MLS_NOTLOADED)
|
||||||
|
Mod_LoadModel(cl.worldmodel, MLV_WARNSYNC);
|
||||||
|
|
||||||
if (SCR_UpdateScreen && !vid.isminimized)
|
if (SCR_UpdateScreen && !vid.isminimized)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,14 +37,8 @@ cvar_t r_dodgytgafiles = CVARD("r_dodgytgafiles", "0", "Many old glquake engines
|
||||||
cvar_t r_dodgypcxfiles = CVARD("r_dodgypcxfiles", "0", "When enabled, this will ignore the palette stored within pcx files, for compatibility with quake2.");
|
cvar_t r_dodgypcxfiles = CVARD("r_dodgypcxfiles", "0", "When enabled, this will ignore the palette stored within pcx files, for compatibility with quake2.");
|
||||||
#endif
|
#endif
|
||||||
cvar_t r_dodgymiptex = CVARD("r_dodgymiptex", "1", "When enabled, this will force regeneration of mipmaps, discarding mips1-4 like glquake did. This may eg solve fullbright issues with some maps, but may reduce distant detail levels.");
|
cvar_t r_dodgymiptex = CVARD("r_dodgymiptex", "1", "When enabled, this will force regeneration of mipmaps, discarding mips1-4 like glquake did. This may eg solve fullbright issues with some maps, but may reduce distant detail levels.");
|
||||||
static void QDECL R_Image_BuggyCvar (struct cvar_s *var, char *oldvalue)
|
cvar_t r_keepimages = CVARD("r_keepimages", "0", "Retain unused images in memory for slightly faster map loading.\n0: Redundant images will be purged after each map change.\n1: Images will be retained until vid_reload (potentially consuming a lot of ram).");
|
||||||
{ //force these cvars to value 1 if they're empty.
|
cvar_t r_ignoremapprefixes = CVARD("r_ignoremapprefixes", "0", "Ignores when textures were loaded from map-specific paths.\n0: textures/foo/tex.tga will not be confused with textures/foo/tex.tga.\n1: The same texture might be loaded multiple times over.");
|
||||||
//cvars using this should be changed to 0 by default, once our engine bugs are debugged/fixed.
|
|
||||||
if (!*var->string)
|
|
||||||
var->ival = var->value = true;
|
|
||||||
}
|
|
||||||
cvar_t r_keepimages = CVARCD("r_keepimages", "", R_Image_BuggyCvar, "Retain unused images in memory for slightly faster map loading. FIXME: a setting of 0 may be crashy! (empty is treated as 1 for now).\n0: Redundant images will be purged after each map change.\n1: Images will be retained until vid_reload (potentially consuming a lot of ram).");
|
|
||||||
cvar_t r_ignoremapprefixes = CVARCD("r_ignoremapprefixes", "", R_Image_BuggyCvar, "Ignores when textures were loaded from map-specific paths. FIXME: empty is currently interpretted as 1 because the alternative is too memory hungary with r_keepimages 1.");
|
|
||||||
|
|
||||||
char *r_defaultimageextensions =
|
char *r_defaultimageextensions =
|
||||||
#ifdef IMAGEFMT_DDS
|
#ifdef IMAGEFMT_DDS
|
||||||
|
|
|
@ -505,15 +505,18 @@ qboolean Mod_PurgeModel(model_t *mod, enum mod_purge_e ptype)
|
||||||
|
|
||||||
#ifdef TERRAIN
|
#ifdef TERRAIN
|
||||||
//we can safely flush all terrain sections at any time
|
//we can safely flush all terrain sections at any time
|
||||||
if (mod->terrain && ptype != MP_MAPCHANGED)
|
if (mod->terrain)
|
||||||
|
{
|
||||||
|
if (ptype == MP_MAPCHANGED)
|
||||||
|
return false; //don't destroy any data there that the user might want to save. FIXME: handle better.
|
||||||
Terr_PurgeTerrainModel(mod, false, true);
|
Terr_PurgeTerrainModel(mod, false, true);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//purge any vbos
|
//purge any vbos
|
||||||
if (mod->type == mod_brush)
|
if (mod->type == mod_brush)
|
||||||
{
|
{
|
||||||
//brush models cannot be safely flushed.
|
if (ptype == MP_FLUSH)
|
||||||
if (ptype != MP_RESET)
|
|
||||||
return false;
|
return false;
|
||||||
#ifndef SERVERONLY
|
#ifndef SERVERONLY
|
||||||
Surf_Clear(mod);
|
Surf_Clear(mod);
|
||||||
|
@ -522,12 +525,7 @@ qboolean Mod_PurgeModel(model_t *mod, enum mod_purge_e ptype)
|
||||||
|
|
||||||
#ifdef TERRAIN
|
#ifdef TERRAIN
|
||||||
if (mod->type == mod_brush || mod->type == mod_heightmap)
|
if (mod->type == mod_brush || mod->type == mod_heightmap)
|
||||||
{
|
|
||||||
//heightmap/terrain models cannot be safely flushed (brush models might have terrain embedded).
|
|
||||||
if (ptype != MP_RESET)
|
|
||||||
return false;
|
|
||||||
Terr_FreeModel(mod);
|
Terr_FreeModel(mod);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
if (mod->type == mod_alias)
|
if (mod->type == mod_alias)
|
||||||
{
|
{
|
||||||
|
@ -1004,6 +1002,8 @@ void Mod_ModelLoaded(void *ctx, void *data, size_t a, size_t b)
|
||||||
if (mod->type == mod_brush)
|
if (mod->type == mod_brush)
|
||||||
{
|
{
|
||||||
Surf_BuildModelLightmaps(mod);
|
Surf_BuildModelLightmaps(mod);
|
||||||
|
r_oldviewcluster = -1; //just in case.
|
||||||
|
r_oldviewcluster2 = -2;
|
||||||
}
|
}
|
||||||
if (mod->type == mod_sprite)
|
if (mod->type == mod_sprite)
|
||||||
{
|
{
|
||||||
|
|
|
@ -737,13 +737,16 @@ void R_PushDlights (void)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (r_dynamic.ival <= 0|| !cl.worldmodel)
|
if (r_dynamic.ival <= 0|| !r_worldentity.model)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!cl.worldmodel->nodes)
|
if (r_worldentity.model->loadstate != MLS_LOADED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
currentmodel = cl.worldmodel;
|
if (!r_worldentity.model->nodes)
|
||||||
|
return;
|
||||||
|
|
||||||
|
currentmodel = r_worldentity.model;
|
||||||
if (!currentmodel->funcs.MarkLights)
|
if (!currentmodel->funcs.MarkLights)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -5309,6 +5309,10 @@ float SV_Frame (void)
|
||||||
if (sv.state < ss_active) //whoops...
|
if (sv.state < ss_active) //whoops...
|
||||||
return delay;
|
return delay;
|
||||||
|
|
||||||
|
//make sure the worldmodel is actually valid...
|
||||||
|
if (sv.world.worldmodel && sv.world.worldmodel->loadstate != MLS_LOADED)
|
||||||
|
Mod_LoadModel(sv.world.worldmodel, MLV_ERROR);
|
||||||
|
|
||||||
SV_CheckVars ();
|
SV_CheckVars ();
|
||||||
|
|
||||||
// send messages back to the clients that had packets read this frame
|
// send messages back to the clients that had packets read this frame
|
||||||
|
|
Loading…
Reference in a new issue