Add XRandR support. Disabled by default, for now.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5146 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2017-09-02 05:13:33 +00:00
parent a08564bbb3
commit 8dfa6ccbe6
6 changed files with 719 additions and 151 deletions

View File

@ -47,27 +47,6 @@ void RSpeedShow(void)
memset(RSpNames, 0, sizeof(RSpNames));
RSPEED_TOTALREFRESH,
RSPEED_CSQCPHYSICS,
RSPEED_CSQCREDRAW,
RSPEED_LINKENTITIES,
RSPEED_WORLDNODE,
RSPEED_DYNAMIC,
RSPEED_OPAQUE,
RSPEED_RTLIGHTS,
RSPEED_TRANSPARENTS,
RSPEED_PROTOCOL,
RSPEED_PARTICLES,
RSPEED_PARTICLESDRAW,
RSPEED_PALETTEFLASHES,
RSPEED_2D,
RSPEED_SERVER,
RSPEED_SETUP,
RSPEED_SUBMIT,
RSPEED_PRESENT,
RSPEED_ACQUIRE,
RSpNames[RSPEED_TOTALREFRESH] = "Total refresh";
RSpNames[RSPEED_CSQCPHYSICS] = " CSQC Physics";
RSpNames[RSPEED_CSQCREDRAW] = " CSQC Drawing";
@ -3350,4 +3329,4 @@ void SCR_DeInit (void)
Cmd_RemoveCommand ("sizeup");
Cmd_RemoveCommand ("sizedown");
}
}
}

View File

@ -4772,7 +4772,6 @@ static void Image_LoadHiResTextureWorker(void *ctx, void *data, size_t a, size_t
//the exception is single-file dds cubemaps, but we don't support those.
for(altname = tex->ident;altname;altname = nextalt)
{
char *prefixes[] = {"textures/", "", NULL};
struct pendingtextureinfo *mips;
nextalt = strchr(altname, ':');

View File

@ -89,8 +89,8 @@ cvar_t gl_nocolors = CVARF ("gl_nocolors", "0", CVAR_ARCHIVE);
cvar_t gl_part_flame = CVARFD ("gl_part_flame", "1", CVAR_ARCHIVE, "Enable particle emitting from models. Mainly used for torch and flame effects.");
//opengl library, blank means try default.
static cvar_t gl_driver = CVARF ("gl_driver", "",
CVAR_ARCHIVE | CVAR_RENDERERLATCH);
static cvar_t gl_driver = CVARFD ("gl_driver", "", CVAR_ARCHIVE | CVAR_RENDERERLATCH, "Specifies the graphics driver name to load. This is typically a filename. Blank for default.");
static cvar_t vid_devicename = CVARFD ("vid_devicename", "", CVAR_ARCHIVE | CVAR_RENDERERLATCH, "Specifies which video device to try to use. If blank or invalid then one will be guessed.");
cvar_t gl_shadeq1_name = CVARD ("gl_shadeq1_name", "*", "Rename all surfaces from quake1 bsps using this pattern for the purposes of shader names.");
extern cvar_t r_vertexlight;
extern cvar_t r_forceprogramify;
@ -730,7 +730,8 @@ void Renderer_Init(void)
Cvar_Register (&r_novis, GLRENDEREROPTIONS);
//but register ALL vid_ commands.
Cvar_Register (&gl_driver, GLRENDEREROPTIONS);
Cvar_Register (&gl_driver, VIDCOMMANDGROUP);
Cvar_Register (&vid_devicename, VIDCOMMANDGROUP);
Cvar_Register (&vid_vsync, VIDCOMMANDGROUP);
Cvar_Register (&vid_wndalpha, VIDCOMMANDGROUP);
#if defined(_WIN32) && defined(MULTITHREAD)
@ -1789,7 +1790,13 @@ qboolean R_BuildRenderstate(rendererstate_t *newr, char *rendererstring)
if (*com_token)
Q_strncpyz(newr->subrenderer, com_token, sizeof(newr->subrenderer));
else if (newr->renderer && newr->renderer->rtype == QR_OPENGL)
{
Q_strncpyz(newr->subrenderer, gl_driver.string, sizeof(newr->subrenderer));
if (strchr(newr->subrenderer, '/') || strchr(newr->subrenderer, '\\'))
*newr->subrenderer = 0; //don't allow this to contain paths. that would be too exploitable - this often takes the form of dll/so names.
}
Q_strncpyz(newr->devicename, vid_devicename.string, sizeof(newr->devicename));
// use desktop settings if set to 0 and not dedicated
if (newr->renderer && newr->renderer->rtype != QR_NONE)

View File

@ -52,6 +52,7 @@ typedef struct {
int multisample; //for opengl antialiasing (which requires context stuff)
int triplebuffer;
char subrenderer[MAX_QPATH];
char devicename[MAX_QPATH];
struct rendererinfo_s *renderer;
} rendererstate_t;
#ifndef SERVERONLY

File diff suppressed because it is too large Load Diff

View File

@ -77,7 +77,7 @@ void R_SetSky(const char *sky)
tex.reflectcube = R_LoadHiResTexture(sky, "env:gfx/env", IF_LOADNOW|IF_CUBEMAP|IF_CLAMP);
if (tex.reflectcube->width)
{
forcedsky = R_RegisterShader(va("skybox_%s", sky), 0, va("{\nsort sky\nprogram defaultskybox\n{\nmap \"$cube:$reflectcube\"\ntcgen skybox\n}\nsurfaceparms nodlight\nsurfaceparms sky\n}", sky));
forcedsky = R_RegisterShader(va("skybox_%s", sky), 0, "{\nsort sky\nprogram defaultskybox\n{\nmap \"$cube:$reflectcube\"\ntcgen skybox\n}\nsurfaceparms nodlight\nsurfaceparms sky\n}");
R_BuildDefaultTexnums(&tex, forcedsky);
return;
}