libGL (mesa) now dynamic for -3dfx

This commit is contained in:
Chris Ison 2001-06-29 03:27:18 +00:00
parent f61ca0e321
commit 9bb956b29c
2 changed files with 26 additions and 6 deletions

View file

@ -80,9 +80,8 @@ libQFsvga.la: $(libQFsvga_la_OBJECTS) $(libQFsvga_la_DEPENDENCIES)
libQFtdfx_la_LDFLAGS= -version-info 1:0:0
libQFtdfx_la_SOURCES= in_common.c in_svgalib.c qfgl_ext.c vid.c vid_common_gl.c vid_3dfxsvga.c
TDFX_LIBS = $(LIBS) -lGL
libQFtdfx.la: $(libQFtdfx_la_OBJECTS) $(libQFtdfx_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libQFtdfx_la_LDFLAGS) $(libQFtdfx_la_OBJECTS) $(libQFtdfx_la_LIBADD) $(TDFX_LIBS)
$(LINK) -rpath $(libdir) $(libQFtdfx_la_LDFLAGS) $(libQFtdfx_la_OBJECTS) $(libQFtdfx_la_LIBADD) $(LIBS)
libQFwgl_la_LDFLAGS= -version-info 1:0:0

View file

@ -42,6 +42,10 @@
#include <glide/sst1vid.h>
#include <sys/signal.h>
#ifdef HAVE_DLOPEN
# include <dlfcn.h>
#endif
#include "compat.h"
#include "QF/console.h"
#include "QF/cvar.h"
@ -53,6 +57,7 @@
#include "QF/sys.h"
#include "QF/va.h"
#include "QF/vid.h"
#include "r_cvar.h"
#define WARP_WIDTH 320
#define WARP_HEIGHT 200
@ -69,10 +74,10 @@
typedef struct tfxMesaContext *fxMesaContext;
GLAPI void GLAPIENTRY fxMesaDestroyContext(fxMesaContext ctx);
GLAPI void GLAPIENTRY fxMesaSwapBuffers(void);
GLAPI fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win, GrScreenResolution_t, GrScreenRefresh_t, const GLint attribList[]);
GLAPI void GLAPIENTRY fxMesaMakeCurrent(fxMesaContext ctx);
void (* fxMesaDestroyContext) (fxMesaContext ctx);
void (* fxMesaSwapBuffers) (void);
fxMesaContext (* fxMesaCreateContext) (GLuint win, GrScreenResolution_t, GrScreenRefresh_t, const GLint attribList[]);
void (* fxMesaMakeCurrent) (fxMesaContext ctx);
// FIXME!!!!! This belongs in include/qfgl_ext.h -- deek
typedef void (GLAPIENTRY * QF_3DfxSetDitherModeEXT) (GrDitherMode_t mode);
@ -82,6 +87,8 @@ cvar_t *tdfx_brighten;
static fxMesaContext fc = NULL;
void *libgl_handle;
int VID_options_items = 0;
extern void GL_Init_Common (void);
@ -262,6 +269,20 @@ VID_Init (unsigned char *palette)
int i;
GLint attribs[32];
#ifdef HAVE_DLOPEN
if (!(libgl_handle = dlopen (gl_libgl->string, RTLD_NOW))) {
Sys_Error ("Can't open OpenGL library \"%s\": %s\n", gl_libgl->string, dlerror());
return;
}
#else
# error "No dynamic library support. FIXME."
#endif
fxMesaCreateContext = QFGL_ProcAddress (libgl_handle, "fxMesaCreateContext", true);
fxMesaDestroyContext = QFGL_ProcAddress (libgl_handle, "fxMesaDestroyContext", true);
fxMesaMakeCurrent = QFGL_ProcAddress (libgl_handle, "fxMesaMakeCurrent", true);
fxMesaSwapBuffers = QFGL_ProcAddress (libgl_handle, "fxMesaSwapBuffers", true);
QFGL_ProcAddress (NULL, NULL, false);
VID_GetWindowSize (640, 480);
Con_CheckResize (); // Now that we have a window size, fix console