diff options
author | alanh <alanh> | 2003-03-24 23:54:15 +0000 |
---|---|---|
committer | alanh <alanh> | 2003-03-24 23:54:15 +0000 |
commit | d5935687c69a0c1c3455dc34e5027637fc745fac (patch) | |
tree | 5a0cfacd60fc5128a3b8a5ed08c4aba2bf36c94b /xc/extras | |
parent | 2ff36509093f39110af8b57f08e9d6e6a57321c5 (diff) |
XFree86 4.3.0 mergeX_4_3_0-20030324-merge
Diffstat (limited to 'xc/extras')
272 files changed, 13142 insertions, 1489 deletions
diff --git a/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h b/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h index d965ce0e9..3b6c5648f 100644 --- a/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h +++ b/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h @@ -10,6 +10,7 @@ * This file is included by FDSTRUCS.H * \*********************************************************************/ +/* $XFree86: xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h,v 1.2 2003/01/12 03:55:43 tsi Exp $ */ #ifndef __32IFIMET_H__ #define __32IFIMET_H__ @@ -52,9 +53,9 @@ #define IFIMETRICS_HOLLOW 0x0800 /*Outline (hollow) */ #if defined(__IBMCPP__) || defined(__IBMC__) - #pragma pack(1) +# pragma pack(1) #else - #pragma Align_members(1) +# pragma Align_members(1) #endif typedef struct _IFIMETRICS /* ifim */ @@ -110,9 +111,9 @@ typedef struct _IFIMETRICS /* ifim */ } IFIMETRICS; typedef IFIMETRICS FAR *PIFIMETRICS; #if defined(__IBMCPP__) || defined(__IBMC__) - #pragma pack() +# pragma pack() #else - #pragma Align_members() +# pragma Align_members() #endif #endif diff --git a/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c b/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c index 9cb672137..856352539 100644 --- a/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c +++ b/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c @@ -51,11 +51,12 @@ /* number can be set via entry in OS2.INI. */ /* */ /* For Intelligent Font Interface (IFI) specification please see IFI32.TXT */ +/* $XFree86: xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c,v 1.2 2003/01/12 03:55:43 tsi Exp $ */ #ifndef __IBMC__ - #ifndef __WATCOMC__ - #error "This source requires IBM VisualAge C++ or Watcom C/C++" - #endif +# ifndef __WATCOMC__ +# error "This source requires IBM VisualAge C++ or Watcom C/C++" +# endif #endif /* Defining the following uses UCONV.DLL instead of the built-in */ @@ -193,19 +194,19 @@ char* itoa10( int i, char* buffer ) { return buffer; } - #define COPY(s) strcpy(log, s) - #define CAT(s) strcat(log, s) - #define CATI(v) strcat(log, itoa10( (int)v, buf )) - #define WRITE DosWrite(LogHandle, log, strlen(log), &Written) +# define COPY(s) strcpy(log, s) +# define CAT(s) strcat(log, s) +# define CATI(v) strcat(log, itoa10( (int)v, buf )) +# define WRITE DosWrite(LogHandle, log, strlen(log), &Written) - #define ERET1(label) { COPY("Error at "); \ +# define ERET1(label) { COPY("Error at "); \ CATI(__LINE__); \ CAT("\r\n"); \ WRITE; \ goto label; \ } - #define ERRRET(e) { COPY("Error at "); \ +# define ERRRET(e) { COPY("Error at "); \ CATI(__LINE__); \ CAT("\r\n"); \ WRITE; \ @@ -215,14 +216,14 @@ char* itoa10( int i, char* buffer ) { #else - #define COPY(s) - #define CAT(s) - #define CATI(v) - #define WRITE +# define COPY(s) +# define CAT(s) +# define CATI(v) +# define WRITE - #define ERET1(label) goto label; +# define ERET1(label) goto label; - #define ERRRET(e) return(e); +# define ERRRET(e) return(e); #endif /* DEBUG */ @@ -1561,7 +1562,7 @@ LONG _System QueryFaces( HFF hff, ERRRET(-1) /* error, invalid handle */ if (cMetricLen == 0) { /* only number of faces is requested */ - #ifdef FAKE_TNR +# ifdef FAKE_TNR /* create an alias for Times New Roman */ pface = &(file->faces[0]); name = LookupName(pface->face, TT_NAME_ID_FONT_FAMILY); @@ -1569,7 +1570,7 @@ LONG _System QueryFaces( HFF hff, file->flags |= FL_FLAG_FAKE_ROMAN; return 2; } - #endif +# endif if (file->flags & FL_FLAG_DBCS_FILE) return file->numFaces * 2; else @@ -1779,7 +1780,7 @@ LONG _System QueryFaces( HFF hff, pifi2->szFacename[0] = '@'; ifiCount += cMetricLen; } - #ifdef FAKE_TNR +# ifdef FAKE_TNR if ((file->flags & FL_FLAG_FAKE_ROMAN) && (index + 1 >= cStart) && (index + 1 < (cStart + cFontCount))) { pifi2 = (PIFIMETRICS) (((PBYTE) pifiMetrics) + ifiCount); @@ -1802,7 +1803,7 @@ LONG _System QueryFaces( HFF hff, } ifiCount += cMetricLen; } - #endif +# endif } Exit: @@ -1839,11 +1840,11 @@ HFC _System OpenFontContext( HFF hff, /* calculate real face index in font file */ faceIndex = file->flags & FL_FLAG_DBCS_FILE ? ulFont / 2 : ulFont; - #ifdef FAKE_TNR +# ifdef FAKE_TNR if (file->flags & FL_FLAG_FAKE_ROMAN) /* This font isn't real! */ faceIndex = 0; - #endif +# endif if (faceIndex > file->numFaces) ERRRET((HFC)-1) @@ -2575,10 +2576,8 @@ ULONG FirstInit(void) { LONG lReqCount; ULONG ulCurMaxFH; - #ifdef DEBUG +# ifdef DEBUG ULONG Action; - #endif /* DEBUG */ - #ifdef DEBUG DosOpen("C:\\FTIFI.LOG", &LogHandle, &Action, 0, FILE_NORMAL, OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS, OPEN_FLAGS_NO_CACHE | OPEN_FLAGS_WRITE_THROUGH | @@ -2586,7 +2585,7 @@ ULONG FirstInit(void) { NULL); COPY("FreeType/2 loaded.\r\n"); WRITE; - #endif /* DEBUG */ +# endif /* DEBUG */ /* increase # of file handles by five to be on the safe side */ lReqCount = 5; @@ -2636,11 +2635,11 @@ ULONG FinalTerm(void) { /* turn off engine */ TT_Done_FreeType(engine); - #ifdef DEBUG +# ifdef DEBUG COPY("FreeType/2 terminated.\r\n"); WRITE; DosClose(LogHandle); - #endif +# endif return 1; } /****************************************************************************/ @@ -2661,9 +2660,9 @@ ULONG _System _DLL_InitTerm(ULONG hModule, ULONG ulFlag) { case 1: { /* terminating */ int i; /* clean UCONV cache */ - #ifdef USE_UCONV +# ifdef USE_UCONV CleanUCONVCache(); - #endif +# endif if(--ulProcessCount == 0) return FinalTerm(); else diff --git a/xc/extras/FreeType/contrib/ftos2/ifi/test.c b/xc/extras/FreeType/contrib/ftos2/ifi/test.c index b79301272..5fc8a7769 100644 --- a/xc/extras/FreeType/contrib/ftos2/ifi/test.c +++ b/xc/extras/FreeType/contrib/ftos2/ifi/test.c @@ -1,3 +1,4 @@ +/* $XFree86: xc/extras/FreeType/contrib/ftos2/ifi/test.c,v 1.2 2003/01/12 03:55:43 tsi Exp $ */ #include <os2.h> @@ -8,13 +9,13 @@ //#define USE_ORIG #ifdef USE_ORIG - #pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "TRUETYPE", 0) +# pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "TRUETYPE", 0) #else - #if defined USE_ATM - #pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "PMATM", 0) - #else - #pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "FREETYPE", 0) - #endif +# if defined USE_ATM +# pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "PMATM", 0) +# else +# pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "FREETYPE", 0) +# endif #endif extern FDHEADER fdhdr; @@ -42,9 +43,9 @@ char *fontnames[20] = { #define FNTNAME1 "\\PSFONTS\\TIMES.TTF" #ifdef USE_ATM - #define FNTNAME2 "\\PSFONTS\\helv.ofm" +# define FNTNAME2 "\\PSFONTS\\helv.ofm" #else - #define FNTNAME2 "\\PSFONTS\\symbol.tTf" +# define FNTNAME2 "\\PSFONTS\\symbol.tTf" #endif #define BUFSIZE 32768 diff --git a/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c b/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c index 38fd97948..fd75ac8fe 100644 --- a/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c +++ b/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c @@ -30,6 +30,7 @@ * Font Driver (FreeType/2). * ******************************************************************/ +/* $XFree86: xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c,v 1.2 2003/01/12 03:55:44 tsi Exp $ */ #include "ttdebug.h" #include "ttmemory.h" @@ -111,13 +112,13 @@ char* itohex4( long i, char* buffer ) return buffer; } - #define COPY(s) strcpy(log, s) - #define CAT(s) strcat(log, s) - #define CATI(v) strcat(log, itoa10( (int)v, buf )) - #define CATH(v) strcat(log, itohex4( (long)v, buf )) - #define CATW(v) strcat(log, itohex2( (short)v, buf )) - #define WRITE DosWrite(MemLogHandle, log, strlen(log), &Written) - #define ERRRET(e) { COPY("Error at "); \ +# define COPY(s) strcpy(log, s) +# define CAT(s) strcat(log, s) +# define CATI(v) strcat(log, itoa10( (int)v, buf )) +# define CATH(v) strcat(log, itohex4( (long)v, buf )) +# define CATW(v) strcat(log, itohex2( (short)v, buf )) +# define WRITE DosWrite(MemLogHandle, log, strlen(log), &Written) +# define ERRRET(e) { COPY("Error at "); \ CATI(__LINE__); \ CAT("\r\n"); \ WRITE; \ @@ -126,13 +127,13 @@ char* itohex4( long i, char* buffer ) #else - #define COPY(s) - #define CAT(s) - #define CATI(v) - #define CATH(v) - #define CATW(v) - #define WRITE - #define ERRRET(e) return(e); +# define COPY(s) +# define CAT(s) +# define CATI(v) +# define CATH(v) +# define CATW(v) +# define WRITE +# define ERRRET(e) return(e); #endif /* DEBUG_MEM */ @@ -143,7 +144,7 @@ char* itohex4( long i, char* buffer ) #ifdef TRACK_MEM /* name of shared memory used for memory usage reporting */ - #define MEM_NAME "\\sharemem\\freetype" +# define MEM_NAME "\\sharemem\\freetype" /* structure containing memory usage information */ typedef struct _INFOSTRUCT { @@ -199,11 +200,11 @@ char* itohex4( long i, char* buffer ) } *head = size; base = (void*)(head + 1); - #ifdef TRACK_MEM +# ifdef TRACK_MEM meminfo->used += size; if (meminfo->used > meminfo->maxused) meminfo->maxused = meminfo->used; - #endif +# endif return base; } @@ -238,9 +239,9 @@ char* itohex4( long i, char* buffer ) CAT ( "\r\n" ); WRITE; } - #ifdef TRACK_MEM +# ifdef TRACK_MEM meminfo->used -= size; - #endif +# endif return rc; } @@ -267,9 +268,9 @@ char* itohex4( long i, char* buffer ) { *P = ft2_malloc( Size ); if (!*P) { - #ifdef TRACK_MEM +# ifdef TRACK_MEM meminfo->num_err++; - #endif +# endif return TT_Err_Out_Of_Memory; } @@ -302,9 +303,9 @@ char* itohex4( long i, char* buffer ) return TT_Err_Ok; if (ft2_free( *P )) { - #ifdef TRACK_MEM +# ifdef TRACK_MEM meminfo->num_err++; - #endif +# endif } *P = NULL; return TT_Err_Ok; @@ -325,7 +326,7 @@ char* itohex4( long i, char* buffer ) { int rc; - #ifdef DEBUG_MEM +# ifdef DEBUG_MEM ULONG Action; DosOpen("C:\\FTMEM.LOG", &MemLogHandle, &Action, 0, FILE_NORMAL, @@ -337,9 +338,9 @@ char* itohex4( long i, char* buffer ) COPY("FTMEM Init.\r\n"); WRITE; - #endif /* DEBUG */ +# endif /* DEBUG */ - #ifdef TRACK_MEM +# ifdef TRACK_MEM /* allocate named shared memory and global shared memory */ SSAllocMem(&meminfo, 4096, 0); @@ -348,7 +349,7 @@ char* itohex4( long i, char* buffer ) meminfo->signature = 0x46524545; /* 'FREE' */ meminfo->maxused = 0; meminfo->used = 0; - #endif /* TRACK */ +# endif /* TRACK */ return TT_Err_Ok; } @@ -369,15 +370,15 @@ char* itohex4( long i, char* buffer ) /* Never called by the font driver (beats me why). We do not release the heaps */ - #ifdef TRACK_MEM +# ifdef TRACK_MEM DosFreeMem(memptr); /* free shared memory */ SSFreeMem(meminfo); - #endif - #ifdef DEBUG_MEM +# endif +# ifdef DEBUG_MEM COPY("FTMEM Done.\r\n"); WRITE; DosClose(MemLogHandle); - #endif +# endif return TT_Err_Ok; } diff --git a/xc/extras/FreeType/contrib/win32/res/testw32.rc2 b/xc/extras/FreeType/contrib/win32/res/testw32.rc2 index c81f59438..890c815f0 100644 --- a/xc/extras/FreeType/contrib/win32/res/testw32.rc2 +++ b/xc/extras/FreeType/contrib/win32/res/testw32.rc2 @@ -1,9 +1,10 @@ // // TESTW32.RC2 - resources Microsoft Visual C++ does not edit directly // +// $XFree86: xc/extras/FreeType/contrib/win32/res/testw32.rc2,v 1.2 2003/01/12 03:55:44 tsi Exp $ #ifdef APSTUDIO_INVOKED - #error this file is not editable by Microsoft Visual C++ +# error this file is not editable by Microsoft Visual C++ #endif //APSTUDIO_INVOKED diff --git a/xc/extras/FreeType/contrib/win32/testw32.h b/xc/extras/FreeType/contrib/win32/testw32.h index 727b11f93..4ddde6aa8 100644 --- a/xc/extras/FreeType/contrib/win32/testw32.h +++ b/xc/extras/FreeType/contrib/win32/testw32.h @@ -1,5 +1,6 @@ // testw32.h : main header file for the TESTW32 application // +// $XFree86: xc/extras/FreeType/contrib/win32/testw32.h,v 1.2 2003/01/12 03:55:44 tsi Exp $ #if !defined(AFX_TESTW32_H__70F52CA9_06A4_11D2_9AC4_0060978849F3__INCLUDED_) #define AFX_TESTW32_H__70F52CA9_06A4_11D2_9AC4_0060978849F3__INCLUDED_ @@ -9,7 +10,7 @@ #endif // _MSC_VER >= 1000 #ifndef __AFXWIN_H__ - #error include 'stdafx.h' before including this file for PCH +# error include 'stdafx.h' before including this file for PCH #endif #include "resource.h" // main symbols diff --git a/xc/extras/FreeType/test/ftdump.c b/xc/extras/FreeType/test/ftdump.c index 655aab403..9f8dc6ba8 100644 --- a/xc/extras/FreeType/test/ftdump.c +++ b/xc/extras/FreeType/test/ftdump.c @@ -15,6 +15,7 @@ /* debug the current engine. */ /* */ /****************************************************************************/ +/* $XFree86: xc/extras/FreeType/test/ftdump.c,v 1.2 2003/01/12 03:55:44 tsi Exp $ */ #include <stdio.h> #include <stdlib.h> @@ -89,7 +90,7 @@ /* */ /* We thus avoid the external reference on these compilers. */ - #define TTMemory_Allocated 0L +# define TTMemory_Allocated 0L #else extern long TTMemory_Allocated; diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0 b/xc/extras/Mesa/docs/RELNOTES-4.0 index 6a532a90c..2f729db15 100644 --- a/xc/extras/Mesa/docs/RELNOTES-4.0 +++ b/xc/extras/Mesa/docs/RELNOTES-4.0 @@ -160,4 +160,3 @@ See the VERSIONS file for more details about bug fixes, etc. in Mesa 4.0. ---------------------------------------------------------------------- -$Id: RELNOTES-4.0,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $ diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.1 b/xc/extras/Mesa/docs/RELNOTES-4.0.1 index 7a1c351ff..e84df6bf8 100644 --- a/xc/extras/Mesa/docs/RELNOTES-4.0.1 +++ b/xc/extras/Mesa/docs/RELNOTES-4.0.1 @@ -19,4 +19,3 @@ Mesa 4.0.1 only contains bug fixes since version 4.0. See the docs/VERSIONS file for the list of bug fixes. ---------------------------------------------------------------------- -$Id: RELNOTES-4.0.1,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $ diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.2 b/xc/extras/Mesa/docs/RELNOTES-4.0.2 index e981da535..583ea9865 100644 --- a/xc/extras/Mesa/docs/RELNOTES-4.0.2 +++ b/xc/extras/Mesa/docs/RELNOTES-4.0.2 @@ -47,4 +47,4 @@ D3D needs updating ---------------------------------------------------------------------- -$Id: RELNOTES-4.0.2,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $ +$Id: RELNOTES-4.0.2,v 1.1.1.2 2003/03/25 00:01:12 alanh Exp $ diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.3 b/xc/extras/Mesa/docs/RELNOTES-4.0.3 index 28baba9e8..aad4a8d9c 100644 --- a/xc/extras/Mesa/docs/RELNOTES-4.0.3 +++ b/xc/extras/Mesa/docs/RELNOTES-4.0.3 @@ -49,4 +49,4 @@ D3D needs updating ---------------------------------------------------------------------- -$Id: RELNOTES-4.0.3,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $ +$Id: RELNOTES-4.0.3,v 1.1.1.2 2003/03/25 00:01:12 alanh Exp $ diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.4 b/xc/extras/Mesa/docs/RELNOTES-4.0.4 new file mode 100644 index 000000000..719a92739 --- /dev/null +++ b/xc/extras/Mesa/docs/RELNOTES-4.0.4 @@ -0,0 +1,73 @@ + + Mesa 4.0.4 release notes + + October 3, 2002 + + PLEASE READ!!!! + + + +Introduction +------------ + +Mesa uses an even/odd version number scheme like the Linux kernel. +Odd numbered versions (such as 3.3) designate new developmental releases. +Even numbered versions (such as 3.4) designate stable releases. + +Mesa 4.0.4 contains bug fixes since version 4.0.3 and a few new extensions +needed for DRI drivers. + +See the docs/VERSIONS file for the list of bug fixes. + + + +New Extensions +-------------- + +GL_NV_texture_rectangle was back-ported from the Mesa 4.1 branch so +that it could be incorporated into the DRI R200 driver. + +GL_MESA_ycbcr_texture supports texture images in the YCbCr video format. + +GL_APPLE_client_storage extension (for some DRI drivers only) allows the +caller to say that copying the texture image is not needed. + +GL_MESA_pack_invert allows glReadPixels and glGetTexImage() to store images +in upside-down order, which better matches conventional image file formats. + + + +Device Drivers +-------------- + +Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the +device driver. If the driver enables all the ARB extensions which are part +of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise, +it'll return "1.2". + +A number of Mesa's software drivers haven't been actively maintained for +some time. We rely on volunteers to maintain many of the drivers. +Here's the current status of all included drivers: + +Driver Status +---------------------- --------------------- +XMesa (Xlib) implements OpenGL 1.3 +OSMesa (off-screen) implements OpenGL 1.3 +FX (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA implements OpenGL 1.3 +Wind River UGL implements OpenGL 1.3 +Windows/Win32 implements OpenGL 1.3 +DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2) +GGI implements OpenGL 1.3 +BeOS needs updating +Allegro needs updating +D3D needs updating + + +The DOS driver has been updated by Daniel Borca for Mesa 4.0.4. + + + + +---------------------------------------------------------------------- +$Id: RELNOTES-4.0.4,v 1.1.1.1 2003/03/25 00:01:12 alanh Exp $ diff --git a/xc/extras/Mesa/docs/VERSIONS b/xc/extras/Mesa/docs/VERSIONS index c503de8a6..f8e904140 100644 --- a/xc/extras/Mesa/docs/VERSIONS +++ b/xc/extras/Mesa/docs/VERSIONS @@ -1,4 +1,3 @@ -$Id: VERSIONS,v 1.1.1.2 2000/12/05 16:38:42 dawes Exp $ Mesa Version History @@ -776,10 +775,11 @@ Mesa Version History - finished internal support for compressed textures for DRI -3.4.1 December ??, 2000 +3.4.1 February 14, 2001 New: - fixed some Linux build problems - fixed some Windows build problems + - GL_EXT_texture_env_dot3 extension (Gareth Hughes) Bug fixes: - added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI - various state-update code changes needed for DRI bugs @@ -789,3 +789,223 @@ Mesa Version History - GLX_PBUFFER enum value was wrong in glx.h - fixed a glColorMaterial lighting bug - fixed bad args to Read/WriteStencilSpan in h/w stencil clear function + - glXCopySubBufferMESA() Y position was off by one + - Error checking of glTexSubImage3D() was broken (bug 128775) + - glPopAttrib() didn't restore all derived Mesa state correctly + - Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL + conformance problems at 16bpp. + - clearing depth buffer with scissoring was broken, would segfault + - OSMesaGetDepthBuffer() returned bad bytesPerValue value + - fixed a line clipping bug (reported by Craig McDaniel) + - fixed RGB color over/underflow bug for very tiny triangles + Known problems: + - NURBS or evaluator surfaces inside display lists don't always work + + +3.4.2 May 17, 2001 + Bug fixes: + - deleting the currently bound texture could cause bad problems + - using fog could result in random vertex alpha values + - AA triangle rendering could touch pixels outside right window bound + - fixed byteswapping problem in clear_32bit_ximage() function + - fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam + - fixed memory leak in glXUseXFont() + - fragment sampling in AA triangle function was off by 1/2 pixel + - Windows: reading pixels from framebuffer didn't always work + - glConvolutionFilter2D could segfault or cause FP exception + - fixed segfaults in FX and X drivers when using tex unit 1 but not 0 + - GL_NAND logicop didn't work right in RGBA mode + - fixed a memory corruption bug in vertex buffer reset code + - clearing the softwara alpha buffer with scissoring was broken + - fixed a few color index mode fog bugs + - fixed some bad assertions in color index mode + - fixed FX line 'stipple' bug #420091 + - fixed stencil buffer clear width/height typo + - fixed GL error glitches in gl[Client]ActiveTextureARB() + - fixed Windows compilation problem in texutil.c + - fixed 1/8-pixel AA triangle sampling error + Changes: + - optimized writing mono-colored pixel spans to X pixmaps + - increased max viewport size to 2048 x 2048 + + +3.5 June 21, 2001 + New: + - internals of Mesa divided into modular pieces (Keith Whitwell) + - 100% OpenGL 1.2 conformance (passes all conformance tests) + - new AA line algorithm + - GL_EXT_convolution extension + - GL_ARB_imaging subset + - OSMesaCreateContextExt() function + - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add) + - GL_MAX_TEXTURE_UNITS_ARB now defaults to eight + - GL_EXT_fog_coord extension (Keith Whitwell) + - GL_EXT_secondary_color extension (Keith Whitwell) + - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add) + - GL_SGIX_depth_texture extension + - GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions + - demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow + - GL_ARB_texture_env_combine extension + - GL_ARB_texture_env_dot3 extension + - GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp) + - OSMesaCreateContextExt() function + - libOSMesa.so library, contains the OSMesa driver interface + - GL/glxext.h header file for GLX extensions + - somewhat faster software texturing, fogging, depth testing + - all color-index conformance tests now pass (only 8bpp tested) + - SPARC assembly language TCL optimizations (David Miller) + - GL_SGIS_generate_mipmap extension + Bug Fixes: + - fbiRev and tmuRev were unitialized when using Glide3 + - fixed a few color index mode conformance failures; all pass now + - now appling antialiasing coverage to alpha after texturing + - colors weren't getting clamped to [0,1] before color table lookup + - fixed RISC alignment errors caused by COPY_4UBV macro + - drawing wide, flat-shaded lines could cause a segfault + - vertices now snapped to 1/16 pixel to fix rendering of tiny triangles + Changes: + - SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU + - new libOSMesa.so library, contains the OSMesa driver interface + + +4.0 October 22, 2001 + New: + - Mesa 4.0 implements the OpenGL 1.3 specification + - GL_IBM_rasterpos_clip extension + - GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp) + - GL_ARB_texture_mirrored_repeat extension + - WindML UGL driver (Stephane Raimbault) + - added OSMESA_MAX_WIDTH/HEIGHT queries + - attempted compiliation fixes for Solaris 5, 7 and 8 + - updated glext.h and glxext.h files + - updated Windows driver (Karl Schultz) + Bug fixes: + - added some missing GLX 1.3 tokens to include/GL/glx.h + - GL_COLOR_MATRIX changes weren't recognized by teximage functions + - glCopyPixels with scale and bias was broken + - glRasterPos with lighting could segfault + - glDeleteTextures could leave a dangling pointer + - Proxy textures for cube maps didn't work + - fixed a number of 16-bit color channel bugs + - fixed a few minor memory leaks + - GLX context sharing was broken in 3.5 + - fixed state-update bugs in glPopClientAttrib() + - fixed glDrawRangeElements() bug + - fixed a glPush/PopAttrib() bug related to texture binding + - flat-shaded, textured lines were broken + - fixed a dangling pointer problem in the XMesa code (Chris Burghart) + - lighting didn't always produce the correct alpha value + - fixed 3DNow! code to not read past end of arrays (Andrew Lewycky) + + +4.0.1 December 17, 2001 + New: + - better sub-pixel sample positions for AA triangles (Ray Tice) + - slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO) + Bug fixes: + - added missing break statements in glGet*() for multisample cases + - fixed uninitialized hash table mutex bug (display lists / texobjs) + - fixed bad teximage error check conditional (bug 476846) + - fixed demos readtex.c compilation problem on Windows (Karl Schultz) + - added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT + - silence some compiler warnings (gcc 2.96) + - enable the #define GL_VERSION_1_3 in GL/gl.h + - added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h + - fixed glu.h typedef problem found with MSDev 6.0 + - build libGL.so with -Bsymbolic (fixes bug found with Chromium) + - added missing 'const' to glXGetContextIDEXT() in glxext.h + - fixed a few glXGetProcAddress() errors (texture compression, etc) + - fixed start index bug in compiled vertex arrays (Keith) + - fixed compilation problems in src/SPARC/glapi_sparc.S + - fixed triangle strip "parity" bug found in VTK medical1 demo (Keith) + - use glXGetProcAddressARB in GLUT to avoid extension linking problems + - provoking vertex of flat-shaded, color-index triangles was wrong + - fixed a few display list bugs (GLUT walker, molecule, etc) (Keith) + - glTexParameter didn't flush the vertex buffer (Ray Tice) + - feedback attributes for glDraw/CopyPixels and glBitmap were wrong + - fixed bug in normal length caching (ParaView lighting bug) + - fixed separate_specular color bug found in Chimera (18 Dec 2001) + + +4.0.2 April 2, 2002 + New: + - New DOS (DJGPP) driver written by Daniel Borca + - New driver interface functions for TCL drivers (such as Radeon DRI) + - GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32" + if using deep color channels + - latest GL/glext.h and GL/glxext.h headers from SGI + Bug fixes: + - GL_BLEND with non-black texture env color wasn't always correct + - GL_REPLACE with GL_RGB texture format wasn't always correct (alpha) + - glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken + - glReadPixels was sometimes mistakenly clipped by the scissor box + - glDraw/ReadPixels didn't catch all the errors that they should have + - Fixed 24bpp rendering problem in Windows driver (Karl Schultz) + - 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c) + - Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP) + - glColorMask as sometimes effecting glXSwapBuffers() + - fixed a potential bug in XMesaGarbageCollect() + - N threads rendering into one window didn't work reliably + - glCopyPixels didn't work for deep color channels + - improved 8 -> 16bit/channel texture image conversion (Gerk Huisma) + - glPopAttrib() didn't correctly restore user clip planes + - user clip planes failed for some perspective projections (Chromium) + Known bugs: + - mipmap LOD computation + + +4.0.3 June 25, 2002 + New: + - updated GL/glext.h file (version 15) + - corrected MMX blend code (Jose Fonseca) + - support for software-based alpha planes in Windows driver + - updated GGI driver (Filip Spacek) + Bug fixes: + - glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens + - OSMesaMakeCurrent() didn't recognize buffer size changes + - assorted conformance fixes for 16-bit/channel rendering + - texcombine alpha subtraction mode was broken + - fixed lighting bug with non-uniform scaling and display lists + - fixed bug when deleting shared display lists + - disabled SPARC cliptest assembly code (Mesa bug 544665) + - fixed a couple Solaris compilation/link problems + - blending clipped glDrawPixels didn't always work + - glGetTexImage() didn't accept packed pixel types + - glPixelMapu[is]v() could explode given too large of pixelmap + - glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT + - glXCopyContext() could lead to segfaults + - glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665) + Changes: + - lots of C++ (g++) code clean-ups + - lots of T&L updates for the Radeon DRI driver + Known bugs: + - mipmap LOD computation (fixed for Mesa 4.1) + + +4.0.4 October 3, 2002 + New: + - GL_NV_texture_rectangle extension + - updated glext.h header (version 17) + - updated DOS driver (Daniel Borca) + - updated BeOS R5 driver (Philippe Houdoin) + - added GL_IBM_texture_mirror_repeat + - glxinfo now takes -l option to print interesting OpenGL limits info + - GL_MESA_ycbcr_texture extension + - GL_APPLE_client_storage extension (for some DRI drivers only) + - GL_MESA_pack_invert extension + Bug fixes: + - fixed GL_LINEAR fog bug by adding clamping + - fixed FP exceptions found using Alpha CPU + - 3dfx MESA_GLX_FX=window (render to window) didn't work + - fixed memory leak in wglCreateContest (Karl Schultz) + - define GLAPIENTRY and GLAPI if undefined in glu.h + - wglGetProcAddress didn't handle all API functions + - when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map + - removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc() + - error checking in compressed tex image functions had some glitches + - fixed AIX compile problem in src/config.c + - glGetTexImage was using pixel unpacking instead of packing params + - auto-mipmap generation for cube maps was incorrect + Changes: + - max texture units reduced to six to accomodate texture rectangles + - removed unfinished GL_MESA_sprite_point extension code diff --git a/xc/extras/Mesa/include/GL/gl.h b/xc/extras/Mesa/include/GL/gl.h index c226fdc42..c3ff48c48 100644 --- a/xc/extras/Mesa/include/GL/gl.h +++ b/xc/extras/Mesa/include/GL/gl.h @@ -1,3 +1,4 @@ +/* $Id: gl.h,v 1.1.1.12 2003/03/25 00:01:16 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -62,6 +63,10 @@ # define GLAPIENTRY #endif /* WIN32 / CYGWIN bracket */ +#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__) +# define PRAGMA_EXPORT_SUPPORTED 1 +#endif + #if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__) #include <gl/mesa_wgl.h> #endif @@ -2517,21 +2522,50 @@ GLAPI void GLAPIENTRY glTracePointerRangeMESA( const GLvoid* first, const GLvoid #endif /* GL_MESA_packed_depth_stencil */ -/* - * ??. GL_MESA_sprite_point - */ -#ifndef GL_MESA_sprite_point -#define GL_MESA_sprite_point 1 -#define GL_SPRITE_POINT_MESA 0x8757 /* XXX not finalized! */ +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 -#endif +#define GL_YCBCR_MESA 0x8757 +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple */ +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple */ + +#endif /* GL_MESA_texture_ycbcr */ + + + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 + +#define GL_PACK_INVERT_MESA 0x8758 + +#endif /* GL_MESA_pack_invert */ + + + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 + +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 + +#endif /* GL_APPLE_client_storage */ + + + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 + +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB + +#endif /* GL_APPLE_ycbcr_422 */ /********************************************************************** * Begin system-specific stuff */ -#if defined(__BEOS__) || defined(__QUICKDRAW__) +#if defined(PRAGMA_EXPORT_SUPPORTED) #pragma export off #endif diff --git a/xc/extras/Mesa/include/GL/glxext.h b/xc/extras/Mesa/include/GL/glxext.h index 54620bd4e..aa899546a 100644 --- a/xc/extras/Mesa/include/GL/glxext.h +++ b/xc/extras/Mesa/include/GL/glxext.h @@ -260,6 +260,9 @@ extern "C" { #ifndef GLX_MESA_release_buffers #endif +#ifndef GLX_MESA_agp_offset +#endif + #ifndef GLX_MESA_set_3dfx_mode #define GLX_3DFX_WINDOW_MODE_MESA 0x1 #define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 @@ -568,6 +571,14 @@ extern Bool glXSet3DfxModeMESA (int); typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); #endif +#ifndef GLX_MESA_agp_offset +#define GLX_MESA_agp_offset 1 +#ifdef GLX_GLXEXT_PROTOTYPES +extern GLuint glXGetAGPOffsetMESA (const GLvoid *); +#endif /* GLX_GLXEXT_PROTOTYPES */ +typedef GLuint ( * PFNGLXGETAGPOFFSETMESAPROC) (const GLvoid *); +#endif + #ifndef GLX_SGIX_visual_select_group #define GLX_SGIX_visual_select_group 1 #endif diff --git a/xc/extras/Mesa/include/GL/xmesa.h b/xc/extras/Mesa/include/GL/xmesa.h index 056f717bb..67b26ee2c 100644 --- a/xc/extras/Mesa/include/GL/xmesa.h +++ b/xc/extras/Mesa/include/GL/xmesa.h @@ -1,3 +1,4 @@ + /* * Mesa 3-D graphics library * Version: 4.0.3 diff --git a/xc/extras/Mesa/src/SPARC/clip.S b/xc/extras/Mesa/src/SPARC/clip.S index 32c1d8a32..8b12f0956 100644 --- a/xc/extras/Mesa/src/SPARC/clip.S +++ b/xc/extras/Mesa/src/SPARC/clip.S @@ -1,4 +1,3 @@ -/* $Id: clip.S,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */ #ifdef __sparc_v9__ #define LDPTR ldx diff --git a/xc/extras/Mesa/src/SPARC/norm.S b/xc/extras/Mesa/src/SPARC/norm.S index 65ba2a6fb..85328d9ae 100644 --- a/xc/extras/Mesa/src/SPARC/norm.S +++ b/xc/extras/Mesa/src/SPARC/norm.S @@ -1,4 +1,3 @@ -/* $Id: norm.S,v 1.1.1.1 2002/10/22 13:06:33 alanh Exp $ */ #include "sparc_matrix.h" diff --git a/xc/extras/Mesa/src/SPARC/sparc.c b/xc/extras/Mesa/src/SPARC/sparc.c index 666f6e918..9fd1c5692 100644 --- a/xc/extras/Mesa/src/SPARC/sparc.c +++ b/xc/extras/Mesa/src/SPARC/sparc.c @@ -1,4 +1,3 @@ -/* $Id: sparc.c,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/SPARC/sparc.h b/xc/extras/Mesa/src/SPARC/sparc.h index 624f998fc..a98e4d0e4 100644 --- a/xc/extras/Mesa/src/SPARC/sparc.h +++ b/xc/extras/Mesa/src/SPARC/sparc.h @@ -1,4 +1,3 @@ -/* $Id: sparc.h,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/SPARC/sparc_matrix.h b/xc/extras/Mesa/src/SPARC/sparc_matrix.h index bfbab4e32..2d3f067fb 100644 --- a/xc/extras/Mesa/src/SPARC/sparc_matrix.h +++ b/xc/extras/Mesa/src/SPARC/sparc_matrix.h @@ -1,4 +1,3 @@ -/* $Id: sparc_matrix.h,v 1.1.1.1 2002/10/22 13:06:33 alanh Exp $ */ #ifndef _SPARC_MATRIX_H #define _SPARC_MATRIX_H diff --git a/xc/extras/Mesa/src/SPARC/xform.S b/xc/extras/Mesa/src/SPARC/xform.S index 1297e9ddd..524bcbd7b 100644 --- a/xc/extras/Mesa/src/SPARC/xform.S +++ b/xc/extras/Mesa/src/SPARC/xform.S @@ -1,4 +1,3 @@ -/* $Id: xform.S,v 1.1.1.1 2002/10/22 13:06:36 alanh Exp $ */ /* TODO * diff --git a/xc/extras/Mesa/src/Trace/tr_attrib.c b/xc/extras/Mesa/src/Trace/tr_attrib.c new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_attrib.c diff --git a/xc/extras/Mesa/src/Trace/tr_commands.h b/xc/extras/Mesa/src/Trace/tr_commands.h new file mode 100644 index 000000000..a393f3847 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_commands.h @@ -0,0 +1,644 @@ +/* This may look like C code, but it is really -*- C++ -*- */ +/* $Id: tr_commands.h,v 1.1.1.1 2003/03/25 00:02:19 alanh Exp $ */ + +/* + * DebugGL + * Version: 1.0 + * + * Copyright (C) 1999-2000 Bernd Kreimeier, Loki Entertainment + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef TR_COMMANDS_H +#define TR_COMMANDS_H + + +/** + * Enumeration of GL commands, for metafile format + * and networking protocol. Has to be re-indexed + * if (ever) used as GLX stream. This uses the + * Mesa internal values. + */ + +#define CMD_NEWLIST 0 +#define CMD_ENDLIST 1 +#define CMD_CALLLIST 2 +#define CMD_CALLLISTS 3 +#define CMD_DELETELISTS 4 +#define CMD_GENLISTS 5 +#define CMD_LISTBASE 6 +#define CMD_BEGIN 7 +#define CMD_BITMAP 8 +#define CMD_COLOR3B 9 +#define CMD_COLOR3BV 10 +#define CMD_COLOR3D 11 +#define CMD_COLOR3DV 12 +#define CMD_COLOR3F 13 +#define CMD_COLOR3FV 14 +#define CMD_COLOR3I 15 +#define CMD_COLOR3IV 16 +#define CMD_COLOR3S 17 +#define CMD_COLOR3SV 18 +#define CMD_COLOR3UB 19 +#define CMD_COLOR3UBV 20 +#define CMD_COLOR3UI 21 +#define CMD_COLOR3UIV 22 +#define CMD_COLOR3US 23 +#define CMD_COLOR3USV 24 +#define CMD_COLOR4B 25 +#define CMD_COLOR4BV 26 +#define CMD_COLOR4D 27 +#define CMD_COLOR4DV 28 +#define CMD_COLOR4F 29 +#define CMD_COLOR4FV 30 +#define CMD_COLOR4I 31 +#define CMD_COLOR4IV 32 +#define CMD_COLOR4S 33 +#define CMD_COLOR4SV 34 +#define CMD_COLOR4UB 35 +#define CMD_COLOR4UBV 36 +#define CMD_COLOR4UI 37 +#define CMD_COLOR4UIV 38 +#define CMD_COLOR4US 39 +#define CMD_COLOR4USV 40 +#define CMD_EDGEFLAG 41 +#define CMD_EDGEFLAGV 42 +#define CMD_END 43 +#define CMD_INDEXD 44 +#define CMD_INDEXDV 45 +#define CMD_INDEXF 46 +#define CMD_INDEXFV 47 +#define CMD_INDEXI 48 +#define CMD_INDEXIV 49 +#define CMD_INDEXS 50 +#define CMD_INDEXSV 51 +#define CMD_NORMAL3B 52 +#define CMD_NORMAL3BV 53 +#define CMD_NORMAL3D 54 +#define CMD_NORMAL3DV 55 +#define CMD_NORMAL3F 56 +#define CMD_NORMAL3FV 57 +#define CMD_NORMAL3I 58 +#define CMD_NORMAL3IV 59 +#define CMD_NORMAL3S 60 +#define CMD_NORMAL3SV 61 +#define CMD_RASTERPOS2D 62 +#define CMD_RASTERPOS2DV 63 +#define CMD_RASTERPOS2F 64 +#define CMD_RASTERPOS2FV 65 +#define CMD_RASTERPOS2I 66 +#define CMD_RASTERPOS2IV 67 +#define CMD_RASTERPOS2S 68 +#define CMD_RASTERPOS2SV 69 +#define CMD_RASTERPOS3D 70 +#define CMD_RASTERPOS3DV 71 +#define CMD_RASTERPOS3F 72 +#define CMD_RASTERPOS3FV 73 +#define CMD_RASTERPOS3I 74 +#define CMD_RASTERPOS3IV 75 +#define CMD_RASTERPOS3S 76 +#define CMD_RASTERPOS3SV 77 +#define CMD_RASTERPOS4D 78 +#define CMD_RASTERPOS4DV 79 +#define CMD_RASTERPOS4F 80 +#define CMD_RASTERPOS4FV 81 +#define CMD_RASTERPOS4I 82 +#define CMD_RASTERPOS4IV 83 +#define CMD_RASTERPOS4S 84 +#define CMD_RASTERPOS4SV 85 +#define CMD_RECTD 86 +#define CMD_RECTDV 87 +#define CMD_RECTF 88 +#define CMD_RECTFV 89 +#define CMD_RECTI 90 +#define CMD_RECTIV 91 +#define CMD_RECTS 92 +#define CMD_RECTSV 93 +#define CMD_TEXCOORD1D 94 +#define CMD_TEXCOORD1DV 95 +#define CMD_TEXCOORD1F 96 +#define CMD_TEXCOORD1FV 97 +#define CMD_TEXCOORD1I 98 +#define CMD_TEXCOORD1IV 99 +#define CMD_TEXCOORD1S 100 +#define CMD_TEXCOORD1SV 101 +#define CMD_TEXCOORD2D 102 +#define CMD_TEXCOORD2DV 103 +#define CMD_TEXCOORD2F 104 +#define CMD_TEXCOORD2FV 105 +#define CMD_TEXCOORD2I 106 +#define CMD_TEXCOORD2IV 107 +#define CMD_TEXCOORD2S 108 +#define CMD_TEXCOORD2SV 109 +#define CMD_TEXCOORD3D 110 +#define CMD_TEXCOORD3DV 111 +#define CMD_TEXCOORD3F 112 +#define CMD_TEXCOORD3FV 113 +#define CMD_TEXCOORD3I 114 +#define CMD_TEXCOORD3IV 115 +#define CMD_TEXCOORD3S 116 +#define CMD_TEXCOORD3SV 117 +#define CMD_TEXCOORD4D 118 +#define CMD_TEXCOORD4DV 119 +#define CMD_TEXCOORD4F 120 +#define CMD_TEXCOORD4FV 121 +#define CMD_TEXCOORD4I 122 +#define CMD_TEXCOORD4IV 123 +#define CMD_TEXCOORD4S 124 +#define CMD_TEXCOORD4SV 125 +#define CMD_VERTEX2D 126 +#define CMD_VERTEX2DV 127 +#define CMD_VERTEX2F 128 +#define CMD_VERTEX2FV 129 +#define CMD_VERTEX2I 130 +#define CMD_VERTEX2IV 131 +#define CMD_VERTEX2S 132 +#define CMD_VERTEX2SV 133 +#define CMD_VERTEX3D 134 +#define CMD_VERTEX3DV 135 +#define CMD_VERTEX3F 136 +#define CMD_VERTEX3FV 137 +#define CMD_VERTEX3I 138 +#define CMD_VERTEX3IV 139 +#define CMD_VERTEX3S 140 +#define CMD_VERTEX3SV 141 +#define CMD_VERTEX4D 142 +#define CMD_VERTEX4DV 143 +#define CMD_VERTEX4F 144 +#define CMD_VERTEX4FV 145 +#define CMD_VERTEX4I 146 +#define CMD_VERTEX4IV 147 +#define CMD_VERTEX4S 148 +#define CMD_VERTEX4SV 149 +#define CMD_CLIPPLANE 150 +#define CMD_COLORMATERIAL 151 +#define CMD_CULLFACE 152 +#define CMD_FOGF 153 +#define CMD_FOGFV 154 +#define CMD_FOGI 155 +#define CMD_FOGIV 156 +#define CMD_FRONTFACE 157 +#define CMD_HINT 158 +#define CMD_LIGHTF 159 +#define CMD_LIGHTFV 160 +#define CMD_LIGHTI 161 +#define CMD_LIGHTIV 162 +#define CMD_LIGHTMODELF 163 +#define CMD_LIGHTMODELFV 164 +#define CMD_LIGHTMODELI 165 +#define CMD_LIGHTMODELIV 166 +#define CMD_LINESTIPPLE 167 +#define CMD_LINEWIDTH 168 +#define CMD_MATERIALF 169 +#define CMD_MATERIALFV 170 +#define CMD_MATERIALI 171 +#define CMD_MATERIALIV 172 +#define CMD_POINTSIZE 173 +#define CMD_POLYGONMODE 174 +#define CMD_POLYGONSTIPPLE 175 +#define CMD_SCISSOR 176 +#define CMD_SHADEMODEL 177 +#define CMD_TEXPARAMETERF 178 +#define CMD_TEXPARAMETERFV 179 +#define CMD_TEXPARAMETERI 180 +#define CMD_TEXPARAMETERIV 181 +#define CMD_TEXIMAGE1D 182 +#define CMD_TEXIMAGE2D 183 +#define CMD_TEXENVF 184 +#define CMD_TEXENVFV 185 +#define CMD_TEXENVI 186 +#define CMD_TEXENVIV 187 +#define CMD_TEXGEND 188 +#define CMD_TEXGENDV 189 +#define CMD_TEXGENF 190 +#define CMD_TEXGENFV 191 +#define CMD_TEXGENI 192 +#define CMD_TEXGENIV 193 +#define CMD_FEEDBACKBUFFER 194 +#define CMD_SELECTBUFFER 195 +#define CMD_RENDERMODE 196 +#define CMD_INITNAMES 197 +#define CMD_LOADNAME 198 +#define CMD_PASSTHROUGH 199 +#define CMD_POPNAME 200 +#define CMD_PUSHNAME 201 +#define CMD_DRAWBUFFER 202 +#define CMD_CLEAR 203 +#define CMD_CLEARACCUM 204 +#define CMD_CLEARINDEX 205 +#define CMD_CLEARCOLOR 206 +#define CMD_CLEARSTENCIL 207 +#define CMD_CLEARDEPTH 208 +#define CMD_STENCILMASK 209 +#define CMD_COLORMASK 210 +#define CMD_DEPTHMASK 211 +#define CMD_INDEXMASK 212 +#define CMD_ACCUM 213 +#define CMD_DISABLE 214 +#define CMD_ENABLE 215 +#define CMD_FINISH 216 +#define CMD_FLUSH 217 +#define CMD_POPATTRIB 218 +#define CMD_PUSHATTRIB 219 +#define CMD_MAP1D 220 +#define CMD_MAP1F 221 +#define CMD_MAP2D 222 +#define CMD_MAP2F 223 +#define CMD_MAPGRID1D 224 +#define CMD_MAPGRID1F 225 +#define CMD_MAPGRID2D 226 +#define CMD_MAPGRID2F 227 +#define CMD_EVALCOORD1D 228 +#define CMD_EVALCOORD1DV 229 +#define CMD_EVALCOORD1F 230 +#define CMD_EVALCOORD1FV 231 +#define CMD_EVALCOORD2D 232 +#define CMD_EVALCOORD2DV 233 +#define CMD_EVALCOORD2F 234 +#define CMD_EVALCOORD2FV 235 +#define CMD_EVALMESH1 236 +#define CMD_EVALPOINT1 237 +#define CMD_EVALMESH2 238 +#define CMD_EVALPOINT2 239 +#define CMD_ALPHAFUNC 240 +#define CMD_BLENDFUNC 241 +#define CMD_LOGICOP 242 +#define CMD_STENCILFUNC 243 +#define CMD_STENCILOP 244 +#define CMD_DEPTHFUNC 245 +#define CMD_PIXELZOOM 246 +#define CMD_PIXELTRANSFERF 247 +#define CMD_PIXELTRANSFERI 248 +#define CMD_PIXELSTOREF 249 +#define CMD_PIXELSTOREI 250 +#define CMD_PIXELMAPFV 251 +#define CMD_PIXELMAPUIV 252 +#define CMD_PIXELMAPUSV 253 +#define CMD_READBUFFER 254 +#define CMD_COPYPIXELS 255 +#define CMD_READPIXELS 256 +#define CMD_DRAWPIXELS 257 +#define CMD_GETBOOLEANV 258 +#define CMD_GETCLIPPLANE 259 +#define CMD_GETDOUBLEV 260 +#define CMD_GETERROR 261 +#define CMD_GETFLOATV 262 +#define CMD_GETINTEGERV 263 +#define CMD_GETLIGHTFV 264 +#define CMD_GETLIGHTIV 265 +#define CMD_GETMAPDV 266 +#define CMD_GETMAPFV 267 +#define CMD_GETMAPIV 268 +#define CMD_GETMATERIALFV 269 +#define CMD_GETMATERIALIV 270 +#define CMD_GETPIXELMAPFV 271 +#define CMD_GETPIXELMAPUIV 272 +#define CMD_GETPIXELMAPUSV 273 +#define CMD_GETPOLYGONSTIPPLE 274 +#define CMD_GETSTRING 275 +#define CMD_GETTEXENVFV 276 +#define CMD_GETTEXENVIV 277 +#define CMD_GETTEXGENDV 278 +#define CMD_GETTEXGENFV 279 +#define CMD_GETTEXGENIV 280 +#define CMD_GETTEXIMAGE 281 +#define CMD_GETTEXPARAMETERFV 282 +#define CMD_GETTEXPARAMETERIV 283 +#define CMD_GETTEXLEVELPARAMETERFV 284 +#define CMD_GETTEXLEVELPARAMETERIV 285 +#define CMD_ISENABLED 286 +#define CMD_ISLIST 287 +#define CMD_DEPTHRANGE 288 +#define CMD_FRUSTUM 289 +#define CMD_LOADIDENTITY 290 +#define CMD_LOADMATRIXF 291 +#define CMD_LOADMATRIXD 292 +#define CMD_MATRIXMODE 293 +#define CMD_MULTMATRIXF 294 +#define CMD_MULTMATRIXD 295 +#define CMD_ORTHO 296 +#define CMD_POPMATRIX 297 +#define CMD_PUSHMATRIX 298 +#define CMD_ROTATED 299 +#define CMD_ROTATEF 300 +#define CMD_SCALED 301 +#define CMD_SCALEF 302 +#define CMD_TRANSLATED 303 +#define CMD_TRANSLATEF 304 +#define CMD_VIEWPORT 305 +#define CMD_ARRAYELEMENT 306 +#define CMD_BINDTEXTURE 307 +#define CMD_COLORPOINTER 308 +#define CMD_DISABLECLIENTSTATE 309 +#define CMD_DRAWARRAYS 310 +#define CMD_DRAWELEMENTS 311 +#define CMD_EDGEFLAGPOINTER 312 +#define CMD_ENABLECLIENTSTATE 313 +#define CMD_INDEXPOINTER 314 +#define CMD_INDEXUB 315 +#define CMD_INDEXUBV 316 +#define CMD_INTERLEAVEDARRAYS 317 +#define CMD_NORMALPOINTER 318 +#define CMD_POLYGONOFFSET 319 +#define CMD_TEXCOORDPOINTER 320 +#define CMD_VERTEXPOINTER 321 +#define CMD_ARETEXTURESRESIDENT 322 +#define CMD_COPYTEXIMAGE1D 323 +#define CMD_COPYTEXIMAGE2D 324 +#define CMD_COPYTEXSUBIMAGE1D 325 +#define CMD_COPYTEXSUBIMAGE2D 326 +#define CMD_DELETETEXTURES 327 +#define CMD_GENTEXTURES 328 +#define CMD_GETPOINTERV 329 +#define CMD_ISTEXTURE 330 +#define CMD_PRIORITIZETEXTURES 331 +#define CMD_TEXSUBIMAGE1D 332 +#define CMD_TEXSUBIMAGE2D 333 +#define CMD_POPCLIENTATTRIB 334 +#define CMD_PUSHCLIENTATTRIB 335 +#define CMD_BLENDCOLOR 336 +#define CMD_BLENDEQUATION 337 +#define CMD_DRAWRANGEELEMENTS 338 +#define CMD_COLORTABLE 339 +#define CMD_COLORTABLEPARAMETERFV 340 +#define CMD_COLORTABLEPARAMETERIV 341 +#define CMD_COPYCOLORTABLE 342 +#define CMD_GETCOLORTABLE 343 +#define CMD_GETCOLORTABLEPARAMETERFV 344 +#define CMD_GETCOLORTABLEPARAMETERIV 345 +#define CMD_COLORSUBTABLE 346 +#define CMD_COPYCOLORSUBTABLE 347 +#define CMD_CONVOLUTIONFILTER1D 348 +#define CMD_CONVOLUTIONFILTER2D 349 +#define CMD_CONVOLUTIONPARAMETERF 350 +#define CMD_CONVOLUTIONPARAMETERFV 351 +#define CMD_CONVOLUTIONPARAMETERI 352 +#define CMD_CONVOLUTIONPARAMETERIV 353 +#define CMD_COPYCONVOLUTIONFILTER1D 354 +#define CMD_COPYCONVOLUTIONFILTER2D 355 +#define CMD_GETCONVOLUTIONFILTER 356 +#define CMD_GETCONVOLUTIONPARAMETERFV 357 +#define CMD_GETCONVOLUTIONPARAMETERIV 358 +#define CMD_GETSEPARABLEFILTER 359 +#define CMD_SEPARABLEFILTER2D 360 +#define CMD_GETHISTOGRAM 361 +#define CMD_GETHISTOGRAMPARAMETERFV 362 +#define CMD_GETHISTOGRAMPARAMETERIV 363 +#define CMD_GETMINMAX 364 +#define CMD_GETMINMAXPARAMETERFV 365 +#define CMD_GETMINMAXPARAMETERIV 366 +#define CMD_HISTOGRAM 367 +#define CMD_MINMAX 368 +#define CMD_RESETHISTOGRAM 369 +#define CMD_RESETMINMAX 370 +#define CMD_TEXIMAGE3D 371 +#define CMD_TEXSUBIMAGE3D 372 +#define CMD_COPYTEXSUBIMAGE3D 373 +#define CMD_ACTIVETEXTUREARB 374 +#define CMD_CLIENTACTIVETEXTUREARB 375 +#define CMD_MULTITEXCOORD1DARB 376 +#define CMD_MULTITEXCOORD1DVARB 377 +#define CMD_MULTITEXCOORD1FARB 378 +#define CMD_MULTITEXCOORD1FVARB 379 +#define CMD_MULTITEXCOORD1IARB 380 +#define CMD_MULTITEXCOORD1IVARB 381 +#define CMD_MULTITEXCOORD1SARB 382 +#define CMD_MULTITEXCOORD1SVARB 383 +#define CMD_MULTITEXCOORD2DARB 384 +#define CMD_MULTITEXCOORD2DVARB 385 +#define CMD_MULTITEXCOORD2FARB 386 +#define CMD_MULTITEXCOORD2FVARB 387 +#define CMD_MULTITEXCOORD2IARB 388 +#define CMD_MULTITEXCOORD2IVARB 389 +#define CMD_MULTITEXCOORD2SARB 390 +#define CMD_MULTITEXCOORD2SVARB 391 +#define CMD_MULTITEXCOORD3DARB 392 +#define CMD_MULTITEXCOORD3DVARB 393 +#define CMD_MULTITEXCOORD3FARB 394 +#define CMD_MULTITEXCOORD3FVARB 395 +#define CMD_MULTITEXCOORD3IARB 396 +#define CMD_MULTITEXCOORD3IVARB 397 +#define CMD_MULTITEXCOORD3SARB 398 +#define CMD_MULTITEXCOORD3SVARB 399 +#define CMD_MULTITEXCOORD4DARB 400 +#define CMD_MULTITEXCOORD4DVARB 401 +#define CMD_MULTITEXCOORD4FARB 402 +#define CMD_MULTITEXCOORD4FVARB 403 +#define CMD_MULTITEXCOORD4IARB 404 +#define CMD_MULTITEXCOORD4IVARB 405 +#define CMD_MULTITEXCOORD4SARB 406 +#define CMD_MULTITEXCOORD4SVARB 407 +#define CMD_LOADTRANSPOSEMATRIXFARB 408 +#define CMD_LOADTRANSPOSEMATRIXDARB 409 +#define CMD_MULTTRANSPOSEMATRIXFARB 410 +#define CMD_MULTTRANSPOSEMATRIXDARB 411 +#define CMD_SAMPLECOVERAGEARB 412 +#define CMD_SAMPLEPASSARB 413 +#define CMD_POLYGONOFFSETEXT 414 +#define CMD_GETTEXFILTERFUNCSGIS 415 +#define CMD_TEXFILTERFUNCSGIS 416 +#define CMD_GETHISTOGRAMEXT 417 +#define CMD_GETHISTOGRAMPARAMETERFVEXT 418 +#define CMD_GETHISTOGRAMPARAMETERIVEXT 419 +#define CMD_GETMINMAXEXT 420 +#define CMD_GETMINMAXPARAMETERFVEXT 421 +#define CMD_GETMINMAXPARAMETERIVEXT 422 +#define CMD_GETCONVOLUTIONFILTEREXT 423 +#define CMD_GETCONVOLUTIONPARAMETERFVEXT 424 +#define CMD_GETCONVOLUTIONPARAMETERIVEXT 425 +#define CMD_GETSEPARABLEFILTEREXT 426 +#define CMD_GETCOLORTABLESGI 427 +#define CMD_GETCOLORTABLEPARAMETERFVSGI 428 +#define CMD_GETCOLORTABLEPARAMETERIVSGI 429 +#define CMD_PIXELTEXGENSGIX 430 +#define CMD_PIXELTEXGENPARAMETERISGIS 431 +#define CMD_PIXELTEXGENPARAMETERIVSGIS 432 +#define CMD_PIXELTEXGENPARAMETERFSGIS 433 +#define CMD_PIXELTEXGENPARAMETERFVSGIS 434 +#define CMD_GETPIXELTexGenPARAMETERIVSGIS 435 +#define CMD_GETPIXELTexGenPARAMETERFVSGIS 436 +#define CMD_TEXIMAGE4DSGIS 437 +#define CMD_TEXSUBIMAGE4DSGIS 438 +#define CMD_ARETEXTURESRESIDENTEXT 439 +#define CMD_GENTEXTURESEXT 440 +#define CMD_ISTEXTUREEXT 441 +#define CMD_DETAILTEXFUNCSGIS 442 +#define CMD_GETDETAILTEXFUNCSGIS 443 +#define CMD_SHARPENTEXFUNCSGIS 444 +#define CMD_GETSHARPENTEXFUNCSGIS 445 +#define CMD_SAMPLEMASKSGIS 446 +#define CMD_SAMPLEPATTERNSGIS 447 +#define CMD_COLORPOINTEREXT 448 +#define CMD_EDGEFLAGPOINTEREXT 449 +#define CMD_INDEXPOINTEREXT 450 +#define CMD_NORMALPOINTEREXT 451 +#define CMD_TEXCOORDPOINTEREXT 452 +#define CMD_VERTEXPOINTEREXT 453 +#define CMD_SPRITEPARAMETERFSGIX 454 +#define CMD_SPRITEPARAMETERFVSGIX 455 +#define CMD_SPRITEPARAMETERISGIX 456 +#define CMD_SPRITEPARAMETERIVSGIX 457 +#define CMD_POINTPARAMETERFEXT 458 +#define CMD_POINTPARAMETERFVEXT 459 +#define CMD_GETINSTRUMENTSSGIX 460 +#define CMD_INSTRUMENTSBUFFERSGIX 461 +#define CMD_POLLINSTRUMENTSSGIX 462 +#define CMD_READINSTRUMENTSSGIX 463 +#define CMD_STARTINSTRUMENTSSGIX 464 +#define CMD_STOPINSTRUMENTSSGIX 465 +#define CMD_FRAMEZOOMSGIX 466 +#define CMD_TAGSAMPLEBUFFERSGIX 467 +#define CMD_REFERENCEPLANESGIX 468 +#define CMD_FLUSHRASTERSGIX 469 +#define CMD_GETLISTPARAMETERFVSGIX 470 +#define CMD_GETLISTPARAMETERIVSGIX 471 +#define CMD_LISTPARAMETERFSGIX 472 +#define CMD_LISTPARAMETERFVSGIX 473 +#define CMD_LISTPARAMETERISGIX 474 +#define CMD_LISTPARAMETERIVSGIX 475 +#define CMD_FRAGMENTCOLORMATERIALSGIX 476 +#define CMD_FRAGMENTLIGHTFSGIX 477 +#define CMD_FRAGMENTLIGHTFVSGIX 478 +#define CMD_FRAGMENTLIGHTISGIX 479 +#define CMD_FRAGMENTLIGHTIVSGIX 480 +#define CMD_FRAGMENTLIGHTMODELFSGIX 481 +#define CMD_FRAGMENTLIGHTMODELFVSGIX 482 +#define CMD_FRAGMENTLIGHTMODELISGIX 483 +#define CMD_FRAGMENTLIGHTMODELIVSGIX 484 +#define CMD_FRAGMENTMATERIALFSGIX 485 +#define CMD_FRAGMENTMATERIALFVSGIX 486 +#define CMD_FRAGMENTMATERIALISGIX 487 +#define CMD_FRAGMENTMATERIALIVSGIX 488 +#define CMD_GETFRAGMENTLIGHTFVSGIX 489 +#define CMD_GETFRAGMENTLIGHTIVSGIX 490 +#define CMD_GETFRAGMENTMATERIALFVSGIX 491 +#define CMD_GETFRAGMENTMATERIALIVSGIX 492 +#define CMD_LIGHTENVISGIX 493 +#define CMD_VERTEXWEIGHTFEXT 494 +#define CMD_VERTEXWEIGHTFVEXT 495 +#define CMD_VERTEXWEIGHTPOINTEREXT 496 +#define CMD_FLUSHVERTEXARRAYRANGENV 497 +#define CMD_VERTEXARRAYRANGENV 498 +#define CMD_COMBINERPARAMETERFVNV 499 +#define CMD_COMBINERPARAMETERFNV 500 +#define CMD_COMBINERPARAMETERIVNV 501 +#define CMD_COMBINERPARAMETERINV 502 +#define CMD_COMBINERINPUTNV 503 +#define CMD_COMBINEROUTPUTNV 504 +#define CMD_FINALCOMBINERINPUTNV 505 +#define CMD_GETCOMBINERINPUTPARAMETERFVNV 506 +#define CMD_GETCOMBINERINPUTPARAMETERIVNV 507 +#define CMD_GETCOMBINEROUTPUTPARAMETERFVNV 508 +#define CMD_GETCOMBINEROUTPUTPARAMETERIVNV 509 +#define CMD_GETFINALCOMBINERINPUTPARAMETERFVNV 510 +#define CMD_GETFINALCOMBINERINPUTPARAMETERIVNV 511 +#define CMD_RESIZEBUFFERSMESA 512 +#define CMD_WINDOWPOS2DMESA 513 +#define CMD_WINDOWPOS2DVMESA 514 +#define CMD_WINDOWPOS2FMESA 515 +#define CMD_WINDOWPOS2FVMESA 516 +#define CMD_WINDOWPOS2IMESA 517 +#define CMD_WINDOWPOS2IVMESA 518 +#define CMD_WINDOWPOS2SMESA 519 +#define CMD_WINDOWPOS2SVMESA 520 +#define CMD_WINDOWPOS3DMESA 521 +#define CMD_WINDOWPOS3DVMESA 522 +#define CMD_WINDOWPOS3FMESA 523 +#define CMD_WINDOWPOS3FVMESA 524 +#define CMD_WINDOWPOS3IMESA 525 +#define CMD_WINDOWPOS3IVMESA 526 +#define CMD_WINDOWPOS3SMESA 527 +#define CMD_WINDOWPOS3SVMESA 528 +#define CMD_WINDOWPOS4DMESA 529 +#define CMD_WINDOWPOS4DVMESA 530 +#define CMD_WINDOWPOS4FMESA 531 +#define CMD_WINDOWPOS4FVMESA 532 +#define CMD_WINDOWPOS4IMESA 533 +#define CMD_WINDOWPOS4IVMESA 534 +#define CMD_WINDOWPOS4SMESA 535 +#define CMD_WINDOWPOS4SVMESA 536 +#define CMD_BLENDFUNCSEPARATEEXT 537 +#define CMD_INDEXMATERIALEXT 538 +#define CMD_INDEXFUNCEXT 539 +#define CMD_LOCKARRAYSEXT 540 +#define CMD_UNLOCKARRAYSEXT 541 +#define CMD_CULLPARAMETERDVEXT 542 +#define CMD_CULLPARAMETERFVEXT 543 +#define CMD_HINTPGI 544 +#define CMD_FOGCOORDFEXT 545 +#define CMD_FOGCOORDFVEXT 546 +#define CMD_FOGCOORDDEXT 547 +#define CMD_FOGCOORDDVEXT 548 +#define CMD_FOGCOORDPOINTEREXT 549 +#define CMD_GETCOLORTABLEEXT 550 +#define CMD_GETCOLORTABLEPARAMETERIVEXT 551 +#define CMD_GETCOLORTABLEPARAMETERFVEXT 552 + + +/* FIXME: Trace Extension itself - not yet defined. */ +#define CMD_NEWTRACEMESA 666 +#define CMD_ENDTRACEMESA 667 +#define CMD_TRACECOMMENTMESA 668 + + + +/** + * Enumeration of non-GL entries in trace stream. + * This is (static) variable and "various" data, + * some of which optional. All these values are + * negative. + */ +#define VAR_VERSION -1 /* Metafile version. Mandatory. */ +#define VAR_CYCLES -2 /* Profiling, CPU cycles. Optional. */ +#define VAR_CONTEXT -3 /* Context ID. Optional. */ +#define VAR_THREAD -4 /* Thread ID. Optional. */ +#define VAR_STRING -5 /* Internally generated. Optional. */ + +#define VAR_COLORELEMENT -6 +#define VAR_EDGEFLAGELEMENT -7 +#define VAR_INDEXELEMENT -8 +#define VAR_NORMALELEMENT -9 +#define VAR_TEXCOORDELEMENT -10 +#define VAR_VERTEXELEMENT -11 /* Dereferenced Vertex Array Data. */ + + +/* FIXME: more VAR_ as needed. */ +/* + * Mindbender - The following two vars are needed to surround the queries + * performed when the trace context is in a half initialized + * state. + */ +#define VAR_OOBBEGIN -14 +#define VAR_OOBEND -15 + +/* + * Mindbender - These are needed when the pointer changes through one of the + * XXXPointer calls. Change these as needed. + */ +#define VAR_COLORPOINTER -8 +#define VAR_EDGEFLAGPOINTER -9 +#define VAR_INDEXPOINTER -10 +#define VAR_NORMALPOINTER -11 +#define VAR_TEXCOORDPOINTER -12 +#define VAR_VERTEXPOINTER -13 + + +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_context.c b/xc/extras/Mesa/src/Trace/tr_context.c new file mode 100644 index 000000000..df60240a1 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_context.c @@ -0,0 +1,118 @@ +#ifdef MESA_TRACE + +#include "glheader.h" +#include "glapi.h" +#include "glapitable.h" +#include "context.h" +#include "tr_context.h" + + +/* Full precision on floats/double, else human readable. */ +#define TR_FULL_PRECISION 0x000000001 + + +void trInitContext( trace_context_t * tr_context ) +{ + int i; + + if (!tr_context) + return; + + tr_context->traceEnabled = GL_FALSE; + tr_context->logFP = stdout; + tr_context->traceName = NULL; + + tr_context->traceAttribLogBits = GL_ALL_ATTRIB_BITS; + tr_context->traceEnableLogBits = GL_TRACE_ALL_BITS_MESA; + + tr_context->betweenBeginEnd = GL_FALSE; + + tr_context->framecounter = 0; + + tr_context->trDoPrint = GL_TRUE; + tr_context->doExec = GL_TRUE; + tr_context->check_errors = GL_TRUE; + + tr_context->head_errors = 0; + tr_context->tail_errors = 0; + + for( i = 0; i < TR_MAX_QUEUED_ERRORS; i++ ) { + tr_context->cached_errors[i] = GL_NO_ERROR; + } + +#if 0 + tr_context->doAsserts = GL_TRUE; + tr_context->clientStateValid = GL_FALSE; +#endif +} + + +/** + * Get the current context. + */ +trace_context_t* trCtx() { + GLcontext * ctx; + ctx = (GLcontext *)_glapi_get_context(); + + assert(ctx); + assert(ctx->TraceCtx); + if( (!ctx) || !(ctx->TraceCtx) ) { + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ ); + return NULL; + } + + return ctx->TraceCtx; +} + + +/** + * Get the current, real dispatch table pointer. + */ +struct _glapi_table* trGetDispatch() { + return _glapi_get_dispatch(); +} + + +void trSetTraceDispatch( void ) { + GLcontext * ctx; + ctx = (GLcontext *)_glapi_get_context(); + + assert( ctx ); + assert( ctx->TraceCtx ); + assert( ctx->TraceDispatch ); + + ctx->TraceCtx->traceEnabled = GL_TRUE; + + /* XXX save returned value */ + (void) _glapi_begin_dispatch_override(ctx->TraceDispatch); +} + + +void trSetOriginalDispatch( void ) { + GLcontext * ctx; + ctx = (GLcontext *)_glapi_get_context(); + + assert( ctx ); + assert( ctx->TraceCtx ); + assert( ctx->TraceDispatch ); + + ctx->TraceCtx->traceEnabled = GL_FALSE; + + /* XXX pass value we got from _glapi_begin_dispatch_override() */ + _glapi_end_dispatch_override(1); +} + + +/** + * Is error checking enabled? + */ +GLboolean trDoErrorCheck() { + return trCtx()->check_errors; +} + +#else +extern void tr_context_dummy_func(void); +void tr_context_dummy_func(void) +{ +} +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_context.h b/xc/extras/Mesa/src/Trace/tr_context.h new file mode 100644 index 000000000..68e78734d --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_context.h @@ -0,0 +1,80 @@ +#ifndef TR_CONTEXT_H +#define TR_CONTEXT_H + +#include "glheader.h" +#include "glapitable.h" + +#define TR_MAX_QUEUED_ERRORS 8 + + +/** + * State Variables. + * To make this thread-safe we'd maintain such + * a set per thread/context. + */ +typedef struct t_t{ + + GLboolean traceEnabled; + + /* The current log file pointer. */ + FILE * logFP; + + char * traceName; + + /* What frame we're currently on. */ + GLint framecounter; + + /* Not yet used. This field will control which attributes should be logged. */ + GLbitfield traceAttribLogBits; + + GLbitfield traceEnableLogBits; + + /* Used to short-circuit writing to the file, if the disk is full */ + GLboolean trDoPrint; + + /* Used to toggle whether the gl command should + * actually be executed. For now this will always be true. + */ + GLboolean doExec; + + /* Verify GL_NO_ERROR wherever possible. */ + GLboolean check_errors; + + /* Loop over all GL errors. + * TODO: We have to make sure the application gets + * the exact same errors despite our checking. + * That basically means we have to queue all + * errors from our internal checks. + */ + GLint head_errors; + GLint tail_errors; + + GLenum cached_errors[TR_MAX_QUEUED_ERRORS]; + + /* Not yet used. The 1st of many state flags used to + * track the current state of the GL state machine. + */ + GLboolean betweenBeginEnd; + +#if 0 + GLboolean doAsserts; + GLboolean clientStateValid; +#endif + +} trace_context_t; + + +extern void trInitContext( trace_context_t * tr_context ); + +extern trace_context_t* trCtx( void ); + +extern struct _glapi_table* trGetDispatch( void ); + +extern void trSetTraceDispatch( void ); + +extern void trSetOriginalDispatch( void ); + +extern GLboolean trDoErrorCheck( void ); + + +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_control.c b/xc/extras/Mesa/src/Trace/tr_control.c new file mode 100644 index 000000000..ff67b15c3 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_control.c @@ -0,0 +1,147 @@ +#ifdef MESA_TRACE +#include "glheader.h" +#include "glapi.h" +#include "context.h" /* for _mesa_error */ +#include "mtypes.h" +#include "tr_context.h" +#include "tr_write.h" + + +void glEnableTraceMESA( GLbitfield mask ) +{ + trace_context_t * tctx = trCtx(); + + tctx->traceEnableLogBits = mask; + tctx->traceEnabled = GL_TRUE; +} + + +void glDisableTraceMESA( GLbitfield mask ) +{ + /* Reset traceEnableLogBits ? */ + trCtx()->traceEnabled = GL_FALSE; +} + + +void glNewTraceMESA( GLbitfield logbits, const GLubyte * traceName ) +{ + char * newname; + GLint length; + GLcontext * ctx; + const char * defaultName = "traceGL"; + + ctx = (GLcontext *)_glapi_get_context(); + + assert(ctx); + assert(ctx->TraceCtx); + assert(ctx->TraceDispatch); + if( !ctx || /* Do we even have a context ? */ + (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) || /* Are we currently between glBegin and glEnd ? */ + (ctx->TraceDispatch == _glapi_get_override_dispatch(1)) ) { /* Has a trace already started ? */ + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ ); + return; + } + + /* FIXME!!! When do we free tracename after the app is finished? */ + if( ctx->TraceCtx->traceName ) { + free( ctx->TraceCtx->traceName ); + } + + length = strlen((char *)traceName) + 1; + if( length != 1 ) { + newname = (char *)malloc( length ); + strncpy( (char *)newname, (char *)traceName, length ); + } else { + length = strlen( defaultName ); + newname = (char *)malloc( length ); + strncpy( (char *)newname, defaultName, length ); + } + ctx->TraceCtx->traceName = newname; + ctx->TraceCtx->traceAttribLogBits = logbits; + + trOpenLogFile(); + trSetTraceDispatch(); +} + + +void glEndTraceMESA(void) +{ + GLcontext * ctx; + + ctx = (GLcontext *)_glapi_get_context(); + assert(ctx); + assert(ctx->TraceCtx); + assert(ctx->TraceDispatch); + + /* Do we even have a context ? */ + /* Are we currently between glBegin and glEnd ? */ + /* Are we sure the current dispatch _is_ the TraceDispatch ? */ + if (!ctx || + (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) || + (ctx->TraceDispatch != _glapi_get_override_dispatch(1)) ) { + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ ); + return; + } + +#if 0 + /* Always dump the max indices */ +// But not yet... + trWriteCMD( VAR_COLORPOINTER ); + trWritei( ctx->TraceCtx->trColorPtrState.maxIndex ); + trWriteCMD( VAR_EDGEFLAGPOINTER ); + trWritei( ctx->TraceCtx->trEdgeFlagPtrState.maxIndex ); + trWriteCMD( VAR_INDEXPOINTER ); + trWritei( ctx->TraceCtx->trIndexPtrState.maxIndex ); + trWriteCMD( VAR_NORMALPOINTER ); + trWritei( ctx->TraceCtx->trNormalPtrState.maxIndex ); + trWriteCMD( VAR_TEXCOORDPOINTER ); + trWritei( ctx->TraceCtx->trTexCoordPtrState.maxIndex ); + trWriteCMD( VAR_VERTEXPOINTER ); + trWritei( ctx->TraceCtx->trVertexPtrState.maxIndex ); +#endif + + trCloseLogFile(); + trSetOriginalDispatch(); +} + + +void glTraceAssertAttribMESA( GLbitfield attribMask ) +{ +#warning TraceAssertAttrib not implemented +} + + +void glTraceCommentMESA( const GLubyte * comment ) +{ + trWriteString( (char *)comment ); +} + + +void glTraceTextureMESA( GLuint name, const GLubyte* comment ) +{ +#warning TraceTexture not implemented +} + +void glTraceListMESA( GLuint name, const GLubyte* comment ) +{ +#warning TraceList not implemented +} + + +void glTracePointerMESA( GLvoid* pointer, const GLubyte* comment ) +{ +#warning TracePointer not implemented +} + + +void glTracePointerRangeMESA( const GLvoid* first, const GLvoid* last, const GLubyte* comment ) +{ +#warning TracePointerRange not implemented +} + +#else +extern void tr_control_dummy_func(void); +void tr_control_dummy_func(void) +{ +} +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_error.c b/xc/extras/Mesa/src/Trace/tr_error.c new file mode 100644 index 000000000..24f439179 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_error.c @@ -0,0 +1,40 @@ +#ifdef MESA_TRACE + +#include "tr_context.h" +#include "tr_error.h" +#include "tr_write.h" + + +/* Have a Begin/End flag, skip checks if in-between. */ + + +/** + * Some GL implementations cache errors internally, + * thus we have to loop until we do not get + * any errors. + */ +void trError( void ) { + int sanity = 0; /* Bail out on endless loops. */ + GLenum err; + + if( !(trCtx()->check_errors) ) + return; + + while ( (err=trGetDispatch()->GetError())!=GL_NO_ERROR ) { + trWriteEnum(err); + sanity++; + + if (sanity > TR_MAX_QUEUED_ERRORS ) { + /* Too many errors */ + return; + } + } +} + + +#else +extern void tr_error_dummy_func(void); +void tr_error_dummy_func(void) +{ +} +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_error.h b/xc/extras/Mesa/src/Trace/tr_error.h new file mode 100644 index 000000000..cf445bc88 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_error.h @@ -0,0 +1,7 @@ +#ifndef TR_ERROR_H +#define TR_ERROR_H + +extern void trError( void ); + +#endif + diff --git a/xc/extras/Mesa/src/Trace/tr_support.c b/xc/extras/Mesa/src/Trace/tr_support.c new file mode 100644 index 000000000..8428f108d --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_support.c @@ -0,0 +1,584 @@ +#ifdef MESA_TRACE + +#include "GL/gl.h" +#include "tr_context.h" +#include "tr_support.h" +#include "tr_write.h" + + +#if 0 +static void trQueryConvolutionState( void ) { + + if( trCtx()->trConvolutionWidth == -1 ) { + /* Query it */ + trWriteCMD( VAR_OOBBEGIN ); + trGetDispatch()->GetConvolutionParameteriv( GL_SEPARABLE_2D, GL_CONVOLUTION_WIDTH, + &(trCtx()->trConvolutionWidth) ); + trWriteCMD( VAR_OOBEND ); + } + + if( trCtx()->trConvolutionHeight == -1 ) { + /* Query it */ + trWriteCMD( VAR_OOBBEGIN ); + trGetDispatch()->GetConvolutionParameteriv( GL_SEPARABLE_2D, GL_CONVOLUTION_HEIGHT, + &(trCtx()->trConvolutionHeight) ); + trWriteCMD( VAR_OOBEND ); + } +} +#endif + + +void trZeroGetterData( GLenum pname, GLsizei typesize, GLvoid * params ) { + + switch( pname ) { + case GL_COLOR_MATRIX: + case GL_MODELVIEW_MATRIX: + case GL_PROJECTION_MATRIX: + case GL_TEXTURE_MATRIX: + memset( params, 0, typesize * 16 ); + break; + + case GL_ACCUM_CLEAR_VALUE: + case GL_BLEND_COLOR: + case GL_COLOR_CLEAR_VALUE: + case GL_COLOR_WRITEMASK: + case GL_CURRENT_COLOR: + case GL_CURRENT_RASTER_COLOR: + case GL_CURRENT_RASTER_POSITION: + case GL_CURRENT_RASTER_TEXTURE_COORDS: + case GL_CURRENT_TEXTURE_COORDS: + case GL_LIGHT_MODEL_AMBIENT: + case GL_MAP2_GRID_DOMAIN: + case GL_SCISSOR_BOX: + case GL_VIEWPORT: + memset( params, 0, typesize * 4 ); + break; + + case GL_CURRENT_NORMAL: + memset( params, 0, typesize * 3 ); + break; + + case GL_ALIASED_POINT_SIZE_RANGE: + case GL_ALIASED_LINE_WIDTH_RANGE: + case GL_DEPTH_RANGE: + case GL_MAP1_GRID_DOMAIN: + case GL_MAP2_GRID_SEGMENTS: + case GL_MAX_VIEWPORT_DIMS: + case GL_POLYGON_MODE: + case GL_SMOOTH_LINE_WIDTH_RANGE: + case GL_SMOOTH_POINT_SIZE_RANGE: + memset( params, 0, typesize * 2 ); + break; + + case GL_ACCUM_ALPHA_BITS: + case GL_ACCUM_BLUE_BITS: + case GL_ACCUM_GREEN_BITS: + case GL_ACCUM_RED_BITS: + case GL_ACTIVE_TEXTURE_ARB: + case GL_ALPHA_BIAS: + case GL_ALPHA_BITS: + case GL_ALPHA_SCALE: + case GL_ALPHA_TEST: + case GL_ALPHA_TEST_FUNC: + case GL_ALPHA_TEST_REF: + case GL_ATTRIB_STACK_DEPTH: + case GL_AUTO_NORMAL: + case GL_AUX_BUFFERS: + case GL_BLEND: + case GL_BLEND_SRC: + case GL_BLUE_BIAS: + case GL_BLUE_BITS: + case GL_BLUE_SCALE: + case GL_CLIENT_ACTIVE_TEXTURE_ARB: + case GL_CLIENT_ATTRIB_STACK_DEPTH: + case GL_CLIP_PLANE0: + case GL_CLIP_PLANE1: + case GL_CLIP_PLANE2: + case GL_CLIP_PLANE3: + case GL_CLIP_PLANE4: + case GL_CLIP_PLANE5: + case GL_COLOR_ARRAY: + case GL_COLOR_ARRAY_SIZE: + case GL_COLOR_ARRAY_STRIDE: + case GL_COLOR_ARRAY_TYPE: + case GL_COLOR_LOGIC_OP: + case GL_COLOR_MATERIAL: + case GL_COLOR_MATERIAL_FACE: + case GL_COLOR_MATERIAL_PARAMETER: + case GL_COLOR_MATRIX_STACK_DEPTH: + case GL_COLOR_TABLE: + case GL_CONVOLUTION_1D: + case GL_CONVOLUTION_2D: + case GL_CULL_FACE: + case GL_CULL_FACE_MODE: + case GL_CURRENT_INDEX: + case GL_CURRENT_RASTER_DISTANCE: + case GL_CURRENT_RASTER_INDEX: + case GL_CURRENT_RASTER_POSITION_VALID: + case GL_DEPTH_BIAS: + case GL_DEPTH_CLEAR_VALUE: + case GL_DEPTH_FUNC: + case GL_DEPTH_SCALE: + case GL_DEPTH_TEST: + case GL_DEPTH_WRITEMASK: + case GL_DITHER: + case GL_DOUBLEBUFFER: + case GL_DRAW_BUFFER: + case GL_EDGE_FLAG: + case GL_EDGE_FLAG_ARRAY: + case GL_EDGE_FLAG_ARRAY_STRIDE: + case GL_FEEDBACK_BUFFER_SIZE: + case GL_FEEDBACK_BUFFER_TYPE: + case GL_FOG: + case GL_FOG_DENSITY: + case GL_FOG_END: + case GL_FOG_HINT: + case GL_FOG_INDEX: + case GL_FOG_MODE: + case GL_FOG_START: + case GL_FRONT_FACE: + case GL_GREEN_BIAS: + case GL_GREEN_BITS: + case GL_GREEN_SCALE: + case GL_HISTOGRAM: + case GL_INDEX_ARRAY: + case GL_INDEX_ARRAY_STRIDE: + case GL_INDEX_ARRAY_TYPE: + case GL_INDEX_BITS: + case GL_INDEX_CLEAR_VALUE: + case GL_INDEX_LOGIC_OP: + case GL_INDEX_MODE: + case GL_INDEX_OFFSET: + case GL_INDEX_SHIFT: + case GL_INDEX_WRITEMASK: + case GL_LIGHT0: + case GL_LIGHT1: + case GL_LIGHT2: + case GL_LIGHT3: + case GL_LIGHT4: + case GL_LIGHT5: + case GL_LIGHT6: + case GL_LIGHT7: + case GL_LIGHTING: + case GL_LIGHT_MODEL_COLOR_CONTROL: + case GL_LIGHT_MODEL_LOCAL_VIEWER: + case GL_LIGHT_MODEL_TWO_SIDE: + case GL_LINE_SMOOTH: + case GL_LINE_SMOOTH_HINT: + case GL_LINE_STIPPLE: + case GL_LINE_STIPPLE_PATTERN: + case GL_LINE_STIPPLE_REPEAT: + case GL_LINE_WIDTH: + case GL_LIST_BASE: + case GL_LIST_INDEX: + case GL_LIST_MODE: + case GL_LOGIC_OP_MODE: + case GL_MAP1_COLOR_4: + case GL_MAP1_GRID_SEGMENTS: + case GL_MAP1_INDEX: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_1: + case GL_MAP1_TEXTURE_COORD_2: + case GL_MAP1_TEXTURE_COORD_3: + case GL_MAP1_TEXTURE_COORD_4: + case GL_MAP1_VERTEX_3: + case GL_MAP1_VERTEX_4: + case GL_MAP2_COLOR_4: + case GL_MAP2_INDEX: + case GL_MAP2_NORMAL: + case GL_MAP2_TEXTURE_COORD_1: + case GL_MAP2_TEXTURE_COORD_2: + case GL_MAP2_TEXTURE_COORD_3: + case GL_MAP2_TEXTURE_COORD_4: + case GL_MAP2_VERTEX_3: + case GL_MAP2_VERTEX_4: + case GL_MAP_COLOR: + case GL_MAP_STENCIL: + case GL_MATRIX_MODE: + case GL_MAX_3D_TEXTURE_SIZE: + case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: + case GL_MAX_ATTRIB_STACK_DEPTH: + case GL_MAX_CLIP_PLANES: + case GL_MAX_COLOR_MATRIX_STACK_DEPTH: + case GL_MAX_ELEMENTS_VERTICES: + case GL_MAX_EVAL_ORDER: + case GL_MAX_LIGHTS: + case GL_MAX_LIST_NESTING: + case GL_MAX_MODELVIEW_STACK_DEPTH: + case GL_MAX_NAME_STACK_DEPTH: + case GL_MAX_PIXEL_MAP_TABLE: + case GL_MAX_PROJECTION_STACK_DEPTH: + case GL_MAX_TEXTURE_SIZE: + case GL_MAX_TEXTURE_STACK_DEPTH: + case GL_MAX_TEXTURE_UNITS_ARB: + case GL_MINMAX: + case GL_MODELVIEW_STACK_DEPTH: + case GL_NAME_STACK_DEPTH: + case GL_NORMAL_ARRAY: + case GL_NORMAL_ARRAY_STRIDE: + case GL_NORMAL_ARRAY_TYPE: + case GL_NORMALIZE: + case GL_PACK_ALIGNMENT: + case GL_PACK_IMAGE_HEIGHT: + case GL_PACK_LSB_FIRST: + case GL_PACK_ROW_LENGTH: + case GL_PACK_SKIP_IMAGES: + case GL_PACK_SKIP_PIXELS: + case GL_PACK_SKIP_ROWS: + case GL_PACK_SWAP_BYTES: + case GL_PERSPECTIVE_CORRECTION_HINT: + case GL_PIXEL_MAP_A_TO_A_SIZE: + case GL_PIXEL_MAP_B_TO_B_SIZE: + case GL_PIXEL_MAP_G_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_A_SIZE: + case GL_PIXEL_MAP_I_TO_B_SIZE: + case GL_PIXEL_MAP_I_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_I_SIZE: + case GL_PIXEL_MAP_I_TO_R_SIZE: + case GL_PIXEL_MAP_R_TO_R_SIZE: + case GL_PIXEL_MAP_S_TO_S_SIZE: + case GL_POINT_SIZE: + case GL_POINT_SMOOTH: + case GL_POINT_SMOOTH_HINT: + case GL_POLYGON_OFFSET_FACTOR: + case GL_POLYGON_OFFSET_UNITS: + case GL_POLYGON_OFFSET_FILL: + case GL_POLYGON_OFFSET_LINE: + case GL_POLYGON_OFFSET_POINT: + case GL_POLYGON_SMOOTH: + case GL_POLYGON_SMOOTH_HINT: + case GL_POLYGON_STIPPLE: + case GL_POST_COLOR_MATRIX_COLOR_TABLE: + case GL_POST_COLOR_MATRIX_RED_BIAS: + case GL_POST_COLOR_MATRIX_GREEN_BIAS: + case GL_POST_COLOR_MATRIX_BLUE_BIAS: + case GL_POST_COLOR_MATRIX_ALPHA_BIAS: + case GL_POST_COLOR_MATRIX_RED_SCALE: + case GL_POST_COLOR_MATRIX_GREEN_SCALE: + case GL_POST_COLOR_MATRIX_BLUE_SCALE: + case GL_POST_COLOR_MATRIX_ALPHA_SCALE: + case GL_POST_CONVOLUTION_COLOR_TABLE: + case GL_POST_CONVOLUTION_RED_BIAS: + case GL_POST_CONVOLUTION_GREEN_BIAS: + case GL_POST_CONVOLUTION_BLUE_BIAS: + case GL_POST_CONVOLUTION_ALPHA_BIAS: + case GL_POST_CONVOLUTION_RED_SCALE: + case GL_POST_CONVOLUTION_GREEN_SCALE: + case GL_POST_CONVOLUTION_BLUE_SCALE: + case GL_POST_CONVOLUTION_ALPHA_SCALE: + case GL_PROJECTION_STACK_DEPTH: + case GL_READ_BUFFER: + case GL_RED_BIAS: + case GL_RED_BITS: + case GL_RED_SCALE: + case GL_RENDER_MODE: + case GL_RESCALE_NORMAL: + case GL_RGBA_MODE: + case GL_SCISSOR_TEST: + case GL_SELECTION_BUFFER_SIZE: + case GL_SEPARABLE_2D: + case GL_SHADE_MODEL: + case GL_SMOOTH_LINE_WIDTH_GRANULARITY: + case GL_SMOOTH_POINT_SIZE_GRANULARITY: + case GL_STENCIL_BITS: + case GL_STENCIL_CLEAR_VALUE: + case GL_STENCIL_FAIL: + case GL_STENCIL_FUNC: + case GL_STENCIL_PASS_DEPTH_FAIL: + case GL_STENCIL_PASS_DEPTH_PASS: + case GL_STENCIL_REF: + case GL_STENCIL_TEST: + case GL_STENCIL_VALUE_MASK: + case GL_STENCIL_WRITEMASK: + case GL_STEREO: + case GL_SUBPIXEL_BITS: + case GL_TEXTURE_1D: + case GL_TEXTURE_BINDING_1D: + case GL_TEXTURE_2D: + case GL_TEXTURE_BINDING_2D: + case GL_TEXTURE_3D: + case GL_TEXTURE_BINDING_3D: + case GL_TEXTURE_COORD_ARRAY: + case GL_TEXTURE_COORD_ARRAY_SIZE: + case GL_TEXTURE_COORD_ARRAY_STRIDE: + case GL_TEXTURE_COORD_ARRAY_TYPE: + case GL_TEXTURE_GEN_Q: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_S: + case GL_TEXTURE_GEN_T: + case GL_TEXTURE_STACK_DEPTH: + case GL_UNPACK_ALIGNMENT: + case GL_UNPACK_IMAGE_HEIGHT: + case GL_UNPACK_LSB_FIRST: + case GL_UNPACK_ROW_LENGTH: + case GL_UNPACK_SKIP_IMAGES: + case GL_UNPACK_SKIP_PIXELS: + case GL_UNPACK_SKIP_ROWS: + case GL_UNPACK_SWAP_BYTES: + case GL_VERTEX_ARRAY: + case GL_VERTEX_ARRAY_SIZE: + case GL_VERTEX_ARRAY_STRIDE: + case GL_VERTEX_ARRAY_TYPE: + case GL_ZOOM_X: + case GL_ZOOM_Y: + memset( params, 0, typesize ); + break; + + default: + /* Bad enum. What should we do? */ + break; + } +} + + +void trPrintColorTableData( GLenum pname, GLenum type, GLvoid * params ) { + if( !(trCtx()->doExec) ) { + switch( pname ) { + case GL_COLOR_TABLE_SCALE: + case GL_COLOR_TABLE_BIAS: + if( type == GL_FLOAT ) { + memset( params, 0, 4 * sizeof(GLfloat) ); + } else { + memset( params, 0, 4 * sizeof(GLint) ); + } + break; + + case GL_COLOR_TABLE_FORMAT: + case GL_COLOR_TABLE_WIDTH: + case GL_COLOR_TABLE_RED_SIZE: + case GL_COLOR_TABLE_GREEN_SIZE: + case GL_COLOR_TABLE_BLUE_SIZE: + case GL_COLOR_TABLE_ALPHA_SIZE: + case GL_COLOR_TABLE_LUMINANCE_SIZE: + case GL_COLOR_TABLE_INTENSITY_SIZE: + if( type == GL_FLOAT ) { + ((GLfloat *)params)[0] = 0.0; + } else { + ((GLint *)params)[0] = 0; + } + break; + + default: + /* The 2nd pass should catch this */ + break; + } + } + + switch( pname ) { + case GL_COLOR_TABLE_SCALE: + case GL_COLOR_TABLE_BIAS: + if( type == GL_FLOAT ) { + trWriteArrayf( 4, (GLfloat *)params ); + } else { + trWriteArrayi( 4, (GLint *)params ); + } + break; + + case GL_COLOR_TABLE_FORMAT: + case GL_COLOR_TABLE_WIDTH: + case GL_COLOR_TABLE_RED_SIZE: + case GL_COLOR_TABLE_GREEN_SIZE: + case GL_COLOR_TABLE_BLUE_SIZE: + case GL_COLOR_TABLE_ALPHA_SIZE: + case GL_COLOR_TABLE_LUMINANCE_SIZE: + case GL_COLOR_TABLE_INTENSITY_SIZE: + if( type == GL_FLOAT ) { + trWritef( ((GLfloat *)params)[0] ); + } else { + trWritei( ((GLint *)params)[0] ); + } + break; + + default: + /* The 2nd pass should catch this */ + break; + } +} + + +void trWriteTypeArray( GLenum type, GLsizei width, GLsizei pixelsize, GLint start, const GLvoid * ptr ) { + + switch( type ) { + case GL_BYTE: + { + GLbyte * p = (GLbyte *)ptr + start * pixelsize; + trWriteArrayb( width * pixelsize, p ); + } + break; + + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_BYTE_3_3_2: + case GL_UNSIGNED_BYTE_2_3_3_REV: + { + GLubyte * p = (GLubyte *)ptr + start * pixelsize; + trWriteArrayub( width * pixelsize, p ); + } + break; + + case GL_SHORT: + { + GLshort * p = (GLshort *)ptr + start * pixelsize; + trWriteArrays( width * pixelsize, p ); + } + break; + + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_SHORT_5_6_5: + case GL_UNSIGNED_SHORT_5_6_5_REV: + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + { + GLushort * p = (GLushort *)ptr + start * pixelsize; + trWriteArrayus( width * pixelsize, p ); + } + break; + + case GL_INT: + { + GLint * p = (GLint *)ptr + start * pixelsize; + trWriteArrayi( width * pixelsize, p ); + } + break; + + case GL_UNSIGNED_INT: + case GL_UNSIGNED_INT_8_8_8_8: + case GL_UNSIGNED_INT_8_8_8_8_REV: + case GL_UNSIGNED_INT_10_10_10_2: + case GL_UNSIGNED_INT_2_10_10_10_REV: + { + GLuint * p = (GLuint *)ptr + start * pixelsize; + trWriteArrayui( width * pixelsize, p ); + } + break; + + case GL_FLOAT: + { + GLfloat * p = (GLfloat *)ptr + start * pixelsize; + trWriteArrayf( width * pixelsize, p ); + } + break; + + default: + /* The 2nd pass should catch this. */ + break; + } +} + + +static GLint trGetFormatSize( GLenum format ) { + GLint pixelsize; + + switch( format ) { + case GL_RED: + case GL_GREEN: + case GL_BLUE: + case GL_ALPHA: + case GL_LUMINANCE: + case GL_INTENSITY: + case GL_COLOR_INDEX: + case GL_STENCIL_INDEX: + case GL_DEPTH_COMPONENT: + pixelsize = 1; + break; + case GL_LUMINANCE_ALPHA: + pixelsize = 2; + break; + case GL_RGB: + case GL_BGR: + pixelsize = 3; + break; + case GL_RGBA: + case GL_BGRA: + pixelsize = 4; + break; + default: + /* The 2nd pass should catch this. */ + pixelsize = 0; + break; + } + + return pixelsize; +} + + +GLint trGetPixelSize( GLenum format, GLenum type ) { + GLint retval; + GLint formatsize = trGetFormatSize( format ); + + switch( type ) { + case GL_BYTE: + case GL_UNSIGNED_BYTE: + retval = formatsize * sizeof(GLubyte); + break; + + case GL_UNSIGNED_BYTE_3_3_2: + case GL_UNSIGNED_BYTE_2_3_3_REV: + if( (type == GL_RGB) || (type == GL_BGR) ) { + retval = sizeof(GLubyte); + } else { + retval = -1; + } + break; + + case GL_SHORT: + case GL_UNSIGNED_SHORT: + retval = sizeof(GLushort); + break; + + case GL_UNSIGNED_SHORT_5_6_5: + case GL_UNSIGNED_SHORT_5_6_5_REV: + if( (type == GL_RGB) || (type == GL_BGR) ) { + retval = sizeof(GLushort); + } else { + retval = -1; + } + break; + + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + if( (type == GL_RGBA) || (type == GL_BGRA) ) { + retval = sizeof(GLushort); + } else { + retval = -1; + } + break; + + case GL_INT: + case GL_UNSIGNED_INT: + retval = sizeof(GLuint); + break; + + case GL_UNSIGNED_INT_8_8_8_8: + case GL_UNSIGNED_INT_8_8_8_8_REV: + case GL_UNSIGNED_INT_10_10_10_2: + case GL_UNSIGNED_INT_2_10_10_10_REV: + if( (type == GL_RGBA) || (type == GL_BGRA) ) { + retval = sizeof(GLuint); + } else { + retval = -1; + } + break; + + case GL_FLOAT: + retval = sizeof(GLfloat); + break; + + default: + retval = -1; + break; + } + + return retval; +} + + +#else +extern void tr_support_dummy_func(void); +void tr_support_dummy_func(void) +{ +} +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_support.h b/xc/extras/Mesa/src/Trace/tr_support.h new file mode 100644 index 000000000..8e6807d5f --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_support.h @@ -0,0 +1,16 @@ +#ifndef TR_SUPPORT_H +#define TR_SUPPORT_H + + +extern void trQueryConvolutionState( void ); + +extern void trZeroGetterData( GLenum pname, GLsizei typesize, GLvoid * params ); + +extern void trPrintColorTableData( GLenum pname, GLenum type, GLvoid * params ); + +extern void trWriteTypeArray( GLenum type, GLsizei width, GLsizei pixelsize, GLint start, const GLvoid * ptr ); + +extern GLint trGetPixelSize( GLenum format, GLenum type ); + + +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_wrapper.c b/xc/extras/Mesa/src/Trace/tr_wrapper.c new file mode 100644 index 000000000..85758a374 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_wrapper.c @@ -0,0 +1,9311 @@ +#ifdef MESA_TRACE + +#include "glheader.h" +#include "glapitable.h" +#include "tr_write.h" +#include "tr_error.h" +#include "tr_context.h" +#include "tr_commands.h" +#include "tr_support.h" +#include "tr_wrapper.h" + + +#ifdef GLAPI +#undef GLAPI +#endif +#define GLAPI static + +#ifdef GLAPIENTRY +#undef GLAPIENTRY +#endif +#define GLAPIENTRY + + +GLAPI void GLAPIENTRY trAccum( GLenum op, GLfloat value ) { + trWriteCMD( CMD_ACCUM ); + trWriteEnum( op ); + trWritef( value ); + + if( trCtx()->doExec ) { + trGetDispatch()->Accum( op, value ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trActiveTextureARB( GLenum texture) { + trWriteCMD( CMD_ACTIVETEXTUREARB ); + trWriteEnum( texture ); + + if( trCtx()->doExec ) { + trGetDispatch()->ActiveTextureARB( texture ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trAlphaFunc( GLenum func, GLclampf ref ) { + trWriteCMD( CMD_ALPHAFUNC ); + trWriteEnum( func ); + trWriteClampf( ref ); + + if( trCtx()->doExec ) { + trGetDispatch()->AlphaFunc( func, ref ); + trError(); + } +} + + +GLAPI GLboolean GLAPIENTRY trAreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences ) { + GLboolean retval; + + trWriteCMD( CMD_ARETEXTURESRESIDENT ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + trWriteArrayui( n, textures ); + trWritePointer( (void *)residences ); + trFileFlush(); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->AreTexturesResident( n, textures, residences ); + trError(); + } else { + memset( residences, 0, n * sizeof(GLboolean) ); + retval = GL_NO_ERROR; + } + + trWriteBool( retval ); + trWriteArrayBool( n, residences ); + + return retval; +} + + +GLAPI GLboolean GLAPIENTRY trAreTexturesResidentEXT( GLsizei n, const GLuint *textures, GLboolean *residences ) { + GLboolean retval; + + trWriteCMD( CMD_ARETEXTURESRESIDENTEXT ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + trWriteArrayui( n, textures ); + trWritePointer( (void *)residences ); + trFileFlush(); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->AreTexturesResidentEXT( n, textures, residences ); + trError(); + } else { + memset( residences, 0, n * sizeof(GLboolean) ); + retval = GL_NO_ERROR; + } + + trWriteBool( retval ); + trWriteArrayBool( n, residences ); + + return retval; +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trArrayElementEXT( GLint i ) { + trWriteCMD( CMD_ARRAYELEMENTEXT ); + trWritei( i ); + + if( trCtx()->doExec ) { + trGetDispatch()->ArrayElementEXT( i ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trArrayElement( GLint i ) { + trace_context_t * tctx; + + trWriteCMD( CMD_ARRAYELEMENT ); + trWritei( i ); + + tctx = trCtx(); + + if( tctx->doExec ) { + trGetDispatch()->ArrayElement( i ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trBegin( GLenum mode ) { + trWriteCMD( CMD_BEGIN ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->Begin( mode ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trBindTextureEXT( GLenum target, GLuint texture ) { + trWriteCMD( CMD_BINDTEXTUREEXT ); + trWriteEnum( target ); + trWriteui( texture ); + + if( trCtx()->doExec ) { + trGetDispatch()->BindTextureEXT( target, texture ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trBindTexture( GLenum target, GLuint texture ) { + trWriteCMD( CMD_BINDTEXTURE ); + trWriteEnum( target ); + trWriteui( texture ); + + if( trCtx()->doExec ) { + trGetDispatch()->BindTexture( target, texture ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap ) { + trWriteCMD( CMD_BITMAP ); + trWriteSizei( width ); + trWriteSizei( height ); + trWritef( xorig ); + trWritef( yorig ); + trWritef( xmove ); + trWritef( ymove ); + trWritePointer( (void *)bitmap ); + trFileFlush(); + trWriteArrayub( width * height / 8, bitmap ); + + if( trCtx()->doExec ) { + trGetDispatch()->Bitmap( width, height, xorig, yorig, xmove, ymove, bitmap ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trBlendColorEXT( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) { + trWriteCMD( CMD_BLENDCOLOREXT ); + trWriteClampf( red ); + trWriteClampf( green ); + trWriteClampf( blue ); + trWriteClampf( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->BlendColorEXT( red, green, blue, alpha ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trBlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) { + trWriteCMD( CMD_BLENDCOLOR ); + trWriteClampf( red ); + trWriteClampf( green ); + trWriteClampf( blue ); + trWriteClampf( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->BlendColor( red, green, blue, alpha ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trBlendEquationEXT( GLenum mode ) { + trWriteCMD( CMD_BLENDEQUATIONEXT ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->BlendEquationEXT( mode ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trBlendEquation( GLenum mode ) { + trWriteCMD( CMD_BLENDEQUATION ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->BlendEquation( mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trBlendFunc( GLenum sfactor, GLenum dfactor ) { + trWriteCMD( CMD_BLENDFUNC ); + trWriteEnum( sfactor ); + trWriteEnum( dfactor ); + + if( trCtx()->doExec ) { + trGetDispatch()->BlendFunc( sfactor, dfactor ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCallList( GLuint list ) { + trWriteCMD( CMD_CALLLIST ); + trWriteui( list ); + + if( trCtx()->doExec ) { + trSetOriginalDispatch(); + trGetDispatch()->CallList( list ); + trSetTraceDispatch(); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCallLists( GLsizei n, GLenum type, const GLvoid *lists ) { + trWriteCMD( CMD_CALLLISTS ); + trWriteSizei( n ); + trWriteEnum( type ); + trWritePointer( (void *)lists ); + trFileFlush(); + + switch( type ) { + case GL_2_BYTES: + trWriteTypeArray( GL_UNSIGNED_BYTE, n, 2, 0, lists ); + break; + case GL_3_BYTES: + trWriteTypeArray( GL_UNSIGNED_BYTE, n, 3, 0, lists ); + break; + case GL_4_BYTES: + trWriteTypeArray( GL_UNSIGNED_BYTE, n, 4, 0, lists ); + break; + default: + trWriteTypeArray( type, n, 1, 0, lists ); + break; + } + + if( trCtx()->doExec ) { + trSetOriginalDispatch(); + trGetDispatch()->CallLists( n, type, lists ); + trSetTraceDispatch(); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) { + trWriteCMD( CMD_CLEARACCUM ); + trWritef( red ); + trWritef( green ); + trWritef( blue ); + trWritef( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->ClearAccum( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) { + trWriteCMD( CMD_CLEARCOLOR ); + trWriteClampf( red ); + trWriteClampf( green ); + trWriteClampf( blue ); + trWriteClampf( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->ClearColor( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClearDepth( GLclampd depth ) { + trWriteCMD( CMD_CLEARDEPTH ); + trWriteClampd( depth ); + + if( trCtx()->doExec ) { + trGetDispatch()->ClearDepth( depth ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClear( GLbitfield mask ) { + trWriteCMD( CMD_CLEAR ); + trWriteBits( mask ); + + if( trCtx()->doExec ) { + trGetDispatch()->Clear( mask ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClearIndex( GLfloat c ) { + trWriteCMD( CMD_CLEARINDEX ); + trWritef( c ); + + if( trCtx()->doExec ) { + trGetDispatch()->ClearIndex( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClearStencil( GLint s ) { + trWriteCMD( CMD_CLEARSTENCIL ); + trWritei( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->ClearStencil( s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClientActiveTextureARB( GLenum texture) { + trWriteCMD( CMD_CLIENTACTIVETEXTUREARB ); + trWriteEnum( texture ); + + if( trCtx()->doExec ) { + trGetDispatch()->ClientActiveTextureARB( texture ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trClipPlane( GLenum plane, const GLdouble *equation ) { + trWriteCMD( CMD_CLIPPLANE ); + trWriteEnum( plane ); + trWritePointer( (void *)equation ); + trFileFlush(); + trWriteArrayd( 4, equation ); + + if( trCtx()->doExec ) { + trGetDispatch()->ClipPlane( plane, equation ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3b( GLbyte red, GLbyte green, GLbyte blue ) { + trWriteCMD( CMD_COLOR3B ); + trWriteb( red ); + trWriteb( green ); + trWriteb( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3b( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3bv( const GLbyte *v ) { + trWriteCMD( CMD_COLOR3BV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayb( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3bv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3d( GLdouble red, GLdouble green, GLdouble blue ) { + trWriteCMD( CMD_COLOR3D ); + trWrited( red ); + trWrited( green ); + trWrited( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3d( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3dv( const GLdouble *v ) { + trWriteCMD( CMD_COLOR3DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3f( GLfloat red, GLfloat green, GLfloat blue ) { + trWriteCMD( CMD_COLOR3F ); + trWritef( red ); + trWritef( green ); + trWritef( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3f( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3fv( const GLfloat *v ) { + trWriteCMD( CMD_COLOR3FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3i( GLint red, GLint green, GLint blue ) { + trWriteCMD( CMD_COLOR3I ); + trWritei( red ); + trWritei( green ); + trWritei( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3i( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3iv( const GLint *v ) { + trWriteCMD( CMD_COLOR3IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3s( GLshort red, GLshort green, GLshort blue ) { + trWriteCMD( CMD_COLOR3S ); + trWrites( red ); + trWrites( green ); + trWrites( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3s( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3sv( const GLshort *v ) { + trWriteCMD( CMD_COLOR3SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3ub( GLubyte red, GLubyte green, GLubyte blue ) { + trWriteCMD( CMD_COLOR3UB ); + trWriteub( red ); + trWriteub( green ); + trWriteub( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3ub( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3ubv( const GLubyte *v ) { + trWriteCMD( CMD_COLOR3UBV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayub( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3ubv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3ui( GLuint red, GLuint green, GLuint blue ) { + trWriteCMD( CMD_COLOR3UI ); + trWriteui( red ); + trWriteui( green ); + trWriteui( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3ui( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3uiv( const GLuint *v ) { + trWriteCMD( CMD_COLOR3UIV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayui( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3uiv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3us( GLushort red, GLushort green, GLushort blue ) { + trWriteCMD( CMD_COLOR3US ); + trWriteus( red ); + trWriteus( green ); + trWriteus( blue ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3us( red, green, blue ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor3usv( const GLushort *v ) { + trWriteCMD( CMD_COLOR3USV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayus( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color3usv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ) { + trWriteCMD( CMD_COLOR4B ); + trWriteb( red ); + trWriteb( green ); + trWriteb( blue ); + trWriteb( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4b( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4bv( const GLbyte *v ) { + trWriteCMD( CMD_COLOR4BV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayb( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4bv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha ) { + trWriteCMD( CMD_COLOR4D ); + trWrited( red ); + trWrited( green ); + trWrited( blue ); + trWrited( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4d( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4dv( const GLdouble *v ) { + trWriteCMD( CMD_COLOR4DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) { + trWriteCMD( CMD_COLOR4F ); + trWritef( red ); + trWritef( green ); + trWritef( blue ); + trWritef( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4f( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4fv( const GLfloat *v ) { + trWriteCMD( CMD_COLOR4FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4i( GLint red, GLint green, GLint blue, GLint alpha ) { + trWriteCMD( CMD_COLOR4I ); + trWritei( red ); + trWritei( green ); + trWritei( blue ); + trWritei( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4i( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4iv( const GLint *v ) { + trWriteCMD( CMD_COLOR4IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4s( GLshort red, GLshort green, GLshort blue, GLshort alpha ) { + trWriteCMD( CMD_COLOR4S ); + trWrites( red ); + trWrites( green ); + trWrites( blue ); + trWrites( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4s( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4sv( const GLshort *v ) { + trWriteCMD( CMD_COLOR4SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) { + trWriteCMD( CMD_COLOR4UB ); + trWriteub( red ); + trWriteub( green ); + trWriteub( blue ); + trWriteub( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4ub( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4ubv( const GLubyte *v ) { + trWriteCMD( CMD_COLOR4UBV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayub( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4ubv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha ) { + trWriteCMD( CMD_COLOR4UI ); + trWriteui( red ); + trWriteui( green ); + trWriteui( blue ); + trWriteui( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4ui( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4uiv( const GLuint *v ) { + trWriteCMD( CMD_COLOR4UIV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayui( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4uiv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4us( GLushort red, GLushort green, GLushort blue, GLushort alpha ) { + trWriteCMD( CMD_COLOR4US ); + trWriteus( red ); + trWriteus( green ); + trWriteus( blue ); + trWriteus( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4us( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColor4usv( const GLushort *v ) { + trWriteCMD( CMD_COLOR4USV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayus( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Color4usv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) { + trWriteCMD( CMD_COLORMASK ); + trWriteBool( red ); + trWriteBool( green ); + trWriteBool( blue ); + trWriteBool( alpha ); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorMask( red, green, blue, alpha ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColorMaterial( GLenum face, GLenum mode ) { + trWriteCMD( CMD_COLORMATERIAL ); + trWriteEnum( face ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorMaterial( face, mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColorPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */ + trWriteCMD( CMD_COLORPOINTEREXT ); + trWritei( size ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWriteSizei( count ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorPointerEXT( size, type, stride, count, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { + trace_context_t * tctx; + + trWriteCMD( CMD_COLORPOINTER ); + trWritei( size ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( tctx->doExec ) { + trGetDispatch()->ColorPointer( size, type, stride, ptr ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trColorSubTableEXT( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) { + GLint pixelsize; + + trWriteCMD( CMD_COLORSUBTABLEEXT ); + trWriteEnum( target ); + trWriteSizei( start ); + trWriteSizei( count ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)data ); + trFileFlush(); + + pixelsize = trGetPixelSize( format, type ); + trWriteTypeArray( type, count, pixelsize, start, data ); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorSubTableEXT( target, start, count, format, type, data ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) { + GLint pixelsize; + + trWriteCMD( CMD_COLORSUBTABLE ); + trWriteEnum( target ); + trWriteSizei( start ); + trWriteSizei( count ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)data ); + trFileFlush(); + + pixelsize = trGetPixelSize( format, type ); + trWriteTypeArray( type, count, pixelsize, start, data ); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorSubTable( target, start, count, format, type, data ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trColorTableEXT( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) { + GLint pixelsize; + + trWriteCMD( CMD_COLORTABLEEXT ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWriteSizei( width ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)table ); + trFileFlush(); + + pixelsize = trGetPixelSize( format, type ); + trWriteTypeArray( type, width, pixelsize, 0, table ); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorTableEXT( target, internalformat, width, format, type, table ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_COLORTABLE ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWriteSizei( width ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)table ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorTable( target, internalformat, width, format, type, table ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColorTableParameterfv( GLenum target, GLenum pname, const GLfloat *params) { + trWriteCMD( CMD_COLORTABLEPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + trWriteArrayf( 4, params ); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorTableParameterfv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trColorTableParameteriv( GLenum target, GLenum pname, const GLint *params) { + trWriteCMD( CMD_COLORTABLEPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + trWriteArrayi( 4, params ); + + if( trCtx()->doExec ) { + trGetDispatch()->ColorTableParameteriv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trConvolutionFilter1D( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image ) { + GLint pixelsize; + + trWriteCMD( CMD_CONVOLUTIONFILTER1D ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWriteSizei( width ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)image ); + trFileFlush(); + + pixelsize = trGetPixelSize( format, type ); + trWriteTypeArray( type, width, pixelsize, 0, image ); + + if( trCtx()->doExec ) { + trGetDispatch()->ConvolutionFilter1D( target, internalformat, width, format, type, image ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trConvolutionFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image ) { + GLint i; + GLint pixelsize; + + trWriteCMD( CMD_CONVOLUTIONFILTER2D ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)image ); + trFileFlush(); + + /* p76 of GL spec says this isn't subject to unpack_row_width... */ + pixelsize = trGetPixelSize( format, type ); + for( i = 0; i < height; i++ ) { + trWriteTypeArray( type, width, pixelsize, i * width, image ); + } + + if( trCtx()->doExec ) { + trGetDispatch()->ConvolutionFilter2D( target, internalformat, width, height, format, type, image ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trConvolutionParameterf( GLenum target, GLenum pname, GLfloat params ) { + trWriteCMD( CMD_CONVOLUTIONPARAMETERF ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritef( params ); + + if( trCtx()->doExec ) { + trGetDispatch()->ConvolutionParameterf( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trConvolutionParameterfv( GLenum target, GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_CONVOLUTIONPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_CONVOLUTION_BORDER_MODE: + trWritef( params[0] ); + break; + case GL_CONVOLUTION_BORDER_COLOR: + trWriteArrayf( 4, params ); + break; + default: + /* The 2nd pass should catch this */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->ConvolutionParameterfv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trConvolutionParameteri( GLenum target, GLenum pname, GLint params ) { + trWriteCMD( CMD_CONVOLUTIONPARAMETERI ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritei( params ); + + if( trCtx()->doExec ) { + trGetDispatch()->ConvolutionParameteri( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trConvolutionParameteriv( GLenum target, GLenum pname, const GLint *params ) { + trWriteCMD( CMD_CONVOLUTIONPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_CONVOLUTION_BORDER_MODE: + trWritei( params[0] ); + break; + case GL_CONVOLUTION_BORDER_COLOR: + trWriteArrayi( 4, params ); + break; + default: + /* The 2nd pass should catch this */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->ConvolutionParameteriv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyColorSubTable( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width ) { + trWriteCMD( CMD_COPYCOLORSUBTABLE ); + trWriteEnum( target ); + trWriteSizei( start ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyColorSubTable( target, start, x, y, width ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyColorTable( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) { + trWriteCMD( CMD_COPYCOLORTABLE ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyColorTable( target, internalformat, x, y, width ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyConvolutionFilter1D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) { + trWriteCMD( CMD_COPYCONVOLUTIONFILTER1D ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyConvolutionFilter1D( target, internalformat, x, y, width ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyConvolutionFilter2D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { + trWriteCMD( CMD_COPYCONVOLUTIONFILTER2D ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyConvolutionFilter2D( target, internalformat, x, y, width, height ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type ) { + trWriteCMD( CMD_COPYPIXELS ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteEnum( type ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyPixels( x, y, width, height, type ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ) { + trWriteCMD( CMD_COPYTEXIMAGE1D ); + trWriteEnum( target ); + trWritei( level ); + trWriteEnum( internalformat ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWritei( border ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyTexImage1D( target, level, internalformat, x, y, width, border ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) { + trWriteCMD( CMD_COPYTEXIMAGE2D ); + trWriteEnum( target ); + trWritei( level ); + trWriteEnum( internalformat ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + trWritei( border ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyTexImage2D( target, level, internalformat, x, y, width, height, border ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) { + trWriteCMD( CMD_COPYTEXSUBIMAGE1D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyTexSubImage1D( target, level, xoffset, x, y, width ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) { + trWriteCMD( CMD_COPYTEXSUBIMAGE2D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWritei( yoffset ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyTexSubImage2D( target, level, xoffset, yoffset, x, y, width, height ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trCopyTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) { + trWriteCMD( CMD_COPYTEXSUBIMAGE3DEXT ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWritei( yoffset ); + trWritei( zoffset ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyTexSubImage3DEXT( target, level, xoffset, yoffset, zoffset, x, y, width, height ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) { + trWriteCMD( CMD_COPYTEXSUBIMAGE3D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWritei( yoffset ); + trWritei( zoffset ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + + if( trCtx()->doExec ) { + trGetDispatch()->CopyTexSubImage3D( target, level, xoffset, yoffset, zoffset, x, y, width, height ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trCullFace( GLenum mode ) { + trWriteCMD( CMD_CULLFACE ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->CullFace( mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDeleteLists( GLuint list, GLsizei range ) { + trWriteCMD( CMD_DELETELISTS ); + trWriteui( list ); + trWriteSizei( range ); + + if( trCtx()->doExec ) { + trGetDispatch()->DeleteLists( list, range ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trDeleteTexturesEXT( GLsizei n, const GLuint *textures) { + trWriteCMD( CMD_DELETETEXTURESEXT ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + trWriteArrayui( n, textures ); + + if( trCtx()->doExec ) { + trGetDispatch()->DeleteTexturesEXT( n, textures ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trDeleteTextures( GLsizei n, const GLuint *textures) { + trWriteCMD( CMD_DELETETEXTURES ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + trWriteArrayui( n, textures ); + + if( trCtx()->doExec ) { + trGetDispatch()->DeleteTextures( n, textures ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDepthFunc( GLenum func ) { + trWriteCMD( CMD_DEPTHFUNC ); + trWriteEnum( func ); + + if( trCtx()->doExec ) { + trGetDispatch()->DepthFunc( func ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDepthMask( GLboolean flag ) { + trWriteCMD( CMD_DEPTHMASK ); + trWriteBool( flag ); + + if( trCtx()->doExec ) { + trGetDispatch()->DepthMask( flag ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDepthRange( GLclampd near_val, GLclampd far_val ) { + trWriteCMD( CMD_DEPTHRANGE ); + trWriteClampd( near_val ); + trWriteClampd( far_val ); + + if( trCtx()->doExec ) { + trGetDispatch()->DepthRange( near_val, far_val ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDisableClientState( GLenum cap ) { + trace_context_t * tctx; + + trWriteCMD( CMD_DISABLECLIENTSTATE ); + trWriteEnum( cap ); + + tctx = trCtx(); + + if( tctx->doExec ) { + trGetDispatch()->DisableClientState( cap ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDisable( GLenum cap ) { + trWriteCMD( CMD_DISABLE ); + trWriteEnum( cap ); + + if( trCtx()->doExec ) { + trGetDispatch()->Disable( cap ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trDrawArraysEXT( GLenum mode, GLint first, GLsizei count ) { + trWriteCMD( CMD_DRAWARRAYSEXT ); + trWriteEnum( mode ); + trWritei( first ); + trWriteSizei( count ); + + if( trCtx()->doExec ) { + trGetDispatch()->DrawArraysEXT( mode, first, count ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trDrawArrays( GLenum mode, GLint first, GLsizei count ) { + + trWriteCMD( CMD_DRAWARRAYS ); + trWriteEnum( mode ); + trWritei( first ); + trWriteSizei( count ); + + if( trCtx()->doExec ) { + trGetDispatch()->DrawArrays( mode, first, count ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDrawBuffer( GLenum mode ) { + trWriteCMD( CMD_DRAWBUFFER ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->DrawBuffer( mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) { + trace_context_t * tctx; + + trWriteCMD( CMD_DRAWELEMENTS ); + trWriteEnum( mode ); + trWriteSizei( count ); + trWriteEnum( type ); + trWritePointer( (void *)indices ); + trFileFlush(); + /* Why isn't the indices a GLint * ? */ + trWriteArrayi( count, (GLint *)indices ); + + tctx = trCtx(); + + if( tctx->doExec ) { + trGetDispatch()->DrawElements( mode, count, type, indices ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_DRAWPIXELS ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->DrawPixels( width, height, format, type, pixels ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trDrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) { + trace_context_t * tctx; + + trWriteCMD( CMD_DRAWRANGEELEMENTS ); + trWriteEnum( mode ); + trWriteui( start ); + trWriteui( end ); + trWriteSizei( count ); + trWriteEnum( type ); + trWritePointer( (void *)indices ); + trFileFlush(); + switch( type ) { + case GL_UNSIGNED_BYTE: + trWriteArrayub( count, (GLubyte *)indices ); + break; + case GL_UNSIGNED_SHORT: + trWriteArrayus( count, (GLushort *)indices ); + break; + case GL_UNSIGNED_INT: + trWriteArrayui( count, (GLuint *)indices ); + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + tctx = trCtx(); + + if( trCtx()->doExec ) { + trGetDispatch()->DrawRangeElements( mode, start, end, count, type, indices ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEdgeFlag( GLboolean flag ) { + trWriteCMD( CMD_EDGEFLAG ); + trWriteBool( flag ); + + if( trCtx()->doExec ) { + trGetDispatch()->EdgeFlag( flag ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEdgeFlagPointerEXT( GLsizei stride, GLsizei count, const GLboolean *ptr ) { /* TODO */ + trWriteCMD( CMD_EDGEFLAGPOINTEREXT ); + trWriteSizei( stride ); + trWriteSizei( count ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->EdgeFlagPointerEXT( stride, count, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ) { /* TODO */ + trace_context_t * tctx; + + trWriteCMD( CMD_EDGEFLAGPOINTER ); + trWriteSizei( stride ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + tctx = trCtx(); + + if( tctx->doExec ) { + trGetDispatch()->EdgeFlagPointer( stride, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEdgeFlagv( const GLboolean *flag ) { + trWriteCMD( CMD_EDGEFLAGV ); + trWritePointer( (void *)flag ); + trFileFlush(); + trWriteBool( flag[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->EdgeFlagv( flag ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEnableClientState( GLenum cap ) { + trace_context_t * tctx; + + trWriteCMD( CMD_ENABLECLIENTSTATE ); + trWriteEnum( cap ); + + tctx = trCtx(); + + if( tctx->doExec ) { + trGetDispatch()->EnableClientState( cap ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEnable( GLenum cap ) { + trWriteCMD( CMD_ENABLE ); + trWriteEnum( cap ); + + if( trCtx()->doExec ) { + trGetDispatch()->Enable( cap ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEndList( void ) { + trWriteCMD( CMD_ENDLIST ); + + if( trCtx()->doExec ) { + trGetDispatch()->EndList( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEnd( void ) { + trWriteCMD( CMD_END ); + + if( trCtx()->doExec ) { + trGetDispatch()->End( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord1d( GLdouble u ) { + trWriteCMD( CMD_EVALCOORD1D ); + trWrited( u ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord1d( u ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord1dv( const GLdouble *u ) { + trWriteCMD( CMD_EVALCOORD1DV ); + trWritePointer( (void *)u ); + trFileFlush(); + trWrited( u[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord1dv( u ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord1f( GLfloat u ) { + trWriteCMD( CMD_EVALCOORD1F ); + trWritef( u ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord1f( u ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord1fv( const GLfloat *u ) { + trWriteCMD( CMD_EVALCOORD1FV ); + trWritePointer( (void *)u ); + trFileFlush(); + trWritef( u[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord1fv( u ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord2d( GLdouble u, GLdouble v ) { + trWriteCMD( CMD_EVALCOORD2D ); + trWrited( u ); + trWrited( v ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord2d( u, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord2dv( const GLdouble *u ) { + trWriteCMD( CMD_EVALCOORD2DV ); + trWritePointer( (void *)u ); + trFileFlush(); + trWriteArrayd( 2, u ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord2dv( u ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord2f( GLfloat u, GLfloat v ) { + trWriteCMD( CMD_EVALCOORD2F ); + trWritef( u ); + trWritef( v ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord2f( u, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalCoord2fv( const GLfloat *u ) { + trWriteCMD( CMD_EVALCOORD2FV ); + trWritePointer( (void *)u ); + trFileFlush(); + trWriteArrayf( 2, u ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalCoord2fv( u ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalMesh1( GLenum mode, GLint i1, GLint i2 ) { + trWriteCMD( CMD_EVALMESH1 ); + trWriteEnum( mode ); + trWritei( i1 ); + trWritei( i2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalMesh1( mode, i1, i2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ) { + trWriteCMD( CMD_EVALMESH2 ); + trWriteEnum( mode ); + trWritei( i1 ); + trWritei( i2 ); + trWritei( j1 ); + trWritei( j2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalMesh2( mode, i1, i2, j1, j2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalPoint1( GLint i ) { + trWriteCMD( CMD_EVALPOINT1 ); + trWritei( i ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalPoint1( i ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trEvalPoint2( GLint i, GLint j ) { + trWriteCMD( CMD_EVALPOINT2 ); + trWritei( i ); + trWritei( j ); + + if( trCtx()->doExec ) { + trGetDispatch()->EvalPoint2( i, j ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ) { + trWriteCMD( CMD_FEEDBACKBUFFER ); + trWriteSizei( size ); + trWriteEnum( type ); + trWritePointer( (void *)buffer ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->FeedbackBuffer( size, type, buffer ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFinish( void ) { + trWriteCMD( CMD_FINISH ); + + if( trCtx()->doExec ) { + trGetDispatch()->Finish( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFlush( void ) { + trWriteCMD( CMD_FLUSH ); + + if( trCtx()->doExec ) { + trGetDispatch()->Flush( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFogf( GLenum pname, GLfloat param ) { + trWriteCMD( CMD_FOGF ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->Fogf( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFogfv( GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_FOGFV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_FOG_MODE: + case GL_FOG_DENSITY: + case GL_FOG_START: + case GL_FOG_END: + case GL_FOG_INDEX: + trWritef( params[0] ); + break; + + case GL_FOG_COLOR: + trWriteArrayf( 4, params ); + break; + + default: + /* The 2nd pass should catch this */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Fogfv( pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFogi( GLenum pname, GLint param ) { + trWriteCMD( CMD_FOGI ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->Fogi( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFogiv( GLenum pname, const GLint *params ) { + trWriteCMD( CMD_FOGIV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_FOG_MODE: + case GL_FOG_DENSITY: + case GL_FOG_START: + case GL_FOG_END: + case GL_FOG_INDEX: + trWritei( params[0] ); + break; + + case GL_FOG_COLOR: + trWriteArrayi( 4, params ); + break; + + default: + /* The 2nd pass should catch this */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Fogiv( pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFrontFace( GLenum mode ) { + trWriteCMD( CMD_FRONTFACE ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->FrontFace( mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) { + trWriteCMD( CMD_FRUSTUM ); + trWrited( left ); + trWrited( right ); + trWrited( bottom ); + trWrited( top ); + trWrited( near_val ); + trWrited( far_val ); + + if( trCtx()->doExec ) { + trGetDispatch()->Frustum( left, right, bottom, top, near_val, far_val ); + trError(); + } +} + + +GLAPI GLuint GLAPIENTRY trGenLists( GLsizei range ) { + GLuint retval; + + trWriteCMD( CMD_GENLISTS ); + trWriteSizei( range ); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->GenLists( range ); + trError(); + } else { + retval = 0; + } + + trWriteui( retval ); + return retval; +} + + +GLAPI void GLAPIENTRY trGenTexturesEXT( GLsizei n, GLuint *textures ) { + trWriteCMD( CMD_GENTEXTURESEXT ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GenTexturesEXT( n, textures ); + trError(); + } + + if( !(trCtx()->doExec) ) { + memset( textures, 0, n * sizeof(GLuint) ); + } + + trWriteArrayui( n, textures ); +} + + +GLAPI void GLAPIENTRY trGenTextures( GLsizei n, GLuint *textures ) { + trWriteCMD( CMD_GENTEXTURES ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GenTextures( n, textures ); + trError(); + } + + if( !(trCtx()->doExec) ) { + memset( textures, 0, n * sizeof(GLuint) ); + } + + trWriteArrayui( n, textures ); +} + + +GLAPI void GLAPIENTRY trGetBooleanv( GLenum pname, GLboolean *params ) { /* TODO */ + trWriteCMD( CMD_GETBOOLEANV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_COLOR_MATRIX: + case GL_MODELVIEW_MATRIX: + case GL_PROJECTION_MATRIX: + case GL_TEXTURE_MATRIX: + trWriteArrayBool( 16, params ); + break; + + case GL_ACCUM_CLEAR_VALUE: + case GL_BLEND_COLOR: + case GL_COLOR_CLEAR_VALUE: + case GL_COLOR_WRITEMASK: + case GL_CURRENT_COLOR: + case GL_CURRENT_RASTER_COLOR: + case GL_CURRENT_RASTER_POSITION: + case GL_CURRENT_RASTER_TEXTURE_COORDS: + case GL_CURRENT_TEXTURE_COORDS: + case GL_LIGHT_MODEL_AMBIENT: + case GL_MAP2_GRID_DOMAIN: + case GL_SCISSOR_BOX: + case GL_VIEWPORT: + trWriteArrayBool( 4, params ); + break; + + case GL_CURRENT_NORMAL: + trWriteArrayBool( 3, params ); + break; + + case GL_ALIASED_POINT_SIZE_RANGE: + case GL_ALIASED_LINE_WIDTH_RANGE: + case GL_DEPTH_RANGE: + case GL_MAP1_GRID_DOMAIN: + case GL_MAP2_GRID_SEGMENTS: + case GL_MAX_VIEWPORT_DIMS: + case GL_POLYGON_MODE: + case GL_SMOOTH_LINE_WIDTH_RANGE: + case GL_SMOOTH_POINT_SIZE_RANGE: + trWriteArrayBool( 2, params ); + break; + + case GL_ACCUM_ALPHA_BITS: + case GL_ACCUM_BLUE_BITS: + case GL_ACCUM_GREEN_BITS: + case GL_ACCUM_RED_BITS: + case GL_ACTIVE_TEXTURE_ARB: + case GL_ALPHA_BIAS: + case GL_ALPHA_BITS: + case GL_ALPHA_SCALE: + case GL_ALPHA_TEST: + case GL_ALPHA_TEST_FUNC: + case GL_ALPHA_TEST_REF: + case GL_ATTRIB_STACK_DEPTH: + case GL_AUTO_NORMAL: + case GL_AUX_BUFFERS: + case GL_BLEND: + case GL_BLEND_SRC: + case GL_BLUE_BIAS: + case GL_BLUE_BITS: + case GL_BLUE_SCALE: + case GL_CLIENT_ACTIVE_TEXTURE_ARB: + case GL_CLIENT_ATTRIB_STACK_DEPTH: + case GL_CLIP_PLANE0: + case GL_CLIP_PLANE1: + case GL_CLIP_PLANE2: + case GL_CLIP_PLANE3: + case GL_CLIP_PLANE4: + case GL_CLIP_PLANE5: + case GL_COLOR_ARRAY: + case GL_COLOR_ARRAY_SIZE: + case GL_COLOR_ARRAY_STRIDE: + case GL_COLOR_ARRAY_TYPE: + case GL_COLOR_LOGIC_OP: + case GL_COLOR_MATERIAL: + case GL_COLOR_MATERIAL_FACE: + case GL_COLOR_MATERIAL_PARAMETER: + case GL_COLOR_MATRIX_STACK_DEPTH: + case GL_COLOR_TABLE: + case GL_CONVOLUTION_1D: + case GL_CONVOLUTION_2D: + case GL_CULL_FACE: + case GL_CULL_FACE_MODE: + case GL_CURRENT_INDEX: + case GL_CURRENT_RASTER_DISTANCE: + case GL_CURRENT_RASTER_INDEX: + case GL_CURRENT_RASTER_POSITION_VALID: + case GL_DEPTH_BIAS: + case GL_DEPTH_CLEAR_VALUE: + case GL_DEPTH_FUNC: + case GL_DEPTH_SCALE: + case GL_DEPTH_TEST: + case GL_DEPTH_WRITEMASK: + case GL_DITHER: + case GL_DOUBLEBUFFER: + case GL_DRAW_BUFFER: + case GL_EDGE_FLAG: + case GL_EDGE_FLAG_ARRAY: + case GL_EDGE_FLAG_ARRAY_STRIDE: + case GL_FEEDBACK_BUFFER_SIZE: + case GL_FEEDBACK_BUFFER_TYPE: + case GL_FOG: + case GL_FOG_DENSITY: + case GL_FOG_END: + case GL_FOG_HINT: + case GL_FOG_INDEX: + case GL_FOG_MODE: + case GL_FOG_START: + case GL_FRONT_FACE: + case GL_GREEN_BIAS: + case GL_GREEN_BITS: + case GL_GREEN_SCALE: + case GL_HISTOGRAM: + case GL_INDEX_ARRAY: + case GL_INDEX_ARRAY_STRIDE: + case GL_INDEX_ARRAY_TYPE: + case GL_INDEX_BITS: + case GL_INDEX_CLEAR_VALUE: + case GL_INDEX_LOGIC_OP: + case GL_INDEX_MODE: + case GL_INDEX_OFFSET: + case GL_INDEX_SHIFT: + case GL_INDEX_WRITEMASK: + case GL_LIGHT0: + case GL_LIGHT1: + case GL_LIGHT2: + case GL_LIGHT3: + case GL_LIGHT4: + case GL_LIGHT5: + case GL_LIGHT6: + case GL_LIGHT7: + case GL_LIGHTING: + case GL_LIGHT_MODEL_COLOR_CONTROL: + case GL_LIGHT_MODEL_LOCAL_VIEWER: + case GL_LIGHT_MODEL_TWO_SIDE: + case GL_LINE_SMOOTH: + case GL_LINE_SMOOTH_HINT: + case GL_LINE_STIPPLE: + case GL_LINE_STIPPLE_PATTERN: + case GL_LINE_STIPPLE_REPEAT: + case GL_LINE_WIDTH: + case GL_LIST_BASE: + case GL_LIST_INDEX: + case GL_LIST_MODE: + case GL_LOGIC_OP_MODE: + case GL_MAP1_COLOR_4: + case GL_MAP1_GRID_SEGMENTS: + case GL_MAP1_INDEX: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_1: + case GL_MAP1_TEXTURE_COORD_2: + case GL_MAP1_TEXTURE_COORD_3: + case GL_MAP1_TEXTURE_COORD_4: + case GL_MAP1_VERTEX_3: + case GL_MAP1_VERTEX_4: + case GL_MAP2_COLOR_4: + case GL_MAP2_INDEX: + case GL_MAP2_NORMAL: + case GL_MAP2_TEXTURE_COORD_1: + case GL_MAP2_TEXTURE_COORD_2: + case GL_MAP2_TEXTURE_COORD_3: + case GL_MAP2_TEXTURE_COORD_4: + case GL_MAP2_VERTEX_3: + case GL_MAP2_VERTEX_4: + case GL_MAP_COLOR: + case GL_MAP_STENCIL: + case GL_MATRIX_MODE: + case GL_MAX_3D_TEXTURE_SIZE: + case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: + case GL_MAX_ATTRIB_STACK_DEPTH: + case GL_MAX_CLIP_PLANES: + case GL_MAX_COLOR_MATRIX_STACK_DEPTH: + case GL_MAX_ELEMENTS_VERTICES: + case GL_MAX_EVAL_ORDER: + case GL_MAX_LIGHTS: + case GL_MAX_LIST_NESTING: + case GL_MAX_MODELVIEW_STACK_DEPTH: + case GL_MAX_NAME_STACK_DEPTH: + case GL_MAX_PIXEL_MAP_TABLE: + case GL_MAX_PROJECTION_STACK_DEPTH: + case GL_MAX_TEXTURE_SIZE: + case GL_MAX_TEXTURE_STACK_DEPTH: + case GL_MAX_TEXTURE_UNITS_ARB: + case GL_MINMAX: + case GL_MODELVIEW_STACK_DEPTH: + case GL_NAME_STACK_DEPTH: + case GL_NORMAL_ARRAY: + case GL_NORMAL_ARRAY_STRIDE: + case GL_NORMAL_ARRAY_TYPE: + case GL_NORMALIZE: + case GL_PACK_ALIGNMENT: + case GL_PACK_IMAGE_HEIGHT: + case GL_PACK_LSB_FIRST: + case GL_PACK_ROW_LENGTH: + case GL_PACK_SKIP_IMAGES: + case GL_PACK_SKIP_PIXELS: + case GL_PACK_SKIP_ROWS: + case GL_PACK_SWAP_BYTES: + case GL_PERSPECTIVE_CORRECTION_HINT: + case GL_PIXEL_MAP_A_TO_A_SIZE: + case GL_PIXEL_MAP_B_TO_B_SIZE: + case GL_PIXEL_MAP_G_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_A_SIZE: + case GL_PIXEL_MAP_I_TO_B_SIZE: + case GL_PIXEL_MAP_I_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_I_SIZE: + case GL_PIXEL_MAP_I_TO_R_SIZE: + case GL_PIXEL_MAP_R_TO_R_SIZE: + case GL_PIXEL_MAP_S_TO_S_SIZE: + case GL_POINT_SIZE: + case GL_POINT_SMOOTH: + case GL_POINT_SMOOTH_HINT: + case GL_POLYGON_OFFSET_FACTOR: + case GL_POLYGON_OFFSET_UNITS: + case GL_POLYGON_OFFSET_FILL: + case GL_POLYGON_OFFSET_LINE: + case GL_POLYGON_OFFSET_POINT: + case GL_POLYGON_SMOOTH: + case GL_POLYGON_SMOOTH_HINT: + case GL_POLYGON_STIPPLE: + case GL_POST_COLOR_MATRIX_COLOR_TABLE: + case GL_POST_COLOR_MATRIX_RED_BIAS: + case GL_POST_COLOR_MATRIX_GREEN_BIAS: + case GL_POST_COLOR_MATRIX_BLUE_BIAS: + case GL_POST_COLOR_MATRIX_ALPHA_BIAS: + case GL_POST_COLOR_MATRIX_RED_SCALE: + case GL_POST_COLOR_MATRIX_GREEN_SCALE: + case GL_POST_COLOR_MATRIX_BLUE_SCALE: + case GL_POST_COLOR_MATRIX_ALPHA_SCALE: + case GL_POST_CONVOLUTION_COLOR_TABLE: + case GL_POST_CONVOLUTION_RED_BIAS: + case GL_POST_CONVOLUTION_GREEN_BIAS: + case GL_POST_CONVOLUTION_BLUE_BIAS: + case GL_POST_CONVOLUTION_ALPHA_BIAS: + case GL_POST_CONVOLUTION_RED_SCALE: + case GL_POST_CONVOLUTION_GREEN_SCALE: + case GL_POST_CONVOLUTION_BLUE_SCALE: + case GL_POST_CONVOLUTION_ALPHA_SCALE: + case GL_PROJECTION_STACK_DEPTH: + case GL_READ_BUFFER: + case GL_RED_BIAS: + case GL_RED_BITS: + case GL_RED_SCALE: + case GL_RENDER_MODE: + case GL_RESCALE_NORMAL: + case GL_RGBA_MODE: + case GL_SCISSOR_TEST: + case GL_SELECTION_BUFFER_SIZE: + case GL_SEPARABLE_2D: + case GL_SHADE_MODEL: + case GL_SMOOTH_LINE_WIDTH_GRANULARITY: + case GL_SMOOTH_POINT_SIZE_GRANULARITY: + case GL_STENCIL_BITS: + case GL_STENCIL_CLEAR_VALUE: + case GL_STENCIL_FAIL: + case GL_STENCIL_FUNC: + case GL_STENCIL_PASS_DEPTH_FAIL: + case GL_STENCIL_PASS_DEPTH_PASS: + case GL_STENCIL_REF: + case GL_STENCIL_TEST: + case GL_STENCIL_VALUE_MASK: + case GL_STENCIL_WRITEMASK: + case GL_STEREO: + case GL_SUBPIXEL_BITS: + case GL_TEXTURE_1D: + case GL_TEXTURE_BINDING_1D: + case GL_TEXTURE_2D: + case GL_TEXTURE_BINDING_2D: + case GL_TEXTURE_3D: + case GL_TEXTURE_BINDING_3D: + case GL_TEXTURE_COORD_ARRAY: + case GL_TEXTURE_COORD_ARRAY_SIZE: + case GL_TEXTURE_COORD_ARRAY_STRIDE: + case GL_TEXTURE_COORD_ARRAY_TYPE: + case GL_TEXTURE_GEN_Q: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_S: + case GL_TEXTURE_GEN_T: + case GL_TEXTURE_STACK_DEPTH: + case GL_UNPACK_ALIGNMENT: + case GL_UNPACK_IMAGE_HEIGHT: + case GL_UNPACK_LSB_FIRST: + case GL_UNPACK_ROW_LENGTH: + case GL_UNPACK_SKIP_IMAGES: + case GL_UNPACK_SKIP_PIXELS: + case GL_UNPACK_SKIP_ROWS: + case GL_UNPACK_SWAP_BYTES: + case GL_VERTEX_ARRAY: + case GL_VERTEX_ARRAY_SIZE: + case GL_VERTEX_ARRAY_STRIDE: + case GL_VERTEX_ARRAY_TYPE: + case GL_ZOOM_X: + case GL_ZOOM_Y: + trWriteBool( params[0] ); + break; + + default: + /* Bad enum. What should we do? */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->GetBooleanv( pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetClipPlane( GLenum plane, GLdouble *equation ) { + trWriteCMD( CMD_GETCLIPPLANE ); + trWriteEnum( plane ); + trWritePointer( (void *)equation ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetClipPlane( plane, equation ); + trError(); + } + + if( !(trCtx()->doExec) ) { + memset( equation, 0, sizeof(GLdouble) ); + } + + trWriteArrayd( 4, equation ); +} + + +GLAPI void GLAPIENTRY trGetColorTableEXT( GLenum target, GLenum format, GLenum type, GLvoid *table ) { /* TODO */ + + trWriteCMD( CMD_GETCOLORTABLEEXT ); + trWriteEnum( target ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)table ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetColorTableEXT( target, format, type, table ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetColorTable( GLenum target, GLenum format, GLenum type, GLvoid *table ) { /* TODO */ + trWriteCMD( CMD_GETCOLORTABLE ); + trWriteEnum( target ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)table ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetColorTable( target, format, type, table ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetColorTableParameterfvEXT( GLenum target, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETCOLORTABLEPARAMETERFVEXT ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetColorTableParameterfvEXT( target, pname, params ); + trError(); + } else { + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + memset( params, 0, sizeof(GLfloat) * 4 ); + } else { + params[0] = 0.0; + } + } + + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + trWriteArrayf( 4, params ); + } else { + trWritef( params[0] ); + } +} + + +GLAPI void GLAPIENTRY trGetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETCOLORTABLEPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetColorTableParameterfv( target, pname, params ); + trError(); + } else { + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + memset( params, 0, sizeof(GLfloat) * 4 ); + } else { + params[0] = 0.0; + } + } + + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + trWriteArrayf( 4, params ); + } else { + trWritef( params[0] ); + } +} + + +GLAPI void GLAPIENTRY trGetColorTableParameterivEXT( GLenum target, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETCOLORTABLEPARAMETERIVEXT ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetColorTableParameterivEXT( target, pname, params ); + trError(); + } else { + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + memset( params, 0, sizeof(GLint) * 4 ); + } else { + params[0] = 0; + } + } + + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + trWriteArrayi( 4, params ); + } else { + trWritei( params[0] ); + } +} + + +GLAPI void GLAPIENTRY trGetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETCOLORTABLEPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetColorTableParameteriv( target, pname, params ); + trError(); + } else { + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + memset( params, 0, sizeof(GLint) * 4 ); + } else { + params[0] = 0; + } + } + + if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) { + trWriteArrayi( 4, params ); + } else { + trWritei( params[0] ); + } +} + + +GLAPI void GLAPIENTRY trGetConvolutionFilter( GLenum target, GLenum format, GLenum type, GLvoid *image ) { + trace_context_t * tctx; + + trWriteCMD( CMD_GETCONVOLUTIONFILTER ); + trWriteEnum( target ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)image ); + trFileFlush(); + + if( tctx->doExec ) { + trGetDispatch()->GetConvolutionFilter( target, format, type, image ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetConvolutionParameterfv( GLenum target, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETCONVOLUTIONPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetConvolutionParameterfv( target, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_CONVOLUTION_FILTER_SCALE: + case GL_CONVOLUTION_FILTER_BIAS: + memset( params, 0, 4 * sizeof(GLfloat) ); + break; + case GL_CONVOLUTION_BORDER_MODE: + case GL_CONVOLUTION_BORDER_COLOR: + case GL_CONVOLUTION_FORMAT: + case GL_CONVOLUTION_WIDTH: + case GL_CONVOLUTION_HEIGHT: + case GL_MAX_CONVOLUTION_WIDTH: + case GL_MAX_CONVOLUTION_HEIGHT: + params[0] = 0; + break; + default: + /* The 2nd pass should catch this */ + break; + } + } + + switch( pname ) { + case GL_CONVOLUTION_FILTER_SCALE: + case GL_CONVOLUTION_FILTER_BIAS: + trWriteArrayf( 4, params ); + break; + case GL_CONVOLUTION_BORDER_MODE: + case GL_CONVOLUTION_BORDER_COLOR: + case GL_CONVOLUTION_FORMAT: + case GL_CONVOLUTION_WIDTH: + case GL_CONVOLUTION_HEIGHT: + case GL_MAX_CONVOLUTION_WIDTH: + case GL_MAX_CONVOLUTION_HEIGHT: + trWritef( params[0] ); + break; + default: + /* The 2nd pass should catch this */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetConvolutionParameteriv( GLenum target, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETCONVOLUTIONPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetConvolutionParameteriv( target, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_CONVOLUTION_FILTER_SCALE: + case GL_CONVOLUTION_FILTER_BIAS: + memset( params, 0, 4 * sizeof(GLint) ); + break; + case GL_CONVOLUTION_BORDER_MODE: + case GL_CONVOLUTION_BORDER_COLOR: + case GL_CONVOLUTION_FORMAT: + case GL_CONVOLUTION_WIDTH: + case GL_CONVOLUTION_HEIGHT: + case GL_MAX_CONVOLUTION_WIDTH: + case GL_MAX_CONVOLUTION_HEIGHT: + params[0] = 0; + break; + default: + /* The 2nd pass should catch this */ + break; + } + } + + switch( pname ) { + case GL_CONVOLUTION_FILTER_SCALE: + case GL_CONVOLUTION_FILTER_BIAS: + trWriteArrayi( 4, params ); + break; + case GL_CONVOLUTION_BORDER_MODE: + case GL_CONVOLUTION_BORDER_COLOR: + case GL_CONVOLUTION_FORMAT: + case GL_CONVOLUTION_WIDTH: + case GL_CONVOLUTION_HEIGHT: + case GL_MAX_CONVOLUTION_WIDTH: + case GL_MAX_CONVOLUTION_HEIGHT: + trWritei( params[0] ); + break; + default: + /* The 2nd pass should catch this */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetDoublev( GLenum pname, GLdouble *params ) { + trWriteCMD( CMD_GETDOUBLEV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetDoublev( pname, params ); + trError(); + } else { + trZeroGetterData( pname, sizeof(GLdouble), params ); + } + + switch( pname ) { + case GL_COLOR_MATRIX: + case GL_MODELVIEW_MATRIX: + case GL_PROJECTION_MATRIX: + case GL_TEXTURE_MATRIX: + trWriteArrayd( 16, params ); + break; + + case GL_ACCUM_CLEAR_VALUE: + case GL_BLEND_COLOR: + case GL_COLOR_CLEAR_VALUE: + case GL_COLOR_WRITEMASK: + case GL_CURRENT_COLOR: + case GL_CURRENT_RASTER_COLOR: + case GL_CURRENT_RASTER_POSITION: + case GL_CURRENT_RASTER_TEXTURE_COORDS: + case GL_CURRENT_TEXTURE_COORDS: + case GL_LIGHT_MODEL_AMBIENT: + case GL_MAP2_GRID_DOMAIN: + case GL_SCISSOR_BOX: + case GL_VIEWPORT: + trWriteArrayd( 4, params ); + break; + + case GL_CURRENT_NORMAL: + trWriteArrayd( 3, params ); + break; + + case GL_ALIASED_POINT_SIZE_RANGE: + case GL_ALIASED_LINE_WIDTH_RANGE: + case GL_DEPTH_RANGE: + case GL_MAP1_GRID_DOMAIN: + case GL_MAP2_GRID_SEGMENTS: + case GL_MAX_VIEWPORT_DIMS: + case GL_POLYGON_MODE: + case GL_SMOOTH_LINE_WIDTH_RANGE: + case GL_SMOOTH_POINT_SIZE_RANGE: + trWriteArrayd( 2, params ); + break; + + case GL_ACCUM_ALPHA_BITS: + case GL_ACCUM_BLUE_BITS: + case GL_ACCUM_GREEN_BITS: + case GL_ACCUM_RED_BITS: + case GL_ACTIVE_TEXTURE_ARB: + case GL_ALPHA_BIAS: + case GL_ALPHA_BITS: + case GL_ALPHA_SCALE: + case GL_ALPHA_TEST: + case GL_ALPHA_TEST_FUNC: + case GL_ALPHA_TEST_REF: + case GL_ATTRIB_STACK_DEPTH: + case GL_AUTO_NORMAL: + case GL_AUX_BUFFERS: + case GL_BLEND: + case GL_BLEND_SRC: + case GL_BLUE_BIAS: + case GL_BLUE_BITS: + case GL_BLUE_SCALE: + case GL_CLIENT_ACTIVE_TEXTURE_ARB: + case GL_CLIENT_ATTRIB_STACK_DEPTH: + case GL_CLIP_PLANE0: + case GL_CLIP_PLANE1: + case GL_CLIP_PLANE2: + case GL_CLIP_PLANE3: + case GL_CLIP_PLANE4: + case GL_CLIP_PLANE5: + case GL_COLOR_ARRAY: + case GL_COLOR_ARRAY_SIZE: + case GL_COLOR_ARRAY_STRIDE: + case GL_COLOR_ARRAY_TYPE: + case GL_COLOR_LOGIC_OP: + case GL_COLOR_MATERIAL: + case GL_COLOR_MATERIAL_FACE: + case GL_COLOR_MATERIAL_PARAMETER: + case GL_COLOR_MATRIX_STACK_DEPTH: + case GL_COLOR_TABLE: + case GL_CONVOLUTION_1D: + case GL_CONVOLUTION_2D: + case GL_CULL_FACE: + case GL_CULL_FACE_MODE: + case GL_CURRENT_INDEX: + case GL_CURRENT_RASTER_DISTANCE: + case GL_CURRENT_RASTER_INDEX: + case GL_CURRENT_RASTER_POSITION_VALID: + case GL_DEPTH_BIAS: + case GL_DEPTH_CLEAR_VALUE: + case GL_DEPTH_FUNC: + case GL_DEPTH_SCALE: + case GL_DEPTH_TEST: + case GL_DEPTH_WRITEMASK: + case GL_DITHER: + case GL_DOUBLEBUFFER: + case GL_DRAW_BUFFER: + case GL_EDGE_FLAG: + case GL_EDGE_FLAG_ARRAY: + case GL_EDGE_FLAG_ARRAY_STRIDE: + case GL_FEEDBACK_BUFFER_SIZE: + case GL_FEEDBACK_BUFFER_TYPE: + case GL_FOG: + case GL_FOG_DENSITY: + case GL_FOG_END: + case GL_FOG_HINT: + case GL_FOG_INDEX: + case GL_FOG_MODE: + case GL_FOG_START: + case GL_FRONT_FACE: + case GL_GREEN_BIAS: + case GL_GREEN_BITS: + case GL_GREEN_SCALE: + case GL_HISTOGRAM: + case GL_INDEX_ARRAY: + case GL_INDEX_ARRAY_STRIDE: + case GL_INDEX_ARRAY_TYPE: + case GL_INDEX_BITS: + case GL_INDEX_CLEAR_VALUE: + case GL_INDEX_LOGIC_OP: + case GL_INDEX_MODE: + case GL_INDEX_OFFSET: + case GL_INDEX_SHIFT: + case GL_INDEX_WRITEMASK: + case GL_LIGHT0: + case GL_LIGHT1: + case GL_LIGHT2: + case GL_LIGHT3: + case GL_LIGHT4: + case GL_LIGHT5: + case GL_LIGHT6: + case GL_LIGHT7: + case GL_LIGHTING: + case GL_LIGHT_MODEL_COLOR_CONTROL: + case GL_LIGHT_MODEL_LOCAL_VIEWER: + case GL_LIGHT_MODEL_TWO_SIDE: + case GL_LINE_SMOOTH: + case GL_LINE_SMOOTH_HINT: + case GL_LINE_STIPPLE: + case GL_LINE_STIPPLE_PATTERN: + case GL_LINE_STIPPLE_REPEAT: + case GL_LINE_WIDTH: + case GL_LIST_BASE: + case GL_LIST_INDEX: + case GL_LIST_MODE: + case GL_LOGIC_OP_MODE: + case GL_MAP1_COLOR_4: + case GL_MAP1_GRID_SEGMENTS: + case GL_MAP1_INDEX: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_1: + case GL_MAP1_TEXTURE_COORD_2: + case GL_MAP1_TEXTURE_COORD_3: + case GL_MAP1_TEXTURE_COORD_4: + case GL_MAP1_VERTEX_3: + case GL_MAP1_VERTEX_4: + case GL_MAP2_COLOR_4: + case GL_MAP2_INDEX: + case GL_MAP2_NORMAL: + case GL_MAP2_TEXTURE_COORD_1: + case GL_MAP2_TEXTURE_COORD_2: + case GL_MAP2_TEXTURE_COORD_3: + case GL_MAP2_TEXTURE_COORD_4: + case GL_MAP2_VERTEX_3: + case GL_MAP2_VERTEX_4: + case GL_MAP_COLOR: + case GL_MAP_STENCIL: + case GL_MATRIX_MODE: + case GL_MAX_3D_TEXTURE_SIZE: + case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: + case GL_MAX_ATTRIB_STACK_DEPTH: + case GL_MAX_CLIP_PLANES: + case GL_MAX_COLOR_MATRIX_STACK_DEPTH: + case GL_MAX_ELEMENTS_VERTICES: + case GL_MAX_EVAL_ORDER: + case GL_MAX_LIGHTS: + case GL_MAX_LIST_NESTING: + case GL_MAX_MODELVIEW_STACK_DEPTH: + case GL_MAX_NAME_STACK_DEPTH: + case GL_MAX_PIXEL_MAP_TABLE: + case GL_MAX_PROJECTION_STACK_DEPTH: + case GL_MAX_TEXTURE_SIZE: + case GL_MAX_TEXTURE_STACK_DEPTH: + case GL_MAX_TEXTURE_UNITS_ARB: + case GL_MINMAX: + case GL_MODELVIEW_STACK_DEPTH: + case GL_NAME_STACK_DEPTH: + case GL_NORMAL_ARRAY: + case GL_NORMAL_ARRAY_STRIDE: + case GL_NORMAL_ARRAY_TYPE: + case GL_NORMALIZE: + case GL_PACK_ALIGNMENT: + case GL_PACK_IMAGE_HEIGHT: + case GL_PACK_LSB_FIRST: + case GL_PACK_ROW_LENGTH: + case GL_PACK_SKIP_IMAGES: + case GL_PACK_SKIP_PIXELS: + case GL_PACK_SKIP_ROWS: + case GL_PACK_SWAP_BYTES: + case GL_PERSPECTIVE_CORRECTION_HINT: + case GL_PIXEL_MAP_A_TO_A_SIZE: + case GL_PIXEL_MAP_B_TO_B_SIZE: + case GL_PIXEL_MAP_G_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_A_SIZE: + case GL_PIXEL_MAP_I_TO_B_SIZE: + case GL_PIXEL_MAP_I_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_I_SIZE: + case GL_PIXEL_MAP_I_TO_R_SIZE: + case GL_PIXEL_MAP_R_TO_R_SIZE: + case GL_PIXEL_MAP_S_TO_S_SIZE: + case GL_POINT_SIZE: + case GL_POINT_SMOOTH: + case GL_POINT_SMOOTH_HINT: + case GL_POLYGON_OFFSET_FACTOR: + case GL_POLYGON_OFFSET_UNITS: + case GL_POLYGON_OFFSET_FILL: + case GL_POLYGON_OFFSET_LINE: + case GL_POLYGON_OFFSET_POINT: + case GL_POLYGON_SMOOTH: + case GL_POLYGON_SMOOTH_HINT: + case GL_POLYGON_STIPPLE: + case GL_POST_COLOR_MATRIX_COLOR_TABLE: + case GL_POST_COLOR_MATRIX_RED_BIAS: + case GL_POST_COLOR_MATRIX_GREEN_BIAS: + case GL_POST_COLOR_MATRIX_BLUE_BIAS: + case GL_POST_COLOR_MATRIX_ALPHA_BIAS: + case GL_POST_COLOR_MATRIX_RED_SCALE: + case GL_POST_COLOR_MATRIX_GREEN_SCALE: + case GL_POST_COLOR_MATRIX_BLUE_SCALE: + case GL_POST_COLOR_MATRIX_ALPHA_SCALE: + case GL_POST_CONVOLUTION_COLOR_TABLE: + case GL_POST_CONVOLUTION_RED_BIAS: + case GL_POST_CONVOLUTION_GREEN_BIAS: + case GL_POST_CONVOLUTION_BLUE_BIAS: + case GL_POST_CONVOLUTION_ALPHA_BIAS: + case GL_POST_CONVOLUTION_RED_SCALE: + case GL_POST_CONVOLUTION_GREEN_SCALE: + case GL_POST_CONVOLUTION_BLUE_SCALE: + case GL_POST_CONVOLUTION_ALPHA_SCALE: + case GL_PROJECTION_STACK_DEPTH: + case GL_READ_BUFFER: + case GL_RED_BIAS: + case GL_RED_BITS: + case GL_RED_SCALE: + case GL_RENDER_MODE: + case GL_RESCALE_NORMAL: + case GL_RGBA_MODE: + case GL_SCISSOR_TEST: + case GL_SELECTION_BUFFER_SIZE: + case GL_SEPARABLE_2D: + case GL_SHADE_MODEL: + case GL_SMOOTH_LINE_WIDTH_GRANULARITY: + case GL_SMOOTH_POINT_SIZE_GRANULARITY: + case GL_STENCIL_BITS: + case GL_STENCIL_CLEAR_VALUE: + case GL_STENCIL_FAIL: + case GL_STENCIL_FUNC: + case GL_STENCIL_PASS_DEPTH_FAIL: + case GL_STENCIL_PASS_DEPTH_PASS: + case GL_STENCIL_REF: + case GL_STENCIL_TEST: + case GL_STENCIL_VALUE_MASK: + case GL_STENCIL_WRITEMASK: + case GL_STEREO: + case GL_SUBPIXEL_BITS: + case GL_TEXTURE_1D: + case GL_TEXTURE_BINDING_1D: + case GL_TEXTURE_2D: + case GL_TEXTURE_BINDING_2D: + case GL_TEXTURE_3D: + case GL_TEXTURE_BINDING_3D: + case GL_TEXTURE_COORD_ARRAY: + case GL_TEXTURE_COORD_ARRAY_SIZE: + case GL_TEXTURE_COORD_ARRAY_STRIDE: + case GL_TEXTURE_COORD_ARRAY_TYPE: + case GL_TEXTURE_GEN_Q: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_S: + case GL_TEXTURE_GEN_T: + case GL_TEXTURE_STACK_DEPTH: + case GL_UNPACK_ALIGNMENT: + case GL_UNPACK_IMAGE_HEIGHT: + case GL_UNPACK_LSB_FIRST: + case GL_UNPACK_ROW_LENGTH: + case GL_UNPACK_SKIP_IMAGES: + case GL_UNPACK_SKIP_PIXELS: + case GL_UNPACK_SKIP_ROWS: + case GL_UNPACK_SWAP_BYTES: + case GL_VERTEX_ARRAY: + case GL_VERTEX_ARRAY_SIZE: + case GL_VERTEX_ARRAY_STRIDE: + case GL_VERTEX_ARRAY_TYPE: + case GL_ZOOM_X: + case GL_ZOOM_Y: + trWrited( params[0] ); + break; + + default: + /* Bad enum. What should we do? */ + break; + } + +} + + +GLAPI GLenum GLAPIENTRY trGetError( void ) { + GLenum retval; + trWriteCMD( CMD_GETERROR ); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->GetError( ); + trError(); + } else { + retval = GL_NO_ERROR; + } + + trWriteEnum( retval ); + return retval; +} + + +GLAPI void GLAPIENTRY trGetFloatv( GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETFLOATV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetFloatv( pname, params ); + trError(); + } else { + trZeroGetterData( pname, sizeof(GLfloat), params ); + } + + switch( pname ) { + case GL_COLOR_MATRIX: + case GL_MODELVIEW_MATRIX: + case GL_PROJECTION_MATRIX: + case GL_TEXTURE_MATRIX: + trWriteArrayf( 16, params ); + break; + + case GL_ACCUM_CLEAR_VALUE: + case GL_BLEND_COLOR: + case GL_COLOR_CLEAR_VALUE: + case GL_COLOR_WRITEMASK: + case GL_CURRENT_COLOR: + case GL_CURRENT_RASTER_COLOR: + case GL_CURRENT_RASTER_POSITION: + case GL_CURRENT_RASTER_TEXTURE_COORDS: + case GL_CURRENT_TEXTURE_COORDS: + case GL_LIGHT_MODEL_AMBIENT: + case GL_MAP2_GRID_DOMAIN: + case GL_SCISSOR_BOX: + case GL_VIEWPORT: + trWriteArrayf( 4, params ); + break; + + case GL_CURRENT_NORMAL: + trWriteArrayf( 3, params ); + break; + + case GL_ALIASED_POINT_SIZE_RANGE: + case GL_ALIASED_LINE_WIDTH_RANGE: + case GL_DEPTH_RANGE: + case GL_MAP1_GRID_DOMAIN: + case GL_MAP2_GRID_SEGMENTS: + case GL_MAX_VIEWPORT_DIMS: + case GL_POLYGON_MODE: + case GL_SMOOTH_LINE_WIDTH_RANGE: + case GL_SMOOTH_POINT_SIZE_RANGE: + trWriteArrayf( 2, params ); + break; + + case GL_ACCUM_ALPHA_BITS: + case GL_ACCUM_BLUE_BITS: + case GL_ACCUM_GREEN_BITS: + case GL_ACCUM_RED_BITS: + case GL_ACTIVE_TEXTURE_ARB: + case GL_ALPHA_BIAS: + case GL_ALPHA_BITS: + case GL_ALPHA_SCALE: + case GL_ALPHA_TEST: + case GL_ALPHA_TEST_FUNC: + case GL_ALPHA_TEST_REF: + case GL_ATTRIB_STACK_DEPTH: + case GL_AUTO_NORMAL: + case GL_AUX_BUFFERS: + case GL_BLEND: + case GL_BLEND_SRC: + case GL_BLUE_BIAS: + case GL_BLUE_BITS: + case GL_BLUE_SCALE: + case GL_CLIENT_ACTIVE_TEXTURE_ARB: + case GL_CLIENT_ATTRIB_STACK_DEPTH: + case GL_CLIP_PLANE0: + case GL_CLIP_PLANE1: + case GL_CLIP_PLANE2: + case GL_CLIP_PLANE3: + case GL_CLIP_PLANE4: + case GL_CLIP_PLANE5: + case GL_COLOR_ARRAY: + case GL_COLOR_ARRAY_SIZE: + case GL_COLOR_ARRAY_STRIDE: + case GL_COLOR_ARRAY_TYPE: + case GL_COLOR_LOGIC_OP: + case GL_COLOR_MATERIAL: + case GL_COLOR_MATERIAL_FACE: + case GL_COLOR_MATERIAL_PARAMETER: + case GL_COLOR_MATRIX_STACK_DEPTH: + case GL_COLOR_TABLE: + case GL_CONVOLUTION_1D: + case GL_CONVOLUTION_2D: + case GL_CULL_FACE: + case GL_CULL_FACE_MODE: + case GL_CURRENT_INDEX: + case GL_CURRENT_RASTER_DISTANCE: + case GL_CURRENT_RASTER_INDEX: + case GL_CURRENT_RASTER_POSITION_VALID: + case GL_DEPTH_BIAS: + case GL_DEPTH_CLEAR_VALUE: + case GL_DEPTH_FUNC: + case GL_DEPTH_SCALE: + case GL_DEPTH_TEST: + case GL_DEPTH_WRITEMASK: + case GL_DITHER: + case GL_DOUBLEBUFFER: + case GL_DRAW_BUFFER: + case GL_EDGE_FLAG: + case GL_EDGE_FLAG_ARRAY: + case GL_EDGE_FLAG_ARRAY_STRIDE: + case GL_FEEDBACK_BUFFER_SIZE: + case GL_FEEDBACK_BUFFER_TYPE: + case GL_FOG: + case GL_FOG_DENSITY: + case GL_FOG_END: + case GL_FOG_HINT: + case GL_FOG_INDEX: + case GL_FOG_MODE: + case GL_FOG_START: + case GL_FRONT_FACE: + case GL_GREEN_BIAS: + case GL_GREEN_BITS: + case GL_GREEN_SCALE: + case GL_HISTOGRAM: + case GL_INDEX_ARRAY: + case GL_INDEX_ARRAY_STRIDE: + case GL_INDEX_ARRAY_TYPE: + case GL_INDEX_BITS: + case GL_INDEX_CLEAR_VALUE: + case GL_INDEX_LOGIC_OP: + case GL_INDEX_MODE: + case GL_INDEX_OFFSET: + case GL_INDEX_SHIFT: + case GL_INDEX_WRITEMASK: + case GL_LIGHT0: + case GL_LIGHT1: + case GL_LIGHT2: + case GL_LIGHT3: + case GL_LIGHT4: + case GL_LIGHT5: + case GL_LIGHT6: + case GL_LIGHT7: + case GL_LIGHTING: + case GL_LIGHT_MODEL_COLOR_CONTROL: + case GL_LIGHT_MODEL_LOCAL_VIEWER: + case GL_LIGHT_MODEL_TWO_SIDE: + case GL_LINE_SMOOTH: + case GL_LINE_SMOOTH_HINT: + case GL_LINE_STIPPLE: + case GL_LINE_STIPPLE_PATTERN: + case GL_LINE_STIPPLE_REPEAT: + case GL_LINE_WIDTH: + case GL_LIST_BASE: + case GL_LIST_INDEX: + case GL_LIST_MODE: + case GL_LOGIC_OP_MODE: + case GL_MAP1_COLOR_4: + case GL_MAP1_GRID_SEGMENTS: + case GL_MAP1_INDEX: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_1: + case GL_MAP1_TEXTURE_COORD_2: + case GL_MAP1_TEXTURE_COORD_3: + case GL_MAP1_TEXTURE_COORD_4: + case GL_MAP1_VERTEX_3: + case GL_MAP1_VERTEX_4: + case GL_MAP2_COLOR_4: + case GL_MAP2_INDEX: + case GL_MAP2_NORMAL: + case GL_MAP2_TEXTURE_COORD_1: + case GL_MAP2_TEXTURE_COORD_2: + case GL_MAP2_TEXTURE_COORD_3: + case GL_MAP2_TEXTURE_COORD_4: + case GL_MAP2_VERTEX_3: + case GL_MAP2_VERTEX_4: + case GL_MAP_COLOR: + case GL_MAP_STENCIL: + case GL_MATRIX_MODE: + case GL_MAX_3D_TEXTURE_SIZE: + case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: + case GL_MAX_ATTRIB_STACK_DEPTH: + case GL_MAX_CLIP_PLANES: + case GL_MAX_COLOR_MATRIX_STACK_DEPTH: + case GL_MAX_ELEMENTS_VERTICES: + case GL_MAX_EVAL_ORDER: + case GL_MAX_LIGHTS: + case GL_MAX_LIST_NESTING: + case GL_MAX_MODELVIEW_STACK_DEPTH: + case GL_MAX_NAME_STACK_DEPTH: + case GL_MAX_PIXEL_MAP_TABLE: + case GL_MAX_PROJECTION_STACK_DEPTH: + case GL_MAX_TEXTURE_SIZE: + case GL_MAX_TEXTURE_STACK_DEPTH: + case GL_MAX_TEXTURE_UNITS_ARB: + case GL_MINMAX: + case GL_MODELVIEW_STACK_DEPTH: + case GL_NAME_STACK_DEPTH: + case GL_NORMAL_ARRAY: + case GL_NORMAL_ARRAY_STRIDE: + case GL_NORMAL_ARRAY_TYPE: + case GL_NORMALIZE: + case GL_PACK_ALIGNMENT: + case GL_PACK_IMAGE_HEIGHT: + case GL_PACK_LSB_FIRST: + case GL_PACK_ROW_LENGTH: + case GL_PACK_SKIP_IMAGES: + case GL_PACK_SKIP_PIXELS: + case GL_PACK_SKIP_ROWS: + case GL_PACK_SWAP_BYTES: + case GL_PERSPECTIVE_CORRECTION_HINT: + case GL_PIXEL_MAP_A_TO_A_SIZE: + case GL_PIXEL_MAP_B_TO_B_SIZE: + case GL_PIXEL_MAP_G_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_A_SIZE: + case GL_PIXEL_MAP_I_TO_B_SIZE: + case GL_PIXEL_MAP_I_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_I_SIZE: + case GL_PIXEL_MAP_I_TO_R_SIZE: + case GL_PIXEL_MAP_R_TO_R_SIZE: + case GL_PIXEL_MAP_S_TO_S_SIZE: + case GL_POINT_SIZE: + case GL_POINT_SMOOTH: + case GL_POINT_SMOOTH_HINT: + case GL_POLYGON_OFFSET_FACTOR: + case GL_POLYGON_OFFSET_UNITS: + case GL_POLYGON_OFFSET_FILL: + case GL_POLYGON_OFFSET_LINE: + case GL_POLYGON_OFFSET_POINT: + case GL_POLYGON_SMOOTH: + case GL_POLYGON_SMOOTH_HINT: + case GL_POLYGON_STIPPLE: + case GL_POST_COLOR_MATRIX_COLOR_TABLE: + case GL_POST_COLOR_MATRIX_RED_BIAS: + case GL_POST_COLOR_MATRIX_GREEN_BIAS: + case GL_POST_COLOR_MATRIX_BLUE_BIAS: + case GL_POST_COLOR_MATRIX_ALPHA_BIAS: + case GL_POST_COLOR_MATRIX_RED_SCALE: + case GL_POST_COLOR_MATRIX_GREEN_SCALE: + case GL_POST_COLOR_MATRIX_BLUE_SCALE: + case GL_POST_COLOR_MATRIX_ALPHA_SCALE: + case GL_POST_CONVOLUTION_COLOR_TABLE: + case GL_POST_CONVOLUTION_RED_BIAS: + case GL_POST_CONVOLUTION_GREEN_BIAS: + case GL_POST_CONVOLUTION_BLUE_BIAS: + case GL_POST_CONVOLUTION_ALPHA_BIAS: + case GL_POST_CONVOLUTION_RED_SCALE: + case GL_POST_CONVOLUTION_GREEN_SCALE: + case GL_POST_CONVOLUTION_BLUE_SCALE: + case GL_POST_CONVOLUTION_ALPHA_SCALE: + case GL_PROJECTION_STACK_DEPTH: + case GL_READ_BUFFER: + case GL_RED_BIAS: + case GL_RED_BITS: + case GL_RED_SCALE: + case GL_RENDER_MODE: + case GL_RESCALE_NORMAL: + case GL_RGBA_MODE: + case GL_SCISSOR_TEST: + case GL_SELECTION_BUFFER_SIZE: + case GL_SEPARABLE_2D: + case GL_SHADE_MODEL: + case GL_SMOOTH_LINE_WIDTH_GRANULARITY: + case GL_SMOOTH_POINT_SIZE_GRANULARITY: + case GL_STENCIL_BITS: + case GL_STENCIL_CLEAR_VALUE: + case GL_STENCIL_FAIL: + case GL_STENCIL_FUNC: + case GL_STENCIL_PASS_DEPTH_FAIL: + case GL_STENCIL_PASS_DEPTH_PASS: + case GL_STENCIL_REF: + case GL_STENCIL_TEST: + case GL_STENCIL_VALUE_MASK: + case GL_STENCIL_WRITEMASK: + case GL_STEREO: + case GL_SUBPIXEL_BITS: + case GL_TEXTURE_1D: + case GL_TEXTURE_BINDING_1D: + case GL_TEXTURE_2D: + case GL_TEXTURE_BINDING_2D: + case GL_TEXTURE_3D: + case GL_TEXTURE_BINDING_3D: + case GL_TEXTURE_COORD_ARRAY: + case GL_TEXTURE_COORD_ARRAY_SIZE: + case GL_TEXTURE_COORD_ARRAY_STRIDE: + case GL_TEXTURE_COORD_ARRAY_TYPE: + case GL_TEXTURE_GEN_Q: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_S: + case GL_TEXTURE_GEN_T: + case GL_TEXTURE_STACK_DEPTH: + case GL_UNPACK_ALIGNMENT: + case GL_UNPACK_IMAGE_HEIGHT: + case GL_UNPACK_LSB_FIRST: + case GL_UNPACK_ROW_LENGTH: + case GL_UNPACK_SKIP_IMAGES: + case GL_UNPACK_SKIP_PIXELS: + case GL_UNPACK_SKIP_ROWS: + case GL_UNPACK_SWAP_BYTES: + case GL_VERTEX_ARRAY: + case GL_VERTEX_ARRAY_SIZE: + case GL_VERTEX_ARRAY_STRIDE: + case GL_VERTEX_ARRAY_TYPE: + case GL_ZOOM_X: + case GL_ZOOM_Y: + trWritef( params[0] ); + break; + + default: + /* Bad enum. What should we do? */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetHistogram( GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values ) { /* TODO */ + trWriteCMD( CMD_GETHISTOGRAM ); + trWriteEnum( target ); + trWriteBool( reset ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)values ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetHistogram( target, reset, format, type, values ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetHistogramParameterfv( GLenum target, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETHISTOGRAMPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetHistogramParameterfv( target, pname, params ); + trError(); + } else { + params[0] = 0; + } + + trWritef( params[0] ); +} + + +GLAPI void GLAPIENTRY trGetHistogramParameteriv( GLenum target, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETHISTOGRAMPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetHistogramParameteriv( target, pname, params ); + trError(); + } else { + params[0] = 0; + } + + trWritei( params[0] ); +} + + +GLAPI void GLAPIENTRY trGetIntegerv( GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETINTEGERV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetIntegerv( pname, params ); + trError(); + } else { + trZeroGetterData( pname, sizeof(GLint), params ); + } + + switch( pname ) { + case GL_COLOR_MATRIX: + case GL_MODELVIEW_MATRIX: + case GL_PROJECTION_MATRIX: + case GL_TEXTURE_MATRIX: + trWriteArrayi( 16, params ); + break; + + case GL_ACCUM_CLEAR_VALUE: + case GL_BLEND_COLOR: + case GL_COLOR_CLEAR_VALUE: + case GL_COLOR_WRITEMASK: + case GL_CURRENT_COLOR: + case GL_CURRENT_RASTER_COLOR: + case GL_CURRENT_RASTER_POSITION: + case GL_CURRENT_RASTER_TEXTURE_COORDS: + case GL_CURRENT_TEXTURE_COORDS: + case GL_LIGHT_MODEL_AMBIENT: + case GL_MAP2_GRID_DOMAIN: + case GL_SCISSOR_BOX: + case GL_VIEWPORT: + trWriteArrayi( 4, params ); + break; + + case GL_CURRENT_NORMAL: + trWriteArrayi( 3, params ); + break; + + case GL_ALIASED_POINT_SIZE_RANGE: + case GL_ALIASED_LINE_WIDTH_RANGE: + case GL_DEPTH_RANGE: + case GL_MAP1_GRID_DOMAIN: + case GL_MAP2_GRID_SEGMENTS: + case GL_MAX_VIEWPORT_DIMS: + case GL_POLYGON_MODE: + case GL_SMOOTH_LINE_WIDTH_RANGE: + case GL_SMOOTH_POINT_SIZE_RANGE: + trWriteArrayi( 2, params ); + break; + + case GL_ACCUM_ALPHA_BITS: + case GL_ACCUM_BLUE_BITS: + case GL_ACCUM_GREEN_BITS: + case GL_ACCUM_RED_BITS: + case GL_ACTIVE_TEXTURE_ARB: + case GL_ALPHA_BIAS: + case GL_ALPHA_BITS: + case GL_ALPHA_SCALE: + case GL_ALPHA_TEST: + case GL_ALPHA_TEST_FUNC: + case GL_ALPHA_TEST_REF: + case GL_ATTRIB_STACK_DEPTH: + case GL_AUTO_NORMAL: + case GL_AUX_BUFFERS: + case GL_BLEND: + case GL_BLEND_SRC: + case GL_BLUE_BIAS: + case GL_BLUE_BITS: + case GL_BLUE_SCALE: + case GL_CLIENT_ACTIVE_TEXTURE_ARB: + case GL_CLIENT_ATTRIB_STACK_DEPTH: + case GL_CLIP_PLANE0: + case GL_CLIP_PLANE1: + case GL_CLIP_PLANE2: + case GL_CLIP_PLANE3: + case GL_CLIP_PLANE4: + case GL_CLIP_PLANE5: + case GL_COLOR_ARRAY: + case GL_COLOR_ARRAY_SIZE: + case GL_COLOR_ARRAY_STRIDE: + case GL_COLOR_ARRAY_TYPE: + case GL_COLOR_LOGIC_OP: + case GL_COLOR_MATERIAL: + case GL_COLOR_MATERIAL_FACE: + case GL_COLOR_MATERIAL_PARAMETER: + case GL_COLOR_MATRIX_STACK_DEPTH: + case GL_COLOR_TABLE: + case GL_CONVOLUTION_1D: + case GL_CONVOLUTION_2D: + case GL_CULL_FACE: + case GL_CULL_FACE_MODE: + case GL_CURRENT_INDEX: + case GL_CURRENT_RASTER_DISTANCE: + case GL_CURRENT_RASTER_INDEX: + case GL_CURRENT_RASTER_POSITION_VALID: + case GL_DEPTH_BIAS: + case GL_DEPTH_CLEAR_VALUE: + case GL_DEPTH_FUNC: + case GL_DEPTH_SCALE: + case GL_DEPTH_TEST: + case GL_DEPTH_WRITEMASK: + case GL_DITHER: + case GL_DOUBLEBUFFER: + case GL_DRAW_BUFFER: + case GL_EDGE_FLAG: + case GL_EDGE_FLAG_ARRAY: + case GL_EDGE_FLAG_ARRAY_STRIDE: + case GL_FEEDBACK_BUFFER_SIZE: + case GL_FEEDBACK_BUFFER_TYPE: + case GL_FOG: + case GL_FOG_DENSITY: + case GL_FOG_END: + case GL_FOG_HINT: + case GL_FOG_INDEX: + case GL_FOG_MODE: + case GL_FOG_START: + case GL_FRONT_FACE: + case GL_GREEN_BIAS: + case GL_GREEN_BITS: + case GL_GREEN_SCALE: + case GL_HISTOGRAM: + case GL_INDEX_ARRAY: + case GL_INDEX_ARRAY_STRIDE: + case GL_INDEX_ARRAY_TYPE: + case GL_INDEX_BITS: + case GL_INDEX_CLEAR_VALUE: + case GL_INDEX_LOGIC_OP: + case GL_INDEX_MODE: + case GL_INDEX_OFFSET: + case GL_INDEX_SHIFT: + case GL_INDEX_WRITEMASK: + case GL_LIGHT0: + case GL_LIGHT1: + case GL_LIGHT2: + case GL_LIGHT3: + case GL_LIGHT4: + case GL_LIGHT5: + case GL_LIGHT6: + case GL_LIGHT7: + case GL_LIGHTING: + case GL_LIGHT_MODEL_COLOR_CONTROL: + case GL_LIGHT_MODEL_LOCAL_VIEWER: + case GL_LIGHT_MODEL_TWO_SIDE: + case GL_LINE_SMOOTH: + case GL_LINE_SMOOTH_HINT: + case GL_LINE_STIPPLE: + case GL_LINE_STIPPLE_PATTERN: + case GL_LINE_STIPPLE_REPEAT: + case GL_LINE_WIDTH: + case GL_LIST_BASE: + case GL_LIST_INDEX: + case GL_LIST_MODE: + case GL_LOGIC_OP_MODE: + case GL_MAP1_COLOR_4: + case GL_MAP1_GRID_SEGMENTS: + case GL_MAP1_INDEX: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_1: + case GL_MAP1_TEXTURE_COORD_2: + case GL_MAP1_TEXTURE_COORD_3: + case GL_MAP1_TEXTURE_COORD_4: + case GL_MAP1_VERTEX_3: + case GL_MAP1_VERTEX_4: + case GL_MAP2_COLOR_4: + case GL_MAP2_INDEX: + case GL_MAP2_NORMAL: + case GL_MAP2_TEXTURE_COORD_1: + case GL_MAP2_TEXTURE_COORD_2: + case GL_MAP2_TEXTURE_COORD_3: + case GL_MAP2_TEXTURE_COORD_4: + case GL_MAP2_VERTEX_3: + case GL_MAP2_VERTEX_4: + case GL_MAP_COLOR: + case GL_MAP_STENCIL: + case GL_MATRIX_MODE: + case GL_MAX_3D_TEXTURE_SIZE: + case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: + case GL_MAX_ATTRIB_STACK_DEPTH: + case GL_MAX_CLIP_PLANES: + case GL_MAX_COLOR_MATRIX_STACK_DEPTH: + case GL_MAX_ELEMENTS_VERTICES: + case GL_MAX_EVAL_ORDER: + case GL_MAX_LIGHTS: + case GL_MAX_LIST_NESTING: + case GL_MAX_MODELVIEW_STACK_DEPTH: + case GL_MAX_NAME_STACK_DEPTH: + case GL_MAX_PIXEL_MAP_TABLE: + case GL_MAX_PROJECTION_STACK_DEPTH: + case GL_MAX_TEXTURE_SIZE: + case GL_MAX_TEXTURE_STACK_DEPTH: + case GL_MAX_TEXTURE_UNITS_ARB: + case GL_MINMAX: + case GL_MODELVIEW_STACK_DEPTH: + case GL_NAME_STACK_DEPTH: + case GL_NORMAL_ARRAY: + case GL_NORMAL_ARRAY_STRIDE: + case GL_NORMAL_ARRAY_TYPE: + case GL_NORMALIZE: + case GL_PACK_ALIGNMENT: + case GL_PACK_IMAGE_HEIGHT: + case GL_PACK_LSB_FIRST: + case GL_PACK_ROW_LENGTH: + case GL_PACK_SKIP_IMAGES: + case GL_PACK_SKIP_PIXELS: + case GL_PACK_SKIP_ROWS: + case GL_PACK_SWAP_BYTES: + case GL_PERSPECTIVE_CORRECTION_HINT: + case GL_PIXEL_MAP_A_TO_A_SIZE: + case GL_PIXEL_MAP_B_TO_B_SIZE: + case GL_PIXEL_MAP_G_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_A_SIZE: + case GL_PIXEL_MAP_I_TO_B_SIZE: + case GL_PIXEL_MAP_I_TO_G_SIZE: + case GL_PIXEL_MAP_I_TO_I_SIZE: + case GL_PIXEL_MAP_I_TO_R_SIZE: + case GL_PIXEL_MAP_R_TO_R_SIZE: + case GL_PIXEL_MAP_S_TO_S_SIZE: + case GL_POINT_SIZE: + case GL_POINT_SMOOTH: + case GL_POINT_SMOOTH_HINT: + case GL_POLYGON_OFFSET_FACTOR: + case GL_POLYGON_OFFSET_UNITS: + case GL_POLYGON_OFFSET_FILL: + case GL_POLYGON_OFFSET_LINE: + case GL_POLYGON_OFFSET_POINT: + case GL_POLYGON_SMOOTH: + case GL_POLYGON_SMOOTH_HINT: + case GL_POLYGON_STIPPLE: + case GL_POST_COLOR_MATRIX_COLOR_TABLE: + case GL_POST_COLOR_MATRIX_RED_BIAS: + case GL_POST_COLOR_MATRIX_GREEN_BIAS: + case GL_POST_COLOR_MATRIX_BLUE_BIAS: + case GL_POST_COLOR_MATRIX_ALPHA_BIAS: + case GL_POST_COLOR_MATRIX_RED_SCALE: + case GL_POST_COLOR_MATRIX_GREEN_SCALE: + case GL_POST_COLOR_MATRIX_BLUE_SCALE: + case GL_POST_COLOR_MATRIX_ALPHA_SCALE: + case GL_POST_CONVOLUTION_COLOR_TABLE: + case GL_POST_CONVOLUTION_RED_BIAS: + case GL_POST_CONVOLUTION_GREEN_BIAS: + case GL_POST_CONVOLUTION_BLUE_BIAS: + case GL_POST_CONVOLUTION_ALPHA_BIAS: + case GL_POST_CONVOLUTION_RED_SCALE: + case GL_POST_CONVOLUTION_GREEN_SCALE: + case GL_POST_CONVOLUTION_BLUE_SCALE: + case GL_POST_CONVOLUTION_ALPHA_SCALE: + case GL_PROJECTION_STACK_DEPTH: + case GL_READ_BUFFER: + case GL_RED_BIAS: + case GL_RED_BITS: + case GL_RED_SCALE: + case GL_RENDER_MODE: + case GL_RESCALE_NORMAL: + case GL_RGBA_MODE: + case GL_SCISSOR_TEST: + case GL_SELECTION_BUFFER_SIZE: + case GL_SEPARABLE_2D: + case GL_SHADE_MODEL: + case GL_SMOOTH_LINE_WIDTH_GRANULARITY: + case GL_SMOOTH_POINT_SIZE_GRANULARITY: + case GL_STENCIL_BITS: + case GL_STENCIL_CLEAR_VALUE: + case GL_STENCIL_FAIL: + case GL_STENCIL_FUNC: + case GL_STENCIL_PASS_DEPTH_FAIL: + case GL_STENCIL_PASS_DEPTH_PASS: + case GL_STENCIL_REF: + case GL_STENCIL_TEST: + case GL_STENCIL_VALUE_MASK: + case GL_STENCIL_WRITEMASK: + case GL_STEREO: + case GL_SUBPIXEL_BITS: + case GL_TEXTURE_1D: + case GL_TEXTURE_BINDING_1D: + case GL_TEXTURE_2D: + case GL_TEXTURE_BINDING_2D: + case GL_TEXTURE_3D: + case GL_TEXTURE_BINDING_3D: + case GL_TEXTURE_COORD_ARRAY: + case GL_TEXTURE_COORD_ARRAY_SIZE: + case GL_TEXTURE_COORD_ARRAY_STRIDE: + case GL_TEXTURE_COORD_ARRAY_TYPE: + case GL_TEXTURE_GEN_Q: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_S: + case GL_TEXTURE_GEN_T: + case GL_TEXTURE_STACK_DEPTH: + case GL_UNPACK_ALIGNMENT: + case GL_UNPACK_IMAGE_HEIGHT: + case GL_UNPACK_LSB_FIRST: + case GL_UNPACK_ROW_LENGTH: + case GL_UNPACK_SKIP_IMAGES: + case GL_UNPACK_SKIP_PIXELS: + case GL_UNPACK_SKIP_ROWS: + case GL_UNPACK_SWAP_BYTES: + case GL_VERTEX_ARRAY: + case GL_VERTEX_ARRAY_SIZE: + case GL_VERTEX_ARRAY_STRIDE: + case GL_VERTEX_ARRAY_TYPE: + case GL_ZOOM_X: + case GL_ZOOM_Y: + trWritei( params[0] ); + break; + + default: + /* Bad enum. What should we do? */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetLightfv( GLenum light, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETLIGHTFV ); + trWriteEnum( light ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetLightfv( light, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_POSITION: + memset( params, 0, 4 * sizeof(GLfloat) ); + break; + case GL_SPOT_DIRECTION: + memset( params, 0, 3 * sizeof(GLfloat) ); + break; + case GL_SPOT_EXPONENT: + case GL_SPOT_CUTOFF: + case GL_CONSTANT_ATTENUATION: + case GL_LINEAR_ATTENUATION: + case GL_QUADRATIC_ATTENUATION: + params[0] = 0; + break; + default: + /* The 2nd pass should catch this */ + break; + } + } + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_POSITION: + trWriteArrayf( 4, params ); + break; + case GL_SPOT_DIRECTION: + trWriteArrayf( 3, params ); + break; + case GL_SPOT_EXPONENT: + case GL_SPOT_CUTOFF: + case GL_CONSTANT_ATTENUATION: + case GL_LINEAR_ATTENUATION: + case GL_QUADRATIC_ATTENUATION: + trWritef( params[0] ); + break; + default: + /* The 2nd pass should catch this */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetLightiv( GLenum light, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETLIGHTIV ); + trWriteEnum( light ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetLightiv( light, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_POSITION: + memset( params, 0, 4 * sizeof(GLint) ); + break; + case GL_SPOT_DIRECTION: + memset( params, 0, 3 * sizeof(GLint) ); + break; + case GL_SPOT_EXPONENT: + case GL_SPOT_CUTOFF: + case GL_CONSTANT_ATTENUATION: + case GL_LINEAR_ATTENUATION: + case GL_QUADRATIC_ATTENUATION: + params[0] = 0; + break; + default: + /* The 2nd pass should catch this */ + break; + } + } + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_POSITION: + trWriteArrayi( 4, params ); + break; + case GL_SPOT_DIRECTION: + trWriteArrayi( 3, params ); + break; + case GL_SPOT_EXPONENT: + case GL_SPOT_CUTOFF: + case GL_CONSTANT_ATTENUATION: + case GL_LINEAR_ATTENUATION: + case GL_QUADRATIC_ATTENUATION: + trWritei( params[0] ); + break; + default: + /* The 2nd pass should catch this */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetMapdv( GLenum target, GLenum query, GLdouble *v ) { /* TODO */ + trWriteCMD( CMD_GETMAPDV ); + trWriteEnum( target ); + trWriteEnum( query ); + trWritePointer( (void *)v ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMapdv( target, query, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetMapfv( GLenum target, GLenum query, GLfloat *v ) { /* TODO */ + trWriteCMD( CMD_GETMAPFV ); + trWriteEnum( target ); + trWriteEnum( query ); + trWritePointer( (void *)v ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMapfv( target, query, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetMapiv( GLenum target, GLenum query, GLint *v ) { /* TODO */ + trWriteCMD( CMD_GETMAPIV ); + trWriteEnum( target ); + trWriteEnum( query ); + trWritePointer( (void *)v ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMapiv( target, query, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETMATERIALFV ); + trWriteEnum( face ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMaterialfv( face, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_EMISSION: + memset( params, 0, 4 * sizeof(GLfloat) ); + break; + case GL_COLOR_INDEXES: + memset( params, 0, 3 * sizeof(GLfloat) ); + break; + case GL_SHININESS: + params[0] = 0; + break; + default: + /* The 2nd pass will pick this up. */ + break; + } + } + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_EMISSION: + trWriteArrayf( 4, params ); + break; + case GL_COLOR_INDEXES: + trWriteArrayf( 3, params ); + break; + case GL_SHININESS: + trWritef( params[0] ); + break; + default: + /* The 2nd pass will pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetMaterialiv( GLenum face, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETMATERIALIV ); + trWriteEnum( face ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMaterialiv( face, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_EMISSION: + memset( params, 0, 4 * sizeof(GLint) ); + break; + case GL_COLOR_INDEXES: + memset( params, 0, 3 * sizeof(GLint) ); + break; + case GL_SHININESS: + params[0] = 0; + break; + default: + /* The 2nd pass will pick this up. */ + break; + } + } + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_EMISSION: + trWriteArrayi( 4, params ); + break; + case GL_COLOR_INDEXES: + trWriteArrayi( 3, params ); + break; + case GL_SHININESS: + trWritei( params[0] ); + break; + default: + /* The 2nd pass will pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetMinmax( GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values ) { + GLint pixelsize; + + trWriteCMD( CMD_GETMINMAX ); + trWriteEnum( target ); + trWriteBool( reset ); + trWriteEnum( format ); + trWriteEnum( types ); + trWritePointer( (void *)values ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMinmax( target, reset, format, types, values ); + trError(); + } else { + switch( types ) { + case GL_BYTE: + ((GLbyte *)values)[0] = 0; + ((GLbyte *)values)[1] = 0; + break; + + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_BYTE_3_3_2: + case GL_UNSIGNED_BYTE_2_3_3_REV: + ((GLubyte *)values)[0] = 0; + ((GLubyte *)values)[1] = 0; + break; + + case GL_SHORT: + ((GLshort *)values)[0] = 0; + ((GLshort *)values)[1] = 0; + break; + + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_SHORT_5_6_5: + case GL_UNSIGNED_SHORT_5_6_5_REV: + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + ((GLshort *)values)[0] = 0; + ((GLshort *)values)[1] = 0; + break; + + case GL_INT: + ((GLint *)values)[0] = 0; + ((GLint *)values)[1] = 0; + break; + + case GL_UNSIGNED_INT: + case GL_UNSIGNED_INT_8_8_8_8: + case GL_UNSIGNED_INT_8_8_8_8_REV: + case GL_UNSIGNED_INT_10_10_10_2: + case GL_UNSIGNED_INT_2_10_10_10_REV: + ((GLuint *)values)[0] = 0; + ((GLuint *)values)[1] = 0; + break; + + case GL_FLOAT: + ((GLfloat *)values)[0] = 0.0; + ((GLfloat *)values)[1] = 0.0; + break; + + default: + /* The 2nd pass should catch this. */ + break; + } + } + + pixelsize = trGetPixelSize( format, types ); + trWriteTypeArray( types, 2, pixelsize, 0, values ); +} + + +GLAPI void GLAPIENTRY trGetMinmaxParameterfv( GLenum target, GLenum pname, GLfloat *params ) { /* TODO */ + trWriteCMD( CMD_GETMINMAXPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMinmaxParameterfv( target, pname, params ); + trError(); + } else { + params[0] = 0.0; + } + + trWritef( params[0] ); +} + + +GLAPI void GLAPIENTRY trGetMinmaxParameteriv( GLenum target, GLenum pname, GLint *params ) { /* TODO */ + trWriteCMD( CMD_GETMINMAXPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetMinmaxParameteriv( target, pname, params ); + trError(); + } else { + params[0] = 0; + } + + trWritei( params[0] ); +} + + +GLAPI void GLAPIENTRY trGetPixelMapfv( GLenum map, GLfloat *values ) { /* TODO */ + trWriteCMD( CMD_GETPIXELMAPFV ); + trWriteEnum( map ); + trWritePointer( (void *)values ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetPixelMapfv( map, values ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetPixelMapuiv( GLenum map, GLuint *values ) { /* TODO */ + trWriteCMD( CMD_GETPIXELMAPUIV ); + trWriteEnum( map ); + trWritePointer( (void *)values ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetPixelMapuiv( map, values ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetPixelMapusv( GLenum map, GLushort *values ) { /* TODO */ + trWriteCMD( CMD_GETPIXELMAPUSV ); + trWriteEnum( map ); + trWritePointer( (void *)values ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetPixelMapusv( map, values ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trGetPointervEXT( GLenum pname, void **params ) { + trWriteCMD( CMD_GETPOINTERVEXT ); + trWriteEnum( pname ); + + if( trCtx()->doExec ) { + trGetDispatch()->GetPointervEXT( pname, params ); + trError(); + } else { + *params = NULL; + } + trWritePointer( (void *)(*params) ); +} +#endif + + +GLAPI void GLAPIENTRY trGetPointerv( GLenum pname, void **params ) { + trWriteCMD( CMD_GETPOINTERV ); + trWriteEnum( pname ); + + if( trCtx()->doExec ) { + trGetDispatch()->GetPointerv( pname, params ); + trError(); + } else { + *params = NULL; + } + trWritePointer( (void *)(*params) ); +} + + +GLAPI void GLAPIENTRY trGetPolygonStipple( GLubyte *mask ) { + GLint i; + + trWriteCMD( CMD_GETPOLYGONSTIPPLE ); + trWritePointer( (void *)mask ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetPolygonStipple( mask ); + trError(); + } else { + for( i = 0; i < 8 * 8; i++ ) { + mask[i] = 0x0; + } + } + for( i = 0; i < 8 * 8; i++ ) { + trWriteub( mask[i] ); + } +} + + +GLAPI void GLAPIENTRY trGetSeparableFilter( GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ) { + + trWriteCMD( CMD_GETSEPARABLEFILTER ); + trWriteEnum( target ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)row ); + trFileFlush(); + trWritePointer( (void *)column ); + trFileFlush(); + trWritePointer( (void *)span ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetSeparableFilter( target, format, type, row, column, span ); + trError(); + } +} + + +GLAPI const GLubyte* GLAPIENTRY trGetString( GLenum name ) { + const GLubyte * tmpstring; + + trWriteCMD( CMD_GETSTRING ); + trWriteEnum( name ); + + if( trCtx()->doExec ) { + tmpstring = trGetDispatch()->GetString( name ); + trError(); + } else { + tmpstring = NULL; + } + + trWriteString( (char *)tmpstring ); + return tmpstring; +} + + +GLAPI void GLAPIENTRY trGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETTEXENVFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexEnvfv( target, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_TEXTURE_ENV_MODE: + params[0] = 0.0; + break; + case GL_TEXTURE_ENV_COLOR: + memset( params, 0, 4 * sizeof(GLfloat) ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } + } + switch( pname ) { + case GL_TEXTURE_ENV_MODE: + trWritef( params[0] ); + break; + case GL_TEXTURE_ENV_COLOR: + trWriteArrayf( 4, params ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetTexEnviv( GLenum target, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETTEXENVIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexEnviv( target, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_TEXTURE_ENV_MODE: + params[0] = 0; + break; + case GL_TEXTURE_ENV_COLOR: + memset( params, 0, 4 * sizeof(GLint) ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } + } + switch( pname ) { + case GL_TEXTURE_ENV_MODE: + trWritei( params[0] ); + break; + case GL_TEXTURE_ENV_COLOR: + trWriteArrayi( 4, params ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ) { + trWriteCMD( CMD_GETTEXGENDV ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexGendv( coord, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + params[0] = 0.0; + break; + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + memset( params, 0, 4 * sizeof(GLdouble) ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } + } + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + trWrited( params[0] ); + break; + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + trWriteArrayd( 4, params ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETTEXGENFV ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexGenfv( coord, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + params[0] = 0.0; + break; + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + memset( params, 0, 4 * sizeof(GLfloat) ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } + } + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + trWritef( params[0] ); + break; + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + trWriteArrayf( 4, params ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetTexGeniv( GLenum coord, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETTEXGENIV ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexGeniv( coord, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + params[0] = 0; + break; + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + memset( params, 0, 4 * sizeof(GLint) ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } + } + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + trWritei( params[0] ); + break; + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + trWriteArrayi( 4, params ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ) { /* TODO */ + + trWriteCMD( CMD_GETTEXIMAGE ); + trWriteEnum( target ); + trWritei( level ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexImage( target, level, format, type, pixels ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trGetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params ) { + trWriteCMD( CMD_GETTEXLEVELPARAMETERFV ); + trWriteEnum( target ); + trWritei( level ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexLevelParameterfv( target, level, pname, params ); + trError(); + } else { + params[0] = 0.0; + } + trWritef( params[0] ); +} + + +GLAPI void GLAPIENTRY trGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETTEXLEVELPARAMETERIV ); + trWriteEnum( target ); + trWritei( level ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexLevelParameteriv( target, level, pname, params ); + trError(); + } else { + params[0] = 0; + } + trWritei( params[0] ); +} + + +GLAPI void GLAPIENTRY trGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params) { + trWriteCMD( CMD_GETTEXPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexParameterfv( target, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_TEXTURE_MAG_FILTER: + case GL_TEXTURE_MIN_FILTER: + case GL_TEXTURE_MIN_LOD: + case GL_TEXTURE_MAX_LOD: + case GL_TEXTURE_BASE_LEVEL: + case GL_TEXTURE_MAX_LEVEL: + case GL_TEXTURE_WRAP_S: + case GL_TEXTURE_WRAP_T: + case GL_TEXTURE_WRAP_R: + case GL_TEXTURE_PRIORITY: + case GL_TEXTURE_RESIDENT: + params[0] = 0.0; + break; + case GL_TEXTURE_BORDER_COLOR: + memset( params, 0, 4 * sizeof(GLfloat) ); + default: + /* The 2nd pass should pick this up. */ + break; + } + } + switch( pname ) { + case GL_TEXTURE_MAG_FILTER: + case GL_TEXTURE_MIN_FILTER: + case GL_TEXTURE_MIN_LOD: + case GL_TEXTURE_MAX_LOD: + case GL_TEXTURE_BASE_LEVEL: + case GL_TEXTURE_MAX_LEVEL: + case GL_TEXTURE_WRAP_S: + case GL_TEXTURE_WRAP_T: + case GL_TEXTURE_WRAP_R: + case GL_TEXTURE_PRIORITY: + case GL_TEXTURE_RESIDENT: + trWritef( params[0] ); + break; + case GL_TEXTURE_BORDER_COLOR: + trWriteArrayf( 4, params ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trGetTexParameteriv( GLenum target, GLenum pname, GLint *params ) { + trWriteCMD( CMD_GETTEXPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->GetTexParameteriv( target, pname, params ); + trError(); + } else { + switch( pname ) { + case GL_TEXTURE_MAG_FILTER: + case GL_TEXTURE_MIN_FILTER: + case GL_TEXTURE_MIN_LOD: + case GL_TEXTURE_MAX_LOD: + case GL_TEXTURE_BASE_LEVEL: + case GL_TEXTURE_MAX_LEVEL: + case GL_TEXTURE_WRAP_S: + case GL_TEXTURE_WRAP_T: + case GL_TEXTURE_WRAP_R: + case GL_TEXTURE_PRIORITY: + case GL_TEXTURE_RESIDENT: + params[0] = 0; + break; + case GL_TEXTURE_BORDER_COLOR: + memset( params, 0, 4 * sizeof(GLint) ); + default: + /* The 2nd pass should pick this up. */ + break; + } + } + switch( pname ) { + case GL_TEXTURE_MAG_FILTER: + case GL_TEXTURE_MIN_FILTER: + case GL_TEXTURE_MIN_LOD: + case GL_TEXTURE_MAX_LOD: + case GL_TEXTURE_BASE_LEVEL: + case GL_TEXTURE_MAX_LEVEL: + case GL_TEXTURE_WRAP_S: + case GL_TEXTURE_WRAP_T: + case GL_TEXTURE_WRAP_R: + case GL_TEXTURE_PRIORITY: + case GL_TEXTURE_RESIDENT: + trWritei( params[0] ); + break; + case GL_TEXTURE_BORDER_COLOR: + trWriteArrayi( 4, params ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } +} + + +GLAPI void GLAPIENTRY trHint( GLenum target, GLenum mode ) { + trWriteCMD( CMD_HINT ); + trWriteEnum( target ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->Hint( target, mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trHistogram( GLenum target, GLsizei width, GLenum internalformat, GLboolean sink ) { + trWriteCMD( CMD_HISTOGRAM ); + trWriteEnum( target ); + trWriteSizei( width ); + trWriteEnum( internalformat ); + trWriteBool( sink ); + + if( trCtx()->doExec ) { + trGetDispatch()->Histogram( target, width, internalformat, sink ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexd( GLdouble c ) { + trWriteCMD( CMD_INDEXD ); + trWrited( c ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexd( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexdv( const GLdouble *c ) { + trWriteCMD( CMD_INDEXDV ); + trWritePointer( (void *)c ); + trFileFlush(); + trWrited( c[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexdv( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexf( GLfloat c ) { + trWriteCMD( CMD_INDEXF ); + trWritef( c ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexf( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexfv( const GLfloat *c ) { + trWriteCMD( CMD_INDEXFV ); + trWritePointer( (void *)c ); + trFileFlush(); + trWritef( c[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexfv( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexi( GLint c ) { + trWriteCMD( CMD_INDEXI ); + trWritei( c ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexi( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexiv( const GLint *c ) { + trWriteCMD( CMD_INDEXIV ); + trWritePointer( (void *)c ); + trFileFlush(); + trWritei( c[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexiv( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexMask( GLuint mask ) { + trWriteCMD( CMD_INDEXMASK ); + trWriteui( mask ); + + if( trCtx()->doExec ) { + trGetDispatch()->IndexMask( mask ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexPointerEXT( GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */ + trWriteCMD( CMD_INDEXPOINTEREXT ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWriteSizei( count ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->IndexPointerEXT( type, stride, count, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */ + trace_context_t * tctx; + + trWriteCMD( CMD_INDEXPOINTER ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + tctx = trCtx(); + + if( tctx->doExec ) { + trGetDispatch()->IndexPointer( type, stride, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexs( GLshort c ) { + trWriteCMD( CMD_INDEXS ); + trWrites( c ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexs( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexsv( const GLshort *c ) { + trWriteCMD( CMD_INDEXSV ); + trWritePointer( (void *)c ); + trFileFlush(); + trWrites( c[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexsv( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexub( GLubyte c ) { + trWriteCMD( CMD_INDEXUB ); + trWriteub( c ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexub( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trIndexubv( const GLubyte *c ) { + trWriteCMD( CMD_INDEXUBV ); + trWritePointer( (void *)c ); + trFileFlush(); + trWriteub( c[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->Indexubv( c ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trInitNames( void ) { + trWriteCMD( CMD_INITNAMES ); + + if( trCtx()->doExec ) { + trGetDispatch()->InitNames( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trInterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer ) { /* TODO */ + trace_context_t * tctx = trCtx(); + + trWriteCMD( CMD_INTERLEAVEDARRAYS ); + trWriteEnum( format ); + trWriteSizei( stride ); + trWritePointer( (void *)pointer ); + trFileFlush(); + + if( tctx->doExec ) { + trSetOriginalDispatch(); + trGetDispatch()->InterleavedArrays( format, stride, pointer ); + trSetTraceDispatch(); + trError(); + } +} + + +GLAPI GLboolean GLAPIENTRY trIsEnabled( GLenum cap ) { + GLboolean retval; + + trWriteCMD( CMD_ISENABLED ); + trWriteEnum( cap ); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->IsEnabled( cap ); + trError(); + } else { + retval = GL_FALSE; + } + trWriteBool( retval ); + return retval; +} + + +GLAPI GLboolean GLAPIENTRY trIsList( GLuint list ) { + GLboolean retval; + + trWriteCMD( CMD_ISLIST ); + trWriteui( list ); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->IsList( list ); + trError(); + } else { + retval = GL_FALSE; + } + trWriteBool( retval ); + return retval; +} + + +GLAPI GLboolean GLAPIENTRY trIsTexture( GLuint texture ) { + GLboolean retval; + + trWriteCMD( CMD_ISTEXTURE ); + trWriteui( texture ); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->IsTexture( texture ); + trError(); + } else { + retval = GL_FALSE; + } + trWriteBool( retval ); + return retval; +} + + +GLAPI GLboolean GLAPIENTRY trIsTextureEXT( GLuint texture ) { + GLboolean retval; + + trWriteCMD( CMD_ISTEXTUREEXT ); + trWriteui( texture ); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->IsTextureEXT( texture ); + trError(); + } else { + retval = GL_FALSE; + } + trWriteBool( retval ); + return retval; +} + + +GLAPI void GLAPIENTRY trLightf( GLenum light, GLenum pname, GLfloat param ) { + trWriteCMD( CMD_LIGHTF ); + trWriteEnum( light ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->Lightf( light, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLightfv( GLenum light, GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_LIGHTFV ); + trWriteEnum( light ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_POSITION: + trWriteArrayf( 4, params ); + break; + case GL_SPOT_DIRECTION: + trWriteArrayf( 3, params ); + break; + case GL_SPOT_EXPONENT: + case GL_SPOT_CUTOFF: + case GL_CONSTANT_ATTENUATION: + case GL_LINEAR_ATTENUATION: + case GL_QUADRATIC_ATTENUATION: + trWritef( params[0] ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Lightfv( light, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLighti( GLenum light, GLenum pname, GLint param ) { + trWriteCMD( CMD_LIGHTI ); + trWriteEnum( light ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->Lighti( light, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLightiv( GLenum light, GLenum pname, const GLint *params ) { + trWriteCMD( CMD_LIGHTIV ); + trWriteEnum( light ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_SPECULAR: + case GL_POSITION: + trWriteArrayi( 4, params ); + break; + case GL_SPOT_DIRECTION: + trWriteArrayi( 3, params ); + break; + case GL_SPOT_EXPONENT: + case GL_SPOT_CUTOFF: + case GL_CONSTANT_ATTENUATION: + case GL_LINEAR_ATTENUATION: + case GL_QUADRATIC_ATTENUATION: + trWritei( params[0] ); + break; + default: + /* The 2nd pass should pick this up. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Lightiv( light, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLightModelf( GLenum pname, GLfloat param ) { + trWriteCMD( CMD_LIGHTMODELF ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->LightModelf( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLightModelfv( GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_LIGHTMODELFV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_LIGHT_MODEL_AMBIENT: + trWriteArrayf( 4, params ); + break; + case GL_LIGHT_MODEL_COLOR_CONTROL: + case GL_LIGHT_MODEL_LOCAL_VIEWER: + case GL_LIGHT_MODEL_TWO_SIDE: + trWritef( params[0] ); + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->LightModelfv( pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLightModeli( GLenum pname, GLint param ) { + trWriteCMD( CMD_LIGHTMODELI ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->LightModeli( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLightModeliv( GLenum pname, const GLint *params ) { + trWriteCMD( CMD_LIGHTMODELIV ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_LIGHT_MODEL_AMBIENT: + trWriteArrayi( 4, params ); + break; + case GL_LIGHT_MODEL_COLOR_CONTROL: + case GL_LIGHT_MODEL_LOCAL_VIEWER: + case GL_LIGHT_MODEL_TWO_SIDE: + trWritei( params[0] ); + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->LightModeliv( pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLineStipple( GLint factor, GLushort pattern ) { + trWriteCMD( CMD_LINESTIPPLE ); + trWritei( factor ); + trWriteus( pattern ); + + if( trCtx()->doExec ) { + trGetDispatch()->LineStipple( factor, pattern ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLineWidth( GLfloat width ) { + trWriteCMD( CMD_LINEWIDTH ); + trWritef( width ); + + if( trCtx()->doExec ) { + trGetDispatch()->LineWidth( width ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trListBase( GLuint base ) { + trWriteCMD( CMD_LISTBASE ); + trWriteui( base ); + + if( trCtx()->doExec ) { + trGetDispatch()->ListBase( base ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLoadIdentity( void ) { + trWriteCMD( CMD_LOADIDENTITY ); + + if( trCtx()->doExec ) { + trGetDispatch()->LoadIdentity( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLoadMatrixd( const GLdouble *m ) { + trWriteCMD( CMD_LOADMATRIXD ); + trWritePointer( (void *)m ); + trFileFlush(); + trWriteArrayd( 16, m ); + + if( trCtx()->doExec ) { + trGetDispatch()->LoadMatrixd( m ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLoadMatrixf( const GLfloat *m ) { + trWriteCMD( CMD_LOADMATRIXF ); + trWritePointer( (void *)m ); + trFileFlush(); + trWriteArrayf( 16, m ); + + if( trCtx()->doExec ) { + trGetDispatch()->LoadMatrixf( m ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLoadName( GLuint name ) { + trWriteCMD( CMD_LOADNAME ); + trWriteui( name ); + + if( trCtx()->doExec ) { + trGetDispatch()->LoadName( name ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLockArraysEXT( GLint first, GLsizei count ) { + trWriteCMD( CMD_LOCKARRAYSEXT ); + trWritei( first ); + trWriteSizei( count ); + + if( trCtx()->doExec ) { + trGetDispatch()->LockArraysEXT( first, count ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trLogicOp( GLenum opcode ) { + trWriteCMD( CMD_LOGICOP ); + trWriteEnum( opcode ); + + if( trCtx()->doExec ) { + trGetDispatch()->LogicOp( opcode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMap1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points ) { + GLint i; + + trWriteCMD( CMD_MAP1D ); + trWriteEnum( target ); + trWrited( u1 ); + trWrited( u2 ); + trWritei( stride ); + trWritei( order ); + trWritePointer( (void *)points ); + trFileFlush(); + + switch( target ) { + case GL_MAP1_INDEX: + case GL_MAP1_TEXTURE_COORD_1: + for( i = 0; i < stride * order; i += stride ) { + trWrited( points[i] ); + } + break; + case GL_MAP1_TEXTURE_COORD_2: + for( i = 0; i < stride * order; i += stride ) { + trWrited( points[i] ); + trWrited( points[i + 1] ); + } + break; + case GL_MAP1_VERTEX_3: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_3: + for( i = 0; i < stride * order; i += stride ) { + trWrited( points[i] ); + trWrited( points[i + 1] ); + trWrited( points[i + 2] ); + } + break; + case GL_MAP1_VERTEX_4: + case GL_MAP1_TEXTURE_COORD_4: + for( i = 0; i < stride * order; i += stride ) { + trWrited( points[i] ); + trWrited( points[i + 1] ); + trWrited( points[i + 2] ); + trWrited( points[i + 3] ); + } + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Map1d( target, u1, u2, stride, order, points ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points ) { + GLint i; + + trWriteCMD( CMD_MAP1F ); + trWriteEnum( target ); + trWritef( u1 ); + trWritef( u2 ); + trWritei( stride ); + trWritei( order ); + trWritePointer( (void *)points ); + trFileFlush(); + + switch( target ) { + case GL_MAP1_INDEX: + case GL_MAP1_TEXTURE_COORD_1: + for( i = 0; i < stride * order; i += stride ) { + trWritef( points[i] ); + } + break; + case GL_MAP1_TEXTURE_COORD_2: + for( i = 0; i < stride * order; i += stride ) { + trWritef( points[i] ); + trWritef( points[i + 1] ); + } + break; + case GL_MAP1_VERTEX_3: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_3: + for( i = 0; i < stride * order; i += stride ) { + trWritef( points[i] ); + trWritef( points[i + 1] ); + trWritef( points[i + 2] ); + } + break; + case GL_MAP1_VERTEX_4: + case GL_MAP1_TEXTURE_COORD_4: + for( i = 0; i < stride * order; i += stride ) { + trWritef( points[i] ); + trWritef( points[i + 1] ); + trWritef( points[i + 2] ); + trWritef( points[i + 3] ); + } + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Map1f( target, u1, u2, stride, order, points ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMap2d( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points ) { + GLint i; + GLint j; + + trWriteCMD( CMD_MAP2D ); + trWriteEnum( target ); + trWrited( u1 ); + trWrited( u2 ); + trWritei( ustride ); + trWritei( uorder ); + trWrited( v1 ); + trWrited( v2 ); + trWritei( vstride ); + trWritei( vorder ); + trWritePointer( (void *)points ); + trFileFlush(); + + switch( target ) { + case GL_MAP1_INDEX: + case GL_MAP1_TEXTURE_COORD_1: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWrited( points[i + j] ); + } + } + break; + case GL_MAP1_TEXTURE_COORD_2: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWrited( points[i + j] ); + trWrited( points[i + j + 1] ); + } + } + break; + case GL_MAP1_VERTEX_3: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_3: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWrited( points[i + j] ); + trWrited( points[i + j + 1] ); + trWrited( points[i + j + 2] ); + } + } + break; + case GL_MAP1_VERTEX_4: + case GL_MAP1_TEXTURE_COORD_4: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWrited( points[i + j] ); + trWrited( points[i + j + 1] ); + trWrited( points[i + j + 2] ); + trWrited( points[i + j + 3] ); + } + } + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Map2d( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points ) { + GLint i; + GLint j; + + trWriteCMD( CMD_MAP2F ); + trWriteEnum( target ); + trWritef( u1 ); + trWritef( u2 ); + trWritei( ustride ); + trWritei( uorder ); + trWritef( v1 ); + trWritef( v2 ); + trWritei( vstride ); + trWritei( vorder ); + trWritePointer( (void *)points ); + trFileFlush(); + + switch( target ) { + case GL_MAP1_INDEX: + case GL_MAP1_TEXTURE_COORD_1: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWritef( points[i + j] ); + } + } + break; + case GL_MAP1_TEXTURE_COORD_2: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWritef( points[i + j] ); + trWritef( points[i + j + 1] ); + } + } + break; + case GL_MAP1_VERTEX_3: + case GL_MAP1_NORMAL: + case GL_MAP1_TEXTURE_COORD_3: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWritef( points[i + j] ); + trWritef( points[i + j + 1] ); + trWritef( points[i + j + 2] ); + } + } + break; + case GL_MAP1_VERTEX_4: + case GL_MAP1_TEXTURE_COORD_4: + for( j = 0; j < vstride * vorder; j += vstride ) { + for( i = 0; i < ustride * uorder; i += ustride ) { + trWritef( points[i + j] ); + trWritef( points[i + j + 1] ); + trWritef( points[i + j + 2] ); + trWritef( points[i + j + 3] ); + } + } + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Map2f( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ) { + trWriteCMD( CMD_MAPGRID1D ); + trWritei( un ); + trWrited( u1 ); + trWrited( u2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->MapGrid1d( un, u1, u2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ) { + trWriteCMD( CMD_MAPGRID1F ); + trWritei( un ); + trWritef( u1 ); + trWritef( u2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->MapGrid1f( un, u1, u2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMapGrid2d( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 ) { + trWriteCMD( CMD_MAPGRID2D ); + trWritei( un ); + trWrited( u1 ); + trWrited( u2 ); + trWritei( vn ); + trWrited( v1 ); + trWrited( v2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->MapGrid2d( un, u1, u2, vn, v1, v2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMapGrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ) { + trWriteCMD( CMD_MAPGRID2F ); + trWritei( un ); + trWritef( u1 ); + trWritef( u2 ); + trWritei( vn ); + trWritef( v1 ); + trWritef( v2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->MapGrid2f( un, u1, u2, vn, v1, v2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMaterialf( GLenum face, GLenum pname, GLfloat param ) { + trWriteCMD( CMD_MATERIALF ); + trWriteEnum( face ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->Materialf( face, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMaterialfv( GLenum face, GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_MATERIALFV ); + trWriteEnum( face ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_AMBIENT_AND_DIFFUSE: + case GL_SPECULAR: + case GL_EMISSION: + trWriteArrayf( 4, params ); + break; + case GL_SHININESS: + trWritef( params[0] ); + break; + case GL_COLOR_INDEXES: + trWriteArrayf( 3, params ); + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Materialfv( face, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMateriali( GLenum face, GLenum pname, GLint param ) { + trWriteCMD( CMD_MATERIALI ); + trWriteEnum( face ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->Materiali( face, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMaterialiv( GLenum face, GLenum pname, const GLint *params ) { + trWriteCMD( CMD_MATERIALIV ); + trWriteEnum( face ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_AMBIENT: + case GL_DIFFUSE: + case GL_AMBIENT_AND_DIFFUSE: + case GL_SPECULAR: + case GL_EMISSION: + trWriteArrayi( 4, params ); + break; + case GL_SHININESS: + trWritei( params[0] ); + break; + case GL_COLOR_INDEXES: + trWriteArrayi( 3, params ); + break; + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->Materialiv( face, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMatrixMode( GLenum mode ) { + trWriteCMD( CMD_MATRIXMODE ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->MatrixMode( mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMinmax( GLenum target, GLenum internalformat, GLboolean sink ) { + trWriteCMD( CMD_MINMAX ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWriteBool( sink ); + + if( trCtx()->doExec ) { + trGetDispatch()->Minmax( target, internalformat, sink ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1dARB( GLenum target, GLdouble s) { + trWriteCMD( CMD_MULTITEXCOORD1DARB ); + trWriteEnum( target ); + trWrited( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1dARB( target, s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1dvARB( GLenum target, const GLdouble *v) { + trWriteCMD( CMD_MULTITEXCOORD1DVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWrited( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1dvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1fARB( GLenum target, GLfloat s) { + trWriteCMD( CMD_MULTITEXCOORD1FARB ); + trWriteEnum( target ); + trWritef( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1fARB( target, s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1fvARB( GLenum target, const GLfloat *v) { + trWriteCMD( CMD_MULTITEXCOORD1FVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWritef( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1fvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1iARB( GLenum target, GLint s) { + trWriteCMD( CMD_MULTITEXCOORD1IARB ); + trWriteEnum( target ); + trWritei( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1iARB( target, s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1ivARB( GLenum target, const GLint *v) { + trWriteCMD( CMD_MULTITEXCOORD1IVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWritei( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1ivARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1sARB( GLenum target, GLshort s) { + trWriteCMD( CMD_MULTITEXCOORD1SARB ); + trWriteEnum( target ); + trWrites( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1sARB( target, s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord1svARB( GLenum target, const GLshort *v) { + trWriteCMD( CMD_MULTITEXCOORD1SVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWrites( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord1svARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2dARB( GLenum target, GLdouble s, GLdouble t) { + trWriteCMD( CMD_MULTITEXCOORD2DARB ); + trWriteEnum( target ); + trWrited( s ); + trWrited( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2dARB( target, s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2dvARB( GLenum target, const GLdouble *v) { + trWriteCMD( CMD_MULTITEXCOORD2DVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2dvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2fARB( GLenum target, GLfloat s, GLfloat t) { + trWriteCMD( CMD_MULTITEXCOORD2FARB ); + trWriteEnum( target ); + trWritef( s ); + trWritef( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2fARB( target, s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2fvARB( GLenum target, const GLfloat *v) { + trWriteCMD( CMD_MULTITEXCOORD2FVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2fvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2iARB( GLenum target, GLint s, GLint t) { + trWriteCMD( CMD_MULTITEXCOORD2IARB ); + trWriteEnum( target ); + trWritei( s ); + trWritei( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2iARB( target, s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2ivARB( GLenum target, const GLint *v) { + trWriteCMD( CMD_MULTITEXCOORD2IVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2ivARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2sARB( GLenum target, GLshort s, GLshort t) { + trWriteCMD( CMD_MULTITEXCOORD2SARB ); + trWriteEnum( target ); + trWrites( s ); + trWrites( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2sARB( target, s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord2svARB( GLenum target, const GLshort *v) { + trWriteCMD( CMD_MULTITEXCOORD2SVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord2svARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3dARB( GLenum target, GLdouble s, GLdouble t, GLdouble r) { + trWriteCMD( CMD_MULTITEXCOORD3DARB ); + trWriteEnum( target ); + trWrited( s ); + trWrited( t ); + trWrited( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3dARB( target, s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3dvARB( GLenum target, const GLdouble *v) { + trWriteCMD( CMD_MULTITEXCOORD3DVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3dvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3fARB( GLenum target, GLfloat s, GLfloat t, GLfloat r) { + trWriteCMD( CMD_MULTITEXCOORD3FARB ); + trWriteEnum( target ); + trWritef( s ); + trWritef( t ); + trWritef( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3fARB( target, s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3fvARB( GLenum target, const GLfloat *v) { + trWriteCMD( CMD_MULTITEXCOORD3FVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3fvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3iARB( GLenum target, GLint s, GLint t, GLint r) { + trWriteCMD( CMD_MULTITEXCOORD3IARB ); + trWriteEnum( target ); + trWritei( s ); + trWritei( t ); + trWritei( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3iARB( target, s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3ivARB( GLenum target, const GLint *v) { + trWriteCMD( CMD_MULTITEXCOORD3IVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3ivARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3sARB( GLenum target, GLshort s, GLshort t, GLshort r) { + trWriteCMD( CMD_MULTITEXCOORD3SARB ); + trWriteEnum( target ); + trWrites( s ); + trWrites( t ); + trWrites( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3sARB( target, s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord3svARB( GLenum target, const GLshort *v) { + trWriteCMD( CMD_MULTITEXCOORD3SVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord3svARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4dARB( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) { + trWriteCMD( CMD_MULTITEXCOORD4DARB ); + trWriteEnum( target ); + trWrited( s ); + trWrited( t ); + trWrited( r ); + trWrited( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4dARB( target, s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4dvARB( GLenum target, const GLdouble *v) { + trWriteCMD( CMD_MULTITEXCOORD4DVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4dvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4fARB( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { + trWriteCMD( CMD_MULTITEXCOORD4FARB ); + trWriteEnum( target ); + trWritef( s ); + trWritef( t ); + trWritef( r ); + trWritef( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4fARB( target, s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4fvARB( GLenum target, const GLfloat *v) { + trWriteCMD( CMD_MULTITEXCOORD4FVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4fvARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4iARB( GLenum target, GLint s, GLint t, GLint r, GLint q) { + trWriteCMD( CMD_MULTITEXCOORD4IARB ); + trWriteEnum( target ); + trWritei( s ); + trWritei( t ); + trWritei( r ); + trWritei( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4iARB( target, s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4ivARB( GLenum target, const GLint *v) { + trWriteCMD( CMD_MULTITEXCOORD4IVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4ivARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4sARB( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) { + trWriteCMD( CMD_MULTITEXCOORD4SARB ); + trWriteEnum( target ); + trWrites( s ); + trWrites( t ); + trWrites( r ); + trWrites( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4sARB( target, s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultiTexCoord4svARB( GLenum target, const GLshort *v) { + trWriteCMD( CMD_MULTITEXCOORD4SVARB ); + trWriteEnum( target ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultiTexCoord4svARB( target, v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultMatrixd( const GLdouble *m ) { + trWriteCMD( CMD_MULTMATRIXD ); + trWritePointer( (void *)m ); + trFileFlush(); + trWriteArrayd( 16, m ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultMatrixd( m ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trMultMatrixf( const GLfloat *m ) { + trWriteCMD( CMD_MULTMATRIXF ); + trWritePointer( (void *)m ); + trFileFlush(); + trWriteArrayf( 16, m ); + + if( trCtx()->doExec ) { + trGetDispatch()->MultMatrixf( m ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNewList( GLuint list, GLenum mode ) { + trWriteCMD( CMD_NEWLIST ); + trWriteui( list ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->NewList( list, mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ) { + trWriteCMD( CMD_NORMAL3B ); + trWriteb( nx ); + trWriteb( ny ); + trWriteb( nz ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3b( nx, ny, nz ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3bv( const GLbyte *v ) { + trWriteCMD( CMD_NORMAL3BV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayb( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3bv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ) { + trWriteCMD( CMD_NORMAL3D ); + trWrited( nx ); + trWrited( ny ); + trWrited( nz ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3d( nx, ny, nz ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3dv( const GLdouble *v ) { + trWriteCMD( CMD_NORMAL3DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ) { + trWriteCMD( CMD_NORMAL3F ); + trWritef( nx ); + trWritef( ny ); + trWritef( nz ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3f( nx, ny, nz ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3fv( const GLfloat *v ) { + trWriteCMD( CMD_NORMAL3FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3i( GLint nx, GLint ny, GLint nz ) { + trWriteCMD( CMD_NORMAL3I ); + trWritei( nx ); + trWritei( ny ); + trWritei( nz ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3i( nx, ny, nz ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3iv( const GLint *v ) { + trWriteCMD( CMD_NORMAL3IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3s( GLshort nx, GLshort ny, GLshort nz ) { + trWriteCMD( CMD_NORMAL3S ); + trWrites( nx ); + trWrites( ny ); + trWrites( nz ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3s( nx, ny, nz ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormal3sv( const GLshort *v ) { + trWriteCMD( CMD_NORMAL3SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Normal3sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormalPointerEXT( GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */ + trWriteCMD( CMD_NORMALPOINTEREXT ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWriteSizei( count ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->NormalPointerEXT( type, stride, count, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trNormalPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */ + trWriteCMD( CMD_NORMALPOINTER ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->NormalPointer( type, stride, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) { + trWriteCMD( CMD_ORTHO ); + trWrited( left ); + trWrited( right ); + trWrited( bottom ); + trWrited( top ); + trWrited( near_val ); + trWrited( far_val ); + + if( trCtx()->doExec ) { + trGetDispatch()->Ortho( left, right, bottom, top, near_val, far_val ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPassThrough( GLfloat token ) { + trWriteCMD( CMD_PASSTHROUGH ); + trWritef( token ); + + if( trCtx()->doExec ) { + trGetDispatch()->PassThrough( token ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelMapfv( GLenum map, GLint mapsize, const GLfloat *values ) { + trWriteCMD( CMD_PIXELMAPFV ); + trWriteEnum( map ); + trWritei( mapsize ); + trWritePointer( (void *)values ); + trFileFlush(); + trWriteArrayf( mapsize, values ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelMapfv( map, mapsize, values ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelMapuiv( GLenum map, GLint mapsize, const GLuint *values ) { + trWriteCMD( CMD_PIXELMAPUIV ); + trWriteEnum( map ); + trWritei( mapsize ); + trWritePointer( (void *)values ); + trFileFlush(); + trWriteArrayui( mapsize, values ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelMapuiv( map, mapsize, values ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelMapusv( GLenum map, GLint mapsize, const GLushort *values ) { + trWriteCMD( CMD_PIXELMAPUSV ); + trWriteEnum( map ); + trWritei( mapsize ); + trWritePointer( (void *)values ); + trFileFlush(); + trWriteArrayus( mapsize, values ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelMapusv( map, mapsize, values ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelStoref( GLenum pname, GLfloat param ) { + trWriteCMD( CMD_PIXELSTOREF ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelStoref( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelStorei( GLenum pname, GLint param ) { + trWriteCMD( CMD_PIXELSTOREI ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelStorei( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelTransferf( GLenum pname, GLfloat param ) { + trWriteCMD( CMD_PIXELTRANSFERF ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelTransferf( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelTransferi( GLenum pname, GLint param ) { + trWriteCMD( CMD_PIXELTRANSFERI ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelTransferi( pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPixelZoom( GLfloat xfactor, GLfloat yfactor ) { + trWriteCMD( CMD_PIXELZOOM ); + trWritef( xfactor ); + trWritef( yfactor ); + + if( trCtx()->doExec ) { + trGetDispatch()->PixelZoom( xfactor, yfactor ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPointParameterfEXT( GLenum pname, GLfloat param ) { + trWriteCMD( CMD_POINTPARAMETERFEXT ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->PointParameterfEXT( pname, param ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trPointParameterfSGIS( GLenum pname, GLfloat param) { + trWriteCMD( CMD_POINTPARAMETERFSGIS ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->PointParameterfSGIS( pname, param ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trPointParameterfvEXT( GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_POINTPARAMETERFVEXT ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_POINT_SIZE_MIN_EXT: + case GL_POINT_SIZE_MAX_EXT: + case GL_POINT_FADE_THRESHOLD_SIZE_EXT: + trWritef( params[0] ); + break; + + case GL_DISTANCE_ATTENUATION_EXT: + trWriteArrayf( 3, params ); + break; + + default: + /* The 2nd pass should handle this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->PointParameterfvEXT( pname, params ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trPointParameterfvSGIS( GLenum pname, const GLfloat *params) { /* TODO */ + trWriteCMD( CMD_POINTPARAMETERFVSGIS ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->PointParameterfvSGIS( pname, params ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trPointSize( GLfloat size ) { + trWriteCMD( CMD_POINTSIZE ); + trWritef( size ); + + if( trCtx()->doExec ) { + trGetDispatch()->PointSize( size ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPolygonMode( GLenum face, GLenum mode ) { + trWriteCMD( CMD_POLYGONMODE ); + trWriteEnum( face ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->PolygonMode( face, mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPolygonOffsetEXT( GLfloat factor, GLfloat bias ) { + trWriteCMD( CMD_POLYGONOFFSETEXT ); + trWritef( factor ); + trWritef( bias ); + + if( trCtx()->doExec ) { + trGetDispatch()->PolygonOffsetEXT( factor, bias ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPolygonOffset( GLfloat factor, GLfloat units ) { + trWriteCMD( CMD_POLYGONOFFSET ); + trWritef( factor ); + trWritef( units ); + + if( trCtx()->doExec ) { + trGetDispatch()->PolygonOffset( factor, units ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPolygonStipple( const GLubyte *mask ) { + trWriteCMD( CMD_POLYGONSTIPPLE ); + trWritePointer( (void *)mask ); + trFileFlush(); + trWriteArrayub( 64, mask ); + + if( trCtx()->doExec ) { + trGetDispatch()->PolygonStipple( mask ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPopAttrib( void ) { + trWriteCMD( CMD_POPATTRIB ); + + if( trCtx()->doExec ) { + trGetDispatch()->PopAttrib( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPopClientAttrib( void ) { + trWriteCMD( CMD_POPCLIENTATTRIB ); + + if( trCtx()->doExec ) { + trGetDispatch()->PopClientAttrib( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPopMatrix( void ) { + trWriteCMD( CMD_POPMATRIX ); + + if( trCtx()->doExec ) { + trGetDispatch()->PopMatrix( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPopName( void ) { + trWriteCMD( CMD_POPNAME ); + + if( trCtx()->doExec ) { + trGetDispatch()->PopName( ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trPrioritizeTexturesEXT( GLsizei n, const GLuint *textures, const GLclampf *priorities ) { + trWriteCMD( CMD_PRIORITIZETEXTURESEXT ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + trWriteArrayui( n, textures ); + + trWritePointer( (void *)priorities ); + trFileFlush(); + /* FIXME!!! */ + trWriteArrayf( n, priorities ); + + if( trCtx()->doExec ) { + trGetDispatch()->PrioritizeTexturesEXT( n, textures, priorities ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trPrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities ) { + trWriteCMD( CMD_PRIORITIZETEXTURES ); + trWriteSizei( n ); + trWritePointer( (void *)textures ); + trFileFlush(); + trWriteArrayui( n, textures ); + + trWritePointer( (void *)priorities ); + trFileFlush(); + /* FIXME!!! */ + trWriteArrayf( n, priorities ); + + if( trCtx()->doExec ) { + trGetDispatch()->PrioritizeTextures( n, textures, priorities ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPushAttrib( GLbitfield mask ) { + trWriteCMD( CMD_PUSHATTRIB ); + trWriteBits( mask ); + + if( trCtx()->doExec ) { + trGetDispatch()->PushAttrib( mask ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPushClientAttrib( GLbitfield mask ) { + trWriteCMD( CMD_PUSHCLIENTATTRIB ); + trWriteBits( mask ); + + if( trCtx()->doExec ) { + trGetDispatch()->PushClientAttrib( mask ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPushMatrix( void ) { + trWriteCMD( CMD_PUSHMATRIX ); + + if( trCtx()->doExec ) { + trGetDispatch()->PushMatrix( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trPushName( GLuint name ) { + trWriteCMD( CMD_PUSHNAME ); + trWriteui( name ); + + if( trCtx()->doExec ) { + trGetDispatch()->PushName( name ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2d( GLdouble x, GLdouble y ) { + trWriteCMD( CMD_RASTERPOS2D ); + trWrited( x ); + trWrited( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2d( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2dv( const GLdouble *v ) { + trWriteCMD( CMD_RASTERPOS2DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2f( GLfloat x, GLfloat y ) { + trWriteCMD( CMD_RASTERPOS2F ); + trWritef( x ); + trWritef( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2f( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2fv( const GLfloat *v ) { + trWriteCMD( CMD_RASTERPOS2FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2i( GLint x, GLint y ) { + trWriteCMD( CMD_RASTERPOS2I ); + trWritei( x ); + trWritei( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2i( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2iv( const GLint *v ) { + trWriteCMD( CMD_RASTERPOS2IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2s( GLshort x, GLshort y ) { + trWriteCMD( CMD_RASTERPOS2S ); + trWrites( x ); + trWrites( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2s( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos2sv( const GLshort *v ) { + trWriteCMD( CMD_RASTERPOS2SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos2sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3d( GLdouble x, GLdouble y, GLdouble z ) { + trWriteCMD( CMD_RASTERPOS3D ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3d( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3dv( const GLdouble *v ) { + trWriteCMD( CMD_RASTERPOS3DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3f( GLfloat x, GLfloat y, GLfloat z ) { + trWriteCMD( CMD_RASTERPOS3F ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3f( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3fv( const GLfloat *v ) { + trWriteCMD( CMD_RASTERPOS3FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3i( GLint x, GLint y, GLint z ) { + trWriteCMD( CMD_RASTERPOS3I ); + trWritei( x ); + trWritei( y ); + trWritei( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3i( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3iv( const GLint *v ) { + trWriteCMD( CMD_RASTERPOS3IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3s( GLshort x, GLshort y, GLshort z ) { + trWriteCMD( CMD_RASTERPOS3S ); + trWrites( x ); + trWrites( y ); + trWrites( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3s( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos3sv( const GLshort *v ) { + trWriteCMD( CMD_RASTERPOS3SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos3sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) { + trWriteCMD( CMD_RASTERPOS4D ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + trWrited( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4d( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4dv( const GLdouble *v ) { + trWriteCMD( CMD_RASTERPOS4DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) { + trWriteCMD( CMD_RASTERPOS4F ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + trWritef( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4f( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4fv( const GLfloat *v ) { + trWriteCMD( CMD_RASTERPOS4FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4i( GLint x, GLint y, GLint z, GLint w ) { + trWriteCMD( CMD_RASTERPOS4I ); + trWritei( x ); + trWritei( y ); + trWritei( z ); + trWritei( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4i( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4iv( const GLint *v ) { + trWriteCMD( CMD_RASTERPOS4IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ) { + trWriteCMD( CMD_RASTERPOS4S ); + trWrites( x ); + trWrites( y ); + trWrites( z ); + trWrites( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4s( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRasterPos4sv( const GLshort *v ) { + trWriteCMD( CMD_RASTERPOS4SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->RasterPos4sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trReadBuffer( GLenum mode ) { + trWriteCMD( CMD_READBUFFER ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->ReadBuffer( mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) { + GLint pixelsize; + + trWriteCMD( CMD_READPIXELS ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + pixelsize = trGetPixelSize( format, type ); + if( trCtx()->doExec ) { + trGetDispatch()->ReadPixels( x, y, width, height, format, type, pixels ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ) { + trWriteCMD( CMD_RECTD ); + trWrited( x1 ); + trWrited( y1 ); + trWrited( x2 ); + trWrited( y2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rectd( x1, y1, x2, y2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRectdv( const GLdouble *v1, const GLdouble *v2 ) { + trWriteCMD( CMD_RECTDV ); + trWritePointer( (void *)v1 ); + trFileFlush(); + trWriteArrayd( 2, v1 ); + + trWritePointer( (void *)v2 ); + trFileFlush(); + trWriteArrayd( 2, v2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rectdv( v1, v2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ) { + trWriteCMD( CMD_RECTF ); + trWritef( x1 ); + trWritef( y1 ); + trWritef( x2 ); + trWritef( y2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rectf( x1, y1, x2, y2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRectfv( const GLfloat *v1, const GLfloat *v2 ) { + trWriteCMD( CMD_RECTFV ); + trWritePointer( (void *)v1 ); + trFileFlush(); + trWriteArrayf( 2, v1 ); + + trWritePointer( (void *)v2 ); + trFileFlush(); + trWriteArrayf( 2, v2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rectfv( v1, v2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRecti( GLint x1, GLint y1, GLint x2, GLint y2 ) { + trWriteCMD( CMD_RECTI ); + trWritei( x1 ); + trWritei( y1 ); + trWritei( x2 ); + trWritei( y2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Recti( x1, y1, x2, y2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRectiv( const GLint *v1, const GLint *v2 ) { + trWriteCMD( CMD_RECTIV ); + trWritePointer( (void *)v1 ); + trFileFlush(); + trWriteArrayi( 2, v1 ); + + trWritePointer( (void *)v2 ); + trFileFlush(); + trWriteArrayi( 2, v2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rectiv( v1, v2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ) { + trWriteCMD( CMD_RECTS ); + trWrites( x1 ); + trWrites( y1 ); + trWrites( x2 ); + trWrites( y2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rects( x1, y1, x2, y2 ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRectsv( const GLshort *v1, const GLshort *v2 ) { + trWriteCMD( CMD_RECTSV ); + trWritePointer( (void *)v1 ); + trFileFlush(); + trWriteArrays( 2, v1 ); + + trWritePointer( (void *)v2 ); + trFileFlush(); + trWriteArrays( 2, v2 ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rectsv( v1, v2 ); + trError(); + } +} + + +GLAPI GLint GLAPIENTRY trRenderMode( GLenum mode ) { + GLint retval; + + trWriteCMD( CMD_RENDERMODE ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + retval = trGetDispatch()->RenderMode( mode ); + trError(); + } else { + retval = 0; + } + + trWritei( retval ); + return retval; +} + + +GLAPI void GLAPIENTRY trResetHistogram( GLenum target ) { + trWriteCMD( CMD_RESETHISTOGRAM ); + trWriteEnum( target ); + + if( trCtx()->doExec ) { + trGetDispatch()->ResetHistogram( target ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trResetMinmax( GLenum target ) { + trWriteCMD( CMD_RESETMINMAX ); + trWriteEnum( target ); + + if( trCtx()->doExec ) { + trGetDispatch()->ResetMinmax( target ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trResizeBuffersMESA( void ) { + trWriteCMD( CMD_RESIZEBUFFERSMESA ); + + if( trCtx()->doExec ) { + trGetDispatch()->ResizeBuffersMESA( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) { + trWriteCMD( CMD_ROTATED ); + trWrited( angle ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rotated( angle, x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) { + trWriteCMD( CMD_ROTATEF ); + trWritef( angle ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Rotatef( angle, x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trScaled( GLdouble x, GLdouble y, GLdouble z ) { + trWriteCMD( CMD_SCALED ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Scaled( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trScalef( GLfloat x, GLfloat y, GLfloat z ) { + trWriteCMD( CMD_SCALEF ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Scalef( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trScissor( GLint x, GLint y, GLsizei width, GLsizei height) { + trWriteCMD( CMD_SCISSOR ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + + if( trCtx()->doExec ) { + trGetDispatch()->Scissor( x, y, width, height ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trSelectBuffer( GLsizei size, GLuint *buffer ) { + trWriteCMD( CMD_SELECTBUFFER ); + trWriteSizei( size ); + trWritePointer( (void *)buffer ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->SelectBuffer( size, buffer ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trSeparableFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column ) { + GLint pixelsize; + + trWriteCMD( CMD_SEPARABLEFILTER2D ); + trWriteEnum( target ); + trWriteEnum( internalformat ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)row ); + trFileFlush(); + trWritePointer( (void *)column ); + trFileFlush(); + + pixelsize = trGetPixelSize( format, type ); + trWriteTypeArray( type, width, pixelsize, 0, row ); + trWriteTypeArray( type, height, pixelsize, 0, column ); + + if( trCtx()->doExec ) { + trGetDispatch()->SeparableFilter2D( target, internalformat, width, height, format, type, row, column ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trShadeModel( GLenum mode ) { + trWriteCMD( CMD_SHADEMODEL ); + trWriteEnum( mode ); + + if( trCtx()->doExec ) { + trGetDispatch()->ShadeModel( mode ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trStencilFunc( GLenum func, GLint ref, GLuint mask ) { + trWriteCMD( CMD_STENCILFUNC ); + trWriteEnum( func ); + trWritei( ref ); + trWriteui( mask ); + + if( trCtx()->doExec ) { + trGetDispatch()->StencilFunc( func, ref, mask ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trStencilMask( GLuint mask ) { + trWriteCMD( CMD_STENCILMASK ); + trWriteui( mask ); + + if( trCtx()->doExec ) { + trGetDispatch()->StencilMask( mask ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trStencilOp( GLenum fail, GLenum zfail, GLenum zpass ) { + trWriteCMD( CMD_STENCILOP ); + trWriteEnum( fail ); + trWriteEnum( zfail ); + trWriteEnum( zpass ); + + if( trCtx()->doExec ) { + trGetDispatch()->StencilOp( fail, zfail, zpass ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1d( GLdouble s ) { + trWriteCMD( CMD_TEXCOORD1D ); + trWrited( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1d( s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1dv( const GLdouble *v ) { + trWriteCMD( CMD_TEXCOORD1DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWrited( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1f( GLfloat s ) { + trWriteCMD( CMD_TEXCOORD1F ); + trWritef( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1f( s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1fv( const GLfloat *v ) { + trWriteCMD( CMD_TEXCOORD1FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWritef( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1i( GLint s ) { + trWriteCMD( CMD_TEXCOORD1I ); + trWritei( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1i( s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1iv( const GLint *v ) { + trWriteCMD( CMD_TEXCOORD1IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWritei( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1s( GLshort s ) { + trWriteCMD( CMD_TEXCOORD1S ); + trWrites( s ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1s( s ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord1sv( const GLshort *v ) { + trWriteCMD( CMD_TEXCOORD1SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWrites( v[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord1sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2d( GLdouble s, GLdouble t ) { + trWriteCMD( CMD_TEXCOORD2D ); + trWrited( s ); + trWrited( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2d( s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2dv( const GLdouble *v ) { + trWriteCMD( CMD_TEXCOORD2DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2f( GLfloat s, GLfloat t ) { + trWriteCMD( CMD_TEXCOORD2F ); + trWritef( s ); + trWritef( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2f( s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2fv( const GLfloat *v ) { + trWriteCMD( CMD_TEXCOORD2FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2i( GLint s, GLint t ) { + trWriteCMD( CMD_TEXCOORD2I ); + trWritei( s ); + trWritei( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2i( s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2iv( const GLint *v ) { + trWriteCMD( CMD_TEXCOORD2IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2s( GLshort s, GLshort t ) { + trWriteCMD( CMD_TEXCOORD2S ); + trWrites( s ); + trWrites( t ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2s( s, t ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord2sv( const GLshort *v ) { + trWriteCMD( CMD_TEXCOORD2SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord2sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3d( GLdouble s, GLdouble t, GLdouble r ) { + trWriteCMD( CMD_TEXCOORD3D ); + trWrited( s ); + trWrited( t ); + trWrited( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3d( s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3dv( const GLdouble *v ) { + trWriteCMD( CMD_TEXCOORD3DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3f( GLfloat s, GLfloat t, GLfloat r ) { + trWriteCMD( CMD_TEXCOORD3F ); + trWritef( s ); + trWritef( t ); + trWritef( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3f( s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3fv( const GLfloat *v ) { + trWriteCMD( CMD_TEXCOORD3FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3i( GLint s, GLint t, GLint r ) { + trWriteCMD( CMD_TEXCOORD3I ); + trWritei( s ); + trWritei( t ); + trWritei( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3i( s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3iv( const GLint *v ) { + trWriteCMD( CMD_TEXCOORD3IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3s( GLshort s, GLshort t, GLshort r ) { + trWriteCMD( CMD_TEXCOORD3S ); + trWrites( s ); + trWrites( t ); + trWrites( r ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3s( s, t, r ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord3sv( const GLshort *v ) { + trWriteCMD( CMD_TEXCOORD3SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord3sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ) { + trWriteCMD( CMD_TEXCOORD4D ); + trWrited( s ); + trWrited( t ); + trWrited( r ); + trWrited( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4d( s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4dv( const GLdouble *v ) { + trWriteCMD( CMD_TEXCOORD4DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ) { + trWriteCMD( CMD_TEXCOORD4F ); + trWritef( s ); + trWritef( t ); + trWritef( r ); + trWritef( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4f( s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4fv( const GLfloat *v ) { + trWriteCMD( CMD_TEXCOORD4FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4i( GLint s, GLint t, GLint r, GLint q ) { + trWriteCMD( CMD_TEXCOORD4I ); + trWritei( s ); + trWritei( t ); + trWritei( r ); + trWritei( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4i( s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4iv( const GLint *v ) { + trWriteCMD( CMD_TEXCOORD4IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ) { + trWriteCMD( CMD_TEXCOORD4S ); + trWrites( s ); + trWrites( t ); + trWrites( r ); + trWrites( q ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4s( s, t, r, q ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoord4sv( const GLshort *v ) { + trWriteCMD( CMD_TEXCOORD4SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoord4sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoordPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */ + trWriteCMD( CMD_TEXCOORDPOINTEREXT ); + trWritei( size ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWriteSizei( count ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->TexCoordPointerEXT( size, type, stride, count, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */ + trace_context_t * tctx; + + trWriteCMD( CMD_TEXCOORDPOINTER ); + trWritei( size ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( tctx->doExec ) { + trGetDispatch()->TexCoordPointer( size, type, stride, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexEnvf( GLenum target, GLenum pname, GLfloat param ) { + trWriteCMD( CMD_TEXENVF ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexEnvf( target, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_TEXENVFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_TEXTURE_ENV_MODE: + trWritef( params[0] ); + break; + case GL_TEXTURE_ENV_COLOR: + trWriteArrayf( 4, params ); + break; + default: + /* The 2nd pass should catch this */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->TexEnvfv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexEnvi( GLenum target, GLenum pname, GLint param ) { + trWriteCMD( CMD_TEXENVI ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexEnvi( target, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexEnviv( GLenum target, GLenum pname, const GLint *params ) { + trWriteCMD( CMD_TEXENVIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_TEXTURE_ENV_MODE: + trWritei( params[0] ); + break; + case GL_TEXTURE_ENV_COLOR: + trWriteArrayi( 4, params ); + break; + default: + /* The 2nd pass should catch this */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->TexEnviv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexGend( GLenum coord, GLenum pname, GLdouble param ) { + trWriteCMD( CMD_TEXGEND ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWrited( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexGend( coord, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexGendv( GLenum coord, GLenum pname, const GLdouble *params ) { + trWriteCMD( CMD_TEXGENDV ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + trWrited( params[0] ); + break; + + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + trWriteArrayd( 4, params ); + break; + + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->TexGendv( coord, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexGenf( GLenum coord, GLenum pname, GLfloat param ) { + trWriteCMD( CMD_TEXGENF ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexGenf( coord, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_TEXGENFV ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + trWritef( params[0] ); + break; + + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + trWriteArrayf( 4, params ); + break; + + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->TexGenfv( coord, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexGeni( GLenum coord, GLenum pname, GLint param ) { + trWriteCMD( CMD_TEXGENI ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexGeni( coord, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexGeniv( GLenum coord, GLenum pname, const GLint *params ) { + trWriteCMD( CMD_TEXGENIV ); + trWriteEnum( coord ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + + switch( pname ) { + case GL_TEXTURE_GEN_MODE: + trWritei( params[0] ); + break; + + case GL_OBJECT_PLANE: + case GL_EYE_PLANE: + trWriteArrayi( 4, params ); + break; + + default: + /* The 2nd pass should catch this. */ + break; + } + + if( trCtx()->doExec ) { + trGetDispatch()->TexGeniv( coord, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexImage1D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_TEXIMAGE1D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( internalFormat ); + trWriteSizei( width ); + trWritei( border ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->TexImage1D( target, level, internalFormat, width, border, format, type, pixels ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_TEXIMAGE2D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( internalFormat ); + trWriteSizei( width ); + trWriteSizei( height ); + trWritei( border ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->TexImage2D( target, level, internalFormat, width, height, border, format, type, pixels ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trTexImage3DEXT( GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */ + + trWriteCMD( CMD_TEXIMAGE3DEXT ); + trWriteEnum( target ); + trWritei( level ); + trWriteEnum( internalFormat ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteSizei( depth ); + trWritei( border ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + /* Pixels isn't touched if target is GL_PROXY_TEXTURE_3D */ + if( target != GL_PROXY_TEXTURE_3D ) { + pixelsize = trGetPixelSize( format, type ); + trWritePixelArray( GL_FALSE, type, width, height, depth, pixelsize, pixels ); + } + + if( trCtx()->doExec ) { + trGetDispatch()->TexImage3DEXT( target, level, internalFormat, width, height, depth, border, format, type, pixels ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trTexImage3D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_TEXIMAGE3D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( internalFormat ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteSizei( depth ); + trWritei( border ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->TexImage3D( target, level, internalFormat, width, height, depth, border, format, type, pixels ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexParameterf( GLenum target, GLenum pname, GLfloat param ) { + trWriteCMD( CMD_TEXPARAMETERF ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritef( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexParameterf( target, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) { + trWriteCMD( CMD_TEXPARAMETERFV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + trWritef( params[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexParameterfv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexParameteri( GLenum target, GLenum pname, GLint param ) { + trWriteCMD( CMD_TEXPARAMETERI ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritei( param ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexParameteri( target, pname, param ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexParameteriv( GLenum target, GLenum pname, const GLint *params ) { + trWriteCMD( CMD_TEXPARAMETERIV ); + trWriteEnum( target ); + trWriteEnum( pname ); + trWritePointer( (void *)params ); + trFileFlush(); + trWritei( params[0] ); + + if( trCtx()->doExec ) { + trGetDispatch()->TexParameteriv( target, pname, params ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_TEXSUBIMAGE1D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWriteSizei( width ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->TexSubImage1D( target, level, xoffset, width, format, type, pixels ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_TEXSUBIMAGE2D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWritei( yoffset ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->TexSubImage2D( target, level, xoffset, yoffset, width, height, format, type, pixels ); + trError(); + } +} + + +#if 0 +// Not in MESAs dispatch table +GLAPI void GLAPIENTRY trTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_TEXSUBIMAGE3DEXT ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWritei( yoffset ); + trWritei( zoffset ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteSizei( depth ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + /* Pixels isn't touched if target is GL_PROXY_TEXTURE_3D */ + if( target != GL_PROXY_TEXTURE_3D ) { + pixelsize = trGetPixelSize( format, type ); + trWritePixelArray( GL_FALSE, type, width, height, depth, pixelsize, pixels ); + } + + if( trCtx()->doExec ) { + trGetDispatch()->TexSubImage3DEXT( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels ); + trError(); + } +} +#endif + + +GLAPI void GLAPIENTRY trTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) { /* TODO */ + GLint pixelsize; + + trWriteCMD( CMD_TEXSUBIMAGE3D ); + trWriteEnum( target ); + trWritei( level ); + trWritei( xoffset ); + trWritei( yoffset ); + trWritei( zoffset ); + trWriteSizei( width ); + trWriteSizei( height ); + trWriteSizei( depth ); + trWriteEnum( format ); + trWriteEnum( type ); + trWritePointer( (void *)pixels ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->TexSubImage3D( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTranslated( GLdouble x, GLdouble y, GLdouble z ) { + trWriteCMD( CMD_TRANSLATED ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Translated( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trTranslatef( GLfloat x, GLfloat y, GLfloat z ) { + trWriteCMD( CMD_TRANSLATEF ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Translatef( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trUnlockArraysEXT( void ) { + trWriteCMD( CMD_UNLOCKARRAYSEXT ); + + if( trCtx()->doExec ) { + trGetDispatch()->UnlockArraysEXT( ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2d( GLdouble x, GLdouble y ) { + trWriteCMD( CMD_VERTEX2D ); + trWrited( x ); + trWrited( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2d( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2dv( const GLdouble *v ) { + trWriteCMD( CMD_VERTEX2DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2f( GLfloat x, GLfloat y ) { + trWriteCMD( CMD_VERTEX2F ); + trWritef( x ); + trWritef( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2f( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2fv( const GLfloat *v ) { + trWriteCMD( CMD_VERTEX2FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2i( GLint x, GLint y ) { + trWriteCMD( CMD_VERTEX2I ); + trWritei( x ); + trWritei( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2i( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2iv( const GLint *v ) { + trWriteCMD( CMD_VERTEX2IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2s( GLshort x, GLshort y ) { + trWriteCMD( CMD_VERTEX2S ); + trWrites( x ); + trWrites( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2s( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex2sv( const GLshort *v ) { + trWriteCMD( CMD_VERTEX2SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 2, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex2sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3d( GLdouble x, GLdouble y, GLdouble z ) { + trWriteCMD( CMD_VERTEX3D ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3d( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3dv( const GLdouble *v ) { + trWriteCMD( CMD_VERTEX3DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3f( GLfloat x, GLfloat y, GLfloat z ) { + trWriteCMD( CMD_VERTEX3F ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3f( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3fv( const GLfloat *v ) { + trWriteCMD( CMD_VERTEX3FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3i( GLint x, GLint y, GLint z ) { + trWriteCMD( CMD_VERTEX3I ); + trWritei( x ); + trWritei( y ); + trWritei( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3i( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3iv( const GLint *v ) { + trWriteCMD( CMD_VERTEX3IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3s( GLshort x, GLshort y, GLshort z ) { + trWriteCMD( CMD_VERTEX3S ); + trWrites( x ); + trWrites( y ); + trWrites( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3s( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex3sv( const GLshort *v ) { + trWriteCMD( CMD_VERTEX3SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 3, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex3sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) { + trWriteCMD( CMD_VERTEX4D ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + trWrited( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4d( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4dv( const GLdouble *v ) { + trWriteCMD( CMD_VERTEX4DV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayd( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4dv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) { + trWriteCMD( CMD_VERTEX4F ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + trWritef( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4f( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4fv( const GLfloat *v ) { + trWriteCMD( CMD_VERTEX4FV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayf( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4fv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4i( GLint x, GLint y, GLint z, GLint w ) { + trWriteCMD( CMD_VERTEX4I ); + trWritei( x ); + trWritei( y ); + trWritei( z ); + trWritei( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4i( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4iv( const GLint *v ) { + trWriteCMD( CMD_VERTEX4IV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrayi( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4iv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ) { + trWriteCMD( CMD_VERTEX4S ); + trWrites( x ); + trWrites( y ); + trWrites( z ); + trWrites( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4s( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertex4sv( const GLshort *v ) { + trWriteCMD( CMD_VERTEX4SV ); + trWritePointer( (void *)v ); + trFileFlush(); + trWriteArrays( 4, v ); + + if( trCtx()->doExec ) { + trGetDispatch()->Vertex4sv( v ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertexPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */ + trWriteCMD( CMD_VERTEXPOINTEREXT ); + trWritei( size ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWriteSizei( count ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->VertexPointerEXT( size, type, stride, count, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */ + trWriteCMD( CMD_VERTEXPOINTER ); + trWritei( size ); + trWriteEnum( type ); + trWriteSizei( stride ); + trWritePointer( (void *)ptr ); + trFileFlush(); + + if( trCtx()->doExec ) { + trGetDispatch()->VertexPointer( size, type, stride, ptr ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trViewport( GLint x, GLint y, GLsizei width, GLsizei height ) { + trWriteCMD( CMD_VIEWPORT ); + trWritei( x ); + trWritei( y ); + trWriteSizei( width ); + trWriteSizei( height ); + + if( trCtx()->doExec ) { + trGetDispatch()->Viewport( x, y, width, height ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2dMESA( GLdouble x, GLdouble y ) { + trWriteCMD( CMD_WINDOWPOS2DMESA ); + trWrited( x ); + trWrited( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2dMESA( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2dvMESA( const GLdouble *p ) { + trWriteCMD( CMD_WINDOWPOS2DVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayd( 2, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2dvMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2fMESA( GLfloat x, GLfloat y ) { + trWriteCMD( CMD_WINDOWPOS2FMESA ); + trWritef( x ); + trWritef( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2fMESA( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2fvMESA( const GLfloat *p ) { + trWriteCMD( CMD_WINDOWPOS2FVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayf( 2, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2fvMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2iMESA( GLint x, GLint y ) { + trWriteCMD( CMD_WINDOWPOS2IMESA ); + trWritei( x ); + trWritei( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2iMESA( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2ivMESA( const GLint *p ) { + trWriteCMD( CMD_WINDOWPOS2IVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayi( 2, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2ivMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2sMESA( GLshort x, GLshort y ) { + trWriteCMD( CMD_WINDOWPOS2SMESA ); + trWrites( x ); + trWrites( y ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2sMESA( x, y ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos2svMESA( const GLshort *p ) { + trWriteCMD( CMD_WINDOWPOS2SVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrays( 2, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos2svMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3dMESA( GLdouble x, GLdouble y, GLdouble z ) { + trWriteCMD( CMD_WINDOWPOS3DMESA ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3dMESA( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3dvMESA( const GLdouble *p ) { + trWriteCMD( CMD_WINDOWPOS3DVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayd( 3, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3dvMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3fMESA( GLfloat x, GLfloat y, GLfloat z ) { + trWriteCMD( CMD_WINDOWPOS3FMESA ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3fMESA( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3fvMESA( const GLfloat *p ) { + trWriteCMD( CMD_WINDOWPOS3FVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayf( 3, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3fvMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3iMESA( GLint x, GLint y, GLint z ) { + trWriteCMD( CMD_WINDOWPOS3IMESA ); + trWritei( x ); + trWritei( y ); + trWritei( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3iMESA( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3ivMESA( const GLint *p ) { + trWriteCMD( CMD_WINDOWPOS3IVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayi( 3, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3ivMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3sMESA( GLshort x, GLshort y, GLshort z ) { + trWriteCMD( CMD_WINDOWPOS3SMESA ); + trWrites( x ); + trWrites( y ); + trWrites( z ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3sMESA( x, y, z ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos3svMESA( const GLshort *p ) { + trWriteCMD( CMD_WINDOWPOS3SVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrays( 3, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos3svMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4dMESA( GLdouble x, GLdouble y, GLdouble z, GLdouble w) { + trWriteCMD( CMD_WINDOWPOS4DMESA ); + trWrited( x ); + trWrited( y ); + trWrited( z ); + trWrited( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4dMESA( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4dvMESA( const GLdouble *p ) { + trWriteCMD( CMD_WINDOWPOS4DVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayd( 4, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4dvMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) { + trWriteCMD( CMD_WINDOWPOS4FMESA ); + trWritef( x ); + trWritef( y ); + trWritef( z ); + trWritef( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4fMESA( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4fvMESA( const GLfloat *p ) { + trWriteCMD( CMD_WINDOWPOS4FVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayf( 4, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4fvMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4iMESA( GLint x, GLint y, GLint z, GLint w ) { + trWriteCMD( CMD_WINDOWPOS4IMESA ); + trWritei( x ); + trWritei( y ); + trWritei( z ); + trWritei( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4iMESA( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4ivMESA( const GLint *p ) { + trWriteCMD( CMD_WINDOWPOS4IVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrayi( 4, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4ivMESA( p ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4sMESA( GLshort x, GLshort y, GLshort z, GLshort w ) { + trWriteCMD( CMD_WINDOWPOS4SMESA ); + trWrites( x ); + trWrites( y ); + trWrites( z ); + trWrites( w ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4sMESA( x, y, z, w ); + trError(); + } +} + + +GLAPI void GLAPIENTRY trWindowPos4svMESA( const GLshort *p ) { + trWriteCMD( CMD_WINDOWPOS4SVMESA ); + trWritePointer( (void *)p ); + trFileFlush(); + trWriteArrays( 4, p ); + + if( trCtx()->doExec ) { + trGetDispatch()->WindowPos4svMESA( p ); + trError(); + } +} + + +void trInitDispatch( struct _glapi_table* dispatch ) { + + /* assert(dispatch); */ + if (!dispatch) + return; + + memset(dispatch,0,sizeof(struct _glapi_table)); + + dispatch->NewList = trNewList; /* 0 */ + dispatch->EndList = trEndList; /* 1 */ + dispatch->CallList = trCallList; /* 2 */ + dispatch->CallLists = trCallLists; /* 3 */ + dispatch->DeleteLists = trDeleteLists; /* 4 */ + dispatch->GenLists = trGenLists; /* 5 */ + dispatch->ListBase = trListBase; /* 6 */ + dispatch->Begin = trBegin; /* 7 */ + dispatch->Bitmap = trBitmap; /* 8 */ + dispatch->Color3b = trColor3b; /* 9 */ + dispatch->Color3bv = trColor3bv; /* 10 */ + dispatch->Color3d = trColor3d; /* 11 */ + dispatch->Color3dv = trColor3dv; /* 12 */ + dispatch->Color3f = trColor3f; /* 13 */ + dispatch->Color3fv = trColor3fv; /* 14 */ + dispatch->Color3i = trColor3i; /* 15 */ + dispatch->Color3iv = trColor3iv; /* 16 */ + dispatch->Color3s = trColor3s; /* 17 */ + dispatch->Color3sv = trColor3sv; /* 18 */ + dispatch->Color3ub = trColor3ub; /* 19 */ + dispatch->Color3ubv = trColor3ubv; /* 20 */ + dispatch->Color3ui = trColor3ui; /* 21 */ + dispatch->Color3uiv = trColor3uiv; /* 22 */ + dispatch->Color3us = trColor3us; /* 23 */ + dispatch->Color3usv = trColor3usv; /* 24 */ + dispatch->Color4b = trColor4b; /* 25 */ + dispatch->Color4bv = trColor4bv; /* 26 */ + dispatch->Color4d = trColor4d; /* 27 */ + dispatch->Color4dv = trColor4dv; /* 28 */ + dispatch->Color4f = trColor4f; /* 29 */ + dispatch->Color4fv = trColor4fv; /* 30 */ + dispatch->Color4i = trColor4i; /* 31 */ + dispatch->Color4iv = trColor4iv; /* 32 */ + dispatch->Color4s = trColor4s; /* 33 */ + dispatch->Color4sv = trColor4sv; /* 34 */ + dispatch->Color4ub = trColor4ub; /* 35 */ + dispatch->Color4ubv = trColor4ubv; /* 36 */ + dispatch->Color4ui = trColor4ui; /* 37 */ + dispatch->Color4uiv = trColor4uiv; /* 38 */ + dispatch->Color4us = trColor4us; /* 39 */ + dispatch->Color4usv = trColor4usv; /* 40 */ + dispatch->EdgeFlag = trEdgeFlag; /* 41 */ + dispatch->EdgeFlagv = trEdgeFlagv; /* 42 */ + dispatch->End = trEnd; /* 43 */ + dispatch->Indexd = trIndexd; /* 44 */ + dispatch->Indexdv = trIndexdv; /* 45 */ + dispatch->Indexf = trIndexf; /* 46 */ + dispatch->Indexfv = trIndexfv; /* 47 */ + dispatch->Indexi = trIndexi; /* 48 */ + dispatch->Indexiv = trIndexiv; /* 49 */ + dispatch->Indexs = trIndexs; /* 50 */ + dispatch->Indexsv = trIndexsv; /* 51 */ + dispatch->Normal3b = trNormal3b; /* 52 */ + dispatch->Normal3bv = trNormal3bv; /* 53 */ + dispatch->Normal3d = trNormal3d; /* 54 */ + dispatch->Normal3dv = trNormal3dv; /* 55 */ + dispatch->Normal3f = trNormal3f; /* 56 */ + dispatch->Normal3fv = trNormal3fv; /* 57 */ + dispatch->Normal3i = trNormal3i; /* 58 */ + dispatch->Normal3iv = trNormal3iv; /* 59 */ + dispatch->Normal3s = trNormal3s; /* 60 */ + dispatch->Normal3sv = trNormal3sv; /* 61 */ + dispatch->RasterPos2d = trRasterPos2d; /* 62 */ + dispatch->RasterPos2dv = trRasterPos2dv; /* 63 */ + dispatch->RasterPos2f = trRasterPos2f; /* 64 */ + dispatch->RasterPos2fv = trRasterPos2fv; /* 65 */ + dispatch->RasterPos2i = trRasterPos2i; /* 66 */ + dispatch->RasterPos2iv = trRasterPos2iv; /* 67 */ + dispatch->RasterPos2s = trRasterPos2s; /* 68 */ + dispatch->RasterPos2sv = trRasterPos2sv; /* 69 */ + dispatch->RasterPos3d = trRasterPos3d; /* 70 */ + dispatch->RasterPos3dv = trRasterPos3dv; /* 71 */ + dispatch->RasterPos3f = trRasterPos3f; /* 72 */ + dispatch->RasterPos3fv = trRasterPos3fv; /* 73 */ + dispatch->RasterPos3i = trRasterPos3i; /* 74 */ + dispatch->RasterPos3iv = trRasterPos3iv; /* 75 */ + dispatch->RasterPos3s = trRasterPos3s; /* 76 */ + dispatch->RasterPos3sv = trRasterPos3sv; /* 77 */ + dispatch->RasterPos4d = trRasterPos4d; /* 78 */ + dispatch->RasterPos4dv = trRasterPos4dv; /* 79 */ + dispatch->RasterPos4f = trRasterPos4f; /* 80 */ + dispatch->RasterPos4fv = trRasterPos4fv; /* 81 */ + dispatch->RasterPos4i = trRasterPos4i; /* 82 */ + dispatch->RasterPos4iv = trRasterPos4iv; /* 83 */ + dispatch->RasterPos4s = trRasterPos4s; /* 84 */ + dispatch->RasterPos4sv = trRasterPos4sv; /* 85 */ + dispatch->Rectd = trRectd; /* 86 */ + dispatch->Rectdv = trRectdv; /* 87 */ + dispatch->Rectf = trRectf; /* 88 */ + dispatch->Rectfv = trRectfv; /* 89 */ + dispatch->Recti = trRecti; /* 90 */ + dispatch->Rectiv = trRectiv; /* 91 */ + dispatch->Rects = trRects; /* 92 */ + dispatch->Rectsv = trRectsv; /* 93 */ + dispatch->TexCoord1d = trTexCoord1d; /* 94 */ + dispatch->TexCoord1dv = trTexCoord1dv; /* 95 */ + dispatch->TexCoord1f = trTexCoord1f; /* 96 */ + dispatch->TexCoord1fv = trTexCoord1fv; /* 97 */ + dispatch->TexCoord1i = trTexCoord1i; /* 98 */ + dispatch->TexCoord1iv = trTexCoord1iv; /* 99 */ + dispatch->TexCoord1s = trTexCoord1s; /* 100 */ + dispatch->TexCoord1sv = trTexCoord1sv; /* 101 */ + dispatch->TexCoord2d = trTexCoord2d; /* 102 */ + dispatch->TexCoord2dv = trTexCoord2dv; /* 103 */ + dispatch->TexCoord2f = trTexCoord2f; /* 104 */ + dispatch->TexCoord2fv = trTexCoord2fv; /* 105 */ + dispatch->TexCoord2i = trTexCoord2i; /* 106 */ + dispatch->TexCoord2iv = trTexCoord2iv; /* 107 */ + dispatch->TexCoord2s = trTexCoord2s; /* 108 */ + dispatch->TexCoord2sv = trTexCoord2sv; /* 109 */ + dispatch->TexCoord3d = trTexCoord3d; /* 110 */ + dispatch->TexCoord3dv = trTexCoord3dv; /* 111 */ + dispatch->TexCoord3f = trTexCoord3f; /* 112 */ + dispatch->TexCoord3fv = trTexCoord3fv; /* 113 */ + dispatch->TexCoord3i = trTexCoord3i; /* 114 */ + dispatch->TexCoord3iv = trTexCoord3iv; /* 115 */ + dispatch->TexCoord3s = trTexCoord3s; /* 116 */ + dispatch->TexCoord3sv = trTexCoord3sv; /* 117 */ + dispatch->TexCoord4d = trTexCoord4d; /* 118 */ + dispatch->TexCoord4dv = trTexCoord4dv; /* 119 */ + dispatch->TexCoord4f = trTexCoord4f; /* 120 */ + dispatch->TexCoord4fv = trTexCoord4fv; /* 121 */ + dispatch->TexCoord4i = trTexCoord4i; /* 122 */ + dispatch->TexCoord4iv = trTexCoord4iv; /* 123 */ + dispatch->TexCoord4s = trTexCoord4s; /* 124 */ + dispatch->TexCoord4sv = trTexCoord4sv; /* 125 */ + dispatch->Vertex2d = trVertex2d; /* 126 */ + dispatch->Vertex2dv = trVertex2dv; /* 127 */ + dispatch->Vertex2f = trVertex2f; /* 128 */ + dispatch->Vertex2fv = trVertex2fv; /* 129 */ + dispatch->Vertex2i = trVertex2i; /* 130 */ + dispatch->Vertex2iv = trVertex2iv; /* 131 */ + dispatch->Vertex2s = trVertex2s; /* 132 */ + dispatch->Vertex2sv = trVertex2sv; /* 133 */ + dispatch->Vertex3d = trVertex3d; /* 134 */ + dispatch->Vertex3dv = trVertex3dv; /* 135 */ + dispatch->Vertex3f = trVertex3f; /* 136 */ + dispatch->Vertex3fv = trVertex3fv; /* 137 */ + dispatch->Vertex3i = trVertex3i; /* 138 */ + dispatch->Vertex3iv = trVertex3iv; /* 139 */ + dispatch->Vertex3s = trVertex3s; /* 140 */ + dispatch->Vertex3sv = trVertex3sv; /* 141 */ + dispatch->Vertex4d = trVertex4d; /* 142 */ + dispatch->Vertex4dv = trVertex4dv; /* 143 */ + dispatch->Vertex4f = trVertex4f; /* 144 */ + dispatch->Vertex4fv = trVertex4fv; /* 145 */ + dispatch->Vertex4i = trVertex4i; /* 146 */ + dispatch->Vertex4iv = trVertex4iv; /* 147 */ + dispatch->Vertex4s = trVertex4s; /* 148 */ + dispatch->Vertex4sv = trVertex4sv; /* 149 */ + dispatch->ClipPlane = trClipPlane; /* 150 */ + dispatch->ColorMaterial = trColorMaterial; /* 151 */ + dispatch->CullFace = trCullFace; /* 152 */ + dispatch->Fogf = trFogf; /* 153 */ + dispatch->Fogfv = trFogfv; /* 154 */ + dispatch->Fogi = trFogi; /* 155 */ + dispatch->Fogiv = trFogiv; /* 156 */ + dispatch->FrontFace = trFrontFace; /* 157 */ + dispatch->Hint = trHint; /* 158 */ + dispatch->Lightf = trLightf; /* 159 */ + dispatch->Lightfv = trLightfv; /* 160 */ + dispatch->Lighti = trLighti; /* 161 */ + dispatch->Lightiv = trLightiv; /* 162 */ + dispatch->LightModelf = trLightModelf; /* 163 */ + dispatch->LightModelfv = trLightModelfv; /* 164 */ + dispatch->LightModeli = trLightModeli; /* 165 */ + dispatch->LightModeliv = trLightModeliv; /* 166 */ + dispatch->LineStipple = trLineStipple; /* 167 */ + dispatch->LineWidth = trLineWidth; /* 168 */ + dispatch->Materialf = trMaterialf; /* 169 */ + dispatch->Materialfv = trMaterialfv; /* 170 */ + dispatch->Materiali = trMateriali; /* 171 */ + dispatch->Materialiv = trMaterialiv; /* 172 */ + dispatch->PointSize = trPointSize; /* 173 */ + dispatch->PolygonMode = trPolygonMode; /* 174 */ + dispatch->PolygonStipple = trPolygonStipple; /* 175 */ + dispatch->Scissor = trScissor; /* 176 */ + dispatch->ShadeModel = trShadeModel; /* 177 */ + dispatch->TexParameterf = trTexParameterf; /* 178 */ + dispatch->TexParameterfv = trTexParameterfv; /* 179 */ + dispatch->TexParameteri = trTexParameteri; /* 180 */ + dispatch->TexParameteriv = trTexParameteriv; /* 181 */ + dispatch->TexImage1D = trTexImage1D; /* 182 */ + dispatch->TexImage2D = trTexImage2D; /* 183 */ + dispatch->TexEnvf = trTexEnvf; /* 184 */ + dispatch->TexEnvfv = trTexEnvfv; /* 185 */ + dispatch->TexEnvi = trTexEnvi; /* 186 */ + dispatch->TexEnviv = trTexEnviv; /* 187 */ + dispatch->TexGend = trTexGend; /* 188 */ + dispatch->TexGendv = trTexGendv; /* 189 */ + dispatch->TexGenf = trTexGenf; /* 190 */ + dispatch->TexGenfv = trTexGenfv; /* 191 */ + dispatch->TexGeni = trTexGeni; /* 192 */ + dispatch->TexGeniv = trTexGeniv; /* 193 */ + dispatch->FeedbackBuffer = trFeedbackBuffer; /* 194 */ + dispatch->SelectBuffer = trSelectBuffer; /* 195 */ + dispatch->RenderMode = trRenderMode; /* 196 */ + dispatch->InitNames = trInitNames; /* 197 */ + dispatch->LoadName = trLoadName; /* 198 */ + dispatch->PassThrough = trPassThrough; /* 199 */ + dispatch->PopName = trPopName; /* 200 */ + dispatch->PushName = trPushName; /* 201 */ + dispatch->DrawBuffer = trDrawBuffer; /* 202 */ + dispatch->Clear = trClear; /* 203 */ + dispatch->ClearAccum = trClearAccum; /* 204 */ + dispatch->ClearIndex = trClearIndex; /* 205 */ + dispatch->ClearColor = trClearColor; /* 206 */ + dispatch->ClearStencil = trClearStencil; /* 207 */ + dispatch->ClearDepth = trClearDepth; /* 208 */ + dispatch->StencilMask = trStencilMask; /* 209 */ + dispatch->ColorMask = trColorMask; /* 210 */ + dispatch->DepthMask = trDepthMask; /* 211 */ + dispatch->IndexMask = trIndexMask; /* 212 */ + dispatch->Accum = trAccum; /* 213 */ + dispatch->Disable = trDisable; /* 214 */ + dispatch->Enable = trEnable; /* 215 */ + dispatch->Finish = trFinish; /* 216 */ + dispatch->Flush = trFlush; /* 217 */ + dispatch->PopAttrib = trPopAttrib; /* 218 */ + dispatch->PushAttrib = trPushAttrib; /* 219 */ + dispatch->Map1d = trMap1d; /* 220 */ + dispatch->Map1f = trMap1f; /* 221 */ + dispatch->Map2d = trMap2d; /* 222 */ + dispatch->Map2f = trMap2f; /* 223 */ + dispatch->MapGrid1d = trMapGrid1d; /* 224 */ + dispatch->MapGrid1f = trMapGrid1f; /* 225 */ + dispatch->MapGrid2d = trMapGrid2d; /* 226 */ + dispatch->MapGrid2f = trMapGrid2f; /* 227 */ + dispatch->EvalCoord1d = trEvalCoord1d; /* 228 */ + dispatch->EvalCoord1dv = trEvalCoord1dv; /* 229 */ + dispatch->EvalCoord1f = trEvalCoord1f; /* 230 */ + dispatch->EvalCoord1fv = trEvalCoord1fv; /* 231 */ + dispatch->EvalCoord2d = trEvalCoord2d; /* 232 */ + dispatch->EvalCoord2dv = trEvalCoord2dv; /* 233 */ + dispatch->EvalCoord2f = trEvalCoord2f; /* 234 */ + dispatch->EvalCoord2fv = trEvalCoord2fv; /* 235 */ + dispatch->EvalMesh1 = trEvalMesh1; /* 236 */ + dispatch->EvalPoint1 = trEvalPoint1; /* 237 */ + dispatch->EvalMesh2 = trEvalMesh2; /* 238 */ + dispatch->EvalPoint2 = trEvalPoint2; /* 239 */ + dispatch->AlphaFunc = trAlphaFunc; /* 240 */ + dispatch->BlendFunc = trBlendFunc; /* 241 */ + dispatch->LogicOp = trLogicOp; /* 242 */ + dispatch->StencilFunc = trStencilFunc; /* 243 */ + dispatch->StencilOp = trStencilOp; /* 244 */ + dispatch->DepthFunc = trDepthFunc; /* 245 */ + dispatch->PixelZoom = trPixelZoom; /* 246 */ + dispatch->PixelTransferf = trPixelTransferf; /* 247 */ + dispatch->PixelTransferi = trPixelTransferi; /* 248 */ + dispatch->PixelStoref = trPixelStoref; /* 249 */ + dispatch->PixelStorei = trPixelStorei; /* 250 */ + dispatch->PixelMapfv = trPixelMapfv; /* 251 */ + dispatch->PixelMapuiv = trPixelMapuiv; /* 252 */ + dispatch->PixelMapusv = trPixelMapusv; /* 253 */ + dispatch->ReadBuffer = trReadBuffer; /* 254 */ + dispatch->CopyPixels = trCopyPixels; /* 255 */ + dispatch->ReadPixels = trReadPixels; /* 256 */ + dispatch->DrawPixels = trDrawPixels; /* 257 */ + dispatch->GetBooleanv = trGetBooleanv; /* 258 */ + dispatch->GetClipPlane = trGetClipPlane; /* 259 */ + dispatch->GetDoublev = trGetDoublev; /* 260 */ + dispatch->GetError = trGetError; /* 261 */ + dispatch->GetFloatv = trGetFloatv; /* 262 */ + dispatch->GetIntegerv = trGetIntegerv; /* 263 */ + dispatch->GetLightfv = trGetLightfv; /* 264 */ + dispatch->GetLightiv = trGetLightiv; /* 265 */ + dispatch->GetMapdv = trGetMapdv; /* 266 */ + dispatch->GetMapfv = trGetMapfv; /* 267 */ + dispatch->GetMapiv = trGetMapiv; /* 268 */ + dispatch->GetMaterialfv = trGetMaterialfv; /* 269 */ + dispatch->GetMaterialiv = trGetMaterialiv; /* 270 */ + dispatch->GetPixelMapfv = trGetPixelMapfv; /* 271 */ + dispatch->GetPixelMapuiv = trGetPixelMapuiv; /* 272 */ + dispatch->GetPixelMapusv = trGetPixelMapusv; /* 273 */ + dispatch->GetPolygonStipple = trGetPolygonStipple; /* 274 */ + dispatch->GetString = trGetString; /* 275 */ + dispatch->GetTexEnvfv = trGetTexEnvfv; /* 276 */ + dispatch->GetTexEnviv = trGetTexEnviv; /* 277 */ + dispatch->GetTexGendv = trGetTexGendv; /* 278 */ + dispatch->GetTexGenfv = trGetTexGenfv; /* 279 */ + dispatch->GetTexGeniv = trGetTexGeniv; /* 280 */ + dispatch->GetTexImage = trGetTexImage; /* 281 */ + dispatch->GetTexParameterfv = trGetTexParameterfv; /* 282 */ + dispatch->GetTexParameteriv = trGetTexParameteriv; /* 283 */ + dispatch->GetTexLevelParameterfv = trGetTexLevelParameterfv; /* 284 */ + dispatch->GetTexLevelParameteriv = trGetTexLevelParameteriv; /* 285 */ + dispatch->IsEnabled = trIsEnabled; /* 286 */ + dispatch->IsList = trIsList; /* 287 */ + dispatch->DepthRange = trDepthRange; /* 288 */ + dispatch->Frustum = trFrustum; /* 289 */ + dispatch->LoadIdentity = trLoadIdentity; /* 290 */ + dispatch->LoadMatrixf = trLoadMatrixf; /* 291 */ + dispatch->LoadMatrixd = trLoadMatrixd; /* 292 */ + dispatch->MatrixMode = trMatrixMode; /* 293 */ + dispatch->MultMatrixf = trMultMatrixf; /* 294 */ + dispatch->MultMatrixd = trMultMatrixd; /* 295 */ + dispatch->Ortho = trOrtho; /* 296 */ + dispatch->PopMatrix = trPopMatrix; /* 297 */ + dispatch->PushMatrix = trPushMatrix; /* 298 */ + dispatch->Rotated = trRotated; /* 299 */ + dispatch->Rotatef = trRotatef; /* 300 */ + dispatch->Scaled = trScaled; /* 301 */ + dispatch->Scalef = trScalef; /* 302 */ + dispatch->Translated = trTranslated; /* 303 */ + dispatch->Translatef = trTranslatef; /* 304 */ + dispatch->Viewport = trViewport; /* 305 */ + dispatch->ArrayElement = trArrayElement; /* 306 */ + dispatch->BindTexture = trBindTexture; /* 307 */ + dispatch->ColorPointer = trColorPointer; /* 308 */ + dispatch->DisableClientState = trDisableClientState; /* 309 */ + dispatch->DrawArrays = trDrawArrays; /* 310 */ + dispatch->DrawElements = trDrawElements; /* 311 */ + dispatch->EdgeFlagPointer = trEdgeFlagPointer; /* 312 */ + dispatch->EnableClientState = trEnableClientState; /* 313 */ + dispatch->IndexPointer = trIndexPointer; /* 314 */ + dispatch->Indexub = trIndexub; /* 315 */ + dispatch->Indexubv = trIndexubv; /* 316 */ + dispatch->InterleavedArrays = trInterleavedArrays; /* 317 */ + dispatch->NormalPointer = trNormalPointer; /* 318 */ + dispatch->PolygonOffset = trPolygonOffset; /* 319 */ + dispatch->TexCoordPointer = trTexCoordPointer; /* 320 */ + dispatch->VertexPointer = trVertexPointer; /* 321 */ + dispatch->AreTexturesResident = trAreTexturesResident; /* 322 */ + dispatch->CopyTexImage1D = trCopyTexImage1D; /* 323 */ + dispatch->CopyTexImage2D = trCopyTexImage2D; /* 324 */ + dispatch->CopyTexSubImage1D = trCopyTexSubImage1D; /* 325 */ + dispatch->CopyTexSubImage2D = trCopyTexSubImage2D; /* 326 */ + dispatch->DeleteTextures = trDeleteTextures; /* 327 */ + dispatch->GenTextures = trGenTextures; /* 328 */ + dispatch->GetPointerv = trGetPointerv; /* 329 */ + dispatch->IsTexture = trIsTexture; /* 330 */ + dispatch->PrioritizeTextures = trPrioritizeTextures; /* 331 */ + dispatch->TexSubImage1D = trTexSubImage1D; /* 332 */ + dispatch->TexSubImage2D = trTexSubImage2D; /* 333 */ + dispatch->PopClientAttrib = trPopClientAttrib; /* 334 */ + dispatch->PushClientAttrib = trPushClientAttrib; /* 335 */ +#if 1 + dispatch->BlendColor = trBlendColor; /* 336 */ + dispatch->BlendEquation = trBlendEquation; /* 337 */ + dispatch->DrawRangeElements = trDrawRangeElements; /* 338 */ + dispatch->ColorTable = trColorTable; /* 339 */ + dispatch->ColorTableParameterfv = trColorTableParameterfv; /* 340 */ + dispatch->ColorTableParameteriv = trColorTableParameteriv; /* 341 */ + dispatch->CopyColorTable = trCopyColorTable; /* 342 */ + dispatch->GetColorTable = trGetColorTable; /* 343 */ + dispatch->GetColorTableParameterfv = trGetColorTableParameterfv; /* 344 */ + dispatch->GetColorTableParameteriv = trGetColorTableParameteriv; /* 345 */ + dispatch->ColorSubTable = trColorSubTable; /* 346 */ + dispatch->CopyColorSubTable = trCopyColorSubTable; /* 347 */ + dispatch->ConvolutionFilter1D = trConvolutionFilter1D; /* 348 */ + dispatch->ConvolutionFilter2D = trConvolutionFilter2D; /* 349 */ + dispatch->ConvolutionParameterf = trConvolutionParameterf; /* 350 */ + dispatch->ConvolutionParameterfv = trConvolutionParameterfv; /* 351 */ + dispatch->ConvolutionParameteri = trConvolutionParameteri; /* 352 */ + dispatch->ConvolutionParameteriv = trConvolutionParameteriv; /* 353 */ + dispatch->CopyConvolutionFilter1D = trCopyConvolutionFilter1D; /* 354 */ + dispatch->CopyConvolutionFilter2D = trCopyConvolutionFilter2D; /* 355 */ + dispatch->GetConvolutionFilter = trGetConvolutionFilter; /* 356 */ + dispatch->GetConvolutionParameterfv = trGetConvolutionParameterfv;/* 357 */ + dispatch->GetConvolutionParameteriv = trGetConvolutionParameteriv;/* 358 */ + dispatch->GetSeparableFilter = trGetSeparableFilter; /* 359 */ + dispatch->SeparableFilter2D = trSeparableFilter2D; /* 360 */ + dispatch->GetHistogram = trGetHistogram; /* 361 */ + dispatch->GetHistogramParameterfv = trGetHistogramParameterfv; /* 362 */ + dispatch->GetHistogramParameteriv = trGetHistogramParameteriv; /* 363 */ + dispatch->GetMinmax = trGetMinmax; /* 364 */ + dispatch->GetMinmaxParameterfv = trGetMinmaxParameterfv; /* 365 */ + dispatch->GetMinmaxParameteriv = trGetMinmaxParameteriv; /* 366 */ +#endif +#if 0 + dispatch->Histogram = trHistogram /* 367 */ + dispatch->Minmax = trMinmax /* 368 */ + dispatch->ResetHistogram = trResetHistogram /* 369 */ + dispatch->ResetMinmax = trResetMinmax /* 370 */ + dispatch->TexImage3D = trTexImage3D /* 371 */ + dispatch->TexSubImage3D = trTexSubImage3D /* 372 */ + dispatch->CopyTexSubImage3D = trCopyTexSubImage3D /* 373 */ + dispatch->ActiveTextureARB = trActiveTextureARB /* 374 */ + dispatch->ClientActiveTextureARB = trClientActiveTextureARB /* 375 */ + dispatch->MultiTexCoord1dARB = trMultiTexCoord1dARB /* 376 */ + dispatch->MultiTexCoord1dvARB = trMultiTexCoord1dvARB /* 377 */ + dispatch->MultiTexCoord1fARB = trMultiTexCoord1fARB /* 378 */ + dispatch->MultiTexCoord1fvARB = trMultiTexCoord1fvARB /* 379 */ + dispatch->MultiTexCoord1iARB = trMultiTexCoord1iARB /* 380 */ + dispatch->MultiTexCoord1ivARB = trMultiTexCoord1ivARB /* 381 */ + dispatch->MultiTexCoord1sARB = trMultiTexCoord1sARB /* 382 */ + dispatch->MultiTexCoord1svARB = trMultiTexCoord1svARB /* 383 */ + dispatch->MultiTexCoord2dARB = trMultiTexCoord2dARB /* 384 */ + dispatch->MultiTexCoord2dvARB = trMultiTexCoord2dvARB /* 385 */ + dispatch->MultiTexCoord2fARB = trMultiTexCoord2fARB /* 386 */ + dispatch->MultiTexCoord2fvARB = trMultiTexCoord2fvARB /* 387 */ + dispatch->MultiTexCoord2iARB = trMultiTexCoord2iARB /* 388 */ + dispatch->MultiTexCoord2ivARB = trMultiTexCoord2ivARB /* 389 */ + dispatch->MultiTexCoord2sARB = trMultiTexCoord2sARB /* 390 */ + dispatch->MultiTexCoord2svARB = trMultiTexCoord2svARB /* 391 */ + dispatch->MultiTexCoord3dARB = trMultiTexCoord3dARB /* 392 */ + dispatch->MultiTexCoord3dvARB = trMultiTexCoord3dvARB /* 393 */ + dispatch->MultiTexCoord3fARB = trMultiTexCoord3fARB /* 394 */ + dispatch->MultiTexCoord3fvARB = trMultiTexCoord3fvARB /* 395 */ + dispatch->MultiTexCoord3iARB = trMultiTexCoord3iARB /* 396 */ + dispatch->MultiTexCoord3ivARB = trMultiTexCoord3ivARB /* 397 */ + dispatch->MultiTexCoord3sARB = trMultiTexCoord3sARB /* 398 */ + dispatch->MultiTexCoord3svARB = trMultiTexCoord3svARB /* 399 */ + dispatch->MultiTexCoord4dARB = trMultiTexCoord4dARB /* 400 */ + dispatch->MultiTexCoord4dvARB = trMultiTexCoord4dvARB /* 401 */ + dispatch->MultiTexCoord4fARB = trMultiTexCoord4fARB /* 402 */ + dispatch->MultiTexCoord4fvARB = trMultiTexCoord4fvARB /* 403 */ + dispatch->MultiTexCoord4iARB = trMultiTexCoord4iARB /* 404 */ + dispatch->MultiTexCoord4ivARB = trMultiTexCoord4ivARB /* 405 */ + dispatch->MultiTexCoord4sARB = trMultiTexCoord4sARB /* 406 */ + dispatch->MultiTexCoord4svARB = trMultiTexCoord4svARB /* 407 */ + dispatch->LoadTransposeMatrixfARB = trLoadTransposeMatrixfARB /* 408 */ + dispatch->LoadTransposeMatrixdARB = trLoadTransposeMatrixdARB /* 409 */ + dispatch->MultTransposeMatrixfARB = trMultTransposeMatrixfARB /* 410 */ + dispatch->MultTransposeMatrixdARB = trMultTransposeMatrixdARB /* 411 */ + dispatch->SampleCoverageARB = trSampleCoverageARB /* 412 */ + dispatch->SamplePassARB = trSamplePassARB /* 413 */ + dispatch->PolygonOffsetEXT = trPolygonOffsetEXT /* 414 */ + dispatch->GetTexFilterFuncSGIS = trGetTexFilterFuncSGIS /* 415 */ + dispatch->TexFilterFuncSGIS = trTexFilterFuncSGIS /* 416 */ + dispatch->GetHistogramEXT = trGetHistogramEXT /* 417 */ + dispatch->GetHistogramParameterfvEXT = trGetHistogramParameterfvEXT /* 418 */ + dispatch->GetHistogramParameterivEXT = trGetHistogramParameterivEXT /* 419 */ + dispatch->GetMinmaxEXT = trGetMinmaxEXT /* 420 */ + dispatch->GetMinmaxParameterfvEXT = trGetMinmaxParameterfvEXT /* 421 */ + dispatch->GetMinmaxParameterivEXT = trGetMinmaxParameterivEXT /* 422 */ + dispatch->GetConvolutionFilterEXT = trGetConvolutionFilterEXT /* 423 */ + dispatch->GetConvolutionParameterfvEXT = trGetConvolutionParameterfvEXT /* 424 */ + dispatch->GetConvolutionParameterivEXT = trGetConvolutionParameterivEXT /* 425 */ + dispatch->GetSeparableFilterEXT = trGetSeparableFilterEXT /* 426 */ + dispatch->GetColorTableSGI = trGetColorTableSGI /* 427 */ + dispatch->GetColorTableParameterfvSGI = trGetColorTableParameterfvSGI /* 428 */ + dispatch->GetColorTableParameterivSGI = trGetColorTableParameterivSGI /* 429 */ + dispatch->PixelTexGenSGIX = trPixelTexGenSGIX /* 430 */ + dispatch->PixelTexGenParameteriSGIS = trPixelTexGenParameteriSGIS /* 431 */ + dispatch->PixelTexGenParameterivSGIS = trPixelTexGenParameterivSGIS /* 432 */ + dispatch->PixelTexGenParameterfSGIS = trPixelTexGenParameterfSGIS /* 433 */ + dispatch->PixelTexGenParameterfvSGIS = trPixelTexGenParameterfvSGIS /* 434 */ + dispatch->GetPixelTexGenParameterivSGIS = trGetPixelTexGenParameterivSGIS /* 435 */ + dispatch->GetPixelTexGenParameterfvSGIS = trGetPixelTexGenParameterfvSGIS /* 436 */ + dispatch->TexImage4DSGIS = trTexImage4DSGIS /* 437 */ + dispatch->TexSubImage4DSGIS = trTexSubImage4DSGIS /* 438 */ + dispatch->AreTexturesResidentEXT = trAreTexturesResidentEXT /* 439 */ + dispatch->GenTexturesEXT = trGenTexturesEXT /* 440 */ + dispatch->IsTextureEXT = trIsTextureEXT /* 441 */ + dispatch->DetailTexFuncSGIS = trDetailTexFuncSGIS /* 442 */ + dispatch->GetDetailTexFuncSGIS = trGetDetailTexFuncSGIS /* 443 */ + dispatch->SharpenTexFuncSGIS = trSharpenTexFuncSGIS /* 444 */ + dispatch->GetSharpenTexFuncSGIS = trGetSharpenTexFuncSGIS /* 445 */ + dispatch->SampleMaskSGIS = trSampleMaskSGIS /* 446 */ + dispatch->SamplePatternSGIS = trSamplePatternSGIS /* 447 */ + dispatch->ColorPointerEXT = trColorPointerEXT /* 448 */ + dispatch->EdgeFlagPointerEXT = trEdgeFlagPointerEXT /* 449 */ + dispatch->IndexPointerEXT = trIndexPointerEXT /* 450 */ + dispatch->NormalPointerEXT = trNormalPointerEXT /* 451 */ + dispatch->TexCoordPointerEXT = trTexCoordPointerEXT /* 452 */ + dispatch->VertexPointerEXT = trVertexPointerEXT /* 453 */ + dispatch->SpriteParameterfSGIX = trSpriteParameterfSGIX /* 454 */ + dispatch->SpriteParameterfvSGIX = trSpriteParameterfvSGIX /* 455 */ + dispatch->SpriteParameteriSGIX = trSpriteParameteriSGIX /* 456 */ + dispatch->SpriteParameterivSGIX = trSpriteParameterivSGIX /* 457 */ + dispatch->PointParameterfEXT = trPointParameterfEXT /* 458 */ + dispatch->PointParameterfvEXT = trPointParameterfvEXT /* 459 */ + dispatch->GetInstrumentsSGIX = trGetInstrumentsSGIX /* 460 */ + dispatch->InstrumentsBufferSGIX = trInstrumentsBufferSGIX /* 461 */ + dispatch->PollInstrumentsSGIX = trPollInstrumentsSGIX /* 462 */ + dispatch->ReadInstrumentsSGIX = trReadInstrumentsSGIX /* 463 */ + dispatch->StartInstrumentsSGIX = trStartInstrumentsSGIX /* 464 */ + dispatch->StopInstrumentsSGIX = trStopInstrumentsSGIX /* 465 */ + dispatch->FrameZoomSGIX = trFrameZoomSGIX /* 466 */ + dispatch->TagSampleBufferSGIX = trTagSampleBufferSGIX /* 467 */ + dispatch->ReferencePlaneSGIX = trReferencePlaneSGIX /* 468 */ + dispatch->FlushRasterSGIX = trFlushRasterSGIX /* 469 */ + dispatch->GetListParameterfvSGIX = trGetListParameterfvSGIX /* 470 */ + dispatch->GetListParameterivSGIX = trGetListParameterivSGIX /* 471 */ + dispatch->ListParameterfSGIX = trListParameterfSGIX /* 472 */ + dispatch->ListParameterfvSGIX = trListParameterfvSGIX /* 473 */ + dispatch->ListParameteriSGIX = trListParameteriSGIX /* 474 */ + dispatch->ListParameterivSGIX = trListParameterivSGIX /* 475 */ + dispatch->FragmentColorMaterialSGIX = trFragmentColorMaterialSGIX /* 476 */ + dispatch->FragmentLightfSGIX = trFragmentLightfSGIX /* 477 */ + dispatch->FragmentLightfvSGIX = trFragmentLightfvSGIX /* 478 */ + dispatch->FragmentLightiSGIX = trFragmentLightiSGIX /* 479 */ + dispatch->FragmentLightivSGIX = trFragmentLightivSGIX /* 480 */ + dispatch->FragmentLightModelfSGIX = trFragmentLightModelfSGIX /* 481 */ + dispatch->FragmentLightModelfvSGIX = trFragmentLightModelfvSGIX /* 482 */ + dispatch->FragmentLightModeliSGIX = trFragmentLightModeliSGIX /* 483 */ + dispatch->FragmentLightModelivSGIX = trFragmentLightModelivSGIX /* 484 */ + dispatch->FragmentMaterialfSGIX = trFragmentMaterialfSGIX /* 485 */ + dispatch->FragmentMaterialfvSGIX = trFragmentMaterialfvSGIX /* 486 */ + dispatch->FragmentMaterialiSGIX = trFragmentMaterialiSGIX /* 487 */ + dispatch->FragmentMaterialivSGIX = trFragmentMaterialivSGIX /* 488 */ + dispatch->GetFragmentLightfvSGIX = trGetFragmentLightfvSGIX /* 489 */ + dispatch->GetFragmentLightivSGIX = trGetFragmentLightivSGIX /* 490 */ + dispatch->GetFragmentMaterialfvSGIX = trGetFragmentMaterialfvSGIX /* 491 */ + dispatch->GetFragmentMaterialivSGIX = trGetFragmentMaterialivSGIX /* 492 */ + dispatch->LightEnviSGIX = trLightEnviSGIX /* 493 */ + dispatch->VertexWeightfEXT = trVertexWeightfEXT /* 494 */ + dispatch->VertexWeightfvEXT = trVertexWeightfvEXT /* 495 */ + dispatch->VertexWeightPointerEXT = trVertexWeightPointerEXT /* 496 */ + dispatch->FlushVertexArrayRangeNV = trFlushVertexArrayRangeNV /* 497 */ + dispatch->VertexArrayRangeNV = trVertexArrayRangeNV /* 498 */ + dispatch->CombinerParameterfvNV = trCombinerParameterfvNV /* 499 */ + dispatch->CombinerParameterfNV = trCombinerParameterfNV /* 500 */ + dispatch->CombinerParameterivNV = trCombinerParameterivNV /* 501 */ + dispatch->CombinerParameteriNV = trCombinerParameteriNV /* 502 */ + dispatch->CombinerInputNV = trCombinerInputNV /* 503 */ + dispatch->CombinerOutputNV = trCombinerOutputNV /* 504 */ + dispatch->FinalCombinerInputNV = trFinalCombinerInputNV /* 505 */ + dispatch->GetCombinerInputParameterfvNV = trGetCombinerInputParameterfvNV /* 506 */ + dispatch->GetCombinerInputParameterivNV = trGetCombinerInputParameterivNV /* 507 */ + dispatch->GetCombinerOutputParameterfvNV = trGetCombinerOutputParameterfvNV /* 508 */ + dispatch->GetCombinerOutputParameterivNV = trGetCombinerOutputParameterivNV /* 509 */ + dispatch->GetFinalCombinerInputParameterfvNV = trGetFinalCombinerInputParameterfvNV /* 510 */ + dispatch->GetFinalCombinerInputParameterivNV = trGetFinalCombinerInputParameterivNV /* 511 */ + dispatch->ResizeBuffersMESA = trResizeBuffersMESA /* 512 */ + dispatch->WindowPos2dMESA = trWindowPos2dMESA /* 513 */ + dispatch->WindowPos2dvMESA = trWindowPos2dvMESA /* 514 */ + dispatch->WindowPos2fMESA = trWindowPos2fMESA /* 515 */ + dispatch->WindowPos2fvMESA = trWindowPos2fvMESA /* 516 */ + dispatch->WindowPos2iMESA = trWindowPos2iMESA /* 517 */ + dispatch->WindowPos2ivMESA = trWindowPos2ivMESA /* 518 */ + dispatch->WindowPos2sMESA = trWindowPos2sMESA /* 519 */ + dispatch->WindowPos2svMESA = trWindowPos2svMESA /* 520 */ + dispatch->WindowPos3dMESA = trWindowPos3dMESA /* 521 */ + dispatch->WindowPos3dvMESA = trWindowPos3dvMESA /* 522 */ + dispatch->WindowPos3fMESA = trWindowPos3fMESA /* 523 */ + dispatch->WindowPos3fvMESA = trWindowPos3fvMESA /* 524 */ + dispatch->WindowPos3iMESA = trWindowPos3iMESA /* 525 */ + dispatch->WindowPos3ivMESA = trWindowPos3ivMESA /* 526 */ + dispatch->WindowPos3sMESA = trWindowPos3sMESA /* 527 */ + dispatch->WindowPos3svMESA = trWindowPos3svMESA /* 528 */ + dispatch->WindowPos4dMESA = trWindowPos4dMESA /* 529 */ + dispatch->WindowPos4dvMESA = trWindowPos4dvMESA /* 530 */ + dispatch->WindowPos4fMESA = trWindowPos4fMESA /* 531 */ + dispatch->WindowPos4fvMESA = trWindowPos4fvMESA /* 532 */ + dispatch->WindowPos4iMESA = trWindowPos4iMESA /* 533 */ + dispatch->WindowPos4ivMESA = trWindowPos4ivMESA /* 534 */ + dispatch->WindowPos4sMESA = trWindowPos4sMESA /* 535 */ + dispatch->WindowPos4svMESA = trWindowPos4svMESA /* 536 */ + dispatch->BlendFuncSeparateEXT = trBlendFuncSeparateEXT /* 537 */ + dispatch->IndexMaterialEXT = trIndexMaterialEXT /* 538 */ + dispatch->IndexFuncEXT = trIndexFuncEXT /* 539 */ + dispatch->LockArraysEXT = trLockArraysEXT /* 540 */ + dispatch->UnlockArraysEXT = trUnlockArraysEXT /* 541 */ + dispatch->CullParameterdvEXT = trCullParameterdvEXT /* 542 */ + dispatch->CullParameterfvEXT = trCullParameterfvEXT /* 543 */ + dispatch->HintPGI = trHintPGI /* 544 */ + dispatch->FogCoordfEXT = trFogCoordfEXT /* 545 */ + dispatch->FogCoordfvEXT = trFogCoordfvEXT /* 546 */ + dispatch->FogCoorddEXT = trFogCoorddEXT /* 547 */ + dispatch->FogCoorddvEXT = trFogCoorddvEXT /* 548 */ + dispatch->FogCoordPointerEXT = trFogCoordPointerEXT /* 549 */ + dispatch->GetColorTableEXT = trGetColorTableEXT /* 550 */ + dispatch->GetColorTableParameterivEXT = trGetColorTableParameterivEXT /* 551 */ + dispatch->GetColorTableParameterfvEXT = trGetColorTableParameterfvEXT /* 552 */ +#endif +} + + +#else +extern void tr_wrapper_dummy_func(void); +void tr_wrapper_dummy_func(void) +{ +} +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_wrapper.h b/xc/extras/Mesa/src/Trace/tr_wrapper.h new file mode 100644 index 000000000..f65e99c82 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_wrapper.h @@ -0,0 +1,8 @@ +#ifndef TR_WRAPPER_H +#define TR_WRAPPER_H + +#include "glapitable.h" + +void trInitDispatch( struct _glapi_table* dispatch ); + +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_write.c b/xc/extras/Mesa/src/Trace/tr_write.c new file mode 100644 index 000000000..37acb24af --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_write.c @@ -0,0 +1,238 @@ +#ifdef MESA_TRACE + +#include "glheader.h" +#include <time.h> /* XXX move into glheader.h */ +#include "tr_write.h" +#include "tr_context.h" + +#define PATH_MAX 4098 + + +static void trWriteFile( const void * buf, GLint recsize, GLint numrecs, const char * funcname ) { + GLint recswritten; + + if( !(trCtx()->trDoPrint) ) { + return; + } + + recswritten = fwrite( buf, recsize, numrecs, trCtx()->logFP ); + if( recswritten != numrecs ) { + fprintf( stderr, "Error writing to file in %s\n", funcname ); + fprintf( stderr, "Perhaps the disk is full?\n" ); + /* Should we abort ? */ + trCtx()->trDoPrint = GL_FALSE; + } +} + + +static void (*trWrite)( const void *, GLint, GLint, const char *) = trWriteFile; + + +void trWriteCMD( GLint cmd ) { + trWrite( (void*)&cmd, sizeof(GLint), 1, "trWriteCMD" ); +} + +void trWriteb( GLbyte b ) { + trWrite( (void*)&b, sizeof(GLbyte), 1, "trWriteb" ); +} + +void trWrited( GLdouble d ) { + trWrite( (void*)&d, sizeof(GLdouble), 1, "trWrited" ); +} + +void trWriteClampd( GLclampd cd ) { + trWrite( (void*)&cd, sizeof(GLclampd), 1, "trWriteClampd" ); +} + +void trWritef( GLfloat f ) { + trWrite( (void*)&f, sizeof(GLfloat), 1, "trWritef" ); +} + +void trWriteClampf( GLclampf cf ) { + trWrite( (void*)&cf, sizeof(GLclampf), 1, "trWriteClampf" ); +} + +void trWritei( GLint i ) { + trWrite( (void*)&i, sizeof(GLint), 1, "trWritei" ); +} + +void trWrites( GLshort s ) { + trWrite( (void*)&s, sizeof(GLshort), 1, "trWrites" ); +} + +void trWriteub( GLubyte ub ) { + trWrite( (void*)&ub, sizeof(GLubyte), 1, "trWriteub" ); +} + +void trWriteui( GLuint ui ) { + trWrite( (void*)&ui, sizeof(GLuint), 1, "trWriteui" ); +} + +void trWriteus( GLushort us ) { + trWrite( (void*)&us, sizeof(GLushort), 1, "trWriteus" ); +} + +void trWriteBool( GLboolean b ) { + trWrite( (void*)&b, sizeof(GLboolean), 1, "trWriteBool" ); +} + +void trWriteBits( GLbitfield bf ) { + trWrite( (void*)&bf, sizeof(GLbitfield), 1, "trWriteBits" ); +} + +void trWriteEnum( GLenum en ) { + trWrite( (void*)&en, sizeof(GLenum), 1, "trWriteEnum" ); +} + +void trWriteSizei( GLsizei si ) { + trWrite( (void*)&si, sizeof(GLsizei), 1, "trWriteSizei" ); +} + + +void trWritePointer( const void * p ) { + trWrite( (void*)&p, sizeof(void *), 1, "trWritePointer" ); +} + + +void trWriteArrayb( GLsizei n, const GLbyte * b ) { + trWrite( (void *)b, sizeof(GLbyte), n, "trWriteArrayb" ); +} + + +void trWriteArrayub( GLsizei n, const GLubyte * ub ) { + trWrite( (void *)ub, sizeof(GLubyte), n, "trWriteArrayub" ); +} + + +void trWriteArrays( GLsizei n, const GLshort * s ) { + trWrite( (void *)s, sizeof(GLshort), n, "trWriteArrays" ); +} + + +void trWriteArrayus( GLsizei n, const GLushort * us ) { + trWrite( (void *)us, sizeof(GLushort), n, "trWriteArrayus" ); +} + + +void trWriteArrayi( GLsizei n, const GLint * i ) { + trWrite( (void *)i, sizeof(GLint), n, "trWriteArrayi" ); +} + + +void trWriteArrayui( GLsizei n, const GLuint * ui ) { + trWrite( (void *)ui, sizeof(GLuint), n, "trWriteArrayui" ); +} + + +void trWriteArrayBool( GLsizei n, const GLboolean * b ) { + trWrite( (void *)b, sizeof(GLboolean), n, "trWriteArrayBool" ); +} + + +void trWriteArrayf( GLsizei n, const GLfloat * f ) { + trWrite( (void *)f, sizeof(GLfloat), n, "trWriteArrayf" ); +} + + +void trWriteArrayd( GLsizei n, const GLdouble * d ) { + trWrite( (void *)d, sizeof(GLdouble), n, "trWriteArrayd" ); +} + + +void trWriteString( const char * str ) { + GLuint length = strlen(str); + trWriteui( length ); + trWrite( (void *)str, sizeof(GLubyte), length, "trWriteString" ); +} + + +void trFileFlush( void ) { + fflush( trCtx()->logFP ); +} + + +static void trWriteTypeInformation( void ) { + + trWriteub( sizeof(GLint) ); + trWriteub( sizeof(GLshort) ); + trWriteub( sizeof(GLfloat) ); + trWriteub( sizeof(GLdouble) ); + trWriteub( sizeof(GLboolean) ); + trWriteub( sizeof(GLenum) ); + trWriteub( sizeof(GLsizei) ); + trWriteub( sizeof(GLbitfield) ); + trWriteub( sizeof(GLclampf) ); + trWriteub( sizeof(GLclampd) ); + trWriteub( sizeof(GLvoid *) ); + +} + + +static void trWriteHeader( void ) { + struct tm *newtime; + time_t aclock; + char timestring[256]; + + trWriteString( "0.0.1" ); + trWriteString( trCtx()->traceName ); + trWritei( trCtx()->framecounter ); + + /* Always print this! */ + time( &aclock ); + newtime = localtime( &aclock ); + asctime( newtime ); + snprintf( timestring, sizeof(timestring), "Time: %s", asctime( newtime ) ); + trWriteString( timestring ); +} + + +static void trWriteGLState( void ) { + /* + * This function will write all the queryable GL state at + * the time the trace is started. + */ +} + + +void trOpenLogFile( void ) { + GLint numchars; + char buffer[PATH_MAX]; + + numchars = snprintf( buffer, sizeof(buffer), "%s-gl.log.%d", + trCtx()->traceName, trCtx()->framecounter ); + if( numchars > -1 && numchars < sizeof(buffer) ) { + trCtx()->logFP = fopen( buffer, "wb" ); + + /* This information is needed before we can extract _anything_ */ + trWriteTypeInformation(); + trWriteHeader(); + trWriteGLState(); + + (trCtx()->framecounter)++; + } else if( numchars > -1 ) { + fprintf( stderr, "buffer needs to be %d bytes long for logging to work.\n", + numchars + 1 ); + exit( -1 ); + } else { + fprintf( stderr, "buffer needs to grow for logging to work. Try %d bytes.\n", + sizeof(buffer) * 2 ); + exit( -1 ); + } +} + + +void trCloseLogFile( void ) { + if( trCtx()->logFP != NULL ) { + fclose(trCtx()->logFP); + } + + trCtx()->logFP = NULL; +} + + +#else +extern void tr_write_dummy_func(void); +void tr_write_dummy_func(void) +{ +} +#endif diff --git a/xc/extras/Mesa/src/Trace/tr_write.h b/xc/extras/Mesa/src/Trace/tr_write.h new file mode 100644 index 000000000..bd3f341d2 --- /dev/null +++ b/xc/extras/Mesa/src/Trace/tr_write.h @@ -0,0 +1,68 @@ +/* This may look like C code, but it is really -*- C++ -*- */ +/* $Id: tr_write.h,v 1.1.1.1 2003/03/25 00:02:24 alanh Exp $ */ + +/* + * DebugGL + * Version: 1.0 + * + * Copyright (C) 1999-2000 Loki Entertainment + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __TR_WRITE_H +#define __TR_WRITE_H + +#include "GL/gl.h" + +void trWriteCMD( GLint opcode ); +void trWriteb( GLbyte byte ); +void trWriteub( GLubyte ub ); +void trWrited( GLdouble d ); +void trWritef( GLfloat f ); +void trWritei( GLint i ); +void trWriteui( GLuint ui ); +void trWrites( GLshort s ); +void trWriteus( GLushort us ); +void trWriteBool( GLboolean b ); +void trWriteBits( GLbitfield bf ); +void trWriteEnum( GLenum en ); +void trWriteSizei( GLsizei si ); +void trWriteClampf( GLclampf cf ); +void trWriteClampd( GLclampd cd ); +void trWritePointer( const void * p ); + +void trWriteArrayb( GLsizei n, const GLbyte * b ); +void trWriteArrayub( GLsizei n, const GLubyte * ub ); +void trWriteArrays( GLsizei n, const GLshort * s ); +void trWriteArrayus( GLsizei n, const GLushort * us ); +void trWriteArrayi( GLsizei n, const GLint * i ); +void trWriteArrayui( GLsizei n, const GLuint * ui ); +void trWriteArrayBool( GLsizei n, const GLboolean * b ); +void trWriteArrayf( GLsizei n, const GLfloat * f ); +void trWriteArrayd( GLsizei n, const GLdouble * d ); + +void trWriteString( const char * str ); + +void trFileFlush( void ); + +void trOpenLogFile( void ); +void trCloseLogFile( void ); + +#endif diff --git a/xc/extras/Mesa/src/X/fakeglx.c b/xc/extras/Mesa/src/X/fakeglx.c index e1e713795..4bb3e86f3 100644 --- a/xc/extras/Mesa/src/X/fakeglx.c +++ b/xc/extras/Mesa/src/X/fakeglx.c @@ -2476,6 +2476,34 @@ Fake_glXSet3DfxModeMESA( int mode ) +/*** AGP memory allocation ***/ +static void * +Fake_glXAllocateMemoryNV( GLsizei size, + GLfloat readFrequency, + GLfloat writeFrequency, + GLfloat priority ) +{ + (void) size; + (void) readFrequency; + (void) writeFrequency; + (void) priority; + return NULL; +} + + +static void +Fake_glXFreeMemoryNV( GLvoid *pointer ) +{ + (void) pointer; +} + + +static GLuint +Fake_glXGetAGPOffsetMESA( const GLvoid *pointer ) +{ + return ~0; +} + extern struct _glxapi_table *_mesa_GetGLXDispatchTable(void); struct _glxapi_table *_mesa_GetGLXDispatchTable(void) @@ -2614,5 +2642,12 @@ struct _glxapi_table *_mesa_GetGLXDispatchTable(void) /*** GLX_MESA_set_3dfx_mode ***/ glx.Set3DfxModeMESA = Fake_glXSet3DfxModeMESA; + /*** GLX_NV_vertex_array_range ***/ + glx.AllocateMemoryNV = Fake_glXAllocateMemoryNV; + glx.FreeMemoryNV = Fake_glXFreeMemoryNV; + + /*** GLX_MESA_agp_offset ***/ + glx.GetAGPOffsetMESA = Fake_glXGetAGPOffsetMESA; + return &glx; } diff --git a/xc/extras/Mesa/src/X/glxapi.c b/xc/extras/Mesa/src/X/glxapi.c index 4ddd7a92e..33b6eb416 100644 --- a/xc/extras/Mesa/src/X/glxapi.c +++ b/xc/extras/Mesa/src/X/glxapi.c @@ -1,9 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 4.0.2 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -988,6 +988,49 @@ Bool glXSet3DfxModeMESA(int mode) +/*** GLX_NV_vertex_array_range ***/ + +void * +glXAllocateMemoryNV( GLsizei size, + GLfloat readFrequency, + GLfloat writeFrequency, + GLfloat priority ) +{ + struct _glxapi_table *t; + Display *dpy = glXGetCurrentDisplay(); + GET_DISPATCH(dpy, t); + if (!t) + return NULL; + return (t->AllocateMemoryNV)(size, readFrequency, writeFrequency, priority); +} + + +void +glXFreeMemoryNV( GLvoid *pointer ) +{ + struct _glxapi_table *t; + Display *dpy = glXGetCurrentDisplay(); + GET_DISPATCH(dpy, t); + if (!t) + return; + (t->FreeMemoryNV)(pointer); +} + + +/*** GLX_MESA_agp_offset */ + +GLuint +glXGetAGPOffsetMESA( const GLvoid *pointer ) +{ + struct _glxapi_table *t; + Display *dpy = glXGetCurrentDisplay(); + GET_DISPATCH(dpy, t); + if (!t) + return ~0; + return (t->GetAGPOffsetMESA)(pointer); +} + + /**********************************************************************/ /* GLX API management functions */ /**********************************************************************/ @@ -1197,6 +1240,10 @@ static struct name_address_pair GLX_functions[] = { /*** GLX_ARB_get_proc_address ***/ { "glXGetProcAddressARB", (GLvoid *) glXGetProcAddressARB }, + /*** GLX AGP memory allocation ***/ + { "glXAllocateMemoryNV", (GLvoid *) glXAllocateMemoryNV }, + { "glXFreeMemoryNV", (GLvoid *) glXFreeMemoryNV }, + { NULL, NULL } /* end of list */ }; diff --git a/xc/extras/Mesa/src/X/glxapi.h b/xc/extras/Mesa/src/X/glxapi.h index 31e257e6f..590479dd4 100644 --- a/xc/extras/Mesa/src/X/glxapi.h +++ b/xc/extras/Mesa/src/X/glxapi.h @@ -1,9 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 4.0.2 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -195,6 +195,15 @@ struct _glxapi_table { /*** GLX_MESA_set_3dfx_mode ***/ Bool (*Set3DfxModeMESA)(int mode); + /*** GLX_NV_vertex_array_range ***/ + void * (*AllocateMemoryNV)( GLsizei size, + GLfloat readFrequency, + GLfloat writeFrequency, + GLfloat priority ); + void (*FreeMemoryNV)( GLvoid *pointer ); + + /*** GLX_MESA_agp_offset ***/ + GLuint (*GetAGPOffsetMESA)( const GLvoid *pointer ); }; diff --git a/xc/extras/Mesa/src/X/realglx.c b/xc/extras/Mesa/src/X/realglx.c index bd9800532..ba172c974 100644 --- a/xc/extras/Mesa/src/X/realglx.c +++ b/xc/extras/Mesa/src/X/realglx.c @@ -1,10 +1,9 @@ -/* $Id: realglx.c,v 1.1.1.3 2002/10/22 13:05:58 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -170,5 +169,12 @@ _real_GetGLXDispatchTable(void) /*** GLX_MESA_set_3dfx_mode ***/ glx.Set3DfxModeMESA = _real_glXSet3DfxModeMESA; + /*** GLX_NV_vertex_array_range ***/ + glx.AllocateMemoryNV = _real_glXAllocateMemoryNV; + glx.FreeMemoryNV = _real_glXFreeMemoryNV; + + /*** GLX_MESA_agp_offset ***/ + glx.GetAGPOffsetMESA = _real_glXGetAGPOffsetMESA; + return &glx; } diff --git a/xc/extras/Mesa/src/X/realglx.h b/xc/extras/Mesa/src/X/realglx.h index da5924987..05a3f339d 100644 --- a/xc/extras/Mesa/src/X/realglx.h +++ b/xc/extras/Mesa/src/X/realglx.h @@ -1,4 +1,3 @@ -/* $Id: realglx.h,v 1.1.1.3 2002/10/22 13:05:58 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -312,4 +311,21 @@ _real_glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable, int x, int y, int width, int height ); #endif + +#ifdef GLX_NV_vertex_array_range +extern void * +_real_glXAllocateMemoryNV( GLsizei size, GLfloat readFrequency, + GLfloat writeFrequency, GLfloat priority ); + + +extern void +_real_glXFreeMemoryNV( GLvoid *pointer ); +#endif + +#ifdef GLX_MESA_agp_offset +extern GLuint +_real_glXGetAGPOffsetMESA( const GLvoid *pointer ); +#endif + + #endif /* REALGLX_H */ diff --git a/xc/extras/Mesa/src/X/xm_api.c b/xc/extras/Mesa/src/X/xm_api.c index d1d4682aa..882e49462 100644 --- a/xc/extras/Mesa/src/X/xm_api.c +++ b/xc/extras/Mesa/src/X/xm_api.c @@ -1,3 +1,4 @@ + /* * Mesa 3-D graphics library * Version: 4.0.3 @@ -21,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/X/xm_api.c,v 1.5 2002/09/09 21:52:12 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/X/xm_api.c,v 1.6 2002/12/16 16:18:31 dawes Exp $ */ /* * This file contains the implementations of all the XMesa* functions. diff --git a/xc/extras/Mesa/src/X/xm_dd.c b/xc/extras/Mesa/src/X/xm_dd.c index f7a1e7107..8334737d2 100644 --- a/xc/extras/Mesa/src/X/xm_dd.c +++ b/xc/extras/Mesa/src/X/xm_dd.c @@ -1,3 +1,4 @@ + /* * Mesa 3-D graphics library * Version: 4.0.3 @@ -21,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/X/xm_dd.c,v 1.4 2002/09/09 21:29:58 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/X/xm_dd.c,v 1.7 2003/01/16 19:13:08 alanh Exp $ */ #include "glxheader.h" #include "context.h" @@ -61,8 +62,14 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height ) unsigned int winwidth, winheight; #ifdef XFree86Server /* XFree86 GLX renderer */ - winwidth = xmBuffer->frontbuffer->width; - winheight = xmBuffer->frontbuffer->height; + if (xmBuffer->frontbuffer->width > MAX_WIDTH || + xmBuffer->frontbuffer->height > MAX_HEIGHT) { + winwidth = buffer->Width; + winheight = buffer->Height; + } else { + winwidth = xmBuffer->frontbuffer->width; + winheight = xmBuffer->frontbuffer->height; + } #else Window root; int winx, winy; @@ -229,6 +236,7 @@ index_mask( GLcontext *ctx, GLuint mask ) m = (unsigned long) mask; } XMesaSetPlaneMask( xmesa->display, xmesa->xm_buffer->cleargc, m ); + XMesaSetPlaneMask( xmesa->display, xmesa->xm_buffer->gc, m ); } } diff --git a/xc/extras/Mesa/src/X/xm_line.c b/xc/extras/Mesa/src/X/xm_line.c index 007c3ffa1..879bd3c51 100644 --- a/xc/extras/Mesa/src/X/xm_line.c +++ b/xc/extras/Mesa/src/X/xm_line.c @@ -1,4 +1,3 @@ -/* $Id: xm_line.c,v 1.1.1.1 2002/10/22 13:06:06 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X/xm_span.c b/xc/extras/Mesa/src/X/xm_span.c index 2fe2af697..44f0b4381 100644 --- a/xc/extras/Mesa/src/X/xm_span.c +++ b/xc/extras/Mesa/src/X/xm_span.c @@ -1,3 +1,4 @@ + /* * Mesa 3-D graphics library * Version: 3.5 @@ -21,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/X/xm_span.c,v 1.4 2002/09/09 21:07:28 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/X/xm_span.c,v 1.5 2002/12/16 16:18:31 dawes Exp $ */ #include "glxheader.h" #include "context.h" diff --git a/xc/extras/Mesa/src/X/xm_tri.c b/xc/extras/Mesa/src/X/xm_tri.c index 3026b77e2..c2e205afe 100644 --- a/xc/extras/Mesa/src/X/xm_tri.c +++ b/xc/extras/Mesa/src/X/xm_tri.c @@ -1,4 +1,3 @@ -/* $Id: xm_tri.c,v 1.1.1.1 2002/10/22 13:06:05 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/3dnow_normal.S b/xc/extras/Mesa/src/X86/3dnow_normal.S index 920788fc6..00aea0c3c 100644 --- a/xc/extras/Mesa/src/X86/3dnow_normal.S +++ b/xc/extras/Mesa/src/X86/3dnow_normal.S @@ -1,4 +1,3 @@ -/* $Id: 3dnow_normal.S,v 1.1.1.1 2002/10/22 13:06:12 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -23,6 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/* $XFree86: xc/extras/Mesa/src/X86/3dnow_normal.S,v 1.3 2003/01/12 03:55:44 tsi Exp $ */ /* * 3Dnow assembly code by Holger Waechtler @@ -41,7 +41,7 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals) GLNAME(_mesa_3dnow_transform_normalize_normals): - #define FRAME_OFFSET 12 +#define FRAME_OFFSET 12 PUSH_L ( EDI ) PUSH_L ( ESI ) @@ -67,8 +67,8 @@ GLNAME(_mesa_3dnow_transform_normalize_normals): PUSH_L ( EAX ) PUSH_L ( EDX ) /* save counter & pointer for */ /* the normalize pass */ - #undef FRAME_OFFSET - #define FRAME_OFFSET 24 +#undef FRAME_OFFSET +#define FRAME_OFFSET 24 MOVQ ( M(0), MM3 ) /* m1 | m0 */ MOVQ ( M(4), MM4 ) /* m5 | m4 */ @@ -218,8 +218,8 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot) GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot): - #undef FRAME_OFFSET - #define FRAME_OFFSET 12 +#undef FRAME_OFFSET +#define FRAME_OFFSET 12 PUSH_L ( EDI ) PUSH_L ( ESI ) @@ -357,8 +357,8 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot) GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot): - #undef FRAME_OFFSET - #define FRAME_OFFSET 12 +#undef FRAME_OFFSET +#define FRAME_OFFSET 12 PUSH_L ( EDI ) PUSH_L ( ESI ) @@ -428,8 +428,8 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals) GLNAME(_mesa_3dnow_transform_rescale_normals): - #undef FRAME_OFFSET - #define FRAME_OFFSET 8 +#undef FRAME_OFFSET +#define FRAME_OFFSET 8 PUSH_L ( EDI ) PUSH_L ( ESI ) @@ -525,8 +525,8 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_transform_normals_no_rot) GLNAME(_mesa_3dnow_transform_normals_no_rot): - #undef FRAME_OFFSET - #define FRAME_OFFSET 8 +#undef FRAME_OFFSET +#define FRAME_OFFSET 8 PUSH_L ( EDI ) PUSH_L ( ESI ) @@ -591,8 +591,8 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_transform_normals) GLNAME(_mesa_3dnow_transform_normals): - #undef FRAME_OFFSET - #define FRAME_OFFSET 8 +#undef FRAME_OFFSET +#define FRAME_OFFSET 8 PUSH_L ( EDI ) PUSH_L ( ESI ) @@ -675,8 +675,8 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_normalize_normals) GLNAME(_mesa_3dnow_normalize_normals): - #undef FRAME_OFFSET - #define FRAME_OFFSET 12 +#undef FRAME_OFFSET +#define FRAME_OFFSET 12 PUSH_L ( EDI ) PUSH_L ( ESI ) @@ -786,8 +786,8 @@ ALIGNTEXT16 GLOBL GLNAME(_mesa_3dnow_rescale_normals) GLNAME(_mesa_3dnow_rescale_normals): - #undef FRAME_OFFSET - #define FRAME_OFFSET 8 +#undef FRAME_OFFSET +#define FRAME_OFFSET 8 PUSH_L ( EDI ) PUSH_L ( ESI ) diff --git a/xc/extras/Mesa/src/X86/3dnow_xform1.S b/xc/extras/Mesa/src/X86/3dnow_xform1.S index 2cd83a9a9..1713dd076 100644 --- a/xc/extras/Mesa/src/X86/3dnow_xform1.S +++ b/xc/extras/Mesa/src/X86/3dnow_xform1.S @@ -1,4 +1,3 @@ -/* $Id: 3dnow_xform1.S,v 1.1.1.1 2002/10/22 13:06:07 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/3dnow_xform2.S b/xc/extras/Mesa/src/X86/3dnow_xform2.S index f4413e723..4627935dc 100644 --- a/xc/extras/Mesa/src/X86/3dnow_xform2.S +++ b/xc/extras/Mesa/src/X86/3dnow_xform2.S @@ -1,4 +1,3 @@ -/* $Id: 3dnow_xform2.S,v 1.1.1.1 2002/10/22 13:06:07 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/3dnow_xform3.S b/xc/extras/Mesa/src/X86/3dnow_xform3.S index 0ad9d7e45..ac6153c36 100644 --- a/xc/extras/Mesa/src/X86/3dnow_xform3.S +++ b/xc/extras/Mesa/src/X86/3dnow_xform3.S @@ -1,4 +1,3 @@ -/* $Id: 3dnow_xform3.S,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/3dnow_xform4.S b/xc/extras/Mesa/src/X86/3dnow_xform4.S index 475975192..32d481f8e 100644 --- a/xc/extras/Mesa/src/X86/3dnow_xform4.S +++ b/xc/extras/Mesa/src/X86/3dnow_xform4.S @@ -1,4 +1,3 @@ -/* $Id: 3dnow_xform4.S,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/common_x86.c b/xc/extras/Mesa/src/X86/common_x86.c index fc0fbb8c5..80d54f36f 100644 --- a/xc/extras/Mesa/src/X86/common_x86.c +++ b/xc/extras/Mesa/src/X86/common_x86.c @@ -29,7 +29,7 @@ * * Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de> * Changed by Andre Werthmann <wertmann@cs.uni-potsdam.de> for using the - * new Katmai functions. + * new SSE functions. */ #include <stdlib.h> diff --git a/xc/extras/Mesa/src/X86/common_x86_asm.S b/xc/extras/Mesa/src/X86/common_x86_asm.S index 9241843ff..113f467bf 100644 --- a/xc/extras/Mesa/src/X86/common_x86_asm.S +++ b/xc/extras/Mesa/src/X86/common_x86_asm.S @@ -22,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/X86/common_x86_asm.S,v 1.13 2002/09/09 21:52:14 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/X86/common_x86_asm.S,v 1.16 2002/12/16 16:18:33 dawes Exp $ */ /* * Check extended CPU capabilities. Now justs returns the raw CPUID @@ -77,6 +77,7 @@ GLOBL GLNAME( _mesa_identify_x86_cpu_features ) GLNAME( _mesa_identify_x86_cpu_features ): PUSH_L ( EBX ) + PUSH_L ( ESI ) /* Test for the CPUID command. If the ID Flag bit in EFLAGS * (bit 21) is writable, the CPUID command is present. @@ -116,6 +117,11 @@ GLNAME( _mesa_identify_x86_cpu_features ): MOV_L ( CONST(0x1), EAX ) CPUID MOV_L ( EDX, EAX ) + + /* Mask out highest bit, which is used by AMD for 3dnow. + * Newer Intel have this bit set, but do not support 3dnow. + */ + AND_L ( CONST(0X7FFFFFFF), EAX) JMP ( LLBL(cpuid_done) ) LLBL(cpuid_amd): @@ -172,6 +178,7 @@ LLBL(cpuid_failed): LLBL (cpuid_done): + POP_L ( ESI ) POP_L ( EBX ) RET diff --git a/xc/extras/Mesa/src/X86/common_x86_asm.h b/xc/extras/Mesa/src/X86/common_x86_asm.h index 38096eced..49033ca1a 100644 --- a/xc/extras/Mesa/src/X86/common_x86_asm.h +++ b/xc/extras/Mesa/src/X86/common_x86_asm.h @@ -29,7 +29,7 @@ * * Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de> * Changed by Andre Werthmann <wertmann@cs.uni-potsdam.de> for using the - * new Katmai functions + * new SSE functions * * Reimplemented by Gareth Hughes <gareth@valinux.com> in a more * future-proof manner, based on code in the Linux kernel. diff --git a/xc/extras/Mesa/src/X86/common_x86_macros.h b/xc/extras/Mesa/src/X86/common_x86_macros.h index 05574e539..d1569a9dc 100644 --- a/xc/extras/Mesa/src/X86/common_x86_macros.h +++ b/xc/extras/Mesa/src/X86/common_x86_macros.h @@ -1,4 +1,3 @@ -/* $Id: common_x86_macros.h,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/gen_matypes.c b/xc/extras/Mesa/src/X86/gen_matypes.c index c983fdd5f..5c6b3fefd 100644 --- a/xc/extras/Mesa/src/X86/gen_matypes.c +++ b/xc/extras/Mesa/src/X86/gen_matypes.c @@ -1,4 +1,3 @@ -/* $Id: gen_matypes.c,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/mmx.h b/xc/extras/Mesa/src/X86/mmx.h index 9692d3f2a..6adfb5fbd 100644 --- a/xc/extras/Mesa/src/X86/mmx.h +++ b/xc/extras/Mesa/src/X86/mmx.h @@ -1,4 +1,4 @@ -/* $Id: mmx.h,v 1.1.1.4 2002/10/22 13:06:08 alanh Exp $ */ +/* $Id: mmx.h,v 1.1.1.5 2003/03/25 00:02:43 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/norm_args.h b/xc/extras/Mesa/src/X86/norm_args.h index 7c44fef83..59cbda7b0 100644 --- a/xc/extras/Mesa/src/X86/norm_args.h +++ b/xc/extras/Mesa/src/X86/norm_args.h @@ -1,4 +1,3 @@ -/* $Id: norm_args.h,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/sse.c b/xc/extras/Mesa/src/X86/sse.c index dea52e9e3..79771a98c 100644 --- a/xc/extras/Mesa/src/X86/sse.c +++ b/xc/extras/Mesa/src/X86/sse.c @@ -1,4 +1,3 @@ -/* $Id: sse.c,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/sse.h b/xc/extras/Mesa/src/X86/sse.h index 0d0ce4c14..c594446e8 100644 --- a/xc/extras/Mesa/src/X86/sse.h +++ b/xc/extras/Mesa/src/X86/sse.h @@ -1,4 +1,3 @@ -/* $Id: sse.h,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/sse_normal.S b/xc/extras/Mesa/src/X86/sse_normal.S index 4b2d6edbe..afc12f3b5 100644 --- a/xc/extras/Mesa/src/X86/sse_normal.S +++ b/xc/extras/Mesa/src/X86/sse_normal.S @@ -1,4 +1,3 @@ -/* $Id: sse_normal.S,v 1.1.1.1 2002/10/22 13:06:09 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/sse_xform1.S b/xc/extras/Mesa/src/X86/sse_xform1.S index ac3582629..41dd39d50 100644 --- a/xc/extras/Mesa/src/X86/sse_xform1.S +++ b/xc/extras/Mesa/src/X86/sse_xform1.S @@ -1,4 +1,3 @@ -/* $Id: sse_xform1.S,v 1.1.1.1 2002/10/22 13:06:15 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/sse_xform2.S b/xc/extras/Mesa/src/X86/sse_xform2.S index 23c2b5497..025af4c50 100644 --- a/xc/extras/Mesa/src/X86/sse_xform2.S +++ b/xc/extras/Mesa/src/X86/sse_xform2.S @@ -1,4 +1,3 @@ -/* $Id: sse_xform2.S,v 1.1.1.1 2002/10/22 13:06:15 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/sse_xform3.S b/xc/extras/Mesa/src/X86/sse_xform3.S index b4b83f710..8518b9c5f 100644 --- a/xc/extras/Mesa/src/X86/sse_xform3.S +++ b/xc/extras/Mesa/src/X86/sse_xform3.S @@ -1,4 +1,3 @@ -/* $Id: sse_xform3.S,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/sse_xform4.S b/xc/extras/Mesa/src/X86/sse_xform4.S index 2c53d45d1..5335939a1 100644 --- a/xc/extras/Mesa/src/X86/sse_xform4.S +++ b/xc/extras/Mesa/src/X86/sse_xform4.S @@ -1,4 +1,3 @@ -/* $Id: sse_xform4.S,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/X86/x86_xform2.S b/xc/extras/Mesa/src/X86/x86_xform2.S index 31446add7..a2338ffdf 100644 --- a/xc/extras/Mesa/src/X86/x86_xform2.S +++ b/xc/extras/Mesa/src/X86/x86_xform2.S @@ -1,4 +1,3 @@ -/* $Id: x86_xform2.S,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -23,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/X86/x86_xform2.S,v 1.3 2002/09/09 21:07:33 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/X86/x86_xform2.S,v 1.4 2002/12/16 16:18:33 dawes Exp $ */ /* * NOTE: Avoid using spaces in between '(' ')' and arguments, especially diff --git a/xc/extras/Mesa/src/X86/x86_xform3.S b/xc/extras/Mesa/src/X86/x86_xform3.S index 72539dfcb..375097fe7 100644 --- a/xc/extras/Mesa/src/X86/x86_xform3.S +++ b/xc/extras/Mesa/src/X86/x86_xform3.S @@ -1,4 +1,3 @@ -/* $Id: x86_xform3.S,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -23,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/X86/x86_xform3.S,v 1.3 2002/09/09 21:07:33 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/X86/x86_xform3.S,v 1.4 2002/12/16 16:18:33 dawes Exp $ */ /* * NOTE: Avoid using spaces in between '(' ')' and arguments, especially diff --git a/xc/extras/Mesa/src/X86/x86_xform4.S b/xc/extras/Mesa/src/X86/x86_xform4.S index 87821ad32..6014a4198 100644 --- a/xc/extras/Mesa/src/X86/x86_xform4.S +++ b/xc/extras/Mesa/src/X86/x86_xform4.S @@ -1,4 +1,3 @@ -/* $Id: x86_xform4.S,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -23,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/X86/x86_xform4.S,v 1.3 2002/09/09 21:07:33 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/X86/x86_xform4.S,v 1.4 2002/12/16 16:18:34 dawes Exp $ */ /* * NOTE: Avoid using spaces in between '(' ')' and arguments, especially diff --git a/xc/extras/Mesa/src/api_arrayelt.c b/xc/extras/Mesa/src/api_arrayelt.c index 15ef51377..4ebfb59dc 100644 --- a/xc/extras/Mesa/src/api_arrayelt.c +++ b/xc/extras/Mesa/src/api_arrayelt.c @@ -1,4 +1,3 @@ -/* $Id: api_arrayelt.c,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_arrayelt.h b/xc/extras/Mesa/src/api_arrayelt.h index 4f42d97e5..706a72308 100644 --- a/xc/extras/Mesa/src/api_arrayelt.h +++ b/xc/extras/Mesa/src/api_arrayelt.h @@ -1,4 +1,3 @@ -/* $Id: api_arrayelt.h,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_eval.c b/xc/extras/Mesa/src/api_eval.c index 9f497ce0c..854677e64 100644 --- a/xc/extras/Mesa/src/api_eval.c +++ b/xc/extras/Mesa/src/api_eval.c @@ -1,4 +1,3 @@ -/* $Id: api_eval.c,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_eval.h b/xc/extras/Mesa/src/api_eval.h index 878067c22..d6cb38c9f 100644 --- a/xc/extras/Mesa/src/api_eval.h +++ b/xc/extras/Mesa/src/api_eval.h @@ -1,4 +1,3 @@ -/* $Id: api_eval.h,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_loopback.c b/xc/extras/Mesa/src/api_loopback.c index c944e6989..90558fc45 100644 --- a/xc/extras/Mesa/src/api_loopback.c +++ b/xc/extras/Mesa/src/api_loopback.c @@ -1,4 +1,3 @@ -/* $Id: api_loopback.c,v 1.1.1.1 2002/10/22 13:05:37 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_loopback.h b/xc/extras/Mesa/src/api_loopback.h index 51cebd14d..a4858e44f 100644 --- a/xc/extras/Mesa/src/api_loopback.h +++ b/xc/extras/Mesa/src/api_loopback.h @@ -1,4 +1,3 @@ -/* $Id: api_loopback.h,v 1.1.1.1 2002/10/22 13:05:37 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_noop.c b/xc/extras/Mesa/src/api_noop.c index 373bff851..fb34dd3de 100644 --- a/xc/extras/Mesa/src/api_noop.c +++ b/xc/extras/Mesa/src/api_noop.c @@ -1,4 +1,3 @@ -/* $Id: api_noop.c,v 1.1.1.1 2002/10/22 13:05:43 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_noop.h b/xc/extras/Mesa/src/api_noop.h index 380fe9225..fcfa16c29 100644 --- a/xc/extras/Mesa/src/api_noop.h +++ b/xc/extras/Mesa/src/api_noop.h @@ -1,4 +1,3 @@ -/* $Id: api_noop.h,v 1.1.1.1 2002/10/22 13:05:43 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_validate.c b/xc/extras/Mesa/src/api_validate.c index 2f0869952..bca682e89 100644 --- a/xc/extras/Mesa/src/api_validate.c +++ b/xc/extras/Mesa/src/api_validate.c @@ -1,4 +1,3 @@ -/* $Id: api_validate.c,v 1.1.1.1 2002/10/22 13:05:24 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/api_validate.h b/xc/extras/Mesa/src/api_validate.h index 6b6a76266..10f0c34e6 100644 --- a/xc/extras/Mesa/src/api_validate.h +++ b/xc/extras/Mesa/src/api_validate.h @@ -1,4 +1,3 @@ -/* $Id: api_validate.h,v 1.1.1.1 2002/10/22 13:05:24 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/array_cache/ac_context.c b/xc/extras/Mesa/src/array_cache/ac_context.c index d78394e52..5286a2c67 100644 --- a/xc/extras/Mesa/src/array_cache/ac_context.c +++ b/xc/extras/Mesa/src/array_cache/ac_context.c @@ -1,4 +1,3 @@ -/* $Id: ac_context.c,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/array_cache/ac_context.h b/xc/extras/Mesa/src/array_cache/ac_context.h index 4916497b7..7c1132f7b 100644 --- a/xc/extras/Mesa/src/array_cache/ac_context.h +++ b/xc/extras/Mesa/src/array_cache/ac_context.h @@ -1,4 +1,3 @@ -/* $Id: ac_context.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/array_cache/ac_import.c b/xc/extras/Mesa/src/array_cache/ac_import.c index 745a7c4f0..183527eaf 100644 --- a/xc/extras/Mesa/src/array_cache/ac_import.c +++ b/xc/extras/Mesa/src/array_cache/ac_import.c @@ -1,4 +1,3 @@ -/* $Id: ac_import.c,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/array_cache/acache.h b/xc/extras/Mesa/src/array_cache/acache.h index 52e4c1f80..7579ec3fe 100644 --- a/xc/extras/Mesa/src/array_cache/acache.h +++ b/xc/extras/Mesa/src/array_cache/acache.h @@ -1,4 +1,3 @@ -/* $Id: acache.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/attrib.c b/xc/extras/Mesa/src/attrib.c index 636c33ee5..0f74019c2 100644 --- a/xc/extras/Mesa/src/attrib.c +++ b/xc/extras/Mesa/src/attrib.c @@ -942,12 +942,16 @@ _mesa_PopAttrib(void) point = (const struct gl_point_attrib *) attr->data; _mesa_PointSize(point->Size); _mesa_set_enable(ctx, GL_POINT_SMOOTH, point->SmoothFlag); - _mesa_PointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, - point->Params); - _mesa_PointParameterfEXT(GL_POINT_SIZE_MIN_EXT, point->MinSize); - _mesa_PointParameterfEXT(GL_POINT_SIZE_MAX_EXT, point->MaxSize); - _mesa_PointParameterfEXT(GL_POINT_FADE_THRESHOLD_SIZE_EXT, - point->Threshold); + if (ctx->Extensions.EXT_point_parameters) { + _mesa_PointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, + point->Params); + _mesa_PointParameterfEXT(GL_POINT_SIZE_MIN_EXT, + point->MinSize); + _mesa_PointParameterfEXT(GL_POINT_SIZE_MAX_EXT, + point->MaxSize); + _mesa_PointParameterfEXT(GL_POINT_FADE_THRESHOLD_SIZE_EXT, + point->Threshold); + } } break; case GL_POLYGON_BIT: diff --git a/xc/extras/Mesa/src/colormac.h b/xc/extras/Mesa/src/colormac.h index ddfc2d22b..18f12d98e 100644 --- a/xc/extras/Mesa/src/colormac.h +++ b/xc/extras/Mesa/src/colormac.h @@ -1,4 +1,3 @@ -/* $Id: colormac.h,v 1.1.1.1 2002/10/22 13:05:43 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/context.c b/xc/extras/Mesa/src/context.c index 3978fbe63..07b6fce9e 100644 --- a/xc/extras/Mesa/src/context.c +++ b/xc/extras/Mesa/src/context.c @@ -1,4 +1,3 @@ -/* $Id: context.c,v 1.1.1.8 2002/10/22 13:05:37 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -1094,7 +1093,6 @@ init_attrib_groups( GLcontext *ctx ) ctx->Point.MinSize = 0.0; ctx->Point.MaxSize = ctx->Const.MaxPointSize; ctx->Point.Threshold = 1.0; - ctx->Point.SpriteMode = GL_FALSE; /* GL_MESA_sprite_point */ /* Polygon group */ ctx->Polygon.CullFlag = GL_FALSE; @@ -1581,36 +1579,6 @@ _mesa_initialize_context( GLcontext *ctx, } ctx->MRD = 1.0; /* Minimum resolvable depth value, for polygon offset */ - -#if defined(MESA_TRACE) - ctx->TraceCtx = (trace_context_t *) CALLOC( sizeof(trace_context_t) ); -#if 0 - /* Brian: do you want to have CreateContext fail here, - or should we just trap in NewTrace (currently done)? */ - if (!(ctx->TraceCtx)) { - free_shared_state(ctx, ctx->Shared); - FREE( ctx->Exec ); - FREE( ctx->Save ); - return GL_FALSE; - } -#endif - trInitContext(ctx->TraceCtx); - - ctx->TraceDispatch = (struct _glapi_table *) - CALLOC(dispatchSize * sizeof(void*)); -#if 0 - if (!(ctx->TraceCtx)) { - free_shared_state(ctx, ctx->Shared); - FREE( ctx->Exec ); - FREE( ctx->Save ); - FREE( ctx->TraceCtx ); - return GL_FALSE; - } -#endif - trInitDispatch(ctx->TraceDispatch); -#endif - - if (getenv("MESA_DEBUG")) add_debug_flags(getenv("MESA_DEBUG")); diff --git a/xc/extras/Mesa/src/convolve.h b/xc/extras/Mesa/src/convolve.h index 795ee7c78..f97c9f35b 100644 --- a/xc/extras/Mesa/src/convolve.h +++ b/xc/extras/Mesa/src/convolve.h @@ -1,4 +1,3 @@ -/* $Id: convolve.h,v 1.1.1.1 2002/10/22 13:05:50 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/debug.c b/xc/extras/Mesa/src/debug.c index de309348e..dd1a6dcc8 100644 --- a/xc/extras/Mesa/src/debug.c +++ b/xc/extras/Mesa/src/debug.c @@ -1,4 +1,3 @@ -/* $Id: debug.c,v 1.1.1.1 2002/10/22 13:05:08 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/debug.h b/xc/extras/Mesa/src/debug.h index 3ec4923b2..6b45c0336 100644 --- a/xc/extras/Mesa/src/debug.h +++ b/xc/extras/Mesa/src/debug.h @@ -1,4 +1,3 @@ -/* $Id: debug.h,v 1.1.1.1 2002/10/22 13:05:08 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/dlist.c b/xc/extras/Mesa/src/dlist.c index 5fe6124ec..99aa39623 100644 --- a/xc/extras/Mesa/src/dlist.c +++ b/xc/extras/Mesa/src/dlist.c @@ -1,9 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.5 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -5721,6 +5721,7 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize ) /* GL 1.1 */ table->AreTexturesResident = exec_AreTexturesResident; + table->AreTexturesResidentEXT = exec_AreTexturesResident; table->BindTexture = save_BindTexture; table->ColorPointer = exec_ColorPointer; table->CopyTexImage1D = save_CopyTexImage1D; @@ -5732,10 +5733,12 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize ) table->EdgeFlagPointer = exec_EdgeFlagPointer; table->EnableClientState = exec_EnableClientState; table->GenTextures = exec_GenTextures; + table->GenTexturesEXT = exec_GenTextures; table->GetPointerv = exec_GetPointerv; table->IndexPointer = exec_IndexPointer; table->InterleavedArrays = exec_InterleavedArrays; table->IsTexture = exec_IsTexture; + table->IsTextureEXT = exec_IsTexture; table->NormalPointer = exec_NormalPointer; table->PopClientAttrib = exec_PopClientAttrib; table->PrioritizeTextures = save_PrioritizeTextures; @@ -5769,18 +5772,31 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize ) table->CopyConvolutionFilter1D = exec_CopyConvolutionFilter1D; table->CopyConvolutionFilter2D = exec_CopyConvolutionFilter2D; table->GetColorTable = exec_GetColorTable; + table->GetColorTableEXT = exec_GetColorTable; table->GetColorTableParameterfv = exec_GetColorTableParameterfv; + table->GetColorTableParameterfvEXT = exec_GetColorTableParameterfv; table->GetColorTableParameteriv = exec_GetColorTableParameteriv; + table->GetColorTableParameterivEXT = exec_GetColorTableParameteriv; table->GetConvolutionFilter = exec_GetConvolutionFilter; + table->GetConvolutionFilterEXT = exec_GetConvolutionFilter; table->GetConvolutionParameterfv = exec_GetConvolutionParameterfv; + table->GetConvolutionParameterfvEXT = exec_GetConvolutionParameterfv; table->GetConvolutionParameteriv = exec_GetConvolutionParameteriv; + table->GetConvolutionParameterivEXT = exec_GetConvolutionParameteriv; table->GetHistogram = exec_GetHistogram; + table->GetHistogramEXT = exec_GetHistogram; table->GetHistogramParameterfv = exec_GetHistogramParameterfv; + table->GetHistogramParameterfvEXT = exec_GetHistogramParameterfv; table->GetHistogramParameteriv = exec_GetHistogramParameteriv; + table->GetHistogramParameterivEXT = exec_GetHistogramParameteriv; table->GetMinmax = exec_GetMinmax; + table->GetMinmaxEXT = exec_GetMinmax; table->GetMinmaxParameterfv = exec_GetMinmaxParameterfv; + table->GetMinmaxParameterfvEXT = exec_GetMinmaxParameterfv; table->GetMinmaxParameteriv = exec_GetMinmaxParameteriv; + table->GetMinmaxParameterivEXT = exec_GetMinmaxParameteriv; table->GetSeparableFilter = exec_GetSeparableFilter; + table->GetSeparableFilterEXT = exec_GetSeparableFilter; table->Histogram = save_Histogram; table->Minmax = save_Minmax; table->ResetHistogram = save_ResetHistogram; diff --git a/xc/extras/Mesa/src/enable.c b/xc/extras/Mesa/src/enable.c index 7be8dbf44..8c848d986 100644 --- a/xc/extras/Mesa/src/enable.c +++ b/xc/extras/Mesa/src/enable.c @@ -792,7 +792,7 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state ) ctx->Multisample.SampleCoverageInvert = state; break; - /* GL_IBM_rasterpos_clip */ + /* GL_IBM_rasterpos_clip */ case GL_RASTER_POSITION_UNCLIPPED_IBM: if (!ctx->Extensions.IBM_rasterpos_clip) { _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable"); @@ -804,37 +804,25 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state ) ctx->Transform.RasterPositionUnclipped = state; break; - /* GL_MESA_sprite_point */ - case GL_SPRITE_POINT_MESA: - if (!ctx->Extensions.MESA_sprite_point) { - _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable"); - return; + /* GL_NV_texture_rectangle */ + case GL_TEXTURE_RECTANGLE_NV: + { + const GLuint curr = ctx->Texture.CurrentUnit; + struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr]; + GLuint newenabled = texUnit->Enabled & ~TEXTURE0_RECT; + if (!ctx->Extensions.NV_texture_rectangle) { + _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable"); + return; + } + if (state) + newenabled |= TEXTURE0_RECT; + if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled) + return; + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + texUnit->Enabled = newenabled; } - if (ctx->Point.SpriteMode == state) - return; - FLUSH_VERTICES(ctx, _NEW_POINT); - ctx->Point.SpriteMode = state; break; - /* GL_NV_texture_rectangle */ - case GL_TEXTURE_RECTANGLE_NV: - { - const GLuint curr = ctx->Texture.CurrentUnit; - struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr]; - GLuint newenabled = texUnit->Enabled & ~TEXTURE0_RECT; - if (!ctx->Extensions.NV_texture_rectangle) { - _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable"); - return; - } - if (state) - newenabled |= TEXTURE0_RECT; - if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled) - return; - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->Enabled = newenabled; - } - break; - default: _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable"); return; @@ -1135,10 +1123,6 @@ _mesa_IsEnabled( GLenum cap ) return GL_FALSE; } - /* GL_MESA_sprite_point */ - case GL_SPRITE_POINT_MESA: - return ctx->Point.SpriteMode; - /* GL_NV_texture_rectangle */ case GL_TEXTURE_RECTANGLE_NV: if (ctx->Extensions.NV_texture_rectangle) { diff --git a/xc/extras/Mesa/src/extensions.c b/xc/extras/Mesa/src/extensions.c index b4ed8ed91..3091ae44a 100644 --- a/xc/extras/Mesa/src/extensions.c +++ b/xc/extras/Mesa/src/extensions.c @@ -102,13 +102,14 @@ static struct { { ON, "GL_IBM_rasterpos_clip", F(IBM_rasterpos_clip) }, { OFF, "GL_IBM_texture_mirrored_repeat", F(ARB_texture_mirrored_repeat)}, { OFF, "GL_INGR_blend_func_separate", F(INGR_blend_func_separate) }, + { OFF, "GL_MESA_pack_invert", F(MESA_pack_invert) }, { OFF, "GL_MESA_packed_depth_stencil", 0 }, { OFF, "GL_MESA_resize_buffers", F(MESA_resize_buffers) }, - { OFF, "GL_MESA_sprite_point", F(MESA_sprite_point) }, + { OFF, "GL_MESA_ycbcr_texture", F(MESA_ycbcr_texture) }, { ON, "GL_MESA_window_pos", F(MESA_window_pos) }, { OFF, "GL_NV_blend_square", F(NV_blend_square) }, { ON, "GL_NV_texgen_reflection", F(NV_texgen_reflection) }, - { ON, "GL_NV_texture_rectangle", F(NV_texture_rectangle) }, + { OFF, "GL_NV_texture_rectangle", F(NV_texture_rectangle) }, { OFF, "GL_SGI_color_matrix", F(SGI_color_matrix) }, { OFF, "GL_SGI_color_table", F(SGI_color_table) }, { OFF, "GL_SGIS_generate_mipmap", F(SGIS_generate_mipmap) }, @@ -119,7 +120,8 @@ static struct { { OFF, "GL_SGIX_pixel_texture", F(SGIX_pixel_texture) }, { OFF, "GL_SGIX_shadow", F(SGIX_shadow) }, { OFF, "GL_SGIX_shadow_ambient", F(SGIX_shadow_ambient) }, - { OFF, "GL_3DFX_texture_compression_FXT1", F(_3DFX_texture_compression_FXT1) } + { OFF, "GL_3DFX_texture_compression_FXT1", F(_3DFX_texture_compression_FXT1) }, + { OFF, "GL_APPLE_client_storage", F(APPLE_client_storage) }, }; @@ -162,7 +164,9 @@ _mesa_enable_sw_extensions(GLcontext *ctx) "GL_HP_occlusion_test", "GL_IBM_texture_mirrored_repeat", "GL_INGR_blend_func_separate", + "GL_MESA_pack_invert", "GL_MESA_resize_buffers", + "GL_MESA_ycbcr_texture", "GL_NV_blend_square", "GL_NV_texgen_reflection", "GL_NV_texture_rectangle", diff --git a/xc/extras/Mesa/src/get.c b/xc/extras/Mesa/src/get.c index 9acefb053..70a7dc665 100644 --- a/xc/extras/Mesa/src/get.c +++ b/xc/extras/Mesa/src/get.c @@ -671,6 +671,9 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params ) case GL_PACK_IMAGE_HEIGHT_EXT: *params = ctx->Pack.ImageHeight; break; + case GL_PACK_INVERT_MESA: + *params = ctx->Pack.Invert; + break; case GL_PERSPECTIVE_CORRECTION_HINT: *params = ENUM_TO_BOOL(ctx->Hint.PerspectiveCorrection); break; @@ -917,6 +920,9 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params ) case GL_UNPACK_IMAGE_HEIGHT_EXT: *params = ctx->Unpack.ImageHeight; break; + case GL_UNPACK_CLIENT_STORAGE_APPLE: + *params = ctx->Unpack.ClientStorage; + break; case GL_VIEWPORT: params[0] = INT_TO_BOOL(ctx->Viewport.X); params[1] = INT_TO_BOOL(ctx->Viewport.Y); @@ -1391,17 +1397,6 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params ) } break; - /* GL_MESA_sprite_point */ - case GL_SPRITE_POINT_MESA: - if (ctx->Extensions.MESA_sprite_point) { - *params = ctx->Point.SpriteMode; - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glGetBooleanv" ); - return; - } - break; - /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: if (ctx->Extensions.SGIS_generate_mipmap) { @@ -1986,6 +1981,9 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params ) case GL_PACK_IMAGE_HEIGHT_EXT: *params = (GLdouble) ctx->Pack.ImageHeight; break; + case GL_PACK_INVERT_MESA: + *params = (GLdouble) ctx->Pack.Invert; + break; case GL_PERSPECTIVE_CORRECTION_HINT: *params = ENUM_TO_DOUBLE(ctx->Hint.PerspectiveCorrection); break; @@ -2229,6 +2227,9 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params ) case GL_UNPACK_IMAGE_HEIGHT_EXT: *params = (GLdouble) ctx->Unpack.ImageHeight; break; + case GL_UNPACK_CLIENT_STORAGE_APPLE: + *params = (GLdouble) ctx->Unpack.ClientStorage; + break; case GL_VIEWPORT: params[0] = (GLdouble) ctx->Viewport.X; params[1] = (GLdouble) ctx->Viewport.Y; @@ -2703,17 +2704,6 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params ) } break; - /* GL_MESA_sprite_point */ - case GL_SPRITE_POINT_MESA: - if (ctx->Extensions.MESA_sprite_point) { - *params = (GLdouble) ctx->Point.SpriteMode; - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" ); - return; - } - break; - /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: if (ctx->Extensions.SGIS_generate_mipmap) { @@ -3305,6 +3295,9 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params ) case GL_PACK_IMAGE_HEIGHT_EXT: *params = (GLfloat) ctx->Pack.ImageHeight; break; + case GL_PACK_INVERT_MESA: + *params = (GLfloat) ctx->Pack.Invert; + break; case GL_PERSPECTIVE_CORRECTION_HINT: *params = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection); break; @@ -3550,6 +3543,9 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params ) case GL_UNPACK_IMAGE_HEIGHT_EXT: *params = (GLfloat) ctx->Unpack.ImageHeight; break; + case GL_UNPACK_CLIENT_STORAGE_APPLE: + *params = (GLfloat) ctx->Unpack.ClientStorage; + break; case GL_VIEWPORT: params[0] = (GLfloat) ctx->Viewport.X; params[1] = (GLfloat) ctx->Viewport.Y; @@ -3996,17 +3992,6 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params ) } break; - /* GL_MESA_sprite_point */ - case GL_SPRITE_POINT_MESA: - if (ctx->Extensions.MESA_sprite_point) { - *params = (GLfloat) ctx->Point.SpriteMode; - } - else { - GET_FLOAT_ERROR; - return; - } - break; - /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: if (ctx->Extensions.SGIS_generate_mipmap) { @@ -4593,6 +4578,9 @@ _mesa_GetIntegerv( GLenum pname, GLint *params ) case GL_PACK_IMAGE_HEIGHT_EXT: *params = ctx->Pack.ImageHeight; break; + case GL_PACK_INVERT_MESA: + *params = ctx->Pack.Invert; + break; case GL_PERSPECTIVE_CORRECTION_HINT: *params = (GLint) ctx->Hint.PerspectiveCorrection; break; @@ -4836,6 +4824,9 @@ _mesa_GetIntegerv( GLenum pname, GLint *params ) case GL_UNPACK_IMAGE_HEIGHT_EXT: *params = ctx->Unpack.ImageHeight; break; + case GL_UNPACK_CLIENT_STORAGE_APPLE: + *params = ctx->Unpack.ClientStorage; + break; case GL_VIEWPORT: params[0] = (GLint) ctx->Viewport.X; params[1] = (GLint) ctx->Viewport.Y; @@ -5331,17 +5322,6 @@ _mesa_GetIntegerv( GLenum pname, GLint *params ) } break; - /* GL_MESA_sprite_point */ - case GL_SPRITE_POINT_MESA: - if (ctx->Extensions.MESA_sprite_point) { - *params = (GLint) ctx->Point.SpriteMode; - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" ); - return; - } - break; - /* GL_SGIS_generate_mipmap */ case GL_GENERATE_MIPMAP_HINT_SGIS: if (ctx->Extensions.SGIS_generate_mipmap) { diff --git a/xc/extras/Mesa/src/glapi.c b/xc/extras/Mesa/src/glapi.c index 550a57aa9..79097c29c 100644 --- a/xc/extras/Mesa/src/glapi.c +++ b/xc/extras/Mesa/src/glapi.c @@ -1914,13 +1914,6 @@ _glapi_add_entrypoint(const char *funcName, GLuint offset) } { - /* make sure this offset/name pair is legal */ - const char *name = _glapi_get_proc_name(offset); - if (name && strcmp(name, funcName) != 0) - return GL_FALSE; /* bad name! */ - } - - { /* be sure index and name match known data */ GLuint i; for (i = 0; i < NumExtEntryPoints; i++) { diff --git a/xc/extras/Mesa/src/glheader.h b/xc/extras/Mesa/src/glheader.h index 62fba6e00..892f6131c 100644 --- a/xc/extras/Mesa/src/glheader.h +++ b/xc/extras/Mesa/src/glheader.h @@ -22,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/glheader.h,v 1.18 2002/09/09 21:29:38 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/glheader.h,v 1.20 2002/11/06 17:19:39 tsi Exp $ */ #ifndef GLHEADER_H diff --git a/xc/extras/Mesa/src/histogram.c b/xc/extras/Mesa/src/histogram.c index 8ee061168..22f35e26a 100644 --- a/xc/extras/Mesa/src/histogram.c +++ b/xc/extras/Mesa/src/histogram.c @@ -1,4 +1,3 @@ -/* $Id: histogram.c,v 1.1.1.1 2002/10/22 13:05:10 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/histogram.h b/xc/extras/Mesa/src/histogram.h index 8c620f750..a63152aed 100644 --- a/xc/extras/Mesa/src/histogram.h +++ b/xc/extras/Mesa/src/histogram.h @@ -1,4 +1,3 @@ -/* $Id: histogram.h,v 1.1.1.1 2002/10/22 13:05:10 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/image.c b/xc/extras/Mesa/src/image.c index da2e6953f..d6ef5cf7f 100644 --- a/xc/extras/Mesa/src/image.c +++ b/xc/extras/Mesa/src/image.c @@ -1,9 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -56,7 +56,9 @@ const struct gl_pixelstore_attrib _mesa_native_packing = { 0, /* ImageHeight */ 0, /* SkipImages */ GL_FALSE, /* SwapBytes */ - GL_FALSE /* LsbFirst */ + GL_FALSE, /* LsbFirst */ + GL_FALSE, /* ClientStorage */ + GL_FALSE /* Invert */ }; @@ -202,6 +204,9 @@ GLint _mesa_sizeof_packed_type( GLenum type ) return sizeof(GLuint); case GL_UNSIGNED_INT_2_10_10_10_REV: return sizeof(GLuint); + case GL_UNSIGNED_SHORT_8_8_MESA: + case GL_UNSIGNED_SHORT_8_8_REV_MESA: + return sizeof(GLushort); default: return -1; } @@ -244,6 +249,8 @@ GLint _mesa_components_in_format( GLenum format ) return 4; case GL_ABGR_EXT: return 4; + case GL_YCBCR_MESA: + return 2; default: return -1; } @@ -302,6 +309,12 @@ GLint _mesa_bytes_per_pixel( GLenum format, GLenum type ) return sizeof(GLuint); else return -1; + case GL_UNSIGNED_SHORT_8_8_MESA: + case GL_UNSIGNED_SHORT_8_8_REV_MESA: + if (format == GL_YCBCR_MESA) + return sizeof(GLushort); + else + return -1; default: return -1; } @@ -392,6 +405,12 @@ _mesa_is_legal_format_and_type( GLenum format, GLenum type ) default: return GL_FALSE; } + case GL_YCBCR_MESA: + if (type == GL_UNSIGNED_SHORT_8_8_MESA || + type == GL_UNSIGNED_SHORT_8_8_REV_MESA) + return GL_TRUE; + else + return GL_FALSE; default: ; /* fall-through */ } @@ -475,6 +494,7 @@ _mesa_image_address( const struct gl_pixelstore_attrib *packing, else { /* Non-BITMAP data */ GLint bytes_per_pixel, bytes_per_row, remainder, bytes_per_image; + GLint topOfImage; bytes_per_pixel = _mesa_bytes_per_pixel( format, type ); @@ -490,9 +510,19 @@ _mesa_image_address( const struct gl_pixelstore_attrib *packing, bytes_per_image = bytes_per_row * rows_per_image; + if (packing->Invert) { + /* set pixel_addr to the last row */ + topOfImage = bytes_per_row * (height - 1); + bytes_per_row = -bytes_per_row; + } + else { + topOfImage = 0; + } + /* compute final pixel address */ pixel_addr = (GLubyte *) image + (skipimages + img) * bytes_per_image + + topOfImage + (skiprows + row) * bytes_per_row + (skippixels + column) * bytes_per_pixel; } @@ -513,14 +543,18 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing, ASSERT(packing); if (type == GL_BITMAP) { /* BITMAP data */ + GLint bytes; if (packing->RowLength == 0) { - GLint bytes = (width + 7) / 8; - return bytes; + bytes = (width + 7) / 8; } else { - GLint bytes = (packing->RowLength + 7) / 8; - return bytes; + bytes = (packing->RowLength + 7) / 8; + } + if (packing->Invert) { + /* negate the bytes per row (negative row stride) */ + bytes = -bytes; } + return bytes; } else { /* Non-BITMAP data */ @@ -537,6 +571,8 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing, remainder = bytesPerRow % packing->Alignment; if (remainder > 0) bytesPerRow += (packing->Alignment - remainder); + if (packing->Invert) + bytesPerRow = -bytesPerRow; return bytesPerRow; } } diff --git a/xc/extras/Mesa/src/imports.c b/xc/extras/Mesa/src/imports.c index c19e51d65..895a4768b 100644 --- a/xc/extras/Mesa/src/imports.c +++ b/xc/extras/Mesa/src/imports.c @@ -1,4 +1,3 @@ -/* $Id: imports.c,v 1.1.1.1 2002/10/22 13:05:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/imports.h b/xc/extras/Mesa/src/imports.h index 53c823c34..758c99cce 100644 --- a/xc/extras/Mesa/src/imports.h +++ b/xc/extras/Mesa/src/imports.h @@ -1,4 +1,3 @@ -/* $Id: imports.h,v 1.1.1.1 2002/10/22 13:05:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_clip_tmp.h b/xc/extras/Mesa/src/math/m_clip_tmp.h index 1805d2554..3f84f9393 100644 --- a/xc/extras/Mesa/src/math/m_clip_tmp.h +++ b/xc/extras/Mesa/src/math/m_clip_tmp.h @@ -1,4 +1,3 @@ -/* $Id: m_clip_tmp.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_copy_tmp.h b/xc/extras/Mesa/src/math/m_copy_tmp.h index edc7149c5..a9e33511e 100644 --- a/xc/extras/Mesa/src/math/m_copy_tmp.h +++ b/xc/extras/Mesa/src/math/m_copy_tmp.h @@ -1,4 +1,3 @@ -/* $Id: m_copy_tmp.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_debug.h b/xc/extras/Mesa/src/math/m_debug.h index 4795c5207..7cb556e7f 100644 --- a/xc/extras/Mesa/src/math/m_debug.h +++ b/xc/extras/Mesa/src/math/m_debug.h @@ -1,4 +1,3 @@ -/* $Id: m_debug.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_debug_clip.c b/xc/extras/Mesa/src/math/m_debug_clip.c index 634f5922c..cc719ee5d 100644 --- a/xc/extras/Mesa/src/math/m_debug_clip.c +++ b/xc/extras/Mesa/src/math/m_debug_clip.c @@ -1,4 +1,3 @@ -/* $Id: m_debug_clip.c,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_debug_norm.c b/xc/extras/Mesa/src/math/m_debug_norm.c index 2646c5263..4d9d40bbc 100644 --- a/xc/extras/Mesa/src/math/m_debug_norm.c +++ b/xc/extras/Mesa/src/math/m_debug_norm.c @@ -1,4 +1,3 @@ -/* $Id: m_debug_norm.c,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_debug_util.h b/xc/extras/Mesa/src/math/m_debug_util.h index 1cc77fd44..4b74b420f 100644 --- a/xc/extras/Mesa/src/math/m_debug_util.h +++ b/xc/extras/Mesa/src/math/m_debug_util.h @@ -1,4 +1,3 @@ -/* $Id: m_debug_util.h,v 1.1.1.1 2002/10/22 13:06:27 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_debug_vertex.c b/xc/extras/Mesa/src/math/m_debug_vertex.c index 21f15fd2c..7cb87c190 100644 --- a/xc/extras/Mesa/src/math/m_debug_vertex.c +++ b/xc/extras/Mesa/src/math/m_debug_vertex.c @@ -1,4 +1,3 @@ -/* $Id: m_debug_vertex.c,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_debug_xform.c b/xc/extras/Mesa/src/math/m_debug_xform.c index 7566bf060..eb81e019d 100644 --- a/xc/extras/Mesa/src/math/m_debug_xform.c +++ b/xc/extras/Mesa/src/math/m_debug_xform.c @@ -1,4 +1,3 @@ -/* $Id: m_debug_xform.c,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_dotprod_tmp.h b/xc/extras/Mesa/src/math/m_dotprod_tmp.h index dfa43664d..03e65af6c 100644 --- a/xc/extras/Mesa/src/math/m_dotprod_tmp.h +++ b/xc/extras/Mesa/src/math/m_dotprod_tmp.h @@ -1,4 +1,3 @@ -/* $Id: m_dotprod_tmp.h,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_eval.c b/xc/extras/Mesa/src/math/m_eval.c index 4f5dbd26a..42ffd4133 100644 --- a/xc/extras/Mesa/src/math/m_eval.c +++ b/xc/extras/Mesa/src/math/m_eval.c @@ -1,4 +1,3 @@ -/* $Id: m_eval.c,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_eval.h b/xc/extras/Mesa/src/math/m_eval.h index 26eeaedbc..a23cbd402 100644 --- a/xc/extras/Mesa/src/math/m_eval.h +++ b/xc/extras/Mesa/src/math/m_eval.h @@ -1,4 +1,3 @@ -/* $Id: m_eval.h,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_matrix.c b/xc/extras/Mesa/src/math/m_matrix.c index 8653c0c46..dc5016c88 100644 --- a/xc/extras/Mesa/src/math/m_matrix.c +++ b/xc/extras/Mesa/src/math/m_matrix.c @@ -1,4 +1,3 @@ -/* $Id: m_matrix.c,v 1.1.1.1 2002/10/22 13:06:30 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -23,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/math/m_matrix.c,v 1.2 2002/09/12 15:16:51 tsi Exp $ */ +/* $XFree86: xc/extras/Mesa/src/math/m_matrix.c,v 1.3 2002/12/16 16:18:36 dawes Exp $ */ /* diff --git a/xc/extras/Mesa/src/math/m_matrix.h b/xc/extras/Mesa/src/math/m_matrix.h index a9aea838f..7c22082d5 100644 --- a/xc/extras/Mesa/src/math/m_matrix.h +++ b/xc/extras/Mesa/src/math/m_matrix.h @@ -1,4 +1,3 @@ -/* $Id: m_matrix.h,v 1.1.1.1 2002/10/22 13:06:30 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_norm_tmp.h b/xc/extras/Mesa/src/math/m_norm_tmp.h index b0e3e1785..d5f7da409 100644 --- a/xc/extras/Mesa/src/math/m_norm_tmp.h +++ b/xc/extras/Mesa/src/math/m_norm_tmp.h @@ -1,4 +1,3 @@ -/* $Id: m_norm_tmp.h,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_trans_tmp.h b/xc/extras/Mesa/src/math/m_trans_tmp.h index 0fa3fbd70..25e03c986 100644 --- a/xc/extras/Mesa/src/math/m_trans_tmp.h +++ b/xc/extras/Mesa/src/math/m_trans_tmp.h @@ -1,4 +1,3 @@ -/* $Id: m_trans_tmp.h,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_translate.c b/xc/extras/Mesa/src/math/m_translate.c index 6e4dcee06..a4305f26c 100644 --- a/xc/extras/Mesa/src/math/m_translate.c +++ b/xc/extras/Mesa/src/math/m_translate.c @@ -1,4 +1,3 @@ -/* $Id: m_translate.c,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_translate.h b/xc/extras/Mesa/src/math/m_translate.h index 4e88c0c53..c473f83d6 100644 --- a/xc/extras/Mesa/src/math/m_translate.h +++ b/xc/extras/Mesa/src/math/m_translate.h @@ -1,4 +1,3 @@ -/* $Id: m_translate.h,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_vector.c b/xc/extras/Mesa/src/math/m_vector.c index c04143be2..4c5e0ac26 100644 --- a/xc/extras/Mesa/src/math/m_vector.c +++ b/xc/extras/Mesa/src/math/m_vector.c @@ -1,4 +1,3 @@ -/* $Id: m_vector.c,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_vector.h b/xc/extras/Mesa/src/math/m_vector.h index e2c6d8dce..4b1b643ea 100644 --- a/xc/extras/Mesa/src/math/m_vector.h +++ b/xc/extras/Mesa/src/math/m_vector.h @@ -1,4 +1,3 @@ -/* $Id: m_vector.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_vertices.c b/xc/extras/Mesa/src/math/m_vertices.c index 2ba168e5d..e6f44d6de 100644 --- a/xc/extras/Mesa/src/math/m_vertices.c +++ b/xc/extras/Mesa/src/math/m_vertices.c @@ -1,4 +1,3 @@ -/* $Id: m_vertices.c,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_vertices.h b/xc/extras/Mesa/src/math/m_vertices.h index a62491050..4a8c2dad9 100644 --- a/xc/extras/Mesa/src/math/m_vertices.h +++ b/xc/extras/Mesa/src/math/m_vertices.h @@ -1,4 +1,3 @@ -/* $Id: m_vertices.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_xform.c b/xc/extras/Mesa/src/math/m_xform.c index 183d58fa6..03325645d 100644 --- a/xc/extras/Mesa/src/math/m_xform.c +++ b/xc/extras/Mesa/src/math/m_xform.c @@ -1,4 +1,3 @@ -/* $Id: m_xform.c,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -190,7 +189,7 @@ void _mesa_transform_point_sz( GLfloat Q[4], const GLfloat M[16], /* * This is called only once. It initializes several tables with pointers * to optimized transformation functions. This is where we can test for - * AMD 3Dnow! capability, Intel Katmai, etc. and hook in the right code. + * AMD 3Dnow! capability, Intel SSE, etc. and hook in the right code. */ void _math_init_transformation( void ) diff --git a/xc/extras/Mesa/src/math/m_xform.h b/xc/extras/Mesa/src/math/m_xform.h index e4e31327a..fbd4836e2 100644 --- a/xc/extras/Mesa/src/math/m_xform.h +++ b/xc/extras/Mesa/src/math/m_xform.h @@ -1,4 +1,3 @@ -/* $Id: m_xform.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/m_xform_tmp.h b/xc/extras/Mesa/src/math/m_xform_tmp.h index 7f34ef3da..7cf4780bd 100644 --- a/xc/extras/Mesa/src/math/m_xform_tmp.h +++ b/xc/extras/Mesa/src/math/m_xform_tmp.h @@ -1,4 +1,3 @@ -/* $Id: m_xform_tmp.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/math/mathmod.h b/xc/extras/Mesa/src/math/mathmod.h index e1e4708de..35f6671f2 100644 --- a/xc/extras/Mesa/src/math/mathmod.h +++ b/xc/extras/Mesa/src/math/mathmod.h @@ -1,4 +1,3 @@ -/* $Id: mathmod.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/mem.h b/xc/extras/Mesa/src/mem.h index d27361e76..775e67fa2 100644 --- a/xc/extras/Mesa/src/mem.h +++ b/xc/extras/Mesa/src/mem.h @@ -22,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - +/* $XFree86: xc/extras/Mesa/src/mem.h,v 1.9 2003/01/12 03:55:44 tsi Exp $ */ #ifndef MEM_H #define MEM_H @@ -38,7 +38,7 @@ #if defined(WIN32) && defined(_DEBUG) #include <malloc.h> #ifndef _CRTDBG_MAP_ALLOC - #define _CRTDBG_MAP_ALLOC 1 +# define _CRTDBG_MAP_ALLOC 1 #endif #include <crtdbg.h> diff --git a/xc/extras/Mesa/src/mmath.h b/xc/extras/Mesa/src/mmath.h index c39c93004..d5639d019 100644 --- a/xc/extras/Mesa/src/mmath.h +++ b/xc/extras/Mesa/src/mmath.h @@ -199,7 +199,7 @@ do { \ #if defined(__i386__) || defined(__sparc__) || defined(__s390x__) || \ - defined(__powerpc__) || \ + defined(__powerpc__) || defined(__x86_64__) || \ ( defined(__alpha__) && ( defined(__IEEE_FLOAT) || !defined(VMS) ) ) #define USE_IEEE #endif diff --git a/xc/extras/Mesa/src/mtypes.h b/xc/extras/Mesa/src/mtypes.h index 82a8c2ab7..73c4133c6 100644 --- a/xc/extras/Mesa/src/mtypes.h +++ b/xc/extras/Mesa/src/mtypes.h @@ -1,4 +1,3 @@ -/* $Id: mtypes.h,v 1.1.1.1 2002/10/22 13:05:27 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -614,7 +613,6 @@ struct gl_pixel_attrib { struct gl_point_attrib { GLboolean SmoothFlag; /* True if GL_POINT_SMOOTH is enabled */ - GLboolean SpriteMode; /* GL_MESA_sprite_point extension */ GLfloat Size; /* User-specified point size */ GLfloat _Size; /* Size clamped to Const.Min/MaxPointSize */ GLfloat Params[3]; /* GL_EXT_point_parameters */ @@ -802,6 +800,7 @@ struct gl_texture_image { GLuint Width; /* = 2^WidthLog2 + 2*Border */ GLuint Height; /* = 2^HeightLog2 + 2*Border */ GLuint Depth; /* = 2^DepthLog2 + 2*Border */ + GLuint RowStride; /* == Width unless IsClientData and padded */ GLuint Width2; /* = Width - 2*Border */ GLuint Height2; /* = Height - 2*Border */ GLuint Depth2; /* = Depth - 2*Border */ @@ -809,10 +808,8 @@ struct gl_texture_image { GLuint HeightLog2; /* = log2(Height2) */ GLuint DepthLog2; /* = log2(Depth2) */ GLuint MaxLog2; /* = MAX(WidthLog2, HeightLog2) */ - GLfloat WidthScale; /* used for mipmap lod computation */ - GLfloat HeightScale; /* used for mipmap lod computation */ - GLfloat DepthScale; /* used for mipmap lod computation */ GLvoid *Data; /* Image data, accessed via FetchTexel() */ + GLboolean IsClientData; /* Data owned by client? */ const struct gl_texture_format *TexFormat; @@ -995,6 +992,8 @@ struct gl_pixelstore_attrib { GLint SkipImages; /* for GL_EXT_texture3D */ GLboolean SwapBytes; GLboolean LsbFirst; + GLboolean ClientStorage; /* GL_APPLE_client_storage */ + GLboolean Invert; /* GL_MESA_pack_invert */ }; @@ -1245,9 +1244,10 @@ struct gl_extensions { GLboolean HP_occlusion_test; GLboolean IBM_rasterpos_clip; GLboolean INGR_blend_func_separate; + GLboolean MESA_pack_invert; GLboolean MESA_window_pos; GLboolean MESA_resize_buffers; - GLboolean MESA_sprite_point; + GLboolean MESA_ycbcr_texture; GLboolean NV_blend_square; GLboolean NV_texgen_reflection; GLboolean NV_texture_rectangle; @@ -1261,6 +1261,7 @@ struct gl_extensions { GLboolean SGIX_shadow; GLboolean SGIX_shadow_ambient; GLboolean _3DFX_texture_compression_FXT1; + GLboolean APPLE_client_storage; }; diff --git a/xc/extras/Mesa/src/pixel.c b/xc/extras/Mesa/src/pixel.c index f6e3322c4..f1263ba4c 100644 --- a/xc/extras/Mesa/src/pixel.c +++ b/xc/extras/Mesa/src/pixel.c @@ -1,7 +1,7 @@ /* * Mesa 3-D graphics library - * Version: 4.0.3 + * Version: 4.0.4 * * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * @@ -145,6 +145,17 @@ _mesa_PixelStorei( GLenum pname, GLint param ) FLUSH_VERTICES(ctx, _NEW_PACKUNPACK); ctx->Pack.Alignment = param; break; + case GL_PACK_INVERT_MESA: + if (!ctx->Extensions.MESA_pack_invert) { + _mesa_error( ctx, GL_INVALID_ENUM, "glPixelstore(pname)" ); + return; + } + if (ctx->Pack.Invert == param) + return; + FLUSH_VERTICES(ctx, _NEW_PACKUNPACK); + ctx->Pack.Invert = param; + break; + case GL_UNPACK_SWAP_BYTES: if (param == (GLint)ctx->Unpack.SwapBytes) return; @@ -222,6 +233,13 @@ _mesa_PixelStorei( GLenum pname, GLint param ) FLUSH_VERTICES(ctx, _NEW_PACKUNPACK); ctx->Unpack.Alignment = param; break; + case GL_UNPACK_CLIENT_STORAGE_APPLE: + if (param == (GLint)ctx->Unpack.ClientStorage) + return; + FLUSH_VERTICES(ctx, _NEW_PACKUNPACK); + ctx->Unpack.ClientStorage = param ? GL_TRUE : GL_FALSE; + break; + default: _mesa_error( ctx, GL_INVALID_ENUM, "glPixelStore" ); return; diff --git a/xc/extras/Mesa/src/state.c b/xc/extras/Mesa/src/state.c index 9ea5e118c..c99e0c0d5 100644 --- a/xc/extras/Mesa/src/state.c +++ b/xc/extras/Mesa/src/state.c @@ -1,9 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 4.0.4 + * Version: 4.0.5 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -294,6 +294,7 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize) /* 1.1 */ exec->AreTexturesResident = _mesa_AreTexturesResident; + exec->AreTexturesResidentEXT = _mesa_AreTexturesResident; exec->BindTexture = _mesa_BindTexture; exec->ColorPointer = _mesa_ColorPointer; exec->CopyTexImage1D = _mesa_CopyTexImage1D; @@ -305,10 +306,12 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize) exec->EdgeFlagPointer = _mesa_EdgeFlagPointer; exec->EnableClientState = _mesa_EnableClientState; exec->GenTextures = _mesa_GenTextures; + exec->GenTexturesEXT = _mesa_GenTextures; exec->GetPointerv = _mesa_GetPointerv; exec->IndexPointer = _mesa_IndexPointer; exec->InterleavedArrays = _mesa_InterleavedArrays; exec->IsTexture = _mesa_IsTexture; + exec->IsTextureEXT = _mesa_IsTexture; exec->NormalPointer = _mesa_NormalPointer; exec->PopClientAttrib = _mesa_PopClientAttrib; exec->PrioritizeTextures = _mesa_PrioritizeTextures; @@ -341,18 +344,31 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize) exec->CopyConvolutionFilter1D = _mesa_CopyConvolutionFilter1D; exec->CopyConvolutionFilter2D = _mesa_CopyConvolutionFilter2D; exec->GetColorTable = _mesa_GetColorTable; + exec->GetColorTableEXT = _mesa_GetColorTable; exec->GetColorTableParameterfv = _mesa_GetColorTableParameterfv; + exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv; exec->GetColorTableParameteriv = _mesa_GetColorTableParameteriv; + exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv; exec->GetConvolutionFilter = _mesa_GetConvolutionFilter; + exec->GetConvolutionFilterEXT = _mesa_GetConvolutionFilter; exec->GetConvolutionParameterfv = _mesa_GetConvolutionParameterfv; + exec->GetConvolutionParameterfvEXT = _mesa_GetConvolutionParameterfv; exec->GetConvolutionParameteriv = _mesa_GetConvolutionParameteriv; + exec->GetConvolutionParameterivEXT = _mesa_GetConvolutionParameteriv; exec->GetHistogram = _mesa_GetHistogram; + exec->GetHistogramEXT = _mesa_GetHistogram; exec->GetHistogramParameterfv = _mesa_GetHistogramParameterfv; + exec->GetHistogramParameterfvEXT = _mesa_GetHistogramParameterfv; exec->GetHistogramParameteriv = _mesa_GetHistogramParameteriv; + exec->GetHistogramParameterivEXT = _mesa_GetHistogramParameteriv; exec->GetMinmax = _mesa_GetMinmax; + exec->GetMinmaxEXT = _mesa_GetMinmax; exec->GetMinmaxParameterfv = _mesa_GetMinmaxParameterfv; + exec->GetMinmaxParameterfvEXT = _mesa_GetMinmaxParameterfv; exec->GetMinmaxParameteriv = _mesa_GetMinmaxParameteriv; + exec->GetMinmaxParameterivEXT = _mesa_GetMinmaxParameteriv; exec->GetSeparableFilter = _mesa_GetSeparableFilter; + exec->GetSeparableFilterEXT = _mesa_GetSeparableFilter; exec->Histogram = _mesa_Histogram; exec->Minmax = _mesa_Minmax; exec->ResetHistogram = _mesa_ResetHistogram; diff --git a/xc/extras/Mesa/src/swrast/s_aaline.c b/xc/extras/Mesa/src/swrast/s_aaline.c index 08bcaac63..f61934ab3 100644 --- a/xc/extras/Mesa/src/swrast/s_aaline.c +++ b/xc/extras/Mesa/src/swrast/s_aaline.c @@ -1,4 +1,3 @@ -/* $Id: s_aaline.c,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_aaline.h b/xc/extras/Mesa/src/swrast/s_aaline.h index f609d635f..41e7e5fd4 100644 --- a/xc/extras/Mesa/src/swrast/s_aaline.h +++ b/xc/extras/Mesa/src/swrast/s_aaline.h @@ -1,4 +1,3 @@ -/* $Id: s_aaline.h,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_aalinetemp.h b/xc/extras/Mesa/src/swrast/s_aalinetemp.h index bd675f365..19a77915a 100644 --- a/xc/extras/Mesa/src/swrast/s_aalinetemp.h +++ b/xc/extras/Mesa/src/swrast/s_aalinetemp.h @@ -1,4 +1,3 @@ -/* $Id: s_aalinetemp.h,v 1.1.1.1 2002/10/22 13:06:52 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_aatriangle.c b/xc/extras/Mesa/src/swrast/s_aatriangle.c index e58e93b7e..a22c773b8 100644 --- a/xc/extras/Mesa/src/swrast/s_aatriangle.c +++ b/xc/extras/Mesa/src/swrast/s_aatriangle.c @@ -1,4 +1,3 @@ -/* $Id: s_aatriangle.c,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_aatriangle.h b/xc/extras/Mesa/src/swrast/s_aatriangle.h index 5e8619067..747fee429 100644 --- a/xc/extras/Mesa/src/swrast/s_aatriangle.h +++ b/xc/extras/Mesa/src/swrast/s_aatriangle.h @@ -1,4 +1,3 @@ -/* $Id: s_aatriangle.h,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_aatritemp.h b/xc/extras/Mesa/src/swrast/s_aatritemp.h index 0b2e073de..adacb48b8 100644 --- a/xc/extras/Mesa/src/swrast/s_aatritemp.h +++ b/xc/extras/Mesa/src/swrast/s_aatritemp.h @@ -1,4 +1,3 @@ -/* $Id: s_aatritemp.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_accum.c b/xc/extras/Mesa/src/swrast/s_accum.c index b93f8379e..1374ec860 100644 --- a/xc/extras/Mesa/src/swrast/s_accum.c +++ b/xc/extras/Mesa/src/swrast/s_accum.c @@ -1,4 +1,3 @@ -/* $Id: s_accum.c,v 1.1.1.1 2002/10/22 13:06:55 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_accum.h b/xc/extras/Mesa/src/swrast/s_accum.h index 24287a9e3..faa3ccd41 100644 --- a/xc/extras/Mesa/src/swrast/s_accum.h +++ b/xc/extras/Mesa/src/swrast/s_accum.h @@ -1,4 +1,3 @@ -/* $Id: s_accum.h,v 1.1.1.1 2002/10/22 13:06:55 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_alpha.c b/xc/extras/Mesa/src/swrast/s_alpha.c index 0d6353ec0..5be735630 100644 --- a/xc/extras/Mesa/src/swrast/s_alpha.c +++ b/xc/extras/Mesa/src/swrast/s_alpha.c @@ -1,4 +1,3 @@ -/* $Id: s_alpha.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_alpha.h b/xc/extras/Mesa/src/swrast/s_alpha.h index 63e872c08..b0480c78a 100644 --- a/xc/extras/Mesa/src/swrast/s_alpha.h +++ b/xc/extras/Mesa/src/swrast/s_alpha.h @@ -1,4 +1,3 @@ -/* $Id: s_alpha.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_alphabuf.c b/xc/extras/Mesa/src/swrast/s_alphabuf.c index ee1c15933..81b3a3dc9 100644 --- a/xc/extras/Mesa/src/swrast/s_alphabuf.c +++ b/xc/extras/Mesa/src/swrast/s_alphabuf.c @@ -1,4 +1,3 @@ -/* $Id: s_alphabuf.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_alphabuf.h b/xc/extras/Mesa/src/swrast/s_alphabuf.h index 63bd2a05b..531188f55 100644 --- a/xc/extras/Mesa/src/swrast/s_alphabuf.h +++ b/xc/extras/Mesa/src/swrast/s_alphabuf.h @@ -1,4 +1,3 @@ -/* $Id: s_alphabuf.h,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_bitmap.c b/xc/extras/Mesa/src/swrast/s_bitmap.c index 2cb088369..37ad80c92 100644 --- a/xc/extras/Mesa/src/swrast/s_bitmap.c +++ b/xc/extras/Mesa/src/swrast/s_bitmap.c @@ -1,4 +1,3 @@ -/* $Id: s_bitmap.c,v 1.1.1.1 2002/10/22 13:06:54 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_blend.c b/xc/extras/Mesa/src/swrast/s_blend.c index ad6764f16..c2024fecd 100644 --- a/xc/extras/Mesa/src/swrast/s_blend.c +++ b/xc/extras/Mesa/src/swrast/s_blend.c @@ -1,4 +1,3 @@ -/* $Id: s_blend.c,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_blend.h b/xc/extras/Mesa/src/swrast/s_blend.h index 1882b18e2..569bc2591 100644 --- a/xc/extras/Mesa/src/swrast/s_blend.h +++ b/xc/extras/Mesa/src/swrast/s_blend.h @@ -1,4 +1,3 @@ -/* $Id: s_blend.h,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_buffers.c b/xc/extras/Mesa/src/swrast/s_buffers.c index 59524ba09..db27fdfdc 100644 --- a/xc/extras/Mesa/src/swrast/s_buffers.c +++ b/xc/extras/Mesa/src/swrast/s_buffers.c @@ -1,4 +1,3 @@ -/* $Id: s_buffers.c,v 1.1.1.1 2002/10/22 13:06:40 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_context.c b/xc/extras/Mesa/src/swrast/s_context.c index 042797d08..c32e7fc62 100644 --- a/xc/extras/Mesa/src/swrast/s_context.c +++ b/xc/extras/Mesa/src/swrast/s_context.c @@ -1,8 +1,7 @@ -/* $Id: s_context.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 4.0.3 + * Version: 4.0.4 * * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * @@ -527,6 +526,25 @@ _swrast_GetDeviceDriverReference( GLcontext *ctx ) return &swrast->Driver; } + +void +_swrast_render_start( GLcontext *ctx ) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + if (swrast->Driver.SpanRenderStart) + swrast->Driver.SpanRenderStart( ctx ); +} + +void +_swrast_render_finish( GLcontext *ctx ) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + _swrast_flush(ctx); + if (swrast->Driver.SpanRenderFinish) + swrast->Driver.SpanRenderFinish( ctx ); +} + + #define SWRAST_DEBUG_VERTICES 0 void @@ -561,3 +579,5 @@ _swrast_print_vertex( GLcontext *ctx, const SWvertex *v ) fprintf(stderr, "\n"); } } + + diff --git a/xc/extras/Mesa/src/swrast/s_context.h b/xc/extras/Mesa/src/swrast/s_context.h index 79081b809..e256a2275 100644 --- a/xc/extras/Mesa/src/swrast/s_context.h +++ b/xc/extras/Mesa/src/swrast/s_context.h @@ -1,4 +1,3 @@ -/* $Id: s_context.h,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_copypix.c b/xc/extras/Mesa/src/swrast/s_copypix.c index 10c66ef89..d9b575dfc 100644 --- a/xc/extras/Mesa/src/swrast/s_copypix.c +++ b/xc/extras/Mesa/src/swrast/s_copypix.c @@ -1,4 +1,3 @@ -/* $Id: s_copypix.c,v 1.1.1.1 2002/10/22 13:06:52 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_depth.c b/xc/extras/Mesa/src/swrast/s_depth.c index 76ef0d9cb..a07e2f10b 100644 --- a/xc/extras/Mesa/src/swrast/s_depth.c +++ b/xc/extras/Mesa/src/swrast/s_depth.c @@ -1,4 +1,3 @@ -/* $Id: s_depth.c,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_depth.h b/xc/extras/Mesa/src/swrast/s_depth.h index 9f04d727b..3b4c9128c 100644 --- a/xc/extras/Mesa/src/swrast/s_depth.h +++ b/xc/extras/Mesa/src/swrast/s_depth.h @@ -1,4 +1,3 @@ -/* $Id: s_depth.h,v 1.1.1.1 2002/10/22 13:06:46 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_drawpix.c b/xc/extras/Mesa/src/swrast/s_drawpix.c index 7f5ed8077..952e13fd3 100644 --- a/xc/extras/Mesa/src/swrast/s_drawpix.c +++ b/xc/extras/Mesa/src/swrast/s_drawpix.c @@ -1,4 +1,3 @@ -/* $Id: s_drawpix.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_drawpix.h b/xc/extras/Mesa/src/swrast/s_drawpix.h index 735a203cd..265d3c60a 100644 --- a/xc/extras/Mesa/src/swrast/s_drawpix.h +++ b/xc/extras/Mesa/src/swrast/s_drawpix.h @@ -1,4 +1,3 @@ -/* $Id: s_drawpix.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_feedback.c b/xc/extras/Mesa/src/swrast/s_feedback.c index 41cff05d4..0927cd9a9 100644 --- a/xc/extras/Mesa/src/swrast/s_feedback.c +++ b/xc/extras/Mesa/src/swrast/s_feedback.c @@ -1,4 +1,3 @@ -/* $Id: s_feedback.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_feedback.h b/xc/extras/Mesa/src/swrast/s_feedback.h index 70fba1bed..3a3b0557a 100644 --- a/xc/extras/Mesa/src/swrast/s_feedback.h +++ b/xc/extras/Mesa/src/swrast/s_feedback.h @@ -1,4 +1,3 @@ -/* $Id: s_feedback.h,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_fog.c b/xc/extras/Mesa/src/swrast/s_fog.c index b7e880528..5070dddea 100644 --- a/xc/extras/Mesa/src/swrast/s_fog.c +++ b/xc/extras/Mesa/src/swrast/s_fog.c @@ -1,4 +1,3 @@ -/* $Id: s_fog.c,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_fog.h b/xc/extras/Mesa/src/swrast/s_fog.h index a3c35759c..1f5fffa56 100644 --- a/xc/extras/Mesa/src/swrast/s_fog.h +++ b/xc/extras/Mesa/src/swrast/s_fog.h @@ -1,4 +1,3 @@ -/* $Id: s_fog.h,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_histogram.c b/xc/extras/Mesa/src/swrast/s_histogram.c index 2d039ca7c..761bd11e8 100644 --- a/xc/extras/Mesa/src/swrast/s_histogram.c +++ b/xc/extras/Mesa/src/swrast/s_histogram.c @@ -1,4 +1,3 @@ -/* $Id: s_histogram.c,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_histogram.h b/xc/extras/Mesa/src/swrast/s_histogram.h index f1ad2c510..5f7115c1f 100644 --- a/xc/extras/Mesa/src/swrast/s_histogram.h +++ b/xc/extras/Mesa/src/swrast/s_histogram.h @@ -1,4 +1,3 @@ -/* $Id: s_histogram.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_imaging.c b/xc/extras/Mesa/src/swrast/s_imaging.c index 495ef3197..d334b2e65 100644 --- a/xc/extras/Mesa/src/swrast/s_imaging.c +++ b/xc/extras/Mesa/src/swrast/s_imaging.c @@ -1,4 +1,3 @@ -/* $Id: s_imaging.c,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_lines.c b/xc/extras/Mesa/src/swrast/s_lines.c index ec8c343e3..f68266bec 100644 --- a/xc/extras/Mesa/src/swrast/s_lines.c +++ b/xc/extras/Mesa/src/swrast/s_lines.c @@ -1,4 +1,3 @@ -/* $Id: s_lines.c,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_lines.h b/xc/extras/Mesa/src/swrast/s_lines.h index a88a4dfbc..5372b99b9 100644 --- a/xc/extras/Mesa/src/swrast/s_lines.h +++ b/xc/extras/Mesa/src/swrast/s_lines.h @@ -1,4 +1,3 @@ -/* $Id: s_lines.h,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_linetemp.h b/xc/extras/Mesa/src/swrast/s_linetemp.h index c5e7984c5..fb0bebbcb 100644 --- a/xc/extras/Mesa/src/swrast/s_linetemp.h +++ b/xc/extras/Mesa/src/swrast/s_linetemp.h @@ -1,8 +1,7 @@ -/* $Id: s_linetemp.h,v 1.1.1.1 2002/10/22 13:06:55 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 4.0.2 + * Version: 4.0.5 * * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * @@ -231,8 +230,8 @@ zPtr = (DEPTH_TYPE *) _mesa_zbuffer_address(ctx, x0, y0); # endif if (depthBits <= 16) { - z0 = FloatToFixed(vert0->win[2]); - z1 = FloatToFixed(vert1->win[2]); + z0 = FloatToFixed(vert0->win[2]) + FIXED_HALF; + z1 = FloatToFixed(vert1->win[2]) + FIXED_HALF; } else { z0 = (int) vert0->win[2]; diff --git a/xc/extras/Mesa/src/swrast/s_logic.c b/xc/extras/Mesa/src/swrast/s_logic.c index 3521418bf..b6c9aacf4 100644 --- a/xc/extras/Mesa/src/swrast/s_logic.c +++ b/xc/extras/Mesa/src/swrast/s_logic.c @@ -1,4 +1,3 @@ -/* $Id: s_logic.c,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_logic.h b/xc/extras/Mesa/src/swrast/s_logic.h index 8ac68f830..8cb0268a2 100644 --- a/xc/extras/Mesa/src/swrast/s_logic.h +++ b/xc/extras/Mesa/src/swrast/s_logic.h @@ -1,4 +1,3 @@ -/* $Id: s_logic.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_masking.c b/xc/extras/Mesa/src/swrast/s_masking.c index d4d57140d..c9f4c1bf2 100644 --- a/xc/extras/Mesa/src/swrast/s_masking.c +++ b/xc/extras/Mesa/src/swrast/s_masking.c @@ -1,4 +1,3 @@ -/* $Id: s_masking.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_masking.h b/xc/extras/Mesa/src/swrast/s_masking.h index f79acf413..5c2bd847a 100644 --- a/xc/extras/Mesa/src/swrast/s_masking.h +++ b/xc/extras/Mesa/src/swrast/s_masking.h @@ -1,4 +1,3 @@ -/* $Id: s_masking.h,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_pb.c b/xc/extras/Mesa/src/swrast/s_pb.c index a0da3a6b3..e6abb9b66 100644 --- a/xc/extras/Mesa/src/swrast/s_pb.c +++ b/xc/extras/Mesa/src/swrast/s_pb.c @@ -1,4 +1,3 @@ -/* $Id: s_pb.c,v 1.1.1.1 2002/10/22 13:06:53 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_pb.h b/xc/extras/Mesa/src/swrast/s_pb.h index 72d2df353..70e58cc2b 100644 --- a/xc/extras/Mesa/src/swrast/s_pb.h +++ b/xc/extras/Mesa/src/swrast/s_pb.h @@ -1,4 +1,3 @@ -/* $Id: s_pb.h,v 1.1.1.1 2002/10/22 13:06:53 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_pixeltex.c b/xc/extras/Mesa/src/swrast/s_pixeltex.c index f52972ff7..7990f4ea4 100644 --- a/xc/extras/Mesa/src/swrast/s_pixeltex.c +++ b/xc/extras/Mesa/src/swrast/s_pixeltex.c @@ -1,4 +1,3 @@ -/* $Id: s_pixeltex.c,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_pixeltex.h b/xc/extras/Mesa/src/swrast/s_pixeltex.h index 7d1d8047c..a28e58011 100644 --- a/xc/extras/Mesa/src/swrast/s_pixeltex.h +++ b/xc/extras/Mesa/src/swrast/s_pixeltex.h @@ -1,4 +1,3 @@ -/* $Id: s_pixeltex.h,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_points.c b/xc/extras/Mesa/src/swrast/s_points.c index 75f4b7811..679d0232a 100644 --- a/xc/extras/Mesa/src/swrast/s_points.c +++ b/xc/extras/Mesa/src/swrast/s_points.c @@ -1,4 +1,3 @@ -/* $Id: s_points.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -46,7 +45,6 @@ #define SPECULAR 0x8 #define LARGE 0x10 #define ATTENUATE 0x20 -#define SPRITE 0x40 /* @@ -145,19 +143,6 @@ #include "s_pointtemp.h" -/* - * Sprite (textured point) - */ -#define FLAGS (RGBA | TEXTURE | SPRITE) -#define NAME sprite_point -#include "s_pointtemp.h" - - -#define FLAGS (RGBA | ATTENUATE | TEXTURE | SPRITE) -#define NAME atten_sprite_point -#include "s_pointtemp.h" - - void _swrast_add_spec_terms_point( GLcontext *ctx, const SWvertex *v0 ) @@ -202,14 +187,7 @@ _swrast_choose_point( GLcontext *ctx ) GLboolean rgbMode = ctx->Visual.rgbMode; if (ctx->RenderMode==GL_RENDER) { - if (ctx->Point.SpriteMode) { - /* XXX this might not be good enough */ - if (ctx->Point._Attenuated) - USE(atten_sprite_point); - else - USE(sprite_point); - } - else if (ctx->Point.SmoothFlag) { + if (ctx->Point.SmoothFlag) { /* Smooth points */ if (rgbMode) { if (ctx->Point._Attenuated) { diff --git a/xc/extras/Mesa/src/swrast/s_points.h b/xc/extras/Mesa/src/swrast/s_points.h index 0b2ec5ba6..e22c51a1c 100644 --- a/xc/extras/Mesa/src/swrast/s_points.h +++ b/xc/extras/Mesa/src/swrast/s_points.h @@ -1,4 +1,3 @@ -/* $Id: s_points.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_pointtemp.h b/xc/extras/Mesa/src/swrast/s_pointtemp.h index efef56bc0..60d249fe0 100644 --- a/xc/extras/Mesa/src/swrast/s_pointtemp.h +++ b/xc/extras/Mesa/src/swrast/s_pointtemp.h @@ -1,10 +1,9 @@ -/* $Id: s_pointtemp.h,v 1.1.1.1 2002/10/22 13:06:54 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.5 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -36,7 +35,6 @@ * SPECULAR = do separate specular color * LARGE = do points with diameter > 1 pixel * ATTENUATE = compute point size attenuation - * SPRITE = GL_MESA_sprite_point * * Notes: LARGE and ATTENUATE are exclusive of each other. * TEXTURE requires RGBA @@ -64,7 +62,7 @@ NAME ( GLcontext *ctx, const SWvertex *vert ) SWcontext *swrast = SWRAST_CONTEXT(ctx); struct pixel_buffer *PB = swrast->PB; - const GLint z = (GLint) (vert->win[2]); + const GLint z = (GLint) (vert->win[2] + 0.5F); #if FLAGS & RGBA const GLchan red = vert->color[0]; @@ -127,62 +125,7 @@ NAME ( GLcontext *ctx, const SWvertex *vert ) return; } -#if FLAGS & SPRITE - { - SWcontext *swctx = SWRAST_CONTEXT(ctx); - const GLfloat radius = 0.5F * vert->pointSize; /* XXX threshold, alpha */ - SWvertex v0, v1, v2, v3; - GLuint unit; - - (void) red; - (void) green; - (void) blue; - (void) alpha; - (void) z; - - /* lower left corner */ - v0 = *vert; - v0.win[0] -= radius; - v0.win[1] -= radius; - - /* lower right corner */ - v1 = *vert; - v1.win[0] += radius; - v1.win[1] -= radius; - - /* upper right corner */ - v2 = *vert; - v2.win[0] += radius; - v2.win[1] += radius; - - /* upper left corner */ - v3 = *vert; - v3.win[0] -= radius; - v3.win[1] += radius; - - for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) { - if (ctx->Texture.Unit[unit]._ReallyEnabled) { - v0.texcoord[unit][0] = 0.0; - v0.texcoord[unit][1] = 0.0; - v1.texcoord[unit][0] = 1.0; - v1.texcoord[unit][1] = 0.0; - v2.texcoord[unit][0] = 1.0; - v2.texcoord[unit][1] = 1.0; - v3.texcoord[unit][0] = 0.0; - v3.texcoord[unit][1] = 1.0; - } - } - - /* XXX if radius < threshold, attenuate alpha? */ - - /* XXX need to implement clipping!!! */ - - /* render */ - swctx->Triangle(ctx, &v0, &v1, &v2); - swctx->Triangle(ctx, &v0, &v2, &v3); - } - -#elif FLAGS & (LARGE | ATTENUATE | SMOOTH) +#if FLAGS & (LARGE | ATTENUATE | SMOOTH) { GLint x, y; diff --git a/xc/extras/Mesa/src/swrast/s_readpix.c b/xc/extras/Mesa/src/swrast/s_readpix.c index 666baa286..3582e979e 100644 --- a/xc/extras/Mesa/src/swrast/s_readpix.c +++ b/xc/extras/Mesa/src/swrast/s_readpix.c @@ -1,4 +1,3 @@ -/* $Id: s_readpix.c,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -282,8 +281,15 @@ read_fast_rgba_pixels( GLcontext *ctx, if (0) { #endif GLchan *dest = (GLchan *) pixels - + (skipRows * rowLength + skipPixels) * 4; + + (skipRows * rowLength + skipPixels) * 4; GLint row; + + if (packing->Invert) { + /* start at top and go down */ + dest += (readHeight - 1) * rowLength * 4; + rowLength = -rowLength; + } + for (row=0; row<readHeight; row++) { (*swrast->Driver.ReadRGBASpan)(ctx, readWidth, srcX, srcY, (GLchan (*)[4]) dest); diff --git a/xc/extras/Mesa/src/swrast/s_scissor.c b/xc/extras/Mesa/src/swrast/s_scissor.c index 3558b91d0..619004214 100644 --- a/xc/extras/Mesa/src/swrast/s_scissor.c +++ b/xc/extras/Mesa/src/swrast/s_scissor.c @@ -1,4 +1,3 @@ -/* $Id: s_scissor.c,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_scissor.h b/xc/extras/Mesa/src/swrast/s_scissor.h index ec454e4dd..6d81f839f 100644 --- a/xc/extras/Mesa/src/swrast/s_scissor.h +++ b/xc/extras/Mesa/src/swrast/s_scissor.h @@ -1,4 +1,3 @@ -/* $Id: s_scissor.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_span.c b/xc/extras/Mesa/src/swrast/s_span.c index 375fe6a96..3f90c40a6 100644 --- a/xc/extras/Mesa/src/swrast/s_span.c +++ b/xc/extras/Mesa/src/swrast/s_span.c @@ -1,4 +1,3 @@ -/* $Id: s_span.c,v 1.1.1.1 2002/10/22 13:06:57 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_span.h b/xc/extras/Mesa/src/swrast/s_span.h index 063494258..e724c5a02 100644 --- a/xc/extras/Mesa/src/swrast/s_span.h +++ b/xc/extras/Mesa/src/swrast/s_span.h @@ -1,4 +1,3 @@ -/* $Id: s_span.h,v 1.1.1.1 2002/10/22 13:06:57 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_stencil.c b/xc/extras/Mesa/src/swrast/s_stencil.c index 13ecc70da..acb273803 100644 --- a/xc/extras/Mesa/src/swrast/s_stencil.c +++ b/xc/extras/Mesa/src/swrast/s_stencil.c @@ -1,4 +1,3 @@ -/* $Id: s_stencil.c,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_stencil.h b/xc/extras/Mesa/src/swrast/s_stencil.h index 03e0de901..97dc5b25b 100644 --- a/xc/extras/Mesa/src/swrast/s_stencil.h +++ b/xc/extras/Mesa/src/swrast/s_stencil.h @@ -1,4 +1,3 @@ -/* $Id: s_stencil.h,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_texstore.c b/xc/extras/Mesa/src/swrast/s_texstore.c index 0ec021b70..053430633 100644 --- a/xc/extras/Mesa/src/swrast/s_texstore.c +++ b/xc/extras/Mesa/src/swrast/s_texstore.c @@ -1,10 +1,9 @@ -/* $Id: s_texstore.c,v 1.1.1.1 2002/10/22 13:06:53 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -194,7 +193,7 @@ _swrast_copy_teximage1d( GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, texUnit, texObj); + _mesa_generate_mipmap(ctx, target, texUnit, texObj); } } @@ -253,7 +252,7 @@ _swrast_copy_teximage2d( GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, texUnit, texObj); + _mesa_generate_mipmap(ctx, target, texUnit, texObj); } } @@ -325,7 +324,7 @@ _swrast_copy_texsubimage1d(GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, texUnit, texObj); + _mesa_generate_mipmap(ctx, target, texUnit, texObj); } } @@ -401,7 +400,7 @@ _swrast_copy_texsubimage2d( GLcontext *ctx, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, texUnit, texObj); + _mesa_generate_mipmap(ctx, target, texUnit, texObj); } } @@ -476,6 +475,6 @@ _swrast_copy_texsubimage3d( GLcontext *ctx, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, texUnit, texObj); + _mesa_generate_mipmap(ctx, target, texUnit, texObj); } } diff --git a/xc/extras/Mesa/src/swrast/s_texture.c b/xc/extras/Mesa/src/swrast/s_texture.c index 66672a94f..a904f101d 100644 --- a/xc/extras/Mesa/src/swrast/s_texture.c +++ b/xc/extras/Mesa/src/swrast/s_texture.c @@ -1,8 +1,7 @@ -/* $Id: s_texture.c,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 4.0.4 + * Version: 4.0.5 * * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * @@ -98,6 +97,7 @@ U = 1.0F - (S - (GLfloat) flr); /* flr is odd */ \ else \ U = S - (GLfloat) flr; /* flr is even */ \ + U = (U * SIZE) - 0.5; \ I0 = IFLOOR(U); \ I1 = I0 + 1; \ if (I0 < 0) \ @@ -883,7 +883,8 @@ sample_linear_2d( GLcontext *ctx, GLuint texUnit, * Optimized 2-D texture sampling: * S and T wrap mode == GL_REPEAT * GL_NEAREST min/mag filter - * No border + * No border, + * RowStride == Width, * Format = GL_RGB */ static void @@ -924,6 +925,7 @@ opt_sample_rgb_2d( GLcontext *ctx, GLuint texUnit, * S and T wrap mode == GL_REPEAT * GL_NEAREST min/mag filter * No border + * RowStride == Width, * Format = GL_RGBA */ static void @@ -980,7 +982,7 @@ sample_lambda_2d( GLcontext *ctx, GLuint texUnit, switch (tObj->MagFilter) { case GL_NEAREST: if (tObj->WrapS == GL_REPEAT && tObj->WrapT == GL_REPEAT && - img->Border == 0) { + img->Border == 0 && img->Width == img->RowStride) { switch (img->Format) { case GL_RGB: opt_sample_rgb_2d(ctx, texUnit, tObj, n, s, t, NULL, @@ -1897,10 +1899,14 @@ sample_linear_rect(GLcontext *ctx, GLuint texUnit, w11 = a * b ; /* compute weighted average of samples */ - rgba[i][0] = w00 * t00[0] + w10 * t10[0] + w01 * t01[0] + w11 * t11[0]; - rgba[i][1] = w00 * t00[1] + w10 * t10[1] + w01 * t01[1] + w11 * t11[1]; - rgba[i][2] = w00 * t00[2] + w10 * t10[2] + w01 * t01[2] + w11 * t11[2]; - rgba[i][3] = w00 * t00[3] + w10 * t10[3] + w01 * t01[3] + w11 * t11[3]; + rgba[i][0] = (GLchan) + (w00 * t00[0] + w10 * t10[0] + w01 * t01[0] + w11 * t11[0]); + rgba[i][1] = (GLchan) + (w00 * t00[1] + w10 * t10[1] + w01 * t01[1] + w11 * t11[1]); + rgba[i][2] = (GLchan) + (w00 * t00[2] + w10 * t10[2] + w01 * t01[2] + w11 * t11[2]); + rgba[i][3] = (GLchan) + (w00 * t00[3] + w10 * t10[3] + w01 * t01[3] + w11 * t11[3]); } } @@ -2035,12 +2041,14 @@ _swrast_choose_texture_sample_func( GLcontext *ctx, GLuint texUnit, if (t->WrapS == GL_REPEAT && t->WrapT == GL_REPEAT && t->Image[baseLevel]->Border == 0 && + t->Image[baseLevel]->Width == t->Image[baseLevel]->RowStride && t->Image[baseLevel]->TexFormat->MesaFormat == MESA_FORMAT_RGB) { swrast->TextureSample[texUnit] = opt_sample_rgb_2d; } else if (t->WrapS == GL_REPEAT && t->WrapT == GL_REPEAT && t->Image[baseLevel]->Border == 0 && + t->Image[baseLevel]->Width == t->Image[baseLevel]->RowStride && t->Image[baseLevel]->TexFormat->MesaFormat == MESA_FORMAT_RGBA) { swrast->TextureSample[texUnit] = opt_sample_rgba_2d; } @@ -2418,8 +2426,8 @@ texture_combine(const GLcontext *ctx, GLchan dot = ((arg0[i][RCOMP]-0.5F) * (arg1[i][RCOMP]-0.5F) + (arg0[i][GCOMP]-0.5F) * (arg1[i][GCOMP]-0.5F) + (arg0[i][BCOMP]-0.5F) * (arg1[i][BCOMP]-0.5F)) - * 4.0F; - dot = CLAMP(dot, 0.0, CHAN_MAXF) * RGBmult; + * 4.0F * RGBmult; + dot = CLAMP(dot, 0.0, CHAN_MAXF); #else GLint dot = (S_PROD((GLint)arg0[i][RCOMP] - half, (GLint)arg1[i][RCOMP] - half) + @@ -2427,7 +2435,8 @@ texture_combine(const GLcontext *ctx, (GLint)arg1[i][GCOMP] - half) + S_PROD((GLint)arg0[i][BCOMP] - half, (GLint)arg1[i][BCOMP] - half)) >> 6; - dot = CLAMP(dot, 0, CHAN_MAX) << RGBshift; + dot <<= RGBshift; + dot = CLAMP(dot, 0, CHAN_MAX); #endif rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = (GLchan) dot; } @@ -2597,7 +2606,7 @@ apply_texture( const GLcontext *ctx, format = texUnit->_Current->Image[baseLevel]->Format; - if (format==GL_COLOR_INDEX || format==GL_DEPTH_COMPONENT) { + if (format==GL_COLOR_INDEX || format==GL_DEPTH_COMPONENT || format==GL_YCBCR_MESA) { format = GL_RGBA; /* XXXX a hack! */ } diff --git a/xc/extras/Mesa/src/swrast/s_texture.h b/xc/extras/Mesa/src/swrast/s_texture.h index c1b792094..3bd1b7eed 100644 --- a/xc/extras/Mesa/src/swrast/s_texture.h +++ b/xc/extras/Mesa/src/swrast/s_texture.h @@ -1,4 +1,3 @@ -/* $Id: s_texture.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_triangle.c b/xc/extras/Mesa/src/swrast/s_triangle.c index ad9e77926..8f035d10a 100644 --- a/xc/extras/Mesa/src/swrast/s_triangle.c +++ b/xc/extras/Mesa/src/swrast/s_triangle.c @@ -1,4 +1,3 @@ -/* $Id: s_triangle.c,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -1696,6 +1695,7 @@ _swrast_choose_triangle( GLcontext *ctx ) && texObj2D->WrapS==GL_REPEAT && texObj2D->WrapT==GL_REPEAT && texImg->Border==0 + && texImg->Width==texImg->RowStride && (format == MESA_FORMAT_RGB || format == MESA_FORMAT_RGBA) && minFilter == magFilter && ctx->Light.Model.ColorControl == GL_SINGLE_COLOR diff --git a/xc/extras/Mesa/src/swrast/s_triangle.h b/xc/extras/Mesa/src/swrast/s_triangle.h index c935cf908..4d5777480 100644 --- a/xc/extras/Mesa/src/swrast/s_triangle.h +++ b/xc/extras/Mesa/src/swrast/s_triangle.h @@ -1,4 +1,3 @@ -/* $Id: s_triangle.h,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_trispan.h b/xc/extras/Mesa/src/swrast/s_trispan.h index 9a85132fe..dabb20e13 100644 --- a/xc/extras/Mesa/src/swrast/s_trispan.h +++ b/xc/extras/Mesa/src/swrast/s_trispan.h @@ -1,4 +1,3 @@ -/* $Id: s_trispan.h,v 1.1.1.1 2002/10/22 13:06:42 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_tritemp.h b/xc/extras/Mesa/src/swrast/s_tritemp.h index 41306fc03..7d2e01894 100644 --- a/xc/extras/Mesa/src/swrast/s_tritemp.h +++ b/xc/extras/Mesa/src/swrast/s_tritemp.h @@ -1,3 +1,4 @@ + /* * Mesa 3-D graphics library * Version: 3.5 @@ -21,7 +22,7 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/extras/Mesa/src/swrast/s_tritemp.h,v 1.3 2002/09/09 21:07:37 dawes Exp $ */ +/* $XFree86: xc/extras/Mesa/src/swrast/s_tritemp.h,v 1.5 2002/12/16 16:18:40 dawes Exp $ */ /* * Triangle Rasterizer Template @@ -210,7 +211,7 @@ if (area * bf < 0.0) return; - if (area == 0.0F || IS_INF_OR_NAN(area)) + if (IS_INF_OR_NAN(area) || area == 0.0F) return; oneOverArea = 1.0F / area; diff --git a/xc/extras/Mesa/src/swrast/s_zoom.c b/xc/extras/Mesa/src/swrast/s_zoom.c index b56128147..531995a90 100644 --- a/xc/extras/Mesa/src/swrast/s_zoom.c +++ b/xc/extras/Mesa/src/swrast/s_zoom.c @@ -1,4 +1,3 @@ -/* $Id: s_zoom.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/s_zoom.h b/xc/extras/Mesa/src/swrast/s_zoom.h index a55223607..a195dfe1d 100644 --- a/xc/extras/Mesa/src/swrast/s_zoom.h +++ b/xc/extras/Mesa/src/swrast/s_zoom.h @@ -1,4 +1,3 @@ -/* $Id: s_zoom.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast/swrast.h b/xc/extras/Mesa/src/swrast/swrast.h index 7149be8fb..830c1baee 100644 --- a/xc/extras/Mesa/src/swrast/swrast.h +++ b/xc/extras/Mesa/src/swrast/swrast.h @@ -1,4 +1,3 @@ -/* $Id: swrast.h,v 1.1.1.1 2002/10/22 13:06:46 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -153,6 +152,11 @@ _swrast_Quad( GLcontext *ctx, extern void _swrast_flush( GLcontext *ctx ); +extern void +_swrast_render_start( GLcontext *ctx ); + +extern void +_swrast_render_finish( GLcontext *ctx ); /* Tell the software rasterizer about core state changes. */ diff --git a/xc/extras/Mesa/src/swrast_setup/ss_context.c b/xc/extras/Mesa/src/swrast_setup/ss_context.c index 974f18bd4..58d85faa1 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_context.c +++ b/xc/extras/Mesa/src/swrast_setup/ss_context.c @@ -1,4 +1,3 @@ -/* $Id: ss_context.c,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -49,7 +48,6 @@ #define _SWSETUP_NEW_RENDERINDEX (_NEW_POLYGON|_NEW_LIGHT) - GLboolean _swsetup_CreateContext( GLcontext *ctx ) { @@ -117,19 +115,13 @@ _swsetup_RenderStart( GLcontext *ctx ) swsetup->NewState = 0; - if (swsetup->Driver.Start) - swsetup->Driver.Start( ctx ); + _swrast_render_start( ctx ); } static void _swsetup_RenderFinish( GLcontext *ctx ) { - SScontext *swsetup = SWSETUP_CONTEXT(ctx); - - _swrast_flush( ctx ); - - if (swsetup->Driver.Finish) - swsetup->Driver.Finish( ctx ); + _swrast_render_finish( ctx ); } void diff --git a/xc/extras/Mesa/src/swrast_setup/ss_context.h b/xc/extras/Mesa/src/swrast_setup/ss_context.h index d7b595461..3174c95de 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_context.h +++ b/xc/extras/Mesa/src/swrast_setup/ss_context.h @@ -1,4 +1,3 @@ -/* $Id: ss_context.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -44,12 +43,6 @@ typedef struct { */ struct gl_client_array ChanColor; struct gl_client_array ChanSecondaryColor; - - - struct { - void (*Start)( GLcontext * ); - void (*Finish)( GLcontext * ); - } Driver; } SScontext; #define SWSETUP_CONTEXT(ctx) ((SScontext *)ctx->swsetup_context) diff --git a/xc/extras/Mesa/src/swrast_setup/ss_triangle.c b/xc/extras/Mesa/src/swrast_setup/ss_triangle.c index 3a3cf1f32..700506344 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_triangle.c +++ b/xc/extras/Mesa/src/swrast_setup/ss_triangle.c @@ -1,4 +1,3 @@ -/* $Id: ss_triangle.c,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast_setup/ss_triangle.h b/xc/extras/Mesa/src/swrast_setup/ss_triangle.h index 655d7deab..0712a0d59 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_triangle.h +++ b/xc/extras/Mesa/src/swrast_setup/ss_triangle.h @@ -1,4 +1,3 @@ -/* $Id: ss_triangle.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h b/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h index 9801b7ab7..a0698cf77 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h +++ b/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h @@ -1,4 +1,3 @@ -/* $Id: ss_tritmp.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast_setup/ss_vb.c b/xc/extras/Mesa/src/swrast_setup/ss_vb.c index 8f5d9161f..05d6e570b 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_vb.c +++ b/xc/extras/Mesa/src/swrast_setup/ss_vb.c @@ -1,4 +1,3 @@ -/* $Id: ss_vb.c,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast_setup/ss_vb.h b/xc/extras/Mesa/src/swrast_setup/ss_vb.h index c9c1f8cd8..30cbb363c 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_vb.h +++ b/xc/extras/Mesa/src/swrast_setup/ss_vb.h @@ -1,4 +1,3 @@ -/* $Id: ss_vb.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h b/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h index c2a48aca1..15277cfd2 100644 --- a/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h +++ b/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h @@ -1,4 +1,3 @@ -/* $Id: ss_vbtmp.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/swrast_setup/swrast_setup.h b/xc/extras/Mesa/src/swrast_setup/swrast_setup.h index 16dde40e9..802212e88 100644 --- a/xc/extras/Mesa/src/swrast_setup/swrast_setup.h +++ b/xc/extras/Mesa/src/swrast_setup/swrast_setup.h @@ -1,4 +1,3 @@ -/* $Id: swrast_setup.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/texformat.c b/xc/extras/Mesa/src/texformat.c index a55d9ddb0..d811f742d 100644 --- a/xc/extras/Mesa/src/texformat.c +++ b/xc/extras/Mesa/src/texformat.c @@ -1,9 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -22,8 +22,9 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * Author: + * Authors: * Gareth Hughes <gareth@valinux.com> + * Brian Paul */ #ifdef PC_HEADER @@ -437,6 +438,45 @@ const struct gl_texture_format _mesa_texformat_ci8 = { }; +const struct gl_texture_format _mesa_texformat_ycbcr = { + MESA_FORMAT_YCBCR, /* MesaFormat */ + GL_YCBCR_MESA, /* BaseFormat */ + GL_UNSIGNED_SHORT_8_8_MESA, /* Type */ + 0, /* RedBits */ + 0, /* GreenBits */ + 0, /* BlueBits */ + 0, /* AlphaBits */ + 0, /* LuminanceBits */ + 0, /* IntensityBits */ + 0, /* IndexBits */ + 0, /* DepthBits */ + 2, /* TexelBytes */ + fetch_1d_texel_ycbcr, /* FetchTexel1D */ + fetch_2d_texel_ycbcr, /* FetchTexel2D */ + fetch_3d_texel_ycbcr, /* FetchTexel3D */ +}; + + +const struct gl_texture_format _mesa_texformat_ycbcr_rev = { + MESA_FORMAT_YCBCR_REV, /* MesaFormat */ + GL_YCBCR_MESA, /* BaseFormat */ + GL_UNSIGNED_SHORT_8_8_REV_MESA, /* Type */ + 0, /* RedBits */ + 0, /* GreenBits */ + 0, /* BlueBits */ + 0, /* AlphaBits */ + 0, /* LuminanceBits */ + 0, /* IntensityBits */ + 0, /* IndexBits */ + 0, /* DepthBits */ + 2, /* TexelBytes */ + fetch_1d_texel_ycbcr_rev, /* FetchTexel1D */ + fetch_2d_texel_ycbcr_rev, /* FetchTexel2D */ + fetch_3d_texel_ycbcr_rev, /* FetchTexel3D */ +}; + + + /* ============================================================= * Null format: */ @@ -589,6 +629,12 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat, _mesa_problem(ctx, "texture compression extension not enabled"); return &_mesa_texformat_rgba; + case GL_YCBCR_MESA: + if (type == GL_UNSIGNED_SHORT_8_8_MESA) + return &_mesa_texformat_ycbcr; + else + return &_mesa_texformat_ycbcr_rev; + default: _mesa_problem(ctx, "unexpected format in _mesa_choose_tex_format()"); printf("intformat = %d %x\n", internalFormat, internalFormat); diff --git a/xc/extras/Mesa/src/texformat.h b/xc/extras/Mesa/src/texformat.h index 72b473cdf..d8ba56ae1 100644 --- a/xc/extras/Mesa/src/texformat.h +++ b/xc/extras/Mesa/src/texformat.h @@ -1,9 +1,9 @@ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -22,8 +22,9 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * Author: + * Authors: * Gareth Hughes <gareth@valinux.com> + * Brian Paul */ #ifndef TEXFORMAT_H @@ -32,8 +33,7 @@ #include "mtypes.h" -/* The Mesa internal texture image types. These will be set to their - * default value, but may be changed by drivers as required. +/* The Mesa internal texture image types. */ enum _format { /* Hardware-friendly formats. Drivers can override the default @@ -60,6 +60,8 @@ enum _format { MESA_FORMAT_L8, /* LLLL LLLL */ MESA_FORMAT_I8, /* IIII IIII */ MESA_FORMAT_CI8, /* CCCC CCCC */ + MESA_FORMAT_YCBCR, /* YYYY YYYY UorV UorV */ + MESA_FORMAT_YCBCR_REV, /* UorV UorV YYYY YYYY */ /* Generic GLchan-based formats. These are the default formats used * by the software rasterizer and, unless the driver overrides the @@ -90,11 +92,11 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat, GLenum format, GLenum type ); extern GLint -_mesa_base_compressed_texformat(GLcontext *ctx, GLint intFormat); +_mesa_base_compressed_texformat( GLcontext *ctx, GLint intFormat ); extern GLint -_mesa_compressed_texture_size(GLcontext *ctx, - const struct gl_texture_image *texImage); +_mesa_compressed_texture_size( GLcontext *ctx, + const struct gl_texture_image *texImage ); /* The default formats, GLchan per component: @@ -122,6 +124,8 @@ extern const struct gl_texture_format _mesa_texformat_a8; extern const struct gl_texture_format _mesa_texformat_l8; extern const struct gl_texture_format _mesa_texformat_i8; extern const struct gl_texture_format _mesa_texformat_ci8; +extern const struct gl_texture_format _mesa_texformat_ycbcr; +extern const struct gl_texture_format _mesa_texformat_ycbcr_rev; /* The null format: */ diff --git a/xc/extras/Mesa/src/texformat_tmp.h b/xc/extras/Mesa/src/texformat_tmp.h index cc788d658..56160ee2c 100644 --- a/xc/extras/Mesa/src/texformat_tmp.h +++ b/xc/extras/Mesa/src/texformat_tmp.h @@ -1,10 +1,9 @@ -/* $Id: texformat_tmp.h,v 1.1.1.1 2002/10/22 13:05:22 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -23,8 +22,9 @@ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * Author: + * Authors: * Gareth Hughes <gareth@valinux.com> + * Brian Paul */ #if DIM == 1 @@ -43,13 +43,13 @@ #elif DIM == 2 #define CHAN_SRC( t, i, j, k, sz ) \ - ((GLchan *)(t)->Data + ((t)->Width * (j) + (i)) * (sz)) + ((GLchan *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)) #define UBYTE_SRC( t, i, j, k, sz ) \ - ((GLubyte *)(t)->Data + ((t)->Width * (j) + (i)) * (sz)) + ((GLubyte *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)) #define USHORT_SRC( t, i, j, k ) \ - ((GLushort *)(t)->Data + ((t)->Width * (j) + (i))) + ((GLushort *)(t)->Data + ((t)->RowStride * (j) + (i))) #define FLOAT_SRC( t, i, j, k ) \ - ((GLfloat *)(t)->Data + ((t)->Width * (j) + (i))) + ((GLfloat *)(t)->Data + ((t)->RowStride * (j) + (i))) #define FETCH(x) fetch_2d_texel_##x @@ -57,16 +57,16 @@ #define CHAN_SRC( t, i, j, k, sz ) \ (GLchan *)(t)->Data + (((t)->Height * (k) + (j)) * \ - (t)->Width + (i)) * (sz) + (t)->RowStride + (i)) * (sz) #define UBYTE_SRC( t, i, j, k, sz ) \ ((GLubyte *)(t)->Data + (((t)->Height * (k) + (j)) * \ - (t)->Width + (i)) * (sz)) + (t)->RowStride + (i)) * (sz)) #define USHORT_SRC( t, i, j, k ) \ ((GLushort *)(t)->Data + (((t)->Height * (k) + (j)) * \ - (t)->Width + (i))) + (t)->RowStride + (i))) #define FLOAT_SRC( t, i, j, k ) \ ((GLfloat *)(t)->Data + (((t)->Height * (k) + (j)) * \ - (t)->Width + (i))) + (t)->RowStride + (i))) #define FETCH(x) fetch_3d_texel_##x @@ -191,7 +191,8 @@ static void FETCH(rgb565)( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLvoid *texel ) { const GLushort *src = USHORT_SRC( texImage, i, j, k ); - GLchan *rgba = (GLchan *) texel; GLushort s = *src; + const GLushort s = *src; + GLchan *rgba = (GLchan *) texel; rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 8) & 0xf8) * 255 / 0xf8 ); rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 3) & 0xfc) * 255 / 0xfc ); rgba[BCOMP] = UBYTE_TO_CHAN( ((s << 3) & 0xf8) * 255 / 0xf8 ); @@ -202,7 +203,8 @@ static void FETCH(argb4444)( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLvoid *texel ) { const GLushort *src = USHORT_SRC( texImage, i, j, k ); - GLchan *rgba = (GLchan *) texel; GLushort s = *src; + const GLushort s = *src; + GLchan *rgba = (GLchan *) texel; rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 8) & 0xf) * 255 / 0xf ); rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 4) & 0xf) * 255 / 0xf ); rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf) * 255 / 0xf ); @@ -213,7 +215,8 @@ static void FETCH(argb1555)( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLvoid *texel ) { const GLushort *src = USHORT_SRC( texImage, i, j, k ); - GLchan *rgba = (GLchan *) texel; GLushort s = *src; + const GLushort s = *src; + GLchan *rgba = (GLchan *) texel; rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 10) & 0x1f) * 255 / 0x1f ); rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 5) & 0x1f) * 255 / 0x1f ); rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0x1f) * 255 / 0x1f ); @@ -235,7 +238,8 @@ static void FETCH(rgb332)( const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLvoid *texel ) { const GLubyte *src = UBYTE_SRC( texImage, i, j, k, 1 ); - GLchan *rgba = (GLchan *) texel; GLubyte s = *src; + const GLubyte s = *src; + GLchan *rgba = (GLchan *) texel; rgba[RCOMP] = UBYTE_TO_CHAN( ((s ) & 0xe0) * 255 / 0xe0 ); rgba[GCOMP] = UBYTE_TO_CHAN( ((s << 3) & 0xe0) * 255 / 0xe0 ); rgba[BCOMP] = UBYTE_TO_CHAN( ((s << 5) & 0xc0) * 255 / 0xc0 ); @@ -283,6 +287,66 @@ static void FETCH(ci8)( const struct gl_texture_image *texImage, *index = UBYTE_TO_CHAN( *src ); } +/* XXX this may break if GLchan != GLubyte */ +static void FETCH(ycbcr)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLvoid *texel ) +{ + const GLushort *src0 = USHORT_SRC( texImage, (i & ~1), j, k ); /* even */ + const GLushort *src1 = src0 + 1; /* odd */ + const GLubyte y0 = (*src0 >> 8) & 0xff; /* luminance */ + const GLubyte cb = *src0 & 0xff; /* chroma U */ + const GLubyte y1 = (*src1 >> 8) & 0xff; /* luminance */ + const GLubyte cr = *src1 & 0xff; /* chroma V */ + GLchan *rgba = (GLchan *) texel; + GLint r, g, b; + if (i & 1) { + /* odd pixel: use y1,cr,cb */ + r = (GLint) (1.164 * (y1-16) + 1.596 * (cr-128)); + g = (GLint) (1.164 * (y1-16) - 0.813 * (cr-128) - 0.391 * (cb-128)); + b = (GLint) (1.164 * (y1-16) + 2.018 * (cb-128)); + } + else { + /* even pixel: use y0,cr,cb */ + r = (GLint) (1.164 * (y0-16) + 1.596 * (cr-128)); + g = (GLint) (1.164 * (y0-16) - 0.813 * (cr-128) - 0.391 * (cb-128)); + b = (GLint) (1.164 * (y0-16) + 2.018 * (cb-128)); + } + rgba[RCOMP] = CLAMP(r, 0, CHAN_MAX); + rgba[GCOMP] = CLAMP(g, 0, CHAN_MAX); + rgba[BCOMP] = CLAMP(b, 0, CHAN_MAX); + rgba[ACOMP] = CHAN_MAX; +} + +/* XXX this may break if GLchan != GLubyte */ +static void FETCH(ycbcr_rev)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLvoid *texel ) +{ + const GLushort *src0 = USHORT_SRC( texImage, (i & ~1), j, k ); /* even */ + const GLushort *src1 = src0 + 1; /* odd */ + const GLubyte y0 = *src0 & 0xff; /* luminance */ + const GLubyte cr = (*src0 >> 8) & 0xff; /* chroma U */ + const GLubyte y1 = *src1 & 0xff; /* luminance */ + const GLubyte cb = (*src1 >> 8) & 0xff; /* chroma V */ + GLchan *rgba = (GLchan *) texel; + GLint r, g, b; + if (i & 1) { + /* odd pixel: use y1,cr,cb */ + r = (GLint) (1.164 * (y1-16) + 1.596 * (cr-128)); + g = (GLint) (1.164 * (y1-16) - 0.813 * (cr-128) - 0.391 * (cb-128)); + b = (GLint) (1.164 * (y1-16) + 2.018 * (cb-128)); + } + else { + /* even pixel: use y0,cr,cb */ + r = (GLint) (1.164 * (y0-16) + 1.596 * (cr-128)); + g = (GLint) (1.164 * (y0-16) - 0.813 * (cr-128) - 0.391 * (cb-128)); + b = (GLint) (1.164 * (y0-16) + 2.018 * (cb-128)); + } + rgba[RCOMP] = CLAMP(r, 0, CHAN_MAX); + rgba[GCOMP] = CLAMP(g, 0, CHAN_MAX); + rgba[BCOMP] = CLAMP(b, 0, CHAN_MAX); + rgba[ACOMP] = CHAN_MAX; +} + #undef CHAN_SRC #undef UBYTE_SRC diff --git a/xc/extras/Mesa/src/teximage.c b/xc/extras/Mesa/src/teximage.c index 48cf19c68..68395bcd5 100644 --- a/xc/extras/Mesa/src/teximage.c +++ b/xc/extras/Mesa/src/teximage.c @@ -101,6 +101,7 @@ static void PrintTexture(const struct gl_texture_image *img) printf("%02x%02x%02x%02x ", data[0], data[1], data[2], data[3]); data += c; } + data += (img->RowStride - img->Width) * c; printf("\n"); } #endif @@ -213,7 +214,10 @@ _mesa_base_tex_format( GLcontext *ctx, GLint format ) case GL_COLOR_INDEX8_EXT: case GL_COLOR_INDEX12_EXT: case GL_COLOR_INDEX16_EXT: - return GL_COLOR_INDEX; + if (ctx->Extensions.EXT_paletted_texture) + return GL_COLOR_INDEX; + else + return -1; case GL_DEPTH_COMPONENT: case GL_DEPTH_COMPONENT16_SGIX: case GL_DEPTH_COMPONENT24_SGIX: @@ -222,6 +226,11 @@ _mesa_base_tex_format( GLcontext *ctx, GLint format ) return GL_DEPTH_COMPONENT; else return -1; + case GL_YCBCR_MESA: + if (ctx->Extensions.MESA_ycbcr_texture) + return GL_YCBCR_MESA; + else + return -1; default: return -1; /* error */ } @@ -279,6 +288,7 @@ is_color_format(GLenum format) case GL_RGBA12: case GL_RGBA16: return GL_TRUE; + case GL_YCBCR_MESA: /* not considered to be RGB */ default: return GL_FALSE; } @@ -384,7 +394,7 @@ _mesa_alloc_texture_image( void ) void _mesa_free_texture_image( struct gl_texture_image *teximage ) { - if (teximage->Data) { + if (teximage->Data && !teximage->IsClientData) { MESA_PBUFFER_FREE( teximage->Data ); teximage->Data = NULL; } @@ -605,6 +615,7 @@ clear_teximage_fields(struct gl_texture_image *img) img->Width = 0; img->Height = 0; img->Depth = 0; + img->RowStride = 0; img->Width2 = 0; img->Height2 = 0; img->Depth2 = 0; @@ -636,6 +647,7 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target, img->Width = width; img->Height = height; img->Depth = depth; + img->RowStride = img->Width; img->WidthLog2 = logbase2(width - 2 * border); if (height == 1) /* 1-D texture */ img->HeightLog2 = 0; @@ -650,18 +662,7 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target, img->Depth2 = 1 << img->DepthLog2; img->MaxLog2 = MAX2(img->WidthLog2, img->HeightLog2); img->IsCompressed = is_compressed_format(ctx, internalFormat); - /* Compute Width/Height/DepthScale for mipmap lod computation */ - if (target == GL_TEXTURE_RECTANGLE_NV) { - /* scale = 1.0 since texture coords directly map to texels */ - img->WidthScale = 1.0; - img->HeightScale = 1.0; - img->DepthScale = 1.0; - } - else { - img->WidthScale = (GLfloat) img->Width; - img->HeightScale = (GLfloat) img->Height; - img->DepthScale = (GLfloat) img->Depth; - }} +} @@ -904,6 +905,41 @@ texture_error_check( GLcontext *ctx, GLenum target, return GL_TRUE; } + if (format == GL_YCBCR_MESA || iformat == GL_YCBCR_MESA) { + ASSERT(ctx->Extensions.MESA_ycbcr_texture); + if (format != GL_YCBCR_MESA || + iformat != GL_YCBCR_MESA || + (type != GL_UNSIGNED_SHORT_8_8_MESA && + type != GL_UNSIGNED_SHORT_8_8_REV_MESA)) { + if (!isProxy) { + char message[100]; + sprintf(message, + "glTexImage%d(format/type/internalFormat YCBCR mismatch)", + dimensions); + _mesa_error(ctx, GL_INVALID_ENUM, message); + } + return GL_TRUE; /* error */ + } + if (target != GL_TEXTURE_2D && + target != GL_PROXY_TEXTURE_2D && + target != GL_TEXTURE_RECTANGLE_NV && + target != GL_PROXY_TEXTURE_RECTANGLE_NV) { + if (!isProxy) + _mesa_error(ctx, GL_INVALID_ENUM, "glTexImage(target)"); + return GL_TRUE; + } + if (border != 0) { + if (!isProxy) { + char message[100]; + sprintf(message, + "glTexImage%d(format=GL_YCBCR_MESA and border=%d)", + dimensions, border); + _mesa_error(ctx, GL_INVALID_VALUE, message); + } + return GL_TRUE; + } + } + /* if we get here, the parameters are OK */ return GL_FALSE; } @@ -929,36 +965,40 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions, GLboolean compressed; if (dimensions == 1) { - if (target != GL_TEXTURE_1D) { + if (target == GL_TEXTURE_1D) { + maxLevels = ctx->Const.MaxTextureLevels; + } + else { _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(target)" ); return GL_TRUE; } - maxLevels = ctx->Const.MaxTextureLevels; } else if (dimensions == 2) { - if (ctx->Extensions.ARB_texture_cube_map) { - if ((target < GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB || - target > GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) && - target != GL_TEXTURE_2D) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); - return GL_TRUE; - } + if (ctx->Extensions.ARB_texture_cube_map && + target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && + target <=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) { + maxLevels = ctx->Const.MaxCubeTextureLevels; } - else if (target != GL_TEXTURE_2D) { + else if (ctx->Extensions.NV_texture_rectangle && + target == GL_TEXTURE_RECTANGLE_NV) { + maxLevels = 1; + } + else if (target == GL_TEXTURE_2D) { + maxLevels = ctx->Const.MaxTextureLevels; + } + else { _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); return GL_TRUE; } - if (target == GL_PROXY_TEXTURE_2D && target == GL_TEXTURE_2D) - maxLevels = ctx->Const.MaxTextureLevels; - else - maxLevels = ctx->Const.MaxCubeTextureLevels; } else if (dimensions == 3) { - if (target != GL_TEXTURE_3D) { + if (target == GL_TEXTURE_3D) { + maxLevels = ctx->Const.Max3DTextureLevels; + } + else { _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" ); return GL_TRUE; } - maxLevels = ctx->Const.Max3DTextureLevels; } else { _mesa_problem( ctx, "bad dims in texture_error_check" ); @@ -996,7 +1036,7 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions, destTex = _mesa_select_tex_image(ctx, texUnit, target, level); if (!destTex) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glTexSubImage2D"); + _mesa_error(ctx, GL_INVALID_OPERATION, "glTexSubImage1/2/3D"); return GL_TRUE; } @@ -1303,6 +1343,11 @@ copytexsubimage_error_check( GLcontext *ctx, GLuint dimensions, } } + if (teximage->IntFormat == GL_YCBCR_MESA) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glCopyTexSubImage2D"); + return GL_TRUE; + } + /* if we get here, the parameters are OK */ return GL_FALSE; } @@ -1315,7 +1360,7 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, { const struct gl_texture_unit *texUnit; const struct gl_texture_object *texObj; - struct gl_texture_image *texImage; + const struct gl_texture_image *texImage; GLint maxLevels = 0; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -1366,6 +1411,10 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexImage(format)"); } + if (!ctx->Extensions.MESA_ycbcr_texture && format == GL_YCBCR_MESA) { + _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexImage(format)"); + } + /* XXX what if format/type doesn't match texture format/type? */ if (!pixels) @@ -1390,7 +1439,7 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, for (img = 0; img < depth; img++) { for (row = 0; row < height; row++) { /* compute destination address in client memory */ - GLvoid *dest = _mesa_image_address( &ctx->Unpack, pixels, + GLvoid *dest = _mesa_image_address( &ctx->Pack, pixels, width, height, format, type, img, row, 0); assert(dest); @@ -1416,6 +1465,23 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, _mesa_pack_depth_span(ctx, width, dest, type, depthRow, &ctx->Pack); } + else if (format == GL_YCBCR_MESA) { + const GLint rowstride = texImage->RowStride; + /* No pixel transfer */ + MEMCPY(dest, (const GLushort *) texImage->Data + row * rowstride, + width * sizeof(GLushort)); + /* check for byte swapping */ + if ((texImage->TexFormat->MesaFormat == MESA_FORMAT_YCBCR + && type == GL_UNSIGNED_SHORT_8_8_REV_MESA) || + (texImage->TexFormat->MesaFormat == MESA_FORMAT_YCBCR_REV + && type == GL_UNSIGNED_SHORT_8_8_MESA)) { + if (!ctx->Pack.SwapBytes) + _mesa_swap2((GLushort *) dest, width); + } + else if (ctx->Pack.SwapBytes) { + _mesa_swap2((GLushort *) dest, width); + } + } else { /* general case: convert row to RGBA format */ GLchan rgba[MAX_WIDTH][4]; @@ -1473,11 +1539,11 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { /* free the old texture data */ MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; clear_teximage_fields(texImage); /* not really needed, but helpful */ _mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, 1, 1, border, internalFormat); @@ -1600,11 +1666,11 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { /* free the old texture data */ MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; clear_teximage_fields(texImage); /* not really needed, but helpful */ _mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, postConvHeight, @@ -1725,10 +1791,10 @@ _mesa_TexImage3D( GLenum target, GLint level, GLenum internalFormat, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; clear_teximage_fields(texImage); /* not really needed, but helpful */ _mesa_init_teximage_fields(ctx, target, texImage, width, height, depth, border, internalFormat); @@ -1994,11 +2060,11 @@ _mesa_CopyTexImage1D( GLenum target, GLint level, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { /* free the old texture data */ MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; clear_teximage_fields(texImage); /* not really needed, but helpful */ _mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, 1, 1, @@ -2058,11 +2124,11 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { /* free the old texture data */ MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; clear_teximage_fields(texImage); /* not really needed, but helpful */ _mesa_init_teximage_fields(ctx, target, texImage, @@ -2245,10 +2311,10 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, border, internalFormat); @@ -2346,10 +2412,10 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, border, internalFormat); @@ -2444,10 +2510,10 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level, return; } } - else if (texImage->Data) { + else if (texImage->Data && !texImage->IsClientData) { MESA_PBUFFER_FREE(texImage->Data); - texImage->Data = NULL; } + texImage->Data = NULL; _mesa_init_teximage_fields(ctx, target, texImage, width, height, depth, border, internalFormat); diff --git a/xc/extras/Mesa/src/texobj.c b/xc/extras/Mesa/src/texobj.c index 1b0e583a2..68eb1d8a0 100644 --- a/xc/extras/Mesa/src/texobj.c +++ b/xc/extras/Mesa/src/texobj.c @@ -555,27 +555,38 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *texName) if (delObj == unit->Current1D) { unit->Current1D = ctx->Shared->Default1D; ctx->Shared->Default1D->RefCount++; + delObj->RefCount--; if (delObj == unit->_Current) unit->_Current = unit->Current1D; } else if (delObj == unit->Current2D) { unit->Current2D = ctx->Shared->Default2D; ctx->Shared->Default2D->RefCount++; + delObj->RefCount--; if (delObj == unit->_Current) unit->_Current = unit->Current2D; } else if (delObj == unit->Current3D) { unit->Current3D = ctx->Shared->Default3D; ctx->Shared->Default3D->RefCount++; + delObj->RefCount--; if (delObj == unit->_Current) unit->_Current = unit->Current3D; } else if (delObj == unit->CurrentCubeMap) { unit->CurrentCubeMap = ctx->Shared->DefaultCubeMap; ctx->Shared->DefaultCubeMap->RefCount++; + delObj->RefCount--; if (delObj == unit->_Current) unit->_Current = unit->CurrentCubeMap; } + else if (delObj == unit->CurrentRect) { + unit->CurrentRect = ctx->Shared->DefaultRect; + ctx->Shared->DefaultRect->RefCount++; + delObj->RefCount--; + if (delObj == unit->_Current) + unit->_Current = unit->CurrentRect; + } } ctx->NewState |= _NEW_TEXTURE; diff --git a/xc/extras/Mesa/src/texstate.c b/xc/extras/Mesa/src/texstate.c index eae7db349..3f3aeae7d 100644 --- a/xc/extras/Mesa/src/texstate.c +++ b/xc/extras/Mesa/src/texstate.c @@ -380,6 +380,7 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param ) return; FLUSH_VERTICES(ctx, _NEW_TEXTURE); texUnit->CombineOperandRGB[2] = operand; + break; default: TE_ERROR(GL_INVALID_ENUM, "glTexEnv(param=%s)", operand); return; @@ -2233,7 +2234,8 @@ _mesa_ActiveTextureARB( GLenum target ) fprintf(stderr, "glActiveTexture %s\n", _mesa_lookup_enum_by_nr(target)); - if (texUnit > ctx->Const.MaxTextureUnits) { + /* Cater for texture unit 0 is first, therefore use >= */ + if (texUnit >= ctx->Const.MaxTextureUnits) { _mesa_error(ctx, GL_INVALID_ENUM, "glActiveTextureARB(target)"); return; } diff --git a/xc/extras/Mesa/src/texstore.c b/xc/extras/Mesa/src/texstore.c index 2285c4663..a0a50123c 100644 --- a/xc/extras/Mesa/src/texstore.c +++ b/xc/extras/Mesa/src/texstore.c @@ -1,4 +1,3 @@ -/* $Id: texstore.c,v 1.1.1.1 2002/10/22 13:05:22 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -115,6 +114,8 @@ components_in_intformat( GLint format ) case GL_DEPTH_COMPONENT24_SGIX: case GL_DEPTH_COMPONENT32_SGIX: return 1; + case GL_YCBCR_MESA: + return 2; /* Y + (Cb or Cr) */ default: return -1; /* error */ } @@ -255,6 +256,26 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions, dest += dstImageStride; } } + else if (texDestFormat == GL_YCBCR_MESA) { + /* YCbCr texture */ + GLint img, row; + GLushort *dest = (GLushort *) texDestAddr + + dstZoffset * (dstImageStride / sizeof(GLushort)) + + dstYoffset * (dstRowStride / sizeof(GLushort)) + + dstXoffset * texComponents; + ASSERT(ctx->Extensions.MESA_ycbcr_texture); + for (img = 0; img < srcDepth; img++) { + GLushort *destRow = dest; + for (row = 0; row < srcHeight; row++) { + const GLvoid *srcRow = _mesa_image_address(srcPacking, + srcAddr, srcWidth, srcHeight, + srcFormat, srcType, img, row, 0); + MEMCPY(destRow, srcRow, srcWidth * sizeof(GLushort)); + destRow += (dstRowStride / sizeof(GLushort)); + } + dest += dstImageStride / sizeof(GLushort); + } + } else if (texDestFormat == GL_DEPTH_COMPONENT) { /* Depth texture (shadow maps) */ GLint img, row; @@ -666,7 +687,7 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, + _mesa_generate_mipmap(ctx, target, &ctx->Texture.Unit[ctx->Texture.CurrentUnit], texObj); } @@ -739,7 +760,7 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, + _mesa_generate_mipmap(ctx, target, &ctx->Texture.Unit[ctx->Texture.CurrentUnit], texObj); } @@ -805,7 +826,7 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, + _mesa_generate_mipmap(ctx, target, &ctx->Texture.Unit[ctx->Texture.CurrentUnit], texObj); } @@ -837,7 +858,8 @@ _mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, &ctx->Texture.Unit[ctx->Texture.CurrentUnit], + _mesa_generate_mipmap(ctx, target, + &ctx->Texture.Unit[ctx->Texture.CurrentUnit], texObj); } } @@ -866,7 +888,8 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level, /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, &ctx->Texture.Unit[ctx->Texture.CurrentUnit], + _mesa_generate_mipmap(ctx, target, + &ctx->Texture.Unit[ctx->Texture.CurrentUnit], texObj); } } @@ -895,7 +918,8 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level, format, type, pixels, packing); /* GL_SGIS_generate_mipmap */ if (level == texObj->BaseLevel && texObj->GenerateMipmap) { - _mesa_generate_mipmap(ctx, &ctx->Texture.Unit[ctx->Texture.CurrentUnit], + _mesa_generate_mipmap(ctx, target, + &ctx->Texture.Unit[ctx->Texture.CurrentUnit], texObj); } } @@ -1603,22 +1627,10 @@ make_3d_mipmap(const struct gl_texture_format *format, GLint border, * Stop at texObj's MaxLevel or when we get to the 1x1 texture. */ void -_mesa_generate_mipmap(GLcontext *ctx, +_mesa_generate_mipmap(GLcontext *ctx, GLenum target, const struct gl_texture_unit *texUnit, struct gl_texture_object *texObj) { - const GLenum targets1D[] = { GL_TEXTURE_1D, 0 }; - const GLenum targets2D[] = { GL_TEXTURE_2D, 0 }; - const GLenum targets3D[] = { GL_TEXTURE_3D, 0 }; - const GLenum targetsCube[] = { GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, - GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, - GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, - GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, - GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, - GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, - 0 }; - const GLenum targetsRect[] = { GL_TEXTURE_RECTANGLE_NV, 0 }; - const GLenum *targets; GLint level; GLint maxLevels = 0; @@ -1627,23 +1639,18 @@ _mesa_generate_mipmap(GLcontext *ctx, switch (texObj->Target) { case GL_TEXTURE_1D: - targets = targets1D; maxLevels = ctx->Const.MaxTextureLevels; break; case GL_TEXTURE_2D: - targets = targets2D; maxLevels = ctx->Const.MaxTextureLevels; break; case GL_TEXTURE_3D: - targets = targets3D; maxLevels = ctx->Const.Max3DTextureLevels; break; case GL_TEXTURE_CUBE_MAP_ARB: - targets = targetsCube; maxLevels = ctx->Const.MaxCubeTextureLevels; break; case GL_TEXTURE_RECTANGLE_NV: - targets = targetsRect; maxLevels = 1; break; default: @@ -1660,7 +1667,6 @@ _mesa_generate_mipmap(GLcontext *ctx, GLint srcWidth, srcHeight, srcDepth; GLint dstWidth, dstHeight, dstDepth; GLint border, bytesPerTexel; - GLint t; srcImage = texObj->Image[level]; ASSERT(srcImage); @@ -1697,70 +1703,73 @@ _mesa_generate_mipmap(GLcontext *ctx, return; } - /* Need this loop just because of cubemaps */ - for (t = 0; targets[t]; t++) { - ASSERT(t < 6); - - dstImage = _mesa_select_tex_image(ctx, texUnit, targets[t], level+1); + /* get dest gl_texture_image */ + dstImage = _mesa_select_tex_image(ctx, texUnit, target, level+1); + if (!dstImage) { + dstImage = _mesa_alloc_texture_image(); if (!dstImage) { - dstImage = _mesa_alloc_texture_image(); - if (!dstImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps"); - return; - } - _mesa_set_tex_image(texObj, targets[t], level + 1, dstImage); - } - - /* Free old image data */ - if (dstImage->Data) - MESA_PBUFFER_FREE(dstImage->Data); - - /* initialize new image */ - _mesa_init_teximage_fields(ctx, t, dstImage, dstWidth, dstHeight, - dstDepth, border, srcImage->Format); - dstImage->DriverData = NULL; - dstImage->TexFormat = srcImage->TexFormat; - dstImage->FetchTexel = srcImage->FetchTexel; - ASSERT(dstImage->TexFormat); - ASSERT(dstImage->FetchTexel); - - ASSERT(dstWidth * dstHeight * dstDepth * bytesPerTexel > 0); - - /* alloc new image buffer */ - dstImage->Data = MESA_PBUFFER_ALLOC(dstWidth * dstHeight * dstDepth - * bytesPerTexel); - if (!dstImage->Data) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps"); return; } + _mesa_set_tex_image(texObj, target, level + 1, dstImage); + } - /* - * We use simple 2x2 averaging to compute the next mipmap level. - */ - switch (texObj->Target) { - case GL_TEXTURE_1D: - make_1d_mipmap(srcImage->TexFormat, border, - srcWidth, (const GLubyte *) srcImage->Data, - dstWidth, (GLubyte *) dstImage->Data); - break; - case GL_TEXTURE_2D: - case GL_TEXTURE_CUBE_MAP_ARB: - make_2d_mipmap(srcImage->TexFormat, border, - srcWidth, srcHeight, (const GLubyte *) srcImage->Data, - dstWidth, dstHeight, (GLubyte *) dstImage->Data); - break; - case GL_TEXTURE_3D: - make_3d_mipmap(srcImage->TexFormat, border, - srcWidth, srcHeight, srcDepth, (const GLubyte *) srcImage->Data, - dstWidth, dstHeight, dstDepth, (GLubyte *) dstImage->Data); - break; - case GL_TEXTURE_RECTANGLE_NV: - /* no mipmaps, do nothing */ - break; - default: - _mesa_problem(ctx, "bad dimensions in _mesa_generate_mipmaps"); - return; - } - } /* loop over tex image targets */ + /* Free old image data */ + if (dstImage->Data) + MESA_PBUFFER_FREE(dstImage->Data); + + /* initialize new image */ + _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight, + dstDepth, border, srcImage->Format); + dstImage->DriverData = NULL; + dstImage->TexFormat = srcImage->TexFormat; + dstImage->FetchTexel = srcImage->FetchTexel; + ASSERT(dstImage->TexFormat); + ASSERT(dstImage->FetchTexel); + + ASSERT(dstWidth * dstHeight * dstDepth * bytesPerTexel > 0); + + /* alloc new image buffer */ + dstImage->Data = MESA_PBUFFER_ALLOC(dstWidth * dstHeight * dstDepth + * bytesPerTexel); + if (!dstImage->Data) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps"); + return; + } + + /* + * We use simple 2x2 averaging to compute the next mipmap level. + */ + switch (target) { + case GL_TEXTURE_1D: + make_1d_mipmap(srcImage->TexFormat, border, + srcWidth, (const GLubyte *) srcImage->Data, + dstWidth, (GLubyte *) dstImage->Data); + break; + case GL_TEXTURE_2D: + case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB: + make_2d_mipmap(srcImage->TexFormat, border, + srcWidth, srcHeight, (const GLubyte *) srcImage->Data, + dstWidth, dstHeight, (GLubyte *) dstImage->Data); + break; + case GL_TEXTURE_3D: + make_3d_mipmap(srcImage->TexFormat, border, + srcWidth, srcHeight, srcDepth, + (const GLubyte *) srcImage->Data, + dstWidth, dstHeight, dstDepth, + (GLubyte *) dstImage->Data); + break; + case GL_TEXTURE_RECTANGLE_NV: + /* no mipmaps, do nothing */ + break; + default: + _mesa_problem(ctx, "bad dimensions in _mesa_generate_mipmaps"); + return; + } } /* loop over tex levels */ } diff --git a/xc/extras/Mesa/src/texstore.h b/xc/extras/Mesa/src/texstore.h index 53c1a2807..553732b34 100644 --- a/xc/extras/Mesa/src/texstore.h +++ b/xc/extras/Mesa/src/texstore.h @@ -1,10 +1,9 @@ -/* $Id: texstore.h,v 1.1.1.1 2002/10/22 13:05:22 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 4.0.4 * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -149,7 +148,7 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level, extern void -_mesa_generate_mipmap(GLcontext *ctx, +_mesa_generate_mipmap(GLcontext *ctx, GLenum target, const struct gl_texture_unit *texUnit, struct gl_texture_object *texObj); diff --git a/xc/extras/Mesa/src/texutil.c b/xc/extras/Mesa/src/texutil.c index bf9285a7e..38f4f7fae 100644 --- a/xc/extras/Mesa/src/texutil.c +++ b/xc/extras/Mesa/src/texutil.c @@ -26,6 +26,14 @@ * Gareth Hughes <gareth@valinux.com> */ +/* + * Description: + * Functions for texture image conversion. This takes care of converting + * typical GL_RGBA/GLubyte textures into hardware-specific formats. + * We can handle non-standard row strides and pixel unpacking parameters. + */ + + #ifdef PC_HEADER #include "all.h" #else @@ -50,7 +58,7 @@ #endif -struct gl_texture_convert { +struct convert_info { GLint xoffset, yoffset, zoffset; /* Subimage offset */ GLint width, height, depth; /* Subimage region */ @@ -66,15 +74,16 @@ struct gl_texture_convert { GLint index; }; -typedef GLboolean (*convert_func)( struct gl_texture_convert *convert ); +typedef GLboolean (*convert_func)( const struct convert_info *convert ); +/* bitvalues for convert->index */ #define CONVERT_STRIDE_BIT 0x1 #define CONVERT_UNPACKING_BIT 0x2 /* ============================================================= - * RGBA8888 textures: + * Convert to RGBA8888 textures: */ #define DST_TYPE GLuint @@ -117,7 +126,7 @@ typedef GLboolean (*convert_func)( struct gl_texture_convert *convert ); #define CONVERT_RGBA8888( name ) \ static GLboolean \ -convert_##name##_rgba8888( struct gl_texture_convert *convert ) \ +convert_##name##_rgba8888( const struct convert_info *convert ) \ { \ convert_func *tab; \ GLint index = convert->index; \ @@ -153,7 +162,7 @@ CONVERT_RGBA8888( texsubimage3d ) /* ============================================================= - * ARGB8888 textures: + * Convert to ARGB8888 textures: */ #define DST_TYPE GLuint @@ -196,7 +205,7 @@ CONVERT_RGBA8888( texsubimage3d ) #define CONVERT_ARGB8888( name ) \ static GLboolean \ -convert_##name##_argb8888( struct gl_texture_convert *convert ) \ +convert_##name##_argb8888( const struct convert_info *convert ) \ { \ convert_func *tab; \ GLint index = convert->index; \ @@ -231,11 +240,11 @@ CONVERT_ARGB8888( texsubimage3d ) /* ============================================================= - * RGB888 textures: + * Convert to RGB888 textures: */ static GLboolean -convert_texsubimage2d_rgb888( struct gl_texture_convert *convert ) +convert_texsubimage2d_rgb888( const struct convert_info *convert ) { /* This is a placeholder for now... */ @@ -243,7 +252,7 @@ convert_texsubimage2d_rgb888( struct gl_texture_convert *convert ) } static GLboolean -convert_texsubimage3d_rgb888( struct gl_texture_convert *convert ) +convert_texsubimage3d_rgb888( const struct convert_info *convert ) { /* This is a placeholder for now... */ @@ -253,7 +262,7 @@ convert_texsubimage3d_rgb888( struct gl_texture_convert *convert ) /* ============================================================= - * RGB565 textures: + * Convert to RGB565 textures: */ #define DST_TYPE GLushort @@ -300,7 +309,7 @@ convert_texsubimage3d_rgb888( struct gl_texture_convert *convert ) #define CONVERT_RGB565( name ) \ static GLboolean \ -convert_##name##_rgb565( struct gl_texture_convert *convert ) \ +convert_##name##_rgb565( const struct convert_info *convert ) \ { \ convert_func *tab; \ GLint index = convert->index; \ @@ -335,7 +344,7 @@ CONVERT_RGB565( texsubimage3d ) /* ============================================================= - * ARGB4444 textures: + * Convert to ARGB4444 textures: */ #define DST_TYPE GLushort @@ -368,7 +377,7 @@ CONVERT_RGB565( texsubimage3d ) #define CONVERT_ARGB4444( name ) \ static GLboolean \ -convert_##name##_argb4444( struct gl_texture_convert *convert ) \ +convert_##name##_argb4444( const struct convert_info *convert ) \ { \ convert_func *tab; \ GLint index = convert->index; \ @@ -398,7 +407,7 @@ CONVERT_ARGB4444( texsubimage3d ) /* ============================================================= - * ARGB1555 textures: + * Convert to ARGB1555 textures: */ #define DST_TYPE GLushort @@ -462,7 +471,7 @@ CONVERT_ARGB4444( texsubimage3d ) #define CONVERT_ARGB1555( name ) \ static GLboolean \ -convert_##name##_argb1555( struct gl_texture_convert *convert ) \ +convert_##name##_argb1555( const struct convert_info *convert ) \ { \ convert_func *tab; \ GLint index = convert->index; \ @@ -497,7 +506,7 @@ CONVERT_ARGB1555( texsubimage3d ) /* ============================================================= - * AL88 textures: + * Conver to AL88 textures: */ #define DST_TYPE GLushort @@ -519,7 +528,7 @@ CONVERT_ARGB1555( texsubimage3d ) dst = PACK_COLOR_88_LE( src[0], 0x00 ) #define CONVERT_TEXEL_DWORD( dst, src ) \ - dst = APPEND16( PACK_COLOR_88_LE( src[0], 0x00 ), \ + dst = APPEND16( PACK_COLOR_88_LE( src[0], 0x00 ), \ PACK_COLOR_88_LE( src[1], 0x00 ) ) #define SRC_TEXEL_BYTES 1 @@ -558,7 +567,7 @@ CONVERT_ARGB1555( texsubimage3d ) #define CONVERT_AL88( name ) \ static GLboolean \ -convert_##name##_al88( struct gl_texture_convert *convert ) \ +convert_##name##_al88( const struct convert_info *convert ) \ { \ convert_func *tab; \ GLint index = convert->index; \ @@ -598,11 +607,11 @@ CONVERT_AL88( texsubimage3d ) /* ============================================================= - * RGB332 textures: + * Convert to RGB332 textures: */ static GLboolean -convert_texsubimage2d_rgb332( struct gl_texture_convert *convert ) +convert_texsubimage2d_rgb332( const struct convert_info *convert ) { /* This is a placeholder for now... */ @@ -610,7 +619,7 @@ convert_texsubimage2d_rgb332( struct gl_texture_convert *convert ) } static GLboolean -convert_texsubimage3d_rgb332( struct gl_texture_convert *convert ) +convert_texsubimage3d_rgb332( const struct convert_info *convert ) { /* This is a placeholder for now... */ @@ -620,7 +629,7 @@ convert_texsubimage3d_rgb332( struct gl_texture_convert *convert ) /* ============================================================= - * CI8 (and all other single-byte texel) textures: + * Convert to CI8 (and all other single-byte texel) textures: */ #define DST_TYPE GLubyte @@ -638,7 +647,7 @@ convert_texsubimage3d_rgb332( struct gl_texture_convert *convert ) #define CONVERT_CI8( name ) \ static GLboolean \ -convert_##name##_ci8( struct gl_texture_convert *convert ) \ +convert_##name##_ci8( const struct convert_info *convert ) \ { \ convert_func *tab; \ GLint index = convert->index; \ @@ -664,12 +673,88 @@ CONVERT_CI8( texsubimage2d ) CONVERT_CI8( texsubimage3d ) +/* ============================================================= + * convert to YCBCR textures: + */ + +#define DST_TYPE GLushort +#define DST_TEXELS_PER_DWORD 2 + +#define CONVERT_TEXEL( dst, src ) \ + dst = (src[0] << 8) | src[1]; + +#define CONVERT_DIRECT + +#define SRC_TEXEL_BYTES 2 + +#define TAG(x) x##_ycbcr_direct +#include "texutil_tmp.h" + + +#define CONVERT_YCBCR( name ) \ +static GLboolean \ +convert_##name##_ycbcr( const struct convert_info *convert ) \ +{ \ + convert_func *tab; \ + GLint index = convert->index; \ + \ + if (convert->format != GL_YCBCR_MESA) { \ + /* Can't handle this source format/type combination */ \ + return GL_FALSE; \ + } \ + tab = name##_tab_ycbcr_direct; \ + \ + return tab[index]( convert ); \ +} + +CONVERT_YCBCR( texsubimage2d ) +CONVERT_YCBCR( texsubimage3d ) + + +/* ============================================================= + * convert to YCBCR_REV textures: + */ + +#define DST_TYPE GLushort +#define DST_TEXELS_PER_DWORD 2 + +#define CONVERT_TEXEL( dst, src ) \ + dst = (src[1] << 8) | src[0]; + +#define CONVERT_DIRECT + +#define SRC_TEXEL_BYTES 2 + +#define TAG(x) x##_ycbcr_rev_direct +#include "texutil_tmp.h" + + +#define CONVERT_YCBCR_REV( name ) \ +static GLboolean \ +convert_##name##_ycbcr_rev( const struct convert_info *convert ) \ +{ \ + convert_func *tab; \ + GLint index = convert->index; \ + \ + if (convert->format != GL_YCBCR_MESA) { \ + /* Can't handle this source format/type combination */ \ + return GL_FALSE; \ + } \ + tab = name##_tab_ycbcr_rev_direct; \ + \ + return tab[index]( convert ); \ +} + +CONVERT_YCBCR_REV( texsubimage2d ) +CONVERT_YCBCR_REV( texsubimage3d ) + + /* ============================================================= - * Global entry points + * Tables of texture conversion/packing functions. */ -static convert_func gl_convert_texsubimage2d_tab[] = { +static convert_func convert_texsubimage2d_table[] = { convert_texsubimage2d_rgba8888, convert_texsubimage2d_argb8888, convert_texsubimage2d_rgb888, @@ -682,9 +767,11 @@ static convert_func gl_convert_texsubimage2d_tab[] = { convert_texsubimage2d_ci8, convert_texsubimage2d_ci8, convert_texsubimage2d_ci8, + convert_texsubimage2d_ycbcr, + convert_texsubimage2d_ycbcr_rev, }; -static convert_func gl_convert_texsubimage3d_tab[] = { +static convert_func convert_texsubimage3d_table[] = { convert_texsubimage3d_rgba8888, convert_texsubimage3d_argb8888, convert_texsubimage3d_rgb888, @@ -697,6 +784,8 @@ static convert_func gl_convert_texsubimage3d_tab[] = { convert_texsubimage3d_ci8, convert_texsubimage3d_ci8, convert_texsubimage3d_ci8, + convert_texsubimage3d_ycbcr, + convert_texsubimage3d_ycbcr_rev, }; @@ -727,21 +816,21 @@ convert_needs_unpacking( const struct gl_pixelstore_attrib *unpacking, GLboolean -_mesa_convert_texsubimage1d( GLint mesaFormat, +_mesa_convert_texsubimage1d( GLint mesaFormat, /* dest */ GLint xoffset, GLint width, - GLenum format, GLenum type, + GLenum format, GLenum type, /* source */ const struct gl_pixelstore_attrib *unpacking, const GLvoid *srcImage, GLvoid *dstImage ) { - struct gl_texture_convert convert; + struct convert_info convert; ASSERT( unpacking ); ASSERT( srcImage ); ASSERT( dstImage ); ASSERT( mesaFormat >= MESA_FORMAT_RGBA8888 ); - ASSERT( mesaFormat <= MESA_FORMAT_CI8 ); + ASSERT( mesaFormat <= MESA_FORMAT_YCBCR_REV ); /* Make it easier to pass all the parameters around. */ @@ -760,7 +849,9 @@ _mesa_convert_texsubimage1d( GLint mesaFormat, if ( convert_needs_unpacking( unpacking, format, type ) ) convert.index |= CONVERT_UNPACKING_BIT; - return gl_convert_texsubimage2d_tab[mesaFormat]( &convert ); + ASSERT(convert.index < 4); + + return convert_texsubimage2d_table[mesaFormat]( &convert ); } @@ -790,22 +881,22 @@ _mesa_convert_texsubimage1d( GLint mesaFormat, * destImage - pointer to dest image */ GLboolean -_mesa_convert_texsubimage2d( GLint mesaFormat, +_mesa_convert_texsubimage2d( GLint mesaFormat, /* dest */ GLint xoffset, GLint yoffset, GLint width, GLint height, GLint destImageWidth, - GLenum format, GLenum type, + GLenum format, GLenum type, /* source */ const struct gl_pixelstore_attrib *unpacking, const GLvoid *srcImage, GLvoid *dstImage ) { - struct gl_texture_convert convert; + struct convert_info convert; ASSERT( unpacking ); ASSERT( srcImage ); ASSERT( dstImage ); ASSERT( mesaFormat >= MESA_FORMAT_RGBA8888 ); - ASSERT( mesaFormat <= MESA_FORMAT_CI8 ); + ASSERT( mesaFormat <= MESA_FORMAT_YCBCR_REV ); /* Make it easier to pass all the parameters around. */ @@ -814,8 +905,8 @@ _mesa_convert_texsubimage2d( GLint mesaFormat, convert.width = width; convert.height = height; convert.dstImageWidth = destImageWidth; - convert.format = format; - convert.type = type; + convert.format = format; /* src */ + convert.type = type; /* src */ convert.unpacking = unpacking; convert.srcImage = srcImage; convert.dstImage = dstImage; @@ -828,26 +919,31 @@ _mesa_convert_texsubimage2d( GLint mesaFormat, if ( width != destImageWidth ) convert.index |= CONVERT_STRIDE_BIT; - return gl_convert_texsubimage2d_tab[mesaFormat]( &convert ); + ASSERT(convert.index < 4); + + ASSERT(mesaFormat < sizeof(convert_texsubimage2d_table) / + sizeof(convert_texsubimage2d_table[0])); + + return convert_texsubimage2d_table[mesaFormat]( &convert ); } GLboolean -_mesa_convert_texsubimage3d( GLint mesaFormat, +_mesa_convert_texsubimage3d( GLint mesaFormat, /* dest */ GLint xoffset, GLint yoffset, GLint zoffset, GLint width, GLint height, GLint depth, GLint dstImageWidth, GLint dstImageHeight, - GLenum format, GLenum type, + GLenum format, GLenum type, /* source */ const struct gl_pixelstore_attrib *unpacking, const GLvoid *srcImage, GLvoid *dstImage ) { - struct gl_texture_convert convert; + struct convert_info convert; ASSERT( unpacking ); ASSERT( srcImage ); ASSERT( dstImage ); ASSERT( mesaFormat >= MESA_FORMAT_RGBA8888 ); - ASSERT( mesaFormat <= MESA_FORMAT_CI8 ); + ASSERT( mesaFormat <= MESA_FORMAT_YCBCR_REV ); /* Make it easier to pass all the parameters around. */ @@ -873,7 +969,9 @@ _mesa_convert_texsubimage3d( GLint mesaFormat, if ( width != dstImageWidth || height != dstImageHeight ) convert.index |= CONVERT_STRIDE_BIT; - return gl_convert_texsubimage3d_tab[mesaFormat]( &convert ); + ASSERT(convert.index < 4); + + return convert_texsubimage3d_table[mesaFormat]( &convert ); } diff --git a/xc/extras/Mesa/src/texutil_tmp.h b/xc/extras/Mesa/src/texutil_tmp.h index 34fbfd7cf..8669a2da8 100644 --- a/xc/extras/Mesa/src/texutil_tmp.h +++ b/xc/extras/Mesa/src/texutil_tmp.h @@ -1,8 +1,6 @@ -/* $Id: texutil_tmp.h,v 1.1.1.3 2002/10/22 13:05:37 alanh Exp $ */ - /* * Mesa 3-D graphics library - * Version: 4.0.2 + * Version: 4.0.4 * * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * @@ -28,7 +26,23 @@ */ /* - * NOTE: All 3D teximage code is untested and most definitely broken... + * For 2D and 3D texture images, we generate functions for + * - conversion without pixel unpacking and standard stride + * - conversion without pixel unpacking and non-standard stride + * - conversion with pixel unpacking and standard stride + * - conversion with pixel unpacking and non-standard stride + * + * + * Macros which need to be defined before including this file: + * TAG(x) - the function name wrapper + * DST_TYPE - the destination texel datatype (GLuint, GLushort, etc) + * DST_TEXELS_PER_DWORD - number of dest texels that'll fit in 4 bytes + * CONVERT_TEXEL - code to convert from source to dest texel + * CONVER_TEXEL_DWORD - if multiple texels fit in 4 bytes, this macros + * will convert/store multiple texels at once + * CONVERT_DIRECT - if defined, just memcpy texels from src to dest + * SRC_TEXEL_BYTES - bytes per source texel + * PRESERVE_DST_TYPE - if defined, don't undefined these macros at end */ @@ -43,7 +57,7 @@ * PRE: No pixelstore attribs, width == dstImageWidth. */ static GLboolean -TAG(texsubimage2d)( struct gl_texture_convert *convert ) +TAG(texsubimage2d)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *)convert->srcImage; GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage + @@ -79,7 +93,7 @@ TAG(texsubimage2d)( struct gl_texture_convert *convert ) /* PRE: As above, height == dstImageHeight also. */ static GLboolean -TAG(texsubimage3d)( struct gl_texture_convert *convert ) +TAG(texsubimage3d)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *)convert->srcImage; GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage + @@ -118,7 +132,7 @@ TAG(texsubimage3d)( struct gl_texture_convert *convert ) * PRE: No pixelstore attribs, width != dstImageWidth. */ static GLboolean -TAG(texsubimage2d_stride)( struct gl_texture_convert *convert ) +TAG(texsubimage2d_stride)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *)convert->srcImage; DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage + @@ -151,7 +165,7 @@ TAG(texsubimage2d_stride)( struct gl_texture_convert *convert ) /* PRE: As above, or height != dstImageHeight also. */ static GLboolean -TAG(texsubimage3d_stride)( struct gl_texture_convert *convert ) +TAG(texsubimage3d_stride)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *)convert->srcImage; DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage + @@ -191,7 +205,7 @@ TAG(texsubimage3d_stride)( struct gl_texture_convert *convert ) * PRE: Require pixelstore attribs, width == dstImageWidth. */ static GLboolean -TAG(texsubimage2d_unpack)( struct gl_texture_convert *convert ) +TAG(texsubimage2d_unpack)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *) _mesa_image_address( convert->unpacking, convert->srcImage, @@ -249,7 +263,7 @@ TAG(texsubimage2d_unpack)( struct gl_texture_convert *convert ) /* PRE: as above, height == dstImageHeight also. */ static GLboolean -TAG(texsubimage3d_unpack)( struct gl_texture_convert *convert ) +TAG(texsubimage3d_unpack)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *) _mesa_image_address( convert->unpacking, convert->srcImage, @@ -324,7 +338,7 @@ TAG(texsubimage3d_unpack)( struct gl_texture_convert *convert ) * PRE: Require pixelstore attribs, width != dstImageWidth. */ static GLboolean -TAG(texsubimage2d_stride_unpack)( struct gl_texture_convert *convert ) +TAG(texsubimage2d_stride_unpack)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *) _mesa_image_address( convert->unpacking, convert->srcImage, @@ -372,7 +386,7 @@ TAG(texsubimage2d_stride_unpack)( struct gl_texture_convert *convert ) /* PRE: As above, or height != dstImageHeight also. */ static GLboolean -TAG(texsubimage3d_stride_unpack)( struct gl_texture_convert *convert ) +TAG(texsubimage3d_stride_unpack)( const struct convert_info *convert ) { const GLubyte *src = (const GLubyte *) _mesa_image_address( convert->unpacking, convert->srcImage, diff --git a/xc/extras/Mesa/src/tnl/t_array_api.c b/xc/extras/Mesa/src/tnl/t_array_api.c index 060203b81..654ec85b1 100644 --- a/xc/extras/Mesa/src/tnl/t_array_api.c +++ b/xc/extras/Mesa/src/tnl/t_array_api.c @@ -1,8 +1,7 @@ -/* $Id: t_array_api.c,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */ /* * Mesa 3-D graphics library - * Version: 4.0.3 + * Version: 4.0.5 * * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. * @@ -178,10 +177,12 @@ _tnl_DrawArrays(GLenum mode, GLint start, GLsizei count) minimum = 0; modulo = 1; skip = 0; + break; case GL_LINES: minimum = 1; modulo = 2; skip = 1; + break; case GL_LINE_STRIP: minimum = 1; modulo = 1; diff --git a/xc/extras/Mesa/src/tnl/t_array_api.h b/xc/extras/Mesa/src/tnl/t_array_api.h index e83324f5a..c26112bef 100644 --- a/xc/extras/Mesa/src/tnl/t_array_api.h +++ b/xc/extras/Mesa/src/tnl/t_array_api.h @@ -1,4 +1,3 @@ -/* $Id: t_array_api.h,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_array_import.c b/xc/extras/Mesa/src/tnl/t_array_import.c index 7bcdac975..75fa9e6d7 100644 --- a/xc/extras/Mesa/src/tnl/t_array_import.c +++ b/xc/extras/Mesa/src/tnl/t_array_import.c @@ -1,4 +1,3 @@ -/* $Id: t_array_import.c,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_array_import.h b/xc/extras/Mesa/src/tnl/t_array_import.h index fb4aebbc4..7bc248f71 100644 --- a/xc/extras/Mesa/src/tnl/t_array_import.h +++ b/xc/extras/Mesa/src/tnl/t_array_import.h @@ -1,4 +1,3 @@ -/* $Id: t_array_import.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_context.c b/xc/extras/Mesa/src/tnl/t_context.c index 029a22368..6595e352e 100644 --- a/xc/extras/Mesa/src/tnl/t_context.c +++ b/xc/extras/Mesa/src/tnl/t_context.c @@ -1,4 +1,3 @@ -/* $Id: t_context.c,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -145,7 +144,8 @@ _tnl_DestroyContext( GLcontext *ctx ) _tnl_array_destroy( ctx ); _tnl_imm_destroy( ctx ); _tnl_destroy_pipeline( ctx ); - _tnl_free_immediate( ctx, tnl->freed_immediate ); + if (tnl->freed_immediate) + _tnl_free_immediate( ctx, tnl->freed_immediate ); FREE(tnl); ctx->swtnl_context = 0; diff --git a/xc/extras/Mesa/src/tnl/t_context.h b/xc/extras/Mesa/src/tnl/t_context.h index c301934f2..2243f7787 100644 --- a/xc/extras/Mesa/src/tnl/t_context.h +++ b/xc/extras/Mesa/src/tnl/t_context.h @@ -1,4 +1,3 @@ -/* $Id: t_context.h,v 1.1.1.1 2002/10/22 13:06:17 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_eval_api.c b/xc/extras/Mesa/src/tnl/t_eval_api.c index 5bd3880df..d3fa033d2 100644 --- a/xc/extras/Mesa/src/tnl/t_eval_api.c +++ b/xc/extras/Mesa/src/tnl/t_eval_api.c @@ -1,4 +1,3 @@ -/* $Id: t_eval_api.c,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_eval_api.h b/xc/extras/Mesa/src/tnl/t_eval_api.h index b31a30e7c..0ac6c0b14 100644 --- a/xc/extras/Mesa/src/tnl/t_eval_api.h +++ b/xc/extras/Mesa/src/tnl/t_eval_api.h @@ -1,4 +1,3 @@ -/* $Id: t_eval_api.h,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_alloc.c b/xc/extras/Mesa/src/tnl/t_imm_alloc.c index 0cee83712..5c3a046b9 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_alloc.c +++ b/xc/extras/Mesa/src/tnl/t_imm_alloc.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_alloc.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_alloc.h b/xc/extras/Mesa/src/tnl/t_imm_alloc.h index e560dcc4d..4ece015b1 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_alloc.h +++ b/xc/extras/Mesa/src/tnl/t_imm_alloc.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_alloc.h,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_api.c b/xc/extras/Mesa/src/tnl/t_imm_api.c index b9a956ce5..34034a21c 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_api.c +++ b/xc/extras/Mesa/src/tnl/t_imm_api.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_api.c,v 1.1.1.1 2002/10/22 13:06:24 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -111,6 +110,11 @@ _tnl_save_Begin( GLenum mode ) if (ctx->NewState) _mesa_update_state(ctx); + if (IM->Count > IMM_MAXDATA-8) { + _tnl_flush_immediate( IM ); + IM = TNL_CURRENT_IM(ctx); + } + /* Check for and flush buffered vertices from internal operations. */ if (IM->SavedBeginState) { @@ -180,6 +184,15 @@ _tnl_Begin( GLenum mode ) { struct immediate *IM = TNL_CURRENT_IM(ctx); + if (IM->Count > IMM_MAXDATA-8) { + _tnl_flush_immediate( IM ); + IM = TNL_CURRENT_IM(ctx); + } + } + + + { + struct immediate *IM = TNL_CURRENT_IM(ctx); GLuint count = IM->Count; GLuint last = IM->LastPrimitive; @@ -189,8 +202,8 @@ _tnl_Begin( GLenum mode ) return; } - assert( IM->SavedBeginState == 0 ); - assert( IM->BeginState == 0 ); + assert( (IM->SavedBeginState & (VERT_BEGIN_0|VERT_BEGIN_1)) == 0 ); + assert( (IM->BeginState & (VERT_BEGIN_0|VERT_BEGIN_1)) == 0 ); /* Not quite right. Need to use the fallback '_aa_ArrayElement' * when not known to be inside begin/end and arrays are @@ -314,7 +327,10 @@ _tnl_end( GLcontext *ctx ) GLuint state = IM->BeginState; GLuint inflags = (~state) & (VERT_BEGIN_0|VERT_BEGIN_1); - assert( ctx->Driver.NeedFlush & FLUSH_STORED_VERTICES ); + /* Not the case if vertices emitted without calling glBegin first: + */ +/* assert( ctx->Driver.NeedFlush & FLUSH_STORED_VERTICES ); */ + state |= inflags << 2; /* errors */ diff --git a/xc/extras/Mesa/src/tnl/t_imm_api.h b/xc/extras/Mesa/src/tnl/t_imm_api.h index 101acf651..1ed727466 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_api.h +++ b/xc/extras/Mesa/src/tnl/t_imm_api.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_api.h,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_debug.c b/xc/extras/Mesa/src/tnl/t_imm_debug.c index d60300bc3..c6c16c26c 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_debug.c +++ b/xc/extras/Mesa/src/tnl/t_imm_debug.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_debug.c,v 1.1.1.1 2002/10/22 13:06:17 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_debug.h b/xc/extras/Mesa/src/tnl/t_imm_debug.h index 2f9853089..d0cedde50 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_debug.h +++ b/xc/extras/Mesa/src/tnl/t_imm_debug.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_debug.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_dlist.c b/xc/extras/Mesa/src/tnl/t_imm_dlist.c index c9be06e26..a7d48695b 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_dlist.c +++ b/xc/extras/Mesa/src/tnl/t_imm_dlist.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_dlist.c,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_dlist.h b/xc/extras/Mesa/src/tnl/t_imm_dlist.h index c11ebf2e5..eb2a39b6c 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_dlist.h +++ b/xc/extras/Mesa/src/tnl/t_imm_dlist.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_dlist.h,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_elt.c b/xc/extras/Mesa/src/tnl/t_imm_elt.c index e153264bb..6a3bf583c 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_elt.c +++ b/xc/extras/Mesa/src/tnl/t_imm_elt.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_elt.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_elt.h b/xc/extras/Mesa/src/tnl/t_imm_elt.h index d5088edcf..cbc3fd62b 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_elt.h +++ b/xc/extras/Mesa/src/tnl/t_imm_elt.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_elt.h,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_eval.c b/xc/extras/Mesa/src/tnl/t_imm_eval.c index e0dd25800..75ac8984e 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_eval.c +++ b/xc/extras/Mesa/src/tnl/t_imm_eval.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_eval.c,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_eval.h b/xc/extras/Mesa/src/tnl/t_imm_eval.h index 36bcc1292..58e8a38af 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_eval.h +++ b/xc/extras/Mesa/src/tnl/t_imm_eval.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_eval.h,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_exec.c b/xc/extras/Mesa/src/tnl/t_imm_exec.c index 7036a8675..33dc781f1 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_exec.c +++ b/xc/extras/Mesa/src/tnl/t_imm_exec.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_exec.c,v 1.1.1.1 2002/10/22 13:06:24 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_exec.h b/xc/extras/Mesa/src/tnl/t_imm_exec.h index b4ecb9a1b..71170bbef 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_exec.h +++ b/xc/extras/Mesa/src/tnl/t_imm_exec.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_exec.h,v 1.1.1.1 2002/10/22 13:06:24 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_fixup.c b/xc/extras/Mesa/src/tnl/t_imm_fixup.c index 0ce42b458..13ae8795d 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_fixup.c +++ b/xc/extras/Mesa/src/tnl/t_imm_fixup.c @@ -1,4 +1,3 @@ -/* $Id: t_imm_fixup.c,v 1.1.1.1 2002/10/22 13:06:20 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_imm_fixup.h b/xc/extras/Mesa/src/tnl/t_imm_fixup.h index f60896fc7..b0ec903ca 100644 --- a/xc/extras/Mesa/src/tnl/t_imm_fixup.h +++ b/xc/extras/Mesa/src/tnl/t_imm_fixup.h @@ -1,4 +1,3 @@ -/* $Id: t_imm_fixup.h,v 1.1.1.1 2002/10/22 13:06:20 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_pipeline.c b/xc/extras/Mesa/src/tnl/t_pipeline.c index dcd4b27a0..8daa3c0c3 100644 --- a/xc/extras/Mesa/src/tnl/t_pipeline.c +++ b/xc/extras/Mesa/src/tnl/t_pipeline.c @@ -1,4 +1,3 @@ -/* $Id: t_pipeline.c,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_pipeline.h b/xc/extras/Mesa/src/tnl/t_pipeline.h index c8b8e0a5a..5e9c31435 100644 --- a/xc/extras/Mesa/src/tnl/t_pipeline.h +++ b/xc/extras/Mesa/src/tnl/t_pipeline.h @@ -1,4 +1,3 @@ -/* $Id: t_pipeline.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h b/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h index 351ee782f..9b982f944 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h +++ b/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h @@ -1,4 +1,3 @@ -/* $Id: t_vb_cliptmp.h,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_fog.c b/xc/extras/Mesa/src/tnl/t_vb_fog.c index bddbc6211..30e116ec5 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_fog.c +++ b/xc/extras/Mesa/src/tnl/t_vb_fog.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_fog.c,v 1.1.1.1 2002/10/22 13:06:22 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_light.c b/xc/extras/Mesa/src/tnl/t_vb_light.c index a38c42cf0..24c35b70a 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_light.c +++ b/xc/extras/Mesa/src/tnl/t_vb_light.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_light.c,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h b/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h index 5618d4af7..87562eb95 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h +++ b/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h @@ -1,4 +1,3 @@ -/* $Id: t_vb_lighttmp.h,v 1.1.1.1 2002/10/22 13:06:22 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_normals.c b/xc/extras/Mesa/src/tnl/t_vb_normals.c index 6ec71d0a0..94b8da896 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_normals.c +++ b/xc/extras/Mesa/src/tnl/t_vb_normals.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_normals.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_points.c b/xc/extras/Mesa/src/tnl/t_vb_points.c index 57b0142ee..ff0970b71 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_points.c +++ b/xc/extras/Mesa/src/tnl/t_vb_points.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_points.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_render.c b/xc/extras/Mesa/src/tnl/t_vb_render.c index ac50cad60..8ef4653a5 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_render.c +++ b/xc/extras/Mesa/src/tnl/t_vb_render.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_render.c,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h b/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h index 5e3ad4ff0..2da5a6145 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h +++ b/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h @@ -1,4 +1,3 @@ -/* $Id: t_vb_rendertmp.h,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_texgen.c b/xc/extras/Mesa/src/tnl/t_vb_texgen.c index 1e78644fa..8d37d18b7 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_texgen.c +++ b/xc/extras/Mesa/src/tnl/t_vb_texgen.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_texgen.c,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_texmat.c b/xc/extras/Mesa/src/tnl/t_vb_texmat.c index 600ec0e23..eb4f2b58c 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_texmat.c +++ b/xc/extras/Mesa/src/tnl/t_vb_texmat.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_texmat.c,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/t_vb_vertex.c b/xc/extras/Mesa/src/tnl/t_vb_vertex.c index aacda742e..6158c1c8b 100644 --- a/xc/extras/Mesa/src/tnl/t_vb_vertex.c +++ b/xc/extras/Mesa/src/tnl/t_vb_vertex.c @@ -1,4 +1,3 @@ -/* $Id: t_vb_vertex.c,v 1.1.1.1 2002/10/22 13:06:17 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl/tnl.h b/xc/extras/Mesa/src/tnl/tnl.h index dc2af3946..1d4fb0d18 100644 --- a/xc/extras/Mesa/src/tnl/tnl.h +++ b/xc/extras/Mesa/src/tnl/tnl.h @@ -1,4 +1,3 @@ -/* $Id: tnl.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd.c b/xc/extras/Mesa/src/tnl_dd/t_dd.c index 967bab66a..7a10f1d99 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd.c +++ b/xc/extras/Mesa/src/tnl_dd/t_dd.c @@ -1,4 +1,3 @@ -/* $Id: t_dd.c,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h index 99a818b4e..50212f5e7 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h @@ -1,4 +1,3 @@ -/* $Id: t_dd_dmatmp.h,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -240,17 +239,25 @@ static void TAG(render_line_loop_verts)( GLcontext *ctx, currentsz--; dmasz--; - if (currentsz < 8) - currentsz = dmasz; - - for ( ; j + 1 < count; j += nr - 1 ) { - nr = MIN2( currentsz, count - j ); - EMIT_VERTS( ctx, j, nr ); + if (currentsz < 8) { + NEW_BUFFER(); currentsz = dmasz; } - if (start < count - 1 && (flags & PRIM_END)) + if (j + 1 < count) { + for ( ; j + 1 < count; j += nr - 1 ) { + nr = MIN2( currentsz, count - j ); + EMIT_VERTS( ctx, j, nr ); + currentsz = dmasz; + } + + if (start < count - 1 && (flags & PRIM_END)) + EMIT_VERTS( ctx, start, 1 ); + } + else if (start + 1 < count && (flags & PRIM_END)) { + EMIT_VERTS( ctx, start+1, 1 ); EMIT_VERTS( ctx, start, 1 ); + } FINISH; diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h index 789533aa2..6a33c50f1 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h @@ -1,4 +1,3 @@ -/* $Id: t_dd_dmatmp2.h,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -26,6 +25,7 @@ * Authors: * Keith Whitwell <keith@tungstengraphics.com> */ +/* $XFree86: xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h,v 1.2 2002/11/05 17:46:07 tsi Exp $ */ /* Template for render stages which build and emit vertices directly @@ -113,9 +113,11 @@ static void TAG(render_points_verts)( GLcontext *ctx, GLuint count, GLuint flags ) { - LOCAL_VARS; - if (0) fprintf(stderr, "%s\n", __FUNCTION__); - EMIT_PRIM( ctx, GL_POINTS, HW_POINTS, start, count ); + if (start < count) { + LOCAL_VARS; + if (0) fprintf(stderr, "%s\n", __FUNCTION__); + EMIT_PRIM( ctx, GL_POINTS, HW_POINTS, start, count ); + } } static void TAG(render_lines_verts)( GLcontext *ctx, @@ -157,7 +159,7 @@ static void TAG(render_line_strip_verts)( GLcontext *ctx, RESET_STIPPLE(); - if (PREFER_DISCREET_ELT_PRIM( count-start, HW_LINES )) + if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_LINES )) { int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS(); int currentsz; @@ -221,7 +223,7 @@ static void TAG(render_line_loop_verts)( GLcontext *ctx, if (start+1 >= count) return; - if (PREFER_DISCREET_ELT_PRIM( count-start, HW_LINES )) { + if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_LINES )) { int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS(); int currentsz; @@ -335,7 +337,7 @@ static void TAG(render_triangles_verts)( GLcontext *ctx, return; } - /* need a PREFER_DISCREET_ELT_PRIM here too.. + /* need a PREFER_DISCRETE_ELT_PRIM here too.. */ EMIT_PRIM( ctx, GL_TRIANGLES, HW_TRIANGLES, start, count ); } @@ -353,7 +355,7 @@ static void TAG(render_tri_strip_verts)( GLcontext *ctx, if (start + 2 >= count) return; - if (PREFER_DISCREET_ELT_PRIM( count-start, HW_TRIANGLES )) + if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_TRIANGLES )) { int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS(); int currentsz; @@ -435,7 +437,7 @@ static void TAG(render_tri_fan_verts)( GLcontext *ctx, if (start+2 >= count) return; - if (PREFER_DISCREET_ELT_PRIM( count-start, HW_TRIANGLES )) + if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_TRIANGLES )) { int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS(); int currentsz; @@ -509,7 +511,6 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx, EMIT_PRIM( ctx, GL_QUAD_STRIP, HW_QUAD_STRIP, start, count ); } else if (ctx->_TriangleCaps & DD_FLATSHADE) { - LOCAL_VARS; int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS(); int currentsz; GLuint j, nr; @@ -575,7 +576,6 @@ static void TAG(render_quads_verts)( GLcontext *ctx, /* Hardware doesn't have a quad primitive type -- simulate it * using indexed vertices and the triangle primitive: */ - LOCAL_VARS; int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS(); int currentsz; GLuint j, nr; diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h index 7a05a65f5..2034584af 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h @@ -1,4 +1,3 @@ -/* $Id: t_dd_rendertmp.h,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h b/xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h new file mode 100644 index 000000000..07a0b016e --- /dev/null +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h @@ -0,0 +1,158 @@ +/* $XFree86: xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h,v 1.1 2002/10/30 12:51:24 alanh Exp $ */ +#ifndef DO_DEBUG_VERTS +#define DO_DEBUG_VERTS 0 +#endif + +#ifndef PRINT_VERTEX +#define PRINT_VERTEX(x) +#endif + +#if defined(USE_X86_ASM) +#define COPY_DWORDS( j, vb, vertsize, v ) \ +do { \ + int __tmp; \ + __asm__ __volatile__( "rep ; movsl" \ + : "=%c" (j), "=D" (vb), "=S" (__tmp) \ + : "0" (vertsize), \ + "D" ((long)vb), \ + "S" ((long)v) ); \ +} while (0) +#else +#define COPY_DWORDS( j, vb, vertsize, v ) \ +do { \ + for ( j = 0 ; j < vertsize ; j++ ) \ + vb[j] = ((GLuint *)v)[j]; \ + vb += vertsize; \ +} while (0) +#endif + + + +#if HAVE_QUADS +static __inline void TAG(quad)( CTX_ARG, + VERTEX *v0, + VERTEX *v1, + VERTEX *v2, + VERTEX *v3 ) +{ + GLuint vertsize = GET_VERTEX_DWORDS(); + GLuint *vb = (GLuint *)ALLOC_VERTS( 4, vertsize); + GLuint j; + + if (DO_DEBUG_VERTS) { + fprintf(stderr, "%s\n", __FUNCTION__); + PRINT_VERTEX(v0); + PRINT_VERTEX(v1); + PRINT_VERTEX(v2); + PRINT_VERTEX(v3); + } + + COPY_DWORDS( j, vb, vertsize, v0 ); + COPY_DWORDS( j, vb, vertsize, v1 ); + COPY_DWORDS( j, vb, vertsize, v2 ); + COPY_DWORDS( j, vb, vertsize, v3 ); +} +#else +static __inline void TAG(quad)( CTX_ARG, + VERTEX *v0, + VERTEX *v1, + VERTEX *v2, + VERTEX *v3 ) +{ + GLuint vertsize = GET_VERTEX_DWORDS(); + GLuint *vb = (GLuint *)ALLOC_VERTS( 6, vertsize); + GLuint j; + + if (DO_DEBUG_VERTS) { + fprintf(stderr, "%s\n", __FUNCTION__); + PRINT_VERTEX(v0); + PRINT_VERTEX(v1); + PRINT_VERTEX(v2); + PRINT_VERTEX(v3); + } + + COPY_DWORDS( j, vb, vertsize, v0 ); + COPY_DWORDS( j, vb, vertsize, v1 ); + COPY_DWORDS( j, vb, vertsize, v3 ); + COPY_DWORDS( j, vb, vertsize, v1 ); + COPY_DWORDS( j, vb, vertsize, v2 ); + COPY_DWORDS( j, vb, vertsize, v3 ); +} +#endif + + +static __inline void TAG(triangle)( CTX_ARG, + VERTEX *v0, + VERTEX *v1, + VERTEX *v2 ) +{ + GLuint vertsize = GET_VERTEX_DWORDS(); + GLuint *vb = (GLuint *)ALLOC_VERTS( 3, vertsize); + GLuint j; + + if (DO_DEBUG_VERTS) { + fprintf(stderr, "%s\n", __FUNCTION__); + PRINT_VERTEX(v0); + PRINT_VERTEX(v1); + PRINT_VERTEX(v2); + } + + COPY_DWORDS( j, vb, vertsize, v0 ); + COPY_DWORDS( j, vb, vertsize, v1 ); + COPY_DWORDS( j, vb, vertsize, v2 ); +} + + +#if HAVE_LINES +static __inline void TAG(line)( CTX_ARG, + VERTEX *v0, + VERTEX *v1 ) +{ + GLuint vertsize = GET_VERTEX_DWORDS(); + GLuint *vb = (GLuint *)ALLOC_VERTS( 2, vertsize); + GLuint j; + + COPY_DWORDS( j, vb, vertsize, v0 ); + COPY_DWORDS( j, vb, vertsize, v1 ); +} +#endif + +#if HAVE_POINTS +static __inline void TAG(point)( CTX_ARG, + VERTEX *v0 ) +{ + GLuint vertsize = GET_VERTEX_DWORDS(); + GLuint *vb = (GLuint *)ALLOC_VERTS( 1, vertsize); + int j; + + COPY_DWORDS( j, vb, vertsize, v0 ); +} +#endif + + +static void TAG(fast_clipped_poly)( GLcontext *ctx, const GLuint *elts, + GLuint n ) +{ + LOCAL_VARS + GLuint vertsize = GET_VERTEX_DWORDS(); + GLuint *vb = (GLuint *)ALLOC_VERTS( (n-2) * 3, vertsize ); + const GLuint *start = (const GLuint *)VERT(elts[0]); + int i,j; + + if (DO_DEBUG_VERTS) { + fprintf(stderr, "%s\n", __FUNCTION__); + PRINT_VERTEX(VERT(elts[0])); + PRINT_VERTEX(VERT(elts[1])); + } + + for (i = 2 ; i < n ; i++) { + if (DO_DEBUG_VERTS) { + PRINT_VERTEX(VERT(elts[i])); + } + + COPY_DWORDS( j, vb, vertsize, VERT(elts[i-1]) ); + COPY_DWORDS( j, vb, vertsize, VERT(elts[i]) ); + COPY_DWORDS( j, vb, vertsize, start ); + } +} + diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h index 8cd4a6f3f..27e90e0cf 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h @@ -1,4 +1,3 @@ -/* $Id: t_dd_tritmp.h,v 1.1.1.1 2002/10/22 13:06:59 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h b/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h index b41525bb1..759efe3e8 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h @@ -1,4 +1,3 @@ -/* $Id: t_dd_unfilled.h,v 1.1.1.1 2002/10/22 13:06:59 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c b/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c index 179ae8d26..3ba8fb3d8 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c @@ -1,4 +1,3 @@ -/* $Id: t_dd_vb.c,v 1.1.1.1 2002/10/22 13:07:02 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -195,22 +194,78 @@ void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v ) LOCALVARS GLuint format = GET_VERTEX_FORMAT(); - if (format == TINY_VERTEX_FORMAT) { - fprintf(stderr, "x %f y %f z %f\n", v->v.x, v->v.y, v->v.z); - fprintf(stderr, "r %d g %d b %d a %d\n", + fprintf(stderr, "(%x) ", format); + + switch (format) { +#if HAVE_TINY_VERTICES + case TINY_VERTEX_FORMAT: + fprintf(stderr, "xyz %.4f,%.4f,%.4f rgba %x:%x:%x:%x\n", + v->v.x, v->v.y, v->v.z, v->tv.color.red, v->tv.color.green, v->tv.color.blue, v->tv.color.alpha); - } - else { - fprintf(stderr, "x %f y %f z %f oow %f\n", - v->v.x, v->v.y, v->v.z, v->v.w); - fprintf(stderr, "r %d g %d b %d a %d\n", + break; +#endif +#if HAVE_NOTEX_VERTICES + case NOTEX_VERTEX_FORMAT: + fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x spec %x:%x:%x:%x\n", + v->v.x, v->v.y, v->v.z, v->v.w, + v->v.color.red, + v->v.color.green, + v->v.color.blue, + v->v.color.alpha, + v->v.specular.red, + v->v.specular.green, + v->v.specular.blue, + v->v.specular.alpha); + break; +#endif +#if HAVE_TEX0_VERTICES + case TEX0_VERTEX_FORMAT: + fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x st %.4f,%.4f\n", + v->v.x, v->v.y, v->v.z, v->v.w, + v->v.color.red, + v->v.color.green, + v->v.color.blue, + v->v.color.alpha, + v->v.u0, + v->v.v0); + break; +#endif +#if HAVE_TEX1_VERTICES + case TEX1_VERTEX_FORMAT: + fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x st %.4f,%.4f st %.4f,%.4f\n", + v->v.x, v->v.y, v->v.z, v->v.w, + v->v.color.red, + v->v.color.green, + v->v.color.blue, + v->v.color.alpha, + v->v.u0, + v->v.v0, + v->v.u1, + v->v.u2); + break; +#endif +#if HAVE_PTEX_VERTICES + case PROJ_TEX1_VERTEX_FORMAT: + fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x stq %.4f,%.4f,%.4f stq %.4f,%.4f,%.4f\n", + v->v.x, v->v.y, v->v.z, v->v.w, v->v.color.red, v->v.color.green, v->v.color.blue, - v->v.color.alpha); + v->v.color.alpha, + v->pv.u0, + v->pv.v0, + v->pv.q0, + v->pv.u1, + v->pv.v1, + v->pv.q1); + break; +#endif + default: + fprintf(stderr, "???\n"); + break; } fprintf(stderr, "\n"); diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h index 16bd770bb..b486db5bd 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h @@ -1,4 +1,3 @@ -/* $Id: t_dd_vbtmp.h,v 1.1.1.1 2002/10/22 13:07:00 alanh Exp $ */ /* * Mesa 3-D graphics library @@ -216,7 +215,7 @@ static void TAG(emit)( GLcontext *ctx, } } - if (VB->importable_data) { + if (VB->importable_data || (DO_SPEC && !spec_stride) || (DO_FOG && !fog_stride)) { /* May have nonstandard strides: */ if (start) { @@ -708,7 +707,7 @@ static void TAG(interp)( GLcontext *ctx, } } else if (DO_PTEX) { - dst->pv.q0 = 0.0; /* must be a valid float on radeon */ + dst->pv.q1 = 0.0; /* must be a valid float on radeon */ } if (DO_TEX2) { if (DO_PTEX) { diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h b/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h index 51639b5f6..a456f72b9 100644 --- a/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h +++ b/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h @@ -1,4 +1,3 @@ -/* $Id: t_dd_vertex.h,v 1.1.1.1 2002/10/22 13:07:00 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/vtxfmt.c b/xc/extras/Mesa/src/vtxfmt.c index 43abb9889..861977673 100644 --- a/xc/extras/Mesa/src/vtxfmt.c +++ b/xc/extras/Mesa/src/vtxfmt.c @@ -1,4 +1,3 @@ -/* $Id: vtxfmt.c,v 1.1.1.1 2002/10/22 13:05:49 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/vtxfmt.h b/xc/extras/Mesa/src/vtxfmt.h index 14ab79e7d..e7fd2097d 100644 --- a/xc/extras/Mesa/src/vtxfmt.h +++ b/xc/extras/Mesa/src/vtxfmt.h @@ -1,4 +1,3 @@ -/* $Id: vtxfmt.h,v 1.1.1.1 2002/10/22 13:05:49 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/Mesa/src/vtxfmt_tmp.h b/xc/extras/Mesa/src/vtxfmt_tmp.h index ca11e772c..a814c530d 100644 --- a/xc/extras/Mesa/src/vtxfmt_tmp.h +++ b/xc/extras/Mesa/src/vtxfmt_tmp.h @@ -1,4 +1,3 @@ -/* $Id: vtxfmt_tmp.h,v 1.1.1.1 2002/10/22 13:05:07 alanh Exp $ */ /* * Mesa 3-D graphics library diff --git a/xc/extras/X-TrueType/xttcconv.c b/xc/extras/X-TrueType/xttcconv.c index 3b4b82633..97a5d1e11 100644 --- a/xc/extras/X-TrueType/xttcconv.c +++ b/xc/extras/X-TrueType/xttcconv.c @@ -30,7 +30,7 @@ Notice=== */ -/* $XFree86: xc/extras/X-TrueType/xttcconv.c,v 1.10 2001/03/06 18:54:39 dawes Exp $ */ +/* $XFree86: xc/extras/X-TrueType/xttcconv.c,v 1.11 2003/02/25 22:10:15 dawes Exp $ */ #include "xttversion.h" @@ -510,14 +510,40 @@ codeconv_search_code_converter(char const *charsetName, { char **l; char **tryItFirst = NULL; - - for (l=list; *l ; l++) { - if(!mystrcasecmp(*l,moduleArg.charSetHints->charsetStdName)) { - tryItFirst = l; - break; - } - } - + char **fallback_try = NULL; + + for (l=list; *l ; l++) { + int breaking=0; + char *tmp_left=NULL; + char *mark_underscore=NULL; + tmp_left=xstrdup(*l); + mark_underscore=strrchr(tmp_left,'_'); + if( mark_underscore != NULL ){ + *mark_underscore = '\0'; + if( !mystrcasecmp(tmp_left,moduleArg.charSetHints->charsetStdName) ){ + if( !mystrcasecmp( mark_underscore+1,moduleArg.charSetHints->charsetEncoding ) ){ + tryItFirst = l; + breaking=1; + } + } + } + else{ + if(!mystrcasecmp(*l,moduleArg.charSetHints->charsetStdName)) { + tryItFirst = l; + breaking=1; + } + } + if( fallback_try == NULL ){ + if( !mystrcasecmp(*l,"ISO8859_1") ){ + fallback_try = l; + } + } + if( tmp_left ) xfree(tmp_left); + if( breaking ) break; + } +#if 1 + if( tryItFirst == NULL ) tryItFirst=fallback_try; +#endif if(tryItFirst) l = tryItFirst; else diff --git a/xc/extras/X-TrueType/xttfuncs.c b/xc/extras/X-TrueType/xttfuncs.c index f71b588e5..23583697e 100644 --- a/xc/extras/X-TrueType/xttfuncs.c +++ b/xc/extras/X-TrueType/xttfuncs.c @@ -31,7 +31,7 @@ Notice=== */ -/* $XFree86: xc/extras/X-TrueType/xttfuncs.c,v 1.12 2002/09/16 18:05:17 eich Exp $ */ +/* $XFree86: xc/extras/X-TrueType/xttfuncs.c,v 1.17 2003/02/17 03:59:22 dawes Exp $ */ #include "xttversion.h" @@ -566,7 +566,7 @@ get_metrics(FreeTypeFont *ft, int c, struct xtt_char_width char_width) /* * Check invalid char index. */ - if ( c <= 0 ) { + if ( c < 0 ) { charInfo = &nocharinfo; goto next; } @@ -770,7 +770,7 @@ get_glyph(FreeTypeFont *ft, int c, int spacing) /* * Check invalid char index. */ - if ( c <= 0 ) { + if ( c < 0 ) { charInfo = &nocharinfo; goto next; } @@ -850,7 +850,7 @@ get_glyph(FreeTypeFont *ft, int c, int spacing) ft->map.rows = height; bytes = (width + 7) / 8; - /* aligenment */ + /* alignment */ bytes = (bytes + (glyph) - 1) & -glyph; ft->map.cols = bytes; ft->map.width = width; @@ -862,6 +862,7 @@ get_glyph(FreeTypeFont *ft, int c, int spacing) goto next; } ft->map.bitmap = charInfo->bits; + if ( ft->map.bitmap == NULL ) goto next; /* * draw a sbit or an outline glyph @@ -898,6 +899,7 @@ FreeTypeGetGlyphs (FontPtr pFont, CharInfoPtr *glyphsBase = glyphs; int spacing = 0; + int i,nullbits,ncmark; dprintf((stderr, "FreeTypeGetGlyphs: %p %d\n", pFont, count)); @@ -913,40 +915,101 @@ FreeTypeGetGlyphs (FontPtr pFont, break; } - switch (encoding) { - case Linear8Bit: - case TwoD8Bit: - while (count--) { - unsigned c = *chars++; - c = ft->codeConverterInfo.ptrCodeConverter(c); - dprintf((stderr, "%04x\n", c)); - *glyphs++ = get_glyph(ft, TT_Char_Index(ft->charmap, c), spacing); - } - break; - case Linear16Bit: - case TwoD16Bit: - while (count--) { - unsigned c1, c2; + while (count--) { + unsigned int c1=0, c2; + + *glyphs = &nocharinfo; + switch (encoding) { + case Linear8Bit: + case TwoD8Bit: + c1 = *chars++; + dprintf((stderr, "%04x\n", c1)); + break; + case Linear16Bit: + case TwoD16Bit: c1 = *chars++; c2 = *chars++; - dprintf((stderr, "code: %02x%02x ->", c1,c2)); - if (!(c1 >= pFont->info.firstRow && - c1 <= pFont->info.lastRow && - c2 >= pFont->info.firstCol && - c2 <= pFont->info.lastCol)) { - *glyphs++ = &nocharinfo; - dprintf((stderr, "invalid code\n")); + dprintf((stderr, "code: %02x%02x", c1,c2)); + if (c1 >= pFont->info.firstRow && + c1 <= pFont->info.lastRow && + c2 >= pFont->info.firstCol && + c2 <= pFont->info.lastCol) { + c1 = (c1<<8|c2); } else { - c1 = ft->codeConverterInfo.ptrCodeConverter(c1<<8|c2); - dprintf((stderr, "%04x\n", c1)); - *glyphs++ = get_glyph(ft, TT_Char_Index(ft->charmap, c1), - spacing); + dprintf((stderr, ", out of range. We use nocharinfo.\n")); + *glyphs = &nocharinfo; + goto next; } + break; + default: + goto next; } - break; + + c1 = ft->codeConverterInfo.ptrCodeConverter(c1); + dprintf((stderr, " ->%04x\n ->", c1)); + c1 = TT_Char_Index(ft->charmap, c1); + dprintf((stderr, "%d\n", c1)); + *glyphs = get_glyph(ft, c1, spacing); + + next: +#if 1 + /* fallback for XAA */ + if ( *glyphs == &nocharinfo ) { + dprintf((stderr, "nocharinfo causes a server crash. Instead We use .notdef glyph.\n")); + *glyphs = get_glyph(ft, 0, spacing); + } +#endif + glyphs++; } *pCount = glyphs - glyphsBase; + + /* + (pci)->bits == NULL crashes the Server when gHeight is not zero. + So we must check each value of (pci)->bits. Since operation of + cash intervenes, this "for () loop" *MUST* be independent of + the upper "while () loop". + Dec.26,2002 Chisato Yamauchi + */ + dprintf((stderr, "AddressCheckBegin *pCount=%d\n",*pCount)); + nullbits=0; + ncmark=-1; + for ( i=0 ; i<*pCount ; i++ ) { + /* Marking nocharinfo */ + if ( glyphsBase[i] == &nocharinfo ) { + if ( ncmark == -1 ) ncmark=i; + } + else { + dprintf((stderr,"[%d]:%x\n",i,glyphsBase[i]->bits)); + if ( glyphsBase[i]->bits == NULL ) { + glyphsBase[i]->metrics.ascent=0; + glyphsBase[i]->metrics.descent=0; + nullbits++; + } + /* + The XFree86 sometimes allocates memory with the value of maxbounds.ascent + and maxbounds.descent. + So (*glyphs)->ascent must not become larger than maxbounds.ascent. + This is the same also about descent. + */ + if ( pFont->info.maxbounds.ascent < glyphsBase[i]->metrics.ascent ) { + dprintf((stderr, " Invalid ascent : maxbounds.ascent=%d metrics.ascent=%d [corrected]\n", + pFont->info.maxbounds.ascent,glyphsBase[i]->metrics.ascent)); + glyphsBase[i]->metrics.ascent = pFont->info.maxbounds.ascent; + } + if ( pFont->info.maxbounds.descent < glyphsBase[i]->metrics.descent ) { + dprintf((stderr, " Invalid descent : maxbounds.descent=%d metrics.descent=%d [corrected]\n", + pFont->info.maxbounds.descent,glyphsBase[i]->metrics.descent)); + glyphsBase[i]->metrics.descent = pFont->info.maxbounds.descent; + } + } + } +#if 1 + /* Never return an address outside cache(for XAA). */ + if ( ncmark != -1 ) *pCount = ncmark; +#endif + dprintf((stderr, "AddressCheckEnd i=%d nullbits=%d\n",i,nullbits)); + return Successful; } @@ -960,7 +1023,8 @@ FreeTypeGetMetrics (FontPtr pFont, { FreeTypeFont *ft = (FreeTypeFont*) pFont->fontPrivate; xCharInfo **glyphsBase = glyphs; - unsigned int c; + unsigned int c=0,c2; + int i; /*dprintf((stderr, "FreeTypeGetMetrics: %d\n", count));*/ if (ft->spacing == 'm' || ft->spacing == 'p') { @@ -972,33 +1036,64 @@ FreeTypeGetMetrics (FontPtr pFont, } else char_width.pixel = char_width.raw = 0; - switch (encoding) { - case Linear8Bit: - case TwoD8Bit: - while (count--) { + while (count--) { + *glyphs = &(&nocharinfo)->metrics; + switch (encoding) { + case Linear8Bit: + case TwoD8Bit: c = *chars++; -/* dprintf((stderr, "code: %04x ->", c));*/ - c = ft->codeConverterInfo.ptrCodeConverter(c); -/* dprintf((stderr, "%04x\n", c));*/ - *glyphs++ = - get_metrics(ft, TT_Char_Index(ft->charmap, c), - char_width); + break; + case Linear16Bit: + case TwoD16Bit: + c = *chars++; + c2 = *chars++; + if (c >= pFont->info.firstRow && + c <= pFont->info.lastRow && + c2 >= pFont->info.firstCol && + c2 <= pFont->info.lastCol) { + c = (c<<8|c2); + } else { + *glyphs = &(&nocharinfo)->metrics; + goto next; + } + break; + default: + goto next; } - break; - case Linear16Bit: - case TwoD16Bit: - while (count--) { - c = *chars++ << 8; c |= *chars++; -/* dprintf((stderr, "code: %04x ->", c));*/ - c = ft->codeConverterInfo.ptrCodeConverter(c); -/* dprintf((stderr, "%04x\n", c));*/ - *glyphs++ = - get_metrics(ft, TT_Char_Index(ft->charmap, c), - char_width); + /* dprintf((stderr, "code: %04x ->", c));*/ + c = ft->codeConverterInfo.ptrCodeConverter(c); + /* dprintf((stderr, "%04x\n", c));*/ + *glyphs = get_metrics(ft, TT_Char_Index(ft->charmap, c), + char_width); + next: +#if 1 + /* fallback */ + if ( *glyphs == &(&nocharinfo)->metrics ) { + dprintf((stderr, "nocharinfo -> Instead We use .notdef glyph.\n")); + *glyphs = get_metrics(ft, 0, char_width); } - break; +#endif + glyphs++; } *pCount = glyphs - glyphsBase; + /* + The XFree86 sometimes allocates memory with the value of maxbounds.ascent + and maxbounds.descent. + So (*glyphs)->ascent must not become larger than maxbounds.ascent. + This is the same also about descent. + */ + for ( i=0 ; i<*pCount ; i++ ) { + if ( pFont->info.maxbounds.ascent < glyphsBase[i]->ascent ) { + dprintf((stderr, " Invalid ascent : maxbounds.ascent=%d metrics.ascent=%d [corrected]\n", + pFont->info.maxbounds.ascent,glyphsBase[i]->ascent)); + glyphsBase[i]->ascent = pFont->info.maxbounds.ascent; + } + if ( pFont->info.maxbounds.descent < glyphsBase[i]->descent ) { + dprintf((stderr, " Invalid descent : maxbounds.descent=%d metrics.descent=%d [corrected]\n", + pFont->info.maxbounds.descent,glyphsBase[i]->descent)); + glyphsBase[i]->descent = pFont->info.maxbounds.descent; + } + } } else { /* -c- */ switch (encoding) { case Linear8Bit: @@ -2079,8 +2174,12 @@ XTrueTypeRegisterFontFileFunctions() /* reset */ /* register */ - for (i=0;i<sizeof(renderers)/sizeof(renderers[0]);i++) - FontFileRegisterRenderer(renderers + i); + for (i=0;i<sizeof(renderers)/sizeof(renderers[0]);i++) { + /* If the user has both the FreeType and the X-TT backends + linked in, he probably wants X-TT to be used for TrueType + fonts. */ + FontFilePriorityRegisterRenderer(renderers + i, +10); + } return 0; } diff --git a/xc/extras/X-TrueType/xttversion.h b/xc/extras/X-TrueType/xttversion.h index fdf3e0d5e..e651d4efd 100644 --- a/xc/extras/X-TrueType/xttversion.h +++ b/xc/extras/X-TrueType/xttversion.h @@ -7,7 +7,7 @@ # define _XTT_V_MAJOR 1 # define _XTT_V_MINOR 3 -# define _XTT_V_REVISION 0 +# define _XTT_V_REVISION 1 # define _XTT_VENDOR_NAME "X-TrueType Server Project" # define _XTT_RELEASE_NAME \ "===X-TT-ID: X-TrueType Server Version 1.3 [Aoi MATSUBARA Release 3] ===" diff --git a/xc/extras/freetype2/include/freetype/internal/ftexcept.h b/xc/extras/freetype2/include/freetype/internal/ftexcept.h index f5495e56c..5d207658a 100644 --- a/xc/extras/freetype2/include/freetype/internal/ftexcept.h +++ b/xc/extras/freetype2/include/freetype/internal/ftexcept.h @@ -10,8 +10,6 @@ FT_BEGIN_HEADER /* I can't find a better place for this for now */ -<<<<<<< ftexcept.h -======= /* the size of a cleanup chunk in bytes is FT_CLEANUP_CHUNK_SIZE*12 + 4 */ /* this must be a small power of 2 whenever possible.. */ @@ -76,7 +74,6 @@ FT_BEGIN_HEADER ft_cleanup_throw( FT_CleanupStack stack, FT_Error error ); ->>>>>>> 1.2 FT_END_HEADER #endif /* __FT_EXCEPT_H__ */ diff --git a/xc/extras/freetype2/src/autohint/ahloader.h b/xc/extras/freetype2/src/autohint/ahloader.h index c8e42ef22..6b3077a9e 100644 --- a/xc/extras/freetype2/src/autohint/ahloader.h +++ b/xc/extras/freetype2/src/autohint/ahloader.h @@ -17,6 +17,7 @@ /* Note that this license is compatible with the FreeType license. */ /* */ /***************************************************************************/ +/* $XFree86: xc/extras/freetype2/src/autohint/ahloader.h,v 1.2 2003/01/12 03:55:45 tsi Exp $ */ /*************************************************************************/ @@ -38,19 +39,19 @@ FT_BEGIN_HEADER #include FT_INTERNAL_GLYPH_LOADER_H - #define AH_Load FT_GlyphLoad - #define AH_Loader FT_GlyphLoader - - #define ah_loader_new FT_GlyphLoader_New - #define ah_loader_done FT_GlyphLoader_Done - #define ah_loader_reset FT_GlyphLoader_Reset - #define ah_loader_rewind FT_GlyphLoader_Rewind - #define ah_loader_create_extra FT_GlyphLoader_CreateExtra - #define ah_loader_check_points FT_GlyphLoader_CheckPoints - #define ah_loader_check_subglyphs FT_GlyphLoader_CheckSubGlyphs - #define ah_loader_prepare FT_GlyphLoader_Prepare - #define ah_loader_add FT_GlyphLoader_Add - #define ah_loader_copy_points FT_GlyphLoader_CopyPoints +#define AH_Load FT_GlyphLoad +#define AH_Loader FT_GlyphLoader + +#define ah_loader_new FT_GlyphLoader_New +#define ah_loader_done FT_GlyphLoader_Done +#define ah_loader_reset FT_GlyphLoader_Reset +#define ah_loader_rewind FT_GlyphLoader_Rewind +#define ah_loader_create_extra FT_GlyphLoader_CreateExtra +#define ah_loader_check_points FT_GlyphLoader_CheckPoints +#define ah_loader_check_subglyphs FT_GlyphLoader_CheckSubGlyphs +#define ah_loader_prepare FT_GlyphLoader_Prepare +#define ah_loader_add FT_GlyphLoader_Add +#define ah_loader_copy_points FT_GlyphLoader_CopyPoints FT_END_HEADER diff --git a/xc/extras/freetype2/src/base/ftmac.c b/xc/extras/freetype2/src/base/ftmac.c index d433992e3..8915481d4 100644 --- a/xc/extras/freetype2/src/base/ftmac.c +++ b/xc/extras/freetype2/src/base/ftmac.c @@ -65,11 +65,15 @@ #include "truetype/ttobjs.h" #include "type1/t1objs.h" +#ifdef __GNUC__ +#include <Carbon/Carbon.h> +#else #include <Resources.h> #include <Fonts.h> #include <Errors.h> #include <Files.h> #include <TextUtils.h> +#endif #include FT_MAC_H diff --git a/xc/extras/freetype2/src/pcf/pcfutil.c b/xc/extras/freetype2/src/pcf/pcfutil.c index 6120d14fe..5fb4949cb 100644 --- a/xc/extras/freetype2/src/pcf/pcfutil.c +++ b/xc/extras/freetype2/src/pcf/pcfutil.c @@ -23,7 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ -/* $XFree86: xc/extras/freetype2/src/pcf/pcfutil.c,v 1.3 2001/12/16 18:01:54 keithp Exp $ */ +/* $XFree86: xc/extras/freetype2/src/pcf/pcfutil.c,v 1.4 2002/12/17 03:28:26 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -76,7 +76,7 @@ in this Software without prior written authorization from The Open Group. * Invert bit order within each BYTE of an array. */ - void + static void BitOrderInvert( unsigned char* buf, int nbytes ) { @@ -92,7 +92,7 @@ in this Software without prior written authorization from The Open Group. * Invert byte order within each 16-bits of an array. */ - void + static void TwoByteSwap( unsigned char* buf, int nbytes ) { @@ -111,7 +111,7 @@ in this Software without prior written authorization from The Open Group. * Invert byte order within each 32-bits of an array. */ - void + static void FourByteSwap( unsigned char* buf, int nbytes ) { @@ -135,7 +135,7 @@ in this Software without prior written authorization from The Open Group. * Repad a bitmap. */ - int + static int RepadBitmap( char* pSrc, char* pDst, unsigned int srcPad, diff --git a/xc/extras/freetype2/src/pcf/pcfutil.h b/xc/extras/freetype2/src/pcf/pcfutil.h index 32dd1eab7..20cece8c5 100644 --- a/xc/extras/freetype2/src/pcf/pcfutil.h +++ b/xc/extras/freetype2/src/pcf/pcfutil.h @@ -32,19 +32,19 @@ THE SOFTWARE. #include <ft2build.h> - void + static void BitOrderInvert( unsigned char* buf, int nbytes); - void + static void TwoByteSwap( unsigned char* buf, int nbytes); - void + static void FourByteSwap( unsigned char* buf, int nbytes); - int + static int RepadBitmap( char* pSrc, char* pDst, unsigned int srcPad, diff --git a/xc/extras/freetype2/src/sfnt/ttcmap.c.save b/xc/extras/freetype2/src/sfnt/ttcmap.c.save index 492c3597d..2fd58cf17 100644 --- a/xc/extras/freetype2/src/sfnt/ttcmap.c.save +++ b/xc/extras/freetype2/src/sfnt/ttcmap.c.save @@ -38,92 +38,50 @@ code_to_index0( TT_CMapTable* charmap, FT_ULong char_code ); -<<<<<<< ttcmap.c - FT_CALLBACK_DEF( FT_ULong ) - code_to_next0( TT_CMapTable* charmap, - FT_ULong char_code ); - -======= FT_CALLBACK_DEF( FT_ULong ) code_to_next0( TT_CMapTable* charmap, FT_ULong char_code ); ->>>>>>> 1.39 FT_CALLBACK_DEF( FT_UInt ) code_to_index2( TT_CMapTable* charmap, FT_ULong char_code ); -<<<<<<< ttcmap.c - FT_CALLBACK_DEF( FT_ULong ) - code_to_next2( TT_CMapTable* charmap, - FT_ULong char_code ); - -======= FT_CALLBACK_DEF( FT_ULong ) code_to_next2( TT_CMapTable* charmap, FT_ULong char_code ); ->>>>>>> 1.39 FT_CALLBACK_DEF( FT_UInt ) code_to_index4( TT_CMapTable* charmap, FT_ULong char_code ); -<<<<<<< ttcmap.c - FT_CALLBACK_DEF( FT_ULong ) - code_to_next4( TT_CMapTable* charmap, - FT_ULong char_code ); - -======= FT_CALLBACK_DEF( FT_ULong ) code_to_next4( TT_CMapTable* charmap, FT_ULong char_code ); ->>>>>>> 1.39 FT_CALLBACK_DEF( FT_UInt ) code_to_index6( TT_CMapTable* charmap, FT_ULong char_code ); -<<<<<<< ttcmap.c - FT_CALLBACK_DEF( FT_ULong ) - code_to_next6( TT_CMapTable* charmap, - FT_ULong char_code ); - -======= FT_CALLBACK_DEF( FT_ULong ) code_to_next6( TT_CMapTable* charmap, FT_ULong char_code ); ->>>>>>> 1.39 FT_CALLBACK_DEF( FT_UInt ) code_to_index8_12( TT_CMapTable* charmap, FT_ULong char_code ); -<<<<<<< ttcmap.c - FT_CALLBACK_DEF( FT_ULong ) - code_to_next8_12( TT_CMapTable* charmap, - FT_ULong char_code ); - -======= FT_CALLBACK_DEF( FT_ULong ) code_to_next8_12( TT_CMapTable* charmap, FT_ULong char_code ); ->>>>>>> 1.39 FT_CALLBACK_DEF( FT_UInt ) code_to_index10( TT_CMapTable* charmap, FT_ULong char_code ); -<<<<<<< ttcmap.c - FT_CALLBACK_DEF( FT_ULong ) - code_to_next10( TT_CMapTable* charmap, - FT_ULong char_code ); - -======= FT_CALLBACK_DEF( FT_ULong ) code_to_next10( TT_CMapTable* charmap, FT_ULong char_code ); ->>>>>>> 1.39 /*************************************************************************/ /* */ @@ -543,39 +501,6 @@ /*************************************************************************/ /* */ /* <Function> */ -<<<<<<< ttcmap.c - /* code_to_next0 */ - /* */ - /* <Description> */ - /* Finds the next encoded character after the given one. Uses format */ - /* 0. `charCode' must be in the range 0x00-0xFF (otherwise 0 is */ - /* returned). */ - /* */ - /* <Input> */ - /* charCode :: The wanted character code. */ - /* cmap0 :: A pointer to a cmap table in format 0. */ - /* */ - /* <Return> */ - /* Next char code. 0 if no higher one is encoded. */ - /* */ - FT_CALLBACK_DEF( FT_ULong ) - code_to_next0( TT_CMapTable* cmap, - FT_ULong charCode ) - { - TT_CMap0* cmap0 = &cmap->c.cmap0; - - - while ( ++charCode <= 0xFF ) - if ( cmap0->glyphIdArray[charCode] ) - return ( charCode ); - return ( 0 ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ -======= /* code_to_next0 */ /* */ /* <Description> */ @@ -607,7 +532,6 @@ /*************************************************************************/ /* */ /* <Function> */ ->>>>>>> 1.39 /* code_to_index2 */ /* */ /* <Description> */ @@ -673,91 +597,6 @@ /*************************************************************************/ /* */ /* <Function> */ -<<<<<<< ttcmap.c - /* code_to_next2 */ - /* */ - /* <Description> */ - /* Find the next encoded character. Uses format 2. */ - /* */ - /* <Input> */ - /* charCode :: The wanted character code. */ - /* cmap2 :: A pointer to a cmap table in format 2. */ - /* */ - /* <Return> */ - /* Next encoded character. 0 if none exists. */ - /* */ - FT_CALLBACK_DEF( FT_ULong ) - code_to_next2( TT_CMapTable* cmap, - FT_ULong charCode ) - { - FT_UInt index1, offset; - FT_UInt char_lo; - FT_ULong char_hi; - TT_CMap2SubHeader* sh2; - TT_CMap2* cmap2; - - - cmap2 = &cmap->c.cmap2; - charCode++; - - /* - * This is relatively simplistic -- look for a subHeader containing - * glyphs and then walk to the first glyph in that subHeader - */ - while ( charCode < 0x10000 ) - { - char_lo = (FT_UInt)( charCode & 0xFF ); - char_hi = charCode >> 8; - - if ( char_hi == 0 ) - { - /* an 8-bit character code -- we use the subHeader 0 in this case */ - /* to test whether the character code is in the charmap */ - index1 = cmap2->subHeaderKeys[char_lo]; - if ( index1 != 0 ) - { - charCode++; - continue; - } - } - else - { - /* a 16-bit character code */ - index1 = cmap2->subHeaderKeys[char_hi & 0xFF]; - if ( index1 == 0 ) - { - charCode = (char_hi + 1) << 8; - continue; - } - } - - sh2 = cmap2->subHeaders + index1; - char_lo -= sh2->firstCode; - - if ( char_lo > (FT_UInt)sh2->entryCount ) - { - charCode = (char_hi + 1) << 8; - continue; - } - - offset = sh2->idRangeOffset / 2 + char_lo; - if ( offset >= (FT_UInt)cmap2->numGlyphId || - cmap2->glyphIdArray[offset] == 0 ) - { - charCode++; - continue; - } - - return charCode; - } - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ -======= /* code_to_next2 */ /* */ /* <Description> */ @@ -841,7 +680,6 @@ /*************************************************************************/ /* */ /* <Function> */ ->>>>>>> 1.39 /* code_to_index4 */ /* */ /* <Description> */ @@ -926,76 +764,6 @@ /*************************************************************************/ /* */ /* <Function> */ -<<<<<<< ttcmap.c - /* code_to_next4 */ - /* */ - /* <Description> */ - /* Find the next encoded character. Uses format 4. */ - /* */ - /* <Input> */ - /* charCode :: The wanted character code. */ - /* cmap :: A pointer to a cmap table in format 4. */ - /* */ - /* <Return> */ - /* Next encoded character. 0 if none exists. */ - /* */ - FT_CALLBACK_DEF( FT_ULong ) - code_to_next4( TT_CMapTable* cmap, - FT_ULong charCode ) - { - FT_UInt index1, segCount; - TT_CMap4* cmap4; - TT_CMap4Segment *seg4, *limit; - - - cmap4 = &cmap->c.cmap4; - segCount = cmap4->segCountX2 / 2; - limit = cmap4->segments + segCount; - - charCode++; - - for ( seg4 = cmap4->segments; seg4 < limit; seg4++ ) - { - /* the ranges are sorted in increasing order. If we are out of */ - /* the range here, the char code isn't in the charmap, so exit. */ - - if ( charCode <= (FT_UInt)seg4->endCount ) - goto Found; - } - return 0; - - Found: - - if ( charCode < seg4->startCount ) - charCode = seg4->startCount; - - /* if the idRangeOffset is 0, all chars in the map exist */ - - if ( seg4->idRangeOffset == 0 ) - return ( charCode ); - - while ( charCode <= (FT_UInt) seg4->endCount ) - { - /* otherwise, we must use the glyphIdArray to do it */ - index1 = (FT_UInt)( seg4->idRangeOffset / 2 - + ( charCode - seg4->startCount ) - + ( seg4 - cmap4->segments ) - - segCount ); - - if ( index1 < (FT_UInt)cmap4->numGlyphId && - cmap4->glyphIdArray[index1] != 0 ) - return ( charCode ); - charCode++; - } - - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ -======= /* code_to_next4 */ /* */ /* <Description> */ @@ -1063,7 +831,6 @@ /*************************************************************************/ /* */ /* <Function> */ ->>>>>>> 1.39 /* code_to_index6 */ /* */ /* <Description> */ @@ -1097,49 +864,6 @@ /*************************************************************************/ /* */ /* <Function> */ -<<<<<<< ttcmap.c - /* code_to_next6 */ - /* */ - /* <Description> */ - /* Find the next encoded character. Uses format 6. */ - /* */ - /* <Input> */ - /* charCode :: The wanted character code. */ - /* cmap :: A pointer to a cmap table in format 6. */ - /* */ - /* <Return> */ - /* Next encoded character. 0 if none exists. */ - /* */ - FT_CALLBACK_DEF( FT_ULong ) - code_to_next6( TT_CMapTable* cmap, - FT_ULong charCode ) - { - TT_CMap6* cmap6; - - - charCode++; - - cmap6 = &cmap->c.cmap6; - - if (charCode < cmap6->firstCode) - charCode = cmap6->firstCode; - - charCode -= cmap6->firstCode; - - while ( charCode < (FT_UInt)cmap6->entryCount ) - { - if ( cmap6->glyphIdArray[charCode] != 0 ) - return charCode + cmap6->firstCode; - charCode++; - } - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ -======= /* code_to_next6 */ /* */ /* <Description> */ @@ -1182,7 +906,6 @@ /*************************************************************************/ /* */ /* <Function> */ ->>>>>>> 1.39 /* code_to_index8_12 */ /* */ /* <Description> */ @@ -1248,53 +971,6 @@ /*************************************************************************/ /* */ /* <Function> */ -<<<<<<< ttcmap.c - /* code_to_next8_12 */ - /* */ - /* <Description> */ - /* Find the next encoded character. Uses format 8 or 12. */ - /* */ - /* <Input> */ - /* charCode :: The wanted character code. */ - /* cmap :: A pointer to a cmap table in format 8 or 12. */ - /* */ - /* <Return> */ - /* Next encoded character. 0 if none exists. */ - /* */ - FT_CALLBACK_DEF( FT_ULong ) - code_to_next8_12( TT_CMapTable* cmap, - FT_ULong charCode ) - { - TT_CMap8_12* cmap8_12; - TT_CMapGroup *group, *limit; - - - charCode++; - cmap8_12 = &cmap->c.cmap8_12; - limit = cmap8_12->groups + cmap8_12->nGroups; - - for ( group = cmap8_12->groups; group < limit; group++ ) - { - /* the ranges are sorted in increasing order. If we are out of */ - /* the range here, the char code isn't in the charmap, so exit. */ - - if ( charCode <= group->endCharCode ) - goto Found; - } - return 0; - - Found: - if ( charCode < group->startCharCode ) - charCode = group->startCharCode; - - return charCode; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ -======= /* code_to_next8_12 */ /* */ /* <Description> */ @@ -1340,7 +1016,6 @@ /*************************************************************************/ /* */ /* <Function> */ ->>>>>>> 1.39 /* code_to_index10 */ /* */ /* <Description> */ @@ -1375,52 +1050,6 @@ return result; } -<<<<<<< ttcmap.c - /*************************************************************************/ - /* */ - /* <Function> */ - /* code_to_next10 */ - /* */ - /* <Description> */ - /* Find the next encoded character. Uses format 10. */ - /* */ - /* <Input> */ - /* charCode :: The wanted character code. */ - /* cmap :: A pointer to a cmap table in format 10. */ - /* */ - /* <Return> */ - /* Next encoded character. 0 if none exists. */ - /* */ - FT_CALLBACK_DEF( FT_ULong ) - code_to_next10( TT_CMapTable* cmap, - FT_ULong charCode ) - { - TT_CMap10* cmap10; - - charCode++; - cmap10 = &cmap->c.cmap10; - - if (charCode < cmap10->startCharCode) - charCode = cmap10->startCharCode; - - charCode -= cmap10->startCharCode; - - /* the overflow trick for comparison works here also since the number */ - /* of glyphs (even if numChars is specified as ULong in the specs) in */ - /* an OpenType font is limited to 64k */ - - while ( charCode < cmap10->numChars ) - { - if ( cmap10->glyphs[charCode] ) - return ( charCode + cmap10->startCharCode ); - charCode++; - } - - return 0; - } - - -======= /*************************************************************************/ /* */ @@ -1467,5 +1096,4 @@ } ->>>>>>> 1.39 /* END */ diff --git a/xc/extras/freetype2/src/truetype/ttdriver.c.save b/xc/extras/freetype2/src/truetype/ttdriver.c.save index 313b1984b..d35274245 100644 --- a/xc/extras/freetype2/src/truetype/ttdriver.c.save +++ b/xc/extras/freetype2/src/truetype/ttdriver.c.save @@ -393,55 +393,6 @@ } /*************************************************************************/ -<<<<<<< ttdriver.c - /* */ - /* <Function> */ - /* Get_Next_Char */ - /* */ - /* <Description> */ - /* Uses a charmap to return the next encoded char. */ - /* */ - /* <Input> */ - /* charmap :: A handle to the source charmap object. */ - /* charcode :: The character code. */ - /* */ - /* <Return> */ - /* Next char code. 0 means `no more encoded characters'. */ - /* */ - static FT_UInt - Get_Next_Char( TT_CharMap charmap, - FT_Long charcode ) - { - FT_Error error; - TT_Face face; - TT_CMapTable* cmap; - - - cmap = &charmap->cmap; - face = (TT_Face)charmap->root.face; - - /* Load table if needed */ - if ( !cmap->loaded ) - { - SFNT_Interface* sfnt = (SFNT_Interface*)face->sfnt; - - - error = sfnt->load_charmap( face, cmap, face->root.stream ); - if ( error ) - return 0; - - cmap->loaded = TRUE; - } - - if ( cmap->get_next_char ) - return cmap->get_next_char ( cmap, charcode ); - else - return 0; - } - - - /*************************************************************************/ -======= /* */ /* <Function> */ /* Get_Next_Char */ @@ -489,7 +440,6 @@ /*************************************************************************/ ->>>>>>> 1.47 /*************************************************************************/ /*************************************************************************/ /**** ****/ diff --git a/xc/extras/freetype2/src/type1/t1driver.c.save b/xc/extras/freetype2/src/type1/t1driver.c.save index 53af3849b..0e9c3b82d 100644 --- a/xc/extras/freetype2/src/type1/t1driver.c.save +++ b/xc/extras/freetype2/src/type1/t1driver.c.save @@ -344,100 +344,6 @@ return result; } -<<<<<<< t1driver.c - /*************************************************************************/ - /* */ - /* <Function> */ - /* Get_Next_Char */ - /* */ - /* <Description> */ - /* Uses a charmap to return the next encoded char. */ - /* */ - /* <Input> */ - /* charmap :: A handle to the source charmap object. */ - /* charcode :: The character code. */ - /* */ - /* <Return> */ - /* Next char code. 0 means `no more char codes'. */ - /* */ - static FT_Long - Get_Next_Char( FT_CharMap charmap, - FT_Long charcode ) - { - T1_Face face; - PSNames_Interface* psnames; - - - face = (T1_Face)charmap->face; - psnames = (PSNames_Interface*)face->psnames; - if ( psnames ) - switch ( charmap->encoding ) - { - /*******************************************************************/ - /* */ - /* Unicode encoding support */ - /* */ - case ft_encoding_unicode: - /* use the `PSNames' module to synthetize the Unicode charmap */ - return psnames->next_unicode( &face->unicode_map, - (FT_ULong)charcode ); - - /*******************************************************************/ - /* */ - /* Custom Type 1 encoding */ - /* */ - case ft_encoding_adobe_custom: - { - T1_Encoding* encoding = &face->type1.encoding; - - - charcode++; - if ( charcode < encoding->code_first ) - charcode = encoding->code_first; - while ( charcode <= encoding->code_last ) - { - if ( encoding->char_index[charcode] ) - return charcode; - charcode++; - } - } - - /*******************************************************************/ - /* */ - /* Adobe Standard & Expert encoding support */ - /* */ - default: - while ( ++charcode < 256 ) - { - FT_UInt code; - FT_Int n; - const char* glyph_name; - - - code = psnames->adobe_std_encoding[charcode]; - if ( charmap->encoding == ft_encoding_adobe_expert ) - code = psnames->adobe_expert_encoding[charcode]; - - glyph_name = psnames->adobe_std_strings( code ); - if ( !glyph_name ) - continue; - - for ( n = 0; n < face->type1.num_glyphs; n++ ) - { - const char* gname = face->type1.glyph_names[n]; - - - if ( gname && gname[0] == glyph_name[0] && - strcmp( gname, glyph_name ) == 0 ) - return charcode; - } - } - } - return 0; - } - - -======= /*************************************************************************/ /* */ @@ -550,7 +456,6 @@ } ->>>>>>> 1.49 FT_CALLBACK_TABLE_DEF const FT_Driver_Class t1_driver_class = { @@ -595,15 +500,9 @@ (FTDriver_getKerning) Get_Kerning, (FTDriver_attachFile) T1_Read_AFM, #endif -<<<<<<< t1driver.c - (FTDriver_getAdvances) 0, - - (FTDriver_getNextChar) Get_Next_Char -======= (FTDriver_getAdvances) 0, (FTDriver_getNextChar) Get_Next_Char ->>>>>>> 1.49 }; diff --git a/xc/extras/freetype2/src/winfonts/winfnt.c.save b/xc/extras/freetype2/src/winfonts/winfnt.c.save index eaa18aedb..852978370 100644 --- a/xc/extras/freetype2/src/winfonts/winfnt.c.save +++ b/xc/extras/freetype2/src/winfonts/winfnt.c.save @@ -494,29 +494,6 @@ return result; } -<<<<<<< winfnt.c - static FT_Long - FNT_Get_Next_Char( FT_CharMap charmap, - FT_Long char_code ) - { - char_code++; - if ( charmap ) - { - FNT_Font* font = ((FNT_Face)charmap->face)->fonts; - FT_Long first = font->header.first_char; - - if ( char_code < first ) - char_code = first; - if ( char_code <= font->header.last_char ) - return char_code; - } - else - return char_code; - return 0; - } - - -======= static FT_Long FNT_Get_Next_Char( FT_CharMap charmap, FT_Long char_code ) @@ -539,7 +516,6 @@ } ->>>>>>> 1.30 static FT_Error FNT_Load_Glyph( FT_GlyphSlot slot, FNT_Size size, diff --git a/xc/extras/x86emu/src/x86emu/sys.c b/xc/extras/x86emu/src/x86emu/sys.c index 17e406ab5..d493ae837 100644 --- a/xc/extras/x86emu/src/x86emu/sys.c +++ b/xc/extras/x86emu/src/x86emu/sys.c @@ -39,7 +39,7 @@ * user library. * ****************************************************************************/ -/* $XFree86: xc/extras/x86emu/src/x86emu/sys.c,v 1.6 2002/09/16 18:05:18 eich Exp $ */ +/* $XFree86: xc/extras/x86emu/src/x86emu/sys.c,v 1.7 2002/12/24 17:42:58 tsi Exp $ */ #include "x86emu.h" #include "x86emu/x86emui.h" @@ -70,7 +70,7 @@ X86EMU_intrFuncs _X86EMU_intrTab[256]; * packed structures to talk about such things with. */ -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 +#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) struct __una_u64 { unsigned long x __attribute__((packed)); }; struct __una_u32 { unsigned int x __attribute__((packed)); }; struct __una_u16 { unsigned short x __attribute__((packed)); }; @@ -78,7 +78,7 @@ struct __una_u16 { unsigned short x __attribute__((packed)); }; static __inline__ unsigned long ldq_u(unsigned long * r11) { -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 +#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) const struct __una_u64 *ptr = (const struct __una_u64 *) r11; return ptr->x; #else @@ -97,7 +97,7 @@ static __inline__ unsigned long ldq_u(unsigned long * r11) static __inline__ unsigned long ldl_u(unsigned int * r11) { -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 +#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) const struct __una_u32 *ptr = (const struct __una_u32 *) r11; return ptr->x; #else @@ -116,7 +116,7 @@ static __inline__ unsigned long ldl_u(unsigned int * r11) static __inline__ unsigned long ldw_u(unsigned short * r11) { -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 +#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) const struct __una_u16 *ptr = (const struct __una_u16 *) r11; return ptr->x; #else @@ -139,7 +139,7 @@ static __inline__ unsigned long ldw_u(unsigned short * r11) static __inline__ void stq_u(unsigned long r5, unsigned long * r11) { -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 +#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) struct __una_u64 *ptr = (struct __una_u64 *) r11; ptr->x = r5; #else @@ -164,7 +164,7 @@ static __inline__ void stq_u(unsigned long r5, unsigned long * r11) static __inline__ void stl_u(unsigned long r5, unsigned int * r11) { -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 +#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) struct __una_u32 *ptr = (struct __una_u32 *) r11; ptr->x = r5; #else @@ -189,7 +189,7 @@ static __inline__ void stl_u(unsigned long r5, unsigned int * r11) static __inline__ void stw_u(unsigned long r5, unsigned short * r11) { -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91 +#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91)) struct __una_u16 *ptr = (struct __una_u16 *) r11; ptr->x = r5; #else |