Get rid of GL_HARDLINK, always link against libGL

This kills the funky GL logging stubs, which unnecessarily
complicates the build process (think future cmake).
As for logging GL calls: Use apitrace for that
https://github.com/apitrace/apitrace
This commit is contained in:
dhewg 2011-12-07 18:35:59 +01:00
parent 9678020677
commit 1b8777a008
23 changed files with 43 additions and 4197 deletions

View file

@ -12,7 +12,7 @@ import scons_utils
conf_filename='site.conf'
# choose configuration variables which should be saved between runs
# ( we handle all those as strings )
serialized=['CC', 'CXX', 'X86', 'BUILD', 'IDNET_HOST', 'GL_HARDLINK', 'DEDICATED',
serialized=['CC', 'CXX', 'X86', 'BUILD', 'IDNET_HOST', 'DEDICATED',
'DEBUG_MEMORY', 'LIBC_MALLOC', 'ID_NOLANADDRESS', 'ID_MCHECK', 'ALSA',
'TARGET_CORE', 'TARGET_GAME', 'TARGET_D3XP', 'TARGET_MONO', 'TARGET_DEMO', 'NOCURL',
'BUILD_ROOT', 'BUILD_GAMEPAK', 'BASEFLAGS' ]
@ -91,10 +91,6 @@ TARGET_DEMO (default 0)
IDNET_HOST (default to source hardcoded)
Override builtin IDNET_HOST with your own settings
GL_HARDLINK (default 0)
Instead of dynamically loading the OpenGL libraries, use implicit dependencies
NOTE: no GL logging capability and no r_glDriver with GL_HARDLINK 1
DEBUG_MEMORY (default 0)
Enables memory logging to file
@ -175,7 +171,6 @@ TARGET_D3XP = '1'
TARGET_MONO = '0'
TARGET_DEMO = '0'
IDNET_HOST = ''
GL_HARDLINK = '0'
DEBUG_MEMORY = '0'
LIBC_MALLOC = '1'
ID_NOLANADDRESS = '0'
@ -275,9 +270,6 @@ g_build = '%s/%s-%s' % (BUILD_ROOT, g_cpu, BUILD)
SConsignFile( g_build + '/scons.signatures' )
if ( GL_HARDLINK != '0' ):
g_build += '-hardlink'
if ( DEBUG_MEMORY != '0' ):
g_build += '-debugmem'
@ -328,9 +320,6 @@ else:
print 'Unknown build configuration ' + BUILD
sys.exit(0)
if ( GL_HARDLINK != '0' ):
CORECPPFLAGS.append( '-DID_GL_HARDLINK' )
if ( DEBUG_MEMORY != '0' ):
BASECPPFLAGS += [ '-DID_DEBUG_MEMORY', '-DID_REDIRECT_NEWDELETE' ]
@ -417,8 +406,6 @@ if ( TARGET_CORE == '1' ):
local_dedicated = 0
Export( 'GLOBALS ' + GLOBALS )
VariantDir( g_build + '/obj-core/glimp', '.', duplicate = 1 )
SConscript( g_build + '/obj-core/glimp/sys/scons/SConscript.gl' )
VariantDir( g_build + '/obj-core', '.', duplicate = 0 )
idlib_objects = SConscript( g_build + '/obj-core/sys/scons/SConscript.idlib' )
Export( 'GLOBALS ' + GLOBALS ) # update idlib_objects
@ -429,8 +416,6 @@ if ( TARGET_CORE == '1' ):
local_dedicated = 1
Export( 'GLOBALS ' + GLOBALS )
VariantDir( g_build + '/dedicated/glimp', '.', duplicate = 1 )
SConscript( g_build + '/dedicated/glimp/sys/scons/SConscript.gl' )
VariantDir( g_build + '/dedicated', '.', duplicate = 0 )
idlib_objects = SConscript( g_build + '/dedicated/sys/scons/SConscript.idlib' )
Export( 'GLOBALS ' + GLOBALS )
@ -476,8 +461,6 @@ if ( TARGET_MONO == '1' ):
local_idlibpic = 0
local_d3xp = 0
Export( 'GLOBALS ' + GLOBALS )
VariantDir( g_build + '/mono/glimp', '.', duplicate = 1 )
SConscript( g_build + '/mono/glimp/sys/scons/SConscript.gl' )
VariantDir( g_build + '/mono', '.', duplicate = 0 )
idlib_objects = SConscript( g_build + '/mono/sys/scons/SConscript.idlib' )
game_objects = SConscript( g_build + '/mono/sys/scons/SConscript.game' )
@ -494,8 +477,6 @@ if ( TARGET_DEMO == '1' ):
local_curl = 0
local_d3xp = 0
Export( 'GLOBALS ' + GLOBALS )
VariantDir( g_build + '/demo/glimp', '.', duplicate = 1 )
SConscript( g_build + '/demo/glimp/sys/scons/SConscript.gl' )
VariantDir( g_build + '/demo', '.', duplicate = 0 )
idlib_objects = SConscript( g_build + '/demo/sys/scons/SConscript.idlib' )
Export( 'GLOBALS ' + GLOBALS )

View file

@ -1672,10 +1672,11 @@ PurgeImage
*/
void idImage::PurgeImage() {
if ( texnum != TEXTURE_NOT_LOADED ) {
#ifdef _WIN32
// sometimes is NULL when exiting with an error
if ( qglDeleteTextures ) {
if ( qglDeleteTextures )
#endif
qglDeleteTextures( 1, &texnum ); // this should be the ONLY place it is ever called!
}
texnum = TEXTURE_NOT_LOADED;
}

View file

@ -166,7 +166,7 @@ extern PFNGLDEPTHBOUNDSEXTPROC qglDepthBoundsEXT;
//===========================================================================
// non-windows systems will just redefine qgl* to gl*
#if defined( __APPLE__ ) || defined( ID_GL_HARDLINK )
#ifndef _WIN32
#include "qgl_linked.h"
@ -511,8 +511,6 @@ extern void ( APIENTRY * qglVertex4sv )(const GLshort *v);
extern void ( APIENTRY * qglVertexPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
extern void ( APIENTRY * qglViewport )(GLint x, GLint y, GLsizei width, GLsizei height);
#if defined( _WIN32 )
extern int ( WINAPI * qwglChoosePixelFormat )(HDC, CONST PIXELFORMATDESCRIPTOR *);
extern int ( WINAPI * qwglDescribePixelFormat) (HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
extern int ( WINAPI * qwglGetPixelFormat)(HDC);
@ -544,24 +542,4 @@ extern BOOL ( WINAPI * qwglSwapLayerBuffers)(HDC, UINT);
#endif // _WIN32
#if defined( __unix__ )
//GLX Functions
extern XVisualInfo * (*qglXChooseVisual)( Display *dpy, int screen, int *attribList );
extern GLXContext (*qglXCreateContext)( Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct );
extern void (*qglXDestroyContext)( Display *dpy, GLXContext ctx );
extern Bool (*qglXMakeCurrent)( Display *dpy, GLXDrawable drawable, GLXContext ctx);
extern void (*qglXSwapBuffers)( Display *dpy, GLXDrawable drawable );
extern GLExtension_t (*qglXGetProcAddressARB)( const GLubyte *procname );
// make sure the code is correctly using qgl everywhere
// don't enable that when building glimp itself obviously..
#if !defined( GLIMP )
#include "../sys/linux/qgl_enforce.h"
#endif
#endif // __linux__
#endif // hardlinlk vs dlopen
#endif

View file

@ -1,336 +0,0 @@
void;qgl;Accum;GLenum op, GLfloat value
void;qgl;AlphaFunc;GLenum func, GLclampf ref
GLboolean;qgl;AreTexturesResident;GLsizei n, const GLuint *textures, GLboolean *residences
void;qgl;ArrayElement;GLint i
void;qgl;Begin;GLenum mode
void;qgl;BindTexture;GLenum target, GLuint texture
void;qgl;Bitmap;GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap
void;qgl;BlendFunc;GLenum sfactor, GLenum dfactor
void;qgl;CallList;GLuint list
void;qgl;CallLists;GLsizei n, GLenum type, const GLvoid *lists
void;qgl;Clear;GLbitfield mask
void;qgl;ClearAccum;GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha
void;qgl;ClearColor;GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha
void;qgl;ClearDepth;GLclampd depth
void;qgl;ClearIndex;GLfloat c
void;qgl;ClearStencil;GLint s
void;qgl;ClipPlane;GLenum plane, const GLdouble *equation
void;qgl;Color3b;GLbyte red, GLbyte green, GLbyte blue
void;qgl;Color3bv;const GLbyte *v
void;qgl;Color3d;GLdouble red, GLdouble green, GLdouble blue
void;qgl;Color3dv;const GLdouble *v
void;qgl;Color3f;GLfloat red, GLfloat green, GLfloat blue
void;qgl;Color3fv;const GLfloat *v
void;qgl;Color3i;GLint red, GLint green, GLint blue
void;qgl;Color3iv;const GLint *v
void;qgl;Color3s;GLshort red, GLshort green, GLshort blue
void;qgl;Color3sv;const GLshort *v
void;qgl;Color3ub;GLubyte red, GLubyte green, GLubyte blue
void;qgl;Color3ubv;const GLubyte *v
void;qgl;Color3ui;GLuint red, GLuint green, GLuint blue
void;qgl;Color3uiv;const GLuint *v
void;qgl;Color3us;GLushort red, GLushort green, GLushort blue
void;qgl;Color3usv;const GLushort *v
void;qgl;Color4b;GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha
void;qgl;Color4bv;const GLbyte *v
void;qgl;Color4d;GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha
void;qgl;Color4dv;const GLdouble *v
void;qgl;Color4f;GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha
void;qgl;Color4fv;const GLfloat *v
void;qgl;Color4i;GLint red, GLint green, GLint blue, GLint alpha
void;qgl;Color4iv;const GLint *v
void;qgl;Color4s;GLshort red, GLshort green, GLshort blue, GLshort alpha
void;qgl;Color4sv;const GLshort *v
void;qgl;Color4ub;GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha
void;qgl;Color4ubv;const GLubyte *v
void;qgl;Color4ui;GLuint red, GLuint green, GLuint blue, GLuint alpha
void;qgl;Color4uiv;const GLuint *v
void;qgl;Color4us;GLushort red, GLushort green, GLushort blue, GLushort alpha
void;qgl;Color4usv;const GLushort *v
void;qgl;ColorMask;GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha
void;qgl;ColorMaterial;GLenum face, GLenum mode
void;qgl;ColorPointer;GLint size, GLenum type, GLsizei stride, const GLvoid *pointer
void;qgl;CopyPixels;GLint x, GLint y, GLsizei width, GLsizei height, GLenum type
void;qgl;CopyTexImage1D;GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border
void;qgl;CopyTexImage2D;GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border
void;qgl;CopyTexSubImage1D;GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width
void;qgl;CopyTexSubImage2D;GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height
void;qgl;CullFace;GLenum mode
void;qgl;DeleteLists;GLuint list, GLsizei range
void;qgl;DeleteTextures;GLsizei n, const GLuint *textures
void;qgl;DepthFunc;GLenum func
void;qgl;DepthMask;GLboolean flag
void;qgl;DepthRange;GLclampd zNear, GLclampd zFar
void;qgl;Disable;GLenum cap
void;qgl;DisableClientState;GLenum array
void;qgl;DrawArrays;GLenum mode, GLint first, GLsizei count
void;qgl;DrawBuffer;GLenum mode
void;qgl;DrawElements;GLenum mode, GLsizei count, GLenum type, const GLvoid *indices
void;qgl;DrawPixels;GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels
void;qgl;EdgeFlag;GLboolean flag
void;qgl;EdgeFlagPointer;GLsizei stride, const GLvoid *pointer
void;qgl;EdgeFlagv;const GLboolean *flag
void;qgl;Enable;GLenum cap
void;qgl;EnableClientState;GLenum array
void;qgl;End;void
void;qgl;EndList;void
void;qgl;EvalCoord1d;GLdouble u
void;qgl;EvalCoord1dv;const GLdouble *u
void;qgl;EvalCoord1f;GLfloat u
void;qgl;EvalCoord1fv;const GLfloat *u
void;qgl;EvalCoord2d;GLdouble u, GLdouble v
void;qgl;EvalCoord2dv;const GLdouble *u
void;qgl;EvalCoord2f;GLfloat u, GLfloat v
void;qgl;EvalCoord2fv;const GLfloat *u
void;qgl;EvalMesh1;GLenum mode, GLint i1, GLint i2
void;qgl;EvalMesh2;GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2
void;qgl;EvalPoint1;GLint i
void;qgl;EvalPoint2;GLint i, GLint j
void;qgl;FeedbackBuffer;GLsizei size, GLenum type, GLfloat *buffer
void;qgl;Finish;void
void;qgl;Flush;void
void;qgl;Fogf;GLenum pname, GLfloat param
void;qgl;Fogfv;GLenum pname, const GLfloat *params
void;qgl;Fogi;GLenum pname, GLint param
void;qgl;Fogiv;GLenum pname, const GLint *params
void;qgl;FrontFace;GLenum mode
void;qgl;Frustum;GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar
GLuint;qgl;GenLists;GLsizei range
void;qgl;GenTextures;GLsizei n, GLuint *textures
void;qgl;GetBooleanv;GLenum pname, GLboolean *params
void;qgl;GetClipPlane;GLenum plane, GLdouble *equation
void;qgl;GetDoublev;GLenum pname, GLdouble *params
GLenum;qgl;GetError;void
void;qgl;GetFloatv;GLenum pname, GLfloat *params
void;qgl;GetIntegerv;GLenum pname, GLint *params
void;qgl;GetLightfv;GLenum light, GLenum pname, GLfloat *params
void;qgl;GetLightiv;GLenum light, GLenum pname, GLint *params
void;qgl;GetMapdv;GLenum target, GLenum query, GLdouble *v
void;qgl;GetMapfv;GLenum target, GLenum query, GLfloat *v
void;qgl;GetMapiv;GLenum target, GLenum query, GLint *v
void;qgl;GetMaterialfv;GLenum face, GLenum pname, GLfloat *params
void;qgl;GetMaterialiv;GLenum face, GLenum pname, GLint *params
void;qgl;GetPixelMapfv;GLenum map, GLfloat *values
void;qgl;GetPixelMapuiv;GLenum map, GLuint *values
void;qgl;GetPixelMapusv;GLenum map, GLushort *values
void;qgl;GetPointerv;GLenum pname, GLvoid* *params
void;qgl;GetPolygonStipple;GLubyte *mask
const GLubyte *;qgl;GetString;GLenum name
void;qgl;GetTexEnvfv;GLenum target, GLenum pname, GLfloat *params
void;qgl;GetTexEnviv;GLenum target, GLenum pname, GLint *params
void;qgl;GetTexGendv;GLenum coord, GLenum pname, GLdouble *params
void;qgl;GetTexGenfv;GLenum coord, GLenum pname, GLfloat *params
void;qgl;GetTexGeniv;GLenum coord, GLenum pname, GLint *params
void;qgl;GetTexImage;GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels
void;qgl;GetTexLevelParameterfv;GLenum target, GLint level, GLenum pname, GLfloat *params
void;qgl;GetTexLevelParameteriv;GLenum target, GLint level, GLenum pname, GLint *params
void;qgl;GetTexParameterfv;GLenum target, GLenum pname, GLfloat *params
void;qgl;GetTexParameteriv;GLenum target, GLenum pname, GLint *params
void;qgl;Hint;GLenum target, GLenum mode
void;qgl;IndexMask;GLuint mask
void;qgl;IndexPointer;GLenum type, GLsizei stride, const GLvoid *pointer
void;qgl;Indexd;GLdouble c
void;qgl;Indexdv;const GLdouble *c
void;qgl;Indexf;GLfloat c
void;qgl;Indexfv;const GLfloat *c
void;qgl;Indexi;GLint c
void;qgl;Indexiv;const GLint *c
void;qgl;Indexs;GLshort c
void;qgl;Indexsv;const GLshort *c
void;qgl;Indexub;GLubyte c
void;qgl;Indexubv;const GLubyte *c
void;qgl;InitNames;void
void;qgl;InterleavedArrays;GLenum format, GLsizei stride, const GLvoid *pointer
GLboolean;qgl;IsEnabled;GLenum cap
GLboolean;qgl;IsList;GLuint list
GLboolean;qgl;IsTexture;GLuint texture
void;qgl;LightModelf;GLenum pname, GLfloat param
void;qgl;LightModelfv;GLenum pname, const GLfloat *params
void;qgl;LightModeli;GLenum pname, GLint param
void;qgl;LightModeliv;GLenum pname, const GLint *params
void;qgl;Lightf;GLenum light, GLenum pname, GLfloat param
void;qgl;Lightfv;GLenum light, GLenum pname, const GLfloat *params
void;qgl;Lighti;GLenum light, GLenum pname, GLint param
void;qgl;Lightiv;GLenum light, GLenum pname, const GLint *params
void;qgl;LineStipple;GLint factor, GLushort pattern
void;qgl;LineWidth;GLfloat width
void;qgl;ListBase;GLuint base
void;qgl;LoadIdentity;void
void;qgl;LoadMatrixd;const GLdouble *m
void;qgl;LoadMatrixf;const GLfloat *m
void;qgl;LoadName;GLuint name
void;qgl;LogicOp;GLenum opcode
void;qgl;Map1d;GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points
void;qgl;Map1f;GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points
void;qgl;Map2d;GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points
void;qgl;Map2f;GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points
void;qgl;MapGrid1d;GLint un, GLdouble u1, GLdouble u2
void;qgl;MapGrid1f;GLint un, GLfloat u1, GLfloat u2
void;qgl;MapGrid2d;GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2
void;qgl;MapGrid2f;GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2
void;qgl;Materialf;GLenum face, GLenum pname, GLfloat param
void;qgl;Materialfv;GLenum face, GLenum pname, const GLfloat *params
void;qgl;Materiali;GLenum face, GLenum pname, GLint param
void;qgl;Materialiv;GLenum face, GLenum pname, const GLint *params
void;qgl;MatrixMode;GLenum mode
void;qgl;MultMatrixd;const GLdouble *m
void;qgl;MultMatrixf;const GLfloat *m
void;qgl;NewList;GLuint list, GLenum mode
void;qgl;Normal3b;GLbyte nx, GLbyte ny, GLbyte nz
void;qgl;Normal3bv;const GLbyte *v
void;qgl;Normal3d;GLdouble nx, GLdouble ny, GLdouble nz
void;qgl;Normal3dv;const GLdouble *v
void;qgl;Normal3f;GLfloat nx, GLfloat ny, GLfloat nz
void;qgl;Normal3fv;const GLfloat *v
void;qgl;Normal3i;GLint nx, GLint ny, GLint nz
void;qgl;Normal3iv;const GLint *v
void;qgl;Normal3s;GLshort nx, GLshort ny, GLshort nz
void;qgl;Normal3sv;const GLshort *v
void;qgl;NormalPointer;GLenum type, GLsizei stride, const GLvoid *pointer
void;qgl;Ortho;GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar
void;qgl;PassThrough;GLfloat token
void;qgl;PixelMapfv;GLenum map, GLsizei mapsize, const GLfloat *values
void;qgl;PixelMapuiv;GLenum map, GLsizei mapsize, const GLuint *values
void;qgl;PixelMapusv;GLenum map, GLsizei mapsize, const GLushort *values
void;qgl;PixelStoref;GLenum pname, GLfloat param
void;qgl;PixelStorei;GLenum pname, GLint param
void;qgl;PixelTransferf;GLenum pname, GLfloat param
void;qgl;PixelTransferi;GLenum pname, GLint param
void;qgl;PixelZoom;GLfloat xfactor, GLfloat yfactor
void;qgl;PointSize;GLfloat size
void;qgl;PolygonMode;GLenum face, GLenum mode
void;qgl;PolygonOffset;GLfloat factor, GLfloat units
void;qgl;PolygonStipple;const GLubyte *mask
void;qgl;PopAttrib;void
void;qgl;PopClientAttrib;void
void;qgl;PopMatrix;void
void;qgl;PopName;void
void;qgl;PrioritizeTextures;GLsizei n, const GLuint *textures, const GLclampf *priorities
void;qgl;PushAttrib;GLbitfield mask
void;qgl;PushClientAttrib;GLbitfield mask
void;qgl;PushMatrix;void
void;qgl;PushName;GLuint name
void;qgl;RasterPos2d;GLdouble x, GLdouble y
void;qgl;RasterPos2dv;const GLdouble *v
void;qgl;RasterPos2f;GLfloat x, GLfloat y
void;qgl;RasterPos2fv;const GLfloat *v
void;qgl;RasterPos2i;GLint x, GLint y
void;qgl;RasterPos2iv;const GLint *v
void;qgl;RasterPos2s;GLshort x, GLshort y
void;qgl;RasterPos2sv;const GLshort *v
void;qgl;RasterPos3d;GLdouble x, GLdouble y, GLdouble z
void;qgl;RasterPos3dv;const GLdouble *v
void;qgl;RasterPos3f;GLfloat x, GLfloat y, GLfloat z
void;qgl;RasterPos3fv;const GLfloat *v
void;qgl;RasterPos3i;GLint x, GLint y, GLint z
void;qgl;RasterPos3iv;const GLint *v
void;qgl;RasterPos3s;GLshort x, GLshort y, GLshort z
void;qgl;RasterPos3sv;const GLshort *v
void;qgl;RasterPos4d;GLdouble x, GLdouble y, GLdouble z, GLdouble w
void;qgl;RasterPos4dv;const GLdouble *v
void;qgl;RasterPos4f;GLfloat x, GLfloat y, GLfloat z, GLfloat w
void;qgl;RasterPos4fv;const GLfloat *v
void;qgl;RasterPos4i;GLint x, GLint y, GLint z, GLint w
void;qgl;RasterPos4iv;const GLint *v
void;qgl;RasterPos4s;GLshort x, GLshort y, GLshort z, GLshort w
void;qgl;RasterPos4sv;const GLshort *v
void;qgl;ReadBuffer;GLenum mode
void;qgl;ReadPixels;GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels
void;qgl;Rectd;GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2
void;qgl;Rectdv;const GLdouble *v1, const GLdouble *v2
void;qgl;Rectf;GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2
void;qgl;Rectfv;const GLfloat *v1, const GLfloat *v2
void;qgl;Recti;GLint x1, GLint y1, GLint x2, GLint y2
void;qgl;Rectiv;const GLint *v1, const GLint *v2
void;qgl;Rects;GLshort x1, GLshort y1, GLshort x2, GLshort y2
void;qgl;Rectsv;const GLshort *v1, const GLshort *v2
GLint;qgl;RenderMode;GLenum mode
void;qgl;Rotated;GLdouble angle, GLdouble x, GLdouble y, GLdouble z
void;qgl;Rotatef;GLfloat angle, GLfloat x, GLfloat y, GLfloat z
void;qgl;Scaled;GLdouble x, GLdouble y, GLdouble z
void;qgl;Scalef;GLfloat x, GLfloat y, GLfloat z
void;qgl;Scissor;GLint x, GLint y, GLsizei width, GLsizei height
void;qgl;SelectBuffer;GLsizei size, GLuint *buffer
void;qgl;ShadeModel;GLenum mode
void;qgl;StencilFunc;GLenum func, GLint ref, GLuint mask
void;qgl;StencilMask;GLuint mask
void;qgl;StencilOp;GLenum fail, GLenum zfail, GLenum zpass
void;qgl;TexCoord1d;GLdouble s
void;qgl;TexCoord1dv;const GLdouble *v
void;qgl;TexCoord1f;GLfloat s
void;qgl;TexCoord1fv;const GLfloat *v
void;qgl;TexCoord1i;GLint s
void;qgl;TexCoord1iv;const GLint *v
void;qgl;TexCoord1s;GLshort s
void;qgl;TexCoord1sv;const GLshort *v
void;qgl;TexCoord2d;GLdouble s, GLdouble t
void;qgl;TexCoord2dv;const GLdouble *v
void;qgl;TexCoord2f;GLfloat s, GLfloat t
void;qgl;TexCoord2fv;const GLfloat *v
void;qgl;TexCoord2i;GLint s, GLint t
void;qgl;TexCoord2iv;const GLint *v
void;qgl;TexCoord2s;GLshort s, GLshort t
void;qgl;TexCoord2sv;const GLshort *v
void;qgl;TexCoord3d;GLdouble s, GLdouble t, GLdouble r
void;qgl;TexCoord3dv;const GLdouble *v
void;qgl;TexCoord3f;GLfloat s, GLfloat t, GLfloat r
void;qgl;TexCoord3fv;const GLfloat *v
void;qgl;TexCoord3i;GLint s, GLint t, GLint r
void;qgl;TexCoord3iv;const GLint *v
void;qgl;TexCoord3s;GLshort s, GLshort t, GLshort r
void;qgl;TexCoord3sv;const GLshort *v
void;qgl;TexCoord4d;GLdouble s, GLdouble t, GLdouble r, GLdouble q
void;qgl;TexCoord4dv;const GLdouble *v
void;qgl;TexCoord4f;GLfloat s, GLfloat t, GLfloat r, GLfloat q
void;qgl;TexCoord4fv;const GLfloat *v
void;qgl;TexCoord4i;GLint s, GLint t, GLint r, GLint q
void;qgl;TexCoord4iv;const GLint *v
void;qgl;TexCoord4s;GLshort s, GLshort t, GLshort r, GLshort q
void;qgl;TexCoord4sv;const GLshort *v
void;qgl;TexCoordPointer;GLint size, GLenum type, GLsizei stride, const GLvoid *pointer
void;qgl;TexEnvf;GLenum target, GLenum pname, GLfloat param
void;qgl;TexEnvfv;GLenum target, GLenum pname, const GLfloat *params
void;qgl;TexEnvi;GLenum target, GLenum pname, GLint param
void;qgl;TexEnviv;GLenum target, GLenum pname, const GLint *params
void;qgl;TexGend;GLenum coord, GLenum pname, GLdouble param
void;qgl;TexGendv;GLenum coord, GLenum pname, const GLdouble *params
void;qgl;TexGenf;GLenum coord, GLenum pname, GLfloat param
void;qgl;TexGenfv;GLenum coord, GLenum pname, const GLfloat *params
void;qgl;TexGeni;GLenum coord, GLenum pname, GLint param
void;qgl;TexGeniv;GLenum coord, GLenum pname, const GLint *params
void;qgl;TexImage1D;GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels
void;qgl;TexImage2D;GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels
void;qgl;TexParameterf;GLenum target, GLenum pname, GLfloat param
void;qgl;TexParameterfv;GLenum target, GLenum pname, const GLfloat *params
void;qgl;TexParameteri;GLenum target, GLenum pname, GLint param
void;qgl;TexParameteriv;GLenum target, GLenum pname, const GLint *params
void;qgl;TexSubImage1D;GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels
void;qgl;TexSubImage2D;GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels
void;qgl;Translated;GLdouble x, GLdouble y, GLdouble z
void;qgl;Translatef;GLfloat x, GLfloat y, GLfloat z
void;qgl;Vertex2d;GLdouble x, GLdouble y
void;qgl;Vertex2dv;const GLdouble *v
void;qgl;Vertex2f;GLfloat x, GLfloat y
void;qgl;Vertex2fv;const GLfloat *v
void;qgl;Vertex2i;GLint x, GLint y
void;qgl;Vertex2iv;const GLint *v
void;qgl;Vertex2s;GLshort x, GLshort y
void;qgl;Vertex2sv;const GLshort *v
void;qgl;Vertex3d;GLdouble x, GLdouble y, GLdouble z
void;qgl;Vertex3dv;const GLdouble *v
void;qgl;Vertex3f;GLfloat x, GLfloat y, GLfloat z
void;qgl;Vertex3fv;const GLfloat *v
void;qgl;Vertex3i;GLint x, GLint y, GLint z
void;qgl;Vertex3iv;const GLint *v
void;qgl;Vertex3s;GLshort x, GLshort y, GLshort z
void;qgl;Vertex3sv;const GLshort *v
void;qgl;Vertex4d;GLdouble x, GLdouble y, GLdouble z, GLdouble w
void;qgl;Vertex4dv;const GLdouble *v
void;qgl;Vertex4f;GLfloat x, GLfloat y, GLfloat z, GLfloat w
void;qgl;Vertex4fv;const GLfloat *v
void;qgl;Vertex4i;GLint x, GLint y, GLint z, GLint w
void;qgl;Vertex4iv;const GLint *v
void;qgl;Vertex4s;GLshort x, GLshort y, GLshort z, GLshort w
void;qgl;Vertex4sv;const GLshort *v
void;qgl;VertexPointer;GLint size, GLenum type, GLsizei stride, const GLvoid *pointer
void;qgl;Viewport;GLint x, GLint y, GLsizei width, GLsizei height

View file

@ -1,6 +0,0 @@
XVisualInfo *;qglX;ChooseVisual;Display *dpy, int screen, int *attribList
GLXContext;qglX;CreateContext;Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct
void;qglX;DestroyContext;Display *dpy, GLXContext ctx
Bool;qglX;MakeCurrent;Display *dpy, GLXDrawable drawable, GLXContext ctx
void;qglX;SwapBuffers;Display *dpy, GLXDrawable drawable
GLExtension_t;qglX;GetProcAddressARB;const GLubyte *procName

File diff suppressed because it is too large Load diff

View file

@ -1,61 +0,0 @@
#include "idlib/precompiled.h"
#pragma hdrstop
dnl =====================================================
dnl utils
dnl =====================================================
define(`forloop',
`pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
define(`_forloop',
`$4`'ifelse($1, `$3', ,
`define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
dnl =====================================================
dnl GL extensions
dnl =====================================================
typedef struct {
const char *ext_name;
} glExtName_t;
glExtName_t glExtNames[] = {
{ NULL }
};
static void StubFunction( void ) { }
GLExtension_t GLimp_ExtensionPointer( const char *name ) {
if ( strstr( name, "wgl" ) == name ) {
common->DPrintf( "WARNING: GLimp_ExtensionPointer for '%s'\n", name );
}
#ifdef ID_DEDICATED
common->Printf("GLimp_ExtensionPointer %s\n", name);
return StubFunction;
#else
#if 0
glExtName_t *n;
for ( n = glExtNames ; n->ext_name ; n++ ) {
if ( !strcmp( name, n->ext_name ) ) {
common->DPrintf("matched GL extension: %s\n", name );
break;
}
}
if ( ! n->ext_name ) {
common->DPrintf("unmatched GL extension name: %s\n", name );
}
#endif
GLExtension_t ret;
#if defined(__linux__)
// for some reason glXGetProcAddressARB doesn't work on RH9?
ret = qglXGetProcAddressARB((const GLubyte *) name);
if ( !ret ) {
common->Printf("glXGetProcAddressARB failed: \"%s\"\n", name);
return StubFunction;
}
#else
#error Need OS define
#endif
return ret;
#endif
}

View file

@ -1,75 +0,0 @@
#!/usr/bin/env python
# generate logging code
# this requires an analysis of the parameters for verbose and do actual call
import sys, string, re
from read import read_gl
def do_logfunc(f_in, f_out):
(gl, wgl, glX) = read_gl(f_in)
for l in (gl, glX):
for t in l:
# process ret type to strip trailing spaces
t[0] = string.strip(t[0])
f_out.write('static %s APIENTRY log%s(%s) {\n' % ( t[0], t[2], t[3] ))
# work on parameters
base_params = string.split(t[3], ',')
#f_out.write('// %s\n' % repr(base_params))
# init format string and parameter list
params = []
format = t[1][1:] + t[2]
# a general help list
types = []
names = []
for i in base_params:
regex = re.compile('([a-zA-Z0-9]*)$')
name = regex.search(i).group(1)
type = string.strip(i[0:len(i)-len(name)])
# catch type with no name
if (len(type) == 0):
type = name
name = ''
#f_out.write('// type: "%s" name: "%s"\n' % (type, name))
types.append(type)
names.append(name)
# verbose the types
if (type == 'GLenum'):
format += ' %s'
params.append( 'EnumString(' + name + ')' )
elif (type == 'GLfloat' or type == 'GLclampf' or type == 'GLdouble'):
format += ' %g'
params.append( name )
elif (type == 'GLint' or type == 'GLuint' or type == 'GLsizei' or type == 'GLbyte' or type == 'GLshort'
or type == 'GLubyte' or type == 'GLushort'):
format += ' %d'
params.append( name )
elif (type == 'GLboolean'):
format += ' %s'
params.append( name + ' ? "Y" : "N"' )
elif (type == 'void'):
pass
else:
f_out.write('// unknown type: "%s" name: "%s"\n' % (type, name))
format += ' \'' + type + ' ' + name + '\''
f_out.write('\tfprintf( tr.logFile, "' + format + '\\n"')
for par in params:
f_out.write(', ' + par)
f_out.write(' );\n')
if (t[0] != 'void'):
f_out.write('\treturn dll%s(' % t[2])
else:
f_out.write('\tdll%s(' % t[2])
started = 0
for i in names:
if (started):
f_out.write(', ')
else:
started = 1
f_out.write(i)
f_out.write(');\n')
f_out.write('}\n\n')
if __name__ == '__main__':
do_logfunc(sys.stdin, sys.stdout)

View file

@ -1,26 +0,0 @@
# utility module to process incoming GL description
import sys, string
def read_gl(f_in):
buffer = f_in.read()
lines = string.split(buffer, '\n')
gl = []
wgl = []
glX = []
for line in lines:
if ( len(line) ): # drop empty lines
tokens = string.split(line, ';')
if ( tokens[1] == 'qgl' ):
gl.append(tokens)
elif ( tokens[1] == 'qwgl' ):
wgl.append(tokens)
elif ( tokens[1] == 'qglX' ):
glX.append(tokens)
else:
sys.stderr.write('ERROR: unknown type %s\n' % tokens[1])
raise "abort"
return (gl, wgl, glX)

View file

@ -1,22 +0,0 @@
int ;qwgl;SwapIntervalEXT; int interval
int ;qwgl;ChoosePixelFormat ;HDC, CONST PIXELFORMATDESCRIPTOR *
int ;qwgl;DescribePixelFormat;HDC, int, UINT, LPPIXELFORMATDESCRIPTOR
int ;qwgl;GetPixelFormat;HDC
BOOL ;qwgl;SetPixelFormat;HDC, int, CONST PIXELFORMATDESCRIPTOR *
BOOL ;qwgl;SwapBuffers;HDC
BOOL ;qwgl;CopyContext;HGLRC, HGLRC, UINT
HGLRC ;qwgl;CreateContext;HDC
HGLRC ;qwgl;CreateLayerContext;HDC, int
BOOL ;qwgl;DeleteContext;HGLRC
HGLRC ;qwgl;GetCurrentContext;VOID
HDC ;qwgl;GetCurrentDC;VOID
PROC ;qwgl;GetProcAddress;LPCSTR
BOOL ;qwgl;MakeCurrent;HDC, HGLRC
BOOL ;qwgl;ShareLists;HGLRC, HGLRC
BOOL ;qwgl;UseFontBitmaps;HDC, DWORD, DWORD, DWORD
BOOL ;qwgl;UseFontOutlines;HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT
BOOL ;qwgl;DescribeLayerPlane;HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR
int ;qwgl;SetLayerPaletteEntries;HDC, int, int, int, CONST COLORREF *
int ;qwgl;GetLayerPaletteEntries;HDC, int, int, int, COLORREF *
BOOL ;qwgl;RealizeLayerPalette;HDC, int, BOOL
BOOL ;qwgl;SwapLayerBuffers;HDC, UINT

View file

@ -71,21 +71,4 @@ int Sys_GetVideoRam( void ) {
GL
==========
*/
void GLimp_EnableLogging( bool enable ) { }
bool GLimp_Init( glimpParms_t a ) { return true; }
void GLimp_SetGamma( unsigned short red[256],
unsigned short green[256],
unsigned short blue[256] ) { }
void GLimp_Shutdown( void ) { }
void GLimp_SwapBuffers( void ) { }
void GLimp_DeactivateContext( void ) { }
void GLimp_ActivateContext( void ) { }
bool GLimp_SetScreenParms( glimpParms_t parms ) { return true; }

View file

@ -64,16 +64,14 @@ void GLimp_WakeBackEnd(void *a) {
common->DPrintf("GLimp_WakeBackEnd stub\n");
}
#ifdef ID_GL_HARDLINK
void GLimp_EnableLogging(bool log) {
static bool logging;
if (log != logging)
{
common->DPrintf("GLimp_EnableLogging - disabled at compile time (ID_GL_HARDLINK)\n");
common->DPrintf("GLimp_EnableLogging - not available\n");
logging = log;
}
}
#endif
void GLimp_FrontEndSleep() {
common->DPrintf("GLimp_FrontEndSleep stub\n");
@ -188,10 +186,6 @@ void GLimp_Shutdown() {
qglXDestroyContext( dpy, ctx );
#if !defined( ID_GL_HARDLINK )
GLimp_dlclose();
#endif
XDestroyWindow( dpy, win );
if ( vidmode_active ) {
XF86VidModeSwitchToMode( dpy, scrnum, vidmodes[0] );
@ -563,12 +557,6 @@ bool GLimp_Init( glimpParms_t a ) {
return false;
}
#ifndef ID_GL_HARDLINK
if ( !GLimp_dlopen() ) {
return false;
}
#endif
if (!GLX_Init(a)) {
return false;
}
@ -665,3 +653,33 @@ int Sys_GetVideoRam( void ) {
run_once = 64;
return run_once;
}
/*
===================
GLimp_ExtensionPointer
===================
*/
static void StubFunction( void ) { }
GLExtension_t GLimp_ExtensionPointer( const char *name ) {
if ( strstr( name, "wgl" ) == name ) {
common->DPrintf( "WARNING: GLimp_ExtensionPointer for '%s'\n", name );
}
#ifdef ID_DEDICATED
common->Printf("GLimp_ExtensionPointer %s\n", name);
return StubFunction;
#else
GLExtension_t ret;
#if defined(__unix__)
// for some reason glXGetProcAddressARB doesn't work on RH9?
ret = qglXGetProcAddressARB((const GLubyte *) name);
if ( !ret ) {
common->Printf("glXGetProcAddressARB failed: \"%s\"\n", name);
return StubFunction;
}
#else
#error Need OS define
#endif
return ret;
#endif
}

View file

@ -1,135 +0,0 @@
#include "idlib/precompiled.h"
#include "renderer/tr_local.h"
#include "sys/linux/local.h"
#include "glimp_local.h"
#include <dlfcn.h>
dnl =====================================================
dnl utils
dnl =====================================================
define(`forloop',
`pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
define(`_forloop',
`$4`'ifelse($1, `$3', ,
`define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
dnl =====================================================
dnl the gl wgl glX definitions
dnl =====================================================
include(../gllog/gl_def.m4)
dnl =====================================================
dnl qgl function ptrs
dnl =====================================================
define(`instance_funcptr', ``$1' ( APIENTRY * qgl`$2' )(`$3');')
forloop(`i', gl_start, gl_end, `instance_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
dnl =====================================================
dnl glX function ptrs
dnl =====================================================
define(`instance_funcptr', ``$1' ( * qglX`$2' )(`$3');')
forloop(`i', glX_start, glX_end, `instance_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
dnl =====================================================
dnl dll ptrs
dnl those are the actual dlsym'ed pointers
dnl logging configuration redirects qgl / qglX to either log or dll versions
dnl =====================================================
define(`instance_funcptr', ``$1' ( * dll`$2' )(`$3');')
forloop(`i', gl_start, gl_end, `instance_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
forloop(`i', glX_start, glX_end, `instance_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
dnl =====================================================
dnl code
dnl =====================================================
/*
======================
GLimp_BindNative
======================
*/
void GLimp_BindNative() {
define(`assign_funcptr', `qgl`$1' = dll`$1';')
forloop(`i', gl_start, gl_end, `assign_funcptr(indir(`f'i`_name'))
')
define(`assign_funcptr', `qglX`$1' = dll`$1';')
forloop(`i', glX_start, glX_end, `assign_funcptr(indir(`f'i`_name'))
')
}
static void *glHandle = NULL;
/*
======================
GLimp_dlsym_failed
======================
*/
void GLimp_dlsym_failed(const char *name) {
common->DPrintf("dlsym(%s) failed: %s\n", name, dlerror());
}
/*
======================
GLimp_dlopen
======================
*/
bool GLimp_dlopen() {
const char *driverName = r_glDriver.GetString()[0] ? r_glDriver.GetString() : "libGL.so.1";
common->Printf("dlopen(%s)\n", driverName);
if ( !( glHandle = dlopen( driverName, RTLD_NOW | RTLD_GLOBAL ) ) ) {
common->DPrintf("dlopen(%s) failed: %s\n", driverName, dlerror());
return false;
}
// dlsym the symbols
define(`dlsym_funcptr', `dll`$2' = ( `$1' ( APIENTRY *)(`$3') ) dlsym( glHandle, "gl`$2'" );')
define(`safe_dlsym_funcptr', `dlsym_funcptr(`$1', `$2', `$3')
if (!dll`$2') { GLimp_dlsym_failed("gl`$2'"); return false; }')
forloop(`i', gl_start, gl_end, `safe_dlsym_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
define(`dlsym_funcptr', `dll`$2' = ( `$1' ( APIENTRY *)(`$3') ) dlsym( glHandle, "glX`$2'" );')
define(`safe_dlsym_funcptr', `dlsym_funcptr(`$1', `$2', `$3')
if (!dll`$2') { GLimp_dlsym_failed("glX`$2'"); return false; }')
forloop(`i', glX_start, glX_end, `safe_dlsym_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
// make the initial binding
GLimp_BindNative();
return true;
}
/*
======================
GLimp_dlclose
======================
*/
void GLimp_dlclose() {
if ( !glHandle ) {
common->DPrintf("dlclose: GL handle is NULL\n");
} else {
dlclose( glHandle );
glHandle = NULL;
}
define(`reset_funcptr', `qgl`$1' = NULL;')
forloop(`i', gl_start, gl_end, `reset_funcptr(indir(`f'i`_name'))
')
define(`reset_funcptr', `qglX`$1' = NULL;')
forloop(`i', glX_start, glX_end, `reset_funcptr(indir(`f'i`_name'))
')
}

View file

@ -1,434 +0,0 @@
/*
===========================================================================
Doom 3 GPL Source Code
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
This file is part of the Doom 3 GPL Source Code ("Doom 3 Source Code").
Doom 3 Source Code is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Doom 3 Source Code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
===========================================================================
*/
DEF(GL_FALSE)
DEF(GL_TRUE)
DEF(GL_BYTE)
DEF(GL_UNSIGNED_BYTE)
DEF(GL_SHORT)
DEF(GL_UNSIGNED_SHORT)
DEF(GL_INT)
DEF(GL_UNSIGNED_INT)
DEF(GL_FLOAT)
DEF(GL_DOUBLE)
DEF(GL_TEXTURE_CUBE_MAP_EXT)
DEF(GL_TEXTURE_3D)
DEF(GL_TEXTURE_2D)
DEF(GL_BLEND)
DEF(GL_DEPTH_TEST)
DEF(GL_CULL_FACE)
DEF(GL_CLIP_PLANE0)
DEF(GL_COLOR_ARRAY)
DEF(GL_TEXTURE_COORD_ARRAY)
DEF(GL_VERTEX_ARRAY)
DEF(GL_ALPHA_TEST)
DEF(GL_TEXTURE_GEN_S)
DEF(GL_TEXTURE_GEN_T)
DEF(GL_TEXTURE_GEN_R)
DEF(GL_TEXTURE_GEN_Q)
DEF(GL_STENCIL_TEST)
DEF(GL_POLYGON_OFFSET_FILL)
DEF(GL_TRIANGLES)
DEF(GL_TRIANGLE_STRIP)
DEF(GL_TRIANGLE_FAN)
DEF(GL_QUADS)
DEF(GL_QUAD_STRIP)
DEF(GL_POLYGON)
DEF(GL_POINTS)
DEF(GL_LINES)
DEF(GL_LINE_STRIP)
DEF(GL_LINE_LOOP)
DEF(GL_ALWAYS)
DEF(GL_NEVER)
DEF(GL_LEQUAL)
DEF(GL_LESS)
DEF(GL_EQUAL)
DEF(GL_GREATER)
DEF(GL_GEQUAL)
DEF(GL_NOTEQUAL)
DEF(GL_ONE)
DEF(GL_ZERO)
DEF(GL_SRC_ALPHA)
DEF(GL_ONE_MINUS_SRC_ALPHA)
DEF(GL_DST_COLOR)
DEF(GL_ONE_MINUS_DST_COLOR)
DEF(GL_DST_ALPHA)
DEF(GL_MODELVIEW)
DEF(GL_PROJECTION)
DEF(GL_TEXTURE)
DEF(GL_NONE)
DEF(GL_FRONT_LEFT)
DEF(GL_FRONT_RIGHT)
DEF(GL_BACK_LEFT)
DEF(GL_BACK_RIGHT)
DEF(GL_FRONT)
DEF(GL_BACK)
DEF(GL_LEFT)
DEF(GL_RIGHT)
DEF(GL_FRONT_AND_BACK)
DEF(GL_AUX0)
DEF(GL_AUX1)
DEF(GL_AUX2)
DEF(GL_AUX3)
DEF(GL_CURRENT_COLOR)
DEF(GL_CURRENT_INDEX)
DEF(GL_CURRENT_NORMAL)
DEF(GL_CURRENT_TEXTURE_COORDS)
DEF(GL_CURRENT_RASTER_COLOR)
DEF(GL_CURRENT_RASTER_INDEX)
DEF(GL_CURRENT_RASTER_TEXTURE_COORDS)
DEF(GL_CURRENT_RASTER_POSITION)
DEF(GL_CURRENT_RASTER_POSITION_VALID)
DEF(GL_CURRENT_RASTER_DISTANCE)
DEF(GL_POINT_SMOOTH)
DEF(GL_POINT_SIZE)
DEF(GL_POINT_SIZE_RANGE)
DEF(GL_POINT_SIZE_GRANULARITY)
DEF(GL_LINE_SMOOTH)
DEF(GL_LINE_WIDTH)
DEF(GL_LINE_WIDTH_RANGE)
DEF(GL_LINE_WIDTH_GRANULARITY)
DEF(GL_LINE_STIPPLE)
DEF(GL_LINE_STIPPLE_PATTERN)
DEF(GL_LINE_STIPPLE_REPEAT)
DEF(GL_LIST_MODE)
DEF(GL_MAX_LIST_NESTING)
DEF(GL_LIST_BASE)
DEF(GL_LIST_INDEX)
DEF(GL_POLYGON_MODE)
DEF(GL_POLYGON_SMOOTH)
DEF(GL_POLYGON_STIPPLE)
DEF(GL_EDGE_FLAG)
DEF(GL_CULL_FACE)
DEF(GL_CULL_FACE_MODE)
DEF(GL_FRONT_FACE)
DEF(GL_LIGHTING)
DEF(GL_LIGHT_MODEL_LOCAL_VIEWER)
DEF(GL_LIGHT_MODEL_TWO_SIDE)
DEF(GL_LIGHT_MODEL_AMBIENT)
DEF(GL_SHADE_MODEL)
DEF(GL_COLOR_MATERIAL_FACE)
DEF(GL_COLOR_MATERIAL_PARAMETER)
DEF(GL_COLOR_MATERIAL)
DEF(GL_FOG)
DEF(GL_FOG_INDEX)
DEF(GL_FOG_DENSITY)
DEF(GL_FOG_START)
DEF(GL_FOG_END)
DEF(GL_FOG_MODE)
DEF(GL_FOG_COLOR)
DEF(GL_DEPTH_RANGE)
DEF(GL_DEPTH_TEST)
DEF(GL_DEPTH_WRITEMASK)
DEF(GL_DEPTH_CLEAR_VALUE)
DEF(GL_DEPTH_FUNC)
DEF(GL_ACCUM_CLEAR_VALUE)
DEF(GL_STENCIL_TEST)
DEF(GL_STENCIL_CLEAR_VALUE)
DEF(GL_STENCIL_FUNC)
DEF(GL_STENCIL_VALUE_MASK)
DEF(GL_STENCIL_FAIL)
DEF(GL_STENCIL_PASS_DEPTH_FAIL)
DEF(GL_STENCIL_PASS_DEPTH_PASS)
DEF(GL_STENCIL_REF)
DEF(GL_STENCIL_WRITEMASK)
DEF(GL_MATRIX_MODE)
DEF(GL_NORMALIZE)
DEF(GL_VIEWPORT)
DEF(GL_MODELVIEW_STACK_DEPTH)
DEF(GL_PROJECTION_STACK_DEPTH)
DEF(GL_TEXTURE_STACK_DEPTH)
DEF(GL_MODELVIEW_MATRIX)
DEF(GL_PROJECTION_MATRIX)
DEF(GL_TEXTURE_MATRIX)
DEF(GL_ATTRIB_STACK_DEPTH)
DEF(GL_CLIENT_ATTRIB_STACK_DEPTH)
DEF(GL_ALPHA_TEST)
DEF(GL_ALPHA_TEST_FUNC)
DEF(GL_ALPHA_TEST_REF)
DEF(GL_DITHER)
DEF(GL_BLEND_DST)
DEF(GL_BLEND_SRC)
DEF(GL_BLEND)
DEF(GL_LOGIC_OP_MODE)
DEF(GL_INDEX_LOGIC_OP)
DEF(GL_COLOR_LOGIC_OP)
DEF(GL_AUX_BUFFERS)
DEF(GL_DRAW_BUFFER)
DEF(GL_READ_BUFFER)
DEF(GL_SCISSOR_BOX)
DEF(GL_SCISSOR_TEST)
DEF(GL_INDEX_CLEAR_VALUE)
DEF(GL_INDEX_WRITEMASK)
DEF(GL_COLOR_CLEAR_VALUE)
DEF(GL_COLOR_WRITEMASK)
DEF(GL_INDEX_MODE)
DEF(GL_RGBA_MODE)
DEF(GL_DOUBLEBUFFER)
DEF(GL_STEREO)
DEF(GL_RENDER_MODE)
DEF(GL_PERSPECTIVE_CORRECTION_HINT)
DEF(GL_POINT_SMOOTH_HINT)
DEF(GL_LINE_SMOOTH_HINT)
DEF(GL_POLYGON_SMOOTH_HINT)
DEF(GL_FOG_HINT)
DEF(GL_TEXTURE_GEN_S)
DEF(GL_TEXTURE_GEN_T)
DEF(GL_TEXTURE_GEN_R)
DEF(GL_TEXTURE_GEN_Q)
DEF(GL_PIXEL_MAP_I_TO_I)
DEF(GL_PIXEL_MAP_S_TO_S)
DEF(GL_PIXEL_MAP_I_TO_R)
DEF(GL_PIXEL_MAP_I_TO_G)
DEF(GL_PIXEL_MAP_I_TO_B)
DEF(GL_PIXEL_MAP_I_TO_A)
DEF(GL_PIXEL_MAP_R_TO_R)
DEF(GL_PIXEL_MAP_G_TO_G)
DEF(GL_PIXEL_MAP_B_TO_B)
DEF(GL_PIXEL_MAP_A_TO_A)
DEF(GL_PIXEL_MAP_I_TO_I_SIZE)
DEF(GL_PIXEL_MAP_S_TO_S_SIZE)
DEF(GL_PIXEL_MAP_I_TO_R_SIZE)
DEF(GL_PIXEL_MAP_I_TO_G_SIZE)
DEF(GL_PIXEL_MAP_I_TO_B_SIZE)
DEF(GL_PIXEL_MAP_I_TO_A_SIZE)
DEF(GL_PIXEL_MAP_R_TO_R_SIZE)
DEF(GL_PIXEL_MAP_G_TO_G_SIZE)
DEF(GL_PIXEL_MAP_B_TO_B_SIZE)
DEF(GL_PIXEL_MAP_A_TO_A_SIZE)
DEF(GL_UNPACK_SWAP_BYTES)
DEF(GL_UNPACK_LSB_FIRST)
DEF(GL_UNPACK_ROW_LENGTH)
DEF(GL_UNPACK_SKIP_ROWS)
DEF(GL_UNPACK_SKIP_PIXELS)
DEF(GL_UNPACK_ALIGNMENT)
DEF(GL_PACK_SWAP_BYTES)
DEF(GL_PACK_LSB_FIRST)
DEF(GL_PACK_ROW_LENGTH)
DEF(GL_PACK_SKIP_ROWS)
DEF(GL_PACK_SKIP_PIXELS)
DEF(GL_PACK_ALIGNMENT)
DEF(GL_MAP_COLOR)
DEF(GL_MAP_STENCIL)
DEF(GL_INDEX_SHIFT)
DEF(GL_INDEX_OFFSET)
DEF(GL_RED_SCALE)
DEF(GL_RED_BIAS)
DEF(GL_ZOOM_X)
DEF(GL_ZOOM_Y)
DEF(GL_GREEN_SCALE)
DEF(GL_GREEN_BIAS)
DEF(GL_BLUE_SCALE)
DEF(GL_BLUE_BIAS)
DEF(GL_ALPHA_SCALE)
DEF(GL_ALPHA_BIAS)
DEF(GL_DEPTH_SCALE)
DEF(GL_DEPTH_BIAS)
DEF(GL_MAX_EVAL_ORDER)
DEF(GL_MAX_LIGHTS)
DEF(GL_MAX_CLIP_PLANES)
DEF(GL_MAX_TEXTURE_SIZE)
DEF(GL_MAX_PIXEL_MAP_TABLE)
DEF(GL_MAX_ATTRIB_STACK_DEPTH)
DEF(GL_MAX_MODELVIEW_STACK_DEPTH)
DEF(GL_MAX_NAME_STACK_DEPTH)
DEF(GL_MAX_PROJECTION_STACK_DEPTH)
DEF(GL_MAX_TEXTURE_STACK_DEPTH)
DEF(GL_MAX_VIEWPORT_DIMS)
DEF(GL_MAX_CLIENT_ATTRIB_STACK_DEPTH)
DEF(GL_SUBPIXEL_BITS)
DEF(GL_INDEX_BITS)
DEF(GL_RED_BITS)
DEF(GL_GREEN_BITS)
DEF(GL_BLUE_BITS)
DEF(GL_ALPHA_BITS)
DEF(GL_DEPTH_BITS)
DEF(GL_STENCIL_BITS)
DEF(GL_ACCUM_RED_BITS)
DEF(GL_ACCUM_GREEN_BITS)
DEF(GL_ACCUM_BLUE_BITS)
DEF(GL_ACCUM_ALPHA_BITS)
DEF(GL_NAME_STACK_DEPTH)
DEF(GL_AUTO_NORMAL)
DEF(GL_MAP1_COLOR_4)
DEF(GL_MAP1_INDEX)
DEF(GL_MAP1_NORMAL)
DEF(GL_MAP1_TEXTURE_COORD_1)
DEF(GL_MAP1_TEXTURE_COORD_2)
DEF(GL_MAP1_TEXTURE_COORD_3)
DEF(GL_MAP1_TEXTURE_COORD_4)
DEF(GL_MAP1_VERTEX_3)
DEF(GL_MAP1_VERTEX_4)
DEF(GL_MAP2_COLOR_4)
DEF(GL_MAP2_INDEX)
DEF(GL_MAP2_NORMAL)
DEF(GL_MAP2_TEXTURE_COORD_1)
DEF(GL_MAP2_TEXTURE_COORD_2)
DEF(GL_MAP2_TEXTURE_COORD_3)
DEF(GL_MAP2_TEXTURE_COORD_4)
DEF(GL_MAP2_VERTEX_3)
DEF(GL_MAP2_VERTEX_4)
DEF(GL_MAP1_GRID_DOMAIN)
DEF(GL_MAP1_GRID_SEGMENTS)
DEF(GL_MAP2_GRID_DOMAIN)
DEF(GL_MAP2_GRID_SEGMENTS)
DEF(GL_TEXTURE_1D)
DEF(GL_TEXTURE_2D)
DEF(GL_FEEDBACK_BUFFER_POINTER)
DEF(GL_FEEDBACK_BUFFER_SIZE)
DEF(GL_FEEDBACK_BUFFER_TYPE)
DEF(GL_SELECTION_BUFFER_POINTER)
DEF(GL_SELECTION_BUFFER_SIZE)
DEF(GL_COLOR)
DEF(GL_DEPTH)
DEF(GL_STENCIL)
DEF(GL_COLOR_INDEX)
DEF(GL_STENCIL_INDEX)
DEF(GL_DEPTH_COMPONENT)
DEF(GL_RED)
DEF(GL_GREEN)
DEF(GL_BLUE)
DEF(GL_ALPHA)
DEF(GL_RGB)
DEF(GL_RGBA)
DEF(GL_LUMINANCE)
DEF(GL_LUMINANCE_ALPHA)
DEF(GL_PIXEL_MAP_I_TO_I)
DEF(GL_PIXEL_MAP_S_TO_S)
DEF(GL_PIXEL_MAP_I_TO_R)
DEF(GL_PIXEL_MAP_I_TO_G)
DEF(GL_PIXEL_MAP_I_TO_B)
DEF(GL_PIXEL_MAP_I_TO_A)
DEF(GL_PIXEL_MAP_R_TO_R)
DEF(GL_PIXEL_MAP_G_TO_G)
DEF(GL_PIXEL_MAP_B_TO_B)
DEF(GL_PIXEL_MAP_A_TO_A)
DEF(GL_UNPACK_SWAP_BYTES)
DEF(GL_UNPACK_LSB_FIRST)
DEF(GL_UNPACK_ROW_LENGTH)
DEF(GL_UNPACK_SKIP_ROWS)
DEF(GL_UNPACK_SKIP_PIXELS)
DEF(GL_UNPACK_ALIGNMENT)
DEF(GL_PACK_SWAP_BYTES)
DEF(GL_PACK_LSB_FIRST)
DEF(GL_PACK_ROW_LENGTH)
DEF(GL_PACK_SKIP_ROWS)
DEF(GL_PACK_SKIP_PIXELS)
DEF(GL_PACK_ALIGNMENT)
DEF(GL_MAP_COLOR)
DEF(GL_MAP_STENCIL)
DEF(GL_INDEX_SHIFT)
DEF(GL_INDEX_OFFSET)
DEF(GL_RED_SCALE)
DEF(GL_RED_BIAS)
DEF(GL_GREEN_SCALE)
DEF(GL_GREEN_BIAS)
DEF(GL_BLUE_SCALE)
DEF(GL_BLUE_BIAS)
DEF(GL_ALPHA_SCALE)
DEF(GL_ALPHA_BIAS)
DEF(GL_DEPTH_SCALE)
DEF(GL_DEPTH_BIAS)
DEF(GL_BITMAP)
DEF(GL_BYTE)
DEF(GL_UNSIGNED_BYTE)
DEF(GL_SHORT)
DEF(GL_UNSIGNED_SHORT)
DEF(GL_INT)
DEF(GL_UNSIGNED_INT)
DEF(GL_FLOAT)
DEF(GL_POINT)
DEF(GL_LINE)
DEF(GL_FILL)
DEF(GL_RENDER)
DEF(GL_FEEDBACK)
DEF(GL_SELECT)
DEF(GL_FLAT)
DEF(GL_SMOOTH)
DEF(GL_ZERO)
DEF(GL_KEEP)
DEF(GL_REPLACE)
DEF(GL_INCR)
DEF(GL_DECR)
DEF(GL_INVERT)
DEF(GL_VENDOR)
DEF(GL_RENDERER)
DEF(GL_VERSION)
DEF(GL_EXTENSIONS)
DEF(GL_S)
DEF(GL_T)
DEF(GL_R)
DEF(GL_Q)
DEF(GL_SHORT)
DEF(GL_INT)
DEF(GL_FLOAT)
DEF(GL_DOUBLE)
DEF(GL_MODULATE)
DEF(GL_DECAL)
DEF(GL_BLEND)
DEF(GL_REPLACE)
DEF(GL_TEXTURE_ENV_MODE)
DEF(GL_TEXTURE_ENV_COLOR)
DEF(GL_TEXTURE_ENV)
DEF(GL_EYE_LINEAR)
DEF(GL_OBJECT_LINEAR)
DEF(GL_SPHERE_MAP)
DEF(GL_TEXTURE_GEN_MODE)
DEF(GL_OBJECT_PLANE)
DEF(GL_EYE_PLANE)
DEF(GL_NEAREST)
DEF(GL_LINEAR)
DEF(GL_NEAREST)
DEF(GL_LINEAR)
DEF(GL_NEAREST_MIPMAP_NEAREST)
DEF(GL_LINEAR_MIPMAP_NEAREST)
DEF(GL_NEAREST_MIPMAP_LINEAR)
DEF(GL_LINEAR_MIPMAP_LINEAR)
DEF(GL_TEXTURE_MAG_FILTER)
DEF(GL_TEXTURE_MIN_FILTER)
DEF(GL_TEXTURE_WRAP_S)
DEF(GL_TEXTURE_WRAP_T)
DEF(GL_TEXTURE_BORDER_COLOR)
DEF(GL_TEXTURE_PRIORITY)
DEF(GL_TEXTURE_1D)
DEF(GL_TEXTURE_2D)
DEF(GL_PROXY_TEXTURE_1D)
DEF(GL_PROXY_TEXTURE_2D)
DEF(GL_CLAMP)
DEF(GL_REPEAT)
DEF(GL_SHORT)
DEF(GL_INT)
DEF(GL_FLOAT)
DEF(GL_DOUBLE)
DEF(GL_CLIENT_PIXEL_STORE_BIT)
DEF(GL_CLIENT_VERTEX_ARRAY_BIT)
/* DEF(GL_CLIENT_ALL_ATTRIB_BITS) */
DEF(GL_POLYGON_OFFSET_FACTOR)
DEF(GL_POLYGON_OFFSET_UNITS)
DEF(GL_POLYGON_OFFSET_POINT)
DEF(GL_POLYGON_OFFSET_LINE)
DEF(GL_POLYGON_OFFSET_FILL)

View file

@ -1,24 +0,0 @@
dnl =====================================================
dnl utils
dnl =====================================================
define(`forloop',
`pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
define(`_forloop',
`$4`'ifelse($1, `$3', ,
`define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
dnl =====================================================
dnl the gl wgl glX definitions
dnl =====================================================
include(../gllog/gl_def.m4)
dnl =====================================================
dnl dll funcs declare
dnl =====================================================
define(`declare_funcptr', `extern `$1' ( * dll`$2' )(`$3');')
forloop(`i', gl_start, gl_end, `declare_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
forloop(`i', glX_start, glX_end, `declare_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')

View file

@ -1,187 +0,0 @@
#include "idlib/precompiled.h"
#include "renderer/tr_local.h"
#include "sys/linux/local.h"
#include "glimp_local.h"
#pragma hdrstop
#include <unistd.h>
#define ID_LOG_TO_STDOUT 0
dnl =====================================================
dnl utils
dnl =====================================================
define(`forloop',
`pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
define(`_forloop',
`$4`'ifelse($1, `$3', ,
`define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
dnl =====================================================
dnl the gl wgl glX definitions
dnl =====================================================
include(../gllog/gl_def.m4)
dnl =====================================================
dnl logging functions
dnl =====================================================
typedef struct {
GLenum e;
const char *name;
} glEnumName_t;
#define DEF(x) { x, #x },
glEnumName_t glEnumNames[] = {
#include "sys/linux/glimp_glenum.h"
{ 0, NULL }
};
/*
======================
EnumString
======================
*/
static const char *EnumString( GLenum t )
{
static char buffer[8][1024];
static int index = 0;
for ( glEnumName_t *n = glEnumNames ; n->name ; n++ ) {
if ( t == n->e ) {
return n->name;
}
}
int oldIndex = index;
index = ( index + 1 ) & 7;
sprintf( buffer[oldIndex], "0x%x", t );
return buffer[oldIndex];
}
/*
======================
FloatData
======================
*/
#if 0
static const char *FloatData( const GLfloat *v, int count ) {
static char buffer[8][1024];
static int index = 0;
char *name;
name = buffer[index&7];
sprintf( name, "f%i", index );
index++;
fprintf( tr.logFile, "static float %s[%i] = {", name, count );
for( int i = 0 ; i < count ; i++ ) {
if ( i < count - 1 ) {
fprintf( tr.logFile, "%f,", v[i] );
} else {
fprintf( tr.logFile, "%f};\n", v[i] );
}
}
return name;
}
#endif
#
#include "glimp_logfuncs.cpp"
dnl define(`log_func', `static `$1' APIENTRY log`$2'(`$3') {
dnl }')
dnl forloop(`i', gl_start, gl_end, `log_func(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
dnl ')
dnl forloop(`i', glX_start, glX_end, `log_func(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
dnl ')
/*
======================
GLimp_BindLogging
======================
*/
void GLimp_BindLogging() {
define(`assign_funcptr', `qgl`$1' = log`$1';')
forloop(`i', gl_start, gl_end, `assign_funcptr(indir(`f'i`_name'))
')
define(`assign_funcptr', `qglX`$1' = log`$1';')
forloop(`i', glX_start, glX_end, `assign_funcptr(indir(`f'i`_name'))
')
}
/*
======================
GLimp_EnableLogging
======================
*/
void GLimp_EnableLogging(bool enable) {
static bool isEnabled = false;
static idStr ospath;
static int initialFrames;
// return if we're already active
if ( isEnabled && enable ) {
// decrement log counter and stop if it has reached 0
r_logFile.SetInteger( r_logFile.GetInteger() - 1 );
if ( r_logFile.GetInteger() ) {
return;
}
#if ID_LOG_TO_STDOUT
common->Printf( "end stdout GL loggging after %i frames.\n", initialFrames );
#else
common->Printf( "closing GL logfile '%s' after %i frames.\n", ospath.c_str(), initialFrames );
fclose( tr.logFile );
#endif
enable = false;
tr.logFile = NULL;
}
// return if we're already disabled
if ( !enable && !isEnabled ) {
return;
}
isEnabled = enable;
if ( enable ) {
if ( !tr.logFile ) {
struct tm *newtime;
time_t aclock;
idStr qpath;
int i;
initialFrames = r_logFile.GetInteger();
#if ID_LOG_TO_STDOUT
tr.logFile = fdopen( STDOUT_FILENO, "w" );
#else
// scan for an unused filename
for ( i = 0 ; i < 9999 ; i++ ) {
sprintf( qpath, "renderlog_%i.txt", i );
if ( fileSystem->ReadFile( qpath, NULL, NULL ) == -1 ) {
break; // use this name
}
}
ospath = fileSystem->RelativePathToOSPath( qpath );
tr.logFile = fopen( ospath, "wt" );
#endif
// write the time out to the top of the file
time( &aclock );
newtime = localtime( &aclock );
fprintf( tr.logFile, "// %s", asctime( newtime ) );
fprintf( tr.logFile, "// %s\n\n", com_version.GetString() );
}
GLimp_BindLogging();
} else {
GLimp_BindNative();
}
}

View file

@ -1,66 +0,0 @@
// glimp_stub.cpp.m4
// stub gl/glX APIs
#include "idlib/precompiled.h"
#include "renderer/tr_local.h"
#pragma hdrstop
dnl =====================================================
dnl utils
dnl =====================================================
define(`forloop',
`pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
define(`_forloop',
`$4`'ifelse($1, `$3', ,
`define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
dnl =====================================================
dnl the gl wgl glX definitions
dnl =====================================================
include(../gllog/gl_def.m4)
dnl =====================================================
dnl qgl stubs
dnl there is a number of functions for which we have special case code
dnl =====================================================
define(`override_GetError', `')
define(`override_GenLists', `')
define(`override_GetIntegerv', `')
define(`override_GetString', `')
define(`instance_funcptr', ``$1' gl`$2'(`$3'){}')
define(`try_instance_funcptr', `ifdef(`override_'$2, ,`instance_funcptr(`$1', `$2', `$3')')')
forloop(`i', gl_start, gl_end, `try_instance_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
dnl =====================================================
dnl glX stubs
dnl =====================================================
define(`override_GetProcAddressARB', `')
define(`instance_funcptr', ``$1' glX`$2'(`$3'){}')
define(`try_instance_funcptr', `ifdef(`override_'$2, ,`instance_funcptr(`$1', `$2', `$3')')')
forloop(`i', glX_start, glX_end, `try_instance_funcptr(indir(`f'i`_ret'), indir(`f'i`_name'), indir(`f'i`_params'))
')
GLenum glGetError(void){return 0;}
GLuint glGenLists(GLsizei range){return 0;}
void glGetIntegerv(GLenum pname, GLint *params){
switch( pname ) {
case GL_MAX_TEXTURE_SIZE: *params = 1024; break;
case GL_MAX_TEXTURE_UNITS_ARB: *params = 2; break;
default: *params = 0; break;
}
}
const GLubyte * glGetString(GLenum name){
switch( name ) {
case GL_EXTENSIONS: return (GLubyte *)"GL_ARB_multitexture GL_ARB_texture_env_combine GL_ARB_texture_cube_map GL_ARB_texture_env_dot3";
}
return (const GLubyte *)"";
}

View file

@ -52,12 +52,4 @@ void Sys_XUninstallGrabs();
#define MOUSE_MASK (ButtonPressMask | ButtonReleaseMask | PointerMotionMask | ButtonMotionMask )
#define X_MASK (KEY_MASK | MOUSE_MASK | VisibilityChangeMask | StructureNotifyMask )
#ifndef ID_GL_HARDLINK
bool GLimp_dlopen();
void GLimp_dlclose();
void GLimp_BindLogging();
void GLimp_BindNative();
#endif
#endif

View file

@ -1,41 +0,0 @@
#!/usr/bin/env python
# process stdin into an M4 macro definition file
# recognize three keyword qgl qwgl qglX
#
# output
# global macros keep track of the three intervals for function types:
# gl_start gl_end wgl_start wgl_end glX_start glX_end
# NOTE: will we need similar thing for extensions?
#
# each function:
# f<id>_ret: return type
# f<id>_name: function name
# f<id>_params: complete params
#
# ex:
# define(`f1_ret', `void')
# define(`f1_name', `Accum')
# define(`f1_params', ``GLenum op, GLfloat value'')
#
import sys, string
from read import read_gl
(gl, wgl, glX) = read_gl(sys.stdin)
sys.stdout.write('define(`gl_start\', `0\')\n')
sys.stdout.write('define(`gl_end\', `%d\')\n' % int(len(gl)-1))
sys.stdout.write('define(`wgl_start\', `%d\')\n' % int(len(gl)))
sys.stdout.write('define(`wgl_end\', `%d\')\n' % int(len(gl)+len(wgl)-1))
sys.stdout.write('define(`glX_start\', `%d\')\n' % int(len(gl)+len(wgl)))
sys.stdout.write('define(`glX_end\', `%d\')\n' % int(len(gl)+len(wgl)+len(glX)-1))
i = 0
for l in (gl, wgl, glX):
for t in l:
# process ret type to strip trailing spaces
t[0] = string.strip(t[0])
sys.stdout.write('define(`f%d_ret\', `%s\')\n' % (i, t[0]))
sys.stdout.write('define(`f%d_name\', `%s\')\n' % (i, t[2]))
sys.stdout.write('define(`f%d_params\', ``%s\'\')\n' % (i, t[3]))
i += 1

File diff suppressed because it is too large Load diff

View file

@ -1,23 +0,0 @@
dnl =====================================================
dnl utils
dnl =====================================================
define(`forloop',
`pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')')
define(`_forloop',
`$4`'ifelse($1, `$3', ,
`define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')')
dnl =====================================================
dnl the gl wgl glX definitions
dnl =====================================================
include(../gllog/gl_def.m4)
dnl =====================================================
dnl issue the defines to lock out gl usage
dnl =====================================================
define(`define_out', `#define gl$1 use_qgl$1')
forloop(`i', gl_start, gl_end, `define_out(indir(`f'i`_name'))
')
forloop(`i', glX_start, glX_end, `define_out(indir(`f'i`_name'))
')

View file

@ -210,7 +210,9 @@ if ( local_dedicated == 0 ):
linux/input.cpp \
linux/libXNVCtrl/NVCtrl.c'
else:
sys_string += ' linux/dedicated.cpp'
sys_string += ' \
stub/stub_gl.cpp \
linux/dedicated.cpp'
sys_list = scons_utils.BuildList( 'sys', sys_string )
@ -229,7 +231,7 @@ for i in range( len( core_list ) ):
local_env = g_env.Clone()
if ( local_dedicated == 1 ):
local_env.Append( CPPDEFINES = [ 'ID_DEDICATED', 'ID_GL_HARDLINK' ] )
local_env.Append( CPPDEFINES = [ 'ID_DEDICATED' ] )
# don't enable alsa for a dedicated server binary
ALSA = '0'
@ -255,6 +257,9 @@ sound_lib = sound_env.StaticLibrary( 'sound', sound_list )
local_env.Append( LIBS = [ 'pthread', 'jpeg', 'vorbisfile' ] )
if ( local_dedicated == 0 ):
local_env.Append( LIBS = [ 'GL' ] )
if (g_os == "Linux"):
local_env.Append( LIBS = [ 'dl' ] )
@ -267,7 +272,6 @@ if ( local_dedicated == 0 ):
source_list = core_list
source_list += idlib_objects
source_list += [ '../../glimp/sys/scons/libglimp.a' ]
source_list += sound_lib
source_list += [ '../../openal/stubs.cpp' ]

View file

@ -1,101 +0,0 @@
# -*- mode: python -*-
# DOOM build script
# TTimo <ttimo@idsoftware.com>
# http://scons.sourceforge.net
# various GL-related code:
# GL logging functions (used on all platforms)
# GLimp code (Linux only)
# The C code is generated using M4 macros from a description of the GL API
# on win32, the logging functions are generated ones and kept in the source
# on other platforms, scons generates on the fly at build time
import time
Import('GLOBALS')
Import(GLOBALS)
# NOTE: make sure the .api files are in LF line endings, CRLF isn't working so well
def build_logfuncs(env, target, source):
import os, sys
# search for the module - source repository might make things harder
gllog_path = 'sys/gllog'
if ( not os.path.exists( gllog_path + '/logfunc.py' ) ):
gllog_path = '/var/local/Doom/neo/sys/gllog'
sys.path.append( gllog_path )
from logfunc import do_logfunc
f_out = open('%s' % target[0], 'w')
f_out.write('// generated file, do not modify!\n')
f_out.write('// ' + time.asctime() + '\n')
f_out.write('// see SConscript.gl and sys/gllog/\n\n')
f_in = open( gllog_path + '/gl.api', 'r')
do_logfunc(f_in, f_out)
f_in.close()
f_out.write('\n#ifdef __linux__\n\n')
f_in = open( gllog_path + '/glX.api', 'r')
do_logfunc(f_in, f_out)
f_in.close()
f_out.write('\n#endif\n\n')
f_out.write('\n#ifdef WIN32\n\n')
f_in = open( gllog_path + '/wgl.api', 'r')
do_logfunc(f_in, f_out)
f_in.close()
f_out.write('\n#endif\n\n')
f_out.close()
print 'Generated %s' % target[0]
gl_env = g_env.Clone()
gl_env.Append( CPPPATH = '#' )
gl_env.Append( CPPFLAGS = '-DGLIMP' )
if ( local_dedicated == 1 ):
gl_env.Append( CPPFLAGS = '-DID_DEDICATED' )
# general M4 builder setup
# files we are going to generate from their M4 counterparts
m4_list = (
'../gllog/gl_extensions.cpp',
'../linux/glimp_dlopen.cpp',
'../linux/glimp_logging.cpp',
'../linux/glimp_stub.cpp',
'../linux/glimp_local.h' )
for i_m4 in m4_list:
gl_env.M4( i_m4, i_m4 + '.m4' )
gl_env.Depends( i_m4, '../gllog/gl_def.m4' )
# enable if you need to generate again
# FIXME: conflicts when several environements are used. move that to seperate script
#enforce = gl_env.M4( '#sys/linux/qgl_enforce.h', '../linux/qgl_enforce.h.m4' )
#gl_env.Depends( enforce, '../gllog/gl_def.m4' )
# logging functions, python generated ( that's beyond my m4-fu )
gl_env.Depends( '../linux/glimp_logging.cpp', '../linux/glimp_logfuncs.cpp' )
logfuncs = gl_env.Command( '../linux/glimp_logfuncs.cpp', '../gllog/logfunc.py', build_logfuncs )
gl_env.Depends( logfuncs, '../gllog/gl_def.m4' )
sources = []
sources.append( '../gllog/gl_extensions.cpp' )
if ( local_dedicated == 1 ):
sources.append( '../linux/glimp_stub.cpp' )
else:
sources.append( '../linux/glimp_dlopen.cpp' )
sources.append( '../linux/glimp_logging.cpp' )
#if ( DEDICATED != '0' ):
# sources.append( '../linux/glimp_stub.cpp' )
#
#if ( GL_HARDLINK == '0' ):
# sources.append( '../linux/glimp_dlopen.cpp' )
# sources.append( '../linux/glimp_logging.cpp' )
lib = gl_env.StaticLibrary( 'glimp', sources )
#gl_env.Install( '../..', lib )