diff options
Diffstat (limited to 'xc/lib/GL/mesa/src/drv')
60 files changed, 1042 insertions, 262 deletions
diff --git a/xc/lib/GL/mesa/src/drv/Imakefile b/xc/lib/GL/mesa/src/drv/Imakefile index 0f0dcebf5..6639512c2 100644 --- a/xc/lib/GL/mesa/src/drv/Imakefile +++ b/xc/lib/GL/mesa/src/drv/Imakefile @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/Imakefile,v 1.16 2000/12/04 18:54:13 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/Imakefile,v 1.17 2001/01/08 01:07:17 martin Exp $ #define DoNormalLib NormalLibGlx #define DoSharedLib SharedLibGlx diff --git a/xc/lib/GL/mesa/src/drv/ffb/Imakefile b/xc/lib/GL/mesa/src/drv/ffb/Imakefile index b3ae59e4f..338faa722 100644 --- a/xc/lib/GL/mesa/src/drv/ffb/Imakefile +++ b/xc/lib/GL/mesa/src/drv/ffb/Imakefile @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/ffb/Imakefile,v 1.6 2000/10/20 12:57:22 alanh Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/ffb/Imakefile,v 1.7 2001/02/16 01:26:09 dawes Exp $ #include <Threads.tmpl> @@ -229,7 +229,7 @@ NormalLintTarget($(SRCS)) LIBNAME = ffb_dri.so ALL_OBJS = $(OBJS) ALL_DEPS = DONE -SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) +SharedDriModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) InstallDynamicModule($(LIBNAME),$(MODULEDIR),dri) #endif diff --git a/xc/lib/GL/mesa/src/drv/gamma/Imakefile b/xc/lib/GL/mesa/src/drv/gamma/Imakefile index 48387680e..c1bb6d990 100644 --- a/xc/lib/GL/mesa/src/drv/gamma/Imakefile +++ b/xc/lib/GL/mesa/src/drv/gamma/Imakefile @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/gamma/Imakefile,v 1.16 2000/12/12 23:24:27 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/gamma/Imakefile,v 1.18 2001/02/16 01:26:10 dawes Exp $ #include <Threads.tmpl> @@ -64,7 +64,7 @@ MESA_INCLUDES = -I. -I.. -I../../include \ gamma_matrix.c \ gamma_inithw.c \ gamma_texture.c \ - /* gamma_dlist.c */ + gamma_dlist.c GAMMAOBJS = gamma_gl.o \ gamma_xmesa.o \ @@ -72,7 +72,7 @@ MESA_INCLUDES = -I. -I.. -I../../include \ gamma_matrix.o \ gamma_inithw.o \ gamma_texture.o \ - /* gamma_dlist.o */ + gamma_dlist.o MESASRCS = ../../aatriangle.c \ ../../accum.c \ @@ -348,7 +348,7 @@ NormalLintTarget($(SRCS)) LIBNAME = gamma_dri.so ALL_OBJS = $(OBJS) ALL_DEPS = DONE -SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) +SharedDriModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) InstallDynamicModule($(LIBNAME),$(MODULEDIR),dri) #ifdef GlxSoProf diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c b/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c index 930039fa4..d859e5d50 100644 --- a/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c +++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c,v 1.7 2000/11/27 10:59:36 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.c,v 1.9 2001/02/07 13:26:16 alanh Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -39,14 +39,89 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <math.h> #include "gamma_gl.h" #include "gamma_init.h" +#include "gamma_dlist.h" #include "glint_dri.h" -#ifdef RANDOMIZE_COLORS -#include <stdlib.h> + +/* Here for now, will change get.c to move them into macros.h later */ + +#define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE ) +#define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE ) +#define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE ) + +void gamma_error( GLenum error, const char *s ) +{ + GLboolean debug; + +#ifdef DEBUG + debug = GL_TRUE; +#else + if (getenv("MESA_DEBUG")) { + debug = GL_TRUE; + } + else { + debug = GL_FALSE; + } #endif + if (debug) { + char errstr[1000]; + + switch (error) { + case GL_NO_ERROR: + strcpy( errstr, "GL_NO_ERROR" ); + break; + case GL_INVALID_VALUE: + strcpy( errstr, "GL_INVALID_VALUE" ); + break; + case GL_INVALID_ENUM: + strcpy( errstr, "GL_INVALID_ENUM" ); + break; + case GL_INVALID_OPERATION: + strcpy( errstr, "GL_INVALID_OPERATION" ); + break; + case GL_STACK_OVERFLOW: + strcpy( errstr, "GL_STACK_OVERFLOW" ); + break; + case GL_STACK_UNDERFLOW: + strcpy( errstr, "GL_STACK_UNDERFLOW" ); + break; + case GL_OUT_OF_MEMORY: + strcpy( errstr, "GL_OUT_OF_MEMORY" ); + break; + default: + strcpy( errstr, "unknown" ); + break; + } + fprintf( stderr, "Mesa user error: %s in %s\n", errstr, s ); + } + + if (gCCPriv->ErrorValue==GL_NO_ERROR) { + gCCPriv->ErrorValue = error; + } + + /* _gamma_Error( ); use hwLog or something later */ +} + + void _gamma_Accum(GLenum op, GLfloat value) { DEBUG_GLCMDS(("Accum: %d %f\n", (int)op, value)); + + switch (op) { + case GL_ACCUM: + break; + case GL_LOAD: + break; + case GL_ADD: + break; + case GL_MULT: + break; + case GL_RETURN: + break; + default: + gCCPriv->ErrorValue = GL_INVALID_ENUM; + return; + } } void _gamma_AlphaFunc(GLenum func, GLclampf ref) @@ -350,6 +425,7 @@ void _gamma_BlendFunc(GLenum sfactor, GLenum dfactor) } } +#if 0 /* Now in dlist.c */ void _gamma_CallList(GLuint list) { DEBUG_GLCMDS(("CallList: %d\n", (unsigned int)list)); @@ -359,6 +435,7 @@ void _gamma_CallLists(GLsizei n, GLenum type, const GLvoid *lists) { DEBUG_GLCMDS(("CallLists: %d %04x\n", (int)n, (int)type)); } +#endif void _gamma_Clear(GLbitfield mask) { @@ -445,7 +522,7 @@ void _gamma_Clear(GLbitfield mask) temp = (gCCPriv->LBReadMode & LBPartialProdMask) | LBWindowOriginBot; /* UGH - move this later ! */ - if (gDRIPriv->numMXDevices == 2) temp |= LBScanLineInt2; + if (gDRIPriv->numMultiDevices == 2) temp |= LBScanLineInt2; CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITE(gCCPriv->buf, LBReadMode, temp); @@ -634,28 +711,16 @@ void _gamma_ClipPlane(GLenum plane, const GLdouble *equation) void _gamma_Color3b(GLbyte red, GLbyte green, GLbyte blue) { - GLfloat r,g,b; - DEBUG_GLCMDS(("Color3b: %d %d %d\n", red, green, blue)); - r = BYTE_TO_FLOAT(red); - g = BYTE_TO_FLOAT(green); - b = BYTE_TO_FLOAT(blue); - - _gamma_Color3f(r,g,b); + _gamma_Color3f((GLfloat)red,(GLfloat)green,(GLfloat)blue); } void _gamma_Color3bv(const GLbyte *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Color3bv: %d %d %d\n", v[0], v[1], v[2])); - p[0] = BYTE_TO_FLOAT(v[0]); - p[1] = BYTE_TO_FLOAT(v[1]); - p[2] = BYTE_TO_FLOAT(v[2]); - - _gamma_Color3f(p[0],p[1],p[2]); + _gamma_Color3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); } void _gamma_Color3d(GLdouble red, GLdouble green, GLdouble blue) @@ -669,13 +734,18 @@ void _gamma_Color3dv(const GLdouble *v) { DEBUG_GLCMDS(("Color3dv: %f %f %f\n", v[0], v[1], v[2])); - _gamma_Color3fv((GLfloat*)v); + _gamma_Color3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); } void _gamma_Color3f(GLfloat red, GLfloat green, GLfloat blue) { DEBUG_GLCMDS(("Color3f: %f %f %f\n", red, green, blue)); + gCCPriv->Current.Color[0] = red; + gCCPriv->Current.Color[1] = green; + gCCPriv->Current.Color[2] = blue; + gCCPriv->Current.Color[3] = 1.0f; + CHECK_DMA_BUFFER(gCC, gCCPriv, 3); WRITEF(gCCPriv->buf, Cb, blue); WRITEF(gCCPriv->buf, Cg, green); @@ -686,62 +756,35 @@ void _gamma_Color3fv(const GLfloat *v) { DEBUG_GLCMDS(("Color3fv: %f %f %f\n", v[0], v[1], v[2])); - CHECK_DMA_BUFFER(gCC, gCCPriv, 3); - WRITEF(gCCPriv->buf, Cb, v[2]); - WRITEF(gCCPriv->buf, Cg, v[1]); - WRITEF(gCCPriv->buf, Cr3, v[0]); + _gamma_Color3f(v[0],v[1],v[2]); } void _gamma_Color3i(GLint red, GLint green, GLint blue) { - GLfloat r,g,b; - DEBUG_GLCMDS(("Color3i: %d %d %d\n", (int)red, (int)green, (int)blue)); - r = INT_TO_FLOAT(red); - g = INT_TO_FLOAT(green); - b = INT_TO_FLOAT(blue); - - _gamma_Color3f(r,g,b); + _gamma_Color3f((GLfloat)red,(GLfloat)green,(GLfloat)blue); } void _gamma_Color3iv(const GLint *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Color3iv: %d %d %d\n", (int)v[0], (int)v[1], (int)v[2])); - p[0] = INT_TO_FLOAT(v[0]); - p[1] = INT_TO_FLOAT(v[1]); - p[2] = INT_TO_FLOAT(v[2]); - - _gamma_Color3f(p[0],p[1],p[2]); + _gamma_Color3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); } void _gamma_Color3s(GLshort red, GLshort green, GLshort blue) { - GLfloat r,g,b; - DEBUG_GLCMDS(("Color3s: %d %d %d\n", red, green, blue)); - r = SHORT_TO_FLOAT(red); - g = SHORT_TO_FLOAT(green); - b = SHORT_TO_FLOAT(blue); - - _gamma_Color3f(r,g,b); + _gamma_Color3f((GLfloat)red,(GLfloat)green,(GLfloat)blue); } void _gamma_Color3sv(const GLshort *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Color3sv: %d %d %d\n", v[0], v[1], v[2])); - p[0] = SHORT_TO_FLOAT(v[0]); - p[1] = SHORT_TO_FLOAT(v[1]); - p[2] = SHORT_TO_FLOAT(v[2]); - - _gamma_Color3f(p[0],p[1],p[2]); + _gamma_Color3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); } void _gamma_Color3ub(GLubyte red, GLubyte green, GLubyte blue) @@ -770,56 +813,32 @@ void _gamma_Color3ubv(const GLubyte *v) void _gamma_Color3ui(GLuint red, GLuint green, GLuint blue) { - GLfloat r,g,b; - DEBUG_GLCMDS(("Color3ui: %d %d %d\n", (unsigned int)red, (unsigned int)green, (unsigned int)blue)); - r = UINT_TO_FLOAT(red); - g = UINT_TO_FLOAT(green); - b = UINT_TO_FLOAT(blue); - - _gamma_Color3f(r,g,b); + _gamma_Color3f((GLfloat)red,(GLfloat)green,(GLfloat)blue); } void _gamma_Color3uiv(const GLuint *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Color3uiv: %d %d %d\n", (unsigned int)v[0], (unsigned int)v[1], (unsigned int)v[2])); - p[0] = UINT_TO_FLOAT(v[0]); - p[1] = UINT_TO_FLOAT(v[1]); - p[2] = UINT_TO_FLOAT(v[2]); - - _gamma_Color3f(p[0],p[1],p[2]); + _gamma_Color3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); } void _gamma_Color3us(GLushort red, GLushort green, GLushort blue) { - GLfloat r,g,b; - DEBUG_GLCMDS(("Color3us: %d %d %d\n", red, green, blue)); - r = USHORT_TO_FLOAT(red); - g = USHORT_TO_FLOAT(green); - b = USHORT_TO_FLOAT(blue); - - _gamma_Color3f(r,g,b); + _gamma_Color3f((GLfloat)red,(GLfloat)green,(GLfloat)blue); } void _gamma_Color3usv(const GLushort *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Color3usv: %d %d %d\n", v[0], v[1], v[2])); - p[0] = USHORT_TO_FLOAT(v[0]); - p[1] = USHORT_TO_FLOAT(v[1]); - p[2] = USHORT_TO_FLOAT(v[2]); - - _gamma_Color3f(p[0],p[1],p[2]); + _gamma_Color3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); } void _gamma_Color4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) @@ -847,7 +866,7 @@ void _gamma_Color4bv(const GLbyte *v) p[2] = BYTE_TO_FLOAT(v[2]); p[3] = BYTE_TO_FLOAT(v[3]); - _gamma_Color4f(p[0],p[1],p[2],p[3]); + _gamma_Color4fv(p); } void _gamma_Color4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) @@ -861,13 +880,18 @@ void _gamma_Color4dv(const GLdouble *v) { DEBUG_GLCMDS(("Color4dv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); - _gamma_Color4fv((GLfloat*)v); + _gamma_Color4f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2],(GLfloat)v[3]); } void _gamma_Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { DEBUG_GLCMDS(("Color4f: %f %f %f %f\n", red, green, blue, alpha)); + gCCPriv->Current.Color[0] = red; + gCCPriv->Current.Color[1] = green; + gCCPriv->Current.Color[2] = blue; + gCCPriv->Current.Color[3] = alpha; + CHECK_DMA_BUFFER(gCC, gCCPriv, 4); WRITEF(gCCPriv->buf, Ca, alpha); WRITEF(gCCPriv->buf, Cb, blue); @@ -879,6 +903,11 @@ void _gamma_Color4fv(const GLfloat *v) { DEBUG_GLCMDS(("Color4fv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); + gCCPriv->Current.Color[0] = v[0]; + gCCPriv->Current.Color[1] = v[1]; + gCCPriv->Current.Color[2] = v[2]; + gCCPriv->Current.Color[3] = v[3]; + CHECK_DMA_BUFFER(gCC, gCCPriv, 4); WRITEF(gCCPriv->buf, Ca, v[3]); WRITEF(gCCPriv->buf, Cb, v[2]); @@ -913,7 +942,7 @@ void _gamma_Color4iv(const GLint *v) p[2] = INT_TO_FLOAT(v[2]); p[3] = INT_TO_FLOAT(v[3]); - _gamma_Color4f(p[0],p[1],p[2],p[3]); + _gamma_Color4fv(p); } void _gamma_Color4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) @@ -941,7 +970,7 @@ void _gamma_Color4sv(const GLshort *v) p[2] = SHORT_TO_FLOAT(v[2]); p[3] = SHORT_TO_FLOAT(v[3]); - _gamma_Color4f(p[0],p[1],p[2],p[3]); + _gamma_Color4fv(p); } void _gamma_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) @@ -997,7 +1026,7 @@ void _gamma_Color4uiv(const GLuint *v) p[2] = UINT_TO_FLOAT(v[2]); p[3] = UINT_TO_FLOAT(v[3]); - _gamma_Color4f(p[0],p[1],p[2],p[3]); + _gamma_Color4fv(p); } void _gamma_Color4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) @@ -1025,7 +1054,7 @@ void _gamma_Color4usv(const GLushort *v) p[2] = USHORT_TO_FLOAT(v[2]); p[3] = USHORT_TO_FLOAT(v[3]); - _gamma_Color4f(p[0],p[1],p[2],p[3]); + _gamma_Color4fv(p); } void _gamma_ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) @@ -1037,8 +1066,7 @@ void _gamma_ColorMaterial(GLenum face, GLenum mode) { DEBUG_GLCMDS(("ColorMaterial: %04x %04x\n", (int)face, (int)mode)); - gCCPriv->MaterialMode &= ~MaterialModeEnable; - gCCPriv->ColorMaterialMode = ColorMaterialModeDisable; + gCCPriv->ColorMaterialMode &= ~ColorMaterialModeMask; switch (face) { case GL_FRONT: @@ -1070,15 +1098,56 @@ void _gamma_ColorMaterial(GLenum face, GLenum mode) break; } - CHECK_DMA_BUFFER(gCC, gCCPriv, 2); + CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITE(gCCPriv->buf, ColorMaterialMode, gCCPriv->ColorMaterialMode); - WRITE(gCCPriv->buf, MaterialMode, gCCPriv->MaterialMode); } void _gamma_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("ColorPointer: %d %04x %d\n", (int)size, (int)type, (int)stride)); + + if (size<3 || size>4) { + gamma_error( GL_INVALID_VALUE, "glColorPointer(size)" ); + return; + } + if (stride<0) { + gamma_error( GL_INVALID_VALUE, "glColorPointer(stride)" ); + return; + } + switch (type) { + case GL_BYTE: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLbyte); + break; + case GL_UNSIGNED_BYTE: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLubyte); + break; + case GL_SHORT: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLshort); + break; + case GL_UNSIGNED_SHORT: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLushort); + break; + case GL_INT: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLint); + break; + case GL_UNSIGNED_INT: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLuint); + break; + case GL_FLOAT: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLfloat); + break; + case GL_DOUBLE: + gCCPriv->Array.ColorStrideB = stride ? stride : size*sizeof(GLdouble); + break; + default: + gamma_error( GL_INVALID_ENUM, "glColorPointer(type)" ); + return; + } + gCCPriv->Array.ColorSize = size; + gCCPriv->Array.ColorType = type; + gCCPriv->Array.ColorStride = stride; + gCCPriv->Array.ColorPtr = (void *) pointer; } void _gamma_CopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) @@ -1140,10 +1209,12 @@ void _gamma_CullFace(GLenum mode) WRITE(gCCPriv->buf, GeometryMode, gCCPriv->GeometryMode); } +#if 0 /* Now in dlist.c */ void _gamma_DeleteLists(GLuint list, GLsizei range) { DEBUG_GLCMDS(("DeleteLists: %d %d\n", (unsigned int)list, (int)range)); } +#endif void _gamma_DeleteTextures(GLsizei n, const GLuint *textures) { @@ -1262,7 +1333,7 @@ void _gamma_Disable(GLenum cap) gCCPriv->Window &= ~W_DepthFCP; /* Turn depth mode off */ - CHECK_DMA_BUFFER(gCC, gCCPriv, 4); + CHECK_DMA_BUFFER(gCC, gCCPriv, 3); WRITE(gCCPriv->buf, DepthMode, gCCPriv->DepthMode); WRITE(gCCPriv->buf, DeltaMode, gCCPriv->DeltaMode); WRITE(gCCPriv->buf, LBReadModeAnd, ~LBReadDstEnable); @@ -1314,6 +1385,22 @@ void _gamma_Disable(GLenum cap) CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITE(gCCPriv->buf, Light1Mode, gCCPriv->Light1Mode); break; + case GL_LOGIC_OP: + gCCPriv->LogicalOpMode &= ~LogicalOpModeEnable; + CHECK_DMA_BUFFER(gCC, gCCPriv, 1); + WRITE(gCCPriv->buf, LogicalOpMode, gCCPriv->LogicalOpMode); + break; + case GL_NORMALIZE: + gCCPriv->NormalizeMode &= ~NormalizeModeEnable; + CHECK_DMA_BUFFER(gCC, gCCPriv, 2); + WRITE(gCCPriv->buf, NormalizeMode, gCCPriv->NormalizeMode); + WRITE(gCCPriv->buf, TransformModeOr, 0xc); + break; + case GL_SCISSOR_TEST: + gCCPriv->ScissorMode &= ~UserScissorEnable; + CHECK_DMA_BUFFER(gCC, gCCPriv, 1); + WRITE(gCCPriv->buf, ScissorMode, gCCPriv->ScissorMode); + break; case GL_TEXTURE_2D: gCCPriv->Texture2DEnabled = GL_FALSE; gCCPriv->Begin &= ~B_TextureEnable; @@ -1344,6 +1431,29 @@ void _gamma_Disable(GLenum cap) void _gamma_DisableClientState(GLenum array) { DEBUG_GLCMDS(("DisableClientState: %04x\n", (int)array)); + + switch (array) { + case GL_VERTEX_ARRAY: + gCCPriv->Array.VertexEnabled = GL_FALSE; + break; + case GL_NORMAL_ARRAY: + gCCPriv->Array.NormalEnabled = GL_FALSE; + break; + case GL_COLOR_ARRAY: + gCCPriv->Array.ColorEnabled = GL_FALSE; + break; + case GL_INDEX_ARRAY: + gCCPriv->Array.IndexEnabled = GL_FALSE; + break; + case GL_TEXTURE_COORD_ARRAY: + gCCPriv->Array.TexCoordEnabled = GL_FALSE; + break; + case GL_EDGE_FLAG_ARRAY: + gCCPriv->Array.EdgeFlagEnabled = GL_FALSE; + break; + default: + gamma_error( GL_INVALID_ENUM, "glEnable/DisableClientState" ); + } } void _gamma_DrawArrays(GLenum mode, GLint first, GLsizei count) @@ -1406,7 +1516,7 @@ void _gamma_Enable(GLenum cap) #endif /* Turn depth mode on */ - CHECK_DMA_BUFFER(gCC, gCCPriv, 4); + CHECK_DMA_BUFFER(gCC, gCCPriv, 3); WRITE(gCCPriv->buf, DepthMode, gCCPriv->DepthMode); WRITE(gCCPriv->buf, DeltaMode, gCCPriv->DeltaMode); WRITE(gCCPriv->buf, LBReadModeOr, LBReadDstEnable); @@ -1464,6 +1574,22 @@ void _gamma_Enable(GLenum cap) CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITE(gCCPriv->buf, Light1Mode, gCCPriv->Light1Mode); break; + case GL_LOGIC_OP: + gCCPriv->LogicalOpMode |= LogicalOpModeEnable; + CHECK_DMA_BUFFER(gCC, gCCPriv, 1); + WRITE(gCCPriv->buf, LogicalOpMode, gCCPriv->LogicalOpMode); + break; + case GL_NORMALIZE: + gCCPriv->NormalizeMode |= NormalizeModeEnable; + CHECK_DMA_BUFFER(gCC, gCCPriv, 2); + WRITE(gCCPriv->buf, NormalizeMode, gCCPriv->NormalizeMode); + WRITE(gCCPriv->buf, TransformModeAnd, 0xffffff3f); + break; + case GL_SCISSOR_TEST: + gCCPriv->ScissorMode |= UserScissorEnable; + CHECK_DMA_BUFFER(gCC, gCCPriv, 1); + WRITE(gCCPriv->buf, ScissorMode, gCCPriv->ScissorMode); + break; case GL_TEXTURE_2D: gCCPriv->Texture2DEnabled = GL_TRUE; #ifndef TURN_OFF_TEXTURES @@ -1496,6 +1622,29 @@ void _gamma_Enable(GLenum cap) void _gamma_EnableClientState(GLenum array) { DEBUG_GLCMDS(("EnableClientState: %04x\n", (int)array)); + + switch (array) { + case GL_VERTEX_ARRAY: + gCCPriv->Array.VertexEnabled = GL_TRUE; + break; + case GL_NORMAL_ARRAY: + gCCPriv->Array.NormalEnabled = GL_TRUE; + break; + case GL_COLOR_ARRAY: + gCCPriv->Array.ColorEnabled = GL_TRUE; + break; + case GL_INDEX_ARRAY: + gCCPriv->Array.IndexEnabled = GL_TRUE; + break; + case GL_TEXTURE_COORD_ARRAY: + gCCPriv->Array.TexCoordEnabled = GL_TRUE; + break; + case GL_EDGE_FLAG_ARRAY: + gCCPriv->Array.EdgeFlagEnabled = GL_TRUE; + break; + default: + gamma_error( GL_INVALID_ENUM, "glEnable/DisableClientState" ); + } } void _gamma_End(void) @@ -1519,10 +1668,12 @@ void _gamma_End(void) #endif } +#if 0 /* Now in dlist.c */ void _gamma_EndList(void) { DEBUG_GLCMDS(("EndList\n")); } +#endif void _gamma_EvalCoord1d(GLdouble u) { @@ -1620,8 +1771,10 @@ void _gamma_Fogfv(GLenum pname, const GLfloat *params) switch (pname) { case GL_FOG_COLOR: - color = ((int)params[3]<<24) | ((int)params[2]<<16) | - ((int)params[1]<<8) | ((int)params[0]); + color = (FLOAT_TO_UBYTE(params[3])<<24) | + (FLOAT_TO_UBYTE(params[2])<<16) | + (FLOAT_TO_UBYTE(params[1])<<8) | + (FLOAT_TO_UBYTE(params[0])); CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITE(gCCPriv->buf, FogColor, color); break; @@ -1704,12 +1857,14 @@ void _gamma_Frustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top gammaLoadHWMatrix(); } +#if 0 /* Now in dlist.c */ GLuint _gamma_GenLists(GLsizei range) { DEBUG_GLCMDS(("GenLists: %d\n", (int)range)); return GL_TRUE; } +#endif void _gamma_GenTextures(GLsizei n, GLuint *textures) { @@ -1718,7 +1873,36 @@ void _gamma_GenTextures(GLsizei n, GLuint *textures) void _gamma_GetBooleanv(GLenum val, GLboolean *b) { + int loop; + DEBUG_GLCMDS(("GetBooleanv: %04x\n", (int)val)); + + switch (val) { + case GL_CURRENT_COLOR: + b[0] = FLOAT_TO_BOOL(gCCPriv->Current.Color[0]); + b[1] = FLOAT_TO_BOOL(gCCPriv->Current.Color[1]); + b[2] = FLOAT_TO_BOOL(gCCPriv->Current.Color[2]); + b[3] = FLOAT_TO_BOOL(gCCPriv->Current.Color[3]); + break; + case GL_CURRENT_NORMAL: + b[0] = FLOAT_TO_BOOL(gCCPriv->Current.Normal[0]); + b[1] = FLOAT_TO_BOOL(gCCPriv->Current.Normal[1]); + b[2] = FLOAT_TO_BOOL(gCCPriv->Current.Normal[2]); + break; + case GL_MAX_TEXTURE_SIZE: + *b = FLOAT_TO_BOOL(GAMMA_MAX_TEXTURE_SIZE); + break; + case GL_MODELVIEW_MATRIX: + for (loop = 0; loop < 16; loop++) + b[loop] = FLOAT_TO_BOOL(gCCPriv->ModelView[loop]); + break; + case GL_CURRENT_TEXTURE_COORDS: + b[0] = FLOAT_TO_BOOL(gCCPriv->Current.TexCoord[0]); + b[1] = FLOAT_TO_BOOL(gCCPriv->Current.TexCoord[1]); + b[2] = FLOAT_TO_BOOL(gCCPriv->Current.TexCoord[2]); + b[3] = FLOAT_TO_BOOL(gCCPriv->Current.TexCoord[3]); + break; + } } void _gamma_GetClipPlane(GLenum plane, GLdouble *equation) @@ -1729,25 +1913,75 @@ void _gamma_GetClipPlane(GLenum plane, GLdouble *equation) void _gamma_GetDoublev(GLenum val, GLdouble *d) { + int loop; + DEBUG_GLCMDS(("GetDoublev: %04x\n", (int)val)); + + switch (val) { + case GL_CURRENT_COLOR: + d[0] = (GLdouble)gCCPriv->Current.Color[0]; + d[1] = (GLdouble)gCCPriv->Current.Color[1]; + d[2] = (GLdouble)gCCPriv->Current.Color[2]; + d[3] = (GLdouble)gCCPriv->Current.Color[3]; + break; + case GL_CURRENT_NORMAL: + d[0] = (GLdouble)gCCPriv->Current.Normal[0]; + d[1] = (GLdouble)gCCPriv->Current.Normal[1]; + d[2] = (GLdouble)gCCPriv->Current.Normal[2]; + break; + case GL_MAX_TEXTURE_SIZE: + *d = (GLdouble)INT_TO_FLOAT(GAMMA_MAX_TEXTURE_SIZE); + break; + case GL_MODELVIEW_MATRIX: + for (loop = 0; loop < 16; loop++) + d[loop] = (GLdouble)gCCPriv->ModelView[loop]; + break; + case GL_CURRENT_TEXTURE_COORDS: + d[0] = (GLdouble)gCCPriv->Current.TexCoord[0]; + d[1] = (GLdouble)gCCPriv->Current.TexCoord[1]; + d[2] = (GLdouble)gCCPriv->Current.TexCoord[2]; + d[3] = (GLdouble)gCCPriv->Current.TexCoord[3]; + break; + } } GLenum _gamma_GetError(void) { DEBUG_GLCMDS(("GetError\n")); - return 0; + + return gCCPriv->ErrorValue; } void _gamma_GetFloatv(GLenum val, GLfloat *f) { - int i; + int loop; DEBUG_GLCMDS(("GetFloatv: %04x\n", (int)val)); switch (val) { + case GL_CURRENT_COLOR: + f[0] = gCCPriv->Current.Color[0]; + f[1] = gCCPriv->Current.Color[1]; + f[2] = gCCPriv->Current.Color[2]; + f[3] = gCCPriv->Current.Color[3]; + break; + case GL_CURRENT_NORMAL: + f[0] = gCCPriv->Current.Normal[0]; + f[1] = gCCPriv->Current.Normal[1]; + f[2] = gCCPriv->Current.Normal[2]; + break; + case GL_MAX_TEXTURE_SIZE: + *f = INT_TO_FLOAT(GAMMA_MAX_TEXTURE_SIZE); + break; case GL_MODELVIEW_MATRIX: - for (i = 0; i < 16; i++) - f[i] = gCCPriv->ModelView[i]; + for (loop = 0; loop < 16; loop++) + f[loop] = gCCPriv->ModelView[loop]; + break; + case GL_CURRENT_TEXTURE_COORDS: + f[0] = gCCPriv->Current.TexCoord[0]; + f[1] = gCCPriv->Current.TexCoord[1]; + f[2] = gCCPriv->Current.TexCoord[2]; + f[3] = gCCPriv->Current.TexCoord[3]; break; default: break; @@ -1756,11 +1990,34 @@ void _gamma_GetFloatv(GLenum val, GLfloat *f) void _gamma_GetIntegerv(GLenum val, GLint *i) { + int loop; + DEBUG_GLCMDS(("GetIntegerv: %04x\n", (int)val)); switch (val) { + case GL_CURRENT_COLOR: + i[0] = FLOAT_TO_INT(gCCPriv->Current.Color[0]); + i[1] = FLOAT_TO_INT(gCCPriv->Current.Color[1]); + i[2] = FLOAT_TO_INT(gCCPriv->Current.Color[2]); + i[3] = FLOAT_TO_INT(gCCPriv->Current.Color[3]); + break; + case GL_CURRENT_NORMAL: + i[0] = FLOAT_TO_INT(gCCPriv->Current.Normal[0]); + i[1] = FLOAT_TO_INT(gCCPriv->Current.Normal[1]); + i[2] = FLOAT_TO_INT(gCCPriv->Current.Normal[2]); + break; case GL_MAX_TEXTURE_SIZE: - *i = 2048; + *i = GAMMA_MAX_TEXTURE_SIZE; + break; + case GL_MODELVIEW_MATRIX: + for (loop = 0; loop < 16; loop++) + i[loop] = FLOAT_TO_INT(gCCPriv->ModelView[loop]); + break; + case GL_CURRENT_TEXTURE_COORDS: + i[0] = FLOAT_TO_INT(gCCPriv->Current.TexCoord[0]); + i[1] = FLOAT_TO_INT(gCCPriv->Current.TexCoord[1]); + i[2] = FLOAT_TO_INT(gCCPriv->Current.TexCoord[2]); + i[3] = FLOAT_TO_INT(gCCPriv->Current.TexCoord[3]); break; } } @@ -1967,12 +2224,14 @@ GLboolean _gamma_IsEnabled(GLenum cap) return GL_TRUE; } +#if 0 /* Now in dlist.c */ GLboolean _gamma_IsList(GLuint list) { DEBUG_GLCMDS(("IsList: %04x\n", (unsigned int)list)); return GL_TRUE; } +#endif GLboolean _gamma_IsTexture(GLuint texture) { @@ -2001,7 +2260,7 @@ void _gamma_LightModelfv(GLenum pname, const GLfloat *params) WRITEF(gCCPriv->buf, SceneAmbientColorRed, params[0]); break; case GL_LIGHT_MODEL_LOCAL_VIEWER: - if ((int)params[0] != 0) + if (params[0] != 0.0) gCCPriv->LightingMode |= LightingModeLocalViewer; else gCCPriv->LightingMode &= ~LightingModeLocalViewer; @@ -2009,7 +2268,7 @@ void _gamma_LightModelfv(GLenum pname, const GLfloat *params) WRITE(gCCPriv->buf, LightingMode, gCCPriv->LightingMode); break; case GL_LIGHT_MODEL_TWO_SIDE: - if ((int)params[0] != 0) { + if (params[0] == 1.0f) { gCCPriv->LightingMode |= LightingModeTwoSides; gCCPriv->MaterialMode |= MaterialModeTwoSides; } else { @@ -2039,7 +2298,7 @@ void _gamma_Lightf(GLenum light, GLenum pname, GLfloat param) void _gamma_Lightfv(GLenum light, GLenum pname, const GLfloat *params) { - GLfloat l,x,y,z; + GLfloat l,x,y,z,w; DEBUG_GLCMDS(("Lightfv: %04x %04x %f\n", (int)light, (int)pname, *params)); @@ -2069,12 +2328,13 @@ void _gamma_Lightfv(GLenum light, GLenum pname, const GLfloat *params) break; case GL_POSITION: /* Normalize <x,y,z> */ - x = params[0]; y = params[1]; z = params[2]; - l = sqrt(x*x + y*y + z*z); + x = params[0]; y = params[1]; z = params[2]; w = params[3]; + l = sqrt(x*x + y*y + z*z + w*w); + w /= l; x /= l; y /= l; z /= l; - if ((int)params[3] != 0) { + if (params[3] != 0.0) { gCCPriv->Light0Mode |= Light0ModeAttenuation; gCCPriv->Light0Mode |= Light0ModeLocal; } else { @@ -2083,30 +2343,30 @@ void _gamma_Lightfv(GLenum light, GLenum pname, const GLfloat *params) } CHECK_DMA_BUFFER(gCC, gCCPriv, 5); WRITE(gCCPriv->buf, Light0Mode, gCCPriv->Light0Mode); - WRITEF(gCCPriv->buf, Light0PositionW, params[3]); + WRITEF(gCCPriv->buf, Light0PositionW, w); WRITEF(gCCPriv->buf, Light0PositionZ, z); WRITEF(gCCPriv->buf, Light0PositionY, y); WRITEF(gCCPriv->buf, Light0PositionX, x); break; case GL_SPOT_DIRECTION: CHECK_DMA_BUFFER(gCC, gCCPriv, 3); - WRITEF(gCCPriv->buf, Light0SpotlightDirectionZ, params[3]); - WRITEF(gCCPriv->buf, Light0SpotlightDirectionY, params[2]); - WRITEF(gCCPriv->buf, Light0SpotlightDirectionX, params[1]); - /* WRITEF(gCCPriv->buf, Light0SpotlightDirectionW, params[0]); */ + /* WRITEF(gCCPriv->buf, Light0SpotlightDirectionW, params[3]); */ + WRITEF(gCCPriv->buf, Light0SpotlightDirectionZ, params[2]); + WRITEF(gCCPriv->buf, Light0SpotlightDirectionY, params[1]); + WRITEF(gCCPriv->buf, Light0SpotlightDirectionX, params[0]); break; case GL_SPOT_EXPONENT: CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITEF(gCCPriv->buf, Light0SpotlightExponent, params[0]); break; case GL_SPOT_CUTOFF: - if ((int)params[0] != -1) + if (params[0] != 180.0) gCCPriv->Light0Mode |= Light0ModeSpotLight; else gCCPriv->Light0Mode &= ~Light0ModeSpotLight; CHECK_DMA_BUFFER(gCC, gCCPriv, 2); WRITE(gCCPriv->buf, Light0Mode, gCCPriv->Light0Mode); - WRITEF(gCCPriv->buf, Light0CosSpotlightCutoffAngle, params[0]); + WRITEF(gCCPriv->buf, Light0CosSpotlightCutoffAngle, cos(params[0]*DEG2RAD)); break; case GL_CONSTANT_ATTENUATION: CHECK_DMA_BUFFER(gCC, gCCPriv, 1); @@ -2152,7 +2412,7 @@ void _gamma_Lightfv(GLenum light, GLenum pname, const GLfloat *params) x /= l; y /= l; z /= l; - if ((int)params[3] != 0) { + if (params[3] != 0.0) { gCCPriv->Light1Mode |= Light1ModeAttenuation; gCCPriv->Light1Mode |= Light1ModeLocal; } else { @@ -2168,23 +2428,23 @@ void _gamma_Lightfv(GLenum light, GLenum pname, const GLfloat *params) break; case GL_SPOT_DIRECTION: CHECK_DMA_BUFFER(gCC, gCCPriv, 3); - WRITEF(gCCPriv->buf, Light1SpotlightDirectionZ, params[3]); - WRITEF(gCCPriv->buf, Light1SpotlightDirectionY, params[2]); - WRITEF(gCCPriv->buf, Light1SpotlightDirectionX, params[1]); - /* WRITEF(gCCPriv->buf, Light1SpotlightDirectionW, params[0]); */ + /* WRITEF(gCCPriv->buf, Light1SpotlightDirectionW, params[3]); */ + WRITEF(gCCPriv->buf, Light1SpotlightDirectionZ, params[2]); + WRITEF(gCCPriv->buf, Light1SpotlightDirectionY, params[1]); + WRITEF(gCCPriv->buf, Light1SpotlightDirectionX, params[0]); break; case GL_SPOT_EXPONENT: CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITEF(gCCPriv->buf, Light1SpotlightExponent, params[0]); break; case GL_SPOT_CUTOFF: - if ((int)params[0] != -1) + if (params[0] != 180.0) gCCPriv->Light1Mode |= Light1ModeSpotLight; else gCCPriv->Light1Mode &= ~Light1ModeSpotLight; CHECK_DMA_BUFFER(gCC, gCCPriv, 2); WRITE(gCCPriv->buf, Light1Mode, gCCPriv->Light1Mode); - WRITEF(gCCPriv->buf, Light1CosSpotlightCutoffAngle, params[0]); + WRITEF(gCCPriv->buf, Light1CosSpotlightCutoffAngle, cos(params[0]*DEG2RAD)); break; case GL_CONSTANT_ATTENUATION: CHECK_DMA_BUFFER(gCC, gCCPriv, 1); @@ -2220,10 +2480,12 @@ void _gamma_LineWidth(GLfloat width) DEBUG_GLCMDS(("LineWidth: %f\n", width)); } +#if 0 /* Now in dlist.c */ void _gamma_ListBase(GLuint base) { DEBUG_GLCMDS(("ListBase: %d\n", (unsigned int)base)); } +#endif void _gamma_LoadIdentity(void) { @@ -2261,6 +2523,13 @@ void _gamma_LoadName(GLuint name) void _gamma_LogicOp(GLenum opcode) { DEBUG_GLCMDS(("LogicOp: %04x\n", (int)opcode)); + + gCCPriv->LogicalOpMode &= ~LogicalOpModeMask; + + gCCPriv->LogicalOpMode |= (opcode & 0x0f) << 1; + + CHECK_DMA_BUFFER(gCC, gCCPriv, 1); + WRITE(gCCPriv->buf, LogicalOpMode, gCCPriv->LogicalOpMode); } void _gamma_Map1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *pnts) @@ -2318,6 +2587,8 @@ void _gamma_MapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GL void _gamma_Materialf(GLenum face, GLenum pname, GLfloat param) { DEBUG_GLCMDS(("Materialf: %04x %04x %f\n", (int)face, (int)pname, param)); + + _gamma_Materialfv(face, pname, ¶m); } void _gamma_Materialfv(GLenum face, GLenum pname, const GLfloat *params) @@ -2453,7 +2724,6 @@ void _gamma_MatrixMode(GLenum mode) /* ERROR!!! */ break; } - } void _gamma_MultMatrixd(const GLdouble *m) @@ -2476,15 +2746,15 @@ void _gamma_MultMatrixf(const GLfloat *m) gammaLoadHWMatrix(); } +#if 0 /* Now in dlist.c */ void _gamma_NewList(GLuint list, GLenum mode) { DEBUG_GLCMDS(("NewList: %d %04x\n", (unsigned int)list, (int)mode)); } +#endif void _gamma_Normal3b(GLbyte nx, GLbyte ny, GLbyte nz) { - GLfloat x,y,z; - DEBUG_GLCMDS(("Normal3b: %d %d %d\n", nx, ny, nz)); _gamma_Normal3f((GLfloat)nx,(GLfloat)ny,(GLfloat)nz); @@ -2492,8 +2762,6 @@ void _gamma_Normal3b(GLbyte nx, GLbyte ny, GLbyte nz) void _gamma_Normal3bv(const GLbyte *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Normal3bv: %d %d %d\n", v[0], v[1], v[2])); _gamma_Normal3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); @@ -2517,6 +2785,10 @@ void _gamma_Normal3f(GLfloat nx, GLfloat ny, GLfloat nz) { DEBUG_GLCMDS(("Normal3f: %f %f %f\n", nx, ny, nz)); + gCCPriv->Current.Normal[0] = nx; + gCCPriv->Current.Normal[1] = ny; + gCCPriv->Current.Normal[2] = nz; + CHECK_DMA_BUFFER(gCC, gCCPriv, 3); WRITEF(gCCPriv->buf, Nz, nz); WRITEF(gCCPriv->buf, Ny, ny); @@ -2532,8 +2804,6 @@ void _gamma_Normal3fv(const GLfloat *v) void _gamma_Normal3i(GLint nx, GLint ny, GLint nz) { - GLfloat x,y,z; - DEBUG_GLCMDS(("Normal3i: %d %d %d\n", (int)nx, (int)ny, (int)nz)); _gamma_Normal3f((GLfloat)nx,(GLfloat)ny,(GLfloat)nz); @@ -2541,8 +2811,6 @@ void _gamma_Normal3i(GLint nx, GLint ny, GLint nz) void _gamma_Normal3iv(const GLint *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Normal3iv: %d %d %d\n", (int)v[0], (int)v[1], (int)v[2])); _gamma_Normal3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); @@ -2550,8 +2818,6 @@ void _gamma_Normal3iv(const GLint *v) void _gamma_Normal3s(GLshort nx, GLshort ny, GLshort nz) { - GLfloat x,y,z; - DEBUG_GLCMDS(("Normal3s: %d %d %d\n", nx, ny, nz)); _gamma_Normal3f((GLfloat)nx,(GLfloat)ny,(GLfloat)nz); @@ -2559,8 +2825,6 @@ void _gamma_Normal3s(GLshort nx, GLshort ny, GLshort nz) void _gamma_Normal3sv(const GLshort *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Normal3sv: %d %d %d\n", v[0], v[1], v[2])); _gamma_Normal3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); @@ -2569,6 +2833,34 @@ void _gamma_Normal3sv(const GLshort *v) void _gamma_NormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) { DEBUG_GLCMDS(("NormalPointer: %04x %d\n", (int)type, (int)stride)); + + if (stride<0) { + gamma_error( GL_INVALID_VALUE, "glNormalPointer(stride)" ); + return; + } + switch (type) { + case GL_BYTE: + gCCPriv->Array.NormalStrideB = stride ? stride : 3*sizeof(GLbyte); + break; + case GL_SHORT: + gCCPriv->Array.NormalStrideB = stride ? stride : 3*sizeof(GLshort); + break; + case GL_INT: + gCCPriv->Array.NormalStrideB = stride ? stride : 3*sizeof(GLint); + break; + case GL_FLOAT: + gCCPriv->Array.NormalStrideB = stride ? stride : 3*sizeof(GLfloat); + break; + case GL_DOUBLE: + gCCPriv->Array.NormalStrideB = stride ? stride : 3*sizeof(GLdouble); + break; + default: + gamma_error( GL_INVALID_ENUM, "glNormalPointer(type)" ); + return; + } + gCCPriv->Array.NormalType = type; + gCCPriv->Array.NormalStride = stride; + gCCPriv->Array.NormalPtr = (void *) pointer; } void _gamma_Ortho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) @@ -2844,22 +3136,38 @@ void _gamma_PushName(GLuint name) void _gamma_RasterPos2d(GLdouble x, GLdouble y) { + DEBUG_GLCMDS(("RasterPos2d: %f %f\n", x, y)); + + _gamma_RasterPos2f((GLfloat)x,(GLfloat)y); } void _gamma_RasterPos2dv(const GLdouble *v) { + _gamma_RasterPos2f((GLfloat)v[0],(GLfloat)v[1]); } void _gamma_RasterPos2f(GLfloat x, GLfloat y) { + DEBUG_GLCMDS(("RasterPos2f: %f %f\n", x, y)); + + gCCPriv->Current.RasterPos[0] = x; + gCCPriv->Current.RasterPos[1] = y; + gCCPriv->Current.RasterPos[2] = 0.0f; + gCCPriv->Current.RasterPos[3] = 1.0f; + + CHECK_DMA_BUFFER(gCC, gCCPriv, 2); + WRITEF(gCCPriv->buf, RPy, y); + WRITEF(gCCPriv->buf, RPx2, x); } void _gamma_RasterPos2fv(const GLfloat *v) { + _gamma_RasterPos2f(v[0],v[1]); } void _gamma_RasterPos2i(GLint x, GLint y) { + _gamma_RasterPos2f((GLfloat)x,(GLfloat)y); } void _gamma_RasterPos2iv(const GLint *v) @@ -3118,8 +3426,21 @@ void _gamma_Scalef(GLfloat x, GLfloat y, GLfloat z) void _gamma_Scissor(GLint x, GLint y, GLsizei width, GLsizei height) { + GLint x1, y1, x2, y2; + DEBUG_GLCMDS(("Scissor: %d %d %d %d\n", (int)x, (int)y, (int)width, (int)height)); + + x1 = gCC->driDrawablePriv->x + x; + y1 = gCC->driScreenPriv->fbHeight - + (gCC->driDrawablePriv->y + + gCC->driDrawablePriv->h) + y; + x2 = x1 + width; + y2 = y1 + height; + + CHECK_DMA_BUFFER(gCC, gCCPriv, 2); + WRITE(gCCPriv->buf, ScissorMinXY, (y1&0xffff)<<16 | (x1&0xffff)); + WRITE(gCCPriv->buf, ScissorMaxXY, (y2&0xffff)<<16 | (x2&0xffff)); } void _gamma_SelectBuffer(GLsizei numnames, GLuint *buffer) @@ -3188,6 +3509,11 @@ void _gamma_TexCoord1f(GLfloat s) { DEBUG_GLCMDS(("TexCoord1f: %f\n", s)); + gCCPriv->Current.TexCoord[0] = s; + gCCPriv->Current.TexCoord[1] = 0.0f; + gCCPriv->Current.TexCoord[2] = 0.0f; + gCCPriv->Current.TexCoord[3] = 1.0f; + WRITEF(gCCPriv->buf, Ts1, s); } @@ -3195,6 +3521,11 @@ void _gamma_TexCoord1fv(const GLfloat *v) { DEBUG_GLCMDS(("TexCoord1fv: %f\n", *v)); + gCCPriv->Current.TexCoord[0] = v[0]; + gCCPriv->Current.TexCoord[1] = 0.0f; + gCCPriv->Current.TexCoord[2] = 0.0f; + gCCPriv->Current.TexCoord[3] = 1.0f; + WRITEF(gCCPriv->buf, Ts1, v[0]); } @@ -3260,6 +3591,11 @@ void _gamma_TexCoord2f(GLfloat s, GLfloat t) { DEBUG_GLCMDS(("TexCoord2f: %f %f\n", s, t)); + gCCPriv->Current.TexCoord[0] = s; + gCCPriv->Current.TexCoord[1] = t; + gCCPriv->Current.TexCoord[2] = 0.0f; + gCCPriv->Current.TexCoord[3] = 1.0f; + CHECK_DMA_BUFFER(gCC, gCCPriv, 2); WRITEF(gCCPriv->buf, Tt2, t); WRITEF(gCCPriv->buf, Ts2, s); @@ -3269,6 +3605,11 @@ void _gamma_TexCoord2fv(const GLfloat *v) { DEBUG_GLCMDS(("TexCoord2fv: %f %f\n", v[0], v[1])); + gCCPriv->Current.TexCoord[0] = v[0]; + gCCPriv->Current.TexCoord[1] = v[1]; + gCCPriv->Current.TexCoord[2] = 0.0f; + gCCPriv->Current.TexCoord[3] = 1.0f; + CHECK_DMA_BUFFER(gCC, gCCPriv, 2); WRITEF(gCCPriv->buf, Tt2, v[1]); WRITEF(gCCPriv->buf, Ts2, v[0]); @@ -3429,6 +3770,11 @@ void _gamma_TexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) { DEBUG_GLCMDS(("TexCoord4f: %f %f %f %f\n", s, t, r, q)); + gCCPriv->Current.TexCoord[0] = s; + gCCPriv->Current.TexCoord[1] = t; + gCCPriv->Current.TexCoord[2] = t; + gCCPriv->Current.TexCoord[3] = q; + CHECK_DMA_BUFFER(gCC, gCCPriv, 4); WRITEF(gCCPriv->buf, Tq4, q); WRITEF(gCCPriv->buf, Tr4, r); @@ -3440,6 +3786,11 @@ void _gamma_TexCoord4fv(const GLfloat *v) { DEBUG_GLCMDS(("TexCoord4fv: %f %f %f %f\n", v[0], v[1], v[2], v[3])); + gCCPriv->Current.TexCoord[0] = v[0]; + gCCPriv->Current.TexCoord[1] = v[1]; + gCCPriv->Current.TexCoord[2] = v[2]; + gCCPriv->Current.TexCoord[3] = v[3]; + CHECK_DMA_BUFFER(gCC, gCCPriv, 4); WRITEF(gCCPriv->buf, Tq4, v[3]); WRITEF(gCCPriv->buf, Tr4, v[2]); @@ -3508,6 +3859,36 @@ void _gamma_TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoi { DEBUG_GLCMDS(("TexCoordPointer: %d %04x %d\n", (int)size, (int)type, (int)stride)); + + if (size<1 || size>4) { + gamma_error( GL_INVALID_VALUE, "glTexCoordPointer(size)" ); + return; + } + if (stride<0) { + gamma_error( GL_INVALID_VALUE, "glTexCoordPointer(stride)" ); + return; + } + switch (type) { + case GL_SHORT: + gCCPriv->Array.TexCoordStrideB = stride ? stride : size*sizeof(GLshort); + break; + case GL_INT: + gCCPriv->Array.TexCoordStrideB = stride ? stride : size*sizeof(GLint); + break; + case GL_FLOAT: + gCCPriv->Array.TexCoordStrideB = stride ? stride : size*sizeof(GLfloat); + break; + case GL_DOUBLE: + gCCPriv->Array.TexCoordStrideB = stride ? stride : size*sizeof(GLdouble); + break; + default: + gamma_error( GL_INVALID_ENUM, "glTexCoordPointer(type)" ); + return; + } + gCCPriv->Array.TexCoordSize = size; + gCCPriv->Array.TexCoordType = type; + gCCPriv->Array.TexCoordStride = stride; + gCCPriv->Array.TexCoordPtr = (void *) pointer; } void _gamma_TexEnvf(GLenum target, GLenum pname, GLfloat param) @@ -4158,8 +4539,6 @@ void _gamma_Vertex2fv(const GLfloat *v) void _gamma_Vertex2i(GLint x, GLint y) { - GLfloat a,b; - DEBUG_GLCMDS(("Vertex2i: %d %d\n", (int)x, (int)y)); _gamma_Vertex2f((GLfloat)x,(GLfloat)y); @@ -4167,8 +4546,6 @@ void _gamma_Vertex2i(GLint x, GLint y) void _gamma_Vertex2iv(const GLint *v) { - GLfloat p[2]; - DEBUG_GLCMDS(("Vertex2iv: %d %d\n", (int)v[0], (int)v[1])); _gamma_Vertex2f((GLfloat)v[0],(GLfloat)v[1]); @@ -4176,8 +4553,6 @@ void _gamma_Vertex2iv(const GLint *v) void _gamma_Vertex2s(GLshort x, GLshort y) { - GLfloat a,b; - DEBUG_GLCMDS(("Vertex2s: %d %d\n", x, y)); _gamma_Vertex2f((GLfloat)x,(GLfloat)y); @@ -4185,8 +4560,6 @@ void _gamma_Vertex2s(GLshort x, GLshort y) void _gamma_Vertex2sv(const GLshort *v) { - GLfloat p[2]; - DEBUG_GLCMDS(("Vertex2sv: %d %d\n", v[0], v[1])); _gamma_Vertex2f((GLfloat)v[0],(GLfloat)v[1]); @@ -4225,8 +4598,6 @@ void _gamma_Vertex3fv(const GLfloat *v) void _gamma_Vertex3i(GLint x, GLint y, GLint z) { - GLfloat a,b,c; - DEBUG_GLCMDS(("Vertex3i: %d %d %d\n", (int)x, (int)y, (int)z)); _gamma_Vertex3f((GLfloat)x,(GLfloat)y,(GLfloat)z); @@ -4234,8 +4605,6 @@ void _gamma_Vertex3i(GLint x, GLint y, GLint z) void _gamma_Vertex3iv(const GLint *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Vertex3iv: %d %d %d\n", (int)v[0], (int)v[1], (int)v[2])); _gamma_Vertex3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); @@ -4243,8 +4612,6 @@ void _gamma_Vertex3iv(const GLint *v) void _gamma_Vertex3s(GLshort x, GLshort y, GLshort z) { - GLfloat a,b,c; - DEBUG_GLCMDS(("Vertex3s: %d %d %d\n", x, y, z)); _gamma_Vertex3f((GLfloat)x,(GLfloat)y,(GLfloat)z); @@ -4252,8 +4619,6 @@ void _gamma_Vertex3s(GLshort x, GLshort y, GLshort z) void _gamma_Vertex3sv(const GLshort *v) { - GLfloat p[3]; - DEBUG_GLCMDS(("Vertex3sv: %d %d %d\n", v[0], v[1], v[2])); _gamma_Vertex3f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2]); @@ -4293,8 +4658,6 @@ void _gamma_Vertex4fv(const GLfloat *v) void _gamma_Vertex4i(GLint x, GLint y, GLint z, GLint w) { - GLfloat a,b,c,d; - DEBUG_GLCMDS(("Vertex4i: %d %d %d %d\n", (int)x, (int)y, (int)z, (int)w)); _gamma_Vertex4f((GLfloat)x,(GLfloat)y,(GLfloat)z,(GLfloat)w); @@ -4302,8 +4665,6 @@ void _gamma_Vertex4i(GLint x, GLint y, GLint z, GLint w) void _gamma_Vertex4iv(const GLint *v) { - GLfloat p[4]; - DEBUG_GLCMDS(("Vertex4iv: %d %d %d %d\n", (int)v[0], (int)v[1], (int)v[2], (int)v[3])); @@ -4312,8 +4673,6 @@ void _gamma_Vertex4iv(const GLint *v) void _gamma_Vertex4s(GLshort x, GLshort y, GLshort z, GLshort w) { - GLfloat a,b,c,d; - DEBUG_GLCMDS(("Vertex4s: %d %d %d %d\n", x, y, z, w)); _gamma_Vertex4f((GLfloat)x,(GLfloat)y,(GLfloat)z,(GLfloat)w); @@ -4321,8 +4680,6 @@ void _gamma_Vertex4s(GLshort x, GLshort y, GLshort z, GLshort w) void _gamma_Vertex4sv(const GLshort *v) { - GLfloat p[4]; - DEBUG_GLCMDS(("Vertex4sv: %d %d %d %d\n", v[0], v[1], v[2], v[3])); _gamma_Vertex4f((GLfloat)v[0],(GLfloat)v[1],(GLfloat)v[2],(GLfloat)v[3]); @@ -4332,6 +4689,36 @@ void _gamma_VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid { DEBUG_GLCMDS(("VertexPointer: %d %04x %d\n", (int)size, (int)type, (int)stride)); + + if (size<2 || size>4) { + gamma_error( GL_INVALID_VALUE, "glVertexPointer(size)" ); + return; + } + if (stride<0) { + gamma_error( GL_INVALID_VALUE, "glVertexPointer(stride)" ); + return; + } + switch (type) { + case GL_SHORT: + gCCPriv->Array.VertexStrideB = stride ? stride : size*sizeof(GLshort); + break; + case GL_INT: + gCCPriv->Array.VertexStrideB = stride ? stride : size*sizeof(GLint); + break; + case GL_FLOAT: + gCCPriv->Array.VertexStrideB = stride ? stride : size*sizeof(GLfloat); + break; + case GL_DOUBLE: + gCCPriv->Array.VertexStrideB = stride ? stride : size*sizeof(GLdouble); + break; + default: + gamma_error( GL_INVALID_ENUM, "glVertexPointer(type)" ); + return; + } + gCCPriv->Array.VertexSize = size; + gCCPriv->Array.VertexType = type; + gCCPriv->Array.VertexStride = stride; + gCCPriv->Array.VertexPtr = (void *) pointer; } void _gamma_Viewport(GLint x, GLint y, GLsizei width, GLsizei height) @@ -4357,10 +4744,10 @@ void _gamma_Viewport(GLint x, GLint y, GLsizei width, GLsizei height) oy = y + sy; CHECK_DMA_BUFFER(gCC, gCCPriv, 4); - WRITEF(gCCPriv->buf, ViewPortScaleX, sx); - WRITEF(gCCPriv->buf, ViewPortScaleY, sy); WRITEF(gCCPriv->buf, ViewPortOffsetX, ox); WRITEF(gCCPriv->buf, ViewPortOffsetY, oy); + WRITEF(gCCPriv->buf, ViewPortScaleX, sx); + WRITEF(gCCPriv->buf, ViewPortScaleY, sy); #if 1 /* Err - this shouldn't be needed, but something isn't flushing */ FLUSH_DMA_BUFFER(gCC,gCCPriv); #endif @@ -4395,7 +4782,7 @@ init_no_op_table(struct _glapi_table *table) void -_gamma_init_dispatch(struct _glapi_table *dispatch) +_gamma_init_exec(struct _glapi_table *dispatch) { init_no_op_table(dispatch); @@ -4710,7 +5097,7 @@ _gamma_init_dispatch(struct _glapi_table *dispatch) /* 1.1 */ dispatch->AreTexturesResident = _gamma_AreTexturesResident; - dispatch->ArrayElement = _gamma_ArrayElement; + dispatch->ArrayElement = gl_save_ArrayElement; /*_gamma_ArrayElement;*/ dispatch->BindTexture = _gamma_BindTexture; dispatch->ColorPointer = _gamma_ColorPointer; dispatch->CopyTexImage1D = _gamma_CopyTexImage1D; @@ -4740,5 +5127,186 @@ _gamma_init_dispatch(struct _glapi_table *dispatch) dispatch->VertexPointer = _gamma_VertexPointer; } - +void +_gamma_init_save(struct _glapi_table *table) +{ + init_no_op_table(table); + + table->Accum = gl_save_Accum; + table->AlphaFunc = gl_save_AlphaFunc; + table->AreTexturesResident = _gamma_AreTexturesResident; /* NOT SAVED */ + table->ArrayElement = gl_save_ArrayElement; + table->Begin = gl_save_Begin; + table->BindTexture = gl_save_BindTexture; + table->Bitmap = gl_save_Bitmap; + table->BlendFunc = gl_save_BlendFunc; + table->CallList = gl_save_CallList; + table->CallLists = gl_save_CallLists; + table->Clear = gl_save_Clear; + table->ClearAccum = gl_save_ClearAccum; + table->ClearColor = gl_save_ClearColor; + table->ClearDepth = gl_save_ClearDepth; + table->ClearIndex = gl_save_ClearIndex; + table->ClearStencil = gl_save_ClearStencil; + table->ClipPlane = gl_save_ClipPlane; + table->Color3f = gl_save_Color3f; + table->Color3fv = gl_save_Color3fv; + table->Color4f = gl_save_Color4f; + table->Color4fv = gl_save_Color4fv; + table->Color4ub = gl_save_Color4ub; + table->Color4ubv = gl_save_Color4ubv; + table->ColorMask = gl_save_ColorMask; + table->ColorMaterial = gl_save_ColorMaterial; + table->ColorPointer = _gamma_ColorPointer; /* NOT SAVED */ + table->CopyPixels = gl_save_CopyPixels; + table->CopyTexImage1D = gl_save_CopyTexImage1D; + table->CopyTexImage2D = gl_save_CopyTexImage2D; + table->CopyTexSubImage1D = gl_save_CopyTexSubImage1D; + table->CopyTexSubImage2D = gl_save_CopyTexSubImage2D; + table->CullFace = gl_save_CullFace; + table->DeleteLists = _gamma_DeleteLists; /* NOT SAVED */ + table->DeleteTextures = _gamma_DeleteTextures; /* NOT SAVED */ + table->DepthFunc = gl_save_DepthFunc; + table->DepthMask = gl_save_DepthMask; + table->DepthRange = gl_save_DepthRange; + table->Disable = gl_save_Disable; + table->DisableClientState = _gamma_DisableClientState; /* NOT SAVED */ + table->DrawArrays = gl_save_DrawArrays; + table->DrawBuffer = gl_save_DrawBuffer; + table->DrawElements = gl_save_DrawElements; + table->DrawPixels = gl_save_DrawPixels; + table->EdgeFlag = gl_save_EdgeFlag; + table->EdgeFlagPointer = _gamma_EdgeFlagPointer; /* NOT SAVED */ + table->Enable = gl_save_Enable; + table->EnableClientState = _gamma_EnableClientState; /* NOT SAVED */ + table->End = gl_save_End; + table->EndList = _gamma_EndList; /* NOT SAVED */ + table->EvalCoord1f = gl_save_EvalCoord1f; + table->EvalCoord2f = gl_save_EvalCoord2f; + table->EvalMesh1 = gl_save_EvalMesh1; + table->EvalMesh2 = gl_save_EvalMesh2; + table->EvalPoint1 = gl_save_EvalPoint1; + table->EvalPoint2 = gl_save_EvalPoint2; + table->FeedbackBuffer = _gamma_FeedbackBuffer; /* NOT SAVED */ + table->Finish = _gamma_Finish; /* NOT SAVED */ + table->Flush = _gamma_Flush; /* NOT SAVED */ + table->Fogfv = gl_save_Fogfv; + table->FrontFace = gl_save_FrontFace; + table->Frustum = gl_save_Frustum; + table->GenLists = _gamma_GenLists; /* NOT SAVED */ + table->GenTextures = _gamma_GenTextures; /* NOT SAVED */ + + /* NONE OF THESE COMMANDS ARE COMPILED INTO DISPLAY LISTS */ + table->GetBooleanv = _gamma_GetBooleanv; + table->GetClipPlane = _gamma_GetClipPlane; + table->GetDoublev = _gamma_GetDoublev; + table->GetError = _gamma_GetError; + table->GetFloatv = _gamma_GetFloatv; + table->GetIntegerv = _gamma_GetIntegerv; + table->GetString = _gamma_GetString; + table->GetLightfv = _gamma_GetLightfv; + table->GetLightiv = _gamma_GetLightiv; + table->GetMapdv = _gamma_GetMapdv; + table->GetMapfv = _gamma_GetMapfv; + table->GetMapiv = _gamma_GetMapiv; + table->GetMaterialfv = _gamma_GetMaterialfv; + table->GetMaterialiv = _gamma_GetMaterialiv; + table->GetPixelMapfv = _gamma_GetPixelMapfv; + table->GetPixelMapuiv = _gamma_GetPixelMapuiv; + table->GetPixelMapusv = _gamma_GetPixelMapusv; + table->GetPointerv = _gamma_GetPointerv; + table->GetPolygonStipple = _gamma_GetPolygonStipple; + table->GetTexEnvfv = _gamma_GetTexEnvfv; + table->GetTexEnviv = _gamma_GetTexEnviv; + table->GetTexGendv = _gamma_GetTexGendv; + table->GetTexGenfv = _gamma_GetTexGenfv; + table->GetTexGeniv = _gamma_GetTexGeniv; + table->GetTexImage = _gamma_GetTexImage; + table->GetTexLevelParameterfv = _gamma_GetTexLevelParameterfv; + table->GetTexLevelParameteriv = _gamma_GetTexLevelParameteriv; + table->GetTexParameterfv = _gamma_GetTexParameterfv; + table->GetTexParameteriv = _gamma_GetTexParameteriv; + + table->Hint = gl_save_Hint; + table->IndexMask = gl_save_IndexMask; + table->Indexf = gl_save_Indexf; + table->Indexi = gl_save_Indexi; + table->IndexPointer = _gamma_IndexPointer; /* NOT SAVED */ + table->InitNames = gl_save_InitNames; + table->InterleavedArrays = _gamma_InterleavedArrays; /* NOT SAVED */ + table->IsEnabled = _gamma_IsEnabled; /* NOT SAVED */ + table->IsTexture = _gamma_IsTexture; /* NOT SAVED */ + table->IsList = _gamma_IsList; /* NOT SAVED */ + table->LightModelfv = gl_save_LightModelfv; + table->Lightfv = gl_save_Lightfv; + table->LineStipple = gl_save_LineStipple; + table->LineWidth = gl_save_LineWidth; + table->ListBase = gl_save_ListBase; + table->LoadIdentity = gl_save_LoadIdentity; + table->LoadMatrixf = gl_save_LoadMatrixf; + table->LoadName = gl_save_LoadName; + table->LogicOp = gl_save_LogicOp; + table->Map1f = gl_save_Map1f; + table->Map2f = gl_save_Map2f; + table->MapGrid1f = gl_save_MapGrid1f; + table->MapGrid2f = gl_save_MapGrid2f; + table->Materialfv = gl_save_Materialfv; + table->MatrixMode = gl_save_MatrixMode; + table->MultMatrixf = gl_save_MultMatrixf; + table->NewList = gl_save_NewList; + table->Normal3f = gl_save_Normal3f; + table->Normal3fv = gl_save_Normal3fv; + table->NormalPointer = _gamma_NormalPointer; /* NOT SAVED */ + table->Ortho = gl_save_Ortho; + table->PassThrough = gl_save_PassThrough; + table->PixelMapfv = gl_save_PixelMapfv; + table->PixelStorei = _gamma_PixelStorei; /* NOT SAVED */ + table->PixelTransferf = gl_save_PixelTransferf; + table->PixelZoom = gl_save_PixelZoom; + table->PointSize = gl_save_PointSize; + table->PolygonMode = gl_save_PolygonMode; + table->PolygonOffset = gl_save_PolygonOffset; + table->PolygonStipple = gl_save_PolygonStipple; + table->PopAttrib = gl_save_PopAttrib; + table->PopClientAttrib = _gamma_PopClientAttrib; /* NOT SAVED */ + table->PopMatrix = gl_save_PopMatrix; + table->PopName = gl_save_PopName; + table->PrioritizeTextures = gl_save_PrioritizeTextures; + table->PushAttrib = gl_save_PushAttrib; + table->PushClientAttrib = _gamma_PushClientAttrib; /* NOT SAVED */ + table->PushMatrix = gl_save_PushMatrix; + table->PushName = gl_save_PushName; + table->RasterPos4f = gl_save_RasterPos4f; + table->ReadBuffer = gl_save_ReadBuffer; + table->ReadPixels = _gamma_ReadPixels; /* NOT SAVED */ + table->Rectf = gl_save_Rectf; + table->RenderMode = _gamma_RenderMode; /* NOT SAVED */ + table->Rotatef = gl_save_Rotatef; + table->Scalef = gl_save_Scalef; + table->Scissor = gl_save_Scissor; + table->SelectBuffer = _gamma_SelectBuffer; /* NOT SAVED */ + table->ShadeModel = gl_save_ShadeModel; + table->StencilFunc = gl_save_StencilFunc; + table->StencilMask = gl_save_StencilMask; + table->StencilOp = gl_save_StencilOp; + table->TexCoord2f = gl_save_TexCoord2f; + table->TexCoord2fv = gl_save_TexCoord2fv; + table->TexCoord3fv = gl_save_TexCoord3fv; + table->TexCoord4f = gl_save_TexCoord4f; + table->TexCoordPointer = _gamma_TexCoordPointer; /* NOT SAVED */ + table->TexEnvfv = gl_save_TexEnvfv; + table->TexGenfv = gl_save_TexGenfv; + table->TexImage1D = gl_save_TexImage1D; + table->TexImage2D = gl_save_TexImage2D; + table->TexSubImage1D = gl_save_TexSubImage1D; + table->TexSubImage2D = gl_save_TexSubImage2D; + table->TexParameterfv = gl_save_TexParameterfv; + table->Translatef = gl_save_Translatef; + table->Vertex2f = gl_save_Vertex2f; + table->Vertex3f = gl_save_Vertex3f; + table->Vertex4f = gl_save_Vertex4f; + table->Vertex3fv = gl_save_Vertex3fv; + table->VertexPointer = _gamma_VertexPointer; /* NOT SAVED */ + table->Viewport = gl_save_Viewport; +} #endif diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h b/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h index 37fd75eca..212f91895 100644 --- a/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h +++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h,v 1.4 2000/03/02 16:07:36 martin Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_gl.h,v 1.5 2001/02/07 13:26:16 alanh Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -38,6 +38,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "GL/gl.h" #include "glapi.h" +extern void gamma_error(GLenum error, const char *s); + extern void _gamma_Accum(GLenum op, GLfloat value); extern void _gamma_AlphaFunc(GLenum func, GLclampf ref); extern GLboolean _gamma_AreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences); @@ -376,6 +378,7 @@ extern void _gamma_VertexPointer(GLint size, GLenum type, GLsizei stride, const extern void _gamma_Viewport(GLint x, GLint y, GLsizei width, GLsizei height); -extern void _gamma_init_dispatch(struct _glapi_table *dispatch); +extern void _gamma_init_exec(struct _glapi_table *dispatch); +extern void _gamma_init_save(struct _glapi_table *dispatch); #endif /* _GAMMA_GL_H_ */ diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_init.h b/xc/lib/GL/mesa/src/drv/gamma/gamma_init.h index 6714bbc26..ecf33b959 100644 --- a/xc/lib/GL/mesa/src/drv/gamma/gamma_init.h +++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_init.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_init.h,v 1.3 2000/06/17 00:02:56 martin Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_init.h,v 1.4 2001/02/07 13:26:16 alanh Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -63,11 +63,69 @@ typedef union { #define GAMMA_STENCIL_BUFFER 0x00000008 #define GAMMA_ACCUM_BUFFER 0x00000010 +#define GAMMA_MAX_TEXTURE_SIZE 2048 + /* These are the minimum requirements and should probably be increased */ #define MAX_MODELVIEW_STACK 16 #define MAX_PROJECTION_STACK 2 #define MAX_TEXTURE_STACK 2 +struct gamma_current_attrib { +/* GLubyte ByteColor[4]; old */ /* Current RGBA color */ + GLuint Index; /* Current color index */ + GLfloat Color[4]; /* Current RGBA color */ + GLfloat Normal[3]; /* Current normal vector */ + GLfloat TexCoord[4]; /* points into MultiTexCoord */ + GLfloat RasterPos[4]; /* Current raster position */ + GLfloat RasterDistance; /* Current raster distance */ + GLfloat RasterColor[4]; /* Current raster color */ + GLuint RasterIndex; /* Current raster index */ + GLfloat *RasterTexCoord; /* Current raster texcoord*/ + GLboolean RasterPosValid; /* Raster po valid flag */ + GLboolean EdgeFlag; /* Current edge flag */ +}; + +struct gamma_array_attrib { + GLint VertexSize; + GLenum VertexType; + GLsizei VertexStride; /* user-specified stride */ + GLsizei VertexStrideB; /* actual stride in bytes */ + void *VertexPtr; + GLboolean VertexEnabled; + + GLenum NormalType; + GLsizei NormalStride; /* user-specified stride */ + GLsizei NormalStrideB; /* actual stride in bytes */ + void *NormalPtr; + GLboolean NormalEnabled; + + GLint ColorSize; + GLenum ColorType; + GLsizei ColorStride; /* user-specified stride */ + GLsizei ColorStrideB; /* actual stride in bytes */ + void *ColorPtr; + GLboolean ColorEnabled; + + GLenum IndexType; + GLsizei IndexStride; /* user-specified stride */ + GLsizei IndexStrideB; /* actual stride in bytes */ + void *IndexPtr; + GLboolean IndexEnabled; + + GLsizei EdgeFlagStride; /* user-specified stride */ + GLsizei EdgeFlagStrideB; /* actual stride in bytes */ + GLboolean *EdgeFlagPtr; + GLboolean EdgeFlagEnabled; + + GLint TexCoordSize; + GLenum TexCoordType; + GLsizei TexCoordStride; /* user-specified stride */ + GLsizei TexCoordStrideB; /* actual stride in bytes */ + void *TexCoordPtr; + GLboolean TexCoordEnabled; + GLint TexCoordInterleaveFactor; +}; + typedef struct { drmContext hHWContext; @@ -91,11 +149,34 @@ typedef struct { int EnabledFlags; int DepthSize; int Begin; + GLenum ErrorValue; + + struct _glapi_table *Exec; + struct _glapi_table *Save; + struct _glapi_table *API; + + struct _mesa_HashTable *DisplayList; + + struct gl_list_attrib List; + struct gl_pixelstore_attrib Unpack; /* Pixel unpacking */ + + struct gamma_array_attrib Array; /* From Mesa v3.0 */ + struct gamma_current_attrib Current; /* From Mesa v3.0 */ + + /* Display lists */ + GLuint CallDepth; /* Current recursion calling depth */ + GLboolean ExecuteFlag; /* Execute GL commands? */ + GLboolean CompileFlag; /* Compile GL commands into display list? */ + Node *CurrentListPtr; /* Head of list being compiled */ + GLuint CurrentListNum; /* Number of the list being compiled */ + Node *CurrentBlock; /* Pointer to current block of nodes */ + GLuint CurrentPos; /* Index into current block of nodes */ float ClearColor[4]; float ClearDepth; int MatrixMode; int DepthMode; + int TransformMode; float zNear, zFar; int LBReadMode; int FBReadMode; @@ -110,9 +191,25 @@ typedef struct { int DeltaMode; int ColorMaterialMode; int MaterialMode; + int NormalizeMode; int LightingMode; int Light0Mode; int Light1Mode; + int Light2Mode; + int Light3Mode; + int Light4Mode; + int Light5Mode; + int Light6Mode; + int Light7Mode; + int Light8Mode; + int Light9Mode; + int Light10Mode; + int Light11Mode; + int Light12Mode; + int Light13Mode; + int Light14Mode; + int Light15Mode; + int LogicalOpMode; int ScissorMode; int Window; /* GID part probably should be in draw priv */ diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c b/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c index 83cec4bcb..6c87559bf 100644 --- a/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c +++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.6 2000/11/27 10:59:37 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.7 2001/01/31 16:15:37 alanh Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -43,7 +43,7 @@ void gammaInitHW(gammaContextPrivate *gcp) __DRIscreenPrivate *driScrnPriv = gcp->gammaScrnPriv->driScrnPriv; GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)driScrnPriv->pDevPriv; - if (gDRIPriv->numMXDevices == 2) { + if (gDRIPriv->numMultiDevices == 2) { /* Set up each MX's ScanLineOwnership for OpenGL */ CHECK_DMA_BUFFER(nullCC, gcp, 4); WRITE(gcp->buf, BroadcastMask, 1); @@ -142,7 +142,7 @@ void gammaInitHW(gammaContextPrivate *gcp) WRITE(gcp->buf, AlphaTestMode, gcp->AlphaTestMode); WRITE(gcp->buf, AlphaBlendMode, gcp->AlphaBlendMode); WRITE(gcp->buf, DitherMode, DitherModeEnable | DM_ColorOrder_RGB); - if (gDRIPriv->numMXDevices == 2) + if (gDRIPriv->numMultiDevices == 2) WRITE(gcp->buf, RasterizerMode, RM_MultiGLINT | RM_BiasCoordNearHalf); else WRITE(gcp->buf, RasterizerMode, RM_BiasCoordNearHalf); diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h b/xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h index 85c2b925a..613385909 100644 --- a/xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h +++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h,v 1.3 2000/06/17 00:02:56 martin Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_regs.h,v 1.4 2001/02/07 13:26:17 alanh Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -487,8 +487,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* LightingMode */ #define LightingModeDisable 0x00000000 #define LightingModeEnable 0x00000001 -#define LightingModeTwoSides 0x00000002 +#define LightingModeTwoSides 0x00000004 #define LightingModeLocalViewer 0x00000008 +#define LightingModeSpecularEnable 0x00008000 /* Light0Mode */ #define Light0ModeDisable 0x00000000 @@ -552,6 +553,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define PM_AntialiasQuality_4x4 0x00000000 #define PM_AntialiasQuality_8x8 0x00000002 +/* LogicalOpMode */ +#define LogicalOpModeDisable 0x00000000 +#define LogicalOpModeEnable 0x00000001 +#define LogicalOpModeMask 0x0000001e + /* LineMode */ #define LM_StippleDisable 0x00000000 #define LM_StippleEnable 0x00000001 @@ -577,6 +583,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define XM_XformNormals 0x00000004 #define XM_XformFaceNormals 0x00000008 #define XM_XformTexture 0x00000010 +#define XM_XMask 0x00000013 #define XM_TexGenModeS_None 0x00000000 #define XM_TexGenModeS_ObjLinear 0x00000020 #define XM_TexGenModeS_EyeLinear 0x00000040 diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c b/xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c index 81fbc4c97..27b346707 100644 --- a/xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c +++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c,v 1.8 2000/12/07 20:26:05 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_xmesa.c,v 1.11 2001/02/07 13:26:17 alanh Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -40,26 +40,26 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "gamma_gl.h" #include "glapi.h" #include "glint_dri.h" +#include "gamma_dlist.h" #include "context.h" #include "mmath.h" +#include "hash.h" __DRIcontextPrivate *nullCC = NULL; __DRIcontextPrivate *gCC = NULL; gammaContextPrivate *gCCPriv = NULL; -static struct _glapi_table *Dispatch = NULL; - - GLboolean XMesaInitDriver(__DRIscreenPrivate *sPriv) { gammaScreenPrivate *gsp; +#if 0 /* Check the DRI version */ { int major, minor, patch; if (XF86DRIQueryVersion(sPriv->display, &major, &minor, &patch)) { - if (major != 3 || minor < 0) { + if (major != 4 || minor < 0) { char msg[1000]; sprintf(msg, "gamma DRI driver expected DRI version 4.0.x but got version %d.%d.%d", major, minor, patch); __driMesaMessage(msg); @@ -85,6 +85,7 @@ GLboolean XMesaInitDriver(__DRIscreenPrivate *sPriv) __driMesaMessage(msg); return GL_FALSE; } +#endif /* Allocate the private area */ gsp = (gammaScreenPrivate *)Xmalloc(sizeof(gammaScreenPrivate)); @@ -146,17 +147,25 @@ GLboolean XMesaCreateContext( Display *dpy, gammaScreenPrivate *gPriv = (gammaScreenPrivate *)driScrnPriv->private; GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)driScrnPriv->pDevPriv; - if (!Dispatch) { - GLuint size = _glapi_get_dispatch_table_size() * sizeof(GLvoid *); - Dispatch = (struct _glapi_table *) malloc(size); - _gamma_init_dispatch(Dispatch); - } - cPriv = (gammaContextPrivate *)Xmalloc(sizeof(gammaContextPrivate)); if (!cPriv) { return GL_FALSE; } + if (!cPriv->Exec) { + GLuint size = _glapi_get_dispatch_table_size() * sizeof(GLvoid *); + cPriv->Exec = (struct _glapi_table *) malloc(size); + _gamma_init_exec(cPriv->Exec); + } + + cPriv->API = cPriv->Exec; + + if (!cPriv->Save) { + GLuint size = _glapi_get_dispatch_table_size() * sizeof(GLvoid *); + cPriv->Save = (struct _glapi_table *) malloc(size); + _gamma_init_save(cPriv->Save); + } + cPriv->hHWContext = driContextPriv->hHWContext; GET_FIRST_DMA(driScrnPriv->fd, cPriv->hHWContext, 1, &cPriv->bufIndex, &cPriv->bufSize, @@ -168,6 +177,54 @@ GLboolean XMesaCreateContext( Display *dpy, &cPriv->WCbuf, &cPriv->WCbufCount, gPriv); #endif + gamma_init_lists(); + + /* Display List stuff */ + cPriv->DisplayList = _mesa_NewHashTable(); + cPriv->List.ListBase = 0; + cPriv->CallDepth = 0; + cPriv->ExecuteFlag = GL_TRUE; + cPriv->CompileFlag = GL_FALSE; + cPriv->CurrentListPtr = NULL; + cPriv->CurrentBlock = NULL; + cPriv->CurrentListNum = 0; + cPriv->CurrentPos = 0; + + /* Vertex arrays */ + cPriv->Array.VertexSize = 4; + cPriv->Array.VertexType = GL_FLOAT; + cPriv->Array.VertexStride = 0; + cPriv->Array.VertexStrideB = 0; + cPriv->Array.VertexPtr = NULL; + cPriv->Array.VertexEnabled = GL_FALSE; + cPriv->Array.NormalType = GL_FLOAT; + cPriv->Array.NormalStride = 0; + cPriv->Array.NormalStrideB = 0; + cPriv->Array.NormalPtr = NULL; + cPriv->Array.NormalEnabled = GL_FALSE; + cPriv->Array.ColorSize = 4; + cPriv->Array.ColorType = GL_FLOAT; + cPriv->Array.ColorStride = 0; + cPriv->Array.ColorStrideB = 0; + cPriv->Array.ColorPtr = NULL; + cPriv->Array.ColorEnabled = GL_FALSE; + cPriv->Array.IndexType = GL_FLOAT; + cPriv->Array.IndexStride = 0; + cPriv->Array.IndexStrideB = 0; + cPriv->Array.IndexPtr = NULL; + cPriv->Array.IndexEnabled = GL_FALSE; + cPriv->Array.EdgeFlagStride = 0; + cPriv->Array.EdgeFlagStrideB = 0; + cPriv->Array.EdgeFlagPtr = NULL; + cPriv->Array.EdgeFlagEnabled = GL_FALSE; + + cPriv->Unpack.Alignment = 4; + cPriv->Unpack.RowLength = 0; + cPriv->Unpack.SkipPixels = 0; + cPriv->Unpack.SkipRows = 0; + cPriv->Unpack.SwapBytes = GL_FALSE; + cPriv->Unpack.LsbFirst = GL_FALSE; + cPriv->ClearColor[0] = 0.0; cPriv->ClearColor[1] = 0.0; cPriv->ClearColor[2] = 0.0; @@ -206,7 +263,7 @@ GLboolean XMesaCreateContext( Display *dpy, FBWindowOriginBot | gDRIPriv->pprod); - if (gDRIPriv->numMXDevices == 2) { + if (gDRIPriv->numMultiDevices == 2) { cPriv->LBReadMode |= LBScanLineInt2; cPriv->FBReadMode |= FBScanLineInt2; cPriv->FBWindowBase =driScrnPriv->fbWidth*(driScrnPriv->fbHeight/2 - 1); @@ -352,14 +409,32 @@ GLboolean XMesaCreateContext( Display *dpy, cPriv->gammaScrnPriv = gPriv; - cPriv->LightingMode = LightingModeDisable; + cPriv->LightingMode = LightingModeDisable | LightingModeSpecularEnable; cPriv->Light0Mode = LNM_Off; cPriv->Light1Mode = LNM_Off; + cPriv->Light2Mode = LNM_Off; + cPriv->Light3Mode = LNM_Off; + cPriv->Light4Mode = LNM_Off; + cPriv->Light5Mode = LNM_Off; + cPriv->Light6Mode = LNM_Off; + cPriv->Light7Mode = LNM_Off; + cPriv->Light8Mode = LNM_Off; + cPriv->Light9Mode = LNM_Off; + cPriv->Light10Mode = LNM_Off; + cPriv->Light11Mode = LNM_Off; + cPriv->Light12Mode = LNM_Off; + cPriv->Light13Mode = LNM_Off; + cPriv->Light14Mode = LNM_Off; + cPriv->Light15Mode = LNM_Off; + + cPriv->LogicalOpMode = LogicalOpModeDisable; cPriv->MaterialMode = MaterialModeDisable; cPriv->ScissorMode = UserScissorDisable | ScreenScissorDisable; + cPriv->TransformMode = XM_UseModelViewProjMatrix; + driContextPriv->driverPrivate = cPriv; /* Initialize the HW to a known state */ @@ -509,7 +584,7 @@ GLboolean XMesaMakeCurrent(__DRIcontextPrivate *driContextPriv, CHECK_DMA_BUFFER(gCC, gCCPriv, 1); WRITE(gCCPriv->buf, GLINTWindow, gCCPriv->Window); - _glapi_set_dispatch(Dispatch); + _glapi_set_dispatch(gCCPriv->API); _gamma_Viewport(0, 0, driDrawPriv->w, driDrawPriv->h); } else { diff --git a/xc/lib/GL/mesa/src/drv/i810/Imakefile b/xc/lib/GL/mesa/src/drv/i810/Imakefile index 1353d4273..298472656 100644 --- a/xc/lib/GL/mesa/src/drv/i810/Imakefile +++ b/xc/lib/GL/mesa/src/drv/i810/Imakefile @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/i810/Imakefile,v 1.13 2000/12/12 23:24:27 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/i810/Imakefile,v 1.14 2001/02/16 01:26:10 dawes Exp $ #include <Threads.tmpl> @@ -356,7 +356,7 @@ NormalLintTarget($(SRCS)) LIBNAME = i810_dri.so ALL_OBJS = $(OBJS) ALL_DEPS = DONE -SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) +SharedDriModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) InstallDynamicModule($(LIBNAME),$(MODULEDIR),dri) #ifdef GlxSoProf diff --git a/xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c b/xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c index 2208de78a..57699162c 100644 --- a/xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c +++ b/xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c @@ -24,7 +24,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c,v 1.9 2000/12/07 20:26:06 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/i810/i810_xmesa.c,v 1.11 2000/12/21 14:06:56 alanh Exp $ */ /* * Authors: @@ -157,7 +157,7 @@ GLboolean XMesaInitDriver(__DRIscreenPrivate *sPriv) if (sPriv->drmMajor != 1 || sPriv->drmMinor < 1) { char msg[1000]; - sprintf(msg, "i810 DRI driver expected DRM driver version 1.0.x but got version %d.%d.%d", sPriv->drmMajor, sPriv->drmMinor, sPriv->drmPatch); + sprintf(msg, "i810 DRI driver expected DRM driver version 1.1.x but got version %d.%d.%d", sPriv->drmMajor, sPriv->drmMinor, sPriv->drmPatch); __driMesaMessage(msg); return GL_FALSE; } diff --git a/xc/lib/GL/mesa/src/drv/mga/Imakefile b/xc/lib/GL/mesa/src/drv/mga/Imakefile index e4c73ddc0..2d173bf11 100644 --- a/xc/lib/GL/mesa/src/drv/mga/Imakefile +++ b/xc/lib/GL/mesa/src/drv/mga/Imakefile @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/mga/Imakefile,v 1.13 2000/12/12 23:24:28 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/mga/Imakefile,v 1.15 2001/02/16 01:26:11 dawes Exp $ #include <Threads.tmpl> @@ -72,6 +72,7 @@ MESA_INCLUDES = -I. -I.. -I../../include \ mgafastpath.c \ mgaioctl.c \ mgapipeline.c \ + mgapixel.c \ mgaspan.c \ mgastate.c \ mgatex.c \ @@ -87,6 +88,7 @@ MESA_INCLUDES = -I. -I.. -I../../include \ mgafastpath.o \ mgaioctl.o \ mgapipeline.o \ + mgapixel.o \ mgaspan.o \ mgastate.o \ mgatex.o \ @@ -373,7 +375,7 @@ NormalLintTarget($(SRCS)) LIBNAME = mga_dri.so ALL_OBJS = $(OBJS) ALL_DEPS = DONE -SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) +SharedDriModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) InstallDynamicModule($(LIBNAME),$(MODULEDIR),dri) #ifdef GlxSoProf diff --git a/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c b/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c index d10969df4..ad5bb0f8d 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c +++ b/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c,v 1.8 2000/12/07 20:26:06 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c,v 1.10 2001/01/08 01:07:18 martin Exp $ */ /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. diff --git a/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c b/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c index fc021873c..37c7f9acb 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c @@ -24,7 +24,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgabuffers.c,v 1.4 2000/09/24 13:51:05 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgabuffers.c,v 1.5 2001/01/08 01:07:18 martin Exp $ */ /* * Authors: diff --git a/xc/lib/GL/mesa/src/drv/mga/mgacontext.h b/xc/lib/GL/mesa/src/drv/mga/mgacontext.h index c82b70cc8..ff97d8e24 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgacontext.h +++ b/xc/lib/GL/mesa/src/drv/mga/mgacontext.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgacontext.h,v 1.1 2000/09/24 13:51:06 alanh Exp $*/ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgacontext.h,v 1.2 2001/01/08 01:07:18 martin Exp $*/ /* * GLX Hardware Device Driver for Matrox Millenium G200 * Copyright (C) 1999 Wittawat Yamwong diff --git a/xc/lib/GL/mesa/src/drv/mga/mgadd.c b/xc/lib/GL/mesa/src/drv/mga/mgadd.c index f7244b353..5e33dd85d 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgadd.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgadd.c @@ -23,7 +23,7 @@ * * Wittawat Yamwong <Wittawat.Yamwong@stud.uni-hannover.de> */ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgadd.c,v 1.6 2000/11/08 05:02:45 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgadd.c,v 1.7 2001/01/08 01:07:18 martin Exp $ */ diff --git a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c index 4624cee1e..48dfde9dc 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.c,v 1.8 2000/11/08 05:02:45 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.c,v 1.9 2001/01/08 01:07:18 martin Exp $ */ #include <stdio.h> diff --git a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h index b8207e540..5dd50b1a3 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h +++ b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.h,v 1.5 2000/09/24 13:51:07 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.h,v 1.6 2001/01/08 01:07:18 martin Exp $ */ #ifndef MGA_IOCTL_H #define MGA_IOCTL_H diff --git a/xc/lib/GL/mesa/src/drv/mga/mgaspan.c b/xc/lib/GL/mesa/src/drv/mga/mgaspan.c index dae4f0953..0a82af79d 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgaspan.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgaspan.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaspan.c,v 1.5 2000/09/24 13:51:07 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaspan.c,v 1.6 2001/01/08 01:07:18 martin Exp $ */ #include "types.h" #include "mgadd.h" diff --git a/xc/lib/GL/mesa/src/drv/mga/mgastate.c b/xc/lib/GL/mesa/src/drv/mga/mgastate.c index 8e60f00d3..2b824343a 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgastate.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgastate.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgastate.c,v 1.6 2000/11/08 05:02:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgastate.c,v 1.7 2001/01/08 01:07:18 martin Exp $ */ #include <stdio.h> diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatex.c b/xc/lib/GL/mesa/src/drv/mga/mgatex.c index 35945224a..a97e1f3e0 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgatex.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgatex.c @@ -25,7 +25,7 @@ * 9/20/99 rewrite by John Carmack <johnc@idsoftware.com> * 13/1/00 port to DRI by Keith Whitwell <keithw@precisioninsight.com> */ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatex.c,v 1.7 2000/11/08 05:02:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatex.c,v 1.8 2001/01/08 01:07:18 martin Exp $ */ #include <stdlib.h> #include <stdio.h> @@ -853,17 +853,12 @@ static void mgaDDTexSubImage( GLcontext *ctx, GLenum target, t = (mgaTextureObjectPtr) tObj->DriverData; if ( t ) { if (t->bound) FLUSH_BATCH(mmesa); - /* if this is the current object, it will force an update */ - mgaDestroyTexObj( mmesa, t ); - mmesa->new_state |= MGA_NEW_TEXTURE; + LOCK_HARDWARE( mmesa ); + /* the texture currently exists, so directly update it */ + mgaUploadSubImageLocked( mmesa, t, level, + xoffset, yoffset, width, height ); + UNLOCK_HARDWARE( mmesa ); } - - - -#if 0 - /* the texture currently exists, so directly update it */ - mgaUploadSubImage( t, level, xoffset, yoffset, width, height ); -#endif } diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatex.h b/xc/lib/GL/mesa/src/drv/mga/mgatex.h index bae170829..bd977f1e8 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgatex.h +++ b/xc/lib/GL/mesa/src/drv/mga/mgatex.h @@ -24,7 +24,7 @@ * John Carmack <johnc@idsoftware.com> * Keith Whitwell <keithw@precisioninsight.com> */ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatex.h,v 1.4 2000/09/24 13:51:07 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatex.h,v 1.5 2001/01/08 01:07:19 martin Exp $ */ #ifndef MGATEX_INC #define MGATEX_INC diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c b/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c index 1161ab580..27f38c296 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatexmem.c,v 1.1 2000/09/24 13:51:08 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatexmem.c,v 1.2 2001/01/08 01:07:19 martin Exp $ */ #include <stdlib.h> #include <stdio.h> diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatris.c b/xc/lib/GL/mesa/src/drv/mga/mgatris.c index 4caa1bfa4..36e51ce28 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgatris.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgatris.c @@ -23,7 +23,7 @@ * * Wittawat Yamwong <Wittawat.Yamwong@stud.uni-hannover.de> */ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.c,v 1.5 2000/09/24 13:51:08 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.c,v 1.6 2001/01/08 01:07:19 martin Exp $ */ #include <stdio.h> #include <math.h> diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatris.h b/xc/lib/GL/mesa/src/drv/mga/mgatris.h index 9880bbdf1..2711d43d1 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgatris.h +++ b/xc/lib/GL/mesa/src/drv/mga/mgatris.h @@ -23,7 +23,7 @@ * * Wittawat Yamwong <Wittawat.Yamwong@stud.uni-hannover.de> */ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.h,v 1.5 2000/09/24 13:51:08 alanh Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.h,v 1.6 2001/01/08 01:07:19 martin Exp $ */ #ifndef MGATIS_INC #define MGATIS_INC diff --git a/xc/lib/GL/mesa/src/drv/mga/mgavb.c b/xc/lib/GL/mesa/src/drv/mga/mgavb.c index 1dfc89d2b..ffa5025a5 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgavb.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgavb.c @@ -23,7 +23,7 @@ * * Wittawat Yamwong <Wittawat.Yamwong@stud.uni-hannover.de> */ -/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgavb.c,v 1.7 2000/11/08 05:02:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgavb.c,v 1.8 2001/01/08 01:07:19 martin Exp $ */ #include "mgacontext.h" #include "mgavb.h" diff --git a/xc/lib/GL/mesa/src/drv/r128/Imakefile b/xc/lib/GL/mesa/src/drv/r128/Imakefile index 3330a991b..de16045ff 100644 --- a/xc/lib/GL/mesa/src/drv/r128/Imakefile +++ b/xc/lib/GL/mesa/src/drv/r128/Imakefile @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/r128/Imakefile,v 1.11 2000/12/12 23:24:28 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/r128/Imakefile,v 1.12 2001/02/16 01:26:11 dawes Exp $ #include <Threads.tmpl> @@ -376,7 +376,7 @@ NormalLintTarget($(SRCS)) LIBNAME = r128_dri.so ALL_OBJS = $(OBJS) ALL_DEPS = DONE -SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) +SharedDriModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) InstallDynamicModule($(LIBNAME),$(MODULEDIR),dri) #ifdef GlxSoProf diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_context.c b/xc/lib/GL/mesa/src/drv/r128/r128_context.c index 7c6afa8c0..c8926249c 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_context.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_context.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.c,v 1.4 2000/12/12 17:17:06 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.c,v 1.5 2001/01/08 01:07:20 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_context.h b/xc/lib/GL/mesa/src/drv/r128/r128_context.h index 39fdcdb70..a2400c199 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_context.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_context.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.h,v 1.4 2000/12/12 17:17:06 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.h,v 1.5 2001/01/08 01:07:20 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_dd.c b/xc/lib/GL/mesa/src/drv/r128/r128_dd.c index 69bbc600c..e5825eb89 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_dd.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_dd.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_dd.c,v 1.6 2000/12/15 22:48:38 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_dd.c,v 1.9 2001/01/11 03:36:54 tsi Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., @@ -70,7 +70,7 @@ static const GLubyte *r128DDGetString( GLcontext *ctx, GLenum name ) switch ( name ) { case GL_VENDOR: - return (const GLubyte *)"VA Linux Systems, Inc."; + return (GLubyte *)"VA Linux Systems, Inc."; case GL_RENDERER: sprintf( (void *)buffer, "Mesa DRI Rage128 " R128_DATE ); @@ -88,13 +88,13 @@ static const GLubyte *r128DDGetString( GLcontext *ctx, GLenum name ) */ switch ( rmesa->r128Screen->AGPMode ) { case 1: - strncat( buffer, " AGP 1x", 7 ); + strncat( (pointer)buffer, " AGP 1x", 7 ); break; case 2: - strncat( buffer, " AGP 2x", 7 ); + strncat( (pointer)buffer, " AGP 2x", 7 ); break; case 4: - strncat( buffer, " AGP 4x", 7 ); + strncat( (pointer)buffer, " AGP 4x", 7 ); break; } @@ -102,7 +102,7 @@ static const GLubyte *r128DDGetString( GLcontext *ctx, GLenum name ) */ #ifdef USE_X86_ASM if ( gl_x86_cpu_features ) { - strncat( buffer, " x86", 4 ); + strncat( (pointer)buffer, " x86", 4 ); } #endif #ifdef USE_MMX_ASM @@ -112,12 +112,12 @@ static const GLubyte *r128DDGetString( GLcontext *ctx, GLenum name ) #endif #ifdef USE_3DNOW_ASM if ( cpu_has_3dnow ) { - strncat( buffer, "/3DNow!", 7 ); + strncat( (pointer)buffer, "/3DNow!", 7 ); } #endif #ifdef USE_KATMAI_ASM if ( cpu_has_xmm ) { - strncat( buffer, "/SSE", 4 ); + strncat( (pointer)buffer, "/SSE", 4 ); } #endif return buffer; diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_dd.h b/xc/lib/GL/mesa/src/drv/r128/r128_dd.h index 005949053..17061f332 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_dd.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_dd.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_dd.h,v 1.2 2000/12/04 19:21:45 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_dd.h,v 1.3 2001/01/08 01:07:20 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_eltpath.c b/xc/lib/GL/mesa/src/drv/r128/r128_eltpath.c index 74c29812f..25548c649 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_eltpath.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_eltpath.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_eltpath.c,v 1.2 2000/12/07 20:26:08 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_eltpath.c,v 1.3 2001/01/08 01:07:20 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_elttmp.h b/xc/lib/GL/mesa/src/drv/r128/r128_elttmp.h index e477bd7b9..11e30fbfe 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_elttmp.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_elttmp.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_elttmp.h,v 1.1 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_elttmp.h,v 1.2 2001/01/08 01:07:20 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_fastpath.c b/xc/lib/GL/mesa/src/drv/r128/r128_fastpath.c index df382c641..44c996125 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_fastpath.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_fastpath.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_fastpath.c,v 1.4 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_fastpath.c,v 1.5 2001/01/08 01:07:20 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_fasttmp.h b/xc/lib/GL/mesa/src/drv/r128/r128_fasttmp.h index 8a7cef504..4370a553c 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_fasttmp.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_fasttmp.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_fasttmp.h,v 1.2 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_fasttmp.h,v 1.3 2001/01/08 01:07:20 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.c b/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.c index e886d0f45..78a3b2c6e 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_ioctl.c,v 1.2 2000/12/12 17:17:07 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_ioctl.c,v 1.3 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h b/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h index aafd0859b..76f777912 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h,v 1.1 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h,v 1.2 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_lock.c b/xc/lib/GL/mesa/src/drv/r128/r128_lock.c index 6cf285b7f..b655b6d97 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_lock.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_lock.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_lock.c,v 1.1 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_lock.c,v 1.2 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_lock.h b/xc/lib/GL/mesa/src/drv/r128/r128_lock.h index 2da57bb44..e734ba29d 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_lock.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_lock.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_lock.h,v 1.3 2000/12/07 15:43:37 tsi Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_lock.h,v 1.4 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.c b/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.c index e42fa4075..7c85141be 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_pipeline.c,v 1.3 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_pipeline.c,v 1.4 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.h b/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.h index 5e40bd6f6..1cfb27d44 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_pipeline.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_pipeline.h,v 1.3 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_pipeline.h,v 1.4 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_screen.c b/xc/lib/GL/mesa/src/drv/r128/r128_screen.c index 7c010519e..f93fec973 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_screen.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_screen.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.c,v 1.3 2000/12/04 19:21:46 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.c,v 1.4 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_screen.h b/xc/lib/GL/mesa/src/drv/r128/r128_screen.h index 8f88e5cb8..15ae1fd8c 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_screen.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_screen.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.h,v 1.3 2000/12/04 19:21:47 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.h,v 1.4 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_span.c b/xc/lib/GL/mesa/src/drv/r128/r128_span.c index 5ea23c010..003b8eeb6 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_span.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_span.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_span.c,v 1.4 2000/12/12 17:17:07 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_span.c,v 1.5 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_span.h b/xc/lib/GL/mesa/src/drv/r128/r128_span.h index fefa5bd67..44356c5b2 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_span.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_span.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_span.h,v 1.2 2000/12/04 19:21:47 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_span.h,v 1.3 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_state.c b/xc/lib/GL/mesa/src/drv/r128/r128_state.c index 82df63edc..0d12e8ce9 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_state.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_state.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_state.c,v 1.6 2000/12/12 17:17:07 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_state.c,v 1.7 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_state.h b/xc/lib/GL/mesa/src/drv/r128/r128_state.h index 97b01c7fa..c51ac2394 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_state.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_state.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_state.h,v 1.2 2000/12/04 19:21:47 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_state.h,v 1.3 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tex.c b/xc/lib/GL/mesa/src/drv/r128/r128_tex.c index c6bef883b..8bd2c23f9 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_tex.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_tex.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tex.c,v 1.6 2000/12/04 19:21:47 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tex.c,v 1.7 2001/01/08 01:07:21 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tex.h b/xc/lib/GL/mesa/src/drv/r128/r128_tex.h index 92d4c4e3f..e1f67a56d 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_tex.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_tex.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tex.h,v 1.3 2000/12/12 17:17:08 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tex.h,v 1.4 2001/01/08 01:07:23 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_texobj.h b/xc/lib/GL/mesa/src/drv/r128/r128_texobj.h index b1611468a..9939c219b 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_texobj.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_texobj.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_texobj.h,v 1.3 2000/12/04 19:21:47 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_texobj.h,v 1.4 2001/01/08 01:07:24 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tris.c b/xc/lib/GL/mesa/src/drv/r128/r128_tris.c index aeddb8f95..4d83e27e0 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_tris.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_tris.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.c,v 1.3 2000/12/04 19:21:47 dawes Exp $ */ /* -*- c-basic-offset: 3 -*- */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.c,v 1.4 2001/01/08 01:07:24 martin Exp $ */ /* -*- c-basic-offset: 3 -*- */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tris.h b/xc/lib/GL/mesa/src/drv/r128/r128_tris.h index 18a051db3..99c816dec 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_tris.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_tris.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.h,v 1.3 2000/12/04 19:21:47 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.h,v 1.4 2001/01/08 01:07:24 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tritmp.h b/xc/lib/GL/mesa/src/drv/r128/r128_tritmp.h index 52a63e628..a9ca8d1bc 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_tritmp.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_tritmp.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tritmp.h,v 1.4 2000/12/04 22:46:01 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tritmp.h,v 1.5 2001/01/08 01:07:24 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_vb.c b/xc/lib/GL/mesa/src/drv/r128/r128_vb.c index 3ebacd027..06a63e152 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_vb.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_vb.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.c,v 1.10 2000/12/12 17:17:08 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.c,v 1.11 2001/01/08 01:07:24 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_vb.h b/xc/lib/GL/mesa/src/drv/r128/r128_vb.h index 2e33dcc1b..1a00d9eea 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_vb.h +++ b/xc/lib/GL/mesa/src/drv/r128/r128_vb.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.h,v 1.3 2000/12/04 19:21:48 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.h,v 1.4 2001/01/08 01:07:24 martin Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c b/xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c index 8fe81d7ac..7654180b8 100644 --- a/xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c +++ b/xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c,v 1.4 2000/12/12 17:17:08 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c,v 1.7 2001/01/23 18:14:38 alanh Exp $ */ /************************************************************************** Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc., diff --git a/xc/lib/GL/mesa/src/drv/sis/sis_alloc.c b/xc/lib/GL/mesa/src/drv/sis/sis_alloc.c index e166aa96f..b2badf3f9 100644 --- a/xc/lib/GL/mesa/src/drv/sis/sis_alloc.c +++ b/xc/lib/GL/mesa/src/drv/sis/sis_alloc.c @@ -24,7 +24,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_alloc.c,v 1.6 2000/09/26 15:56:48 tsi Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_alloc.c,v 1.7 2001/01/08 01:07:29 martin Exp $ */ /* * Authors: diff --git a/xc/lib/GL/mesa/src/drv/sis/sis_xmesa.c b/xc/lib/GL/mesa/src/drv/sis/sis_xmesa.c index 24a7e84b9..9e1eb105c 100644 --- a/xc/lib/GL/mesa/src/drv/sis/sis_xmesa.c +++ b/xc/lib/GL/mesa/src/drv/sis/sis_xmesa.c @@ -24,7 +24,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **************************************************************************/ -/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_xmesa.c,v 1.6 2000/12/07 20:26:10 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_xmesa.c,v 1.9 2000/12/22 09:20:04 alanh Exp $ */ /* * Authors: @@ -76,6 +76,39 @@ GLboolean XMesaInitDriver (__DRIscreenPrivate * driScrnPriv) { SISDRIPtr priv = (SISDRIPtr) driScrnPriv->pDevPriv; + /* Check the DRI version */ + { + int major, minor, patch; + if (XF86DRIQueryVersion(driScrnPriv->display, &major, &minor, &patch)) { + if (major != 3 || minor != 1 || patch < 0) { + char msg[1000]; + sprintf(msg, "sis DRI driver expected DRI version 3.1.x but got version %d.%d.%d", major, minor, patch); + __driMesaMessage(msg); + return GL_FALSE; + } + } + } + + /* Check that the DDX driver version is compatible */ + if (driScrnPriv->ddxMajor != 1 || + driScrnPriv->ddxMinor != 0 || + driScrnPriv->ddxPatch < 0) { + char msg[1000]; + sprintf(msg, "sis DRI driver expected DDX driver version 1.0.x but got version %d.%d.%d", driScrnPriv->ddxMajor, driScrnPriv->ddxMinor, driScrnPriv->ddxPatch); + __driMesaMessage(msg); + return GL_FALSE; + } + + /* Check that the DRM driver version is compatible */ + if (driScrnPriv->drmMajor != 1 || + driScrnPriv->drmMinor != 0 || + driScrnPriv->drmPatch < 0) { + char msg[1000]; + sprintf(msg, "sis DRI driver expected DRM driver version 1.0.x but got version %d.%d.%d", driScrnPriv->drmMajor, driScrnPriv->drmMinor, driScrnPriv->drmPatch); + __driMesaMessage(msg); + return GL_FALSE; + } + assert (driScrnPriv->devPrivSize == sizeof (SISDRIRec)); /* Fixme: in quake3, when context changed, XMesaInitDriver is called diff --git a/xc/lib/GL/mesa/src/drv/tdfx/Imakefile b/xc/lib/GL/mesa/src/drv/tdfx/Imakefile index 9f45df60d..26251e6f2 100644 --- a/xc/lib/GL/mesa/src/drv/tdfx/Imakefile +++ b/xc/lib/GL/mesa/src/drv/tdfx/Imakefile @@ -1,4 +1,4 @@ -XCOMM $XFree86: xc/lib/GL/mesa/src/drv/tdfx/Imakefile,v 1.19 2000/12/12 23:24:28 dawes Exp $ +XCOMM $XFree86: xc/lib/GL/mesa/src/drv/tdfx/Imakefile,v 1.20 2001/02/16 01:26:11 dawes Exp $ #include <Threads.tmpl> @@ -368,7 +368,7 @@ NormalLintTarget($(SRCS)) LIBNAME = tdfx_dri.so ALL_OBJS = $(OBJS) ALL_DEPS = DONE -SharedDepModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) +SharedDriModuleTarget($(LIBNAME),$(ALL_DEPS),$(ALL_OBJS)) InstallDynamicModule($(LIBNAME),$(MODULEDIR),dri) #ifdef GlxSoProf diff --git a/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c b/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c index 00935e2de..2973d3e60 100644 --- a/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c +++ b/xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c @@ -23,7 +23,7 @@ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -/* $XFree86$ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/tdfx/tdfx_xmesa.c,v 1.11 2000/12/21 13:58:56 alanh Exp $ */ /* * Original rewrite: |