Unify gl_mode and sw_mode in r_mode.

This commit is contained in:
Yamagi Burmeister 2018-01-09 14:03:45 +01:00
parent e6b0e19cff
commit 11ad28b711
12 changed files with 53 additions and 102 deletions

View file

@ -28,7 +28,7 @@
# -------------------------
# Build soft render
WITH_REFSOFT:=no
WITH_REFSOFT:=yes
# Enables CD audio playback. CD audio playback is used
# for the background music and doesn't add any further

View file

@ -137,7 +137,7 @@ void
VID_ListModes_f(void)
{
int i;
Com_Printf("Supported video modes (gl_mode):\n");
Com_Printf("Supported video modes (r_mode):\n");
for(i=0; i<VID_NUM_MODES; ++i)
{
Com_Printf(" %s\n", vid_modes[i].description);

View file

@ -325,9 +325,9 @@ GLimp_InitGraphics(int fullscreen, int *pwidth, int *pheight)
if((flags & SDL_OPENGL) && gl_msaa_samples->value)
{
Com_Printf("SDL SetVideoMode failed: %s\n", SDL_GetError());
Com_Printf("Reverting to %s gl_mode %i (%ix%i) without MSAA.\n",
Com_Printf("Reverting to %s r_mode %i (%ix%i) without MSAA.\n",
(flags & fs_flag) ? "fullscreen" : "windowed",
(int) Cvar_VariableValue("gl_mode"), width, height);
(int) Cvar_VariableValue("r_mode"), width, height);
/* Try to recover */
Cvar_SetValue("gl_msaa_samples", 0);
@ -337,10 +337,10 @@ GLimp_InitGraphics(int fullscreen, int *pwidth, int *pheight)
else if (width != 640 || height != 480 || (flags & fs_flag))
{
Com_Printf("SDL SetVideoMode failed: %s\n", SDL_GetError());
Com_Printf("Reverting to windowed gl_mode 4 (640x480).\n");
Com_Printf("Reverting to windowed r_mode 4 (640x480).\n");
/* Try to recover */
Cvar_SetValue("gl_mode", 4);
Cvar_SetValue("r_mode", 4);
Cvar_SetValue("vid_fullscreen", 0);
VID_NewWindow(width, height);
*pwidth = width = 640;
@ -349,7 +349,7 @@ GLimp_InitGraphics(int fullscreen, int *pwidth, int *pheight)
}
else
{
Com_Error(ERR_FATAL, "Failed to revert to gl_mode 4. Exiting...\n");
Com_Error(ERR_FATAL, "Failed to revert to r_mode 4. Exiting...\n");
return false;
}
}

View file

@ -31,10 +31,7 @@
extern void M_ForceMenuOff(void);
static cvar_t *gl_mode;
#ifdef REFSOFT
static cvar_t *sw_mode;
#endif
static cvar_t *r_mode;
static cvar_t *r_hudscale;
static cvar_t *r_consolescale;
static cvar_t *r_menuscale;
@ -180,32 +177,16 @@ ApplyChanges(void *unused)
#endif
}
#ifdef REFSOFT
if (s_renderer_list.curvalue == 2) {
/* custom mode */
if (s_mode_list.curvalue != GetCustomValue(&s_mode_list))
{
/* Restarts automatically */
Cvar_SetValue("sw_mode", s_mode_list.curvalue);
}
else
{
/* Restarts automatically */
Cvar_SetValue("sw_mode", -1);
}
}
else
#endif
/* custom mode */
if (s_mode_list.curvalue != GetCustomValue(&s_mode_list))
{
/* Restarts automatically */
Cvar_SetValue("gl_mode", s_mode_list.curvalue);
Cvar_SetValue("r_mode", s_mode_list.curvalue);
}
else
{
/* Restarts automatically */
Cvar_SetValue("gl_mode", -1);
Cvar_SetValue("r_mode", -1);
}
/* UI scaling */
@ -261,20 +242,6 @@ ApplyChanges(void *unused)
M_ForceMenuOff();
}
#ifdef REFSOFT
static void DriverCallback( void *unused )
{
if (s_renderer_list.curvalue == 2)
{
s_mode_list.curvalue = sw_mode->value;
}
else
{
s_mode_list.curvalue = gl_mode->value;
}
}
#endif
void
VID_MenuInit(void)
{
@ -361,18 +328,11 @@ VID_MenuInit(void)
0
};
if (!gl_mode)
if (!r_mode)
{
gl_mode = Cvar_Get("gl_mode", "4", 0);
r_mode = Cvar_Get("r_mode", "4", 0);
}
#ifdef REFSOFT
if (!sw_mode)
{
sw_mode = Cvar_Get("sw_mode", "4", 0);
}
#endif
if (!r_hudscale)
{
r_hudscale = Cvar_Get("r_hudscale", "-1", CVAR_ARCHIVE);
@ -432,9 +392,6 @@ VID_MenuInit(void)
s_renderer_list.generic.y = (y = 0);
s_renderer_list.itemnames = renderers;
s_renderer_list.curvalue = GetRenderer();
#ifdef REFSOFT
s_renderer_list.generic.callback = DriverCallback;
#endif
s_mode_list.generic.type = MTYPE_SPINCONTROL;
s_mode_list.generic.name = "video mode";
@ -442,16 +399,9 @@ VID_MenuInit(void)
s_mode_list.generic.y = (y += 10);
s_mode_list.itemnames = resolutions;
#ifdef REFSOFT
if (s_renderer_list.curvalue == 2 && sw_mode->value >= 0)
if (r_mode->value >= 0)
{
s_mode_list.curvalue = sw_mode->value;
}
else
#endif
if (gl_mode->value >= 0)
{
s_mode_list.curvalue = gl_mode->value;
s_mode_list.curvalue = r_mode->value;
}
else
{

View file

@ -187,7 +187,7 @@ extern cvar_t *gl_particle_att_a;
extern cvar_t *gl_particle_att_b;
extern cvar_t *gl_particle_att_c;
extern cvar_t *gl_mode;
extern cvar_t *r_mode;
extern cvar_t *r_customwidth;
extern cvar_t *r_customheight;

View file

@ -96,7 +96,7 @@ cvar_t *gl_drawbuffer;
cvar_t *gl_lightmap;
cvar_t *gl_shadows;
cvar_t *gl_stencilshadow;
cvar_t *gl_mode;
cvar_t *r_mode;
cvar_t *r_customwidth;
cvar_t *r_customheight;
@ -1219,7 +1219,7 @@ R_Register(void)
gl_particle_att_c = ri.Cvar_Get("gl_particle_att_c", "0.01", CVAR_ARCHIVE);
gl_modulate = ri.Cvar_Get("gl_modulate", "1", CVAR_ARCHIVE);
gl_mode = ri.Cvar_Get("gl_mode", "4", CVAR_ARCHIVE);
r_mode = ri.Cvar_Get("r_mode", "4", CVAR_ARCHIVE);
gl_lightmap = ri.Cvar_Get("gl_lightmap", "0", 0);
gl_shadows = ri.Cvar_Get("gl_shadows", "0", CVAR_ARCHIVE);
gl_stencilshadow = ri.Cvar_Get("gl_stencilshadow", "0", CVAR_ARCHIVE);
@ -1309,23 +1309,23 @@ R_SetMode(void)
fullscreen = (int)vid_fullscreen->value;
vid_fullscreen->modified = false;
gl_mode->modified = false;
r_mode->modified = false;
/* a bit hackish approach to enable custom resolutions:
Glimp_SetMode needs these values set for mode -1 */
vid.width = r_customwidth->value;
vid.height = r_customheight->value;
if ((err = SetMode_impl(&vid.width, &vid.height, gl_mode->value,
if ((err = SetMode_impl(&vid.width, &vid.height, r_mode->value,
fullscreen)) == rserr_ok)
{
if (gl_mode->value == -1)
if (r_mode->value == -1)
{
gl_state.prev_mode = 4; /* safe default for custom mode */
}
else
{
gl_state.prev_mode = gl_mode->value;
gl_state.prev_mode = r_mode->value;
}
}
else
@ -1336,7 +1336,7 @@ R_SetMode(void)
vid_fullscreen->modified = false;
R_Printf(PRINT_ALL, "ref_gl::R_SetMode() - fullscreen unavailable in this mode\n");
if ((err = SetMode_impl(&vid.width, &vid.height, gl_mode->value, 0)) == rserr_ok)
if ((err = SetMode_impl(&vid.width, &vid.height, r_mode->value, 0)) == rserr_ok)
{
return true;
}
@ -1350,19 +1350,19 @@ R_SetMode(void)
ri.Cvar_SetValue("gl_msaa_samples", 0.0f);
gl_msaa_samples->modified = false;
if ((err = SetMode_impl(&vid.width, &vid.height, gl_mode->value, 0)) == rserr_ok)
if ((err = SetMode_impl(&vid.width, &vid.height, r_mode->value, 0)) == rserr_ok)
{
return true;
}
}
if(gl_mode->value == gl_state.prev_mode)
if(r_mode->value == gl_state.prev_mode)
{
// trying again would result in a crash anyway, give up already
// (this would happen if your initing fails at all and your resolution already was 640x480)
return false;
}
ri.Cvar_SetValue("gl_mode", gl_state.prev_mode);
gl_mode->modified = false;
ri.Cvar_SetValue("r_mode", gl_state.prev_mode);
r_mode->modified = false;
}
/* try setting it back to something safe */
@ -1600,7 +1600,7 @@ RI_BeginFrame(float camera_separation)
gl_state.camera_separation = camera_separation;
/* change modes if necessary */
if (gl_mode->modified)
if (r_mode->modified)
{
vid_fullscreen->modified = true;
}

View file

@ -86,7 +86,7 @@ cvar_t *gl_msaa_samples;
cvar_t *gl_swapinterval;
cvar_t *gl_retexturing;
cvar_t *vid_fullscreen;
cvar_t *gl_mode;
cvar_t *r_mode;
cvar_t *r_customwidth;
cvar_t *r_customheight;
cvar_t *vid_gamma;
@ -202,7 +202,7 @@ GL3_Register(void)
gl_msaa_samples = ri.Cvar_Get ( "gl_msaa_samples", "0", CVAR_ARCHIVE );
gl_retexturing = ri.Cvar_Get("gl_retexturing", "1", CVAR_ARCHIVE);
gl3_debugcontext = ri.Cvar_Get("gl3_debugcontext", "0", 0);
gl_mode = ri.Cvar_Get("gl_mode", "4", CVAR_ARCHIVE);
r_mode = ri.Cvar_Get("r_mode", "4", CVAR_ARCHIVE);
r_customwidth = ri.Cvar_Get("r_customwidth", "1024", CVAR_ARCHIVE);
r_customheight = ri.Cvar_Get("r_customheight", "768", CVAR_ARCHIVE);
gl3_particle_size = ri.Cvar_Get("gl3_particle_size", "40", CVAR_ARCHIVE);
@ -263,7 +263,7 @@ GL3_Register(void)
gl_particle_att_c = ri.Cvar_Get("gl_particle_att_c", "0.01", CVAR_ARCHIVE);
//gl_modulate = ri.Cvar_Get("gl_modulate", "1", CVAR_ARCHIVE);
//gl_mode = ri.Cvar_Get("gl_mode", "4", CVAR_ARCHIVE);
//r_mode = ri.Cvar_Get("r_mode", "4", CVAR_ARCHIVE);
//gl_lightmap = ri.Cvar_Get("gl_lightmap", "0", 0);
//gl_shadows = ri.Cvar_Get("gl_shadows", "0", CVAR_ARCHIVE);
//gl_stencilshadow = ri.Cvar_Get("gl_stencilshadow", "0", CVAR_ARCHIVE);
@ -364,23 +364,23 @@ GL3_SetMode(void)
fullscreen = (int)vid_fullscreen->value;
vid_fullscreen->modified = false;
gl_mode->modified = false;
r_mode->modified = false;
/* a bit hackish approach to enable custom resolutions:
Glimp_SetMode needs these values set for mode -1 */
vid.width = r_customwidth->value;
vid.height = r_customheight->value;
if ((err = SetMode_impl(&vid.width, &vid.height, gl_mode->value,
if ((err = SetMode_impl(&vid.width, &vid.height, r_mode->value,
fullscreen)) == rserr_ok)
{
if (gl_mode->value == -1)
if (r_mode->value == -1)
{
gl3state.prev_mode = 4; /* safe default for custom mode */
}
else
{
gl3state.prev_mode = gl_mode->value;
gl3state.prev_mode = r_mode->value;
}
}
else
@ -391,7 +391,7 @@ GL3_SetMode(void)
vid_fullscreen->modified = false;
R_Printf(PRINT_ALL, "ref_gl3::GL3_SetMode() - fullscreen unavailable in this mode\n");
if ((err = SetMode_impl(&vid.width, &vid.height, gl_mode->value, 0)) == rserr_ok)
if ((err = SetMode_impl(&vid.width, &vid.height, r_mode->value, 0)) == rserr_ok)
{
return true;
}
@ -406,20 +406,20 @@ GL3_SetMode(void)
ri.Cvar_SetValue("gl_msaa_samples", 0.0f);
gl_msaa_samples->modified = false;
if ((err = SetMode_impl(&vid.width, &vid.height, gl_mode->value, 0)) == rserr_ok)
if ((err = SetMode_impl(&vid.width, &vid.height, r_mode->value, 0)) == rserr_ok)
{
return true;
}
}
if(gl_mode->value == gl3state.prev_mode)
if(r_mode->value == gl3state.prev_mode)
{
// trying again would result in a crash anyway, give up already
// (this would happen if your initing fails at all and your resolution already was 640x480)
return false;
}
ri.Cvar_SetValue("gl_mode", gl3state.prev_mode);
gl_mode->modified = false;
ri.Cvar_SetValue("r_mode", gl3state.prev_mode);
r_mode->modified = false;
}
/* try setting it back to something safe */
@ -1608,7 +1608,7 @@ void
GL3_BeginFrame(float camera_separation)
{
/* change modes if necessary */
if (gl_mode->modified)
if (r_mode->modified)
{
vid_fullscreen->modified = true;
}

View file

@ -482,7 +482,7 @@ extern cvar_t *gl_msaa_samples;
extern cvar_t *gl_swapinterval;
extern cvar_t *gl_retexturing;
extern cvar_t *vid_fullscreen;
extern cvar_t *gl_mode;
extern cvar_t *r_mode;
extern cvar_t *r_customwidth;
extern cvar_t *r_customheight;

View file

@ -464,7 +464,7 @@ extern cvar_t *sw_maxedges;
extern cvar_t *sw_maxsurfs;
extern cvar_t *sw_mipcap;
extern cvar_t *sw_mipscale;
extern cvar_t *sw_mode;
extern cvar_t *r_mode;
extern cvar_t *sw_reportsurfout;
extern cvar_t *sw_reportedgeout;
extern cvar_t *sw_stipplealpha;

View file

@ -131,7 +131,7 @@ cvar_t *sw_drawflat;
cvar_t *sw_draworder;
cvar_t *sw_maxedges;
cvar_t *sw_maxsurfs;
cvar_t *sw_mode;
cvar_t *r_mode;
cvar_t *sw_reportedgeout;
cvar_t *sw_reportsurfout;
cvar_t *sw_stipplealpha;
@ -273,7 +273,7 @@ void R_Register (void)
sw_surfcacheoverride = ri.Cvar_Get ("sw_surfcacheoverride", "0", 0);
sw_waterwarp = ri.Cvar_Get ("sw_waterwarp", "1", 0);
sw_overbrightbits = ri.Cvar_Get("sw_overbrightbits", "1.0", CVAR_ARCHIVE);
sw_mode = ri.Cvar_Get( "sw_mode", "0", CVAR_ARCHIVE );
r_mode = ri.Cvar_Get( "r_mode", "0", CVAR_ARCHIVE );
r_lefthand = ri.Cvar_Get( "hand", "0", CVAR_USERINFO | CVAR_ARCHIVE );
r_speeds = ri.Cvar_Get ("r_speeds", "0", 0);
@ -292,7 +292,7 @@ void R_Register (void)
ri.Cmd_AddCommand("screenshot", R_ScreenShot_f);
ri.Cmd_AddCommand("imagelist", R_ImageList_f);
sw_mode->modified = true; // force us to do mode specific stuff later
r_mode->modified = true; // force us to do mode specific stuff later
vid_gamma->modified = true; // force us to rebuild the gamma table later
sw_overbrightbits->modified = true; // force us to rebuild pallete later
@ -1100,7 +1100,7 @@ void RE_BeginFrame( float camera_separation )
sw_overbrightbits->modified = false;
}
while (sw_mode->modified || vid_fullscreen->modified)
while (r_mode->modified || vid_fullscreen->modified)
{
rserr_t err;
@ -1108,13 +1108,13 @@ void RE_BeginFrame( float camera_separation )
** if this returns rserr_invalid_fullscreen then it set the mode but not as a
** fullscreen mode, e.g. 320x200 on a system that doesn't support that res
*/
if ((err = SWimp_SetMode( &vid.width, &vid.height, sw_mode->value, vid_fullscreen->value)) == rserr_ok )
if ((err = SWimp_SetMode( &vid.width, &vid.height, r_mode->value, vid_fullscreen->value)) == rserr_ok )
{
R_InitGraphics( vid.width, vid.height );
sw_state.prev_mode = sw_mode->value;
sw_state.prev_mode = r_mode->value;
vid_fullscreen->modified = false;
sw_mode->modified = false;
r_mode->modified = false;
}
else
{
@ -1129,7 +1129,7 @@ void RE_BeginFrame( float camera_separation )
ri.Cvar_SetValue( "vid_fullscreen", 0);
R_Printf( PRINT_ALL, "ref_soft::RE_BeginFrame() - fullscreen unavailable in this mode\n" );
sw_state.prev_mode = sw_mode->value;
sw_state.prev_mode = r_mode->value;
}
else
{

View file

@ -56,7 +56,8 @@ replacement_t replacements[] = {
{"gl_farsee", "r_farsee"},
{"gl_flashblend", "gl1_flashblend"},
{"gl_lockpvs", "r_lockpvs"},
{"gl_maxfps", "vid_maxfps"}
{"gl_maxfps", "vid_maxfps"},
{"gl_mode", "r_mode"}
};

View file

@ -112,7 +112,7 @@ Graphics (all renderers):
* **r_customheight** / **r_customwidth**: Specifies a custom
resolution, the windows will be *r_customheight* pixels high and
*r_customwidth* pixels wide. Set *gl_mode* to `-1` to use the custom
*r_customwidth* pixels wide. Set *r_mode* to `-1` to use the custom
resolution.
* **r_farsee**: Normally Quake II renders only up to 4096 units. If set