Switch GL_EXT_paletted_texture to the new probing logic

This commit is contained in:
Yamagi Burmeister 2016-08-06 10:08:17 +02:00
parent 9f0b5d067b
commit 43c9970772
6 changed files with 36 additions and 21 deletions

View file

@ -217,7 +217,7 @@ extern cvar_t *gl_overbrightbits;
extern cvar_t *gl_vertex_arrays; extern cvar_t *gl_vertex_arrays;
extern cvar_t *gl_ext_swapinterval; extern cvar_t *gl_ext_swapinterval;
extern cvar_t *gl_ext_palettedtexture; extern cvar_t *gl_palettedtexture;
extern cvar_t *gl_ext_multitexture; extern cvar_t *gl_ext_multitexture;
extern cvar_t *gl_pointparameters; extern cvar_t *gl_pointparameters;
extern cvar_t *gl_ext_compiled_vertex_array; extern cvar_t *gl_ext_compiled_vertex_array;
@ -381,6 +381,7 @@ typedef struct
// ---- // ----
qboolean palettedtexture;
qboolean pointparameters; qboolean pointparameters;
qboolean mtexcombine; qboolean mtexcombine;

View file

@ -386,7 +386,7 @@ Draw_StretchRaw(int x, int y, int w, int h, int cols, int rows, byte *data)
t = rows * hscale / 256 - 1.0 / 512.0; t = rows * hscale / 256 - 1.0 / 512.0;
if (!qglColorTableEXT) if (!gl_config.palettedtexture)
{ {
unsigned *dest; unsigned *dest;

View file

@ -131,7 +131,7 @@ R_SetTexturePalette(unsigned palette[256])
int i; int i;
unsigned char temptable[768]; unsigned char temptable[768];
if (qglColorTableEXT && gl_ext_palettedtexture->value) if (gl_config.palettedtexture)
{ {
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
{ {
@ -751,7 +751,7 @@ R_Upload32Old(unsigned *data, int width, int height, qboolean mipmap)
{ {
if (!mipmap) if (!mipmap)
{ {
if (qglColorTableEXT && gl_ext_palettedtexture->value && if (qglColorTableEXT && gl_palettedtexture->value &&
(samples == gl_solid_format)) (samples == gl_solid_format))
{ {
uploaded_paletted = true; uploaded_paletted = true;
@ -781,7 +781,7 @@ R_Upload32Old(unsigned *data, int width, int height, qboolean mipmap)
R_LightScaleTexture(scaled, scaled_width, scaled_height, !mipmap); R_LightScaleTexture(scaled, scaled_width, scaled_height, !mipmap);
if (qglColorTableEXT && gl_ext_palettedtexture->value && if (qglColorTableEXT && gl_palettedtexture->value &&
(samples == gl_solid_format)) (samples == gl_solid_format))
{ {
uploaded_paletted = true; uploaded_paletted = true;
@ -822,7 +822,7 @@ R_Upload32Old(unsigned *data, int width, int height, qboolean mipmap)
miplevel++; miplevel++;
if (qglColorTableEXT && gl_ext_palettedtexture->value && if (qglColorTableEXT && gl_palettedtexture->value &&
(samples == gl_solid_format)) (samples == gl_solid_format))
{ {
uploaded_paletted = true; uploaded_paletted = true;
@ -896,7 +896,7 @@ R_Upload8(byte *data, int width, int height, qboolean mipmap, qboolean is_sky)
VID_Error(ERR_DROP, "R_Upload8: too large"); VID_Error(ERR_DROP, "R_Upload8: too large");
} }
if (qglColorTableEXT && gl_ext_palettedtexture->value && is_sky) if (gl_config.palettedtexture && is_sky)
{ {
glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT,
width, height, 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, width, height, 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE,
@ -1347,7 +1347,7 @@ R_InitImages(void)
Draw_GetPalette(); Draw_GetPalette();
if (qglColorTableEXT) if (gl_config.palettedtexture)
{ {
FS_LoadFile("pics/16to8.dat", (void **)&gl_state.d_16to8table); FS_LoadFile("pics/16to8.dat", (void **)&gl_state.d_16to8table);

View file

@ -96,7 +96,7 @@ cvar_t *gl_particle_att_b;
cvar_t *gl_particle_att_c; cvar_t *gl_particle_att_c;
cvar_t *gl_ext_swapinterval; cvar_t *gl_ext_swapinterval;
cvar_t *gl_ext_palettedtexture; cvar_t *gl_palettedtexture;
cvar_t *gl_ext_multitexture; cvar_t *gl_ext_multitexture;
cvar_t *gl_pointparameters; cvar_t *gl_pointparameters;
cvar_t *gl_ext_compiled_vertex_array; cvar_t *gl_ext_compiled_vertex_array;
@ -1256,7 +1256,7 @@ R_Register(void)
gl_vertex_arrays = Cvar_Get("gl_vertex_arrays", "0", CVAR_ARCHIVE); gl_vertex_arrays = Cvar_Get("gl_vertex_arrays", "0", CVAR_ARCHIVE);
gl_ext_swapinterval = Cvar_Get("gl_ext_swapinterval", "1", CVAR_ARCHIVE); gl_ext_swapinterval = Cvar_Get("gl_ext_swapinterval", "1", CVAR_ARCHIVE);
gl_ext_palettedtexture = Cvar_Get("gl_ext_palettedtexture", "0", CVAR_ARCHIVE); gl_palettedtexture = Cvar_Get("gl_palettedtexture", "0", CVAR_ARCHIVE);
gl_ext_multitexture = Cvar_Get("gl_ext_multitexture", "0", CVAR_ARCHIVE); gl_ext_multitexture = Cvar_Get("gl_ext_multitexture", "0", CVAR_ARCHIVE);
gl_pointparameters = Cvar_Get("gl_pointparameters", "1", CVAR_ARCHIVE); gl_pointparameters = Cvar_Get("gl_pointparameters", "1", CVAR_ARCHIVE);
gl_ext_compiled_vertex_array = Cvar_Get("gl_ext_compiled_vertex_array", "1", CVAR_ARCHIVE); gl_ext_compiled_vertex_array = Cvar_Get("gl_ext_compiled_vertex_array", "1", CVAR_ARCHIVE);
@ -1434,6 +1434,8 @@ R_Init(void *hinstance, void *hWnd)
VID_Printf(PRINT_ALL, "\n\nProbing for OpenGL extensions:\n"); VID_Printf(PRINT_ALL, "\n\nProbing for OpenGL extensions:\n");
// ----
/* Point parameters */ /* Point parameters */
VID_Printf(PRINT_ALL, "- Point parameters: "); VID_Printf(PRINT_ALL, "- Point parameters: ");
@ -1462,27 +1464,39 @@ R_Init(void *hinstance, void *hWnd)
VID_Printf(PRINT_ALL, "Disabled\n"); VID_Printf(PRINT_ALL, "Disabled\n");
} }
if (!qglColorTableEXT && // ----
strstr(gl_config.extensions_string, "GL_EXT_paletted_texture") &&
/* Paletted texture */
VID_Printf(PRINT_ALL, "- Paletted texture: ");
if (strstr(gl_config.extensions_string, "GL_EXT_paletted_texture") &&
strstr(gl_config.extensions_string, "GL_EXT_shared_texture_palette")) strstr(gl_config.extensions_string, "GL_EXT_shared_texture_palette"))
{ {
if (gl_ext_palettedtexture->value) qglColorTableEXT = (void (APIENTRY *)(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid * ))
GLimp_GetProcAddress ("glColorTableEXT");
}
gl_config.palettedtexture = false;
if (gl_palettedtexture->value)
{
if (qglColorTableEXT)
{ {
VID_Printf(PRINT_ALL, "...using GL_EXT_shared_texture_palette\n"); gl_config.palettedtexture = true;
qglColorTableEXT = VID_Printf(PRINT_ALL, "Okay\n");
(void (APIENTRY *)(GLenum, GLenum, GLsizei, GLenum, GLenum,
const GLvoid * ) ) GLimp_GetProcAddress ("glColorTableEXT");
} }
else else
{ {
VID_Printf(PRINT_ALL, "...ignoring GL_EXT_shared_texture_palette\n"); VID_Printf(PRINT_ALL, "Failed\n");
} }
} }
else else
{ {
VID_Printf(PRINT_ALL, "...GL_EXT_shared_texture_palette not found\n"); VID_Printf(PRINT_ALL, "Disabled\n");
} }
// ----
if (strstr(gl_config.extensions_string, "GL_ARB_multitexture")) if (strstr(gl_config.extensions_string, "GL_ARB_multitexture"))
{ {
if (gl_ext_multitexture->value) if (gl_ext_multitexture->value)

View file

@ -234,7 +234,7 @@ R_SetDefaultState(void)
qglPointParameterfvARB(GL_DISTANCE_ATTENUATION_EXT, attenuations); qglPointParameterfvARB(GL_DISTANCE_ATTENUATION_EXT, attenuations);
} }
if (qglColorTableEXT && gl_ext_palettedtexture->value) if (gl_config.palettedtexture)
{ {
glEnable(GL_SHARED_TEXTURE_PALETTE_EXT); glEnable(GL_SHARED_TEXTURE_PALETTE_EXT);
R_SetTexturePalette(d_8to24table); R_SetTexturePalette(d_8to24table);

View file

@ -735,7 +735,7 @@ R_SetSky(char *name, float rotate, vec3_t axis)
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
{ {
if (qglColorTableEXT && gl_ext_palettedtexture->value) if (gl_config.palettedtexture)
{ {
Com_sprintf(pathname, sizeof(pathname), "env/%s%s.pcx", Com_sprintf(pathname, sizeof(pathname), "env/%s%s.pcx",
skyname, suf[i]); skyname, suf[i]);