Compare commits
	
		
			188 Commits
		
	
	
		
			10.5
			...
			mesa_3_2_b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 1b539ed613 | ||
|  | 905ad56487 | ||
|  | a16ebe76c9 | ||
|  | 96563ae75f | ||
|  | 11769b9737 | ||
|  | 474363af47 | ||
|  | 99189ad4fb | ||
|  | 361fc66e36 | ||
|  | 0b616332f7 | ||
|  | 4f030d12ad | ||
|  | 792837dafd | ||
|  | 8c77d45b06 | ||
|  | 660f6dec37 | ||
|  | 14e7ab2c4f | ||
|  | 089f713f0d | ||
|  | 53f81339a4 | ||
|  | 2cf228e93d | ||
|  | 4e8ee6840a | ||
|  | 5144d47c54 | ||
|  | 3eaed2527a | ||
|  | 353bd24876 | ||
|  | 473d64f9cc | ||
|  | c21598fb0d | ||
|  | 287abc7aa0 | ||
|  | e6e732c64d | ||
|  | 61cca3827f | ||
|  | 88406455f5 | ||
|  | fb67681366 | ||
|  | ead75d4894 | ||
|  | bd4ba2b85d | ||
|  | 998839109e | ||
|  | a23d3cc054 | ||
|  | 803d5a12ab | ||
|  | 462144c0f0 | ||
|  | a780e6f228 | ||
|  | 7feab37f8a | ||
|  | 091834064c | ||
|  | 9275c62963 | ||
|  | 7166ff0412 | ||
|  | bf69170dff | ||
|  | 3c6dd8791c | ||
|  | 69bc4e01b8 | ||
|  | b2d3b2dbe0 | ||
|  | c508641aec | ||
|  | f008070ad5 | ||
|  | c562884268 | ||
|  | 992795f4c9 | ||
|  | d21f13cb05 | ||
|  | f1b26953e8 | ||
|  | 216244bed8 | ||
|  | b85c3afc01 | ||
|  | e4ee3cc9d1 | ||
|  | 03d7215604 | ||
|  | 82e6fe5e36 | ||
|  | dde5788a44 | ||
|  | 8038f3747d | ||
|  | 0df95816c5 | ||
|  | 3692626805 | ||
|  | b31d01d4a7 | ||
|  | ba8ef5917e | ||
|  | f5d0252282 | ||
|  | 83386c0f7b | ||
|  | 5e8aa8e5d9 | ||
|  | f008ed46d1 | ||
|  | 7b5a65ce28 | ||
|  | 4f4b93d8ae | ||
|  | 81f97580cc | ||
|  | 8de719530c | ||
|  | f0040ae8f5 | ||
|  | ec2425c3b6 | ||
|  | aedc01c850 | ||
|  | 93c528a6d5 | ||
|  | 443d666b9a | ||
|  | d794378dbc | ||
|  | 76dad53903 | ||
|  | e5f8d98410 | ||
|  | 7f8fed5711 | ||
|  | 5ed6197b0a | ||
|  | 609524894a | ||
|  | 553adbb0c2 | ||
|  | 361afca6a4 | ||
|  | 4c6a2f6a33 | ||
|  | 717ec19e30 | ||
|  | 411fb983f7 | ||
|  | 5dbe3d9c98 | ||
|  | fea067dce8 | ||
|  | 1cfc846bf3 | ||
|  | dfa45b9f26 | ||
|  | 6f602ed44d | ||
|  | 34bf1dd293 | ||
|  | 9a7584b062 | ||
|  | d6dfb94059 | ||
|  | b9ee2850cf | ||
|  | 4183bf524d | ||
|  | 1721f447c6 | ||
|  | 46ef216f7f | ||
|  | a171741d65 | ||
|  | 320c2cdb0f | ||
|  | 9ed70db8ea | ||
|  | acbb8cb9dd | ||
|  | 7889a93ff7 | ||
|  | 970a551795 | ||
|  | d7eae31275 | ||
|  | b0294cbbfe | ||
|  | e2ff9be0b6 | ||
|  | 16283fea40 | ||
|  | 82ba9449e1 | ||
|  | 2377ea9c66 | ||
|  | ac3593ada5 | ||
|  | d6dd996e56 | ||
|  | cee556daea | ||
|  | 313f225a2e | ||
|  | 95d565b64c | ||
|  | 32ea1fdc7e | ||
|  | 8d52ee9ae1 | ||
|  | 9a07202f5e | ||
|  | 0f953d69e5 | ||
|  | b3a1034c05 | ||
|  | 8956d5131d | ||
|  | 428cf99956 | ||
|  | 1e5dab20fd | ||
|  | aa5251d170 | ||
|  | 607add71d9 | ||
|  | 074710629d | ||
|  | 7f0b5dd69c | ||
|  | 09b83c889b | ||
|  | 9c416c235b | ||
|  | 6ce3f22ae9 | ||
|  | 32093ccc86 | ||
|  | d5ff1d782b | ||
|  | 2ed8894aca | ||
|  | 33cd8a5490 | ||
|  | dd25e9852a | ||
|  | 05df9bb6e0 | ||
|  | a335bf404f | ||
|  | 783a67260a | ||
|  | e99e126479 | ||
|  | 98fce32683 | ||
|  | 9493e540f9 | ||
|  | 7138d38cc1 | ||
|  | 9e7f0e1f7c | ||
|  | 52345bfa1e | ||
|  | 93070bceca | ||
|  | 5b90676fc7 | ||
|  | 92ad030cb7 | ||
|  | 9afe0e4278 | ||
|  | 3e63be01d1 | ||
|  | c73eedbe96 | ||
|  | 8c54c4d9f7 | ||
|  | 33817940c4 | ||
|  | 7ec2e161ac | ||
|  | fc2e8cd0d0 | ||
|  | a3ea9edfda | ||
|  | 7fa9891de2 | ||
|  | ddd9410a67 | ||
|  | 532dde3e99 | ||
|  | 2a6f393fa7 | ||
|  | 2d1b9e0402 | ||
|  | 19c878467f | ||
|  | 1041d573ff | ||
|  | fda834160b | ||
|  | 7d35435bb6 | ||
|  | 5c191a62bc | ||
|  | eca3b6e47e | ||
|  | aa0a8624fb | ||
|  | f16a627115 | ||
|  | 1d39975c4e | ||
|  | 62d5f4c73e | ||
|  | d42cd99c66 | ||
|  | 03ef882735 | ||
|  | 19d0fcafb3 | ||
|  | cc6e92ff49 | ||
|  | 463c2b6b77 | ||
|  | 09c133e16f | ||
|  | bb1d3c1ad1 | ||
|  | cabb6a91cd | ||
|  | c76ac6b644 | ||
|  | 6842075a09 | ||
|  | b1da189fe5 | ||
|  | 9b635315be | ||
|  | 702baf4cd3 | ||
|  | b27ee886e4 | ||
|  | 276465cec6 | ||
|  | 5428538d65 | ||
|  | ab5d4d6233 | ||
|  | 2450ce124b | ||
|  | cf22eb77a7 | ||
|  | 569802cdb1 | 
							
								
								
									
										164
									
								
								Make-config
									
									
									
									
									
								
							
							
						
						
									
										164
									
								
								Make-config
									
									
									
									
									
								
							| @@ -1,13 +1,13 @@ | ||||
| # $Id: Make-config,v 1.11 1999/11/11 01:28:16 brianp Exp $ | ||||
| # $Id: Make-config,v 1.10.2.3 2000/03/23 00:12:13 brianp Exp $ | ||||
|  | ||||
| MESA_MAJOR=3 | ||||
| MESA_MINOR=3 | ||||
| MESA_MINOR=2 | ||||
| MESA_TINY=0 | ||||
| VERSION=$(MESA_MAJOR).$(MESA_MINOR) | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| #  | ||||
| # Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
| # Copyright (C) 1999-2000  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"), | ||||
| @@ -46,7 +46,7 @@ VERSION=$(MESA_MAJOR).$(MESA_MINOR) | ||||
| # To enable profiling add -DPROFILE to the CFLAGS line.  Be sure to set the | ||||
| # MESA_PROFILE environment variable to enable printing of the profile report. | ||||
| # | ||||
| # If your system supports the X Shared Memory extension add -DUSE_XSHM to the | ||||
| # If your system supports the X Shared Memory extension add -DSHM to the | ||||
| # CFLAGS line and add -lXext to the XLIBS line. | ||||
| # | ||||
| # Some compilers complain about const parameters.  Adding -DNO_CONST to the | ||||
| @@ -183,7 +183,7 @@ freebsd: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -fPIC -pedantic -I/usr/X11R6/include -DUSE_XSHM -DHZ=100" \ | ||||
| 	"CFLAGS = -O2 -fPIC -pedantic -I/usr/X11R6/include -DSHM -DHZ=100" \ | ||||
| 	"MAKELIB = ../bin/mklib.freebsd" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -194,7 +194,7 @@ freebsd-386: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -ffast-math -fPIC -pedantic -I/usr/X11R6/include -DUSE_XSHM -DHZ=100 -DUSE_X86_ASM -DFREEBSD" \ | ||||
| 	"CFLAGS = -O3 -ffast-math -fPIC -pedantic -I/usr/X11R6/include -DSHM -DHZ=100 -DUSE_X86_ASM -DFREEBSD" \ | ||||
| 	"MAKELIB = ../bin/mklib.freebsd" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S" | ||||
| @@ -217,7 +217,7 @@ hpux9: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = +O3 -Aa -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = +O3 -Aa -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -228,7 +228,7 @@ hpux9-gcc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -239,7 +239,7 @@ hpux9-sl: | ||||
| 	"GLUT_LIB = libglut.sl" \ | ||||
| 	"GLW_LIB = libGLw.sl" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = +z +O3 +Olibcalls +ESlit -Aa +Onolimit -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = +z +O3 +Olibcalls +ESlit -Aa +Onolimit -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.hpux" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R5 -s -Wl,+s,-B,nonfatal,-B,immediate -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -250,7 +250,7 @@ hpux9-gcc-sl: | ||||
| 	"GLUT_LIB = libglut.sl" \ | ||||
| 	"GLW_LIB = libGLw.sl" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.hpux" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -261,7 +261,7 @@ hpux10: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = +O3 +DAportable -Aa -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = +O3 +DAportable -Aa -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -272,7 +272,7 @@ hpux10-sl: | ||||
| 	"GLUT_LIB = libglut" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = +z -Ae +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = +z -Ae +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.hpux" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -283,7 +283,7 @@ hpux10-gcc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include  -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include  -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -294,7 +294,7 @@ hpux10-gcc-sl: | ||||
| 	"GLUT_LIB = libglut.sl" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.hpux" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -307,7 +307,7 @@ irix4: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O2 -ansi -prototypes -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O2 -ansi -prototypes -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"XLIBS = -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -319,7 +319,7 @@ irix5: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O2 -ansi -fullwarn -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CFLAGS = -O2 -ansi -fullwarn -DSHM -DNO_CONST" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -331,7 +331,7 @@ irix5-gcc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -pedantic -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O2 -pedantic -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -343,7 +343,7 @@ irix5-dso: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O2 -ansi -fullwarn -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CFLAGS = -O2 -ansi -fullwarn -DSHM -DNO_CONST" \ | ||||
| 	"MAKELIB = ../bin/mklib.irix5" \ | ||||
| 	"XLIBS = -rpath ../lib -lX11 -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -354,7 +354,7 @@ irix6-o32: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DSHM -DNO_CONST" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -365,7 +365,7 @@ irix6-o32-dso: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DSHM -DNO_CONST" \ | ||||
| 	"MAKELIB = ../bin/mklib.irix6-32" \ | ||||
| 	"XLIBS = -rpath ../lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -391,7 +391,7 @@ irix6-n32-dso: | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"LIBDIR = ../lib32" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -n32 -mips3 -O3 -ansi -DUSE_XSHM -woff 1185,1521" \ | ||||
| 	"CFLAGS = -n32 -mips3 -O3 -ansi -DSHM -woff 1185,1521" \ | ||||
| 	"MAKELIB = ../bin/mklib.irix6-n32" \ | ||||
| 	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lfpe -lm" | ||||
|  | ||||
| @@ -403,7 +403,7 @@ irix6-gcc-n32-sl: | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"LIBDIR = ../lib32" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -mabi=n32 -mips3 -O3 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -mabi=n32 -mips3 -O3 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.irix6-n32" \ | ||||
| 	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -423,7 +423,7 @@ irix6-64: | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"LIBDIR = ../lib64" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -435,12 +435,12 @@ irix6-64-dso: | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"LIBDIR = ../lib64" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.irix6-64" \ | ||||
| 	"XLIBS = -rpath ../lib64 -lX11 -lXmu -lXi -lm" | ||||
|  | ||||
| # May want to try these CFLAGS for better performance under Linux and GCC: | ||||
| # -fPIC -O2 -ansi -pedantic -mieee-fp -DUSE_XSHM -funroll-loops | ||||
| # -fPIC -O2 -ansi -pedantic -mieee-fp -DSHM -funroll-loops | ||||
| # -fexpensive-optimizations -fomit-frame-pointer -ffast-math | ||||
| # and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium | ||||
|  | ||||
| @@ -451,7 +451,7 @@ linux: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -I/usr/X11R6/include" \ | ||||
| 	"CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -I/usr/X11R6/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||
|  | ||||
| @@ -465,7 +465,7 @@ linux-elf: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -I/usr/X11R6/include" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -I/usr/X11R6/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||
|  | ||||
| @@ -476,7 +476,7 @@ linux-glide: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" | ||||
|  | ||||
| @@ -488,7 +488,7 @@ linux-386: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -I/usr/X11R6/include" \ | ||||
| 	"CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DUSE_X86_ASM -I/usr/X11R6/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -500,7 +500,7 @@ linux-386-elf: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -I/usr/X11R6/include" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DUSE_X86_ASM -I/usr/X11R6/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -512,7 +512,7 @@ linux-386-glide: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_XSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -524,7 +524,7 @@ linux-386-glide-mits: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -D_REENTRANT -DMITS -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -D_REENTRANT -DMITS -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm -lpthread" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -536,7 +536,7 @@ linux-386-opt-V2-glide: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -DFX_V2 -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include"\ | ||||
| 	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -DFX_V2 -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include"\ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm -lpthread" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -548,7 +548,7 @@ linux-386-opt-glide: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -560,7 +560,7 @@ linux-3dnow: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \ | ||||
| 	"CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/X11R6/include" \ | ||||
| 	"CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/X11R6/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | ||||
| @@ -578,7 +578,7 @@ linux-3dnow-glide: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_XSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include -I/usr/src/mesa-glx/src/FX/X86" \ | ||||
| 	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include -I/usr/src/mesa-glx/src/FX/X86" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | ||||
| @@ -598,7 +598,7 @@ linux-386-pthread-shared-glide: | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS -DFX -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS -DFX -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"MAKELIB = ../mklib.glide" \ | ||||
| 	"XLIBS = -L/usr/X11/lib -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | ||||
| @@ -612,7 +612,7 @@ linux-ggi: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc"  \ | ||||
| 	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DGGI -DCDECL=" \ | ||||
| 	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DGGI -DCDECL=" \ | ||||
| 	"MAKELIB = ../bin/mklib.ggi" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lggi -lm" | ||||
|  | ||||
| @@ -624,7 +624,7 @@ linux-386-ggi: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc"  \ | ||||
| 	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DUSE_X86_ASM -DGGI -DCDECL=" \ | ||||
| 	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DUSE_X86_ASM -DGGI -DCDECL=" \ | ||||
| 	"MAKELIB = ../bin/mklib.ggi" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lggi -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -637,7 +637,7 @@ linux-alpha: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -mieee -pedantic -L/usr/X11R6/lib -D_XOPEN_SOURCE -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O3 -mieee -pedantic -L/usr/X11R6/lib -D_XOPEN_SOURCE -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lm" | ||||
|  | ||||
| @@ -648,7 +648,7 @@ linux-alpha-elf: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -ansi -mieee -pedantic -fPIC -D_XOPEN_SOURCE -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -ansi -mieee -pedantic -fPIC -D_XOPEN_SOURCE -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -664,7 +664,7 @@ linux-ppc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||
|  | ||||
| @@ -676,7 +676,7 @@ linux-ppc-so: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fPIC -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fPIC -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||
|  | ||||
| @@ -687,7 +687,7 @@ linux-386-pthread: | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R\6/include -DUSE_XSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \ | ||||
| 	"CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R\6/include -DSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -699,7 +699,7 @@ linux-386-pthread-shared: | ||||
| 	"GLU_LIB = libGLU.so" \ | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/us\r/X11R6/include -DUSE_XSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \ | ||||
| 	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/us\r/X11R6/include -DSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -711,7 +711,7 @@ linux-sparc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -pedantic -funroll-loops -O3 -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -pedantic -funroll-loops -O3 -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXt -lSM -lICE -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -723,7 +723,7 @@ linux-sparc5-elf: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -mv8 -O2 -ffast-math -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -mv8 -O3 -ffast-math -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||
|  | ||||
| @@ -735,12 +735,12 @@ linux-sparc-ultra: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -mv8 -O2 -mtune=ultrasparc -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -mv8 -O3 -mtune=ultrasparc -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||
|  | ||||
| # May want to add these CFLAGS for better performance under LynxOS and GCC: | ||||
| # -fPIC -O2 -ansi -pedantic -mieee-fp -DUSE_XSHM -funroll-loops | ||||
| # -fPIC -O2 -ansi -pedantic -mieee-fp -DSHM -funroll-loops | ||||
| # -fexpensive-optimizations -fomit-frame-pointer -ffast-math | ||||
| # and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium | ||||
|  | ||||
| @@ -751,7 +751,7 @@ lynxos: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -ansi -pedantic -funroll-loops -ffast-math -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O2 -ansi -pedantic -funroll-loops -ffast-math -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/X11/lib -lXext -lXi -lXmu -lX11 -lbsd -lm" | ||||
|  | ||||
| @@ -795,7 +795,7 @@ netbsd: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -fPIC -DUSE_XSHM -I/usr/X11R6/include -DHZ=100"  \ | ||||
| 	"CFLAGS = -O3 -fPIC -DSHM -I/usr/X11R6/include -DHZ=100"  \ | ||||
| 	"MAKELIB = ../bin/mklib.netbsd" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||
|  | ||||
| @@ -815,7 +815,7 @@ openbsd: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O2 -fPIC -I/usr/X11R6/include -DUSE_XSHM -DHZ=100" \ | ||||
| 	"CFLAGS = -O2 -fPIC -I/usr/X11R6/include -DSHM -DHZ=100" \ | ||||
| 	"MAKELIB = ../bin/mklib.openbsd" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -856,7 +856,7 @@ osf1: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DSHM -DNO_CONST" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -867,7 +867,7 @@ osf1-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DUSE_XSHM -DNO_CONST" \ | ||||
| 	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DSHM -DNO_CONST" \ | ||||
| 	"MAKELIB = ../bin/mklib.osf1" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -934,7 +934,7 @@ solaris-x86: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -Xa -xO3 -xpentium -KPIC -I/usr/openwin/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -Xa -xO3 -xpentium -KPIC -I/usr/openwin/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.solaris" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -945,7 +945,7 @@ solaris-x86-gcc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -m486 -fPIC -I/usr/openwin/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O3 -m486 -fPIC -I/usr/openwin/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.solaris" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -956,7 +956,7 @@ sunos4: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = acc" \ | ||||
| 	"CFLAGS = -O -DUSE_XSHM -DSUNOS4" \ | ||||
| 	"CFLAGS = -O -DSHM -DSUNOS4" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -967,7 +967,7 @@ sunos4-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = acc" \ | ||||
| 	"CFLAGS = -Kpic -O -I/usr/include/X11R5 -DUSE_XSHM -DSUNOS4" \ | ||||
| 	"CFLAGS = -Kpic -O -I/usr/include/X11R5 -DSHM -DSUNOS4" \ | ||||
| 	"MAKELIB = ld -assert pure-text -o" \ | ||||
| 	"XLIBS = -L/usr/lib/X11R5 -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -978,7 +978,7 @@ sunos4-gcc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -DUSE_XSHM -DSUNOS4 -I/usr/openwin/include" \ | ||||
| 	"CFLAGS = -O3 -DSHM -DSUNOS4 -I/usr/openwin/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -989,7 +989,7 @@ sunos4-gcc-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -I/usr/include/X11R5 -I/usr/include/X11R5 -DUSE_XSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -I/usr/include/X11R5 -I/usr/include/X11R5 -DSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos4" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1000,7 +1000,7 @@ sunos4-gcc-x11r6-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -fPIC -O3 -I/usr/X11R6.3/include -DUSE_XSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -fPIC -O3 -I/usr/X11R6.3/include -DSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos4" \ | ||||
| 	"XLIBS = -L/usr/X11R6.3/lib/X11 -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1011,7 +1011,7 @@ sunos5: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1022,7 +1022,7 @@ sunos5-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -KPIC -Xa -O -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -KPIC -Xa -O -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1033,7 +1033,7 @@ sunos5-ultra: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1044,7 +1044,7 @@ sunos5-ultra-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -KPIC -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -KPIC -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1055,7 +1055,7 @@ sunos5-gcc: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1066,7 +1066,7 @@ sunos5-gcc-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1077,7 +1077,7 @@ sunos5-x11r6-gcc-sl: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -fPIC -O3 -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -fPIC -O3 -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||
| 	"XLIBS = -lSM -lICE -lX11 -lXext -lXmu -lXi -lnsl -lsocket -lm" | ||||
|  | ||||
| @@ -1088,7 +1088,7 @@ sunos5-pthread: | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4\_BUG -DTHREADS -DPTHREADS" \ | ||||
| 	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4\_BUG -DTHREADS -DPTHREADS" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lpthread -lm" | ||||
|  | ||||
| @@ -1099,7 +1099,7 @@ sunos5-thread: | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4\_BUG -DTHREADS -DSOLARIS_THREADS" \ | ||||
| 	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4\_BUG -DTHREADS -DSOLARIS_THREADS" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lthread -lm" | ||||
|  | ||||
| @@ -1110,7 +1110,7 @@ sunos5-gcc-thread: | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DSOLARIS_THREADS" \ | ||||
| 	"CFLAGS = -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DSOLARIS_THR\EADS" \ | ||||
|       	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lthread -lm" | ||||
|  | ||||
| @@ -1121,7 +1121,7 @@ sunos5-gcc-pthread: | ||||
| 	"GLU_LIB = libGLU.a" \ | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DPTHREADS" \ | ||||
| 	"CFLAGS = -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DPTHREADS" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lpthread -lm" | ||||
|  | ||||
| @@ -1133,7 +1133,7 @@ sunSolaris-CC: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = CC" \ | ||||
| 	"CFLAGS = -O -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"CFLAGS = -O -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1179,7 +1179,7 @@ unixware: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O -I/usr/X/include -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O -I/usr/X/include -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm" | ||||
|  | ||||
| @@ -1190,7 +1190,7 @@ unixware-shared: | ||||
| 	"GLUT_LIB = libglut" \ | ||||
| 	"GLW_LIB = libGLw" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -O -I/usr/X/include -KPIC,inline -DUSE_XSHM" \ | ||||
| 	"CFLAGS = -O -I/usr/X/include -KPIC,inline -DSHM" \ | ||||
| 	"MAKELIB = ../bin/mklib.solaris" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm" | ||||
|  | ||||
| @@ -1230,7 +1230,7 @@ irix-debug: | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"LIBDIR = ../lib32" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -g -n32 -ansi -fullwarn -DUSE_XSHM -DDEBUG -woff 1209,1210,1506,1521,3496" \ | ||||
| 	"CFLAGS = -g -n32 -ansi -fullwarn -DSHM -DDEBUG -woff 1209,1210,1506,1521,3496" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"XLIBS = -rpath ../lib32 -lX11 -lXext -lXmu -lXi -lfpe -lXext -lXmu -lXi -lm" | ||||
|  | ||||
| @@ -1241,7 +1241,7 @@ DEBUG: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = cc" \ | ||||
| 	"CFLAGS = -g -ansi -prototypes -fullwarn -DUSE_XSHM -DDEBUG" \ | ||||
| 	"CFLAGS = -g -ansi -prototypes -fullwarn -DSHM -DDEBUG" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lfpe -lm" | ||||
|  | ||||
| @@ -1253,7 +1253,7 @@ linux-debug: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -DUSE_XSHM -DDEBUG -DSVGA -DFX -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM_not -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -DSHM -DDEBUG -DSVGA -DFX -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM_not -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/local/glide/lib -lglide2x -ltexus -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -1265,9 +1265,9 @@ linux-elf-debug: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DDEBUG" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DDEBUG -DSVGA -DFX -I/usr/X11R6/include -I/usr/include/glide" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm" \ | ||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm -lvga -L/usr/local/lib -L/usr/local/glide/lib -lglide2x" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
|  | ||||
| linux-glide-debug: | ||||
| @@ -1277,7 +1277,7 @@ linux-glide-debug: | ||||
| 	"GLUT_LIB = libglut.so" \ | ||||
| 	"GLW_LIB = libGLw.so" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DFX -DDEBUG -I/usr/local/glide/include -I/usr/include/glide" \ | ||||
| 	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DFX -DDEBUG -I/usr/local/glide/include -I/usr/include/glide" \ | ||||
| 	"MAKELIB = ../bin/mklib.linux" \ | ||||
| 	"XLIBS = -L/usr/local/glide/lib -lglide2x -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||
| @@ -1290,7 +1290,7 @@ linux-prof: | ||||
| 	"GLUT_LIB = libglut.a" \ | ||||
| 	"GLW_LIB = libGLw.a" \ | ||||
| 	"CC = gcc" \ | ||||
| 	"CFLAGS = -O2 -pg -ansi -pedantic -Wall -DUSE_XSHM -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"CFLAGS = -O2 -pg -ansi -pedantic -Wall -DSHM -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/include/glide -I/usr/local/glide/include" \ | ||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||
| 	"XLIBS = -L/usr/local/glide/lib -lglide2x -L/usr/X11/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | ||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | ||||
|   | ||||
							
								
								
									
										321
									
								
								Makefile.X11
									
									
									
									
									
								
							
							
						
						
									
										321
									
								
								Makefile.X11
									
									
									
									
									
								
							| @@ -1,9 +1,9 @@ | ||||
| # $Id: Makefile.X11,v 1.12 1999/11/04 03:57:28 gareth Exp $ | ||||
| # $Id: Makefile.X11,v 1.12.2.8 2000/03/23 00:14:28 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.1 | ||||
| # Version:  3.2 | ||||
| #  | ||||
| # Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
| # Copyright (C) 1999-2000  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"), | ||||
| @@ -169,6 +169,7 @@ sunos5-x11r6-gcc-sl ultrix-gcc unicos unixware uwin vistra: | ||||
| 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
|  | ||||
|  | ||||
| irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug: | ||||
| @@ -183,6 +184,7 @@ irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug: | ||||
| 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
|  | ||||
|  | ||||
| irix6-64 irix6-64-dso: | ||||
| @@ -197,6 +199,7 @@ irix6-64 irix6-64-dso: | ||||
| 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
|  | ||||
|  | ||||
| amiwin: | ||||
| @@ -225,9 +228,10 @@ cygnus cygnus-linux: | ||||
| 	touch src-glu/depend | ||||
| 	cd src ; $(MAKE) -f Makefile.X11 $@ | ||||
| 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | ||||
| 	cd src-glut ; $(MAKE) -f Makefile.X11 $@ | ||||
| 	cd demos ; $(MAKE) -f Makefile.X11 $@ | ||||
| 	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d xdemos ]  ; then cd xdemos  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
|  | ||||
| macintosh: | ||||
| 	@echo "See the README file for Macintosh intallation information" | ||||
| @@ -272,6 +276,7 @@ linux-ggi linux-386-ggi: | ||||
| 	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
| 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||
|  | ||||
| # if you change GGI_DEST please change it in ggimesa.conf, too. | ||||
| DESTDIR=/usr/local | ||||
| @@ -314,103 +319,106 @@ realclean: clean | ||||
|  | ||||
|  | ||||
|  | ||||
| DIRECTORY = Mesa-3.1 | ||||
| LIB_NAME = MesaLib-3.1beta3 | ||||
| DEMO_NAME = MesaDemos-3.1beta3 | ||||
| DIRECTORY = Mesa-3.2 | ||||
| LIB_NAME = MesaLib-3.2 | ||||
| DEMO_NAME = MesaDemos-3.2 | ||||
|  | ||||
|  | ||||
| LIB_FILES =	\ | ||||
| 	$(DIRECTORY)/Makefile*			\ | ||||
| 	$(DIRECTORY)/Make-config		\ | ||||
| 	$(DIRECTORY)/acconfig.h			\ | ||||
| 	$(DIRECTORY)/acinclude.m4		\ | ||||
| 	$(DIRECTORY)/aclocal.m4			\ | ||||
| 	$(DIRECTORY)/conf.h.in			\ | ||||
| 	$(DIRECTORY)/config.guess		\ | ||||
| 	$(DIRECTORY)/config.sub			\ | ||||
| 	$(DIRECTORY)/configure			\ | ||||
| 	$(DIRECTORY)/configure.in		\ | ||||
| 	$(DIRECTORY)/install-sh			\ | ||||
| 	$(DIRECTORY)/ltconfig			\ | ||||
| 	$(DIRECTORY)/ltmain.sh			\ | ||||
| 	$(DIRECTORY)/missing			\ | ||||
| 	$(DIRECTORY)/mkinstalldirs		\ | ||||
| 	$(DIRECTORY)/stamp-h.in			\ | ||||
| 	$(DIRECTORY)/configure			\ | ||||
| 	$(DIRECTORY)/docs/CONFIG		\ | ||||
| 	$(DIRECTORY)/docs/CONFORM		\ | ||||
| 	$(DIRECTORY)/docs/COPYING		\ | ||||
| 	$(DIRECTORY)/docs/COPYRIGHT		\ | ||||
| 	$(DIRECTORY)/docs/DEVINFO		\ | ||||
| 	$(DIRECTORY)/docs/IAFA-PACKAGE		\ | ||||
| 	$(DIRECTORY)/docs/INSTALL		\ | ||||
| 	$(DIRECTORY)/docs/INSTALL.GNU		\ | ||||
| 	$(DIRECTORY)/docs/README		\ | ||||
| 	$(DIRECTORY)/docs/README.*		\ | ||||
| 	$(DIRECTORY)/docs/RELNOTES		\ | ||||
| 	$(DIRECTORY)/docs/VERSIONS		\ | ||||
| 	$(DIRECTORY)/docs/*.spec		\ | ||||
| 	$(DIRECTORY)/bin/README			\ | ||||
| 	$(DIRECTORY)/bin/mklib*			\ | ||||
| 	$(DIRECTORY)/*.BAT			\ | ||||
| 	$(DIRECTORY)/*.bat			\ | ||||
| 	$(DIRECTORY)/descrip.mms		\ | ||||
| 	$(DIRECTORY)/mms-config			\ | ||||
| 	$(DIRECTORY)/xlib.opt			\ | ||||
| 	$(DIRECTORY)/STARTUP.MK			\ | ||||
| 	$(DIRECTORY)/mesawin32.mak		\ | ||||
| 	$(DIRECTORY)/Names.win			\ | ||||
| 	$(DIRECTORY)/win32-openstep.sh		\ | ||||
| 	$(DIRECTORY)/*.dja			\ | ||||
| 	$(DIRECTORY)/include/GL/Makefile.in	\ | ||||
| 	$(DIRECTORY)/include/GL/Makefile.am	\ | ||||
| 	$(DIRECTORY)/include/GL/dosmesa.h	\ | ||||
| 	$(DIRECTORY)/include/GL/foomesa.h	\ | ||||
| 	$(DIRECTORY)/include/GL/fxmesa.h	\ | ||||
| 	$(DIRECTORY)/include/GL/ggimesa.h	\ | ||||
| 	$(DIRECTORY)/include/GL/gl.h		\ | ||||
| 	$(DIRECTORY)/include/GL/gl_mangle.h	\ | ||||
| 	$(DIRECTORY)/include/GL/glu.h		\ | ||||
| 	$(DIRECTORY)/include/GL/glu_mangle.h	\ | ||||
| 	$(DIRECTORY)/include/GL/glx.h		\ | ||||
| 	$(DIRECTORY)/include/GL/glx_mangle.h	\ | ||||
| 	$(DIRECTORY)/include/GL/mglmesa.h	\ | ||||
| 	$(DIRECTORY)/include/GL/osmesa.h	\ | ||||
| 	$(DIRECTORY)/include/GL/svgamesa.h	\ | ||||
| 	$(DIRECTORY)/include/GL/wmesa.h		\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa.h		\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa_x.h	\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa_xf86.h	\ | ||||
| 	$(DIRECTORY)/include/GLView.h		\ | ||||
| 	$(DIRECTORY)/include/Makefile.in	\ | ||||
| 	$(DIRECTORY)/include/Makefile.am	\ | ||||
| 	$(DIRECTORY)/src/Makefile*		\ | ||||
| 	$(DIRECTORY)/src/descrip.mms		\ | ||||
| 	$(DIRECTORY)/src/mms_depend		\ | ||||
| 	$(DIRECTORY)/src/mesa.conf		\ | ||||
| 	$(DIRECTORY)/src/*.def			\ | ||||
| 	$(DIRECTORY)/src/depend			\ | ||||
| 	$(DIRECTORY)/src/*.[chS]		\ | ||||
| 	$(DIRECTORY)/src/Allegro/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/BeOS/*.cpp		\ | ||||
| 	$(DIRECTORY)/src/D3D/*.cpp		\ | ||||
| 	$(DIRECTORY)/src/D3D/*.CPP		\ | ||||
| 	$(DIRECTORY)/src/D3D/*.h		\ | ||||
| 	$(DIRECTORY)/src/D3D/*.H		\ | ||||
| 	$(DIRECTORY)/src/D3D/*.c		\ | ||||
| 	$(DIRECTORY)/src/D3D/*.C		\ | ||||
| 	$(DIRECTORY)/src/D3D/MAKEFILE		\ | ||||
| 	$(DIRECTORY)/src/D3D/*bat		\ | ||||
| 	$(DIRECTORY)/src/D3D/*DEF		\ | ||||
| 	$(DIRECTORY)/src/DOS/DEPEND.DOS		\ | ||||
| 	$(DIRECTORY)/src/DOS/*.c		\ | ||||
| 	$(DIRECTORY)/src/FX/Makefile.am		\ | ||||
| 	$(DIRECTORY)/src/FX/Makefile.in		\ | ||||
| 	$(DIRECTORY)/src/FX/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/FX/*.def		\ | ||||
| 	$(DIRECTORY)/src/FX/X86/Makefile.am	\ | ||||
| 	$(DIRECTORY)/src/FX/X86/Makefile.in	\ | ||||
| 	$(DIRECTORY)/src/FX/X86/*.[Shc]		\ | ||||
| 	$(DIRECTORY)/Makefile*					\ | ||||
| 	$(DIRECTORY)/Make-config				\ | ||||
| 	$(DIRECTORY)/acconfig.h					\ | ||||
| 	$(DIRECTORY)/acinclude.m4				\ | ||||
| 	$(DIRECTORY)/aclocal.m4					\ | ||||
| 	$(DIRECTORY)/conf.h.in					\ | ||||
| 	$(DIRECTORY)/config.guess				\ | ||||
| 	$(DIRECTORY)/config.sub					\ | ||||
| 	$(DIRECTORY)/configure					\ | ||||
| 	$(DIRECTORY)/configure.in				\ | ||||
| 	$(DIRECTORY)/install-sh					\ | ||||
| 	$(DIRECTORY)/ltconfig					\ | ||||
| 	$(DIRECTORY)/ltmain.sh					\ | ||||
| 	$(DIRECTORY)/missing					\ | ||||
| 	$(DIRECTORY)/mkinstalldirs				\ | ||||
| 	$(DIRECTORY)/stamp-h.in					\ | ||||
| 	$(DIRECTORY)/configure					\ | ||||
| 	$(DIRECTORY)/docs/CONFIG				\ | ||||
| 	$(DIRECTORY)/docs/CONFORM				\ | ||||
| 	$(DIRECTORY)/docs/COPYING				\ | ||||
| 	$(DIRECTORY)/docs/COPYRIGHT				\ | ||||
| 	$(DIRECTORY)/docs/DEVINFO				\ | ||||
| 	$(DIRECTORY)/docs/IAFA-PACKAGE				\ | ||||
| 	$(DIRECTORY)/docs/INSTALL				\ | ||||
| 	$(DIRECTORY)/docs/INSTALL.GNU				\ | ||||
| 	$(DIRECTORY)/docs/README				\ | ||||
| 	$(DIRECTORY)/docs/README.*				\ | ||||
| 	$(DIRECTORY)/docs/RELNOTES				\ | ||||
| 	$(DIRECTORY)/docs/VERSIONS				\ | ||||
| 	$(DIRECTORY)/docs/*.spec				\ | ||||
| 	$(DIRECTORY)/bin/README					\ | ||||
| 	$(DIRECTORY)/bin/mklib*					\ | ||||
| 	$(DIRECTORY)/*.BAT					\ | ||||
| 	$(DIRECTORY)/*.bat					\ | ||||
| 	$(DIRECTORY)/descrip.mms				\ | ||||
| 	$(DIRECTORY)/mms-config					\ | ||||
| 	$(DIRECTORY)/xlib.opt					\ | ||||
| 	$(DIRECTORY)/STARTUP.MK					\ | ||||
| 	$(DIRECTORY)/mesawin32.mak				\ | ||||
| 	$(DIRECTORY)/Names.win					\ | ||||
| 	$(DIRECTORY)/win32-openstep.sh				\ | ||||
| 	$(DIRECTORY)/Makefile.dja				\ | ||||
| 	$(DIRECTORY)/common.dja					\ | ||||
| 	$(DIRECTORY)/include/GL/Makefile.in			\ | ||||
| 	$(DIRECTORY)/include/GL/Makefile.am			\ | ||||
| 	$(DIRECTORY)/include/GL/amesa.h				\ | ||||
| 	$(DIRECTORY)/include/GL/dosmesa.h			\ | ||||
| 	$(DIRECTORY)/include/GL/foomesa.h			\ | ||||
| 	$(DIRECTORY)/include/GL/fxmesa.h			\ | ||||
| 	$(DIRECTORY)/include/GL/ggimesa.h			\ | ||||
| 	$(DIRECTORY)/include/GL/gl.h				\ | ||||
| 	$(DIRECTORY)/include/GL/gl_mangle.h			\ | ||||
| 	$(DIRECTORY)/include/GL/glu.h				\ | ||||
| 	$(DIRECTORY)/include/GL/glu_mangle.h			\ | ||||
| 	$(DIRECTORY)/include/GL/glx.h				\ | ||||
| 	$(DIRECTORY)/include/GL/glx_mangle.h			\ | ||||
| 	$(DIRECTORY)/include/GL/mesa_wgl.h			\ | ||||
| 	$(DIRECTORY)/include/GL/mglmesa.h			\ | ||||
| 	$(DIRECTORY)/include/GL/osmesa.h			\ | ||||
| 	$(DIRECTORY)/include/GL/svgamesa.h			\ | ||||
| 	$(DIRECTORY)/include/GL/wmesa.h				\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa.h				\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa_x.h			\ | ||||
| 	$(DIRECTORY)/include/GL/xmesa_xf86.h			\ | ||||
| 	$(DIRECTORY)/include/GLView.h				\ | ||||
| 	$(DIRECTORY)/include/Makefile.in			\ | ||||
| 	$(DIRECTORY)/include/Makefile.am			\ | ||||
| 	$(DIRECTORY)/src/Makefile*				\ | ||||
| 	$(DIRECTORY)/src/descrip.mms				\ | ||||
| 	$(DIRECTORY)/src/mms_depend				\ | ||||
| 	$(DIRECTORY)/src/mesa.conf				\ | ||||
| 	$(DIRECTORY)/src/*.def					\ | ||||
| 	$(DIRECTORY)/src/depend					\ | ||||
| 	$(DIRECTORY)/src/*.[chS]				\ | ||||
| 	$(DIRECTORY)/src/Allegro/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/BeOS/*.cpp				\ | ||||
| 	$(DIRECTORY)/src/D3D/*.cpp				\ | ||||
| 	$(DIRECTORY)/src/D3D/*.CPP				\ | ||||
| 	$(DIRECTORY)/src/D3D/*.h				\ | ||||
| 	$(DIRECTORY)/src/D3D/*.H				\ | ||||
| 	$(DIRECTORY)/src/D3D/*.c				\ | ||||
| 	$(DIRECTORY)/src/D3D/*.C				\ | ||||
| 	$(DIRECTORY)/src/D3D/MAKEFILE				\ | ||||
| 	$(DIRECTORY)/src/D3D/*bat				\ | ||||
| 	$(DIRECTORY)/src/D3D/*DEF				\ | ||||
| 	$(DIRECTORY)/src/DOS/DEPEND.DOS				\ | ||||
| 	$(DIRECTORY)/src/DOS/*.c				\ | ||||
| 	$(DIRECTORY)/src/FX/Makefile.am				\ | ||||
| 	$(DIRECTORY)/src/FX/Makefile.in				\ | ||||
| 	$(DIRECTORY)/src/FX/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/FX/*.def				\ | ||||
| 	$(DIRECTORY)/src/FX/X86/Makefile.am			\ | ||||
| 	$(DIRECTORY)/src/FX/X86/Makefile.in			\ | ||||
| 	$(DIRECTORY)/src/FX/X86/*.[Shc]				\ | ||||
| 	$(DIRECTORY)/src/GGI/Makefile.am			\ | ||||
| 	$(DIRECTORY)/src/GGI/Makefile.in			\ | ||||
| 	$(DIRECTORY)/src/GGI/*.[ch]				\ | ||||
| @@ -430,55 +438,68 @@ LIB_FILES =	\ | ||||
| 	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.am	\ | ||||
| 	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in	\ | ||||
| 	$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h		\ | ||||
| 	$(DIRECTORY)/src/KNOWN_BUGS		\ | ||||
| 	$(DIRECTORY)/src/MGL/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/MGL/*.txt		\ | ||||
| 	$(DIRECTORY)/src/OSmesa/Makefile.am	\ | ||||
| 	$(DIRECTORY)/src/OSmesa/Makefile.in	\ | ||||
| 	$(DIRECTORY)/src/OSmesa/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/S3/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/S3/*.def		\ | ||||
| 	$(DIRECTORY)/src/S3/*.mak		\ | ||||
| 	$(DIRECTORY)/src/S3/*.rc		\ | ||||
| 	$(DIRECTORY)/src/SVGA/Makefile.am	\ | ||||
| 	$(DIRECTORY)/src/SVGA/Makefile.in	\ | ||||
| 	$(DIRECTORY)/src/SVGA/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/Windows/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/Windows/*.def		\ | ||||
| 	$(DIRECTORY)/src/X/Makefile.am		\ | ||||
| 	$(DIRECTORY)/src/X/Makefile.in		\ | ||||
| 	$(DIRECTORY)/src/X/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/X86/*.[ch]		\ | ||||
| 	$(DIRECTORY)/src/X86/Makefile.am	\ | ||||
| 	$(DIRECTORY)/src/X86/Makefile.in	\ | ||||
| 	$(DIRECTORY)/src/X86/*.m4		\ | ||||
| 	$(DIRECTORY)/src/X86/*.S		\ | ||||
| 	$(DIRECTORY)/src/*.dja			\ | ||||
| 	$(DIRECTORY)/src-glu/README[12]		\ | ||||
| 	$(DIRECTORY)/src-glu/Makefile*		\ | ||||
| 	$(DIRECTORY)/src-glu/descrip.mms	\ | ||||
| 	$(DIRECTORY)/src-glu/mms_depend		\ | ||||
| 	$(DIRECTORY)/src-glu/*.def		\ | ||||
| 	$(DIRECTORY)/src-glu/*.dja		\ | ||||
| 	$(DIRECTORY)/src-glu/depend		\ | ||||
| 	$(DIRECTORY)/src-glu/*.[ch]		\ | ||||
| 	$(DIRECTORY)/widgets-mesa		\ | ||||
| 	$(DIRECTORY)/widgets-sgi		\ | ||||
| 	$(DIRECTORY)/util/README		\ | ||||
| 	$(DIRECTORY)/util/Makefile.am		\ | ||||
| 	$(DIRECTORY)/util/Makefile.in		\ | ||||
| 	$(DIRECTORY)/util/*.[ch]		\ | ||||
| 	$(DIRECTORY)/util/sampleMakefile	\ | ||||
| 	$(DIRECTORY)/BeOS/Makefile		\ | ||||
| 	$(DIRECTORY)/BeOS/*.cpp			 | ||||
|  | ||||
| # old stuff | ||||
| #	$(DIRECTORY)/Win32			\ | ||||
| #	$(DIRECTORY)/win32 | ||||
|  | ||||
| #	$(DIRECTORY)/OpenStep			\ | ||||
| # | ||||
| # | ||||
| 	$(DIRECTORY)/src/KNOWN_BUGS				\ | ||||
| 	$(DIRECTORY)/src/MGL/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/MGL/*.txt				\ | ||||
| 	$(DIRECTORY)/src/OSmesa/Makefile.am			\ | ||||
| 	$(DIRECTORY)/src/OSmesa/Makefile.in			\ | ||||
| 	$(DIRECTORY)/src/OSmesa/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/S3/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/S3/*.def				\ | ||||
| 	$(DIRECTORY)/src/S3/*.mak				\ | ||||
| 	$(DIRECTORY)/src/S3/*.rc				\ | ||||
| 	$(DIRECTORY)/src/SVGA/Makefile.am			\ | ||||
| 	$(DIRECTORY)/src/SVGA/Makefile.in			\ | ||||
| 	$(DIRECTORY)/src/SVGA/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/Windows/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/Windows/*.def				\ | ||||
| 	$(DIRECTORY)/src/X/Makefile.am				\ | ||||
| 	$(DIRECTORY)/src/X/Makefile.in				\ | ||||
| 	$(DIRECTORY)/src/X/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/X86/*.[ch]				\ | ||||
| 	$(DIRECTORY)/src/X86/Makefile.am			\ | ||||
| 	$(DIRECTORY)/src/X86/Makefile.in			\ | ||||
| 	$(DIRECTORY)/src/X86/*.m4				\ | ||||
| 	$(DIRECTORY)/src/X86/*.S				\ | ||||
| 	$(DIRECTORY)/src/*.dja					\ | ||||
| 	$(DIRECTORY)/src-glu/README[12]				\ | ||||
| 	$(DIRECTORY)/src-glu/Makefile*				\ | ||||
| 	$(DIRECTORY)/src-glu/descrip.mms			\ | ||||
| 	$(DIRECTORY)/src-glu/mms_depend				\ | ||||
| 	$(DIRECTORY)/src-glu/*.def				\ | ||||
| 	$(DIRECTORY)/src-glu/*.dja				\ | ||||
| 	$(DIRECTORY)/src-glu/depend				\ | ||||
| 	$(DIRECTORY)/src-glu/*.[ch]				\ | ||||
| 	$(DIRECTORY)/widgets-mesa				\ | ||||
| 	$(DIRECTORY)/widgets-sgi				\ | ||||
| 	$(DIRECTORY)/util/README				\ | ||||
| 	$(DIRECTORY)/util/Makefile.am				\ | ||||
| 	$(DIRECTORY)/util/Makefile.in				\ | ||||
| 	$(DIRECTORY)/util/*.[ch]				\ | ||||
| 	$(DIRECTORY)/util/sampleMakefile			\ | ||||
| 	$(DIRECTORY)/BeOS/Makefile				\ | ||||
| 	$(DIRECTORY)/BeOS/*.cpp					\ | ||||
| 	$(DIRECTORY)/WIN32/NMAKE.MAK				\ | ||||
| 	$(DIRECTORY)/WIN32/NMAKE.MIF				\ | ||||
| 	$(DIRECTORY)/WIN32/RES/*rc				\ | ||||
| 	$(DIRECTORY)/WIN32/RES/*def				\ | ||||
| 	$(DIRECTORY)/WIN32/RULES/lib.*				\ | ||||
| 	$(DIRECTORY)/WIN32/RULES/progs.*			\ | ||||
| 	$(DIRECTORY)/macos/README				\ | ||||
| 	$(DIRECTORY)/macos/gli_api/*.h				\ | ||||
| 	$(DIRECTORY)/macos/include-mac/*.h			\ | ||||
| 	$(DIRECTORY)/macos/libraries/*.stub			\ | ||||
| 	$(DIRECTORY)/macos/libraries/*Stub			\ | ||||
| 	$(DIRECTORY)/macos/projects/*.mcp			\ | ||||
| 	$(DIRECTORY)/macos/projects/*.exp			\ | ||||
| 	$(DIRECTORY)/macos/projects/*.h				\ | ||||
| 	$(DIRECTORY)/macos/resources/*.c			\ | ||||
| 	$(DIRECTORY)/macos/resources/*.r			\ | ||||
| 	$(DIRECTORY)/macos/resources/*.rsrc			\ | ||||
| 	$(DIRECTORY)/macos/src-agl/*.exp			\ | ||||
| 	$(DIRECTORY)/macos/src-agl/*.[ch]			\ | ||||
| 	$(DIRECTORY)/macos/src-gli/*.[ch]			\ | ||||
| 	$(DIRECTORY)/OpenStep					\ | ||||
|  | ||||
|  | ||||
| DEMO_FILES =	\ | ||||
| @@ -517,13 +538,13 @@ DEMO_FILES =	\ | ||||
|  | ||||
| lib_tar: | ||||
| 	cd .. ; \ | ||||
| 	tar -cvf $(LIB_NAME).tar $(LIB_FILES) ; \ | ||||
| 	tar --exclude CVS -c -v -f $(LIB_NAME).tar $(LIB_FILES) ; \ | ||||
| 	gzip $(LIB_NAME).tar ; \ | ||||
| 	mv $(LIB_NAME).tar.gz $(DIRECTORY) | ||||
|  | ||||
| demo_tar: | ||||
| 	cd .. ; \ | ||||
| 	tar -cvf $(DEMO_NAME).tar $(DEMO_FILES) ; \ | ||||
| 	tar --exclude CVS -c -v -f $(DEMO_NAME).tar $(DEMO_FILES) ; \ | ||||
| 	gzip $(DEMO_NAME).tar ; \ | ||||
| 	mv $(DEMO_NAME).tar.gz $(DIRECTORY) | ||||
|  | ||||
|   | ||||
| @@ -1,13 +1,8 @@ | ||||
|  | ||||
|                      3Dfx Glide device driver for Mesa 3.1 | ||||
|                      3Dfx Glide device driver for Mesa 3.2 | ||||
| 				(see below for FAQ) | ||||
|  | ||||
|  | ||||
| This software is distributed under the terms of the GNU Library | ||||
| General Public License, see the LICENSE file for details. | ||||
|  | ||||
|  | ||||
|  | ||||
| What do you need ? | ||||
| ------------------ | ||||
|  | ||||
| @@ -327,6 +322,11 @@ The Mesa/Voodoo Environment Variables: | ||||
| 		export MESA_FX_INFO=1 | ||||
|           you will get some useful statistic. | ||||
|  | ||||
|         - If you define the env. var. MESA_FX_NO_SIGNALS: | ||||
| 		export MESA_FX_NO_SIGNALS=1 | ||||
|           Mesa/FX will not install atexit() or signal() handlers. | ||||
|  | ||||
|  | ||||
|  | ||||
| Know BUGS and Problems: | ||||
| ----------------------- | ||||
| @@ -541,9 +541,7 @@ No because the Linux Glide doesn't (yet) support the Voodoo Rush. | ||||
| a binary copy of the Mesa in order to make the software | ||||
| working out of the box ? | ||||
|  | ||||
| Yes, you have simply to include some informations about authors | ||||
| and where the library sources are available (check the LICENSE | ||||
| file for more informations about the GNU GPL). | ||||
| Yes. | ||||
|  | ||||
|  | ||||
| 11. Which is the best make target for compiling the Mesa for | ||||
|   | ||||
| @@ -28,7 +28,7 @@ working.  No optimizations have been made at this time. | ||||
|  | ||||
| Compiling | ||||
|  | ||||
| Simply cd to the Mesa-3.x directory and type "make beos-r4". | ||||
| In the Mesa-3.x directory type "make -f Makefile.X11 beos-r4". | ||||
| When it finishes the libMesaGL.so and libMesaGLU.so libraries for | ||||
| BeOS will be in the Mesa-3.x/lib/ directory. | ||||
|  | ||||
| @@ -99,4 +99,4 @@ of February, 1999. | ||||
|  | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: README.BEOS,v 1.5 1999/03/03 02:34:04 brianp Exp $ | ||||
| $Id: README.BEOS,v 1.5.6.1 1999/11/27 01:39:50 brianp Exp $ | ||||
|   | ||||
| @@ -1,120 +1,50 @@ | ||||
| August 30, 1998 -- Paul Garceau (pgarceau@teleport.com) | ||||
| August 30, 1998 -- Paul Garceau | ||||
| Updated January 13, 2000 -- Paul Garceau (pgarceau@teleport.com) | ||||
|  | ||||
| DISCLAIMER:  I make this extension to the Mesa 3-D Graphics Library as a service | ||||
| DISCLAIMER:  I make this port of the Mesa 3-D Graphics Library as a service | ||||
| to the general public.  I can, in no way support or make any guarantee that the | ||||
| EGCS-Mingw32 build or any Gnu-Win32 build will work for your system. The | ||||
| associated packages and batch files I have included as part of the EGCS-Mingw32 | ||||
| extension are provided "As-is" with out any guarantee of support or functionality | ||||
| from the author of this EGCS-Mingw32 native windows port of the Mesa 3-D Graphics | ||||
| Library. | ||||
| build will work for your system. | ||||
|  | ||||
| 	The associated packages and batch files I have included as part of the GCC-2.95.2/Mingw32 extension are provided "As-is" with out any guarantee of support or functionality from this author. | ||||
|  | ||||
| 	Feel free to modify or change things as you see fit, just remember that | ||||
| I can't support any modifications you might want to make to the files which I | ||||
| have included OR the lgpl protected Mesa 3-D Graphics Library. | ||||
|  | ||||
| 	I recommend using GCC-2.95.2/Mingw32 which is available at Mumit Khans' ftp site: | ||||
|  | ||||
| 	EGCS-Mingw32 Beta 3.08 Archive Manifest: | ||||
| 		mingw32.bat | ||||
| 		src/makefile.nt4 | ||||
| 		src/wmesa.c | ||||
| 		src-glu/makefile.nt4 | ||||
| 		(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/) | ||||
|  | ||||
| ############### | ||||
| 	This build has been tested under WinNT4/SP6.  Win9x and WinNT5 remain untested by me.  I have not tested any of the demos included with Mesa3d. | ||||
|  | ||||
| Greetings, | ||||
| 	I recommend using the GCC-2.95.2/Mingw32. | ||||
|  | ||||
| 	In order to build the Mingw32 set of Mesa 3-D Graphics Library for Beta3.08 | ||||
| it will be necessary for you to use the Dos or Command Prompt that is available | ||||
| on most of the i86 based MS Windows machines.  Also, I believe that this build | ||||
| will run on Win95, Win98, WinNT4 and WinNT5. | ||||
|  | ||||
| 	I haven't tested Win95/98 or WinNT5.  This build was generated under | ||||
| WinNT4 with SP3 installed. | ||||
|  | ||||
| 	This has not been tested under any systems outside of | ||||
| a WinNT4 Workstation with EGCS-Mingw32 toolchain, v.1.0.2 installed. | ||||
|  | ||||
| 	EGCS-Mingw32 uses a variation of gcc to handle its build.  The Mesa 3-D | ||||
| Graphics Library build that I have generated is based, in small part, on the | ||||
| Cygwin32 build and associated makefiles that Stephane Rehel (rehel@worldnet.fr) | ||||
| defined back in 1997.  The EGCS-Mingw32 toolchain is capable of generating | ||||
| native windows code and, as of the date of this readme, can be obtained from: | ||||
|  | ||||
| 	http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs-mingw32-102.html | ||||
| 	ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95.2 | ||||
|  | ||||
| 	Much thanks to the combined efforts of Mumit Khan, Jan-Jaap Vanderhagen | ||||
| and Colin Peters for making it possible for the EGCS-Mingw32 toolchain to exist. | ||||
| and Colin Peters for making it possible for the Mingw32 toolchain to exist.  Also, thanks go out to Stephane Rehel for the work that was completed on the Cygwin build. | ||||
|  | ||||
| Installing EGCS-Mingw32 Build Revisions: | ||||
| Installing GCC-2.95.2/Mingw32 Build: | ||||
|  | ||||
| 	To install the makefile and source revisions incorporated with this build | ||||
| of the Mesa 3-D Graphics Library, you'll have to use a version of winzip.  I am | ||||
| in the process of finding a suitable Win32 compatible tar executable so that if | ||||
| you don't have winzip, you can still decompress the files into their respective | ||||
| folders/directories. | ||||
| 	a) Open the file archive (either tar.gz or .zip extensions) | ||||
|  | ||||
| 	a) Move the mingw32.zip file to the top level of the hard drive on your | ||||
| system. | ||||
| 	b) Decide the directory you want to move the archived files to. | ||||
|  | ||||
| 	b) Copy all of the Beta 3.08 src/windows files to the src/ directory. | ||||
| 	d) Extract the files from the archive. | ||||
| 	 | ||||
| 	e) Edit the mingw32.bat file to accomodate your choice of directory structure. | ||||
|  | ||||
| 	b) Open the Winzip file | ||||
|  | ||||
| 	c) Verify that the files will be properly extracted. | ||||
|  | ||||
| 	d) Extract the files with the Winzip "Overwrite" and "Use Folder Names" | ||||
| 	   options enabled. | ||||
|  | ||||
| 	The zip file directory structure extraction defaults to the top level of | ||||
| the hard drive where the mingw32.zip file exists unless otherwise instructed by | ||||
| you. | ||||
|  | ||||
| 	The version of wmesa.c included with the mingw32 archive needs to replace | ||||
| the current version of the Beta 3.08 wmesa.c file in order for the egcs-mingw32 | ||||
| build to work.  This is because the original Win32 stuff assumes that the glut | ||||
| utilities are to be installed.  The Glut utilities are not part of the | ||||
| egcs-mingw32 build for Beta 3.08. | ||||
|  | ||||
|  | ||||
| Build Considerations: | ||||
|  | ||||
| 	In order to get the build to work, I needed to create a special makefile | ||||
| for each library which the Mesa 3-D Graphics Library requires since there is no | ||||
| comparable make-config/config on a native windows platform. | ||||
|  | ||||
| 	Since I was only creating a few of the possible libraries for  | ||||
| Mesa (gl, glu), I only created the new make files in their respective libraries | ||||
| src, src-glu).  For libMesaaux.a. you will find a makefile for it in the | ||||
| src-aux directory.  libMesatk.a and libglut.a were not ported. | ||||
|  | ||||
| 	The build itself is a .bat based build and uses Gnu Make,Version 3.76.1 to | ||||
| process the makefiles noted above.  The build must be run from the directory | ||||
| where the mingw32.bat file is.  You can get the binary version of Make 3.76.1 | ||||
| from Jan-Jaap van der Heijden's site in Germany: | ||||
|  | ||||
| 	http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/download.html | ||||
|  | ||||
| 	It was necessary to modify some source code, specifically the source code | ||||
| in the src-glu directory.  I needed to modify nurbs.c, quadric.c and tess.c in | ||||
| order to get them to work using the EGCS-Mingw32 toolchain. | ||||
|  | ||||
| 	The original EGCS-Mingw32 Toolchain, is available from: | ||||
|  | ||||
| 	http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs-mingw32-102.html	 | ||||
| 		%mesaroot%:	This is your root directory (Mesa-3.2) | ||||
| 		%mesasrc%:	This is the Mesa-3.2 src directory (Mesa-3.2\src) | ||||
| 		%mesalib%:	This is where the build will put libGL.a and libGLU.a | ||||
|  | ||||
| Running the Build: | ||||
|  | ||||
| 	Ok, now that we've got the basics out of the way, follows is all you need | ||||
| to do in order to build the EGCS-Mingw32 version of libMesaGL.a and libMesaGLU.a: | ||||
|  | ||||
| 	Open your Command Prompt/Dos prompt. | ||||
| 	Go to your Mesa-3.0 beta 'root' directory. | ||||
| 		This is the same directory that the Mesa mingw32.zip file was | ||||
| 		originally stored in if you've installed the Mesa-3.0 beta 3-D | ||||
| 		Graphics Library source as outlined in the "readme" file included | ||||
| 		with the Mesa-3.0 beta distribution. | ||||
| 	Open your Command Prompt or MS-DOS prompt. | ||||
| 	Go to your Mesa-3.2 'root' directory | ||||
| 	At the command line type: mingw32 | ||||
| 		mingw32 is the .bat file that actually does the build. | ||||
|  | ||||
| 	That's all there is to it. | ||||
|  | ||||
| 	Enjoy! | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
|  | ||||
| 			Mesa 3.0 MITS Information | ||||
|  | ||||
|  | ||||
| This software is distributed under the terms of the GNU Library | ||||
| General Public License, see the LICENSE file for details. | ||||
| [The MITS code hasn't been update for Mesa 3.1 and may no longer work] | ||||
|  | ||||
|  | ||||
| This document is a preliminary introduction to help you get | ||||
|   | ||||
| @@ -1,33 +1,54 @@ | ||||
|  | ||||
|                          Mesa 3.0 Unix/X11 Information | ||||
|                          Mesa 3.1 Unix/X11 Information | ||||
|  | ||||
|  | ||||
|  | ||||
| Installation | ||||
| ============ | ||||
|  | ||||
| To compile the library, first type 'make' alone to see the list of system | ||||
| configurations currently supported.  If you see your configuration on the | ||||
| list, type 'make <config>'.  Most popular Unix/X workstations are currently | ||||
| supported. | ||||
| There are two ways to compile Mesa on Unix/X11 systems: | ||||
|  | ||||
| 1. The old way: | ||||
|     First type 'make' alone to see the list of system | ||||
|     configurations currently supported.  If you see your configuration on the | ||||
|     list, type 'make <config>'.  Most popular Unix/X workstations are currently | ||||
|     supported. | ||||
|  | ||||
|     If your system configuration is not listed by 'make', you'll have to modify | ||||
|     the top-level Makefile and Make-config files.  There are instructions in | ||||
|     each file. | ||||
|  | ||||
|  | ||||
| 2. The new way: | ||||
|     Type './configure' and then 'make'.  This uses GNU autoconfig. | ||||
|     See docs/INSTALL for more details. | ||||
|  | ||||
|  | ||||
| The top-level makefile will execute the makefiles in a number of sub- | ||||
| directories.  When finished, the Mesa libraries will be in the Mesa-2.6/lib/ | ||||
| directories.  When finished, the Mesa libraries will be in the Mesa-3.1/lib/ | ||||
| directory.  A few GLUT demos in the demos/ directory should be ready to run. | ||||
|  | ||||
| If you also downloaded and unpacked the demos there should be executables | ||||
| in the "xdemos/", "samples/", and "book/" directories for you to try out. | ||||
| If you only want to compile the contents of one subdirectory you can 'cd' | ||||
| to that directory and type 'make <config>' there. | ||||
|  | ||||
| If your system configuration is not listed by 'make', you'll have to modify | ||||
| the top-level Makefile and Make-config files.  There are instructions in | ||||
| each file. | ||||
|  | ||||
| If you have compilation problems you should try to fix them and return the | ||||
| patches to the author. | ||||
|  | ||||
|  | ||||
| Notes on assembly language optimizations: | ||||
|  | ||||
|    When using the old-style Makefiles, you can specify a configuration | ||||
|    that uses X86 assembly language optimizations (linux-3dnow for example). | ||||
|  | ||||
|    The detection of MMX, 3DNow!, PIII/SSE, etc capability is done at | ||||
|    runtime.  That means you can compile Mesa for 3DNow! optimizations | ||||
|    even if you don't have an AMD CPU. | ||||
|  | ||||
|    However, your Linux binutils and assembler must understand the | ||||
|    special instructions in order to compile them.  If you have | ||||
|    compilation problems, try upgrading your binutils. | ||||
|  | ||||
|  | ||||
| Header and library files: | ||||
|    After you've compiled Mesa and tried the demos I recommend the following | ||||
|    procedure for "installing" Mesa. | ||||
| @@ -301,4 +322,4 @@ Summary of X-related environment variables: | ||||
|  | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: README.X11,v 3.3 1999/09/15 16:39:01 brianp Exp $ | ||||
| $Id: README.X11,v 3.3.2.3 2000/01/25 17:18:46 brianp Exp $ | ||||
|   | ||||
							
								
								
									
										146
									
								
								docs/RELNOTES-3.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								docs/RELNOTES-3.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | ||||
|  | ||||
|                          Mesa 3.1 release notes | ||||
|  | ||||
|                              PLEASE READ!!!! | ||||
|  | ||||
|  | ||||
| New copyright | ||||
| ------------- | ||||
|  | ||||
| Mesa 3.1 will be distributed under an XFree86-style copyright instead | ||||
| of the GNU LGPL. | ||||
|  | ||||
|  | ||||
| New directories | ||||
| --------------- | ||||
|  | ||||
| All documentation files are now in the docs/ directory. | ||||
| All shell scripts are now in the bin/ directory. | ||||
|  | ||||
|  | ||||
| New library names | ||||
| ----------------- | ||||
|  | ||||
| Formerly, the main Mesa library was named libMesaGL.so (or libMesaGL.a) | ||||
| and the GLU library was named libMesaGLU.so (or libMesaGLU.a). | ||||
|  | ||||
| Now, the main library is named libGL.so (or libGL.a) and the GLU library | ||||
| is named libGLU.so (or libGLU.a). | ||||
|  | ||||
| The change allows Mesa to be more easily substituted for OpenGL. | ||||
| Specifically, the linker/loader on some Unix-like systems won't | ||||
| allow libMesaGL.so to be used instead of libGL.so if the application | ||||
| was linked with the former. | ||||
|  | ||||
| Warning: if you have another OpenGL implementation installed on your | ||||
| system (i.e. you have another OpenGL libGL.so) you'll have to be | ||||
| carefull about which library (OpenGL or Mesa) you link against.  Be | ||||
| aware of -L linker flags and the value of the LD_LIBRARY_PATH environment | ||||
| variable. | ||||
|  | ||||
|  | ||||
| New library versioning | ||||
| ---------------------- | ||||
|  | ||||
| Previously, the Mesa GL library was named libMesaGL.so.3.0 | ||||
| To better support Linux/OpenGL standards, the Mesa GL library is now | ||||
| named libGL.so.1.2.030100  This indicates version 1.2 of the OpenGL spec | ||||
| and Mesa implementation 3.1.0 | ||||
|  | ||||
| In the long term this will allow better interoperability with other | ||||
| OpenGL implementations, especially on Linux.  In the short term, | ||||
| OpenGL apps may have to be relinked to use the new library naming. | ||||
|  | ||||
|  | ||||
|  | ||||
| New makefiles | ||||
| ------------- | ||||
|  | ||||
| The old Makefiles found in the various directories have been renamed | ||||
| to Makefile.X11 in order to prevent filename collisions with autoconfig- | ||||
| generated Makefiles. | ||||
|  | ||||
| The top-level Makefile simply includes Makefile.X11 | ||||
| If your top-level Makefile get's overwritten/destroyed you can restore | ||||
| it by copying Makefile.X11 to Makefile | ||||
|  | ||||
|  | ||||
| New extensions | ||||
| -------------- | ||||
|  | ||||
| GL_EXT_stencil_wrap | ||||
| 	Implements two new stencil operations: GL_INCR_WRAP_EXT and | ||||
| 	GL_DECR_WRAP_EXT which allow stencil increment and decrement | ||||
| 	without clamping. | ||||
|  | ||||
| GL_INGR_blend_func_separate | ||||
| 	Allows specification of blend factors for RGB and Alpha independently. | ||||
| 	(INGR = Intergraph) | ||||
|  | ||||
| GL_ARB_multitexture | ||||
| 	Multiple simultaneous textures.  (ARB = Architecture Review Board) | ||||
|  | ||||
| GL_NV_texgen_reflection | ||||
| 	nVidia texgen extension for better reflection mapping. | ||||
|  | ||||
| GL_PGI_misc_hints | ||||
| 	Assorted transformation hints. | ||||
|  | ||||
| GL_EXT_compiled_vertex_array | ||||
| 	Compiled vertex arrays. | ||||
|  | ||||
| GL_EXT_clip_volume_hint | ||||
| 	Allows one to disable clip volume (frustum) testing. | ||||
|  | ||||
|  | ||||
|  | ||||
| Extensions removed | ||||
| ------------------ | ||||
|  | ||||
| GL_EXT_multitexture - obsolete in favor of GL_ARB_multitexture | ||||
|  | ||||
|  | ||||
|  | ||||
| Config file | ||||
| ----------- | ||||
|  | ||||
| By default, /etc/mesa.conf will be read when Mesa starts.  This | ||||
| file controls default hints, enable/disable of extensions, and | ||||
| more.  See the CONFIG file for documentation. | ||||
|  | ||||
|  | ||||
|  | ||||
| Optimizations | ||||
| ------------- | ||||
|  | ||||
| Keith Whitwell has contributed significant optimizations to Mesa's | ||||
| vertex transformation code.  Basically, the whole transformation | ||||
| stage of Mesa has been rewritten. | ||||
|  | ||||
| It's impossible to give a speedup factor.  You'll just have to | ||||
| try your app and see how it performs. | ||||
|  | ||||
|  | ||||
|  | ||||
| Device Driver changes | ||||
| --------------------- | ||||
|  | ||||
| A bunch of new device driver functions have been added.  See src/dd.h | ||||
| Keith Harrison contributed many of them.  I've been planning on adding | ||||
| a bunch of functions like these to make writing hardware drivers easier. | ||||
| More such function will probably be added in the near future. | ||||
|  | ||||
|  | ||||
|  | ||||
| Miscellaneous | ||||
| ------------- | ||||
|  | ||||
| util/glstate.c has some handy functions for debugging.  Basically, it | ||||
| offers a simple function for printing GL state variables.  It's not | ||||
| finished yet.  There's a LOT more GLenum records to be added (see the | ||||
| code).  Anyone want to help? | ||||
|  | ||||
|  | ||||
|  | ||||
| ---------------------------------------------------------------------- | ||||
| $Id: RELNOTES-3.1,v 1.1.2.1 2000/02/22 17:56:56 brianp Exp $ | ||||
| @@ -1,4 +1,4 @@ | ||||
| $Id: VERSIONS,v 1.13 1999/09/19 20:09:00 tanner Exp $ | ||||
| $Id: VERSIONS,v 1.13.2.24 2000/03/23 00:12:41 brianp Exp $ | ||||
|  | ||||
|  | ||||
| Mesa Version History | ||||
| @@ -659,3 +659,52 @@ Mesa Version History | ||||
| 	- New library numbering: libGL.so.1.2.310 | ||||
| 	- New subdirectories:  docs/ and bin/ | ||||
| 	- New Makefile-system (autoconf,automake,libtool) | ||||
|  | ||||
|  | ||||
| 3.1 final  December 14, 1999 | ||||
|     New: | ||||
| 	- added demos/gloss.c | ||||
| 	- added xdemos/glxdpyinfo.c | ||||
| 	- added GLX_ARB_get_proc_address extension | ||||
|     Bug fixes: | ||||
| 	- several vertex array bug fixes | ||||
| 	- overlapping glCopyPixels with pixel zooming now works | ||||
| 	- glXUseXFont() bitmaps were vertically shifted by one pixel | ||||
|  | ||||
|  | ||||
| 3.2 beta 1 March 23, 2000 | ||||
|     Bug fixes: | ||||
| 	- mixed drawing of lines and bitmaps sometimes had wrong colors | ||||
| 	- added missing glHintPGI() function | ||||
| 	- fixed a polygon culling bug | ||||
| 	- fixed bugs in gluPartialDisk() | ||||
| 	- Z values in selection mode were wrong | ||||
| 	- added missing tokens: | ||||
| 		GL_SMOOTH_POINT_SIZE_RANGE | ||||
| 		GL_SMOOTH_POINT_SIZE_GRANULARITY | ||||
| 		GL_SMOOTH_LINE_WIDTH_RANGE | ||||
| 		GL_SMOOTH_LINE_WIDTH_GRANULARITY | ||||
| 		GL_ALIASED_POINT_SIZE_RANGE | ||||
| 		GL_ALIASED_LINE_WIDTH_RANGE | ||||
| 	- fixed glCopyPixels when copying from back to front buffer | ||||
| 	- GL_EXT_compiled_vertex_array tokens had _SGI suffix instead of _EXT | ||||
| 	- glDrawRangeElements(GL_LINES, 0, 1, 2, type, indices) was broken | ||||
| 	- glDeleteTextures() didn't decrement reference count correctly | ||||
| 	- GL_SRCA_ALPHA_SATURATE blend mode didn't work correctly | ||||
| 	- Actual depth of transformation matrix stacks was off by one | ||||
| 	- 24bpp visuals didn't address pixels correctly | ||||
| 	- mipmap level of detail (lambda) calculation simplified, more accurate | ||||
| 	- 101691 - Polygon clipping and GL_LINE | ||||
| 	- 101928 - Polygon clipping and GL_LINE (same fix as above) | ||||
| 	- 101808 - Non-glVertexArrays tristrip bug | ||||
| 	- 101971 - find_last_3f on Dec OSF (worked around) | ||||
| 	- 102369 - segv on dec osf (possibly a duplicate of the above) | ||||
| 	- 102893 - orientations of modelview cause segfault | ||||
|     New: | ||||
| 	- updated SVGA Linux driver | ||||
| 	- added the MESA_FX_NO_SIGNALS env var, see docs/README.3DFX | ||||
| 	- build libGLw.a (Xt/OpenGL drawing area widget) library by default | ||||
| 	- changed -O2 to -O3 for a number of gcc configs | ||||
|     Changes: | ||||
|         - glXCopyContext's mask parameter is now unsigned long, per GLX spec | ||||
|  | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: amesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: amesa.h,v 1.1.1.1.2.1 2000/02/09 18:53:54 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Version:  3.2 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2000  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"), | ||||
| @@ -25,25 +25,17 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: amesa.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * | ||||
|  * Revision 1.1  1999/03/16 01:24:13  brianp | ||||
|  * initial check-in | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* Allegro (DJGPP) driver by Bernhard Tschirren (bernie-t@geocities.com) */ | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifndef AMESA_H | ||||
| #define AMESA_H | ||||
|  | ||||
|  | ||||
| #define AMESA_MAJOR_VERSION 3 | ||||
| #define AMESA_MINOR_VERSION 2 | ||||
|  | ||||
|  | ||||
| typedef struct amesa_visual  *AMesaVisual; | ||||
| typedef struct amesa_buffer  *AMesaBuffer; | ||||
| typedef struct amesa_context *AMesaContext; | ||||
|   | ||||
| @@ -1,40 +1,27 @@ | ||||
| /* $Id: fxmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: fxmesa.h,v 1.1.1.1.2.2 2000/02/09 18:53:55 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Copyright (C) 1995-1999  Brian Paul | ||||
|  * Version:  3.2 | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * 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: | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: fxmesa.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * | ||||
|  * Revision 3.2  1999/01/03 02:46:31  brianp | ||||
|  * now using GLAPI and GLAPIENTRY keywords (Ted Jump) | ||||
|  * | ||||
|  * Revision 3.1  1998/04/01 03:00:28  brianp | ||||
|  * updated for v0.24 of 3Dfx/Glide driver | ||||
|  * | ||||
|  * Revision 3.0  1998/02/20 05:04:45  brianp | ||||
|  * initial rev | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| @@ -58,7 +45,7 @@ extern "C" { | ||||
|  | ||||
|  | ||||
| #define FXMESA_MAJOR_VERSION 3 | ||||
| #define FXMESA_MINOR_VERSION 0 | ||||
| #define FXMESA_MINOR_VERSION 2 | ||||
|  | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* $Id: ggimesa.h,v 1.2 1999/08/23 22:34:08 jtaylor Exp $ */ | ||||
| /* $Id: ggimesa.h,v 1.2.2.1 2000/02/09 18:53:55 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * Copyright (C) 1998  Uwe Maurer | ||||
|  * | ||||
| @@ -22,23 +22,14 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: ggimesa.h,v $ | ||||
|  * Revision 1.2  1999/08/23 22:34:08  jtaylor | ||||
|  * Misc small cleanups | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:40  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 1.2  1998/09/29 01:46:40  brianp | ||||
|  * applied Emmanuel Marty's patches for latest GGI | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef GGIMESA_H | ||||
| #define GGIMESA_H | ||||
|  | ||||
|  | ||||
| #define GGIMESA_MAJOR_VERSION 3 | ||||
| #define GGIMESA_MINOR_VERSION 2 | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|   | ||||
							
								
								
									
										2485
									
								
								include/GL/gl.h
									
									
									
									
									
								
							
							
						
						
									
										2485
									
								
								include/GL/gl.h
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,8 +1,8 @@ | ||||
| /* $Id: gl_mangle.h,v 1.3 1999/11/04 00:43:09 miklos Exp $ */ | ||||
| /* $Id: gl_mangle.h,v 1.3.2.1 2000/01/04 08:08:28 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Version:  3.2 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  *  | ||||
| @@ -396,6 +396,8 @@ | ||||
| #define glTexSubImage3DEXT mglTexSubImage3DEXT | ||||
| #define glCopyTexSubImage3DEXT mglCopyTexSubImage3DEXT | ||||
| #define glColorTable mglColorTable | ||||
| #define glColorTableParameteriv mglColorTableParameteriv | ||||
| #define glColorTableParameterfv mglColorTableParameterfv | ||||
| #define glColorSubTable mglColorSubTable | ||||
| #define glGetColorTable mglGetColorTable | ||||
| #define glGetColorTableParameteriv mglGetColorTableParameteriv  | ||||
|   | ||||
| @@ -108,7 +108,7 @@ extern _CRTIMP void __cdecl exit(int); | ||||
|    and redifinition of Windows system defs, also removes requirement of | ||||
|    pretty much any standard windows header from this file */ | ||||
|  | ||||
| #if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) | ||||
| #if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__) | ||||
| #	define GLUTAPIENTRY __stdcall | ||||
| #else | ||||
| #	define GLUTAPIENTRY | ||||
| @@ -152,7 +152,7 @@ typedef unsigned long COLORREF; | ||||
| #		define wglUseFontOutlines  wglUseFontOutlinesA | ||||
| #	endif /* !UNICODE */ | ||||
| typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR; | ||||
| typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT | ||||
| typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT; | ||||
| #  pragma warning( push ) | ||||
| #  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */ | ||||
| #  define WGLAPI __declspec(dllimport) | ||||
| @@ -183,7 +183,7 @@ WGLAPI int   GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, u | ||||
| WGLAPI int   GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT); | ||||
| WGLAPI int   GLAPIENTRY SwapBuffers(HDC); | ||||
| WGLAPI int   GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *); | ||||
| WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned long,LPPIXELFORMATDESCRIPTOR); | ||||
| WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,LPPIXELFORMATDESCRIPTOR); | ||||
| WGLAPI int   GLAPIENTRY GetPixelFormat(HDC); | ||||
| WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *); | ||||
| #  undef WGLAPI | ||||
| @@ -739,7 +739,6 @@ GLUTAPI int GLUTAPIENTRY glutGameModeGet(GLenum mode); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #if 0 | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: glx.h,v 1.6 1999/11/11 01:27:17 brianp Exp $ */ | ||||
| /* $Id: glx.h,v 1.5.2.3 2000/02/23 23:05:07 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Version:  3.2 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2000  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"), | ||||
| @@ -50,41 +50,38 @@ extern "C" { | ||||
|  | ||||
| #define GLX_VERSION_1_1		1 | ||||
|  | ||||
| #define GLX_EXTENSION_NAME   "GLX" | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Tokens for glXChooseVisual and glXGetConfig: | ||||
|  */ | ||||
| #define GLX_USE_GL		1 | ||||
| #define GLX_BUFFER_SIZE		2 | ||||
| #define GLX_LEVEL		3 | ||||
| #define GLX_RGBA		4 | ||||
| #define GLX_DOUBLEBUFFER	5 | ||||
| #define GLX_STEREO		6 | ||||
| #define GLX_AUX_BUFFERS		7 | ||||
| #define GLX_RED_SIZE		8 | ||||
| #define GLX_GREEN_SIZE		9 | ||||
| #define GLX_BLUE_SIZE		10 | ||||
| #define GLX_ALPHA_SIZE		11 | ||||
| #define GLX_DEPTH_SIZE		12 | ||||
| #define GLX_STENCIL_SIZE	13 | ||||
| #define GLX_ACCUM_RED_SIZE	14 | ||||
| #define GLX_ACCUM_GREEN_SIZE	15 | ||||
| #define GLX_ACCUM_BLUE_SIZE	16 | ||||
| #define GLX_ACCUM_ALPHA_SIZE	17 | ||||
|  | ||||
|  | ||||
| /* GLX_EXT_visual_info extension */ | ||||
| #define GLX_X_VISUAL_TYPE_EXT		0x22 | ||||
| #define GLX_TRANSPARENT_TYPE_EXT	0x23 | ||||
| #define GLX_TRANSPARENT_INDEX_VALUE_EXT	0x24 | ||||
| #define GLX_TRANSPARENT_RED_VALUE_EXT	0x25 | ||||
| #define GLX_TRANSPARENT_GREEN_VALUE_EXT	0x26 | ||||
| #define GLX_TRANSPARENT_BLUE_VALUE_EXT	0x27 | ||||
| #define GLX_TRANSPARENT_ALPHA_VALUE_EXT	0x28 | ||||
| enum _GLX_CONFIGS { | ||||
| 	GLX_USE_GL		= 1, | ||||
| 	GLX_BUFFER_SIZE		= 2, | ||||
| 	GLX_LEVEL		= 3, | ||||
| 	GLX_RGBA		= 4, | ||||
| 	GLX_DOUBLEBUFFER	= 5,  | ||||
| 	GLX_STEREO		= 6, | ||||
| 	GLX_AUX_BUFFERS		= 7, | ||||
| 	GLX_RED_SIZE		= 8, | ||||
| 	GLX_GREEN_SIZE		= 9, | ||||
| 	GLX_BLUE_SIZE		= 10, | ||||
| 	GLX_ALPHA_SIZE		= 11, | ||||
| 	GLX_DEPTH_SIZE		= 12, | ||||
| 	GLX_STENCIL_SIZE	= 13, | ||||
| 	GLX_ACCUM_RED_SIZE	= 14, | ||||
| 	GLX_ACCUM_GREEN_SIZE	= 15, | ||||
| 	GLX_ACCUM_BLUE_SIZE	= 16, | ||||
| 	GLX_ACCUM_ALPHA_SIZE	= 17, | ||||
|  | ||||
| 	/* GLX_EXT_visual_info extension */ | ||||
| 	GLX_X_VISUAL_TYPE_EXT		= 0x22, | ||||
| 	GLX_TRANSPARENT_TYPE_EXT	= 0x23, | ||||
| 	GLX_TRANSPARENT_INDEX_VALUE_EXT	= 0x24, | ||||
| 	GLX_TRANSPARENT_RED_VALUE_EXT	= 0x25, | ||||
| 	GLX_TRANSPARENT_GREEN_VALUE_EXT	= 0x26, | ||||
| 	GLX_TRANSPARENT_BLUE_VALUE_EXT	= 0x27, | ||||
| 	GLX_TRANSPARENT_ALPHA_VALUE_EXT	= 0x28 | ||||
| }; | ||||
|  | ||||
|  | ||||
| /* | ||||
| @@ -125,12 +122,12 @@ extern "C" { | ||||
|  * Compile-time extension tests | ||||
|  */ | ||||
| #define GLX_EXT_visual_info		1 | ||||
| #define GLX_EXT_get_proc_address	1 | ||||
| #define GLX_MESA_pixmap_colormap	1 | ||||
| #define GLX_MESA_release_buffers	1 | ||||
| #define GLX_MESA_copy_sub_buffer	1 | ||||
| #define GLX_MESA_set_3dfx_mode		1 | ||||
| #define GLX_SGI_video_sync		1 | ||||
| #define GLX_ARB_get_proc_address	1 | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -159,7 +156,7 @@ extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, | ||||
| 			    GLXContext ctx); | ||||
|  | ||||
| extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||
| 			    GLuint mask ); | ||||
| 			    unsigned long mask ); | ||||
|  | ||||
| extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); | ||||
|  | ||||
| @@ -222,6 +219,10 @@ extern int glXWaitVideoSyncSGI(int divisor, int remainder, | ||||
|                                unsigned int *count); | ||||
|  | ||||
|  | ||||
| /* GLX_ARB_get_proc_address */ | ||||
| extern void (*glXGetProcAddressARB(const GLubyte *procName))(); | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|   | ||||
| @@ -1,11 +1,46 @@ | ||||
| /* $Id: mesa_wgl.h,v 1.2.2.2 1999/11/22 14:05:15 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * Copyright (C) 1999  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"), | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* prototypes for the Mesa WGL functions */ | ||||
| /* relocated here so that I could make GLUT get them properly */ | ||||
|  | ||||
| #ifndef GL_H | ||||
| #   include <gl/gl.h> | ||||
| #ifndef _mesa_wgl_h_ | ||||
| #define _mesa_wgl_h_ | ||||
|  | ||||
|  | ||||
| #include <gl/gl.h> | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #ifdef _MSC_VER | ||||
| #  pragma warning( disable : 4615 ) /* pragma warning : unknown user warning type*/ | ||||
| #  pragma warning( push ) | ||||
| #  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */ | ||||
| #endif | ||||
| @@ -37,10 +72,17 @@ WGLAPI int   GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, u | ||||
| WGLAPI int   GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT); | ||||
| WGLAPI int   GLAPIENTRY SwapBuffers(HDC); | ||||
| WGLAPI int   GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *); | ||||
| WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,PIXELFORMATDESCRIPTOR *); | ||||
| WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,LPPIXELFORMATDESCRIPTOR); | ||||
| WGLAPI int   GLAPIENTRY GetPixelFormat(HDC); | ||||
| WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *); | ||||
|  | ||||
| #ifdef _MSC_VER | ||||
| #  pragma warning( pop ) | ||||
| #endif | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #endif /* _mesa_wgl_h_ */ | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: osmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: osmesa.h,v 1.1.1.1.2.2 2000/02/09 18:53:55 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Version:  3.2 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2000  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"), | ||||
| @@ -25,26 +25,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: osmesa.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * | ||||
|  * Revision 1.4  1999/02/14 03:39:09  brianp | ||||
|  * new copyright | ||||
|  * | ||||
|  * Revision 1.3  1999/01/03 02:52:30  brianp | ||||
|  * now using GLAPI and GLAPIENTRY keywords (Ted Jump) | ||||
|  * | ||||
|  * Revision 1.2  1998/07/26 01:33:51  brianp | ||||
|  * added WINGDIAPI and APIENTRY keywords per Ted Jump | ||||
|  * | ||||
|  * Revision 1.1  1998/02/13 03:17:50  brianp | ||||
|  * Initial revision | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Mesa Off-Screen rendering interface. | ||||
|  * | ||||
| @@ -86,7 +66,7 @@ extern "C" { | ||||
|  | ||||
|  | ||||
| #define OSMESA_MAJOR_VERSION 3 | ||||
| #define OSMESA_MINOR_VERSION 0 | ||||
| #define OSMESA_MINOR_VERSION 2 | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| /* $Id: svgamesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: svgamesa.h,v 1.1.1.1.2.2 2000/01/22 19:58:02 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.0 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -21,18 +21,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: svgamesa.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * | ||||
|  * Revision 3.0  1998/02/20 05:07:24  brianp | ||||
|  * initial rev | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA/Mesa interface for Linux. | ||||
|  */ | ||||
| @@ -65,7 +53,7 @@ | ||||
|  | ||||
|  | ||||
| #define SVGAMESA_MAJOR_VERSION 3 | ||||
| #define SVGAMESA_MINOR_VERSION 0 | ||||
| #define SVGAMESA_MINOR_VERSION 2 | ||||
|  | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| @@ -87,16 +75,21 @@ typedef struct svgamesa_context *SVGAMesaContext; | ||||
| /* | ||||
|  * doubleBuffer flag new in version 2.4 | ||||
|  */ | ||||
| extern int SVGAMesaInit( int GraphMode ); | ||||
|  | ||||
| extern int SVGAMesaClose( void ); | ||||
|  | ||||
| extern SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ); | ||||
|  | ||||
| extern void SVGAMesaDestroyContext( SVGAMesaContext ctx ); | ||||
|  | ||||
| extern void SVGAMesaMakeCurrent( SVGAMesaContext ctx ); | ||||
|  | ||||
| extern SVGAMesaContext SVGAMesaGetCurrentContext( void ); | ||||
|  | ||||
| extern void SVGAMesaSwapBuffers( void ); | ||||
|  | ||||
| extern void SVGAMesaSetCI(int ndx, GLubyte red, GLubyte green, GLubyte blue); | ||||
|  | ||||
| extern SVGAMesaContext SVGAMesaGetCurrentContext( void ); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: xmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: xmesa.h,v 1.1.1.1.2.3 2000/02/09 18:53:55 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Version:  3.2 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2000  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"), | ||||
| @@ -25,23 +25,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: xmesa.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * | ||||
|  * Revision 1.3  1999/02/24 22:43:27  jens | ||||
|  * Name changes to get XMesa to compile standalone inside XFree86 | ||||
|  * | ||||
|  * Revision 1.2  1999/02/14 03:39:09  brianp | ||||
|  * new copyright | ||||
|  * | ||||
|  * Revision 1.1  1998/02/13 03:17:32  brianp | ||||
|  * Initial revision | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Mesa/X11 interface.  This header file serves as the documentation for | ||||
|  * the Mesa/X11 interface functions. | ||||
| @@ -96,6 +79,9 @@ extern "C" { | ||||
| #include <X11/Xlib.h> | ||||
| #include <X11/Xutil.h> | ||||
| #include "xmesa_x.h" | ||||
| #ifdef GLX_DIRECT_RENDERING | ||||
| #include "dri_mesa.h" | ||||
| #endif | ||||
| #endif | ||||
| #include "GL/gl.h" | ||||
|  | ||||
| @@ -106,7 +92,7 @@ extern struct Library *XLibBase; | ||||
|  | ||||
|  | ||||
| #define XMESA_MAJOR_VERSION 3 | ||||
| #define XMESA_MINOR_VERSION 0 | ||||
| #define XMESA_MINOR_VERSION 2 | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -131,7 +117,17 @@ typedef struct xmesa_visual *XMesaVisual; | ||||
|  | ||||
| typedef struct xmesa_buffer *XMesaBuffer; | ||||
|  | ||||
| #if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server) | ||||
| /* | ||||
|  * Initialize the XMesa driver. | ||||
|  */ | ||||
| extern GLboolean XMesaInitDriver( __DRIscreenPrivate *driScrnPriv ); | ||||
|  | ||||
| /* | ||||
|  * Reset the XMesa driver when the X server resets. | ||||
|  */ | ||||
| extern void XMesaResetDriver( __DRIscreenPrivate *driScrnPriv ); | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* | ||||
| @@ -179,7 +175,11 @@ extern void XMesaDestroyVisual( XMesaVisual v ); | ||||
|  * Return:  an XMesaContext or NULL if error. | ||||
|  */ | ||||
| extern XMesaContext XMesaCreateContext( XMesaVisual v, | ||||
| 					XMesaContext share_list ); | ||||
| 					XMesaContext share_list | ||||
| #if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server) | ||||
| 					, __DRIcontextPrivate *driContextPriv | ||||
| #endif | ||||
| 				      ); | ||||
|  | ||||
|  | ||||
| /* | ||||
| @@ -192,7 +192,12 @@ extern void XMesaDestroyContext( XMesaContext c ); | ||||
|  * Create an XMesaBuffer from an X window. | ||||
|  */ | ||||
| extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v, | ||||
| 					    XMesaWindow w ); | ||||
| 					    XMesaWindow w | ||||
| #if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server) | ||||
| 					    , __DRIdrawablePrivate *driDrawPriv | ||||
| #endif | ||||
| 					  ); | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
| @@ -200,7 +205,12 @@ extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v, | ||||
|  */ | ||||
| extern XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v, | ||||
| 					    XMesaPixmap p, | ||||
| 					    XMesaColormap cmap ); | ||||
| 					    XMesaColormap cmap | ||||
| #if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server) | ||||
| 					    , __DRIdrawablePrivate *driDrawPriv | ||||
| #endif | ||||
| 					  ); | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -30,7 +30,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  * Authors: | ||||
|  *   Kevin E. Martin <kevin@precisioninsight.com> | ||||
|  * | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_xf86.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ | ||||
|  * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_xf86.h,v 1.1.1.1.2.1 1999/12/13 21:54:19 brianp Exp $ | ||||
|  */ | ||||
|  | ||||
| #ifndef _XMESA_XF86_H_ | ||||
| @@ -52,29 +52,29 @@ typedef DDXPointRec XMesaPoint; | ||||
| typedef xColorItem  XMesaColor; | ||||
|  | ||||
| #define XMesaSetGeneric(__d,__gc,__val,__mask) \ | ||||
| { \ | ||||
| do { \ | ||||
|     CARD32 __v[1]; \ | ||||
|     (void) __d; \ | ||||
|     __v[0] = __val; \ | ||||
|     dixChangeGC(NullClient, __gc, __mask, __v, NULL); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaSetGenericPtr(__d,__gc,__pval,__mask) \ | ||||
| { \ | ||||
| do { \ | ||||
|     ChangeGCVal __v[1]; \ | ||||
|     (void) __d; \ | ||||
|     __v[0].ptr = __pval; \ | ||||
|     dixChangeGC(NullClient, __gc, __mask, NULL, __v); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaSetDashes(__d,__gc,__do,__dl,__n) \ | ||||
| { \ | ||||
| do { \ | ||||
|     (void) __d; \ | ||||
|     SetDashes(__gc, __do, __n, (unsigned char *)__dl); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaSetLineAttributes(__d,__gc,__lw,__ls,__cs,__js) \ | ||||
| { \ | ||||
| do { \ | ||||
|     CARD32 __v[4]; \ | ||||
|     (void) __d; \ | ||||
|     __v[0] = __lw; \ | ||||
| @@ -84,7 +84,7 @@ typedef xColorItem  XMesaColor; | ||||
|     dixChangeGC(NullClient, __gc, \ | ||||
| 		GCLineWidth|GCLineStyle|GCCapStyle|GCJoinStyle, \ | ||||
| 		__v, NULL); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaSetForeground(d,gc,v) XMesaSetGeneric(d,gc,v,GCForeground) | ||||
| #define XMesaSetBackground(d,gc,v) XMesaSetGeneric(d,gc,v,GCBackground) | ||||
| @@ -96,24 +96,24 @@ typedef xColorItem  XMesaColor; | ||||
| #define XMesaSetStipple(d,gc,v)    XMesaSetGenericPtr(d,gc,v,GCStipple) | ||||
|  | ||||
| #define XMesaDrawPoint(__d,__b,__gc,__x,__y) \ | ||||
| { \ | ||||
| do { \ | ||||
|     XMesaPoint __p[1]; \ | ||||
|     (void) __d; \ | ||||
|     __p[0].x = __x; \ | ||||
|     __p[0].y = __y; \ | ||||
|     ValidateGC(__b, __gc); \ | ||||
|     (*gc->ops->PolyPoint)(__b, __gc, CoordModeOrigin, 1, __p); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaDrawPoints(__d,__b,__gc,__p,__n,__m) \ | ||||
| { \ | ||||
| do { \ | ||||
|     (void) __d; \ | ||||
|     ValidateGC(__b, __gc); \ | ||||
|     (*gc->ops->PolyPoint)(__b, __gc, __m, __n, __p); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaDrawLine(__d,__b,__gc,__x0,__y0,__x1,__y1) \ | ||||
| { \ | ||||
| do { \ | ||||
|     XMesaPoint __p[2]; \ | ||||
|     (void) __d; \ | ||||
|     ValidateGC(__b, __gc); \ | ||||
| @@ -122,10 +122,10 @@ typedef xColorItem  XMesaColor; | ||||
|     __p[1].x = __x1; \ | ||||
|     __p[1].y = __y1; \ | ||||
|     (*__gc->ops->Polylines)(__b, __gc, CoordModeOrigin, 2, __p); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaFillRectangle(__d,__b,__gc,__x,__y,__w,__h) \ | ||||
| { \ | ||||
| do { \ | ||||
|     xRectangle __r[1]; \ | ||||
|     (void) __d; \ | ||||
|     ValidateGC(__b, __gc); \ | ||||
| @@ -134,10 +134,10 @@ typedef xColorItem  XMesaColor; | ||||
|     __r[0].width = __w; \ | ||||
|     __r[0].height = __h; \ | ||||
|     (*__gc->ops->PolyFillRect)(__b, __gc, 1, __r); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \ | ||||
| { \ | ||||
| do { \ | ||||
|     /* Assumes: Images are always in ZPixmap format */ \ | ||||
|     (void) __d; \ | ||||
|     if (__sx || __sy) /* The non-trivial case */ \ | ||||
| @@ -146,22 +146,22 @@ typedef xColorItem  XMesaColor; | ||||
|     (*__gc->ops->PutImage)(__b, __gc, ((XMesaDrawable)(__b))->depth, \ | ||||
| 			   __x, __y, __w, __h, 0, ZPixmap, \ | ||||
| 			   ((XMesaImage *)(__i))->data); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaCopyArea(__d,__sb,__db,__gc,__sx,__sy,__w,__h,__x,__y) \ | ||||
| { \ | ||||
| do { \ | ||||
|     (void) __d; \ | ||||
|     ValidateGC(__db, __gc); \ | ||||
|     (*__gc->ops->CopyArea)((DrawablePtr)__sb, __db, __gc, \ | ||||
| 			   __sx, __sy, __w, __h, __x, __y); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define XMesaFillPolygon(__d,__b,__gc,__p,__n,__s,__m) \ | ||||
| { \ | ||||
| do { \ | ||||
|     (void) __d; \ | ||||
|     ValidateGC(__b, __gc); \ | ||||
|     (*__gc->ops->FillPolygon)(__b, __gc, __s, __m, __n, __p); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| /* CreatePixmap returns a PixmapPtr; so, it cannot be inside braces */ | ||||
| #define XMesaCreatePixmap(__d,__b,__w,__h,__depth) \ | ||||
| @@ -170,10 +170,10 @@ typedef xColorItem  XMesaColor; | ||||
|     (*__d->DestroyPixmap)(__b) | ||||
|  | ||||
| #define XMesaFreeGC(__d,__gc) \ | ||||
| { \ | ||||
| do { \ | ||||
|     (void) __d; \ | ||||
|     FreeScratchGC(__gc); \ | ||||
| } | ||||
| } while (0) | ||||
|  | ||||
| #define GET_COLORMAP_SIZE(__v)  __v->visinfo->ColormapEntries | ||||
| #define GET_REDMASK(__v)        __v->visinfo->redMask | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
|  | ||||
| /* $Id: gamma.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: gamma.c,v 1.1.1.1.2.1 2000/03/18 01:14:01 brianp Exp $ */ | ||||
|  | ||||
| /* Draw test patterns to help determine correct gamma value for a display. | ||||
|    When the intensities of the inner squares nearly match the intensities | ||||
| @@ -25,8 +25,14 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: gamma.c,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * Revision 1.1.1.1.2.1  2000/03/18 01:14:01  brianp | ||||
|  * colors were computed incorrectly (Hans Nelles) | ||||
|  * | ||||
|  * Revision 1.2  2000/03/18 01:13:29  brianp | ||||
|  * colors were computed incorrectly (Hans Nelles) | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:40  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 3.1  1999/06/19 01:35:38  brianp | ||||
|  * merged in Kai Schuetz's RGB changes | ||||
| @@ -130,8 +136,9 @@ gamma_ramp(GLfloat yoffs, GLfloat r, GLfloat g, GLfloat b) | ||||
|  | ||||
|   for(d = 1; d < 4; d++) {  /* increasing density from 25% to 75% */ | ||||
|     GLfloat xcoord = (-1.0 + d*0.4); | ||||
|     GLfloat t = d * 0.25; | ||||
|  | ||||
|     glColor3f(r*d / 5.0, g*d / 5.0, b*d / 5.0); /* draw outer rect */ | ||||
|     glColor3f(r*t, g*t, b*t); /* draw outer rect */ | ||||
|     glRectf(xcoord, yoffs, xcoord+0.4, yoffs + 0.5); | ||||
|  | ||||
|     glColor3f(0.0, 0.0, 0.0);   /* "clear" inner rect */ | ||||
|   | ||||
| @@ -1,7 +1,10 @@ | ||||
| /* $Id: morph3d.c,v 1.2 1999/09/17 12:27:01 brianp Exp $ */ | ||||
| /* $Id: morph3d.c,v 1.2.2.1 1999/12/15 13:00:24 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * $Log: morph3d.c,v $ | ||||
|  * Revision 1.2.2.1  1999/12/15 13:00:24  brianp | ||||
|  * moved #define to column 0 | ||||
|  * | ||||
|  * Revision 1.2  1999/09/17 12:27:01  brianp | ||||
|  * silenced some warnings | ||||
|  * | ||||
| @@ -498,7 +501,7 @@ static void draw_dodeca( void ) | ||||
| { | ||||
|   GLuint list; | ||||
|  | ||||
|   #define TAU ((SQRT5+1)/2) | ||||
| #define TAU ((SQRT5+1)/2) | ||||
|  | ||||
|   list = glGenLists( 1 ); | ||||
|   glNewList( list, GL_COMPILE ); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: multiarb.c,v 1.3 1999/10/21 16:40:32 brianp Exp $ */ | ||||
| /* $Id: multiarb.c,v 1.3.2.2 2000/02/02 17:32:15 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * GL_ARB_multitexture demo | ||||
| @@ -12,6 +12,12 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: multiarb.c,v $ | ||||
|  * Revision 1.3.2.2  2000/02/02 17:32:15  brianp | ||||
|  * changed > to >= | ||||
|  * | ||||
|  * Revision 1.3.2.1  2000/02/02 01:08:09  brianp | ||||
|  * limit Drift to [0, 1] | ||||
|  * | ||||
|  * Revision 1.3  1999/10/21 16:40:32  brianp | ||||
|  * added -info command line option | ||||
|  * | ||||
| @@ -61,6 +67,8 @@ static void Idle( void ) | ||||
| { | ||||
|    if (Animate) { | ||||
|       Drift += 0.05; | ||||
|       if (Drift >= 1.0) | ||||
|          Drift = 0.0; | ||||
|  | ||||
| #ifdef GL_ARB_multitexture | ||||
|       glActiveTextureARB(GL_TEXTURE0_ARB); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: stex3d.c,v 1.2 1999/09/17 12:27:01 brianp Exp $ */ | ||||
| /* $Id: stex3d.c,v 1.2.2.1 1999/12/16 08:53:51 brianp Exp $ */ | ||||
|  | ||||
| /*-----------------------------  | ||||
|  * stex3d.c GL example of the mesa 3d-texture extention to simulate procedural | ||||
| @@ -17,6 +17,9 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: stex3d.c,v $ | ||||
|  * Revision 1.2.2.1  1999/12/16 08:53:51  brianp | ||||
|  * added a cast to malloc call | ||||
|  * | ||||
|  * Revision 1.2  1999/09/17 12:27:01  brianp | ||||
|  * silenced some warnings | ||||
|  * | ||||
| @@ -230,7 +233,7 @@ void create3Dtexture() | ||||
|  int tmp; | ||||
|  | ||||
|  printf("creating 3d textures...\n"); | ||||
|  voxels = (unsigned char  *) malloc((4*tex_width*tex_height*tex_depth)); | ||||
|  voxels = (unsigned char  *) malloc((size_t) (4*tex_width*tex_height*tex_depth)); | ||||
|  vp=voxels; | ||||
|  for (i=0;i<tex_width;i++){ | ||||
|     vec[0]=i; | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: tessdemo.c,v 1.3 1999/11/04 04:00:42 gareth Exp $ */ | ||||
| /* $Id: tessdemo.c,v 1.3.2.1 1999/11/16 11:09:09 gareth Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * A demo of the GLU polygon tesselation functions written by Bogdan Sikorski. | ||||
| @@ -14,6 +14,9 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: tessdemo.c,v $ | ||||
|  * Revision 1.3.2.1  1999/11/16 11:09:09  gareth | ||||
|  * Added combine callback.  Converted vertices from ints to floats. | ||||
|  * | ||||
|  * Revision 1.3  1999/11/04 04:00:42  gareth | ||||
|  * Updated demo for new GLU 1.3 tessellation.  Added optimized rendering | ||||
|  * by saving the output of the tessellation into display lists. | ||||
| @@ -79,20 +82,20 @@ static GLfloat		edge_color[3]; | ||||
|  | ||||
| static struct | ||||
| { | ||||
|    GLint	p[MAX_POINTS][2]; | ||||
|    GLfloat	p[MAX_POINTS][2]; | ||||
|    GLuint	point_cnt; | ||||
| } contours[MAX_CONTOURS]; | ||||
|  | ||||
| static struct | ||||
| { | ||||
|    GLsizei	no; | ||||
|    GLint	p[3][2]; | ||||
|    GLfloat	p[3][2]; | ||||
|    GLclampf	color[3][3]; | ||||
| } triangles[MAX_TRIANGLES]; | ||||
|  | ||||
|  | ||||
|  | ||||
| void GLCALLBACK my_error( GLenum err ) | ||||
| void GLCALLBACK error_callback( GLenum err ) | ||||
| { | ||||
|    int		len, i; | ||||
|    char const	*str; | ||||
| @@ -146,22 +149,22 @@ void GLCALLBACK end_callback() | ||||
| 		 triangles[i].color[0][1], | ||||
| 		 triangles[i].color[0][2] ); | ||||
|  | ||||
|       glVertex2i( triangles[i].p[0][0], triangles[i].p[0][1] ); | ||||
|       glVertex2i( triangles[i].p[1][0], triangles[i].p[1][1] ); | ||||
|       glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] ); | ||||
|       glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] ); | ||||
|  | ||||
|       glColor3f( triangles[i].color[1][0], | ||||
| 		 triangles[i].color[1][1], | ||||
| 		 triangles[i].color[1][2] ); | ||||
|  | ||||
|       glVertex2i( triangles[i].p[1][0], triangles[i].p[1][1] ); | ||||
|       glVertex2i( triangles[i].p[2][0], triangles[i].p[2][1] ); | ||||
|       glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] ); | ||||
|       glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] ); | ||||
|  | ||||
|       glColor3f( triangles[i].color[2][0], | ||||
| 		 triangles[i].color[2][1], | ||||
| 		 triangles[i].color[2][2] ); | ||||
|  | ||||
|       glVertex2i( triangles[i].p[2][0], triangles[i].p[2][1] ); | ||||
|       glVertex2i( triangles[i].p[0][0], triangles[i].p[0][1] ); | ||||
|       glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] ); | ||||
|       glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] ); | ||||
|    } | ||||
|  | ||||
|    glEnd(); | ||||
| @@ -170,9 +173,9 @@ void GLCALLBACK end_callback() | ||||
| void GLCALLBACK vertex_callback( void *data ) | ||||
| { | ||||
|    GLsizei	no; | ||||
|    GLint	*p; | ||||
|    GLfloat	*p; | ||||
|  | ||||
|    p = (GLint *) data; | ||||
|    p = (GLfloat *) data; | ||||
|    no = triangles[triangle_cnt].no; | ||||
|  | ||||
|    triangles[triangle_cnt].p[no][0] = p[0]; | ||||
| @@ -190,6 +193,22 @@ void GLCALLBACK vertex_callback( void *data ) | ||||
|    } | ||||
| } | ||||
|  | ||||
| void GLCALLBACK combine_callback( GLdouble coords[3], | ||||
| 				  GLdouble *vertex_data[4], | ||||
| 				  GLfloat weight[4], void **data ) | ||||
| { | ||||
|    GLfloat	*vertex; | ||||
|    int		i; | ||||
|  | ||||
|    vertex = (GLfloat *) malloc( 2 * sizeof(GLfloat) ); | ||||
|  | ||||
|    vertex[0] = (GLfloat) coords[0]; | ||||
|    vertex[1] = (GLfloat) coords[1]; | ||||
|  | ||||
|    *data = vertex; | ||||
| } | ||||
|  | ||||
|  | ||||
| void set_screen_wh( GLsizei w, GLsizei h ) | ||||
| { | ||||
|    width = w; | ||||
| @@ -208,10 +227,11 @@ void tesse( void ) | ||||
|  | ||||
|    if ( tobj != NULL ) | ||||
|    { | ||||
|       gluTessCallback( tobj, GLU_BEGIN, glBegin ); | ||||
|       gluTessCallback( tobj, GLU_VERTEX, glVertex2iv ); | ||||
|       gluTessCallback( tobj, GLU_END, glEnd ); | ||||
|       gluTessCallback( tobj, GLU_ERROR, my_error ); | ||||
|       gluTessCallback( tobj, GLU_TESS_BEGIN, glBegin ); | ||||
|       gluTessCallback( tobj, GLU_TESS_VERTEX, glVertex2fv ); | ||||
|       gluTessCallback( tobj, GLU_TESS_END, glEnd ); | ||||
|       gluTessCallback( tobj, GLU_TESS_ERROR, error_callback ); | ||||
|       gluTessCallback( tobj, GLU_TESS_COMBINE, combine_callback ); | ||||
|  | ||||
|       glNewList( list_start, GL_COMPILE ); | ||||
|       gluBeginPolygon( tobj ); | ||||
| @@ -233,10 +253,10 @@ void tesse( void ) | ||||
|       gluEndPolygon( tobj ); | ||||
|       glEndList(); | ||||
|  | ||||
|       gluTessCallback( tobj, GLU_BEGIN, begin_callback ); | ||||
|       gluTessCallback( tobj, GLU_VERTEX, vertex_callback ); | ||||
|       gluTessCallback( tobj, GLU_END, end_callback ); | ||||
|       gluTessCallback( tobj, GLU_EDGE_FLAG, edge_callback ); | ||||
|       gluTessCallback( tobj, GLU_TESS_BEGIN, begin_callback ); | ||||
|       gluTessCallback( tobj, GLU_TESS_VERTEX, vertex_callback ); | ||||
|       gluTessCallback( tobj, GLU_TESS_END, end_callback ); | ||||
|       gluTessCallback( tobj, GLU_TESS_EDGE_FLAG, edge_callback ); | ||||
|  | ||||
|       glNewList( list_start + 1, GL_COMPILE ); | ||||
|       gluBeginPolygon( tobj ); | ||||
| @@ -267,7 +287,7 @@ void tesse( void ) | ||||
|  | ||||
| void left_down( int x1, int y1 ) | ||||
| { | ||||
|    GLint	P[2]; | ||||
|    GLfloat	P[2]; | ||||
|    GLuint	point_cnt; | ||||
|  | ||||
|    /* translate GLUT into GL coordinates */ | ||||
| @@ -284,13 +304,13 @@ void left_down( int x1, int y1 ) | ||||
|  | ||||
|    if ( point_cnt ) | ||||
|    { | ||||
|       glVertex2iv( contours[contour_cnt].p[point_cnt-1] ); | ||||
|       glVertex2iv( P ); | ||||
|       glVertex2fv( contours[contour_cnt].p[point_cnt-1] ); | ||||
|       glVertex2fv( P ); | ||||
|    } | ||||
|    else | ||||
|    { | ||||
|       glVertex2iv( P ); | ||||
|       glVertex2iv( P ); | ||||
|       glVertex2fv( P ); | ||||
|       glVertex2fv( P ); | ||||
|    } | ||||
|  | ||||
|    glEnd(); | ||||
| @@ -311,8 +331,8 @@ void middle_down( int x1, int y1 ) | ||||
|    { | ||||
|       glBegin( GL_LINES ); | ||||
|  | ||||
|       glVertex2iv( contours[contour_cnt].p[0] ); | ||||
|       glVertex2iv( contours[contour_cnt].p[point_cnt-1] ); | ||||
|       glVertex2fv( contours[contour_cnt].p[0] ); | ||||
|       glVertex2fv( contours[contour_cnt].p[point_cnt-1] ); | ||||
|  | ||||
|       contours[contour_cnt].p[point_cnt][0] = -1; | ||||
|  | ||||
| @@ -383,24 +403,24 @@ void display( void ) | ||||
| 	 case 0: | ||||
| 	    break; | ||||
| 	 case 1: | ||||
| 	    glVertex2iv( contours[i].p[0] ); | ||||
| 	    glVertex2iv( contours[i].p[0] ); | ||||
| 	    glVertex2fv( contours[i].p[0] ); | ||||
| 	    glVertex2fv( contours[i].p[0] ); | ||||
| 	    break; | ||||
| 	 case 2: | ||||
| 	    glVertex2iv( contours[i].p[0] ); | ||||
| 	    glVertex2iv( contours[i].p[1] ); | ||||
| 	    glVertex2fv( contours[i].p[0] ); | ||||
| 	    glVertex2fv( contours[i].p[1] ); | ||||
| 	    break; | ||||
| 	 default: | ||||
| 	    --point_cnt; | ||||
| 	    for ( j = 0 ; j < point_cnt ; j++ ) | ||||
| 	    { | ||||
| 	       glVertex2iv( contours[i].p[j] ); | ||||
| 	       glVertex2iv( contours[i].p[j+1] ); | ||||
| 	       glVertex2fv( contours[i].p[j] ); | ||||
| 	       glVertex2fv( contours[i].p[j+1] ); | ||||
| 	    } | ||||
| 	    if ( contours[i].p[j+1][0] == -1 ) | ||||
| 	    { | ||||
| 	       glVertex2iv( contours[i].p[0] ); | ||||
| 	       glVertex2iv( contours[i].p[j] ); | ||||
| 	       glVertex2fv( contours[i].p[0] ); | ||||
| 	       glVertex2fv( contours[i].p[j] ); | ||||
| 	    } | ||||
| 	    break; | ||||
| 	 } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: texobj.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */ | ||||
| /* $Id: texobj.c,v 1.1.1.1.2.2 2000/03/01 03:36:35 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Example of using the 1.1 texture object functions. | ||||
| @@ -10,8 +10,14 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: texobj.c,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg | ||||
|  * Initial revision | ||||
|  * Revision 1.1.1.1.2.2  2000/03/01 03:36:35  brianp | ||||
|  * test for GL 1.2 | ||||
|  * | ||||
|  * Revision 1.1.1.1.2.1  2000/02/25 23:24:28  brianp | ||||
|  * fixed bug when using display lists | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:40  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 3.1  1999/03/28 18:24:37  brianp | ||||
|  * minor clean-up | ||||
| @@ -34,7 +40,7 @@ static GLfloat Angle = 0.0f; | ||||
| static GLboolean HaveTexObj = GL_FALSE; | ||||
|  | ||||
|  | ||||
| #if defined(GL_VERSION_1_1) | ||||
| #if defined(GL_VERSION_1_1) || defined(GL_VERSION_1_2) | ||||
| #  define TEXTURE_OBJECT 1 | ||||
| #elif defined(GL_EXT_texture_object) | ||||
| #  define TEXTURE_OBJECT 1 | ||||
| @@ -84,7 +90,7 @@ static void draw( void ) | ||||
| #endif | ||||
|    } | ||||
|    else { | ||||
|       glCallList( TexObj[0] ); | ||||
|       glCallList( TexObj[1] ); | ||||
|    } | ||||
|    glBegin( GL_POLYGON ); | ||||
|    glTexCoord2f( 0.0, 0.0 );   glVertex2f( -1.0, -1.0 ); | ||||
| @@ -272,7 +278,8 @@ int main( int argc, char *argv[] ) | ||||
|       char *exten = (char *) glGetString( GL_EXTENSIONS ); | ||||
|       char *version = (char *) glGetString( GL_VERSION ); | ||||
|       if (   strstr( exten, "GL_EXT_texture_object" ) | ||||
|           || strncmp( version, "1.1", 3 )==0 ) { | ||||
|           || strncmp( version, "1.1", 3 )==0 | ||||
|           || strncmp( version, "1.2", 3 )==0 ) { | ||||
|          HaveTexObj = GL_TRUE; | ||||
|       } | ||||
|    } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: logo.c,v 1.1 1999/08/19 00:55:41 jtg Exp $ */ | ||||
| /* $Id: logo.c,v 1.1.1.1.2.1 1999/12/15 13:01:44 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. | ||||
| @@ -108,16 +108,16 @@ GLubyte *image = checkImage; | ||||
| GLint imageHeight = CHECKIMAGEHEIGHT; | ||||
| GLint imageWidth = CHECKIMAGEWIDTH; | ||||
|  | ||||
| float decal[] = { | ||||
| static float decal[] = { | ||||
|     GL_DECAL, | ||||
| }; | ||||
| float modulate[] = { | ||||
| static float modulate[] = { | ||||
|     GL_MODULATE, | ||||
| }; | ||||
| float repeat[] = { | ||||
| static float repeat[] = { | ||||
|     GL_REPEAT, | ||||
| }; | ||||
| float nearest[] = { | ||||
| static float nearest[] = { | ||||
|     GL_NEAREST, | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: Makefile.X11,v 1.4 1999/11/05 08:01:17 brianp Exp $ | ||||
| # $Id: Makefile.X11,v 1.4.2.1 1999/11/12 15:43:25 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.1 | ||||
| @@ -16,7 +16,7 @@ GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL $(XLIBS) | ||||
|  | ||||
| LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB) | ||||
|  | ||||
| PROGS = glxdemo glxpixmap offset xdemo glxinfo xfont | ||||
| PROGS = glxdemo glxpixmap offset xdemo glxinfo xfont glxdpyinfo | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										1073
									
								
								progs/xdemos/glxdpyinfo.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1073
									
								
								progs/xdemos/glxdpyinfo.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -30,7 +30,7 @@ LIBDIR = ../lib | ||||
|  | ||||
| SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \ | ||||
| 	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \ | ||||
| 	tess_winding.c | ||||
| 	tess_winding.c tess_clip.c | ||||
|  | ||||
| OBJECTS = $(SOURCES:.c=.o) | ||||
|  | ||||
|   | ||||
| @@ -19,9 +19,12 @@ | ||||
| # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  | ||||
|  | ||||
| # $Id: Makefile.BeOS-R4,v 1.5 1999/10/03 00:53:38 gareth Exp $ | ||||
| # $Id: Makefile.BeOS-R4,v 1.5.2.1 1999/11/15 21:15:43 gareth Exp $ | ||||
|  | ||||
| # $Log: Makefile.BeOS-R4,v $ | ||||
| # Revision 1.5.2.1  1999/11/15 21:15:43  gareth | ||||
| # Added new tessellation polygon clipping file tess_clip.c | ||||
| # | ||||
| # Revision 1.5  1999/10/03 00:53:38  gareth | ||||
| # Added tessellation winding rule files. | ||||
| # | ||||
| @@ -59,7 +62,7 @@ LIBDIR = ../lib | ||||
|  | ||||
| SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \ | ||||
| 	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \ | ||||
| 	tess_winding.c | ||||
| 	tess_winding.c tess_clip.c | ||||
|  | ||||
| OBJECTS = $(SOURCES:.c=.o) | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: Makefile.X11,v 1.6 1999/10/03 00:53:38 gareth Exp $ | ||||
| # $Id: Makefile.X11,v 1.6.2.1 1999/11/15 21:15:43 gareth Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.1 | ||||
| @@ -20,7 +20,7 @@ LIBDIR = ../lib | ||||
|  | ||||
| SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \ | ||||
| 	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \ | ||||
| 	tess_winding.c | ||||
| 	tess_winding.c tess_clip.c | ||||
|  | ||||
| OBJECTS = $(SOURCES:.c=.o) | ||||
|  | ||||
|   | ||||
							
								
								
									
										64
									
								
								src/glu/mesa/Makefile.m32
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/glu/mesa/Makefile.m32
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| # Makefile for GLU for GCC-2.95.2/Mingw32 contributed by | ||||
| # Paul Garceau <pgarceau@teleport.com> | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.2 | ||||
| # Copyright (C) 1995-1999  Brian Paul | ||||
| # | ||||
| # This library is free software; you can redistribute it and/or | ||||
| # modify it under the terms of the GNU Library General Public | ||||
| # License as published by the Free Software Foundation; either | ||||
| # version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| # This library is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| # Library General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Library General Public | ||||
| # License along with this library; if not, write to the Free | ||||
| # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  | ||||
|  | ||||
| MESA_MAJOR=3 | ||||
| MESA_MINOR=2 | ||||
| MESA_TINY=0 | ||||
| VERSION=$(MESA_MAJOR).$(MESA_MINOR) | ||||
|  | ||||
| CFLAGS = -I. -DWIN32 -D__WIN32__ -D_WINDOWS \ | ||||
| 		-O2 -funroll-loops \ | ||||
| 		-fexpensive-optimizations -fomit-frame-pointer -ffast-math \ | ||||
| 		-malign-loops=2 -malign-jumps=2 -malign-functions=2 \ | ||||
| 		-mwindows | ||||
| CC = gcc | ||||
| MAKELIB = ar ru | ||||
| GLU_LIB = libGLU.a | ||||
|  | ||||
|  | ||||
| ##### MACROS ##### | ||||
|  | ||||
| VPATH = RCS | ||||
|  | ||||
| INCDIR = ../include | ||||
| LIBDIR = ../lib | ||||
|  | ||||
| SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \ | ||||
| 	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \ | ||||
| 	tess_winding.c tess_clip.c | ||||
|  | ||||
| OBJECTS = $(SOURCES:.c=.o) | ||||
|  | ||||
|  | ||||
|  | ||||
| ##### RULES ##### | ||||
|  | ||||
| .c.o: | ||||
| 	$(CC) -c -I$(INCDIR) $(CFLAGS) $< | ||||
|  | ||||
|  | ||||
|  | ||||
| ##### TARGETS ##### | ||||
|  | ||||
| # Make the library: | ||||
| $(LIBDIR)/$(GLU_LIB): $(OBJECTS) | ||||
| 	$(MAKELIB) $(GLU_LIB) $(MAJOR) $(MINOR) $(TINY) $(OBJECTS) | ||||
| @@ -16,11 +16,11 @@ CFLAGS = /include=$(INCDIR)/define=(FBIND=1) | ||||
|  | ||||
| SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \ | ||||
| 	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \ | ||||
| 	tess_winding.c | ||||
| 	tess_winding.c tess_clip.c | ||||
|  | ||||
| OBJECTS =glu.obj,mipmap.obj,nurbs.obj,nurbscrv.obj,nurbssrf.obj,nurbsutl.obj,\ | ||||
| 	project.obj,quadric.obj,tess.obj,tess_fist.obj,tess_hash.obj,\ | ||||
| 	tess_heap.obj,tess_winding.obj | ||||
| 	tess_heap.obj,tess_winding.obj,tess_clip.obj | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| /* $Id: glu.c,v 1.16 1999/10/27 09:47:41 brianp Exp $ */ | ||||
| /* $Id: glu.c,v 1.16.2.4 2000/03/23 00:13:43 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Copyright (C) 1995-1999  Brian Paul | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -21,99 +21,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: glu.c,v $ | ||||
|  * Revision 1.16  1999/10/27 09:47:41  brianp | ||||
|  * disabled gluGetProcAddressEXT | ||||
|  * | ||||
|  * Revision 1.15  1999/09/19 02:03:19  tjump | ||||
|  * More Win32 build compliance fixups | ||||
|  * | ||||
|  * Revision 1.14  1999/09/17 12:21:53  brianp | ||||
|  * glGetProcAddressEXT changes to accomodate Win32 and non-Win32 | ||||
|  * | ||||
|  * Revision 1.13  1999/09/17 03:17:18  tjump | ||||
|  * Patch error fixup | ||||
|  * | ||||
|  * Revision 1.12  1999/09/17 03:07:28  tjump | ||||
|  * Win32 build req't updates | ||||
|  * | ||||
|  * Revision 1.11  1999/09/17 01:00:38  brianp | ||||
|  * fixed typo | ||||
|  * | ||||
|  * Revision 1.10  1999/09/17 00:06:14  brianp | ||||
|  * gluGetProcAddressEXT change for C++ / BeOS | ||||
|  * | ||||
|  * Revision 1.9  1999/09/16 22:37:56  brianp | ||||
|  * added some casts in gluGetProcAddressEXT() | ||||
|  * | ||||
|  * Revision 1.8  1999/09/16 16:53:28  brianp | ||||
|  * clean-up of GLU_EXT_get_proc_address | ||||
|  * | ||||
|  * Revision 1.7  1999/09/14 00:11:40  brianp | ||||
|  * added gluCheckExtension() | ||||
|  * | ||||
|  * Revision 1.6  1999/09/13 14:31:32  joukj | ||||
|  * | ||||
|  * strcmp needs the string.h | ||||
|  * | ||||
|  * Revision 1.5  1999/09/11 12:04:54  brianp | ||||
|  * added 1.2 function to gluGetProcAddressEXT() | ||||
|  * | ||||
|  * Revision 1.4  1999/09/11 11:36:26  brianp | ||||
|  * added GLU_EXT_get_proc_address | ||||
|  * | ||||
|  * Revision 1.3  1999/09/10 04:32:10  gareth | ||||
|  * Fixed triangle output, recovery process termination. | ||||
|  * | ||||
|  * Revision 1.2  1999/09/10 02:03:31  gareth | ||||
|  * Added GLU 1.3 tessellation (except winding rule code). | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:42  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 1.13  1999/03/31 19:07:28  brianp | ||||
|  * added GL_EXT_abgr to extensions | ||||
|  * | ||||
|  * Revision 1.12  1999/02/06 06:12:41  brianp | ||||
|  * updated version string to 3.1 | ||||
|  * | ||||
|  * Revision 1.11  1999/01/03 03:23:15  brianp | ||||
|  * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) | ||||
|  * | ||||
|  * Revision 1.10  1998/04/22 00:35:50  brianp | ||||
|  * changed version to 3.0 | ||||
|  * | ||||
|  * Revision 1.9  1997/12/09 03:03:32  brianp | ||||
|  * changed version to 2.6 | ||||
|  * | ||||
|  * Revision 1.8  1997/10/04 01:30:20  brianp | ||||
|  * changed version to 2.5 | ||||
|  * | ||||
|  * Revision 1.7  1997/08/13 01:25:21  brianp | ||||
|  * changed version string to 2.4 | ||||
|  * | ||||
|  * Revision 1.6  1997/07/24 01:28:44  brianp | ||||
|  * changed precompiled header symbol from PCH to PC_HEADER | ||||
|  * | ||||
|  * Revision 1.5  1997/07/13 22:59:11  brianp | ||||
|  * added const to viewport parameter of gluPickMatrix() | ||||
|  * | ||||
|  * Revision 1.4  1997/05/28 02:29:38  brianp | ||||
|  * added support for precompiled headers (PCH), inserted APIENTRY keyword | ||||
|  * | ||||
|  * Revision 1.3  1997/04/12 16:19:02  brianp | ||||
|  * changed version to 2.3 | ||||
|  * | ||||
|  * Revision 1.2  1997/03/11 00:58:34  brianp | ||||
|  * changed version to 2.2 | ||||
|  * | ||||
|  * Revision 1.1  1996/09/27 01:19:39  brianp | ||||
|  * Initial revision | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| @@ -304,7 +211,7 @@ const GLubyte* GLAPIENTRY gluErrorString( GLenum errorCode ) | ||||
|       "unconnected trim curves", | ||||
|       "unknown knot error", | ||||
|       "negative vertex count encountered", | ||||
|       "negative byte-stride encounteed", | ||||
|       "negative byte-stride encountered", | ||||
|       "unknown type descriptor", | ||||
|       "null control array or knot vector", | ||||
|       "duplicate point on pwlcurve" | ||||
| @@ -367,8 +274,8 @@ const GLubyte* GLAPIENTRY gluErrorString( GLenum errorCode ) | ||||
|  | ||||
| const GLubyte* GLAPIENTRY gluGetString( GLenum name ) | ||||
| { | ||||
|    static char *extensions = "GL_EXT_abgr GLU_EXT_get_proc_address"; | ||||
|    static char *version = "1.2 Mesa 3.1"; | ||||
|    static char *extensions = "GL_EXT_abgr"; | ||||
|    static char *version = "1.2 Mesa 3.2 beta 1"; | ||||
|  | ||||
|    switch (name) { | ||||
|       case GLU_EXTENSIONS: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: gluP.h,v 1.1 1999/08/19 00:55:42 jtg Exp $ */ | ||||
| /* $Id: gluP.h,v 1.1.1.1.2.1 1999/12/06 05:24:36 joukj Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -23,8 +23,19 @@ | ||||
|  | ||||
| /* | ||||
|  * $Log: gluP.h,v $ | ||||
|  * Revision 1.1  1999/08/19 00:55:42  jtg | ||||
|  * Initial revision | ||||
|  * Revision 1.1.1.1.2.1  1999/12/06 05:24:36  joukj | ||||
|  * | ||||
|  *  Committing in . | ||||
|  * | ||||
|  *  Updating compilation on VMS | ||||
|  * | ||||
|  *  Modified Files: | ||||
|  *   Tag: mesa_3_2_dev | ||||
|  *  	Mesa/src-glu/descrip.mms Mesa/src-glu/gluP.h | ||||
|  *  ---------------------------------------------------------------------- | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:42  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 1.4  1999/01/03 03:23:15  brianp | ||||
|  * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) | ||||
| @@ -55,6 +66,7 @@ | ||||
| #include "GL/gl.h" | ||||
| #include "GL/glu.h" | ||||
|  | ||||
| #include <string.h> | ||||
|  | ||||
| #ifndef MESA | ||||
|    /* If we're using the real OpenGL header files... */ | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| /* $Id: mipmap.c,v 1.3 1999/11/09 06:16:59 brianp Exp $ */ | ||||
| /* $Id: mipmap.c,v 1.3.2.2 2000/02/28 14:51:39 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Copyright (C) 1995-1999  Brian Paul | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -21,59 +21,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: mipmap.c,v $ | ||||
|  * Revision 1.3  1999/11/09 06:16:59  brianp | ||||
|  * replace GLint with GLsizei in a gluScaleImage, gluBuild1/2DMipmaps() | ||||
|  * | ||||
|  * Revision 1.2  1999/09/14 00:30:28  brianp | ||||
|  * fixed pixel packing/unpacking code in gluBuild2DMipmaps() | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:42  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 1.13  1999/03/05 17:49:06  brianp | ||||
|  * added support for GL_EXT_abgr (devernay@istar.fr) | ||||
|  * | ||||
|  * Revision 1.12  1999/01/03 03:23:15  brianp | ||||
|  * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) | ||||
|  * | ||||
|  * Revision 1.11  1998/09/18 02:44:03  brianp | ||||
|  * further changes to gluScaleImage() per Randy Frank | ||||
|  * | ||||
|  * Revision 1.10  1998/09/17 03:20:26  brianp | ||||
|  * fixed another bug in gluScaleImage() per Sven Panne | ||||
|  * | ||||
|  * Revision 1.9  1998/07/31 03:06:20  brianp | ||||
|  * tweaked the gluScaleImage() function per Randy Frank | ||||
|  * | ||||
|  * Revision 1.8  1998/07/08 01:02:53  brianp | ||||
|  * if gluBuildxDMipmaps() width or height <= 0 return GLU_INVALID_VALUE | ||||
|  * | ||||
|  * Revision 1.7  1998/07/01 00:18:02  brianp | ||||
|  * if gluBuildxDMipmaps() width or height <= 0 just return 0 | ||||
|  * | ||||
|  * Revision 1.6  1998/06/01 01:06:41  brianp | ||||
|  * small update for Next/OpenStep from Alexander Mai | ||||
|  * | ||||
|  * Revision 1.5  1997/07/24 01:28:44  brianp | ||||
|  * changed precompiled header symbol from PCH to PC_HEADER | ||||
|  * | ||||
|  * Revision 1.4  1997/06/23 00:22:56  brianp | ||||
|  * added dummy() call to work around an MSVC 4.1 bug | ||||
|  * | ||||
|  * Revision 1.3  1997/05/28 02:29:38  brianp | ||||
|  * added support for precompiled headers (PCH), inserted APIENTRY keyword | ||||
|  * | ||||
|  * Revision 1.2  1997/05/24 13:32:25  brianp | ||||
|  * undef EPSILON in case it's already defined | ||||
|  * | ||||
|  * Revision 1.1  1996/09/27 01:19:39  brianp | ||||
|  * Initial revision | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| @@ -138,9 +85,11 @@ GLint GLAPIENTRY gluScaleImage( GLenum format, | ||||
| 	 components = 2; | ||||
| 	 break; | ||||
|       case GL_RGB: | ||||
|       case GL_BGR: | ||||
| 	 components = 3; | ||||
| 	 break; | ||||
|       case GL_RGBA: | ||||
|       case GL_BGRA: | ||||
| #ifdef GL_EXT_abgr | ||||
|       case GL_ABGR_EXT: | ||||
| #endif | ||||
| @@ -702,12 +651,6 @@ GLint GLAPIENTRY gluBuild1DMipmaps( GLenum target, GLint components, | ||||
|  | ||||
|    free( texture ); | ||||
|  | ||||
|    /* make sure remaining mipmap levels are removed */ | ||||
|    for (l=levels;l<max_levels;l++) { | ||||
|       glTexImage1D( GL_TEXTURE_1D, l, components, 0, 0, | ||||
| 		    format, GL_UNSIGNED_BYTE, NULL ); | ||||
|    } | ||||
|  | ||||
|    return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| /* $Id: nurbs.c,v 1.2 1999/11/11 03:21:43 kendallb Exp $ */ | ||||
| /* $Id: nurbs.c,v 1.1.1.1.2.1 2000/02/10 17:23:47 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Copyright (C) 1995-1999  Brian Paul | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -21,73 +21,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: nurbs.c,v $ | ||||
|  * Revision 1.2  1999/11/11 03:21:43  kendallb | ||||
|  * | ||||
|  *  . Updated GL/gl.h with GLCALLACKP and GLAPIENTRYP macros for compatibility | ||||
|  *    with the IBM VisualAge C++ compiler. Eventually some more code will be | ||||
|  *    needed in the headers to enable the reversal of (__stdcall*) to (*__stdcall) | ||||
|  *    for the IBM compilers, however we currently build using our own header files | ||||
|  *    that already handle this. | ||||
|  * | ||||
|  *  . Changed instances of (GLCALLBACK*) to GLCALLBACKP for compatibility | ||||
|  *    with the IBM VisualAge C++ compiler in src-glu. | ||||
|  * | ||||
|  *  . Misc cleanups for warnings generated with Watcom C++ in src-glu. Compiles | ||||
|  *    with 0 warnings now. | ||||
|  * | ||||
|  *  . tess_hash.c: line 244 - Why is this function stubbed out? I removed the | ||||
|  *    code with a #if 0 to avoid a compiler warning, but it looks dangerous. | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:42  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 1.14  1999/01/03 03:23:15  brianp | ||||
|  * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) | ||||
|  * | ||||
|  * Revision 1.13  1998/06/01 01:07:49  brianp | ||||
|  * small update for Next/OpenStep from Alexander Mai | ||||
|  * | ||||
|  * Revision 1.12  1998/03/15 18:14:30  brianp | ||||
|  * fixed a compiler cast warning | ||||
|  * | ||||
|  * Revision 1.11  1998/02/07 14:29:11  brianp | ||||
|  * fixed casting problem in gluNurbsCallback, again | ||||
|  * | ||||
|  * Revision 1.10  1998/02/04 00:21:20  brianp | ||||
|  * fixed cygnus compilation problem (Stephane Rehel) | ||||
|  * | ||||
|  * Revision 1.9  1998/01/16 03:35:26  brianp | ||||
|  * fixed Windows compilation warnings (Theodore Jump) | ||||
|  * | ||||
|  * Revision 1.8  1997/09/17 01:51:48  brianp | ||||
|  * changed glu*Callback() functions to match prototype in glu.h | ||||
|  * | ||||
|  * Revision 1.7  1997/07/24 01:28:44  brianp | ||||
|  * changed precompiled header symbol from PCH to PC_HEADER | ||||
|  * | ||||
|  * Revision 1.6  1997/07/24 01:26:31  brianp | ||||
|  * added CALLBACK keyword to gluNurbsCallback() | ||||
|  * | ||||
|  * Revision 1.5  1997/05/28 02:29:38  brianp | ||||
|  * added support for precompiled headers (PCH), inserted APIENTRY keyword | ||||
|  * | ||||
|  * Revision 1.4  1997/05/27 03:17:22  brianp | ||||
|  * minor clean-up | ||||
|  * | ||||
|  * Revision 1.3  1997/05/27 03:00:16  brianp | ||||
|  * incorporated Bogdan's new NURBS code | ||||
|  * | ||||
|  * Revision 1.2  1996/09/27 23:11:23  brianp | ||||
|  * ifdef'd out unimplemented trimmed nurbs code | ||||
|  * | ||||
|  * Revision 1.1  1996/09/27 01:19:39  brianp | ||||
|  * Initial revision | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * NURBS implementation written by Bogdan Sikorski (bogdan@cira.it) | ||||
|  * See README2 for more info. | ||||
| @@ -617,13 +550,9 @@ void GLAPIENTRY gluNurbsSurface( GLUnurbsObj *nobj, | ||||
|  | ||||
|  | ||||
| void GLAPIENTRY | ||||
| gluNurbsCallback( GLUnurbsObj *nobj, GLenum which, void (GLCALLBACKP fn)()) | ||||
| gluNurbsCallback( GLUnurbsObj *nobj, GLenum which, void (GLCALLBACK *fn)()) | ||||
| { | ||||
| #if defined(__CYGWIN32__) || defined(OPENSTEP) | ||||
|     nobj->error_callback = (void(*)(GLenum))fn; | ||||
| #else | ||||
| 	nobj->error_callback = (void(GLCALLBACKP)(GLenum))fn; | ||||
| #endif | ||||
|     nobj->error_callback = (void(GLCALLBACKPCAST)(GLenum))fn; | ||||
|  | ||||
|     if(which!=GLU_ERROR) | ||||
|         call_user_error(nobj,GLU_INVALID_ENUM); | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| /* $Id: quadric.c,v 1.3 1999/11/11 09:55:39 joukj Exp $ */ | ||||
| /* $Id: quadric.c,v 1.1.1.1.2.4 2000/02/10 17:23:48 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Copyright (C) 1995-1999  Brian Paul | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1999-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -21,92 +21,6 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * $Log: quadric.c,v $ | ||||
|  * Revision 1.3  1999/11/11 09:55:39  joukj | ||||
|  * | ||||
|  *  tess_macro.h included | ||||
|  * | ||||
|  * Revision 1.2  1999/11/11 03:21:43  kendallb | ||||
|  * | ||||
|  *  . Updated GL/gl.h with GLCALLACKP and GLAPIENTRYP macros for compatibility | ||||
|  *    with the IBM VisualAge C++ compiler. Eventually some more code will be | ||||
|  *    needed in the headers to enable the reversal of (__stdcall*) to (*__stdcall) | ||||
|  *    for the IBM compilers, however we currently build using our own header files | ||||
|  *    that already handle this. | ||||
|  * | ||||
|  *  . Changed instances of (GLCALLBACK*) to GLCALLBACKP for compatibility | ||||
|  *    with the IBM VisualAge C++ compiler in src-glu. | ||||
|  * | ||||
|  *  . Misc cleanups for warnings generated with Watcom C++ in src-glu. Compiles | ||||
|  *    with 0 warnings now. | ||||
|  * | ||||
|  *  . tess_hash.c: line 244 - Why is this function stubbed out? I removed the | ||||
|  *    code with a #if 0 to avoid a compiler warning, but it looks dangerous. | ||||
|  * | ||||
|  * Revision 1.1.1.1  1999/08/19 00:55:42  jtg | ||||
|  * Imported sources | ||||
|  * | ||||
|  * Revision 1.19  1999/02/27 13:55:31  brianp | ||||
|  * fixed BeOS-related GLU typedef problems | ||||
|  * | ||||
|  * Revision 1.18  1999/01/03 03:23:15  brianp | ||||
|  * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) | ||||
|  * | ||||
|  * Revision 1.17  1999/01/03 03:19:15  brianp | ||||
|  * rewrote some of gluCylinder | ||||
|  * | ||||
|  * Revision 1.16  1998/06/01 01:08:36  brianp | ||||
|  * small update for Next/OpenStep from Alexander Mai | ||||
|  * | ||||
|  * Revision 1.15  1998/03/15 18:28:54  brianp | ||||
|  * reimplemented gluDisk() point and line mode | ||||
|  * | ||||
|  * Revision 1.14  1998/03/15 18:14:17  brianp | ||||
|  * fixed a compiler cast warning | ||||
|  * | ||||
|  * Revision 1.13  1998/02/07 14:28:34  brianp | ||||
|  * another change to gluQuadricCallback(), this time for StormC compiler | ||||
|  * | ||||
|  * Revision 1.12  1998/02/05 00:43:19  brianp | ||||
|  * Yes, still another change to gluQuadricCallback()! | ||||
|  * | ||||
|  * Revision 1.11  1998/02/04 00:27:43  brianp | ||||
|  * yet another change to gluQuadricCallback()! | ||||
|  * | ||||
|  * Revision 1.10  1998/02/04 00:23:23  brianp | ||||
|  * fixed CALLBACK problem in gluQuadricCallback() (Stephane Rehel) | ||||
|  * | ||||
|  * Revision 1.9  1998/02/04 00:20:09  brianp | ||||
|  * added missing (int) in ErrorFunc cast | ||||
|  * | ||||
|  * Revision 1.8  1998/01/16 03:37:51  brianp | ||||
|  * fixed another assignment warning in gluQuadricCallback() | ||||
|  * | ||||
|  * Revision 1.7  1998/01/16 03:35:26  brianp | ||||
|  * fixed Windows compilation warnings (Theodore Jump) | ||||
|  * | ||||
|  * Revision 1.6  1997/10/29 02:02:20  brianp | ||||
|  * various MS Windows compiler changes (David Bucciarelli, v20 3dfx driver) | ||||
|  * | ||||
|  * Revision 1.5  1997/09/17 01:51:48  brianp | ||||
|  * changed glu*Callback() functions to match prototype in glu.h | ||||
|  * | ||||
|  * Revision 1.4  1997/07/24 01:28:44  brianp | ||||
|  * changed precompiled header symbol from PCH to PC_HEADER | ||||
|  * | ||||
|  * Revision 1.3  1997/05/28 02:29:38  brianp | ||||
|  * added support for precompiled headers (PCH), inserted APIENTRY keyword | ||||
|  * | ||||
|  * Revision 1.2  1997/03/12 02:15:38  brianp | ||||
|  * fixed problem in gluPartialDisk() reported by Kenneth H. Carpenter | ||||
|  * | ||||
|  * Revision 1.1  1996/09/27 01:19:39  brianp | ||||
|  * Initial revision | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* TODO: | ||||
|  *   texture coordinate support | ||||
|  *   flip normals according to orientation | ||||
| @@ -122,11 +36,21 @@ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include "gluP.h" | ||||
| #include "tess_macros.h" | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifndef M_PI | ||||
| #  define M_PI (3.1415926) | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Convert degrees to radians: | ||||
|  */ | ||||
| #define DEG_TO_RAD(A)   ((A)*(M_PI/180.0)) | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Sin and Cos for degree angles: | ||||
|  */ | ||||
| @@ -146,7 +70,7 @@ struct GLUquadric { | ||||
| 	GLenum Orientation;		/* GLU_INSIDE or GLU_OUTSIDE */ | ||||
| 	GLboolean TextureFlag;		/* Generate texture coords? */ | ||||
| 	GLenum Normals;		/* GLU_NONE, GLU_FLAT, or GLU_SMOOTH */ | ||||
| 	void (GLCALLBACKP ErrorFunc)(GLenum err);	/* Error handler callback function */ | ||||
| 	void (GLCALLBACK *ErrorFunc)(GLenum err);	/* Error handler callback function */ | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -232,24 +156,24 @@ void GLAPIENTRY gluQuadricOrientation( GLUquadricObj *quadObject, | ||||
|  * Set the error handler callback function. | ||||
|  */ | ||||
| void GLAPIENTRY gluQuadricCallback( GLUquadricObj *qobj, | ||||
| 								  GLenum which, void (GLCALLBACKP fn)() ) | ||||
|                                   GLenum which, void (GLCALLBACK *fn)() ) | ||||
| { | ||||
|    /* | ||||
|     * UGH, this is a mess!  I thought ANSI was a standard. | ||||
|     */ | ||||
|    if (qobj && which==GLU_ERROR) { | ||||
| #ifdef __CYGWIN32__ | ||||
|       qobj->ErrorFunc = (void(*)(int))fn; | ||||
|       qobj->ErrorFunc = (void(GLCALLBACKPCAST)(GLenum))fn; | ||||
| #elif defined(OPENSTEP) | ||||
|       qobj->ErrorFunc = (void(*)(GLenum))fn; | ||||
| #elif defined(_WIN32) | ||||
| 	  qobj->ErrorFunc = (void(GLCALLBACKP)(int))fn; | ||||
|       qobj->ErrorFunc = (void(GLCALLBACK*)(int))fn; | ||||
| #elif defined(__STORM__) | ||||
| 	  qobj->ErrorFunc = (void(GLCALLBACKP)(GLenum))fn; | ||||
|       qobj->ErrorFunc = (void(GLCALLBACK*)(GLenum))fn; | ||||
| #elif defined(__BEOS__) | ||||
|       qobj->ErrorFunc = (void(*)(GLenum))fn; | ||||
| #else | ||||
| 	  qobj->ErrorFunc = (void(GLCALLBACKP)())fn; | ||||
|       qobj->ErrorFunc = (void(GLCALLBACK*)())fn; | ||||
| #endif | ||||
|    } | ||||
| } | ||||
| @@ -392,8 +316,8 @@ void GLAPIENTRY gluCylinder( GLUquadricObj *qobj, | ||||
|          for (i=0;i<=slices;i++) { | ||||
|             GLfloat x, y; | ||||
|             if (i == slices) { | ||||
|                x = sin(0); | ||||
|                y = cos(0); | ||||
|                x = sin(0.0); | ||||
|                y = cos(0.0); | ||||
|             } | ||||
|             else { | ||||
|                x = sin(i * da); | ||||
| @@ -783,7 +707,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius, | ||||
|       for (loop=0; loop<loops; loop++) { | ||||
| 	 angle = DEG_TO_RAD(startAngle); | ||||
| 	 glBegin( GL_LINE_STRIP ); | ||||
| 	 for (slice=0; slice<slices; slice++) { | ||||
| 	 for (slice=0; slice<=slices; slice++) { | ||||
| 	    glVertex2d( radius * sin(angle), radius * cos(angle) ); | ||||
| 	    angle += delta_angle; | ||||
| 	 } | ||||
| @@ -792,7 +716,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius, | ||||
|       } | ||||
|       /* draw spokes */ | ||||
|       angle = DEG_TO_RAD(startAngle); | ||||
|       for (slice=0; slice<slices; slice++) { | ||||
|       for (slice=0; slice<=slices; slice++) { | ||||
| 	 radius = innerRadius; | ||||
| 	 glBegin( GL_LINE_STRIP ); | ||||
| 	 for (loop=0; loop<loops; loop++) { | ||||
| @@ -846,7 +770,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius, | ||||
|       for (loop=0; loop<loops; loop++) { | ||||
| 	 glBegin( GL_QUAD_STRIP ); | ||||
| 	 angle = DEG_TO_RAD(startAngle); | ||||
| 	 for (slice=0; slice<slices; slice++) { | ||||
| 	 for (slice=0; slice<=slices; slice++) { | ||||
| 	    if (qobj->Orientation==GLU_OUTSIDE) { | ||||
| 	       glVertex2d( (radius+delta_radius)*sin(angle), | ||||
| 			   (radius+delta_radius)*cos(angle) ); | ||||
|   | ||||
							
								
								
									
										1031
									
								
								src/glu/mesa/tess.c
									
									
									
									
									
								
							
							
						
						
									
										1031
									
								
								src/glu/mesa/tess.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,4 +1,4 @@ | ||||
| /* $Id: tess.h,v 1.15 1999/11/05 20:37:14 gareth Exp $ */ | ||||
| /* $Id: tess.h,v 1.15.2.6 1999/12/05 17:01:17 gareth Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -56,33 +56,39 @@ extern "C" { | ||||
| struct GLUtesselator | ||||
| { | ||||
|     tess_callbacks_t	callbacks; | ||||
|     GLboolean		boundary_only; | ||||
|     GLenum		winding_rule; | ||||
|     GLboolean		boundary_only; | ||||
|     GLdouble		tolerance; | ||||
|     tess_plane_t	plane; | ||||
|     GLuint		contour_count; | ||||
|     GLenum		orientation; | ||||
|     void		*data; | ||||
|     GLint		num_contours; | ||||
|     tess_contour_t	*contours, *last_contour; | ||||
|     tess_contour_t	*current_contour; | ||||
|     GLdouble		mins[2], maxs[2]; | ||||
|     GLuint		vertex_count; | ||||
|     GLint		num_vertices; | ||||
|     tess_vertex_t	**sorted_vertices; | ||||
| #if 0 | ||||
|     tess_grid_t		*grid;			/* Not currently used... */ | ||||
| #endif | ||||
|     heap_t		*ears; | ||||
|     hashtable_t		*cvc_lists; | ||||
|     void		*data; | ||||
|     GLboolean		edge_flag; | ||||
|     GLuint		label; | ||||
|     tess_plane_t	plane; | ||||
|     GLenum		error; | ||||
| }; | ||||
|  | ||||
|  | ||||
| /***************************************************************************** | ||||
|  * Tessellation error handler: | ||||
|  * Common tessellation functions: | ||||
|  *****************************************************************************/ | ||||
| extern void tess_error_callback( GLUtesselator *, GLenum ); | ||||
|  | ||||
| extern GLdouble twice_contour_area( tess_contour_t *contour ); | ||||
| extern void reverse_contour( tess_contour_t *contour ); | ||||
| extern void delete_contour( tess_contour_t **contour ); | ||||
|  | ||||
| extern void contour_dump( tess_contour_t *contour ); | ||||
|  | ||||
|  | ||||
| /***************************************************************************** | ||||
|  * Debugging output: | ||||
| @@ -115,8 +121,8 @@ extern	int	tess_dbg_level; | ||||
| #define MSG		tess_msg | ||||
| #endif /* DEBUG */ | ||||
|  | ||||
| extern INLINE void tess_msg( int level, char *format, ... ); | ||||
| extern INLINE void tess_info( char *file, char *line ); | ||||
| extern INLINE void tess_msg( GLint level, char *format, ... ); | ||||
| extern INLINE void tess_info( char *file, GLint line ); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| ## BeOS Generic Makefile v2.0 ## | ||||
|  | ||||
| ## Modified by Brian Paul to work with Mesa 3.1 | ||||
|  | ||||
|  | ||||
| ## Fill in this file to specify the project being created, and the referenced | ||||
| @@ -48,9 +47,8 @@ RSRCS= | ||||
| #		naming scheme you need to specify the path to the library | ||||
| #		and it's name | ||||
| #		library: my_lib.a entry: my_lib.a or path/my_lib.a | ||||
| #LIBS= MesaGL MesaGLU be | ||||
| LIBS= GL GLU be | ||||
| 		 | ||||
|  | ||||
| #	specify additional paths to directories following the standard | ||||
| #	libXXX.so or libXXX.a naming scheme.  You can specify full paths | ||||
| #	or paths relative to the makefile.  The paths included may not | ||||
|   | ||||
| @@ -303,8 +303,7 @@ interruptibleXNextEvent(Display * dpy, XEvent * event) | ||||
|     } | ||||
|     FD_ZERO(&fds); | ||||
|     FD_SET(__glutConnectionFD, &fds); | ||||
|     rc = select(__glutConnectionFD + 1, &fds, | ||||
|       NULL, NULL, NULL); | ||||
|     rc = select(__glutConnectionFD + 1, &fds, NULL, NULL, NULL); | ||||
|     if (rc < 0) { | ||||
|       if (errno == EINTR) { | ||||
|         return 0; | ||||
| @@ -897,8 +896,7 @@ waitForSomething(void) | ||||
|     waittime = zerotime; | ||||
|   } | ||||
| #if !defined(_WIN32) | ||||
|   rc = select(__glutConnectionFD + 1, &fds, | ||||
|     NULL, NULL, &waittime); | ||||
|   rc = select(__glutConnectionFD + 1, &fds, NULL, NULL, &waittime); | ||||
|   if (rc < 0 && errno != EINTR) | ||||
|     __glutFatalError("select error."); | ||||
| #else | ||||
|   | ||||
| @@ -20,7 +20,9 @@ | ||||
| #include <X11/Xutil.h> | ||||
| #else | ||||
| #include <windows.h> | ||||
| #ifndef __CYGWIN32__ | ||||
| #include <mmsystem.h>  /* Win32 Multimedia API header. */ | ||||
| #endif | ||||
| #endif /* !_WIN32 */ | ||||
|  | ||||
| #include "glutint.h" | ||||
|   | ||||
| @@ -7,8 +7,10 @@ | ||||
|  | ||||
| #ifdef _WIN32 | ||||
| #include <windows.h> | ||||
| #ifndef __CYGWIN32__ | ||||
| #include <mmsystem.h>  /* Win32 Multimedia API header. */ | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #include "glutint.h" | ||||
|  | ||||
|   | ||||
| @@ -24,7 +24,7 @@ | ||||
| #define GLUT_BUILDING_LIB  /* Building the GLUT library itself. */ | ||||
| #include <GL/glut.h> | ||||
|  | ||||
| #if defined( MESA ) && defined( _WIN32 ) | ||||
| #if defined(MESA) && defined(_WIN32) && !defined(__CYGWIN32__) | ||||
| #include <gl/mesa_wgl.h> | ||||
| #endif | ||||
|  | ||||
| @@ -71,7 +71,7 @@ extern int sys$gettim(struct timeval *); | ||||
| #endif | ||||
| #else | ||||
| #include <sys/types.h> | ||||
| #if !defined(_WIN32) | ||||
| #if !defined(_WIN32) || defined(__CYGWIN32__) | ||||
| #include <sys/time.h> | ||||
| #else | ||||
| #include <winsock.h> | ||||
|   | ||||
| @@ -40,9 +40,57 @@ | ||||
| #define XA_STRING 0 | ||||
|  | ||||
| /* Private routines from win32_util.c */ | ||||
| #ifndef __CYGWIN32__ | ||||
| extern int gettimeofday(struct timeval* tp, void* tzp); | ||||
| #endif | ||||
| extern void *__glutFont(void *font); | ||||
| extern int __glutGetTransparentPixel(Display *dpy, XVisualInfo *vinfo); | ||||
| extern void __glutAdjustCoords(Window parent, int *x, int *y, int *width, int *height); | ||||
|  | ||||
|  | ||||
| /* Cygwin B20.1 misses the following definitions */ | ||||
| #ifdef __CYGWIN32__ | ||||
|  | ||||
| /* from winuser.h */ | ||||
| #define CDS_FULLSCREEN 4 | ||||
|  | ||||
| /* from mmsystem.h */ | ||||
| #define WINMMAPI __declspec(dllimport) | ||||
| typedef UINT MMRESULT; | ||||
|  | ||||
| #define MM_JOY1MOVE 0x3A0 | ||||
| #define MM_JOY1ZMOVE 0x3A2 | ||||
| #define MM_JOY1BUTTONDOWN 0x3B5 | ||||
| #define MM_JOY1BUTTONUP 0x3B7 | ||||
|  | ||||
| #define JOYERR_NOERROR 0 | ||||
| #define JOYERR_PARMS 165 | ||||
|  | ||||
| #define JOY_RETURNALL 0x000000ffl | ||||
|  | ||||
| #define JOYSTICKID1 0 | ||||
|  | ||||
| typedef struct joyinfoex_tag { | ||||
|     DWORD dwSize;                /* size of structure */ | ||||
|     DWORD dwFlags;               /* flags to indicate what to return */ | ||||
|     DWORD dwXpos;                /* x position */ | ||||
|     DWORD dwYpos;                /* y position */ | ||||
|     DWORD dwZpos;                /* z position */ | ||||
|     DWORD dwRpos;                /* rudder/4th axis position */ | ||||
|     DWORD dwUpos;                /* 5th axis position */ | ||||
|     DWORD dwVpos;                /* 6th axis position */ | ||||
|     DWORD dwButtons;             /* button states */ | ||||
|     DWORD dwButtonNumber;        /* current button number pressed */ | ||||
|     DWORD dwPOV;                 /* point of view state */ | ||||
|     DWORD dwReserved1;           /* reserved for communication between winmm & driver */ | ||||
|     DWORD dwReserved2;           /* reserved for future expansion */ | ||||
| } JOYINFOEX, *PJOYINFOEX, /* NEAR */ *NPJOYINFOEX, /* FAR */ *LPJOYINFOEX; | ||||
|  | ||||
| WINMMAPI MMRESULT WINAPI joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji); | ||||
| WINMMAPI MMRESULT WINAPI joyReleaseCapture( UINT uJoyID); | ||||
| WINMMAPI MMRESULT WINAPI joySetCapture( HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged); | ||||
| WINMMAPI MMRESULT WINAPI joySetThreshold( UINT uJoyID, UINT uThreshold); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif /* __glutwin32_h__ */ | ||||
|   | ||||
| @@ -129,26 +129,29 @@ __glutXGetLayerVisualInfo(Display * dpy, long lvinfo_mask, | ||||
|           break; | ||||
|         } | ||||
|     } | ||||
|     if (lvinfo_mask & VisualLayerMask) | ||||
|     if (lvinfo_mask & VisualLayerMask) { | ||||
|       if (overlayInfo == NULL) { | ||||
|         if (lvinfo_template->layer != 0) | ||||
|           continue; | ||||
|       } else if (lvinfo_template->layer != overlayInfo->layer) | ||||
|         continue; | ||||
|     if (lvinfo_mask & VisualTransparentType) | ||||
|     } | ||||
|     if (lvinfo_mask & VisualTransparentType) { | ||||
|       if (overlayInfo == NULL) { | ||||
|         if (lvinfo_template->type != None) | ||||
|           continue; | ||||
|       } else if (lvinfo_template->type != | ||||
|         overlayInfo->transparent_type) | ||||
|         continue; | ||||
|     if (lvinfo_mask & VisualTransparentValue) | ||||
|     } | ||||
|     if (lvinfo_mask & VisualTransparentValue) { | ||||
|       if (overlayInfo == NULL) | ||||
|         /* Non-overlay visuals have no sense of | ||||
|            TransparentValue. */ | ||||
|         continue; | ||||
|       else if (lvinfo_template->value != overlayInfo->value) | ||||
|         continue; | ||||
|     } | ||||
|     layerInfo[count].vinfo = *pVinfo; | ||||
|     if (overlayInfo == NULL) { | ||||
|       layerInfo[count].layer = 0; | ||||
|   | ||||
| @@ -11,11 +11,7 @@ | ||||
| #include "glutint.h" | ||||
| #include "glutstroke.h" | ||||
| #include "glutbitmap.h" | ||||
| #if defined(__CYGWIN32__) | ||||
| typedef MINMAXINFO* LPMINMAXINFO; | ||||
| #else | ||||
| #include <sys/timeb.h> | ||||
| #endif | ||||
|  | ||||
| /* The following added by Paul Garceau <pgarceau@teleport.com> */ | ||||
| #if defined(__MINGW32__) | ||||
| @@ -27,6 +23,7 @@ struct timeval; | ||||
| extern StrokeFontRec glutStrokeRoman, glutStrokeMonoRoman; | ||||
| extern BitmapFontRec glutBitmap8By13, glutBitmap9By15, glutBitmapTimesRoman10, glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12, glutBitmapHelvetica18; | ||||
|  | ||||
| #ifndef __CYGWIN32__ | ||||
| int | ||||
| gettimeofday(struct timeval* tp, void* tzp) | ||||
| { | ||||
| @@ -39,6 +36,7 @@ gettimeofday(struct timeval* tp, void* tzp) | ||||
|   /* 0 indicates that the call succeeded. */ | ||||
|   return 0; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| /* To get around the fact that Microsoft DLLs only allow functions | ||||
|    to be exported and now data addresses (as Unix DSOs support), the | ||||
|   | ||||
| @@ -8,13 +8,9 @@ | ||||
|  | ||||
|  | ||||
| #include "glutint.h" | ||||
| #if defined(__CYGWIN32__) | ||||
| typedef MINMAXINFO* LPMINMAXINFO; | ||||
| #else | ||||
| #include <sys/timeb.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef _WIN32 | ||||
| #if defined(_WIN32) && !defined(__CYGWIN32__) | ||||
| #include <mmsystem.h>  /* Win32 Multimedia API header. */ | ||||
| #endif | ||||
|  | ||||
|   | ||||
| @@ -1,59 +1 @@ | ||||
| # Makefile for OpenGL widgets | ||||
|  | ||||
| # NOTE: widget code is from SGI.  See any of the .c or .h files for the | ||||
| # complete copyright.  Mesa's GNU copyright DOES NOT apply to this widget | ||||
| # code. | ||||
|  | ||||
|  | ||||
| ##### MACROS ##### | ||||
|  | ||||
| VPATH = RCS | ||||
|  | ||||
| INCDIRS = -I../include -I/usr/include/Motif1.2 -I/usr/X11R6/include | ||||
| LIBDIR = ../lib | ||||
|  | ||||
| SOURCES = GLwDrawA.c GLwMDrawA.c | ||||
|  | ||||
|  | ||||
| OBJECTS = $(SOURCES:.c=.o) | ||||
|  | ||||
|  | ||||
|  | ||||
| ##### RULES ##### | ||||
|  | ||||
| .c.o: | ||||
| 	$(CC) -c $(INCDIRS) $(CFLAGS) $< | ||||
|  | ||||
|  | ||||
|  | ||||
| ##### TARGETS ##### | ||||
|  | ||||
| default: | ||||
| 	@echo "Specify a target configuration" | ||||
|  | ||||
| clean: | ||||
| 	-rm *.o *~ | ||||
|  | ||||
| # The name of the library file comes from Make-config | ||||
| #XXX GLW_LIB = libGLw.a | ||||
|  | ||||
| targets: $(LIBDIR)/$(GLW_LIB) | ||||
|  | ||||
|  | ||||
| # Make the library | ||||
| $(LIBDIR)/$(GLW_LIB): $(OBJECTS) | ||||
| 	$(MAKELIB) $(GLW_LIB) $(MAJOR) $(MINOR) $(OBJECTS) | ||||
| 	mv $(GLW_LIB)* $(LIBDIR) | ||||
|  | ||||
| include ../Make-config | ||||
|  | ||||
| include depend | ||||
|  | ||||
|  | ||||
|  | ||||
| # | ||||
| # Run 'make depend' to update the dependencies if you change what's included | ||||
| # by any source file. | ||||
| #  | ||||
| dep: $(SOURCES) | ||||
| 	makedepend -fdepend -Y -I../include $(SOURCES) | ||||
| include Makefile.X11 | ||||
|   | ||||
							
								
								
									
										64
									
								
								src/glw/Makefile.X11
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/glw/Makefile.X11
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| # Makefile for OpenGL widgets | ||||
|  | ||||
| # NOTE: widget code is from SGI.  See any of the .c or .h files for the | ||||
| # complete copyright.  Mesa's GNU copyright DOES NOT apply to this widget | ||||
| # code. | ||||
|  | ||||
|  | ||||
| ##### MACROS ##### | ||||
|  | ||||
| MAJOR = 1 | ||||
| MINOR = 0 | ||||
| TINY = 0 | ||||
|  | ||||
| VPATH = RCS | ||||
|  | ||||
| INCDIRS = -I../include -I/usr/include/Motif1.2 -I/usr/X11R6/include | ||||
| LIBDIR = ../lib | ||||
|  | ||||
| # Compile GLwMDrawA.c only if you have Motif headers! | ||||
| #SOURCES = GLwDrawA.c GLwMDrawA.c | ||||
| SOURCES = GLwDrawA.c | ||||
|  | ||||
|  | ||||
| OBJECTS = $(SOURCES:.c=.o) | ||||
|  | ||||
|  | ||||
|  | ||||
| ##### RULES ##### | ||||
|  | ||||
| .c.o: | ||||
| 	$(CC) -c $(INCDIRS) $(CFLAGS) $< | ||||
|  | ||||
|  | ||||
|  | ||||
| ##### TARGETS ##### | ||||
|  | ||||
| default: | ||||
| 	@echo "Specify a target configuration" | ||||
|  | ||||
| clean: | ||||
| 	-rm *.o *~ | ||||
|  | ||||
| targets: $(LIBDIR)/$(GLW_LIB) | ||||
|  | ||||
|  | ||||
| # Make the library | ||||
| $(LIBDIR)/$(GLW_LIB): $(OBJECTS) | ||||
| 	$(MAKELIB) $(GLW_LIB) $(MAJOR) $(MINOR) $(TINY) $(OBJECTS) | ||||
| 	mv $(GLW_LIB)* $(LIBDIR) | ||||
| 	-mv *.a $(LIBDIR) | ||||
|  | ||||
|  | ||||
| include ../Make-config | ||||
|  | ||||
| include depend | ||||
|  | ||||
|  | ||||
|  | ||||
| # | ||||
| # Run 'make depend' to update the dependencies if you change what's included | ||||
| # by any source file. | ||||
| #  | ||||
| dep: $(SOURCES) | ||||
| 	makedepend -fdepend -Y -I../include $(SOURCES) | ||||
| @@ -1,7 +1,7 @@ | ||||
| # $Id: Makefile.X11,v 1.7 1999/11/11 01:22:28 brianp Exp $ | ||||
| # $Id: Makefile.X11,v 1.6.2.2 2000/01/23 17:47:00 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.3 | ||||
| # Version:  3.1 | ||||
| # Copyright (C) 1995-1999  Brian Paul | ||||
|  | ||||
| # Makefile for core library | ||||
| @@ -18,13 +18,13 @@ VPATH = RCS | ||||
| INCDIR = ../include | ||||
| LIBDIR = ../lib | ||||
|  | ||||
|  | ||||
| CORE_SOURCES = \ | ||||
| 	glapi.c \ | ||||
| 	glapinoop.c \ | ||||
| 	accum.c \ | ||||
| 	alpha.c \ | ||||
| 	alphabuf.c \ | ||||
| 	api1.c \ | ||||
| 	api2.c \ | ||||
| 	apiext.c \ | ||||
| 	attrib.c \ | ||||
| 	bbox.c \ | ||||
| 	bitmap.c \ | ||||
| @@ -37,7 +37,6 @@ CORE_SOURCES = \ | ||||
| 	cva.c \ | ||||
| 	debug_xform.c \ | ||||
| 	depth.c \ | ||||
| 	dispatch.c \ | ||||
| 	dlist.c \ | ||||
| 	drawpix.c \ | ||||
| 	enable.c \ | ||||
| @@ -50,19 +49,18 @@ CORE_SOURCES = \ | ||||
| 	glmisc.c \ | ||||
| 	hash.c \ | ||||
| 	image.c \ | ||||
| 	imaging.c \ | ||||
| 	light.c \ | ||||
| 	lines.c \ | ||||
| 	logic.c \ | ||||
| 	masking.c \ | ||||
| 	matrix.c \ | ||||
| 	mem.c \ | ||||
| 	mmath.c \ | ||||
| 	mthreads.c \ | ||||
| 	pb.c \ | ||||
| 	pixel.c \ | ||||
| 	pipeline.c \ | ||||
| 	points.c \ | ||||
| 	pointers.c \ | ||||
| 	polygon.c \ | ||||
| 	quads.c \ | ||||
| 	rastpos.c \ | ||||
| @@ -106,6 +104,11 @@ DRIVER_SOURCES = \ | ||||
| 	X/xmesa4.c \ | ||||
| 	OSmesa/osmesa.c \ | ||||
| 	SVGA/svgamesa.c \ | ||||
| 	SVGA/svgamesa8.c \ | ||||
| 	SVGA/svgamesa15.c \ | ||||
| 	SVGA/svgamesa16.c \ | ||||
| 	SVGA/svgamesa24.c \ | ||||
| 	SVGA/svgamesa32.c \ | ||||
| 	FX/fxapi.c \ | ||||
| 	FX/fxclip.c \ | ||||
| 	FX/fxcva.c \ | ||||
| @@ -222,7 +225,8 @@ X86/3dnow.o: X86/3dnow.c | ||||
| #	@echo "Specify a target configuration" | ||||
|  | ||||
| clean: | ||||
| 	-rm *.o *~ */*.o */*~ | ||||
| 	-rm *.o *~ */*.o */*~ *.lo *.la | ||||
| 	-rm -rf .libs | ||||
|  | ||||
| targets: $(LIBDIR)/$(GL_LIB) | ||||
|  | ||||
|   | ||||
							
								
								
									
										8
									
								
								src/mesa/drivers/ggi/default/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/mesa/drivers/ggi/default/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| genkgi.conf | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.o | ||||
| *.la | ||||
							
								
								
									
										8
									
								
								src/mesa/drivers/ggi/display/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/mesa/drivers/ggi/display/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| fbdev.conf | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.o | ||||
| *.la | ||||
							
								
								
									
										7
									
								
								src/mesa/drivers/ggi/include/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/mesa/drivers/ggi/include/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.o | ||||
| *.la | ||||
							
								
								
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.o | ||||
| *.la | ||||
							
								
								
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/mesa/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/mesa/.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| .deps | ||||
| .libs | ||||
| Makefile | ||||
| Makefile.in | ||||
| *.lo | ||||
| *.o | ||||
| *.la | ||||
| @@ -1,24 +1,52 @@ | ||||
| /* -*- mode: C; tab-width:8;  -*- | ||||
|  | ||||
|              fxapi.c - 3Dfx VooDoo/Mesa interface | ||||
| */ | ||||
| /* -*- mode: C; tab-width:8;  -*- */ | ||||
|  | ||||
| /* | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* fxapi.c - 3Dfx VooDoo/Mesa interface */ | ||||
|  | ||||
|  | ||||
| /******************************************************************** | ||||
|  * | ||||
|  * Function names: | ||||
|  *  fxMesa....     (The driver API) | ||||
| @@ -820,9 +848,10 @@ void fxsignals() | ||||
| /* | ||||
|  * Create a new FX/Mesa context and return a handle to it. | ||||
|  */ | ||||
| fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res, | ||||
| 					   GrScreenRefresh_t ref, | ||||
| 					   const GLint attribList[]) | ||||
| fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win, | ||||
|                                              GrScreenResolution_t res, | ||||
|                                              GrScreenRefresh_t ref, | ||||
|                                              const GLint attribList[]) | ||||
| { | ||||
|    fxMesaContext fxMesa = NULL; | ||||
|    int i,type; | ||||
| @@ -835,7 +864,7 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res | ||||
|    GLint accumSize=0; | ||||
|    GLcontext *shareCtx = NULL; | ||||
|    GLcontext *ctx = 0; | ||||
|    FX_GrContext_t glideContext = 0; | ||||
|    /*FX_GrContext_t glideContext = 0;*/ | ||||
|    char *errorstr; | ||||
|  | ||||
|    if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
| @@ -928,24 +957,61 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res | ||||
|    fxMesa->verbose=verbose; | ||||
|    fxMesa->board=glbCurrentBoard; | ||||
|  | ||||
|  | ||||
|    fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref, | ||||
| #if  FXMESA_USE_ARGB | ||||
| 					  GR_COLORFORMAT_ARGB, | ||||
|    fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref, | ||||
| 					GR_COLORFORMAT_ARGB, | ||||
| 					GR_ORIGIN_LOWER_LEFT, | ||||
| 					2,aux); | ||||
| #else | ||||
| 					  GR_COLORFORMAT_ABGR, | ||||
|    fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref, | ||||
| 					GR_COLORFORMAT_ABGR, | ||||
| 					GR_ORIGIN_LOWER_LEFT, | ||||
| 					2,aux); | ||||
| #endif | ||||
| 					  GR_ORIGIN_LOWER_LEFT, | ||||
| 					  2,aux); | ||||
|    if (!fxMesa->glideContext){ | ||||
|       errorstr = "grSstWinOpen";  | ||||
|       goto errorhandler; | ||||
|    } | ||||
|  | ||||
|     | ||||
|    /* Pixel tables are use during pixel read-back */ | ||||
| #if FXMESA_USE_ARGB  | ||||
|    fxInitPixelTables(fxMesa, GL_FALSE); /* Force RGB pixel order */	 | ||||
| #else | ||||
|    if (glbHWConfig.SSTs[glbCurrentBoard].type == GR_SSTTYPE_VOODOO) { | ||||
|       /* jk991130 - GROSS HACK!!! - Voodoo 3s don't use BGR!! | ||||
|        * the only way to tell if it's a Voodoo 3 at this stage of the | ||||
|        * ballgame (no Glide 3.x for linux *yet*) is to query the # of TMUs | ||||
|        * as Voodoo3s have 2 TMUs on board, Banshee has only 1 | ||||
|        * Thanks to Joseph Kain for that one | ||||
|        */ | ||||
|       if (glbHWConfig.SSTs[glbCurrentBoard].sstBoard.VoodooConfig.nTexelfx == 2) { | ||||
|          fxInitPixelTables(fxMesa, GL_FALSE); /* use RGB pixel order (Voodoo3) */ | ||||
|       } | ||||
|       else { | ||||
|          fxInitPixelTables(fxMesa, GL_TRUE); /* use BGR pixel order on Voodoo1/2 */ | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       fxInitPixelTables(fxMesa, GL_FALSE); /* use RGB pixel order otherwise */ | ||||
|    } | ||||
| #endif | ||||
|  | ||||
|    fxMesa->width=FX_grSstScreenWidth(); | ||||
|    fxMesa->height=FX_grSstScreenHeight(); | ||||
|  | ||||
|    fxMesa->clipMinX = 0; | ||||
|    fxMesa->clipMaxX = fxMesa->width; | ||||
|    fxMesa->clipMinY = 0; | ||||
|    fxMesa->clipMaxY = fxMesa->height; | ||||
|  | ||||
|    fxMesa->screen_width = fxMesa->width; | ||||
|    fxMesa->screen_height = fxMesa->height; | ||||
|    fxMesa->x_offset = 0; | ||||
|    fxMesa->y_offset = 0; | ||||
|    fxMesa->y_delta = 0; | ||||
|     | ||||
|    fxMesa->needClip = 0; | ||||
|  | ||||
|    if(verbose) | ||||
|       fprintf(stderr,"Glide screen size: %dx%d\n", | ||||
|               (int)FX_grSstScreenWidth(),(int)FX_grSstScreenHeight()); | ||||
| @@ -989,7 +1055,8 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res | ||||
|  | ||||
|    /* install signal handlers */ | ||||
| #if defined(__linux__) | ||||
|    if (fxMesa->glCtx->CatchSignals) { | ||||
|    /* Only install if environment var. is not set. */ | ||||
|    if (fxMesa->glCtx->CatchSignals && !getenv("MESA_FX_NO_SIGNALS")) { | ||||
|       signal(SIGINT,cleangraphics_handler); | ||||
|       signal(SIGHUP,cleangraphics_handler); | ||||
|       signal(SIGPIPE,cleangraphics_handler); | ||||
| @@ -1204,7 +1271,7 @@ int GLAPIENTRY fxQueryHardware(void) | ||||
|         char buf[80]; | ||||
|                          | ||||
|         FX_grGlideGetVersion(buf); | ||||
|         fprintf(stderr,"Using Glide V%s\n",0); | ||||
|         fprintf(stderr,"Using Glide V%s\n",""); | ||||
|         fprintf(stderr,"Number of boards: %d\n",glbHWConfig.num_sst); | ||||
|  | ||||
|         if(glbHWConfig.SSTs[glbCurrentBoard].type==GR_SSTTYPE_VOODOO) { | ||||
| @@ -1232,7 +1299,10 @@ int GLAPIENTRY fxQueryHardware(void) | ||||
| #if defined(__WIN32__) | ||||
|     onexit((_onexit_t)cleangraphics); | ||||
| #elif defined(__linux__) | ||||
|     atexit(cleangraphics); | ||||
|     /* Only register handler if environment variable is not defined. */ | ||||
|     if (!getenv("MESA_FX_NO_SIGNALS")) { | ||||
| 	atexit(cleangraphics); | ||||
|     } | ||||
| #endif | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -1,28 +1,51 @@ | ||||
| /* -*- mode: C; tab-width:8;  -*- | ||||
|  | ||||
|              fxdd.c - 3Dfx VooDoo Mesa device driver functions | ||||
| */ | ||||
| /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||
|  | ||||
| /* | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  * 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: | ||||
|  * | ||||
|  * See the file fxapi.c for more informations about authors | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* fxdd.c - 3Dfx VooDoo Mesa device driver functions */ | ||||
|  | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
| @@ -34,6 +57,46 @@ | ||||
| #include "enums.h" | ||||
| #include "extensions.h" | ||||
|  | ||||
|  | ||||
| /* These lookup table are used to extract RGB values in [0,255] from | ||||
|  * 16-bit pixel values. | ||||
|  */ | ||||
| GLubyte FX_PixelToR[0x10000]; | ||||
| GLubyte FX_PixelToG[0x10000]; | ||||
| GLubyte FX_PixelToB[0x10000]; | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Initialize the FX_PixelTo{RGB} arrays. | ||||
|  * Input: bgrOrder - if TRUE, pixels are in BGR order, else RGB order. | ||||
|  */ | ||||
| void fxInitPixelTables(fxMesaContext fxMesa, GLboolean bgrOrder) | ||||
| { | ||||
|   GLuint pixel; | ||||
|  | ||||
|   fxMesa->bgrOrder=bgrOrder; | ||||
|   for (pixel = 0; pixel <= 0xffff; pixel++) { | ||||
|     GLuint r, g, b; | ||||
|     if (bgrOrder) { | ||||
|       r = (pixel & 0x001F) << 3; | ||||
|       g = (pixel & 0x07E0) >> 3; | ||||
|       b = (pixel & 0xF800) >> 8; | ||||
|     } | ||||
|     else { | ||||
|       r = (pixel & 0xF800) >> 8; | ||||
|       g = (pixel & 0x07E0) >> 3; | ||||
|       b = (pixel & 0x001F) << 3; | ||||
|     } | ||||
|     r = r * 255 / 0xF8;  /* fill in low-order bits */ | ||||
|     g = g * 255 / 0xFC; | ||||
|     b = b * 255 / 0xF8; | ||||
|     FX_PixelToR[pixel] = r; | ||||
|     FX_PixelToG[pixel] = g; | ||||
|     FX_PixelToB[pixel] = b; | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                 Miscellaneous functions                    *****/ | ||||
| /**********************************************************************/ | ||||
| @@ -45,10 +108,11 @@ void fxDDDither(GLcontext *ctx, GLboolean enable) | ||||
|     fprintf(stderr,"fxmesa: fxDDDither()\n"); | ||||
|   } | ||||
|  | ||||
|   if(enable) | ||||
|     grDitherMode(GR_DITHER_4x4); | ||||
|   else | ||||
|     grDitherMode(GR_DITHER_DISABLE); | ||||
|   if (enable) { | ||||
|     FX_grDitherMode(GR_DITHER_4x4); | ||||
|   } else { | ||||
|     FX_grDitherMode(GR_DITHER_DISABLE); | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -121,14 +185,14 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|     /* clear color and depth buffer */ | ||||
|  | ||||
|     if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) { | ||||
|       grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||
|       grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||
|                     (FxU16)(ctx->Depth.Clear*0xffff)); | ||||
|       FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||
|       FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||
| 		       (FxU16)(ctx->Depth.Clear*0xffff)); | ||||
|     } | ||||
|     if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) { | ||||
|        grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||
|        grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||
|                      (FxU16)(ctx->Depth.Clear*0xffff)); | ||||
|       FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||
|       FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||
| 		       (FxU16)(ctx->Depth.Clear*0xffff)); | ||||
|     } | ||||
|  | ||||
|     newmask=mask & (~(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)); | ||||
| @@ -137,19 +201,20 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|     /* clear color buffer */ | ||||
|  | ||||
|     if(ctx->Color.ColorMask) { | ||||
|       grDepthMask(FXFALSE); | ||||
|       FX_grDepthMask(FXFALSE); | ||||
|  | ||||
|       if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) { | ||||
|         grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||
|         grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); | ||||
|         FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||
|         FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); | ||||
|       } | ||||
|       if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) { | ||||
|         grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||
|         grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); | ||||
|         FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||
|         FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); | ||||
|       } | ||||
|  | ||||
|       if(ctx->Depth.Mask) | ||||
|         grDepthMask(FXTRUE); | ||||
|       if(ctx->Depth.Mask) { | ||||
|         FX_grDepthMask(FXTRUE); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     newmask=mask & (~(GL_COLOR_BUFFER_BIT)); | ||||
| @@ -158,14 +223,14 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|     /* clear depth buffer */ | ||||
|  | ||||
|     if(ctx->Depth.Mask) { | ||||
|       grColorMask(FXFALSE,FXFALSE); | ||||
|       grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||
|                     (FxU16)(ctx->Depth.Clear*0xffff)); | ||||
|       FX_grColorMask(FXFALSE,FXFALSE); | ||||
|       FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||
| 		       (FxU16)(ctx->Depth.Clear*0xffff)); | ||||
|  | ||||
|       grColorMask(ctx->Color.ColorMask[RCOMP] || | ||||
|                   ctx->Color.ColorMask[GCOMP] || | ||||
|                   ctx->Color.ColorMask[BCOMP], | ||||
|                   ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); | ||||
|       FX_grColorMask(ctx->Color.ColorMask[RCOMP] || | ||||
| 		     ctx->Color.ColorMask[GCOMP] || | ||||
| 		     ctx->Color.ColorMask[BCOMP], | ||||
| 		     ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); | ||||
|     } | ||||
|  | ||||
|     newmask=mask & (~(GL_DEPTH_BUFFER_BIT)); | ||||
| @@ -190,12 +255,12 @@ static GLboolean fxDDSetBuffer(GLcontext *ctx, GLenum mode ) | ||||
|  | ||||
|   if (mode == GL_FRONT_LEFT) { | ||||
|     fxMesa->currentFB = GR_BUFFER_FRONTBUFFER; | ||||
|     grRenderBuffer(fxMesa->currentFB); | ||||
|     FX_grRenderBuffer(fxMesa->currentFB); | ||||
|     return GL_TRUE; | ||||
|   } | ||||
|   else if (mode == GL_BACK_LEFT) { | ||||
|     fxMesa->currentFB = GR_BUFFER_BACKBUFFER; | ||||
|     grRenderBuffer(fxMesa->currentFB); | ||||
|     FX_grRenderBuffer(fxMesa->currentFB); | ||||
|     return GL_TRUE; | ||||
|   } | ||||
|   else { | ||||
| @@ -204,6 +269,22 @@ static GLboolean fxDDSetBuffer(GLcontext *ctx, GLenum mode ) | ||||
| } | ||||
|  | ||||
|  | ||||
| #ifdef XF86DRI | ||||
| static GLboolean inClipRects(fxMesaContext fxMesa, int px, int py) | ||||
| { | ||||
|   int i; | ||||
|  | ||||
|   py=fxMesa->height+fxMesa->y_offset-py; | ||||
|   for (i=0; i<fxMesa->numClipRects; i++) { | ||||
|     if ((px>=fxMesa->pClipRects[i].x1) &&  | ||||
| 	(px<fxMesa->pClipRects[i].x2) && | ||||
| 	(py>=fxMesa->pClipRects[i].y1) &&  | ||||
| 	(py<fxMesa->pClipRects[i].y2)) return GL_TRUE; | ||||
|   } | ||||
|   return GL_FALSE; | ||||
| } | ||||
| #endif | ||||
|  | ||||
|  | ||||
| static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | ||||
|                                 GLsizei width, GLsizei height, | ||||
| @@ -241,10 +322,16 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | ||||
|         ymax=fxMesa->height; | ||||
|   } | ||||
|  | ||||
|   xmin+=fxMesa->x_offset; | ||||
|   xmax+=fxMesa->x_offset; | ||||
|  | ||||
| #define ISCLIPPED(rx) ( ((rx)<xmin) || ((rx)>=xmax) ) | ||||
| #ifdef XF86DRI | ||||
| #define ISCLIPPED(rx, ry) ( ((rx)<xmin) || ((rx)>=xmax) || !inClipRects(fxMesa, rx, ry)) | ||||
| #else | ||||
| #define ISCLIPPED(rx, ry) ( ((rx)<xmin) || ((rx)>=xmax) ) | ||||
| #endif | ||||
| #define DRAWBIT(i) {       \ | ||||
|   if(!ISCLIPPED(x+px))     \ | ||||
|   if(!ISCLIPPED(x+px, y))  \ | ||||
|     if( (*pb) & (1<<(i)) ) \ | ||||
|       (*p)=color;          \ | ||||
|   p++;                     \ | ||||
| @@ -258,7 +345,7 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | ||||
|   scrwidth=fxMesa->width; | ||||
|   scrheight=fxMesa->height; | ||||
|  | ||||
|   if((px>=scrwidth) || (px+width<=0) || (py>=scrheight) || (py+height<=0)) | ||||
|   if ((px>=scrwidth) || (px+width<=0) || (py>=scrheight) || (py+height<=0)) | ||||
|     return GL_TRUE; | ||||
|  | ||||
|   pb=bitmap; | ||||
| @@ -269,16 +356,16 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | ||||
|     py=0; | ||||
|   } | ||||
|  | ||||
|   if(py+height>=scrheight) | ||||
|   if (py+height>=scrheight) | ||||
|     height-=(py+height)-scrheight; | ||||
|  | ||||
|   info.size=sizeof(info); | ||||
|   if(!grLfbLock(GR_LFB_WRITE_ONLY, | ||||
|                 fxMesa->currentFB, | ||||
|                 GR_LFBWRITEMODE_565, | ||||
|                 GR_ORIGIN_UPPER_LEFT, | ||||
|                 FXFALSE, | ||||
|                 &info)) { | ||||
|   if(!FX_grLfbLock(GR_LFB_WRITE_ONLY, | ||||
| 		   fxMesa->currentFB, | ||||
| 		   GR_LFBWRITEMODE_565, | ||||
| 		   GR_ORIGIN_UPPER_LEFT, | ||||
| 		   FXFALSE, | ||||
| 		   &info)) { | ||||
| #ifndef FX_SILENT | ||||
|     fprintf(stderr,"fx Driver: error locking the linear frame buffer\n"); | ||||
| #endif | ||||
| @@ -289,22 +376,28 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | ||||
|   g=(GLint)(ctx->Current.RasterColor[1]*255.0f); | ||||
|   b=(GLint)(ctx->Current.RasterColor[2]*255.0f); | ||||
|   a=(GLint)(ctx->Current.RasterColor[3]*255.0f); | ||||
|   color=(FxU16) | ||||
|     ( ((FxU16)0xf8 & b) <<(11-3))  | | ||||
|     ( ((FxU16)0xfc & g) <<(5-3+1)) | | ||||
|     ( ((FxU16)0xf8 & r) >> 3); | ||||
|   if (fxMesa->bgrOrder) | ||||
|     color=(FxU16) | ||||
|       ( ((FxU16)0xf8 & b) <<(11-3))  | | ||||
|       ( ((FxU16)0xfc & g) <<(5-3+1)) | | ||||
|       ( ((FxU16)0xf8 & r) >> 3); | ||||
|   else | ||||
|     color=(FxU16) | ||||
|       ( ((FxU16)0xf8 & r) <<(11-3))  | | ||||
|       ( ((FxU16)0xfc & g) <<(5-3+1)) | | ||||
|       ( ((FxU16)0xf8 & b) >> 3); | ||||
|  | ||||
|   stride=info.strideInBytes>>1; | ||||
|  | ||||
|   /* This code is a bit slow... */ | ||||
|  | ||||
|   for(y=py;y<(py+height);y++) { | ||||
|   if (py>ymin) ymin=py; | ||||
|   if (py+height<ymax) ymax=py+height; | ||||
|  | ||||
|     if (y>=ymax) | ||||
|         break; | ||||
|   px+=fxMesa->x_offset; | ||||
|   scrheight=fxMesa->height+fxMesa->y_offset; | ||||
|  | ||||
|     if (y<=ymin) | ||||
|         continue; | ||||
|   for(y=ymin; y<ymax; y++) { | ||||
|  | ||||
|     p=((FxU16 *)info.lfbPtr)+px+((scrheight-y)*stride); | ||||
|  | ||||
| @@ -315,7 +408,7 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   grLfbUnlock(GR_LFB_WRITE_ONLY,fxMesa->currentFB); | ||||
|   FX_grLfbUnlock(GR_LFB_WRITE_ONLY,fxMesa->currentFB); | ||||
|  | ||||
| #undef ISCLIPPED | ||||
| #undef DRAWBIT | ||||
| @@ -347,8 +440,6 @@ void fxDDSetNearFar(GLcontext *ctx, GLfloat n, GLfloat f) | ||||
| { | ||||
|    FX_CONTEXT(ctx)->new_state |= FX_NEW_FOG; | ||||
|    ctx->Driver.RenderStart = fxSetupFXUnits; | ||||
|  | ||||
|    FX_CONTEXT(ctx)->wscale = fabs(f)/65535.0f; | ||||
| } | ||||
|  | ||||
| /* KW: Put the word Mesa in the render string because quakeworld | ||||
| @@ -459,13 +550,13 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa ) | ||||
|    fxMesa->unitsState.depthMask		=GL_TRUE; | ||||
|    fxMesa->unitsState.depthTestFunc	=GR_CMP_LESS; | ||||
|  | ||||
|    grColorMask(FXTRUE, fxMesa->haveAlphaBuffer ? FXTRUE : FXFALSE); | ||||
|    FX_grColorMask(FXTRUE, fxMesa->haveAlphaBuffer ? FXTRUE : FXFALSE); | ||||
|    if(fxMesa->haveDoubleBuffer) { | ||||
|       fxMesa->currentFB=GR_BUFFER_BACKBUFFER; | ||||
|       grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||
|       FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||
|    } else { | ||||
|       fxMesa->currentFB=GR_BUFFER_FRONTBUFFER; | ||||
|       grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||
|       FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||
|    } | ||||
|    | ||||
|    fxMesa->state 	= NULL; | ||||
| @@ -481,10 +572,10 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa ) | ||||
|    } | ||||
|  | ||||
|    if(fxMesa->haveZBuffer) | ||||
|       grDepthBufferMode(GR_DEPTHBUFFER_ZBUFFER); | ||||
|       FX_grDepthBufferMode(GR_DEPTHBUFFER_ZBUFFER); | ||||
|      | ||||
| #if (!FXMESA_USE_ARGB) | ||||
|    grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); /* Not every Glide has this  */ | ||||
|    FX_grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); /* Not every Glide has this */ | ||||
| #endif | ||||
|  | ||||
|    fxMesa->glCtx->Const.MaxTextureLevels=9; | ||||
| @@ -505,7 +596,7 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa ) | ||||
|  | ||||
|    fxDDSetNearFar(fxMesa->glCtx,1.0,100.0); | ||||
|    | ||||
|    grGlideGetState((GrState*)fxMesa->state); | ||||
|    FX_grGlideGetState((GrState*)fxMesa->state); | ||||
|  | ||||
|    /* XXX Fix me: callback not registered when main VB is created. | ||||
|     */ | ||||
| @@ -546,6 +637,12 @@ void fxDDInitExtensions( GLcontext *ctx ) | ||||
|       gl_extensions_disable( ctx, "GL_ARB_multitexture" ); | ||||
| } | ||||
|  | ||||
| /* | ||||
|   This driver may need to move the drawing operations to a different sub | ||||
|   window. This modifies the viewport command to add our X,Y offset to all | ||||
|   drawn objects that go through the viewport transformation. | ||||
| */ | ||||
|  | ||||
| /************************************************************************/ | ||||
| /************************************************************************/ | ||||
| /************************************************************************/ | ||||
| @@ -591,16 +688,19 @@ static GLboolean fxIsInHardware(GLcontext *ctx) | ||||
|        /* Not very well written ... */ | ||||
|        ((ctx->Enabled & (TEXTURE0_1D | TEXTURE1_1D)) &&  | ||||
|         ((ctx->Enabled & (TEXTURE0_2D | TEXTURE1_2D))!=(TEXTURE0_2D | TEXTURE1_2D))) | ||||
|        ) | ||||
|        ) { | ||||
|       return GL_FALSE; | ||||
|     } | ||||
|  | ||||
|     if((ctx->Texture.ReallyEnabled & TEXTURE0_2D) && | ||||
|        (ctx->Texture.Unit[0].EnvMode==GL_BLEND)) | ||||
|        (ctx->Texture.Unit[0].EnvMode==GL_BLEND)) { | ||||
|       return GL_FALSE; | ||||
|     } | ||||
|  | ||||
|     if((ctx->Texture.ReallyEnabled & TEXTURE1_2D) && | ||||
|        (ctx->Texture.Unit[1].EnvMode==GL_BLEND)) | ||||
|        (ctx->Texture.Unit[1].EnvMode==GL_BLEND)) { | ||||
|       return GL_FALSE; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     if (MESA_VERBOSE & (VERBOSE_DRIVER|VERBOSE_TEXTURE)) | ||||
| @@ -617,8 +717,9 @@ static GLboolean fxIsInHardware(GLcontext *ctx) | ||||
|        /* Can't use multipass to blend a multitextured triangle - fall | ||||
| 	* back to software. | ||||
| 	*/ | ||||
|        if (!fxMesa->haveTwoTMUs && ctx->Color.BlendEnabled)  | ||||
|       if (!fxMesa->haveTwoTMUs && ctx->Color.BlendEnabled) { | ||||
| 	  return GL_FALSE; | ||||
|       } | ||||
| 	   | ||||
|        if ((ctx->Texture.Unit[0].EnvMode!=ctx->Texture.Unit[1].EnvMode) && | ||||
| 	   (ctx->Texture.Unit[0].EnvMode!=GL_MODULATE) && | ||||
| @@ -626,7 +727,6 @@ static GLboolean fxIsInHardware(GLcontext *ctx) | ||||
|        { | ||||
| 	  if (MESA_VERBOSE&VERBOSE_DRIVER) | ||||
| 	    fprintf(stderr, "fxMesa: unsupported multitex env mode\n"); | ||||
|  | ||||
| 	  return GL_FALSE; | ||||
|        } | ||||
|     } | ||||
| @@ -635,13 +735,15 @@ static GLboolean fxIsInHardware(GLcontext *ctx) | ||||
|        /* Not very well written ... */ | ||||
|        ((ctx->Enabled & TEXTURE0_1D) &&  | ||||
|         (!(ctx->Enabled & TEXTURE0_2D))) | ||||
|        ) | ||||
|        ) { | ||||
|       return GL_FALSE; | ||||
|     } | ||||
|  | ||||
|      | ||||
|     if((ctx->Texture.ReallyEnabled & TEXTURE0_2D) && | ||||
|        (ctx->Texture.Unit[0].EnvMode==GL_BLEND)) | ||||
|        (ctx->Texture.Unit[0].EnvMode==GL_BLEND)) { | ||||
|       return GL_FALSE; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return GL_TRUE; | ||||
| @@ -680,11 +782,11 @@ static void fxDDUpdateDDPointers(GLcontext *ctx) | ||||
|     ctx->Driver.LineFunc=fxMesa->LineFunc; | ||||
|     ctx->Driver.TriangleFunc=fxMesa->TriangleFunc; | ||||
|     ctx->Driver.QuadFunc=fxMesa->QuadFunc; | ||||
|   } else  | ||||
|   } else { | ||||
|      fxMesa->render_index = FX_FALLBACK; | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| void fxSetupDDPointers(GLcontext *ctx) | ||||
| { | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
| @@ -748,7 +850,6 @@ void fxSetupDDPointers(GLcontext *ctx) | ||||
|   ctx->Driver.CullFace=fxDDCullFace; | ||||
|   ctx->Driver.ShadeModel=fxDDShadeModel; | ||||
|   ctx->Driver.Enable=fxDDEnable; | ||||
|    | ||||
|  | ||||
|   ctx->Driver.RegisterVB=fxDDRegisterVB; | ||||
|   ctx->Driver.UnregisterVB=fxDDUnregisterVB; | ||||
| @@ -786,3 +887,4 @@ int gl_fx_dummy_function_dd(void) | ||||
| } | ||||
|  | ||||
| #endif  /* FX */ | ||||
|  | ||||
|   | ||||
| @@ -1,27 +1,51 @@ | ||||
| /* -*- mode: C; tab-width:8;  -*- | ||||
|  | ||||
|              fxdd.c - 3Dfx VooDoo Mesa span and pixel functions | ||||
| */ | ||||
| /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||
|  | ||||
| /* | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  * 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: | ||||
|  * | ||||
|  * See the file fxapi.c for more informations about authors | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* fxdd.c - 3Dfx VooDoo Mesa span and pixel functions */ | ||||
|  | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
| @@ -42,6 +66,72 @@ | ||||
|  | ||||
| #if !defined(FXMESA_USE_ARGB)  | ||||
|  | ||||
|  | ||||
| #if defined(FX_GLIDE3) && defined(XF86DRI) | ||||
|  | ||||
| static FxBool writeRegionClipped(fxMesaContext fxMesa, GrBuffer_t dst_buffer, | ||||
| 			  FxU32 dst_x, FxU32 dst_y, GrLfbSrcFmt_t src_format, | ||||
| 			  FxU32 src_width, FxU32 src_height, FxI32 src_stride, | ||||
| 			  void *src_data); | ||||
|  | ||||
| FxBool writeRegionClipped(fxMesaContext fxMesa, GrBuffer_t dst_buffer, | ||||
| 			  FxU32 dst_x, FxU32 dst_y, GrLfbSrcFmt_t src_format, | ||||
| 			  FxU32 src_width, FxU32 src_height, FxI32 src_stride, | ||||
| 			  void *src_data) | ||||
| { | ||||
|   int i, x, w, srcElt; | ||||
|   void *data; | ||||
|  | ||||
|   if (src_width==1 && src_height==1) { /* Easy case writing a point */ | ||||
|     for (i=0; i<fxMesa->numClipRects; i++) { | ||||
|       if ((dst_x>=fxMesa->pClipRects[i].x1) &&  | ||||
| 	  (dst_x<fxMesa->pClipRects[i].x2) && | ||||
| 	  (dst_y>=fxMesa->pClipRects[i].y1) &&  | ||||
| 	  (dst_y<fxMesa->pClipRects[i].y2)) { | ||||
| 	FX_grLfbWriteRegion(dst_buffer, dst_x, dst_y, src_format, | ||||
| 			    1, 1, src_stride, src_data); | ||||
| 	return GL_TRUE; | ||||
|       } | ||||
|     } | ||||
|   } else if (src_height==1) { /* Writing a span */ | ||||
|     if (src_format==GR_LFB_SRC_FMT_8888) srcElt=4; | ||||
|     else if (src_format==GR_LFB_SRC_FMT_ZA16) srcElt=2; | ||||
|     else { | ||||
|       fprintf(stderr, "Unknown src_format passed to writeRegionClipped\n"); | ||||
|       return GL_FALSE; | ||||
|     } | ||||
|     for (i=0; i<fxMesa->numClipRects; i++) { | ||||
|       if (dst_y>=fxMesa->pClipRects[i].y1 && dst_y<fxMesa->pClipRects[i].y2) { | ||||
| 	if (dst_x<fxMesa->pClipRects[i].x1) { | ||||
| 	  x=fxMesa->pClipRects[i].x1; | ||||
| 	  data=((char*)src_data)+srcElt*(dst_x-x); | ||||
| 	  w=src_width-(x-dst_x); | ||||
| 	} else { | ||||
| 	  x=dst_x; | ||||
| 	  data=src_data; | ||||
| 	  w=src_width; | ||||
| 	} | ||||
| 	if (x+w>fxMesa->pClipRects[i].x2) { | ||||
| 	  w=fxMesa->pClipRects[i].x2-x; | ||||
| 	} | ||||
| 	FX_grLfbWriteRegion(dst_buffer, x, dst_y, src_format, w, 1, | ||||
| 			    src_stride, data); | ||||
|       } | ||||
|     } | ||||
|   } else { /* Punt on the case of arbitrary rectangles */ | ||||
|     return GL_FALSE; | ||||
|   } | ||||
|   return GL_TRUE; | ||||
| } | ||||
|  | ||||
| #else | ||||
|  | ||||
| #define writeRegionClipped(fxm,dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\ | ||||
|   FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data) | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* KW: Rearranged the args in the call to grLfbWriteRegion(). | ||||
|  */ | ||||
| #define LFB_WRITE_SPAN_MESA(dst_buffer,		\ | ||||
| @@ -50,7 +140,7 @@ | ||||
| 			    src_width,		\ | ||||
| 			    src_stride,		\ | ||||
| 			    src_data)		\ | ||||
|   grLfbWriteRegion(dst_buffer,			\ | ||||
|   writeRegionClipped(fxMesa, dst_buffer,	\ | ||||
| 		   dst_x,			\ | ||||
| 		   dst_y,			\ | ||||
| 		   GR_LFB_SRC_FMT_8888,		\ | ||||
| @@ -60,7 +150,11 @@ | ||||
| 		   src_data)			\ | ||||
|  | ||||
|  | ||||
| #else /* defined(FXMESA_USE_RGBA) */ | ||||
| #else /* !defined(FXMESA_USE_RGBA) */ | ||||
|  | ||||
| #define writeRegionClipped(fxm,dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\ | ||||
|   FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data) | ||||
|  | ||||
|  | ||||
| #define MESACOLOR_TO_ARGB(c) (				\ | ||||
|              ( ((unsigned int)(c[ACOMP]))<<24 ) |	\ | ||||
| @@ -68,7 +162,7 @@ | ||||
|              ( ((unsigned int)(c[GCOMP]))<<8 )  |	\ | ||||
|              (  (unsigned int)(c[BCOMP])) ) | ||||
|    | ||||
| void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer,  | ||||
| inline void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer,  | ||||
| 			 FxU32 dst_x,  | ||||
| 			 FxU32 dst_y,  | ||||
| 			 FxU32 src_width, | ||||
| @@ -84,7 +178,7 @@ void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer, | ||||
|    { | ||||
|       argb[i] = MESACOLOR_TO_ARGB(rgba[i]); | ||||
|    } | ||||
|    FX_grLfbWriteRegion(dst_buffer, | ||||
|    writeRegionClipped( /*fxMesa,*/ NULL, dst_buffer, | ||||
| 		       dst_x, | ||||
| 		       dst_y, | ||||
| 		       GR_LFB_SRC_FMT_8888, | ||||
| @@ -93,8 +187,9 @@ void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer, | ||||
| 		       src_stride, | ||||
| 		       (void*)argb); | ||||
| } | ||||
|   | ||||
| #endif /* !defined(FXMESA_USE_RGBA) */ | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /************************************************************************/ | ||||
| /*****                    Span functions                            *****/ | ||||
| @@ -107,12 +202,13 @@ static void fxDDWriteRGBASpan(const GLcontext *ctx, | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1;  | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDWriteRGBASpan(...)\n"); | ||||
|   } | ||||
|  | ||||
|   x+=fxMesa->x_offset; | ||||
|   if (mask) { | ||||
|     int span=0; | ||||
|  | ||||
| @@ -143,13 +239,14 @@ static void fxDDWriteRGBSpan(const GLcontext *ctx, | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|   GLubyte rgba[MAX_WIDTH][4]; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDWriteRGBSpan()\n"); | ||||
|   } | ||||
|  | ||||
|   x+=fxMesa->x_offset; | ||||
|   if (mask) { | ||||
|     int span=0; | ||||
|  | ||||
| @@ -192,13 +289,14 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|   GLuint data[MAX_WIDTH]; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDWriteMonoRGBASpan(...)\n"); | ||||
|   } | ||||
|  | ||||
|   x+=fxMesa->x_offset; | ||||
|   if (mask) { | ||||
|     int span=0; | ||||
|  | ||||
| @@ -208,7 +306,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | ||||
|         ++span; | ||||
|       } else { | ||||
|         if (span > 0) { | ||||
|           FX_grLfbWriteRegion( fxMesa->currentFB, x+i-span, bottom-y, | ||||
|           writeRegionClipped(fxMesa,  fxMesa->currentFB, x+i-span, bottom-y, | ||||
|                             GR_LFB_SRC_FMT_8888, span, 1, 0, | ||||
|                             (void *) data ); | ||||
|           span = 0; | ||||
| @@ -217,7 +315,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | ||||
|     } | ||||
|  | ||||
|     if (span > 0) | ||||
|       FX_grLfbWriteRegion( fxMesa->currentFB, x+n-span, bottom-y, | ||||
|       writeRegionClipped(fxMesa,  fxMesa->currentFB, x+n-span, bottom-y, | ||||
|                         GR_LFB_SRC_FMT_8888, span, 1, 0, | ||||
|                         (void *) data ); | ||||
|   } else { | ||||
| @@ -225,7 +323,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | ||||
|       data[i]=(GLuint) fxMesa->color; | ||||
|     } | ||||
|  | ||||
|     FX_grLfbWriteRegion( fxMesa->currentFB, x, bottom-y, GR_LFB_SRC_FMT_8888, | ||||
|     writeRegionClipped(fxMesa,  fxMesa->currentFB, x, bottom-y, GR_LFB_SRC_FMT_8888, | ||||
|                       n, 1, 0, (void *) data ); | ||||
|   } | ||||
| } | ||||
| @@ -237,7 +335,7 @@ static void fxDDReadRGBASpan(const GLcontext *ctx, | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLushort data[MAX_WIDTH]; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDReadRGBASpan(...)\n"); | ||||
| @@ -245,20 +343,16 @@ static void fxDDReadRGBASpan(const GLcontext *ctx, | ||||
|  | ||||
|   assert(n < MAX_WIDTH); | ||||
|  | ||||
|   grLfbReadRegion( fxMesa->currentFB, x, bottom-y, n, 1, 0, data); | ||||
|   for (i=0;i<n;i++) { | ||||
| #if FXMESA_USE_ARGB | ||||
|     rgba[i][RCOMP]=(data[i] & 0xF800) >> 8; | ||||
|     rgba[i][GCOMP]=(data[i] & 0x07E0) >> 3; | ||||
|     rgba[i][BCOMP]=(data[i] & 0x001F) << 3; | ||||
| #else | ||||
|     rgba[i][RCOMP]=(data[i] & 0x001f) << 3; | ||||
|     rgba[i][GCOMP]=(data[i] & 0x07e0) >> 3; | ||||
|     rgba[i][BCOMP]=(data[i] & 0xf800) >> 8; | ||||
| #endif | ||||
|     rgba[i][ACOMP]=255; | ||||
|   } | ||||
|   x+=fxMesa->x_offset; | ||||
|   FX_grLfbReadRegion( fxMesa->currentFB, x, bottom-y, n, 1, 0, data); | ||||
|  | ||||
|   for (i=0;i<n;i++) { | ||||
|     GLushort pixel = data[i]; | ||||
|     rgba[i][RCOMP] = FX_PixelToR[pixel]; | ||||
|     rgba[i][GCOMP] = FX_PixelToG[pixel]; | ||||
|     rgba[i][BCOMP] = FX_PixelToB[pixel]; | ||||
|     rgba[i][ACOMP] = 255; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /************************************************************************/ | ||||
| @@ -271,7 +365,7 @@ static void fxDDWriteRGBAPixels(const GLcontext *ctx, | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDWriteRGBAPixels(...)\n"); | ||||
| @@ -279,8 +373,8 @@ static void fxDDWriteRGBAPixels(const GLcontext *ctx, | ||||
|  | ||||
|   for(i=0;i<n;i++) | ||||
|     if(mask[i]) | ||||
|        LFB_WRITE_SPAN_MESA(fxMesa->currentFB,x[i],bottom-y[i], | ||||
|                        /*GR_LFB_SRC_FMT_8888,*/1,/*1,*/0,(void *)rgba[i]); | ||||
|        LFB_WRITE_SPAN_MESA(fxMesa->currentFB, x[i]+fxMesa->x_offset, bottom-y[i], | ||||
|                        1, 1, (void *)rgba[i]); | ||||
| } | ||||
|  | ||||
| static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx, | ||||
| @@ -289,7 +383,7 @@ static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx, | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDWriteMonoRGBAPixels(...)\n"); | ||||
| @@ -297,7 +391,7 @@ static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx, | ||||
|  | ||||
|   for(i=0;i<n;i++) | ||||
|     if(mask[i]) | ||||
|       FX_grLfbWriteRegion(fxMesa->currentFB,x[i],bottom-y[i], | ||||
|       writeRegionClipped(fxMesa, fxMesa->currentFB,x[i]+fxMesa->x_offset,bottom-y[i], | ||||
|                        GR_LFB_SRC_FMT_8888,1,1,0,(void *) &fxMesa->color); | ||||
| } | ||||
|  | ||||
| @@ -307,31 +401,25 @@ static void fxDDReadRGBAPixels(const GLcontext *ctx, | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLushort data; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDReadRGBAPixels(...)\n"); | ||||
|   } | ||||
|  | ||||
|   for(i=0;i<n;i++) | ||||
|   for(i=0;i<n;i++) { | ||||
|     if(mask[i]) { | ||||
|       grLfbReadRegion(fxMesa->currentFB,x[i],bottom-y[i],1,1,0,&data); | ||||
|    #if FXMESA_USE_ARGB  | ||||
|       rgba[i][RCOMP]=(data & 0xF800) >> 8; | ||||
|       rgba[i][GCOMP]=(data & 0x07E0) >> 3; | ||||
|       rgba[i][BCOMP]=(data & 0x001F) >> 8; | ||||
|    #else | ||||
|       rgba[i][RCOMP]=(data & 0x001f) << 3; | ||||
|       rgba[i][GCOMP]=(data & 0x07e0) >> 3; | ||||
|       rgba[i][BCOMP]=(data & 0xf800) >> 8; | ||||
|    #endif | ||||
|       /* the alpha value should be read from the auxiliary buffer when required */ | ||||
|  | ||||
|       rgba[i][ACOMP]=255; | ||||
|       GLushort pixel; | ||||
|       FX_grLfbReadRegion(fxMesa->currentFB,x[i],bottom-y[i],1,1,0,&pixel); | ||||
|       rgba[i][RCOMP] = FX_PixelToR[pixel]; | ||||
|       rgba[i][GCOMP] = FX_PixelToG[pixel]; | ||||
|       rgba[i][BCOMP] = FX_PixelToB[pixel]; | ||||
|       rgba[i][ACOMP] = 255; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /************************************************************************/ | ||||
| /*****                    Depth functions                           *****/ | ||||
| /************************************************************************/ | ||||
| @@ -341,14 +429,15 @@ void fxDDReadDepthSpanFloat(GLcontext *ctx, | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|   GLushort data[MAX_WIDTH]; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDReadDepthSpanFloat(...)\n"); | ||||
|   } | ||||
|  | ||||
|   grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,data); | ||||
|   x+=fxMesa->x_offset; | ||||
|   FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,data); | ||||
|  | ||||
|   /* | ||||
|     convert the read values to float values [0.0 .. 1.0]. | ||||
| @@ -361,13 +450,14 @@ void fxDDReadDepthSpanInt(GLcontext *ctx, | ||||
| 			  GLuint n, GLint x, GLint y, GLdepth depth[]) | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDReadDepthSpanInt(...)\n"); | ||||
|   } | ||||
|  | ||||
|   grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depth); | ||||
|   x+=fxMesa->x_offset; | ||||
|   FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depth); | ||||
| } | ||||
|  | ||||
| GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx, | ||||
| @@ -380,13 +470,14 @@ GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx, | ||||
|   GLubyte *m=mask; | ||||
|   GLuint i; | ||||
|   GLuint passed=0; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDDepthTestSpanGeneric(...)\n"); | ||||
|   } | ||||
|  | ||||
|   grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depthdata); | ||||
|   x+=fxMesa->x_offset; | ||||
|   FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depthdata); | ||||
|  | ||||
|   /* switch cases ordered from most frequent to less frequent */ | ||||
|   switch (ctx->Depth.Func) { | ||||
| @@ -578,7 +669,7 @@ GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx, | ||||
|   } /*switch*/ | ||||
|  | ||||
|   if(passed) | ||||
|     FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,GR_LFB_SRC_FMT_ZA16,n,1,0,depthdata); | ||||
|     writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x,bottom-y,GR_LFB_SRC_FMT_ZA16,n,1,0,depthdata); | ||||
|  | ||||
|   return passed; | ||||
| } | ||||
| @@ -590,7 +681,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   GLdepth zval; | ||||
|   GLuint i; | ||||
|   GLint bottom=fxMesa->height-1; | ||||
|   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDDepthTestPixelsGeneric(...)\n"); | ||||
| @@ -603,10 +694,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] < zval) { | ||||
|             /* pass */ | ||||
|             FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|             writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|           } else { | ||||
|             /* fail */ | ||||
|             mask[i] = 0; | ||||
| @@ -617,7 +708,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Don't update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] < zval) { | ||||
|             /* pass */ | ||||
|           } | ||||
| @@ -634,10 +725,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] <= zval) { | ||||
|             /* pass */ | ||||
|             FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|             writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|           } else { | ||||
|             /* fail */ | ||||
|             mask[i] = 0; | ||||
| @@ -648,7 +739,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Don't update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] <= zval) { | ||||
|             /* pass */ | ||||
|           } else { | ||||
| @@ -664,10 +755,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] >= zval) { | ||||
|             /* pass */ | ||||
|             FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|             writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|           } else { | ||||
|             /* fail */ | ||||
|             mask[i] = 0; | ||||
| @@ -678,7 +769,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Don't update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] >= zval) { | ||||
|             /* pass */ | ||||
|           } else { | ||||
| @@ -694,10 +785,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] > zval) { | ||||
|             /* pass */ | ||||
|             FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|             writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|           } else { | ||||
|             /* fail */ | ||||
|             mask[i] = 0; | ||||
| @@ -708,7 +799,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Don't update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] > zval) { | ||||
|             /* pass */ | ||||
|           } else { | ||||
| @@ -724,10 +815,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] != zval) { | ||||
|             /* pass */ | ||||
|             FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|             writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|           } else { | ||||
|             /* fail */ | ||||
|             mask[i] = 0; | ||||
| @@ -738,7 +829,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Don't update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] != zval) { | ||||
|             /* pass */ | ||||
|           } | ||||
| @@ -755,10 +846,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] == zval) { | ||||
|             /* pass */ | ||||
|             FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|             writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|           } else { | ||||
|             /* fail */ | ||||
|             mask[i] = 0; | ||||
| @@ -769,7 +860,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Don't update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval); | ||||
|           FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval); | ||||
|           if (z[i] == zval) { | ||||
|             /* pass */ | ||||
|           } else { | ||||
| @@ -785,7 +876,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | ||||
|       /* Update Z buffer */ | ||||
|       for (i=0; i<n; i++) { | ||||
|         if (mask[i]) { | ||||
|           FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|           writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]); | ||||
|         } | ||||
|       } | ||||
|     } else { | ||||
|   | ||||
| @@ -1,27 +1,48 @@ | ||||
| /* -*- mode: C; tab-width:8;  -*- | ||||
|  | ||||
|              fxddtex.c - 3Dfx VooDoo Texture mapping functions | ||||
| */ | ||||
| /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||
|  | ||||
| /* | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  * 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: | ||||
|  * | ||||
|  * See the file fxapi.c for more informations about authors | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
| @@ -30,6 +51,37 @@ | ||||
|  | ||||
| #include "fxdrv.h" | ||||
|  | ||||
| void fxPrintTextureData(tfxTexInfo *ti) | ||||
| { | ||||
|   fprintf(stderr, "Texture Data:\n"); | ||||
|   if (ti->tObj) { | ||||
|     fprintf(stderr, "\tName: %d\n", ti->tObj->Name); | ||||
|     fprintf(stderr, "\tBaseLevel: %d\n", ti->tObj->BaseLevel); | ||||
|     fprintf(stderr, "\tSize: %d x %d\n",  | ||||
| 	    ti->tObj->Image[ti->tObj->BaseLevel]->Width, | ||||
| 	    ti->tObj->Image[ti->tObj->BaseLevel]->Height); | ||||
|   } else | ||||
|     fprintf(stderr, "\tName: UNNAMED\n"); | ||||
|   fprintf(stderr, "\tLast used: %d\n", ti->lastTimeUsed); | ||||
|   fprintf(stderr, "\tTMU: %d\n", ti->whichTMU); | ||||
|   fprintf(stderr, "\t%s\n", (ti->isInTM)?"In TMU":"Not in TMU"); | ||||
|   if (ti->tm[0])  | ||||
|     fprintf(stderr, "\tMem0: %x-%x\n", ti->tm[0]->startAddr,  | ||||
| 	    ti->tm[0]->endAddr); | ||||
|   if (ti->tm[1])  | ||||
|     fprintf(stderr, "\tMem1: %x-%x\n", ti->tm[1]->startAddr,  | ||||
| 	    ti->tm[1]->endAddr); | ||||
|   fprintf(stderr, "\tMipmaps: %d-%d\n", ti->minLevel, ti->maxLevel); | ||||
|   fprintf(stderr, "\tFilters: min %d min %d\n", ti->minFilt, ti->maxFilt); | ||||
|   fprintf(stderr, "\tClamps: s %d t %d\n", ti->sClamp, ti->tClamp); | ||||
|   fprintf(stderr, "\tScales: s %f t %f\n", ti->sScale, ti->tScale); | ||||
|   fprintf(stderr, "\tInt Scales: s %d t %d\n",  | ||||
| 	  ti->int_sScale/0x800000, ti->int_tScale/0x800000); | ||||
|   fprintf(stderr, "\t%s\n", (ti->fixedPalette)?"Fixed palette":"Non fixed palette"); | ||||
|   fprintf(stderr, "\t%s\n", (ti->validated)?"Validated":"Not validated"); | ||||
| } | ||||
|  | ||||
|  | ||||
| /************************************************************************/ | ||||
| /*************************** Texture Mapping ****************************/ | ||||
| /************************************************************************/ | ||||
| @@ -41,7 +93,7 @@ void fxTexInvalidate(GLcontext *ctx, struct gl_texture_object *tObj) | ||||
|  | ||||
|   fxTMMoveOutTM(fxMesa,tObj); /* TO DO: SLOW but easy to write */ | ||||
|  | ||||
|   ti=(tfxTexInfo *)tObj->DriverData; | ||||
|   ti=fxTMGetTexInfo(tObj); | ||||
|   ti->validated=GL_FALSE; | ||||
|   fxMesa->new_state|=FX_NEW_TEXTURING; | ||||
|   ctx->Driver.RenderStart = fxSetupFXUnits; | ||||
| @@ -59,12 +111,12 @@ static tfxTexInfo *fxAllocTexObjData(fxMesaContext fxMesa) | ||||
|   } | ||||
|  | ||||
|   ti->validated=GL_FALSE; | ||||
|   ti->tmi.isInTM=GL_FALSE; | ||||
|   ti->isInTM=GL_FALSE; | ||||
|  | ||||
|   ti->tmi.whichTMU=FX_TMU_NONE; | ||||
|   ti->whichTMU=FX_TMU_NONE; | ||||
|  | ||||
|   ti->tmi.tm[FX_TMU0]=NULL; | ||||
|   ti->tmi.tm[FX_TMU1]=NULL; | ||||
|   ti->tm[FX_TMU0]=NULL; | ||||
|   ti->tm[FX_TMU1]=NULL; | ||||
|  | ||||
|   ti->minFilt=GR_TEXTUREFILTER_POINT_SAMPLED; | ||||
|   ti->maxFilt=GR_TEXTUREFILTER_BILINEAR; | ||||
| @@ -72,17 +124,12 @@ static tfxTexInfo *fxAllocTexObjData(fxMesaContext fxMesa) | ||||
|   ti->sClamp=GR_TEXTURECLAMP_WRAP; | ||||
|   ti->tClamp=GR_TEXTURECLAMP_WRAP; | ||||
|  | ||||
|   if(fxMesa->haveTwoTMUs) { | ||||
|     ti->mmMode=GR_MIPMAP_NEAREST; | ||||
|     ti->LODblend=FXTRUE; | ||||
|   } else { | ||||
|     ti->mmMode=GR_MIPMAP_NEAREST_DITHER; | ||||
|     ti->LODblend=FXFALSE; | ||||
|   } | ||||
|   ti->mmMode=GR_MIPMAP_NEAREST; | ||||
|   ti->LODblend=FXFALSE; | ||||
|  | ||||
|   for(i=0;i<MAX_TEXTURE_LEVELS;i++) { | ||||
|     ti->tmi.mipmapLevel[i].used=GL_FALSE; | ||||
|     ti->tmi.mipmapLevel[i].data=NULL; | ||||
|     ti->mipmapLevel[i].used=GL_FALSE; | ||||
|     ti->mipmapLevel[i].data=NULL; | ||||
|   } | ||||
|  | ||||
|   return ti; | ||||
| @@ -100,13 +147,14 @@ void fxDDTexBind(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj) | ||||
|   if(target!=GL_TEXTURE_2D) | ||||
|     return; | ||||
|  | ||||
|   if(!tObj->DriverData) | ||||
|   if (!tObj->DriverData) { | ||||
|     tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||
|   } | ||||
|  | ||||
|   ti=(tfxTexInfo *)tObj->DriverData; | ||||
|   ti=fxTMGetTexInfo(tObj); | ||||
|  | ||||
|   fxMesa->texBindNumber++; | ||||
|   ti->tmi.lastTimeUsed=fxMesa->texBindNumber; | ||||
|   ti->lastTimeUsed=fxMesa->texBindNumber; | ||||
|  | ||||
|   fxMesa->new_state|=FX_NEW_TEXTURING; | ||||
|   ctx->Driver.RenderStart = fxSetupFXUnits; | ||||
| @@ -141,10 +189,10 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, | ||||
|   if(target!=GL_TEXTURE_2D) | ||||
|     return; | ||||
|  | ||||
|   if(!tObj->DriverData) | ||||
|   if (!tObj->DriverData) | ||||
|     tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||
|  | ||||
|   ti=(tfxTexInfo *)tObj->DriverData; | ||||
|   ti=fxTMGetTexInfo(tObj); | ||||
|  | ||||
|   switch(pname) { | ||||
|  | ||||
| @@ -219,7 +267,6 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, | ||||
|       ti->sClamp=GR_TEXTURECLAMP_WRAP; | ||||
|       break; | ||||
|     default: | ||||
|        fprintf(stderr, "BAD CLAMP\n"); | ||||
|       break; | ||||
|     } | ||||
|     fxMesa->new_state|=FX_NEW_TEXTURING; | ||||
| @@ -266,7 +313,7 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, | ||||
| void fxDDTexDel(GLcontext *ctx, struct gl_texture_object *tObj) | ||||
| { | ||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||
|   tfxTexInfo *ti=(tfxTexInfo *)tObj->DriverData; | ||||
|   tfxTexInfo *ti=fxTMGetTexInfo(tObj); | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: fxDDTexDel(%d,%x)\n",tObj->Name,(GLuint)ti); | ||||
| @@ -309,10 +356,10 @@ void fxDDTexPalette(GLcontext *ctx, struct gl_texture_object *tObj) | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     if(!tObj->DriverData) | ||||
|     if (!tObj->DriverData) | ||||
|       tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||
|    | ||||
|     ti=(tfxTexInfo *)tObj->DriverData; | ||||
|     ti=fxTMGetTexInfo(tObj); | ||||
|  | ||||
|     for(i=0;i<tObj->PaletteSize;i++) { | ||||
|       r=tObj->Palette[i*4]; | ||||
| @@ -374,13 +421,10 @@ void fxDDTexUseGlbPalette(GLcontext *ctx, GLboolean state) | ||||
|     if((ctx->Texture.Unit[0].Current==ctx->Texture.Unit[0].CurrentD[2]) && | ||||
|        (ctx->Texture.Unit[0].Current!=NULL)) { | ||||
|       struct gl_texture_object *tObj=ctx->Texture.Unit[0].Current; | ||||
|       tfxTexInfo *ti; | ||||
|  | ||||
|       if(!tObj->DriverData) | ||||
|       if (!tObj->DriverData) | ||||
|         tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||
|    | ||||
|       ti=(tfxTexInfo *)tObj->DriverData; | ||||
|  | ||||
|       fxTexInvalidate(ctx,tObj); | ||||
|     } | ||||
|   } | ||||
| @@ -872,10 +916,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image, | ||||
|  | ||||
|     if(wscale==hscale==1) { | ||||
|       int i=0; | ||||
|       int lenght=h*w; | ||||
|       int length=h*w; | ||||
|       unsigned short a,l; | ||||
|  | ||||
|       while(i++<lenght) { | ||||
|       while(i++<length) { | ||||
|         l=*data++; | ||||
|         a=*data++; | ||||
|  | ||||
| @@ -916,10 +960,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image, | ||||
|  | ||||
|     if(wscale==hscale==1) { | ||||
|       int i=0; | ||||
|       int lenght=h*w; | ||||
|       int length=h*w; | ||||
|       unsigned short r,g,b; | ||||
|  | ||||
|       while(i++<lenght) { | ||||
|       while(i++<length) { | ||||
|         r=*data++; | ||||
|         g=*data++; | ||||
|         b=*data++; | ||||
| @@ -966,10 +1010,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image, | ||||
|  | ||||
|     if(wscale==hscale==1) { | ||||
|       int i=0; | ||||
|       int lenght=h*w; | ||||
|       int length=h*w; | ||||
|       unsigned short r,g,b,a; | ||||
|  | ||||
|       while(i++<lenght) { | ||||
|       while(i++<length) { | ||||
|         r=*data++; | ||||
|         g=*data++; | ||||
|         b=*data++; | ||||
| @@ -1014,21 +1058,23 @@ void fxDDTexImg(GLcontext *ctx, GLenum target, | ||||
|   tfxTexInfo *ti; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: (%d) fxDDTexImg(...,%d,%x,%d,%d...)\n",tObj->Name, | ||||
| 	     target,internalFormat,image->Width,image->Height); | ||||
|      fprintf(stderr, | ||||
| 	     "fxmesa: (%d) fxDDTexImg(...,level=%d,target=%d,format=%x,width=%d,height=%d...)\n", | ||||
| 	     tObj->Name, level, target, internalFormat, image->Width, | ||||
| 	     image->Height); | ||||
|   } | ||||
|  | ||||
|   if(target!=GL_TEXTURE_2D) | ||||
|     return; | ||||
|  | ||||
|   if(!tObj->DriverData) | ||||
|   if (!tObj->DriverData) | ||||
|     tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||
|  | ||||
|   ti=(tfxTexInfo *)tObj->DriverData; | ||||
|   ti=fxTMGetTexInfo(tObj); | ||||
|  | ||||
|   if(fxIsTexSupported(target,internalFormat,image)) { | ||||
|     GrTextureFormat_t gldformat; | ||||
|     tfxMipMapLevel *mml=&ti->tmi.mipmapLevel[level]; | ||||
|     tfxMipMapLevel *mml=&ti->mipmapLevel[level]; | ||||
|  | ||||
|     fxTexGetFormat(internalFormat,&gldformat,NULL); | ||||
|      | ||||
| @@ -1039,7 +1085,7 @@ void fxDDTexImg(GLcontext *ctx, GLenum target, | ||||
|         fxTexBuildImageMap(image,internalFormat,&(mml->data), | ||||
|                            &(mml->translated)); | ||||
|  | ||||
|         if(ti->validated && ti->tmi.isInTM) | ||||
|         if(ti->validated && ti->isInTM) | ||||
|           fxTMReloadMipMapLevel(fxMesa,tObj,level); | ||||
|         else | ||||
|           fxTexInvalidate(ctx,tObj); | ||||
| @@ -1239,18 +1285,20 @@ void fxDDTexSubImg(GLcontext *ctx, GLenum target, | ||||
|   tfxMipMapLevel *mml; | ||||
|  | ||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|      fprintf(stderr,"fxmesa: (%d) fxDDTexSubImg(...,%d,%x,%d,%d...)\n",tObj->Name, | ||||
| 	     target,internalFormat,image->Width,image->Height); | ||||
|      fprintf(stderr, | ||||
| 	     "fxmesa: (%d) fxDDTexSubImg(level=%d,target=%d,format=%x,width=%d,height=%d)\n", | ||||
| 	     tObj->Name, level, target, internalFormat, image->Width, | ||||
| 	     image->Height); | ||||
|   } | ||||
|  | ||||
|   if(target!=GL_TEXTURE_2D) | ||||
|     return; | ||||
|  | ||||
|   if(!tObj->DriverData) | ||||
|   if (!tObj->DriverData) | ||||
|     return; | ||||
|  | ||||
|   ti=(tfxTexInfo *)tObj->DriverData; | ||||
|   mml=&ti->tmi.mipmapLevel[level]; | ||||
|   ti=fxTMGetTexInfo(tObj); | ||||
|   mml=&ti->mipmapLevel[level]; | ||||
|  | ||||
|   fxTexGetFormat(internalFormat,&gldformat,NULL); | ||||
|  | ||||
| @@ -1278,7 +1326,7 @@ void fxDDTexSubImg(GLcontext *ctx, GLenum target, | ||||
|     fxTexBuildSubImageMap(image,internalFormat,xoffset,yoffset, | ||||
|                           width,height,mml->data); | ||||
|  | ||||
|   if(ti->validated && ti->tmi.isInTM) | ||||
|   if(ti->validated && ti->isInTM) | ||||
|     fxTMReloadSubMipMapLevel(fxMesa,tObj,level,yoffset,height); | ||||
|   else | ||||
|     fxTexInvalidate(ctx,tObj); | ||||
|   | ||||
| @@ -1,27 +1,48 @@ | ||||
| /* -*- mode: C; tab-width:8;  -*- | ||||
|  | ||||
|              fxdrv.h - 3Dfx VooDoo driver types | ||||
| */ | ||||
| /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||
|  | ||||
| /* | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  * 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: | ||||
|  * | ||||
|  * See the file fxapi.c for more informations about authors | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef FXDRV_H | ||||
| #define FXDRV_H | ||||
|  | ||||
| @@ -54,14 +75,18 @@ | ||||
| #include "clip.h" | ||||
| #include "vbrender.h" | ||||
|  | ||||
| #ifdef XF86DRI | ||||
| typedef struct tfxMesaContext *fxMesaContext; | ||||
| #else | ||||
| #include "GL/fxmesa.h" | ||||
| #endif | ||||
| #include "fxglidew.h" | ||||
| /* use gl/gl.h GLAPI/GLAPIENTRY/GLCALLBACK in place of WINGDIAPI/APIENTRY/CALLBACK, */ | ||||
| /* these are defined in mesa gl/gl.h - tjump@spgs.com */ | ||||
|  | ||||
|  | ||||
|  | ||||
| #if 0 | ||||
| #if defined(MESA_DEBUG) && 0 | ||||
| extern void fx_sanity_triangle( GrVertex *, GrVertex *, GrVertex * ); | ||||
| #define grDrawTriangle fx_sanity_triangle | ||||
| #endif | ||||
| @@ -140,17 +165,17 @@ typedef struct { | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #define FX_VB_COLOR(fxm, color)			\ | ||||
| do {						\ | ||||
|   if (sizeof(GLint) == 4*sizeof(GLubyte)) {	\ | ||||
|      if (fxm->constColor != *(GLuint*)color) {	\ | ||||
| 	fxm->constColor = *(GLuint*)color;	\ | ||||
| 	grConstantColorValue(FXCOLOR4(color));	\ | ||||
|      }						\ | ||||
|   } else {					\ | ||||
|      grConstantColorValue(FXCOLOR4(color));	\ | ||||
|   }						\ | ||||
| } while (0) | ||||
| #define FX_VB_COLOR(fxm, color)				\ | ||||
|   do {							\ | ||||
|     if (sizeof(GLint) == 4*sizeof(GLubyte)) {		\ | ||||
|       if (fxm->constColor != *(GLuint*)color) {		\ | ||||
| 	fxm->constColor = *(GLuint*)color;		\ | ||||
| 	FX_grConstantColorValue(FXCOLOR4(color));	\ | ||||
|       }							\ | ||||
|     } else {						\ | ||||
|       FX_grConstantColorValue(FXCOLOR4(color));		\ | ||||
|     }							\ | ||||
|   } while (0) | ||||
|  | ||||
| #define GOURAUD(x) {					\ | ||||
|   GLubyte *col = VB->ColorPtr->data[(x)];		\ | ||||
| @@ -230,23 +255,20 @@ do {						\ | ||||
|  | ||||
| #define FX_UM_E_IFMT                0x00fff000 | ||||
|  | ||||
| #define FX_UM_COLOR_ITERATED        0x00100000 | ||||
| #define FX_UM_COLOR_CONSTANT        0x00200000 | ||||
| #define FX_UM_ALPHA_ITERATED        0x00400000 | ||||
| #define FX_UM_ALPHA_CONSTANT        0x00800000 | ||||
| #define FX_UM_COLOR_ITERATED        0x01000000 | ||||
| #define FX_UM_COLOR_CONSTANT        0x02000000 | ||||
| #define FX_UM_ALPHA_ITERATED        0x04000000 | ||||
| #define FX_UM_ALPHA_CONSTANT        0x08000000 | ||||
|  | ||||
| typedef void (*tfxRenderVBFunc)(GLcontext *); | ||||
|  | ||||
| typedef struct tfxTMFreeListNode { | ||||
|   struct tfxTMFreeListNode *next; | ||||
|   FxU32 startAddress, endAddress; | ||||
| } tfxTMFreeNode; | ||||
|  | ||||
| typedef struct tfxTMAllocListNode { | ||||
|   struct tfxTMAllocListNode *next; | ||||
|   FxU32 startAddress, endAddress; | ||||
|   struct gl_texture_object *tObj; | ||||
| } tfxTMAllocNode; | ||||
| /* | ||||
|   Memory range from startAddr to endAddr-1 | ||||
| */ | ||||
| typedef struct MemRange_t { | ||||
|   struct MemRange_t *next; | ||||
|   FxU32 startAddr, endAddr; | ||||
| } MemRange; | ||||
|  | ||||
| typedef struct { | ||||
|   GLsizei width, height; | ||||
| @@ -256,19 +278,17 @@ typedef struct { | ||||
|   GLboolean translated, used; | ||||
| } tfxMipMapLevel; | ||||
|  | ||||
| typedef struct { | ||||
| typedef struct tfxTexInfo_t { | ||||
|   struct tfxTexInfo *next; | ||||
|   struct gl_texture_object *tObj; | ||||
|  | ||||
|   GLuint lastTimeUsed; | ||||
|  | ||||
|   FxU32 whichTMU; | ||||
|  | ||||
|   tfxTMAllocNode *tm[FX_NUM_TMU]; | ||||
|   GLboolean isInTM; | ||||
|  | ||||
|   tfxMipMapLevel mipmapLevel[MAX_TEXTURE_LEVELS]; | ||||
|   GLboolean isInTM; | ||||
| } tfxTMInfo; | ||||
|  | ||||
| typedef struct { | ||||
|   tfxTMInfo tmi; | ||||
|   MemRange *tm[FX_NUM_TMU]; | ||||
|  | ||||
|   GLint minLevel, maxLevel; | ||||
|   GLint baseLevelInternalFormat; | ||||
| @@ -384,14 +404,27 @@ struct tfxMesaVertexBuffer { | ||||
|  | ||||
| #define FX_DRIVER_DATA(vb) ((struct tfxMesaVertexBuffer *)((vb)->driver_data)) | ||||
| #define FX_CONTEXT(ctx) ((fxMesaContext)((ctx)->DriverCtx)) | ||||
| #define FX_TEXTURE_DATA(t) ((tfxTexInfo *) ((t)->Current->DriverData)) | ||||
| #define FX_TEXTURE_DATA(t) fxTMGetTexInfo((t)->Current) | ||||
|  | ||||
| #if defined(XFree86Server) || defined(GLX_DIRECT_RENDERING) | ||||
| #include "tdfx_init.h" | ||||
| #else | ||||
| #define DRI_FX_CONTEXT | ||||
| #define BEGIN_BOARD_LOCK() | ||||
| #define END_BOARD_LOCK() | ||||
| #define BEGIN_CLIP_LOOP() | ||||
| #define END_CLIP_LOOP() | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* These lookup table are used to extract RGB values in [0,255] from | ||||
|  * 16-bit pixel values. | ||||
|  */ | ||||
| extern GLubyte FX_PixelToR[0x10000]; | ||||
| extern GLubyte FX_PixelToG[0x10000]; | ||||
| extern GLubyte FX_PixelToB[0x10000]; | ||||
|  | ||||
|  | ||||
| struct tfxMesaContext { | ||||
|   GuTexPalette glbPalette; | ||||
|  | ||||
| @@ -404,6 +437,7 @@ struct tfxMesaContext { | ||||
|  | ||||
|   GrBuffer_t currentFB; | ||||
|  | ||||
|   GLboolean bgrOrder; | ||||
|   GrColor_t color; | ||||
|   GrColor_t clearC; | ||||
|   GrAlpha_t clearA; | ||||
| @@ -412,7 +446,6 @@ struct tfxMesaContext { | ||||
|   tfxUnitsState unitsState; | ||||
|   tfxUnitsState restoreUnitsState; /* saved during multipass */ | ||||
|  | ||||
|  | ||||
|   GLuint tmu_source[FX_NUM_TMU]; | ||||
|   GLuint tex_dest[MAX_TEXTURE_UNITS]; | ||||
|   GLuint setupindex; | ||||
| @@ -438,11 +471,12 @@ struct tfxMesaContext { | ||||
|   GLint tmuSrc; | ||||
|   GLuint lastUnitsMode; | ||||
|   GLuint freeTexMem[FX_NUM_TMU]; | ||||
|   tfxTMFreeNode *tmFree[FX_NUM_TMU]; | ||||
|   tfxTMAllocNode *tmAlloc[FX_NUM_TMU]; | ||||
|   MemRange *tmPool; | ||||
|   MemRange *tmFree[FX_NUM_TMU]; | ||||
|  | ||||
|   GLenum fogTableMode; | ||||
|   GLfloat fogDensity; | ||||
|   GLfloat fogStart, fogEnd; | ||||
|   GrFog_t *fogTable; | ||||
|  | ||||
|   /* Acc. functions */ | ||||
| @@ -477,10 +511,19 @@ struct tfxMesaContext { | ||||
|    | ||||
|   FX_GrContext_t glideContext; | ||||
|  | ||||
|   GLfloat wscale; | ||||
|   int x_offset; | ||||
|   int y_offset; | ||||
|   int y_delta; | ||||
|   int screen_width; | ||||
|   int screen_height; | ||||
|   int initDone; | ||||
|   int clipMinX; | ||||
|   int clipMaxX; | ||||
|   int clipMinY; | ||||
|   int clipMaxY; | ||||
|   int needClip; | ||||
|  | ||||
|   DRI_FX_CONTEXT | ||||
|  | ||||
| }; | ||||
|  | ||||
| typedef void (*tfxSetupFunc)(struct vertex_buffer *, GLuint, GLuint); | ||||
| @@ -522,6 +565,7 @@ extern void fxSetupDDSpanPointers(GLcontext *); | ||||
|  | ||||
| extern void fxDDBufferSize(GLcontext *, GLuint *, GLuint *); | ||||
|  | ||||
| extern void fxPrintTextureData(tfxTexInfo *ti); | ||||
| extern void fxDDTexEnv(GLcontext *, GLenum, const GLfloat *); | ||||
| extern void fxDDTexImg(GLcontext *, GLenum, struct gl_texture_object *, | ||||
| 		       GLint, GLint, const struct gl_texture_image *); | ||||
| @@ -571,10 +615,12 @@ extern void fxDDRenderVBIndirectDirect( struct vertex_buffer *VB ); | ||||
|  | ||||
| extern void fxDDInitExtensions( GLcontext *ctx ); | ||||
|  | ||||
| #define fxTMGetTexInfo(o) ((tfxTexInfo*)((o)->DriverData)) | ||||
| extern void fxTMInit(fxMesaContext ctx); | ||||
| extern void fxTMClose(fxMesaContext ctx); | ||||
| extern void fxTMMoveInTM(fxMesaContext, struct gl_texture_object *, GLint); | ||||
| extern void fxTMMoveOutTM(fxMesaContext, struct gl_texture_object *); | ||||
| #define fxTMMoveOutTM_NoLock fxTMMoveOutTM | ||||
| extern void fxTMFreeTexture(fxMesaContext, struct gl_texture_object *); | ||||
| extern void fxTMReloadMipMapLevel(fxMesaContext, struct gl_texture_object *, GLint); | ||||
| extern void fxTMReloadSubMipMapLevel(fxMesaContext, struct gl_texture_object *, | ||||
| @@ -622,4 +668,11 @@ extern void fxDDDoRenderVB( struct vertex_buffer *VB ); | ||||
|  | ||||
| extern int fxDDInitFxMesaContext( fxMesaContext fxMesa ); | ||||
|  | ||||
|  | ||||
| extern void fxSetScissorValues(GLcontext *ctx); | ||||
| extern void fxTMMoveInTM_NoLock(fxMesaContext fxMesa,  | ||||
| 				struct gl_texture_object *tObj,  | ||||
| 				GLint where); | ||||
| extern void fxInitPixelTables(fxMesaContext fxMesa, GLboolean bgrOrder); | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -1,28 +1,47 @@ | ||||
| /* $Id: fxglidew.c,v 1.3 1999/10/05 19:26:54 miklos Exp $ */ | ||||
| /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  *  | ||||
|  * | ||||
|  * Copyright (C) 1999  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"), | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|   | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| @@ -36,8 +55,7 @@ | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
|  | ||||
| FxI32 FX_grGetInteger(FxU32 pname) | ||||
| static FxI32 FX_grGetInteger_NoLock(FxU32 pname) | ||||
| { | ||||
| #if !defined(FX_GLIDE3) | ||||
|   switch (pname)  | ||||
| @@ -49,7 +67,7 @@ FxI32 FX_grGetInteger(FxU32 pname) | ||||
|     case FX_LFB_PIXEL_PIPE: | ||||
|        return FXFALSE; | ||||
|     case FX_PENDING_BUFFERSWAPS: | ||||
|        return grBufferNumPending(); | ||||
| 	return grBufferNumPending(); | ||||
|     default: | ||||
|        if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||
|           fprintf(stderr,"Wrong parameter in FX_grGetInteger!\n"); | ||||
| @@ -74,12 +92,74 @@ FxI32 FX_grGetInteger(FxU32 pname) | ||||
|        } | ||||
|        return -1; | ||||
|   } | ||||
|    | ||||
|  | ||||
|   grGet(grname,4,&result); | ||||
|   return result; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| FxI32 FX_grGetInteger(FxU32 pname) | ||||
| { | ||||
|   int result; | ||||
|  | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   result=FX_grGetInteger_NoLock(pname); | ||||
|   END_BOARD_LOCK(); | ||||
|   return result; | ||||
| } | ||||
|  | ||||
|  | ||||
| FxBool FX_grLfbLock(GrLock_t type, GrBuffer_t buffer,  | ||||
| 		    GrLfbWriteMode_t writeMode, GrOriginLocation_t origin,  | ||||
| 		    FxBool pixelPipeline, GrLfbInfo_t *info ) { | ||||
|   FxBool result; | ||||
|  | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   result=grLfbLock(type, buffer, writeMode, origin, pixelPipeline, info); | ||||
|   END_BOARD_LOCK(); | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| FxU32 FX_grTexTextureMemRequired(FxU32 evenOdd, GrTexInfo *info) { | ||||
|   FxU32 result; | ||||
|  | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   result=grTexTextureMemRequired(evenOdd, info); | ||||
|   END_BOARD_LOCK(); | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| FxU32 FX_grTexMinAddress(GrChipID_t tmu) { | ||||
|   FxU32 result; | ||||
|  | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   result=grTexMinAddress(tmu); | ||||
|   END_BOARD_LOCK(); | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| extern FxU32 FX_grTexMaxAddress(GrChipID_t tmu) { | ||||
|   FxU32 result; | ||||
|  | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   result=grTexMaxAddress(tmu); | ||||
|   END_BOARD_LOCK(); | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| FxBool FX_grSstControl(FxU32 code) | ||||
| { | ||||
| #if defined(FX_GLIDE3) | ||||
|   (void) code; | ||||
|   return 1;  /* OK? */ | ||||
| #else | ||||
|   FxU32 result; | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   result = grSstControl(code); | ||||
|   END_BOARD_LOCK(); | ||||
|   return result; | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
| #if defined(FX_GLIDE3) | ||||
| @@ -90,39 +170,33 @@ void FX_grGammaCorrectionValue(float val) | ||||
| /* ToDo */ | ||||
| } | ||||
|  | ||||
| void FX_grSstControl(int par) | ||||
| { | ||||
|   (void)par; | ||||
|   /* ToDo */ | ||||
| } | ||||
| int FX_getFogTableSize(void) | ||||
| { | ||||
|    int result; | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    grGet(GR_FOG_TABLE_ENTRIES,sizeof(int),(void*)&result); | ||||
|    END_BOARD_LOCK(); | ||||
|    return result;  | ||||
| } | ||||
|  | ||||
| int FX_getGrStateSize(void) | ||||
| { | ||||
|    int result; | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    grGet(GR_GLIDE_STATE_SIZE,sizeof(int),(void*)&result); | ||||
|     | ||||
|    END_BOARD_LOCK(); | ||||
|  | ||||
|    return result; | ||||
|     | ||||
| } | ||||
| int FX_grBufferNumPending() | ||||
| { | ||||
|    int result; | ||||
|    grGet(GR_PENDING_BUFFERSWAPS,sizeof(int),(void*)&result); | ||||
|     | ||||
|    return result; | ||||
| } | ||||
|  | ||||
| int FX_grSstScreenWidth() | ||||
| { | ||||
|    FxI32 result[4]; | ||||
|     | ||||
|  | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    grGet(GR_VIEWPORT,sizeof(FxI32)*4,result); | ||||
|    END_BOARD_LOCK(); | ||||
|     | ||||
|    return result[2]; | ||||
| } | ||||
| @@ -130,15 +204,19 @@ int FX_grSstScreenWidth() | ||||
| int FX_grSstScreenHeight() | ||||
| { | ||||
|    FxI32 result[4]; | ||||
|     | ||||
|  | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    grGet(GR_VIEWPORT,sizeof(FxI32)*4,result); | ||||
|    END_BOARD_LOCK(); | ||||
|     | ||||
|    return result[3]; | ||||
| } | ||||
|  | ||||
| void FX_grGlideGetVersion(char *buf) | ||||
| { | ||||
|    strcpy(buf,grGetString(GR_VERSION)); | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   strcpy(buf,grGetString(GR_VERSION)); | ||||
|   END_BOARD_LOCK(); | ||||
| } | ||||
|  | ||||
| void FX_grSstPerfStats(GrSstPerfStats_t *st) | ||||
| @@ -154,74 +232,91 @@ void FX_grSstPerfStats(GrSstPerfStats_t *st) | ||||
| void FX_grAADrawLine(GrVertex *a,GrVertex *b) | ||||
| { | ||||
|    /* ToDo */ | ||||
|    BEGIN_CLIP_LOOP(); | ||||
|    grDrawLine(a,b); | ||||
|    END_CLIP_LOOP(); | ||||
| } | ||||
|  | ||||
| void FX_grAADrawPoint(GrVertex *a) | ||||
| { | ||||
|   BEGIN_CLIP_LOOP(); | ||||
|   grDrawPoint(a); | ||||
|   END_CLIP_LOOP(); | ||||
| } | ||||
|  | ||||
| #if FX_USE_PARGB | ||||
| void FX_setupGrVertexLayout(void) | ||||
| { | ||||
|    grReset(GR_VERTEX_PARAMETER); | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   grReset(GR_VERTEX_PARAMETER); | ||||
|     | ||||
|    grCoordinateSpace(GR_WINDOW_COORDS); | ||||
|    grVertexLayout(GR_PARAM_XY,  	GR_VERTEX_X_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_PARGB, 	GR_VERTEX_PARGB_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_Q,		GR_VERTEX_OOW_OFFSET << 2,	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_Z,           GR_VERTEX_OOZ_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_ST0, 	GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	 | ||||
|    grVertexLayout(GR_PARAM_Q0,  	GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE);  | ||||
|    grVertexLayout(GR_PARAM_ST1, 	GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||
|    grVertexLayout(GR_PARAM_Q1,  	GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||
|   grCoordinateSpace(GR_WINDOW_COORDS); | ||||
|   grVertexLayout(GR_PARAM_XY, GR_VERTEX_X_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_PARGB, GR_VERTEX_PARGB_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_Q, GR_VERTEX_OOW_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_Z, GR_VERTEX_OOZ_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_ST0, GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	 | ||||
|   grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE);  | ||||
|   grVertexLayout(GR_PARAM_ST1, GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||
|   grVertexLayout(GR_PARAM_Q1, GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||
|   END_BOARD_LOCK(); | ||||
| } | ||||
| #else /* FX_USE_PARGB */ | ||||
| void FX_setupGrVertexLayout(void) | ||||
| { | ||||
|    grReset(GR_VERTEX_PARAMETER); | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   grReset(GR_VERTEX_PARAMETER); | ||||
|     | ||||
|    grCoordinateSpace(GR_WINDOW_COORDS); | ||||
|    grVertexLayout(GR_PARAM_XY,  	GR_VERTEX_X_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_RGB, 	GR_VERTEX_R_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|  /*  grVertexLayout(GR_PARAM_Z,   	GR_VERTEX_Z_OFFSET << 2, 	GR_PARAM_ENABLE); */ | ||||
|    grVertexLayout(GR_PARAM_A,   	GR_VERTEX_A_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_Q,		GR_VERTEX_OOW_OFFSET << 2,	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_Z,           GR_VERTEX_OOZ_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|    grVertexLayout(GR_PARAM_ST0, 	GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	 | ||||
|    grVertexLayout(GR_PARAM_Q0,  	GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE);  | ||||
|    grVertexLayout(GR_PARAM_ST1, 	GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||
|    grVertexLayout(GR_PARAM_Q1,  	GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||
|   grCoordinateSpace(GR_WINDOW_COORDS); | ||||
|   grVertexLayout(GR_PARAM_XY, GR_VERTEX_X_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_RGB, GR_VERTEX_R_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_A, GR_VERTEX_A_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_Q, GR_VERTEX_OOW_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_Z, GR_VERTEX_OOZ_OFFSET << 2,	GR_PARAM_ENABLE); | ||||
|   grVertexLayout(GR_PARAM_ST0, GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	 | ||||
|   grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE); | ||||
|   grVertexLayout(GR_PARAM_ST1, GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||
|   grVertexLayout(GR_PARAM_Q1, GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE); | ||||
|   END_BOARD_LOCK(); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| void FX_grHints(GrHint_t hintType, FxU32 hintMask) | ||||
| void FX_grHints_NoLock(GrHint_t hintType, FxU32 hintMask) | ||||
| { | ||||
|    switch(hintType) { | ||||
|       case GR_HINT_STWHINT: | ||||
|       { | ||||
|         if (hintMask & GR_STWHINT_W_DIFF_TMU0) | ||||
|            grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|         else | ||||
|            grVertexLayout(GR_PARAM_Q0,GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_DISABLE); | ||||
|             | ||||
|         if (hintMask & GR_STWHINT_ST_DIFF_TMU1) | ||||
|             grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|         else | ||||
|             grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE); | ||||
|   switch(hintType) { | ||||
|   case GR_HINT_STWHINT: | ||||
|     { | ||||
|       if (hintMask & GR_STWHINT_W_DIFF_TMU0) | ||||
| 	grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||
|       else | ||||
| 	grVertexLayout(GR_PARAM_Q0,GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_DISABLE); | ||||
|        | ||||
|       if (hintMask & GR_STWHINT_ST_DIFF_TMU1) | ||||
| 	grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_ENABLE); | ||||
|       else | ||||
| 	grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE); | ||||
|          | ||||
|         if (hintMask & GR_STWHINT_W_DIFF_TMU1) | ||||
|             grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_ENABLE); | ||||
|         else | ||||
|             grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_DISABLE); | ||||
|       	 | ||||
|       } | ||||
|    } | ||||
|       if (hintMask & GR_STWHINT_W_DIFF_TMU1) | ||||
| 	grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_ENABLE); | ||||
|       else | ||||
| 	grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_DISABLE); | ||||
|        | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| void FX_grHints(GrHint_t hintType, FxU32 hintMask) { | ||||
|   BEGIN_BOARD_LOCK(); | ||||
|   FX_grHints_NoLock(hintType, hintMask); | ||||
|   END_BOARD_LOCK(); | ||||
| } | ||||
|  | ||||
| int FX_grSstQueryHardware(GrHwConfiguration *config) | ||||
| { | ||||
|    int i,j; | ||||
|    int numFB; | ||||
|  | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    grGet(GR_NUM_BOARDS,4,(void*)&(config->num_sst)); | ||||
|    if (config->num_sst == 0) | ||||
|    	return 0; | ||||
| @@ -246,9 +341,76 @@ int FX_grSstQueryHardware(GrHwConfiguration *config) | ||||
|       	 config->SSTs[i].sstBoard.VoodooConfig.tmuConfig[j].tmuRam /= 1024*1024; | ||||
|       } | ||||
|    } | ||||
|    END_BOARD_LOCK(); | ||||
|    return 1; | ||||
| } | ||||
|  | ||||
| #else | ||||
|  | ||||
| int FX_grSstScreenWidth() | ||||
| { | ||||
|    int i; | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    i = grSstScreenWidth(); | ||||
|    END_BOARD_LOCK(); | ||||
|    return i; | ||||
| } | ||||
|  | ||||
| int FX_grSstScreenHeight() | ||||
| { | ||||
|    int i; | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    i = grSstScreenHeight(); | ||||
|    END_BOARD_LOCK(); | ||||
|    return i; | ||||
| } | ||||
|  | ||||
| int FX_grSstQueryHardware(GrHwConfiguration *c)	 | ||||
| { | ||||
|    int i; | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    i = grSstQueryHardware(c); | ||||
|    END_BOARD_LOCK(); | ||||
|    return i; | ||||
| }  | ||||
|  | ||||
| FX_GrContext_t FX_grSstWinOpen( FxU32                hWnd, | ||||
|                                 GrScreenResolution_t screen_resolution, | ||||
|                                 GrScreenRefresh_t    refresh_rate, | ||||
|                                 GrColorFormat_t      color_format, | ||||
|                                 GrOriginLocation_t   origin_location, | ||||
|                                 int                  nColBuffers, | ||||
|                                 int                  nAuxBuffers) | ||||
| { | ||||
|    FX_GrContext_t i; | ||||
|    BEGIN_BOARD_LOCK(); | ||||
|    i = grSstWinOpen( hWnd, | ||||
|                      screen_resolution, | ||||
|                      refresh_rate, | ||||
|                      color_format, | ||||
|                      origin_location, | ||||
|                      nColBuffers, | ||||
|                      nAuxBuffers ); | ||||
|     | ||||
|    /* | ||||
|    fprintf(stderr,  | ||||
|            "grSstWinOpen( win %d res %d ref %d fmt %d\n" | ||||
|            "              org %d ncol %d naux %d )\n" | ||||
|            " ==> %d\n", | ||||
|            hWnd, | ||||
|            screen_resolution, | ||||
|            refresh_rate, | ||||
|            color_format, | ||||
|            origin_location, | ||||
|            nColBuffers, | ||||
|            nAuxBuffers, | ||||
|            i); | ||||
|    */ | ||||
|    END_BOARD_LOCK(); | ||||
|    return i; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif  | ||||
| #else | ||||
|   | ||||
| @@ -1,26 +1,48 @@ | ||||
| /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  *  | ||||
|  * | ||||
|  * Copyright (C) 1999  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"), | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef __FX_GLIDE_WARPER__ | ||||
| #define __FX_GLIDE_WARPER__ | ||||
|  | ||||
| @@ -201,23 +223,23 @@ typedef struct | ||||
|  | ||||
| typedef struct | ||||
| { | ||||
|   float x, y;         /* X and Y in screen space */ | ||||
|   float ooz;          /* 65535/Z (used for Z-buffering) */ | ||||
|   float oow;          /* 1/W (used for W-buffering, texturing) */ | ||||
|   float r, g, b, a;   /* R, G, B, A [0..255.0] */ | ||||
|   float z;            /* Z is ignored */ | ||||
|   float x, y, z;                /* X, Y, and Z of scrn space -- Z is ignored */ | ||||
|   float r, g, b;                /* R, G, B, ([0..255.0]) */ | ||||
|   float ooz;                    /* 65535/Z (used for Z-buffering) */ | ||||
|   float a;                      /* Alpha [0..255.0] */ | ||||
|   float oow;                    /* 1/W (used for W-buffering, texturing) */ | ||||
|   GrTmuVertex  tmuvtx[GLIDE_NUM_TMU]; | ||||
| } GrVertex; | ||||
|  | ||||
| #define GR_VERTEX_X_OFFSET              0 | ||||
| #define GR_VERTEX_Y_OFFSET              1 | ||||
| #define GR_VERTEX_OOZ_OFFSET            2 | ||||
| #define GR_VERTEX_OOW_OFFSET            3 | ||||
| #define GR_VERTEX_R_OFFSET              4 | ||||
| #define GR_VERTEX_G_OFFSET              5 | ||||
| #define GR_VERTEX_B_OFFSET              6 | ||||
| #define GR_VERTEX_Z_OFFSET              2 | ||||
| #define GR_VERTEX_R_OFFSET              3 | ||||
| #define GR_VERTEX_G_OFFSET              4 | ||||
| #define GR_VERTEX_B_OFFSET              5 | ||||
| #define GR_VERTEX_OOZ_OFFSET            6 | ||||
| #define GR_VERTEX_A_OFFSET              7 | ||||
| #define GR_VERTEX_Z_OFFSET              8 | ||||
| #define GR_VERTEX_OOW_OFFSET            8 | ||||
| #define GR_VERTEX_SOW_TMU0_OFFSET       9 | ||||
| #define GR_VERTEX_TOW_TMU0_OFFSET       10 | ||||
| #define GR_VERTEX_OOW_TMU0_OFFSET       11 | ||||
| @@ -233,29 +255,89 @@ typedef struct | ||||
|  * Glide2 functions for Glide3 | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
| #define FX_grTexDownloadTable(TMU,type,data)		grTexDownloadTable(type,data) | ||||
| #define FX_grTexDownloadTable(TMU,type,data)	\ | ||||
|   do { 						\ | ||||
|     BEGIN_BOARD_LOCK(); 			\ | ||||
|     grTexDownloadTable(type,data); 		\ | ||||
|     END_BOARD_LOCK(); 				\ | ||||
|   } while (0); | ||||
| #define FX_grTexDownloadTable_NoLock(TMU,type,data) \ | ||||
|   grTexDownloadTable(type, data) | ||||
| #else | ||||
| #define FX_grTexDownloadTable(TMU,type,data) 		grTexDownloadTable(TMU,type,data) | ||||
| #define FX_grTexDownloadTable(TMU,type,data) 	\ | ||||
|   do {						\ | ||||
|     BEGIN_BOARD_LOCK();				\ | ||||
|     grTexDownloadTable(TMU,type,data);		\ | ||||
|     END_BOARD_LOCK();				\ | ||||
|   } while (0); | ||||
| #define FX_grTexDownloadTable_NoLock grTexDownloadTable | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Flush | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
| #define FX_grFlush		grFlush | ||||
| #define FX_grFlush()	\ | ||||
|   do {			\ | ||||
|     BEGIN_BOARD_LOCK(); \ | ||||
|     grFlush();		\ | ||||
|     END_BOARD_LOCK();	\ | ||||
|   } while (0) | ||||
| #else | ||||
| #define FX_grFlush		grSstIdle | ||||
| #define FX_grFlush()	\ | ||||
|   do {			\ | ||||
|     BEGIN_BOARD_LOCK(); \ | ||||
|     grSstIdle();	\ | ||||
|     END_BOARD_LOCK();	\ | ||||
|   } while (0) | ||||
| #endif	 | ||||
|  | ||||
| #define FX_grFinish()	\ | ||||
|   do {			\ | ||||
|     BEGIN_BOARD_LOCK(); \ | ||||
|     grFinish();		\ | ||||
|     END_BOARD_LOCK();	\ | ||||
|   } while (0) | ||||
|  | ||||
| /* | ||||
|  * Write region: ToDo possible exploit the PixelPipe parameter. | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
| #define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)	\ | ||||
| 	grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,FXFALSE,src_stride,src_data) | ||||
| #define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,FXFALSE,src_stride,src_data);	\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while(0) | ||||
| #else | ||||
| #define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)	\ | ||||
| 	grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data) | ||||
| #define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Read region | ||||
|  */ | ||||
| #define FX_grLfbReadRegion(src_buffer,src_x,src_y,src_width,src_height,dst_stride,dst_data)			\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grLfbReadRegion(src_buffer,src_x,src_y,src_width,src_height,dst_stride,dst_data);				\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0); | ||||
|  | ||||
| /* | ||||
|  * Draw triangle | ||||
|  */ | ||||
| #define FX_grDrawTriangle(a,b,c)	\ | ||||
|   do {					\ | ||||
|     BEGIN_CLIP_LOOP();			\ | ||||
|     grDrawTriangle(a,b,c);		\ | ||||
|     END_CLIP_LOOP();			\ | ||||
|   } while (0) | ||||
|  | ||||
| /* | ||||
|  * For Lod/LodLog2 conversion. | ||||
|  */ | ||||
| @@ -288,12 +370,14 @@ typedef struct | ||||
| #else | ||||
| 	#define FX_largeLodValue(info)		((int)(info).largeLod) | ||||
| #endif | ||||
| #define FX_largeLodValue_NoLock FX_largeLodValue | ||||
|  | ||||
| #if defined(FX_GLIDE3) | ||||
| 	#define FX_smallLodValue(info)		((int)(GR_LOD_256-(info).smallLodLog2)) | ||||
| #else | ||||
| 	#define FX_smallLodValue(info)		((int)(info).smallLod) | ||||
| #endif | ||||
| #define FX_smallLodValue_NoLock FX_smallLodValue | ||||
|  | ||||
| #if defined(FX_GLIDE3) | ||||
| 	#define FX_valueToLod(val)		((GrLOD_t)(GR_LOD_256-val)) | ||||
| @@ -304,13 +388,9 @@ typedef struct | ||||
| /* | ||||
|  * ScreenWidth/Height stuff. | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
| 	extern int FX_grSstScreenWidth(); | ||||
| 	extern int FX_grSstScreenHeight(); | ||||
| #else | ||||
| 	#define FX_grSstScreenWidth()		grSstScreenWidth() | ||||
| 	#define FX_grSstScreenHeight()		grSstScreenHeight() | ||||
| #endif | ||||
| 	extern int FX_grSstScreenWidth(void); | ||||
| 	extern int FX_grSstScreenHeight(void); | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
| @@ -319,7 +399,12 @@ typedef struct | ||||
| #if defined(FX_GLIDE3) | ||||
| 	extern void FX_grGlideGetVersion(char *buf); | ||||
| #else | ||||
| 	#define FX_grGlideGetVersion		grGlideGetVersion	 | ||||
| 	#define FX_grGlideGetVersion(b)	\ | ||||
| 	do {				\ | ||||
| 	  BEGIN_BOARD_LOCK();		\ | ||||
| 	  grGlideGetVersion(b);		\ | ||||
| 	  END_BOARD_LOCK();		\ | ||||
| 	} while (0) | ||||
| #endif | ||||
| /* | ||||
|  * Performance statistics | ||||
| @@ -327,25 +412,33 @@ typedef struct | ||||
| #if defined(FX_GLIDE3) | ||||
|         extern void FX_grSstPerfStats(GrSstPerfStats_t *st); | ||||
| #else | ||||
| 	#define FX_grSstPerfStats		grSstPerfStats | ||||
| 	#define FX_grSstPerfStats(s)	\ | ||||
| 	do {				\ | ||||
| 	  BEGIN_BOARD_LOCK();		\ | ||||
| 	  grSstPerfStats(s);		\ | ||||
| 	  END_BOARD_LOCK();		\ | ||||
| 	} while (0) | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Hardware Query | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
|        extern int FX_grSstQueryHardware(GrHwConfiguration *config); | ||||
| #else | ||||
|        #define FX_grSstQueryHardware		grSstQueryHardware		 | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * GrHints | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
|         extern void FX_grHints_NoLock(GrHint_t hintType, FxU32 hintMask); | ||||
| 	extern void FX_grHints(GrHint_t hintType, FxU32 hintMask); | ||||
| #else | ||||
| 	#define FX_grHints			grHints | ||||
| 	#define FX_grHints(t,m)		\ | ||||
| 	do {				\ | ||||
| 	  BEGIN_BOARD_LOCK();		\ | ||||
| 	  grHints(t, m);		\ | ||||
| 	  END_BOARD_LOCK();		\ | ||||
| 	} while(0) | ||||
|         #define FX_grHints_NoLock grHints | ||||
| #endif | ||||
| /* | ||||
|  * Antialiashed line+point drawing. | ||||
| @@ -353,13 +446,23 @@ typedef struct | ||||
| #if defined(FX_GLIDE3) | ||||
| 	extern void FX_grAADrawLine(GrVertex *a,GrVertex *b); | ||||
| #else | ||||
| 	#define FX_grAADrawLine			grAADrawLine | ||||
| 	#define FX_grAADrawLine(a,b)	\ | ||||
| 	do {				\ | ||||
| 	  BEGIN_CLIP_LOOP();		\ | ||||
| 	  grAADrawLine(a,b);		\ | ||||
| 	  END_CLIP_LOOP();		\ | ||||
| 	} while (0) | ||||
| #endif | ||||
|  | ||||
| #if defined(FX_GLIDE3) | ||||
| 	extern void FX_grAADrawPoint(GrVertex *a); | ||||
| #else | ||||
| 	#define FX_grAADrawPoint		grAADrawPoint | ||||
| 	#define FX_grAADrawPoint(a)	\ | ||||
| 	do {				\ | ||||
| 	  BEGIN_CLIP_LOOP();		\ | ||||
| 	  grAADrawPoint(a);		\ | ||||
| 	  END_CLIP_LOOP();		\ | ||||
| 	} while (0) | ||||
| #endif | ||||
|  | ||||
| /* | ||||
| @@ -373,31 +476,345 @@ typedef struct | ||||
| /* | ||||
|  * grSstControl stuff | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
| 	extern void FX_grSstControl(int par); | ||||
| #else | ||||
| 	#define FX_grSstControl				grSstControl | ||||
| #endif | ||||
| extern FxBool FX_grSstControl(FxU32 code); | ||||
|  | ||||
| /* | ||||
|  * grGammaCorrectionValue | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
|       extern void FX_grGammaCorrectionValue(float val); | ||||
| #else | ||||
|       #define FX_grGammaCorrectionValue			grGammaCorrectionValue | ||||
|       #define FX_grGammaCorrectionValue(v)	\ | ||||
|       do {					\ | ||||
|         BEGIN_BOARD_LOCK();			\ | ||||
| 	grGammaCorrectionValue(v)		\ | ||||
|         END_BOARD_LOCK();			\ | ||||
|       } while (0) | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * WinOpen/Close. | ||||
|  */ | ||||
| #if defined(FX_GLIDE3) | ||||
|        #define FX_grSstWinOpen(hWnd,screen_resolution,refresh_rate,color_format,origin_location,nColBuffers,nAuxBuffers) \ | ||||
|       		  grSstWinOpen(-1,screen_resolution,refresh_rate,color_format,origin_location,nColBuffers,nAuxBuffers) | ||||
|        #define FX_grSstWinClose		grSstWinClose | ||||
| #define FX_grSstWinClose(w)	\ | ||||
|   do { 				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grSstWinClose(w);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
| #else | ||||
|        #define FX_grSstWinOpen		grSstWinOpen | ||||
|        #define FX_grSstWinClose(win)	grSstWinClose() | ||||
| #define FX_grSstWinClose(w)	\ | ||||
|   do { 				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grSstWinClose();		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
| #endif | ||||
|  | ||||
|  | ||||
| extern FX_GrContext_t FX_grSstWinOpen( FxU32                hWnd, | ||||
|                                        GrScreenResolution_t screen_resolution, | ||||
|                                        GrScreenRefresh_t    refresh_rate, | ||||
|                                        GrColorFormat_t      color_format, | ||||
|                                        GrOriginLocation_t   origin_location, | ||||
|                                        int                  nColBuffers, | ||||
|                                        int                  nAuxBuffers); | ||||
|  | ||||
|  | ||||
| #define FX_grDrawLine(v1, v2)	\ | ||||
|   do {				\ | ||||
|     BEGIN_CLIP_LOOP();		\ | ||||
|     grDrawLine(v1, v2);		\ | ||||
|     END_CLIP_LOOP();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDrawPoint(p)	\ | ||||
|   do {				\ | ||||
|     BEGIN_CLIP_LOOP();		\ | ||||
|     grDrawPoint(p);		\ | ||||
|     END_CLIP_LOOP();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDitherMode(m)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grDitherMode(m);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grRenderBuffer(b)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grRenderBuffer(b);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grBufferClear(c, a, d)	\ | ||||
|   do {					\ | ||||
|     BEGIN_CLIP_LOOP();			\ | ||||
|     grBufferClear(c, a, d);		\ | ||||
|     END_CLIP_LOOP();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDepthMask(m)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grDepthMask(m);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grColorMask(c, a)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grColorMask(c, a);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| extern FxBool FX_grLfbLock(GrLock_t type, GrBuffer_t buffer,  | ||||
| 			   GrLfbWriteMode_t writeMode,  | ||||
| 			   GrOriginLocation_t origin, FxBool pixelPipeline,  | ||||
| 			   GrLfbInfo_t *info ); | ||||
|  | ||||
| #define FX_grLfbUnlock(t, b)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grLfbUnlock(t, b);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grConstantColorValue(v)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grConstantColorValue(v);		\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grConstantColorValue_NoLock grConstantColorValue | ||||
|  | ||||
| #define FX_grAADrawTriangle(a, b, c, ab, bc, ca)	\ | ||||
|   do {							\ | ||||
|     BEGIN_CLIP_LOOP();					\ | ||||
|     grAADrawTriangle(a, b, c, ab, bc, ca);		\ | ||||
|     END_CLIP_LOOP();					\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grAlphaBlendFunction(rs, rd, as, ad)	\ | ||||
|   do {						\ | ||||
|     BEGIN_BOARD_LOCK();				\ | ||||
|     grAlphaBlendFunction(rs, rd, as, ad);	\ | ||||
|     END_BOARD_LOCK();				\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grAlphaCombine(func, fact, loc, oth, inv)	\ | ||||
|   do {							\ | ||||
|     BEGIN_BOARD_LOCK();					\ | ||||
|     grAlphaCombine(func, fact, loc, oth, inv);		\ | ||||
|     END_BOARD_LOCK();					\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grAlphaCombine_NoLock grAlphaCombine | ||||
|  | ||||
| #define FX_grAlphaTestFunction(f)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grAlphaTestFunction(f);		\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grAlphaTestReferenceValue(v)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grAlphaTestReferenceValue(v);	\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grClipWindow(minx, miny, maxx, maxy)	\ | ||||
|   do {						\ | ||||
|     BEGIN_BOARD_LOCK();				\ | ||||
|     grClipWindow(minx, miny, maxx, maxy);	\ | ||||
|     END_BOARD_LOCK();				\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grClipWindow_NoLock grClipWindow | ||||
|  | ||||
| #define FX_grColorCombine(func, fact, loc, oth, inv)	\ | ||||
|   do {							\ | ||||
|     BEGIN_BOARD_LOCK();					\ | ||||
|     grColorCombine(func, fact, loc, oth, inv);		\ | ||||
|     END_BOARD_LOCK();					\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grColorCombine_NoLock grColorCombine | ||||
|  | ||||
| #define FX_grCullMode(m)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grCullMode(m);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDepthBiasLevel(lev)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grDepthBiasLevel(lev);		\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDepthBufferFunction(func)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grDepthBufferFunction(func);	\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grFogColorValue(c)		\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grFogColorValue(c);			\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grFogMode(m)	\ | ||||
|   do {			\ | ||||
|     BEGIN_BOARD_LOCK(); \ | ||||
|     grFogMode(m);	\ | ||||
|     END_BOARD_LOCK();	\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grFogTable(t)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grFogTable(t);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexClampMode(t, sc, tc)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grTexClampMode(t, sc, tc);		\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexClampMode_NoLock grTexClampMode | ||||
|  | ||||
| #define FX_grTexCombine(t, rfunc, rfact, afunc, afact, rinv, ainv)	\ | ||||
|   do {									\ | ||||
|     BEGIN_BOARD_LOCK();							\ | ||||
|     grTexCombine(t, rfunc, rfact, afunc, afact, rinv, ainv);		\ | ||||
|     END_BOARD_LOCK();							\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexCombine_NoLock grTexCombine | ||||
|  | ||||
| #define FX_grTexDownloadMipMapLevel(t, sa, tlod, llod, ar, f, eo, d)	\ | ||||
|   do {									\ | ||||
|     BEGIN_BOARD_LOCK();							\ | ||||
|     grTexDownloadMipMapLevel(t, sa, tlod, llod, ar, f, eo, d);		\ | ||||
|     END_BOARD_LOCK();							\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexDownloadMipMapLevel_NoLock grTexDownloadMipMapLevel | ||||
|  | ||||
| #define FX_grTexDownloadMipMapLevelPartial(t, sa, tlod, llod, ar, f, eo, d, s, e);	\ | ||||
|   do {									    \ | ||||
|     BEGIN_BOARD_LOCK();							    \ | ||||
|     grTexDownloadMipMapLevelPartial(t, sa, tlod, llod, ar, f, eo, d, s, e); \ | ||||
|     END_BOARD_LOCK();							    \ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexFilterMode(t, minf, magf)	\ | ||||
|   do {						\ | ||||
|     BEGIN_BOARD_LOCK();				\ | ||||
|     grTexFilterMode(t, minf, magf);		\ | ||||
|     END_BOARD_LOCK();				\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexFilterMode_NoLock grTexFilterMode | ||||
|  | ||||
| extern FxU32 FX_grTexMinAddress(GrChipID_t tmu); | ||||
| extern FxU32 FX_grTexMaxAddress(GrChipID_t tmu); | ||||
|  | ||||
| #define FX_grTexMipMapMode(t, m, lod)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grTexMipMapMode(t, m, lod);		\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexMipMapMode_NoLock grTexMipMapMode | ||||
|  | ||||
| #define FX_grTexSource(t, sa, eo, i)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grTexSource(t, sa, eo, i);		\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grTexSource_NoLock grTexSource | ||||
|  | ||||
| extern FxU32 FX_grTexTextureMemRequired(FxU32 evenOdd, GrTexInfo *info); | ||||
| #define FX_grTexTextureMemRequired_NoLock grTexTextureMemRequired | ||||
|  | ||||
| #define FX_grGlideGetState(s)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grGlideGetState(s);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDRIBufferSwap(i)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grDRIBufferSwap(i);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grSstSelect(b)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grSstSelect(b);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grSstSelect_NoLock grSstSelect | ||||
|  | ||||
| #define FX_grGlideSetState(s)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grGlideSetState(s);		\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDepthBufferMode(m)	\ | ||||
|   do {				\ | ||||
|     BEGIN_BOARD_LOCK();		\ | ||||
|     grDepthBufferMode(m);	\ | ||||
|     END_BOARD_LOCK();		\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grLfbWriteColorFormat(f)	\ | ||||
|   do {					\ | ||||
|     BEGIN_BOARD_LOCK();			\ | ||||
|     grLfbWriteColorFormat(f);		\ | ||||
|     END_BOARD_LOCK();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grDrawVertexArray(m, c, p)	\ | ||||
|   do {					\ | ||||
|     BEGIN_CLIP_LOOP();			\ | ||||
|     grDrawVertexArray(m, c, p);		\ | ||||
|     END_CLIP_LOOP();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grGlideShutdown()		\ | ||||
|   do {					\ | ||||
|     BEGIN_CLIP_LOOP();			\ | ||||
|     grGlideShutdown();			\ | ||||
|     END_CLIP_LOOP();			\ | ||||
|   } while (0) | ||||
|  | ||||
| #define FX_grGlideInit_NoLock grGlideInit | ||||
| #define FX_grSstWinOpen_NoLock grSstWinOpen | ||||
|  | ||||
| extern int FX_getFogTableSize(void); | ||||
| extern int FX_getGrStateSize(void); | ||||
|  | ||||
| #endif /* __FX_GLIDE_WARPER__ */ | ||||
|  | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,25 +1,53 @@ | ||||
| /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * Copyright (C) 1999  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"), | ||||
|  * 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. | ||||
|  * | ||||
|  * | ||||
|  * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the | ||||
|  * terms stated above. | ||||
|  * | ||||
|  * Thank you for your contribution, David! | ||||
|  * | ||||
|  * Please make note of the above copyright/license statement.  If you | ||||
|  * contributed code or bug fixes to this code under the previous (GNU | ||||
|  * Library) license and object to the new license, your code will be | ||||
|  * removed at your request.  Please see the Mesa docs/COPYRIGHT file | ||||
|  * for more information. | ||||
|  * | ||||
|  * Additional Mesa/3Dfx driver developers: | ||||
|  *   Daryll Strauss <daryll@precisioninsight.com> | ||||
|  *   Keith Whitwell <keith@precisioninsight.com> | ||||
|  * | ||||
|  * See fxapi.h for more revision/author details. | ||||
|  */ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* fxwgl.c - Microsoft wgl functions emulation for | ||||
|  *           3Dfx VooDoo/Mesa interface | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  * | ||||
|  * See the file fxapi.c for more informations about authors | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifdef __WIN32__ | ||||
|  | ||||
| @@ -243,11 +271,11 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam) | ||||
|         static int moving = 0; | ||||
|         if (!moving) { | ||||
|           if(fxQueryHardware()!=GR_SSTTYPE_VOODOO) { | ||||
|             if(!grSstControl(GR_CONTROL_RESIZE)) { | ||||
|             if(!FX_grSstControl(GR_CONTROL_RESIZE)) { | ||||
|               moving = 1; | ||||
|               SetWindowPos(hwnd, 0, 0, 0, 300, 300, SWP_NOMOVE|SWP_NOZORDER); | ||||
|               moving = 0; | ||||
|               if(!grSstControl(GR_CONTROL_RESIZE)) { | ||||
|               if(!FX_grSstControl(GR_CONTROL_RESIZE)) { | ||||
|                 /*MessageBox(0,_T("Error changing windowsize"),_T("fxMESA"),MB_OK);*/ | ||||
|                 PostMessage(hWND,WM_CLOSE,0,0); | ||||
|               } | ||||
| @@ -255,7 +283,7 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam) | ||||
|           } | ||||
|  | ||||
|           /* Do the clipping in the glide library */ | ||||
|           grClipWindow(0,0,grSstScreenWidth(),grSstScreenHeight()); | ||||
|           FX_grClipWindow(0,0,FX_grSstScreenWidth(),FX_grSstScreenHeight()); | ||||
|           /* And let the new size set in the context */ | ||||
|           fxMesaUpdateScreenSize(ctx); | ||||
|         } | ||||
| @@ -269,21 +297,22 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam) | ||||
|         BOOL fMinimized = (BOOL) HIWORD(wParam); | ||||
|  | ||||
|         if((fActive == WA_INACTIVE) || fMinimized) | ||||
|           grSstControl(GR_CONTROL_DEACTIVATE); | ||||
|           FX_grSstControl(GR_CONTROL_DEACTIVATE); | ||||
|         else | ||||
|           grSstControl(GR_CONTROL_ACTIVATE); | ||||
|           FX_grSstControl(GR_CONTROL_ACTIVATE); | ||||
|       } | ||||
|       break; | ||||
|     case WM_SHOWWINDOW: | ||||
|       break; | ||||
|     case WM_SYSKEYDOWN: | ||||
|     case WM_SYSCHAR: | ||||
|       if(gdiWindowHackEna && (VK_RETURN == wParam)) { | ||||
|         if(gdiWindowHack) { | ||||
|           gdiWindowHack = GL_FALSE; | ||||
|           grSstControl(GR_CONTROL_ACTIVATE); | ||||
|           FX_grSstControl(GR_CONTROL_ACTIVATE); | ||||
|         } else { | ||||
|           gdiWindowHack = GL_TRUE; | ||||
|           grSstControl(GR_CONTROL_DEACTIVATE); | ||||
|           FX_grSstControl(GR_CONTROL_DEACTIVATE); | ||||
|         } | ||||
|       } | ||||
|       break; | ||||
| @@ -382,7 +411,7 @@ HGLRC GLAPIENTRY wglCreateContext(HDC hdc) | ||||
|         gdiWindowHack = GL_FALSE; | ||||
|       else { | ||||
|         gdiWindowHack = GL_TRUE; | ||||
|         grSstControl(GR_CONTROL_DEACTIVATE); | ||||
|         FX_grSstControl(GR_CONTROL_DEACTIVATE); | ||||
|       } | ||||
|     } | ||||
|   } else { | ||||
| @@ -779,7 +808,7 @@ BOOL GLAPIENTRY wglSwapBuffers(HDC hdc) | ||||
|     HDC hdcDIBSection  = CreateCompatibleDC(hdcScreen); | ||||
|     HBITMAP holdBitmap = (HBITMAP) SelectObject(hdcDIBSection, dibHBM); | ||||
|  | ||||
|     grLfbReadRegion(GR_BUFFER_FRONTBUFFER, 0, 0, | ||||
|     FX_grLfbReadRegion(GR_BUFFER_FRONTBUFFER, 0, 0, | ||||
|                     width, height, | ||||
|                     width * 2, | ||||
|                     dibSurfacePtr); | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| /* $Id: svgamesa.c,v 1.1 1999/08/19 00:55:42 jtg Exp $ */ | ||||
| /* $Id: svgamesa.c,v 1.1.1.1.2.3 2000/01/22 20:06:20 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.0 | ||||
|  * Copyright (C) 1995-1998  Brian Paul | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
| @@ -21,23 +21,19 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Linux SVGA/Mesa interface. | ||||
|  * | ||||
|  * This interface is not finished!  Still have to implement pixel | ||||
|  * reading functions and double buffering.  Then, look into accelerated | ||||
|  * line and polygon rendering.  And, clean up a bunch of other stuff. | ||||
|  * Any volunteers? | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef SVGA | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| @@ -48,35 +44,164 @@ | ||||
| #include "context.h" | ||||
| #include "matrix.h" | ||||
| #include "types.h" | ||||
| #include <string.h> | ||||
| #endif | ||||
|  | ||||
| #include "svgapix.h" | ||||
| #include "svgamesa8.h" | ||||
| #include "svgamesa15.h" | ||||
| #include "svgamesa16.h" | ||||
| #include "svgamesa24.h" | ||||
| #include "svgamesa32.h" | ||||
|  | ||||
| struct svgamesa_context { | ||||
|    GLcontext *gl_ctx;		/* the core Mesa context */ | ||||
|    GLvisual *gl_vis;		/* describes the color buffer */ | ||||
|    GLframebuffer *gl_buffer;	/* the ancillary buffers */ | ||||
|    GLuint index;		/* current color index */ | ||||
|    GLint red, green, blue;	/* current rgb color */ | ||||
|    GLint width, height;		/* size of color buffer */ | ||||
|    GLint depth;			/* bits per pixel (8,16,24 or 32) */ | ||||
| }; | ||||
| struct svga_buffer SVGABuffer; | ||||
| vga_modeinfo * SVGAInfo; | ||||
| SVGAMesaContext SVGAMesa;    /* the current context */ | ||||
|  | ||||
| #ifdef SVGA_DEBUG | ||||
|  | ||||
| static SVGAMesaContext SVGAMesa = NULL;    /* the current context */ | ||||
| #include <sys/types.h> | ||||
| #include <signal.h> | ||||
|  | ||||
| FILE * logfile; | ||||
| char cbuf[1024]={0}; | ||||
|  | ||||
| void SVGAlog(char * what) | ||||
| { | ||||
|  logfile=fopen("svgamesa.log","a"); | ||||
|  if (!logfile) return; | ||||
|  fprintf(logfile,"%s\n",what); | ||||
|  fclose(logfile); | ||||
| }  | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Convert Mesa window Y coordinate to VGA screen Y coordinate: | ||||
|  */ | ||||
| #define FLIP(Y)  (SVGAMesa->height-(Y)-1) | ||||
| /**********************************************************************/ | ||||
| /*****                       Init stuff...                        *****/ | ||||
| /**********************************************************************/ | ||||
|  | ||||
| int SVGAMesaInit( int GraphMode ) | ||||
| {   | ||||
|    vga_init(); | ||||
|    if (!vga_hasmode(GraphMode)) | ||||
|    { | ||||
|     fprintf(stderr,"GraphMode %d unavailable...",GraphMode); | ||||
| #ifdef SVGA_DEBUG | ||||
|     SVGAlog("SVGAMesaInit: invalid GraphMode (doesn't exist)"); | ||||
| #endif     | ||||
|     return(1); | ||||
|    } | ||||
|    SVGAInfo=vga_getmodeinfo(GraphMode);            | ||||
|    if (SVGAInfo->flags & IS_MODEX) | ||||
|    { | ||||
|     fprintf(stderr,"ModeX not implemented..."); | ||||
| #ifdef SVGA_DEBUG | ||||
|     SVGAlog("SVGAMesaInit: invalid GraphMode (ModeX)"); | ||||
| #endif     | ||||
|     return(2); | ||||
|    } | ||||
|    if (!SVGAInfo->bytesperpixel) | ||||
|    { | ||||
|     fprintf(stderr,"1 / 4 bit color not implemented..."); | ||||
| #ifdef SVGA_DEBUG | ||||
|     SVGAlog("SVGAMesaInit: invalid GraphMode (1 or 4 bit)"); | ||||
| #endif     | ||||
|     return(3); | ||||
|    } | ||||
|    switch (SVGAInfo->colors) { | ||||
|     case   256: SVGABuffer.Depth = 8;  break; | ||||
|     case 32768: SVGABuffer.Depth = 15; break; | ||||
|     case 65536: SVGABuffer.Depth = 16; break; | ||||
|     default: SVGABuffer.Depth = SVGAInfo->bytesperpixel<<3; break; | ||||
|    } | ||||
|    SVGABuffer.BufferSize=SVGAInfo->linewidth*SVGAInfo->height; | ||||
| #ifdef SVGA_DEBUG | ||||
|    sprintf(cbuf,"SVGAMesaInit: double buffer info.\n" \ | ||||
|                  "              depth  : %d\n" \ | ||||
|                  "              mode   : %d\n" \ | ||||
| 		 "              width  : %d\n" \ | ||||
| 		 "              height : %d\n" \ | ||||
| 		 "              bufsize: %d\n", \ | ||||
| 		 SVGABuffer.Depth,GraphMode,SVGAInfo->linewidth, \ | ||||
| 		 SVGAInfo->height,SVGABuffer.BufferSize); | ||||
|    SVGAlog(cbuf); | ||||
| #endif     | ||||
|    SVGABuffer.FrontBuffer=(void*)malloc(SVGABuffer.BufferSize + 4); | ||||
|    if (!SVGABuffer.FrontBuffer) { | ||||
|     { | ||||
|      fprintf(stderr,"Not enough RAM for FRONT_LEFT_BUFFER..."); | ||||
| #ifdef SVGA_DEBUG | ||||
|      SVGAlog("SVGAMesaInit: Not enough RAM (front buffer)"); | ||||
| #endif     | ||||
|      return(4); | ||||
|     } | ||||
|    }        | ||||
| #ifdef SVGA_DEBUG | ||||
|    sprintf(cbuf,"SVGAMesaInit: FrontBuffer - %p",SVGABuffer.FrontBuffer); | ||||
|    SVGAlog(cbuf); | ||||
| #endif     | ||||
|    SVGABuffer.BackBuffer=(void*)malloc(SVGABuffer.BufferSize + 4); | ||||
|    if (!SVGABuffer.BackBuffer) { | ||||
|     { | ||||
|      free(SVGABuffer.FrontBuffer); | ||||
|      fprintf(stderr,"Not enough RAM for BACK_LEFT_BUFFER..."); | ||||
| #ifdef SVGA_DEBUG | ||||
|      SVGAlog("SVGAMesaInit: Not enough RAM (back buffer)"); | ||||
| #endif     | ||||
|      return(5); | ||||
|     } | ||||
|    }        | ||||
| #ifdef SVGA_DEBUG | ||||
|    sprintf(cbuf,"SVGAMesaInit: BackBuffer - %p",SVGABuffer.BackBuffer); | ||||
|    SVGAlog(cbuf); | ||||
| #endif     | ||||
|  | ||||
|    vga_setmode(GraphMode); | ||||
|    SVGABuffer.VideoRam=vga_getgraphmem(); | ||||
| #ifdef SVGA_DEBUG | ||||
|    sprintf(cbuf,"SVGAMesaInit: VRAM - %p",SVGABuffer.VideoRam); | ||||
|    SVGAlog(cbuf); | ||||
|    sprintf(cbuf,"SVGAMesaInit: done. (Mode %d)",GraphMode); | ||||
|    SVGAlog(cbuf); | ||||
| #endif     | ||||
|    return 0; | ||||
| }    | ||||
|  | ||||
| int SVGAMesaClose( void ) | ||||
| {   | ||||
|  vga_setmode(TEXT);  | ||||
|  free(SVGABuffer.FrontBuffer); | ||||
|  free(SVGABuffer.BackBuffer); | ||||
|  return 0; | ||||
| } | ||||
|  | ||||
| void SVGAMesaSetCI(int ndx, GLubyte red, GLubyte green, GLubyte blue) | ||||
| { | ||||
|  if (ndx<256) vga_setpalette(ndx, red>>2, green>>2, blue>>2); | ||||
| } | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                 Miscellaneous functions                    *****/ | ||||
| /**********************************************************************/ | ||||
|  | ||||
| static void copy_buffer( GLubyte * buffer) { | ||||
|  int size = SVGABuffer.BufferSize, page = 0; | ||||
|  | ||||
| #ifdef SVGA_DEBUG | ||||
|    sprintf(cbuf,"copy_buffer: copy %p to %p",buffer,SVGABuffer.VideoRam); | ||||
|    SVGAlog(cbuf); | ||||
| #endif     | ||||
|  | ||||
|  while(size>0) { | ||||
|  vga_setpage(page++); | ||||
|   if (size>>16) {  | ||||
|    memcpy(SVGABuffer.VideoRam,buffer,0x10000); | ||||
|    buffer+=0x10000; | ||||
|   }else{     | ||||
|    memcpy(SVGABuffer.VideoRam,buffer,size & 0xffff); | ||||
|   } | ||||
|   size-=0xffff;  | ||||
|  } | ||||
| } | ||||
|  | ||||
| static void get_buffer_size( GLcontext *ctx, GLuint *width, GLuint *height ) | ||||
| { | ||||
| @@ -84,279 +209,33 @@ static void get_buffer_size( GLcontext *ctx, GLuint *width, GLuint *height ) | ||||
|    *height = SVGAMesa->height = vga_getydim(); | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Set current color index */ | ||||
| static void set_index( GLcontext *ctx, GLuint index ) | ||||
| { | ||||
|    SVGAMesa->index = index; | ||||
|    vga_setcolor( index ); | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Set current drawing color */ | ||||
| static void set_color( GLcontext *ctx, | ||||
|                        GLubyte red, GLubyte green, | ||||
|                        GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    SVGAMesa->red = red; | ||||
|    SVGAMesa->green = green; | ||||
|    SVGAMesa->blue = blue; | ||||
|    vga_setrgbcolor( red, green, blue ); | ||||
| } | ||||
|  | ||||
|  | ||||
| static void clear_index( GLcontext *ctx, GLuint index ) | ||||
| { | ||||
|    /* TODO: Implements glClearIndex() */ | ||||
| } | ||||
|  | ||||
|  | ||||
| static void clear_color( GLcontext *ctx, | ||||
|                          GLubyte red, GLubyte green, | ||||
|                          GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    /* TODO: Implements glClearColor() */ | ||||
| } | ||||
|  | ||||
|  | ||||
| static GLbitfield clear( GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|                          GLint x, GLint y, GLint width, GLint height ) | ||||
| { | ||||
|    if (mask & GL_COLOR_BUFFER_BIT) { | ||||
|       vga_clear(); | ||||
|    } | ||||
|    return mask & (~GL_COLOR_BUFFER_BIT); | ||||
| } | ||||
|  | ||||
|  | ||||
| static GLboolean set_buffer( GLcontext *ctx, GLenum buffer ) | ||||
| { | ||||
|    /* TODO: implement double buffering and use this function to select */ | ||||
|    /* between front and back buffers. */ | ||||
|  void * tmpptr; | ||||
|   | ||||
|    if (buffer == GL_FRONT_LEFT) | ||||
|       return GL_TRUE; | ||||
|    { | ||||
| /*    vga_waitretrace(); */ | ||||
|     copy_buffer(SVGABuffer.FrontBuffer); | ||||
|     tmpptr=SVGABuffer.BackBuffer; | ||||
|     SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer; | ||||
|     SVGABuffer.FrontBuffer=tmpptr; | ||||
|     return GL_TRUE; | ||||
|    }     | ||||
|    else if (buffer == GL_BACK_LEFT) | ||||
|       return GL_TRUE; | ||||
|    { | ||||
| /*    vga_waitretrace(); */ | ||||
|     copy_buffer(SVGABuffer.BackBuffer); | ||||
|     return GL_TRUE; | ||||
|    }     | ||||
|    else | ||||
|       return GL_FALSE; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****            Write spans of pixels                           *****/ | ||||
| /*****                                                            *****/ | ||||
| /**********************************************************************/ | ||||
|  | ||||
|  | ||||
| static void write_ci32_span( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                              const GLuint index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    y = FLIP(y); | ||||
|    for (i=0;i<n;i++,x++) { | ||||
|       if (mask[i]) { | ||||
|          vga_setcolor( index[i] ); | ||||
|          vga_drawpixel( x, y ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| static void write_ci8_span( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                             const GLubyte index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    y = FLIP(y); | ||||
|    for (i=0;i<n;i++,x++) { | ||||
|       if (mask[i]) { | ||||
|          vga_setcolor( index[i] ); | ||||
|          vga_drawpixel( x, y ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void write_mono_ci_span( const GLcontext *ctx, GLuint n, | ||||
|                                 GLint x, GLint y, const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    y = FLIP(y); | ||||
|    /* use current color index */ | ||||
|    vga_setcolor( SVGAMesa->index ); | ||||
|    for (i=0;i<n;i++,x++) { | ||||
|       if (mask[i]) { | ||||
|          vga_drawpixel( x, y ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void write_rgba_span( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                              const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    y=FLIP(y); | ||||
|    if (mask) { | ||||
|       /* draw some pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          if (mask[i]) { | ||||
|             vga_setrgbcolor( rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] ); | ||||
|             vga_drawpixel( x, y ); | ||||
|          } | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* draw all pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          vga_setrgbcolor( rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] ); | ||||
|          vga_drawpixel( x, y ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void write_mono_rgba_span( const GLcontext *ctx, | ||||
|                                   GLuint n, GLint x, GLint y, | ||||
|                                   const GLubyte mask[]) | ||||
| { | ||||
|    int i; | ||||
|    y=FLIP(y); | ||||
|    /* use current rgb color */ | ||||
|    vga_setrgbcolor( SVGAMesa->red, SVGAMesa->green, SVGAMesa->blue ); | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|       if (mask[i]) { | ||||
|          vga_drawpixel( x, y ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                 Read spans of pixels                       *****/ | ||||
| /**********************************************************************/ | ||||
|  | ||||
|  | ||||
| static void read_ci32_span( const GLcontext *ctx, | ||||
|                             GLuint n, GLint x, GLint y, GLuint index[]) | ||||
| { | ||||
|    int i; | ||||
|    y = FLIP(y); | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|       index[i] = vga_getpixel( x, y ); | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void read_rgba_span( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                             GLubyte rgba[][4] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|       /* TODO */ | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                  Write arrays of pixels                    *****/ | ||||
| /**********************************************************************/ | ||||
|  | ||||
|  | ||||
| static void write_ci32_pixels( const GLcontext *ctx, | ||||
|                                GLuint n, const GLint x[], const GLint y[], | ||||
|                                const GLuint index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          vga_setcolor( index[i] ); | ||||
|          vga_drawpixel( x[i], FLIP(y[i]) ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
| static void write_mono_ci_pixels( const GLcontext *ctx, GLuint n, | ||||
|                                   const GLint x[], const GLint y[], | ||||
|                                   const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    /* use current color index */ | ||||
|    vga_setcolor( SVGAMesa->index ); | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          vga_drawpixel( x[i], FLIP(y[i]) ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void write_rgba_pixels( const GLcontext *ctx, | ||||
|                                GLuint n, const GLint x[], const GLint y[], | ||||
|                                const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          vga_setrgbcolor( rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] ); | ||||
|          vga_drawpixel( x[i], FLIP(y[i]) ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void write_mono_rgba_pixels( const GLcontext *ctx, | ||||
|                                     GLuint n, | ||||
|                                     const GLint x[], const GLint y[], | ||||
|                                     const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    /* use current rgb color */ | ||||
|    vga_setrgbcolor( SVGAMesa->red, SVGAMesa->green, SVGAMesa->blue ); | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          vga_drawpixel( x[i], FLIP(y[i]) ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                   Read arrays of pixels                    *****/ | ||||
| /**********************************************************************/ | ||||
|  | ||||
| /* Read an array of color index pixels. */ | ||||
| static void read_ci32_pixels( const GLcontext *ctx, | ||||
|                               GLuint n, const GLint x[], const GLint y[], | ||||
|                               GLuint index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|       index[i] = vga_getpixel( x[i], FLIP(y[i]) ); | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void read_rgba_pixels( const GLcontext *ctx, | ||||
|                               GLuint n, const GLint x[], const GLint y[], | ||||
|                               GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    /* TODO */ | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| static void svgamesa_update_state( GLcontext *ctx ) | ||||
| { | ||||
|    /* Initialize all the pointers in the DD struct.  Do this whenever */ | ||||
| @@ -364,13 +243,6 @@ static void svgamesa_update_state( GLcontext *ctx ) | ||||
|  | ||||
|    ctx->Driver.UpdateState = svgamesa_update_state; | ||||
|  | ||||
|    ctx->Driver.ClearIndex = clear_index; | ||||
|    ctx->Driver.ClearColor = clear_color; | ||||
|    ctx->Driver.Clear = clear; | ||||
|  | ||||
|    ctx->Driver.Index = set_index; | ||||
|    ctx->Driver.Color = set_color; | ||||
|  | ||||
|    ctx->Driver.SetBuffer = set_buffer; | ||||
|    ctx->Driver.GetBufferSize = get_buffer_size; | ||||
|  | ||||
| @@ -378,59 +250,119 @@ static void svgamesa_update_state( GLcontext *ctx ) | ||||
|    ctx->Driver.LineFunc = NULL; | ||||
|    ctx->Driver.TriangleFunc = NULL; | ||||
|  | ||||
|    /* Pixel/span writing functions: */ | ||||
|    /* TODO: use different funcs for 8, 16, 32-bit depths */ | ||||
|    ctx->Driver.WriteRGBASpan        = write_rgba_span; | ||||
|    ctx->Driver.WriteMonoRGBASpan    = write_mono_rgba_span; | ||||
|    ctx->Driver.WriteRGBAPixels      = write_rgba_pixels; | ||||
|    ctx->Driver.WriteMonoRGBAPixels  = write_mono_rgba_pixels; | ||||
|    ctx->Driver.WriteCI32Span        = write_ci32_span; | ||||
|    ctx->Driver.WriteCI8Span         = write_ci8_span; | ||||
|    ctx->Driver.WriteMonoCISpan      = write_mono_ci_span; | ||||
|    ctx->Driver.WriteCI32Pixels      = write_ci32_pixels; | ||||
|    ctx->Driver.WriteMonoCIPixels    = write_mono_ci_pixels; | ||||
|    switch (SVGABuffer.Depth) { | ||||
|     case  8: ctx->Driver.ClearIndex = __clear_index8; | ||||
|              ctx->Driver.Clear 	    = __clear8; | ||||
|              ctx->Driver.Index 	    = __set_index8;  | ||||
|  | ||||
|    /* Pixel/span reading functions: */ | ||||
|    /* TODO: use different funcs for 8, 16, 32-bit depths */ | ||||
|    ctx->Driver.ReadCI32Span   = read_ci32_span; | ||||
|    ctx->Driver.ReadRGBASpan   = read_rgba_span; | ||||
|    ctx->Driver.ReadCI32Pixels = read_ci32_pixels; | ||||
|    ctx->Driver.ReadRGBAPixels = read_rgba_pixels; | ||||
|              ctx->Driver.ReadCI32Span         = __read_ci32_span8; | ||||
|              ctx->Driver.ReadCI32Pixels       = __read_ci32_pixels8; | ||||
|              ctx->Driver.WriteCI8Span         = __write_ci8_span8; | ||||
|              ctx->Driver.WriteCI32Span        = __write_ci32_span8; | ||||
|              ctx->Driver.WriteCI32Pixels      = __write_ci32_pixels8; | ||||
|              ctx->Driver.WriteMonoCISpan      = __write_mono_ci_span8; | ||||
|              ctx->Driver.WriteMonoCIPixels    = __write_mono_ci_pixels8; | ||||
| #ifdef SVGA_DEBUG | ||||
|     SVGAlog("SVGAUpdateState: 8 bit mode."); | ||||
| #endif     | ||||
|  | ||||
| 	     break; | ||||
|     case 15: ctx->Driver.ClearColor = __clear_color15; | ||||
|              ctx->Driver.Clear 	    = __clear15; | ||||
|              ctx->Driver.Color 	    = __set_color15; | ||||
|  | ||||
|              ctx->Driver.ReadRGBASpan         = __read_rgba_span15; | ||||
|              ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels15; | ||||
|              ctx->Driver.WriteRGBASpan        = __write_rgba_span15; | ||||
|              ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels15; | ||||
|              ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span15; | ||||
|              ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels15; | ||||
| #ifdef SVGA_DEBUG | ||||
|     SVGAlog("SVGAUpdateState: 15 bit mode."); | ||||
| #endif     | ||||
| 	     break; | ||||
|     case 16: ctx->Driver.ClearColor = __clear_color16; | ||||
|              ctx->Driver.Clear 	    = __clear16; | ||||
|              ctx->Driver.Color 	    = __set_color16; | ||||
|  | ||||
|              ctx->Driver.ReadRGBASpan         = __read_rgba_span16; | ||||
|              ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels16; | ||||
|              ctx->Driver.WriteRGBASpan        = __write_rgba_span16; | ||||
|              ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels16; | ||||
|              ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span16; | ||||
|              ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels16; | ||||
| 	     break; | ||||
| #ifdef SVGA_DEBUG | ||||
|     SVGAlog("SVGAUpdateState: 16 bit mode."); | ||||
| #endif     | ||||
|     case 24: ctx->Driver.ClearColor = __clear_color24; | ||||
|              ctx->Driver.Clear 	    = __clear24; | ||||
|              ctx->Driver.Color 	    = __set_color24; | ||||
|  | ||||
|              ctx->Driver.ReadRGBASpan         = __read_rgba_span24; | ||||
|              ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels24; | ||||
|              ctx->Driver.WriteRGBASpan        = __write_rgba_span24; | ||||
|              ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels24; | ||||
|              ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span24; | ||||
|              ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels24; | ||||
| 	     break; | ||||
| #ifdef SVGA_DEBUG | ||||
|     SVGAlog("SVGAUpdateState: 32 bit mode."); | ||||
| #endif     | ||||
|     case 32: ctx->Driver.ClearColor = __clear_color32; | ||||
|              ctx->Driver.Clear 	    = __clear32; | ||||
|              ctx->Driver.Color 	    = __set_color32; | ||||
|  | ||||
|              ctx->Driver.ReadRGBASpan         = __read_rgba_span32; | ||||
|              ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels32; | ||||
|              ctx->Driver.WriteRGBASpan        = __write_rgba_span32; | ||||
|              ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels32; | ||||
|              ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span32; | ||||
|              ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels32; | ||||
|    }	      | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Create a new VGA/Mesa context and return a handle to it. | ||||
|  */ | ||||
| SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ) | ||||
| { | ||||
|    SVGAMesaContext ctx; | ||||
| #ifndef DEV | ||||
|    GLboolean rgb_flag; | ||||
|    GLfloat redscale, greenscale, bluescale, alphascale; | ||||
|    GLboolean alpha_flag = GL_FALSE; | ||||
|    int colors; | ||||
|    GLint index_bits; | ||||
|    GLint redbits, greenbits, bluebits, alphabits; | ||||
|  | ||||
|    /* determine if we're in RGB or color index mode */ | ||||
|    colors = vga_getcolors(); | ||||
|    if (colors==32768) { | ||||
|    if ((SVGABuffer.Depth==32) || (SVGABuffer.Depth==24)) { | ||||
|       rgb_flag = GL_TRUE; | ||||
|       redscale = greenscale = bluescale = alphascale = 255.0; | ||||
|       redbits = greenbits = bluebits = 8; | ||||
|       alphabits = 0; | ||||
|       index_bits = 0; | ||||
|    } | ||||
|    else if (colors==256) { | ||||
|    else if (SVGABuffer.Depth==8) { | ||||
|       rgb_flag = GL_FALSE; | ||||
|       redscale = greenscale = bluescale = alphascale = 0.0; | ||||
|       redbits = greenbits = bluebits = alphabits = 0; | ||||
|       index_bits = 8; | ||||
|    } | ||||
|    else { | ||||
|       printf(">16 bit color not implemented yet!\n"); | ||||
|       return NULL; | ||||
|    else if (SVGABuffer.Depth==15) { | ||||
|       rgb_flag = GL_TRUE; | ||||
|       redscale = greenscale = bluescale = alphascale = 31.0; | ||||
|       redbits = greenbits = bluebits = 5; | ||||
|       alphabits = 0; | ||||
|       index_bits = 0; | ||||
|    } | ||||
|    else if (SVGABuffer.Depth==16) { | ||||
|       rgb_flag = GL_TRUE; | ||||
|       redscale = bluescale = alphascale = 31.0; | ||||
|       greenscale = 63.0; | ||||
|       redbits = bluebits = 5; | ||||
|       greenbits = 6; | ||||
|       alphabits = 0; | ||||
|       index_bits = 0; | ||||
|    } | ||||
|  | ||||
|    ctx = (SVGAMesaContext) calloc( 1, sizeof(struct svgamesa_context) ); | ||||
| @@ -459,18 +391,16 @@ SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ) | ||||
|    ctx->red = ctx->green = ctx->blue = 255; | ||||
|  | ||||
|    ctx->width = ctx->height = 0;  /* temporary until first "make-current" */ | ||||
|  | ||||
| #endif | ||||
|    return ctx; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Destroy the given VGA/Mesa context. | ||||
|  */ | ||||
| void SVGAMesaDestroyContext( SVGAMesaContext ctx ) | ||||
| { | ||||
| #ifndef DEV | ||||
|    if (ctx) { | ||||
|       gl_destroy_visual( ctx->gl_vis ); | ||||
|       gl_destroy_context( ctx->gl_ctx ); | ||||
| @@ -480,15 +410,15 @@ void SVGAMesaDestroyContext( SVGAMesaContext ctx ) | ||||
|          SVGAMesa = NULL; | ||||
|       } | ||||
|    } | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Make the specified VGA/Mesa context the current one. | ||||
|  */ | ||||
| void SVGAMesaMakeCurrent( SVGAMesaContext ctx ) | ||||
| { | ||||
| #ifndef DEV | ||||
|    SVGAMesa = ctx; | ||||
|    svgamesa_update_state( ctx->gl_ctx ); | ||||
|    gl_make_current( ctx->gl_ctx, ctx->gl_buffer ); | ||||
| @@ -499,10 +429,9 @@ void SVGAMesaMakeCurrent( SVGAMesaContext ctx ) | ||||
|       ctx->height = vga_getydim(); | ||||
|       gl_Viewport( ctx->gl_ctx, 0, 0, ctx->width, ctx->height ); | ||||
|    } | ||||
| #endif | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Return a handle to the current VGA/Mesa context. | ||||
|  */ | ||||
| @@ -511,20 +440,38 @@ SVGAMesaContext SVGAMesaGetCurrentContext( void ) | ||||
|    return SVGAMesa; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Swap front/back buffers for current context if double buffered. | ||||
|  */ | ||||
| void SVGAMesaSwapBuffers( void ) | ||||
| { | ||||
|  void * tmpptr; | ||||
|   | ||||
| /* vga_waitretrace(); */ | ||||
|  copy_buffer(SVGABuffer.BackBuffer); | ||||
|  | ||||
| #ifndef DEV | ||||
|    FLUSH_VB( SVGAMesa->gl_ctx, "swap buffers" ); | ||||
|    if (SVGAMesa->gl_vis->DBflag) { | ||||
|       vga_flip(); | ||||
|    } | ||||
|    if (SVGAMesa->gl_vis->DBflag)  | ||||
| #endif /* DEV */    | ||||
|    { | ||||
| #ifdef SVGA_DEBUG | ||||
|    sprintf(cbuf,"SVGAMesaSwapBuffers : Swapping..."); | ||||
|    SVGAlog(cbuf); | ||||
| #endif /* SVGA_DEBUG */ | ||||
|    tmpptr=SVGABuffer.BackBuffer; | ||||
|    SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer; | ||||
|    SVGABuffer.FrontBuffer=tmpptr; | ||||
| #ifdef SVGA_DEBUG | ||||
|    sprintf(cbuf,"SVGAMesaSwapBuffers : WriteBuffer : %p\n" | ||||
|                 "                      Readbuffer  : %p", \ | ||||
| 		SVGABuffer.BackBuffer, SVGABuffer.FrontBuffer ); | ||||
|    SVGAlog(cbuf); | ||||
| #endif /* SVGA_DEBUG */ | ||||
|    }        | ||||
| } | ||||
|  | ||||
|  | ||||
| #else | ||||
| #else /*SVGA*/ | ||||
|  | ||||
| /* | ||||
|  * Need this to provide at least one external definition when SVGA is | ||||
|   | ||||
							
								
								
									
										185
									
								
								src/mesa/drivers/svga/svgamesa15.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								src/mesa/drivers/svga/svgamesa15.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| /* $Id: svgamesa15.c,v 1.1.2.4 2000/01/31 22:10:39 tanner Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef SVGA | ||||
|  | ||||
| #include "svgapix.h" | ||||
|  | ||||
| GLshort * shortBuffer; | ||||
|  | ||||
| int __svga_drawpixel15(int x, int y, unsigned long c) | ||||
| { | ||||
|     unsigned long offset; | ||||
|      | ||||
|     shortBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|     shortBuffer[offset]=c; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| unsigned long __svga_getpixel15(int x, int y) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     shortBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|     return shortBuffer[offset]; | ||||
| } | ||||
|  | ||||
| void __set_color15( GLcontext *ctx, | ||||
|                     GLubyte red, GLubyte green, | ||||
|                     GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    SVGAMesa->hicolor=(red>>3)<<10 | (green>>3)<<5 | (blue>>3);  | ||||
| /*   SVGAMesa->hicolor=(red)<<10 | (green)<<5 | (blue); */ | ||||
| }    | ||||
|  | ||||
| void __clear_color15( GLcontext *ctx, | ||||
|                       GLubyte red, GLubyte green, | ||||
|                       GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    SVGAMesa->clear_hicolor=(red>>3)<<10 | (green>>3)<<5 | (blue>>3);   | ||||
| /*   SVGAMesa->clear_hicolor=(red)<<10 | (green)<<5 | (blue);*/ | ||||
| }    | ||||
|  | ||||
| GLbitfield __clear15( GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|                       GLint x, GLint y, GLint width, GLint height ) | ||||
| { | ||||
|    int i,j; | ||||
|     | ||||
|    if (mask & GL_COLOR_BUFFER_BIT) { | ||||
|     shortBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     if (all) { | ||||
|      for (i=0;i<SVGABuffer.BufferSize / 2;i++) shortBuffer[i]=SVGAMesa->clear_hicolor; | ||||
|     } else { | ||||
|     for (i=x;i<width;i++)     | ||||
|      for (j=y;j<height;j++)     | ||||
|       __svga_drawpixel15(i,j,SVGAMesa->clear_hicolor); | ||||
|     }	 | ||||
|    }     | ||||
|    return mask & (~GL_COLOR_BUFFER_BIT); | ||||
| } | ||||
|  | ||||
| void __write_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                           const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    if (mask) { | ||||
|       /* draw some pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          if (mask[i]) { | ||||
|          __svga_drawpixel15( x, y, (rgba[i][RCOMP]>>3)<<10 | \ | ||||
| 			           (rgba[i][GCOMP]>>3)<<5 |  \ | ||||
| 			           (rgba[i][BCOMP]>>3)); | ||||
|          } | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* draw all pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          __svga_drawpixel15( x, y, (rgba[i][RCOMP]>>3)<<10 | \ | ||||
| 			           (rgba[i][GCOMP]>>3)<<5  | \ | ||||
| 			           (rgba[i][BCOMP]>>3)); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_mono_rgba_span15( const GLcontext *ctx, | ||||
|                                GLuint n, GLint x, GLint y, | ||||
|                                const GLubyte mask[]) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel15( x, y, SVGAMesa->hicolor); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                          GLubyte rgba[][4] ) | ||||
| { | ||||
|    int i,pix; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|     pix = __svga_getpixel15( x, y); | ||||
|     rgba[i][RCOMP] = ((pix>>10)<<3) & 0xff; | ||||
|     rgba[i][GCOMP] = ((pix>> 5)<<3) & 0xff; | ||||
|     rgba[i][BCOMP] = ((pix    )<<3) & 0xff; | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_rgba_pixels15( const GLcontext *ctx, | ||||
|                             GLuint n, const GLint x[], const GLint y[], | ||||
|                             const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel15( x[i], y[i], (rgba[i][RCOMP]>>3)<<10 | \ | ||||
| 			                 (rgba[i][GCOMP]>>3)<<5  | \ | ||||
| 			                 (rgba[i][BCOMP]>>3)); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
| void __write_mono_rgba_pixels15( const GLcontext *ctx, | ||||
|                                  GLuint n, | ||||
|                                  const GLint x[], const GLint y[], | ||||
|                                  const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    /* use current rgb color */ | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel15( x[i], y[i], SVGAMesa->hicolor ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_pixels15( const GLcontext *ctx, | ||||
|                            GLuint n, const GLint x[], const GLint y[], | ||||
|                            GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i,pix; | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|     pix = __svga_getpixel15( x[i], y[i] ); | ||||
|     rgba[i][RCOMP] = ((pix>>10)<<3) & 0xff; | ||||
|     rgba[i][GCOMP] = ((pix>> 5)<<3) & 0xff; | ||||
|     rgba[i][BCOMP] = ((pix    )<<3) & 0xff; | ||||
|    } | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										44
									
								
								src/mesa/drivers/svga/svgamesa15.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/mesa/drivers/svga/svgamesa15.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| /* $Id: svgamesa15.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef SVGA_MESA_15_H | ||||
| #define SVGA_MESA_15_H | ||||
|  | ||||
| extern void __set_color15( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern void __clear_color15( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern GLbitfield __clear15( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height ); | ||||
| extern void __write_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]); | ||||
| extern void __read_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ); | ||||
| extern void __write_rgba_pixels15( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_pixels15( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] ); | ||||
| extern void __read_rgba_pixels15( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] ); | ||||
|  | ||||
| #endif /* SVGA_MESA_15_H */ | ||||
							
								
								
									
										185
									
								
								src/mesa/drivers/svga/svgamesa16.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								src/mesa/drivers/svga/svgamesa16.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| /* $Id: svgamesa16.c,v 1.1.2.4 2000/01/31 22:10:39 tanner Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef SVGA | ||||
|  | ||||
| #include "svgapix.h" | ||||
|  | ||||
| GLshort * shortBuffer; | ||||
|  | ||||
| int __svga_drawpixel16(int x, int y, unsigned long c) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     shortBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|     shortBuffer[offset]=c; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| unsigned long __svga_getpixel16(int x, int y) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     shortBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|     return shortBuffer[offset]; | ||||
| } | ||||
|  | ||||
| void __set_color16( GLcontext *ctx, | ||||
|                     GLubyte red, GLubyte green, | ||||
|                     GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|     SVGAMesa->hicolor=(red>>3)<<11 | (green>>2)<<5 | (blue>>3);  | ||||
| /*    SVGAMesa->hicolor=(red)<<11 | (green)<<5 | (blue); */ | ||||
| }    | ||||
|  | ||||
| void __clear_color16( GLcontext *ctx, | ||||
|                       GLubyte red, GLubyte green, | ||||
|                       GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|     SVGAMesa->clear_hicolor=(red>>3)<<11 | (green>>2)<<5 | (blue>>3);  | ||||
| /*    SVGAMesa->clear_hicolor=(red)<<11 | (green)<<5 | (blue); */ | ||||
| }    | ||||
|  | ||||
| GLbitfield __clear16( GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|                       GLint x, GLint y, GLint width, GLint height ) | ||||
| { | ||||
|    int i,j; | ||||
|     | ||||
|    if (mask & GL_COLOR_BUFFER_BIT) { | ||||
|     if (all) { | ||||
|      shortBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|      for (i=0;i<SVGABuffer.BufferSize / 2;i++) shortBuffer[i]=SVGAMesa->clear_hicolor; | ||||
|     } else { | ||||
|     for (i=x;i<width;i++)     | ||||
|      for (j=y;j<height;j++)     | ||||
|       __svga_drawpixel16(i,j,SVGAMesa->clear_hicolor); | ||||
|     }	 | ||||
|    }         | ||||
|    return mask & (~GL_COLOR_BUFFER_BIT); | ||||
| } | ||||
|  | ||||
| void __write_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                           const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    if (mask) { | ||||
|       /* draw some pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          if (mask[i]) { | ||||
|          __svga_drawpixel16( x, y, (rgba[i][RCOMP]>>3)<<11 | \ | ||||
| 			           (rgba[i][GCOMP]>>2)<<5  | \ | ||||
| 			           (rgba[i][BCOMP]>>3)); | ||||
|          } | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* draw all pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          __svga_drawpixel16( x, y, (rgba[i][RCOMP]>>3)<<11 | \ | ||||
| 			           (rgba[i][GCOMP]>>2)<<5  | \ | ||||
| 			           (rgba[i][BCOMP]>>3)); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_mono_rgba_span16( const GLcontext *ctx, | ||||
|                                GLuint n, GLint x, GLint y, | ||||
|                                const GLubyte mask[]) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel16( x, y, SVGAMesa->hicolor); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                          GLubyte rgba[][4] ) | ||||
| { | ||||
|    int i,pix; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|     pix = __svga_getpixel16( x, y ); | ||||
|     rgba[i][RCOMP] = ((pix>>11)<<3) & 0xff; | ||||
|     rgba[i][GCOMP] = ((pix>> 5)<<2) & 0xff; | ||||
|     rgba[i][BCOMP] = ((pix    )<<3) & 0xff; | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_rgba_pixels16( const GLcontext *ctx, | ||||
|                             GLuint n, const GLint x[], const GLint y[], | ||||
|                             const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel16( x[i], y[i], (rgba[i][RCOMP]>>3)<<11 | \ | ||||
| 			                 (rgba[i][GCOMP]>>2)<<5  | \ | ||||
| 			                 (rgba[i][BCOMP]>>3)); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
| void __write_mono_rgba_pixels16( const GLcontext *ctx, | ||||
|                                  GLuint n, | ||||
|                                  const GLint x[], const GLint y[], | ||||
|                                  const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    /* use current rgb color */ | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel16( x[i], y[i], SVGAMesa->hicolor ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_pixels16( const GLcontext *ctx, | ||||
|                            GLuint n, const GLint x[], const GLint y[], | ||||
|                            GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i,pix; | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|     pix = __svga_getpixel16( x[i], y[i] ); | ||||
|     rgba[i][RCOMP] = ((pix>>11)<<3) & 0xff; | ||||
|     rgba[i][GCOMP] = ((pix>> 5)<<2) & 0xff; | ||||
|     rgba[i][BCOMP] = ((pix    )<<3) & 0xff; | ||||
|    } | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa16.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa16.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| /* $Id: svgamesa16.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef SVGA_MESA_16_H | ||||
| #define SVGA_MESA_16_H | ||||
|  | ||||
| extern void __set_color16( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern void __clear_color16( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern GLbitfield __clear16( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height ); | ||||
| extern void __write_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]); | ||||
| extern void __read_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ); | ||||
| extern void __write_rgba_pixels16( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_pixels16( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] ); | ||||
| extern void __read_rgba_pixels16( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] ); | ||||
|  | ||||
| #endif /* SVGA_MESA_16_H */ | ||||
|  | ||||
							
								
								
									
										215
									
								
								src/mesa/drivers/svga/svgamesa24.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								src/mesa/drivers/svga/svgamesa24.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,215 @@ | ||||
| /* $Id: svgamesa24.c,v 1.1.2.5 2000/01/31 22:10:39 tanner Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef SVGA | ||||
|  | ||||
| #include "svgapix.h" | ||||
|  | ||||
| _RGB * rgbBuffer; | ||||
|  | ||||
| #if 0 | ||||
| /* this doesn't compile with GCC on RedHat 6.1 */ | ||||
| inline int RGB2BGR24(int c) | ||||
| { | ||||
| 	asm("rorw  $8, %0\n"	  | ||||
| 	    "rorl $16, %0\n"	  | ||||
| 	    "rorw  $8, %0\n"	  | ||||
| 	    "shrl  $8, %0\n"	  | ||||
|       : "=q"(c):"0"(c)); | ||||
|     return c; | ||||
| } | ||||
| #else | ||||
| static unsigned long RGB2BGR24(unsigned long color) | ||||
| { | ||||
|    return (color & 0xff00)|(color>>16)|((color & 0xff)<<16); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| int __svga_drawpixel24(int x, int y, GLubyte r, GLubyte g, GLubyte b) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     rgbBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|  | ||||
|     rgbBuffer[offset].r=r; | ||||
|     rgbBuffer[offset].g=g; | ||||
|     rgbBuffer[offset].b=b; | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| unsigned long __svga_getpixel24(int x, int y) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     rgbBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|     return rgbBuffer[offset].r<<16 | rgbBuffer[offset].g<<8 | rgbBuffer[offset].b; | ||||
| } | ||||
|  | ||||
| void __set_color24( GLcontext *ctx, | ||||
|                     GLubyte red, GLubyte green, | ||||
|                     GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    SVGAMesa->red = red; | ||||
|    SVGAMesa->green = green; | ||||
|    SVGAMesa->blue = blue; | ||||
| /*   SVGAMesa->truecolor = red<<16 | green<<8 | blue; */ | ||||
| } | ||||
|  | ||||
| void __clear_color24( GLcontext *ctx, | ||||
|                       GLubyte red, GLubyte green, | ||||
|                       GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    SVGAMesa->clear_red = red; | ||||
|    SVGAMesa->clear_green = green; | ||||
|    SVGAMesa->clear_blue = blue; | ||||
| /*   SVGAMesa->clear_truecolor = red<<16 | green<<8 | blue; */ | ||||
| } | ||||
|  | ||||
| GLbitfield __clear24( GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|                       GLint x, GLint y, GLint width, GLint height ) | ||||
| { | ||||
|    int i,j; | ||||
|     | ||||
|    if (mask & GL_COLOR_BUFFER_BIT) { | ||||
|     if (all) { | ||||
|      rgbBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|      for (i=0;i<SVGABuffer.BufferSize / 3;i++) | ||||
|       { | ||||
|        rgbBuffer[i].r=SVGAMesa->clear_red; | ||||
|        rgbBuffer[i].g=SVGAMesa->clear_green; | ||||
|        rgbBuffer[i].b=SVGAMesa->clear_blue; | ||||
|       }  | ||||
|     } else { | ||||
|     for (i=x;i<width;i++)     | ||||
|      for (j=y;j<height;j++)     | ||||
|       __svga_drawpixel24( i, j, SVGAMesa->clear_red, | ||||
|                                 SVGAMesa->clear_green, | ||||
| 				SVGAMesa->clear_blue); | ||||
|     }	 | ||||
|    } | ||||
|    return mask & (~GL_COLOR_BUFFER_BIT); | ||||
| } | ||||
|  | ||||
| void __write_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                           const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    if (mask) { | ||||
|       /* draw some pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          if (mask[i]) { | ||||
|          __svga_drawpixel24( x, y, rgba[i][RCOMP], | ||||
| 	                           rgba[i][GCOMP], | ||||
| 				   rgba[i][BCOMP]); | ||||
|          } | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* draw all pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          __svga_drawpixel24( x, y, rgba[i][RCOMP], | ||||
| 	                           rgba[i][GCOMP], | ||||
| 				   rgba[i][BCOMP]); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_mono_rgba_span24( const GLcontext *ctx, | ||||
|                                GLuint n, GLint x, GLint y, | ||||
|                                const GLubyte mask[]) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel24( x, y, SVGAMesa->red, | ||||
|                                    SVGAMesa->green, | ||||
| 				   SVGAMesa->blue); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                          GLubyte rgba[][4] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|     *((GLint*)rgba[i]) = RGB2BGR24(__svga_getpixel24( x, y)); | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_rgba_pixels24( const GLcontext *ctx, | ||||
|                             GLuint n, const GLint x[], const GLint y[], | ||||
|                             const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel24( x[i], y[i], rgba[i][RCOMP], | ||||
| 	                                 rgba[i][GCOMP], | ||||
| 				         rgba[i][BCOMP]); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_mono_rgba_pixels24( const GLcontext *ctx, | ||||
|                                  GLuint n, | ||||
|                                  const GLint x[], const GLint y[], | ||||
|                                  const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    /* use current rgb color */ | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel24( x[i], y[i], SVGAMesa->red, | ||||
|                                          SVGAMesa->green, | ||||
| 				         SVGAMesa->blue); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_pixels24( const GLcontext *ctx, | ||||
|                            GLuint n, const GLint x[], const GLint y[], | ||||
|                            GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|     *((GLint*)rgba[i]) = RGB2BGR24(__svga_getpixel24( x[i], y[i]));     | ||||
|    } | ||||
| } | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa24.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa24.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| /* $Id: svgamesa24.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef SVGA_MESA_24_H | ||||
| #define SVGA_MESA_24_H | ||||
|  | ||||
| extern void __set_color24( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern void __clear_color24( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern GLbitfield __clear24( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height ); | ||||
| extern void __write_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]); | ||||
| extern void __read_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ); | ||||
| extern void __write_rgba_pixels24( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_pixels24( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] ); | ||||
| extern void __read_rgba_pixels24( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] ); | ||||
|  | ||||
| #endif /* SVGA_MESA_24_H */ | ||||
|  | ||||
							
								
								
									
										192
									
								
								src/mesa/drivers/svga/svgamesa32.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								src/mesa/drivers/svga/svgamesa32.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,192 @@ | ||||
| /* $Id: svgamesa32.c,v 1.1.2.5 2000/01/31 22:10:39 tanner Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef SVGA | ||||
|  | ||||
| #include "svgapix.h" | ||||
|  | ||||
| GLint * intBuffer; | ||||
|  | ||||
| #if 0 | ||||
| /* this doesn't compile with GCC on RedHat 6.1 */ | ||||
| inline int RGB2BGR32(int c) | ||||
| { | ||||
| 	asm("rorw  $8, %0\n"	  | ||||
| 	    "rorl $16, %0\n"	  | ||||
| 	    "rorw  $8, %0\n"	  | ||||
| 	    "shrl  $8, %0\n"	  | ||||
|       : "=q"(c):"0"(c)); | ||||
|     return c; | ||||
| } | ||||
| #else | ||||
| static unsigned long RGB2BGR32(unsigned long color) | ||||
| { | ||||
|    return (color & 0xff00)|(color>>16)|((color & 0xff)<<16); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| int __svga_drawpixel32(int x, int y, unsigned long c) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     intBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|     intBuffer[offset]=c; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| unsigned long __svga_getpixel32(int x, int y) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     intBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->width + x; | ||||
|     return intBuffer[offset]; | ||||
| } | ||||
|  | ||||
| void __set_color32( GLcontext *ctx, | ||||
|                     GLubyte red, GLubyte green, | ||||
|                     GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    SVGAMesa->red = red; | ||||
|    SVGAMesa->green = green; | ||||
|    SVGAMesa->blue = blue; | ||||
|    SVGAMesa->truecolor = red<<16 | green<<8 | blue; | ||||
| } | ||||
|  | ||||
| void __clear_color32( GLcontext *ctx, | ||||
|                       GLubyte red, GLubyte green, | ||||
|                       GLubyte blue, GLubyte alpha ) | ||||
| { | ||||
|    SVGAMesa->clear_truecolor = red<<16 | green<<8 | blue; | ||||
| } | ||||
|  | ||||
| GLbitfield __clear32( GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|                         GLint x, GLint y, GLint width, GLint height ) | ||||
| { | ||||
|    int i,j; | ||||
|     | ||||
|    if (mask & GL_COLOR_BUFFER_BIT) { | ||||
|     if (all) { | ||||
|      intBuffer=(void *)SVGABuffer.BackBuffer; | ||||
|      for (i=0;i<SVGABuffer.BufferSize / 4;i++) intBuffer[i]=SVGAMesa->clear_truecolor; | ||||
|     } else { | ||||
|     for (i=x;i<width;i++)     | ||||
|      for (j=y;j<height;j++)     | ||||
|       __svga_drawpixel32(i,j,SVGAMesa->clear_truecolor); | ||||
|     }	 | ||||
|    } | ||||
|    return mask & (~GL_COLOR_BUFFER_BIT); | ||||
| } | ||||
|  | ||||
| void __write_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                           const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    if (mask) { | ||||
|       /* draw some pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          if (mask[i]) { | ||||
|          __svga_drawpixel32( x, y, RGB2BGR32(*((GLint*)rgba[i]))); | ||||
|          } | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* draw all pixels */ | ||||
|       for (i=0; i<n; i++, x++) { | ||||
|          __svga_drawpixel32( x, y, RGB2BGR32(*((GLint*)rgba[i]))); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_mono_rgba_span32( const GLcontext *ctx, | ||||
|                                GLuint n, GLint x, GLint y, | ||||
|                                const GLubyte mask[]) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel32( x, y, SVGAMesa->truecolor); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                          GLubyte rgba[][4] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++, x++) { | ||||
|      *((GLint*)rgba[i]) = RGB2BGR32(__svga_getpixel32( x, y )); | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_rgba_pixels32( const GLcontext *ctx, | ||||
|                             GLuint n, const GLint x[], const GLint y[], | ||||
|                             const GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel32( x[i], y[i], RGB2BGR32(*((GLint*)rgba[i]))); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_mono_rgba_pixels32( const GLcontext *ctx, | ||||
|                                  GLuint n, | ||||
|                                  const GLint x[], const GLint y[], | ||||
|                                  const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    /* use current rgb color */ | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel32( x[i], y[i], SVGAMesa->truecolor ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_rgba_pixels32( const GLcontext *ctx, | ||||
|                            GLuint n, const GLint x[], const GLint y[], | ||||
|                            GLubyte rgba[][4], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|     *((GLint*)rgba[i]) = RGB2BGR32(__svga_getpixel32( x[i], y[i] )); | ||||
|    } | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa32.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa32.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| /* $Id: svgamesa32.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef SVGA_MESA_32_H | ||||
| #define SVGA_MESA_32_H | ||||
|  | ||||
| extern void __set_color32( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern void __clear_color32( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); | ||||
| extern GLbitfield __clear32( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height ); | ||||
| extern void __write_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]); | ||||
| extern void __read_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] ); | ||||
| extern void __write_rgba_pixels32( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] ); | ||||
| extern void __write_mono_rgba_pixels32( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] ); | ||||
| extern void __read_rgba_pixels32( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] ); | ||||
|  | ||||
| #endif /* SVGA_MESA_32_H */ | ||||
|  | ||||
							
								
								
									
										167
									
								
								src/mesa/drivers/svga/svgamesa8.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								src/mesa/drivers/svga/svgamesa8.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,167 @@ | ||||
| /* $Id: svgamesa8.c,v 1.1.2.3 2000/01/31 22:10:39 tanner Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef SVGA | ||||
|  | ||||
|  | ||||
| #include "svgapix.h" | ||||
|  | ||||
| int __svga_drawpixel8(int x, int y, unsigned long c) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->linewidth + x; | ||||
|     SVGABuffer.BackBuffer[offset]=c; | ||||
|      | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| unsigned long __svga_getpixel8(int x, int y) | ||||
| { | ||||
|     unsigned long offset; | ||||
|  | ||||
|     y = SVGAInfo->height-y-1; | ||||
|     offset = y * SVGAInfo->linewidth + x; | ||||
|     return SVGABuffer.BackBuffer[offset]; | ||||
| } | ||||
|  | ||||
| void __set_index8( GLcontext *ctx, GLuint index ) | ||||
| { | ||||
|    SVGAMesa->index = index; | ||||
| } | ||||
|  | ||||
| void __clear_index8( GLcontext *ctx, GLuint index ) | ||||
| { | ||||
|    SVGAMesa->clear_index = index; | ||||
| } | ||||
|  | ||||
| GLbitfield __clear8( GLcontext *ctx, GLbitfield mask, GLboolean all, | ||||
|                      GLint x, GLint y, GLint width, GLint height ) | ||||
| { | ||||
|    int i,j; | ||||
|     | ||||
|    if (mask & GL_COLOR_BUFFER_BIT) { | ||||
|     | ||||
|     if (all)  | ||||
|     {  | ||||
|      memset(SVGABuffer.BackBuffer,SVGAMesa->clear_index,SVGABuffer.BufferSize); | ||||
|     } else { | ||||
|     for (i=x;i<width;i++)     | ||||
|      for (j=y;j<height;j++)     | ||||
|       __svga_drawpixel8(i,j,SVGAMesa->clear_index); | ||||
|     } | ||||
|    }     | ||||
|    return mask & (~GL_COLOR_BUFFER_BIT); | ||||
| } | ||||
|  | ||||
| void __write_ci32_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                          const GLuint index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0;i<n;i++,x++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel8( x, y, index[i]); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_ci8_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, | ||||
|                         const GLubyte index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|  | ||||
|    for (i=0;i<n;i++,x++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel8( x, y, index[i]); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_mono_ci_span8( const GLcontext *ctx, GLuint n, | ||||
|                             GLint x, GLint y, const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0;i<n;i++,x++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel8( x, y, SVGAMesa->index); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_ci32_span8( const GLcontext *ctx, | ||||
|                         GLuint n, GLint x, GLint y, GLuint index[]) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|       index[i] = __svga_getpixel8( x, y); | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __write_ci32_pixels8( const GLcontext *ctx, | ||||
|                            GLuint n, const GLint x[], const GLint y[], | ||||
|                            const GLuint index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel8( x[i], y[i], index[i]); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
| void __write_mono_ci_pixels8( const GLcontext *ctx, GLuint n, | ||||
|                               const GLint x[], const GLint y[], | ||||
|                               const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++) { | ||||
|       if (mask[i]) { | ||||
|          __svga_drawpixel8( x[i], y[i], SVGAMesa->index); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
| void __read_ci32_pixels8( const GLcontext *ctx, | ||||
|                           GLuint n, const GLint x[], const GLint y[], | ||||
|                           GLuint index[], const GLubyte mask[] ) | ||||
| { | ||||
|    int i; | ||||
|    for (i=0; i<n; i++,x++) { | ||||
|       index[i] = __svga_getpixel8( x[i], y[i]); | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa8.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa8.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| /* $Id: svgamesa8.h,v 1.1.2.1 2000/01/22 20:05:09 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef SVGA_MESA_8_H | ||||
| #define SVGA_MESA_8_H | ||||
|  | ||||
| extern void __set_index8( GLcontext *ctx, GLuint index ); | ||||
| extern void __clear_index8( GLcontext *ctx, GLuint index ); | ||||
| extern GLbitfield __clear8( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height ); | ||||
| extern void __write_ci32_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[] ); | ||||
| extern void __write_ci8_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte index[], const GLubyte mask[] ); | ||||
| extern void __write_mono_ci_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[] ); | ||||
| extern void __read_ci32_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLuint index[]); | ||||
| extern void __write_ci32_pixels8( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[] ); | ||||
| extern void __write_mono_ci_pixels8( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] ); | ||||
| extern void __read_ci32_pixels8( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLuint index[], const GLubyte mask[] ); | ||||
|  | ||||
| #endif /* SVGA_MESA_15_H */ | ||||
							
								
								
									
										71
									
								
								src/mesa/drivers/svga/svgapix.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								src/mesa/drivers/svga/svgapix.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
| /* $Id: svgapix.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.2 | ||||
|  * Copyright (C) 1995-2000  Brian Paul | ||||
|  * | ||||
|  * This library is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Library General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This library is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Library General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Library General Public | ||||
|  * License along with this library; if not, write to the Free | ||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * SVGA driver for Mesa. | ||||
|  * Original author:  Brian Paul | ||||
|  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef SVGAPIX_H | ||||
| #define SVGAPIX_H | ||||
|  | ||||
| #include "GL/gl.h" | ||||
| #include "GL/svgamesa.h" | ||||
| #include "context.h" | ||||
| #include "vga.h" | ||||
|  | ||||
| struct svgamesa_context { | ||||
|    GLcontext *gl_ctx;		/* the core Mesa context */ | ||||
|    GLvisual *gl_vis;		/* describes the color buffer */ | ||||
|    GLframebuffer *gl_buffer;	/* the ancillary buffers */ | ||||
|    GLuint index;		/* current color index */ | ||||
|    GLuint clear_index;		/* current clear index */ | ||||
|    GLint red, green, blue;	/* current rgb color */ | ||||
|    GLuint truecolor;		/* current rgb color */ | ||||
|    GLint clear_red,  | ||||
|          clear_green,  | ||||
| 	 clear_blue;		/* current clear rgb color */ | ||||
|    GLuint clear_truecolor;	/* current clear rgb color */ | ||||
|    GLushort hicolor;		/* current hicolor */ | ||||
|    GLushort clear_hicolor;	/* current clear hicolor */ | ||||
|    GLint width, height;		/* size of color buffer */ | ||||
|    GLint depth;			/* bits per pixel (8,16,24 or 32) */ | ||||
| }; | ||||
|  | ||||
| typedef struct { GLubyte b,g,r; } _RGB; | ||||
|  | ||||
| struct svga_buffer {    | ||||
|    GLint     Depth; | ||||
|    GLint     BufferSize; | ||||
|    GLubyte   * FrontBuffer; | ||||
|    GLubyte   * BackBuffer; | ||||
|    GLubyte   * VideoRam; | ||||
| }; | ||||
|  | ||||
| extern struct svga_buffer SVGABuffer; | ||||
| extern vga_modeinfo * SVGAInfo; | ||||
| extern SVGAMesaContext SVGAMesa;    /* the current context */ | ||||
|  | ||||
| #endif /* SVGAPIX_H */ | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: fakeglx.c,v 1.13 1999/11/11 01:29:28 brianp Exp $ */ | ||||
| /* $Id: fakeglx.c,v 1.12.2.7 2000/03/23 00:13:22 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Version:  3.2 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2000  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"), | ||||
| @@ -45,7 +45,16 @@ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include "glxheader.h" | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "conf.h" | ||||
| #endif | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <X11/Xlib.h> | ||||
| #include <X11/Xutil.h> | ||||
| #include "GL/gl.h" | ||||
| #include "GL/xmesa.h" | ||||
| #include "context.h" | ||||
| #include "config.h" | ||||
| @@ -258,7 +267,7 @@ save_glx_visual( Display *dpy, XVisualInfo *vinfo, | ||||
|           && (v->gl_visual->StencilBits >= stencil_size || stencil_size == 0) | ||||
|           && (v->gl_visual->AccumBits >= accum_size || accum_size == 0)) { | ||||
|          /* now either compare XVisualInfo pointers or visual IDs */ | ||||
|          if ((!comparePointers && v->vishandle->visualid == vinfo->visualid) | ||||
|          if ((!comparePointers && v->visinfo->visualid == vinfo->visualid) | ||||
|              || (comparePointers && v->vishandle == vinfo)) { | ||||
|             return v; | ||||
|          } | ||||
| @@ -1047,7 +1056,6 @@ Bool Fake_glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx ) | ||||
| { | ||||
|    if (ctx && drawable) { | ||||
|       XMesaBuffer buffer; | ||||
|       XMesaContext xmctx = (XMesaContext) ctx; | ||||
|  | ||||
|       if (drawable==MakeCurrent_PrevDrawable && ctx==MakeCurrent_PrevContext) { | ||||
|          buffer = MakeCurrent_PrevBuffer; | ||||
| @@ -1057,7 +1065,7 @@ Bool Fake_glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx ) | ||||
|       } | ||||
|       if (!buffer) { | ||||
|          /* drawable must be a new window! */ | ||||
|          buffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, drawable, ctx ); | ||||
|          buffer = XMesaCreateWindowBuffer2( ctx->xm_visual, drawable, ctx ); | ||||
|          if (!buffer) { | ||||
|             /* Out of memory, or context/drawable depth mismatch */ | ||||
|             return False; | ||||
| @@ -1149,12 +1157,12 @@ void Fake_glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ) | ||||
|  | ||||
|  | ||||
| void Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||
|                           GLuint mask ) | ||||
|                           unsigned long mask ) | ||||
| { | ||||
|    XMesaContext xm_src = (XMesaContext) src; | ||||
|    XMesaContext xm_dst = (XMesaContext) dst; | ||||
|    (void) dpy; | ||||
|    gl_copy_context( xm_src->gl_ctx, xm_dst->gl_ctx, mask ); | ||||
|    gl_copy_context( xm_src->gl_ctx, xm_dst->gl_ctx, (GLuint) mask ); | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -1422,10 +1430,10 @@ static const char *get_extensions( void ) | ||||
| #ifdef FX | ||||
|    const char *fx = getenv("MESA_GLX_FX"); | ||||
|    if (fx && fx[0] != 'd') { | ||||
|       return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GLX_EXT_get_proc_address GLX_MESA_set_3dfx_mode"; | ||||
|       return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GLX_MESA_set_3dfx_mode GLX_ARB_get_proc_address"; | ||||
|    } | ||||
| #endif | ||||
|    return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GL_EXT_get_proc_address"; | ||||
|    return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GLX_ARB_get_proc_address"; | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -1444,7 +1452,7 @@ const char *Fake_glXQueryExtensionsString( Display *dpy, int screen ) | ||||
| const char *Fake_glXQueryServerString( Display *dpy, int screen, int name ) | ||||
| { | ||||
|    static char *vendor = "Brian Paul"; | ||||
|    static char *version = "1.1 Mesa 3.1"; | ||||
|    static char *version = "1.1 Mesa 3.2 beta 1"; | ||||
|  | ||||
|    (void) dpy; | ||||
|    (void) screen; | ||||
| @@ -1467,7 +1475,7 @@ const char *Fake_glXQueryServerString( Display *dpy, int screen, int name ) | ||||
| const char *Fake_glXGetClientString( Display *dpy, int name ) | ||||
| { | ||||
|    static char *vendor = "Brian Paul"; | ||||
|    static char *version = "1.1 Mesa 3.1"; | ||||
|    static char *version = "1.1 Mesa 3.2 beta 1"; | ||||
|  | ||||
|    (void) dpy; | ||||
|  | ||||
| @@ -1510,37 +1518,62 @@ GLboolean Fake_glXSet3DfxModeMESA( GLint mode ) | ||||
|  | ||||
|  | ||||
|  | ||||
| #if 0 | ||||
| /*GLfunction Fake_glXGetProcAddress( const GLubyte *procName )*/ | ||||
| void (*Fake_glXGetProcAddress( const GLubyte *procName ))() | ||||
| { | ||||
|    typedef void (*GLfunction)(); | ||||
|    typedef void (*gl_function)(); | ||||
|    struct proc { | ||||
|       const char *name; | ||||
|       GLfunction address; | ||||
|       gl_function address; | ||||
|    }; | ||||
|    static struct proc procTable[] = { | ||||
|       { "glXGetProcAddressEXT", (GLfunction) glXGetProcAddressEXT }, | ||||
|       { "glXCreateGLXPixmapMESA", (GLfunction) glXCreateGLXPixmapMESA }, | ||||
|       { "glXReleaseBuffersMESA", (GLfunction) glXReleaseBuffersMESA }, | ||||
|       { "glXCopySubBufferMESA", (GLfunction) glXCopySubBufferMESA }, | ||||
|       { "glXSet3DfxModeMESA", (GLfunction) glXSet3DfxModeMESA }, | ||||
|       /* NOTE: GLX_SGI_video_sync not implemented in Mesa */ | ||||
|       /* GLX 1.0 functions */ | ||||
|       { "glXChooseVisual", (gl_function) glXChooseVisual }, | ||||
|       { "glXCopyContext", (gl_function) glXCopyContext }, | ||||
|       { "glXCreateContext", (gl_function) glXCreateContext }, | ||||
|       { "glXCreateGLXPixmap", (gl_function) glXCreateGLXPixmap }, | ||||
|       { "glXDestroyContext", (gl_function) glXDestroyContext }, | ||||
|       { "glXDestroyGLXPixmap", (gl_function) glXDestroyGLXPixmap }, | ||||
|       { "glXGetConfig", (gl_function) glXGetConfig }, | ||||
|       { "glXGetCurrentContext", (gl_function) glXGetCurrentContext }, | ||||
|       { "glXGetCurrentDrawable", (gl_function) glXGetCurrentDrawable }, | ||||
|       { "glXIsDirect", (gl_function) glXIsDirect }, | ||||
|       { "glXMakeCurrent", (gl_function) glXMakeCurrent }, | ||||
|       { "glXQueryExtension", (gl_function) glXQueryExtension }, | ||||
|       { "glXQueryVersion", (gl_function) glXQueryVersion }, | ||||
|       { "glXSwapBuffers", (gl_function) glXSwapBuffers }, | ||||
|       { "glXUseXFont", (gl_function) glXUseXFont }, | ||||
|       { "glXWaitGL", (gl_function) glXWaitGL }, | ||||
|       { "glXWaitX", (gl_function) glXWaitX }, | ||||
|  | ||||
|       /* GLX 1.1 functions */ | ||||
|       { "glXGetClientString", (gl_function) glXGetClientString }, | ||||
|       { "glXQueryExtensionsString", (gl_function) glXQueryExtensionsString }, | ||||
|       { "glXQueryServerString", (gl_function) glXQueryServerString }, | ||||
|  | ||||
|       /* Extensions */ | ||||
|       { "glXGetProcAddressARB", (gl_function) glXGetProcAddressARB }, | ||||
|       { "glXCreateGLXPixmapMESA", (gl_function) glXCreateGLXPixmapMESA }, | ||||
|       { "glXReleaseBuffersMESA", (gl_function) glXReleaseBuffersMESA }, | ||||
|       { "glXCopySubBufferMESA", (gl_function) glXCopySubBufferMESA }, | ||||
|       { "glXSet3DfxModeMESA", (gl_function) glXSet3DfxModeMESA }, | ||||
|       { "glXGetVideoSyncSGI", (gl_function) glXGetVideoSyncSGI }, | ||||
|       { "glXWaitVideoSyncSGI", (gl_function) glXWaitVideoSyncSGI }, | ||||
|  | ||||
|       { NULL, NULL }  /* end of list token */ | ||||
|    }; | ||||
|    GLuint i; | ||||
|  | ||||
|    /* First, look for core library functions */ | ||||
|    GLfunction f = (GLfunction) gl_get_proc_address(procName); | ||||
|    gl_function f = (gl_function) gl_get_proc_address(procName); | ||||
|    if (f) | ||||
|       return f; | ||||
|  | ||||
|    /* Second, look for GLX funtion */ | ||||
|    for (i = 0; procTable[i].address; i++) { | ||||
|       if (strcmp((const char *) procName, procTable[i].name) == 0) | ||||
| 	  return (GLfunction) procTable[i].address; | ||||
| 	  return procTable[i].address; | ||||
|    } | ||||
|  | ||||
|    return NULL; | ||||
| } | ||||
| #endif | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: glxapi.c,v 1.4 1999/10/27 09:50:10 brianp Exp $ */ | ||||
| /* $Id: glxapi.c,v 1.4.2.2 2000/02/23 23:06:55 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -126,7 +126,7 @@ void glXDestroyContext( Display *dpy, GLXContext ctx ) | ||||
|  | ||||
|  | ||||
| void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||
| 		     GLuint mask ) | ||||
| 		     unsigned long mask ) | ||||
| { | ||||
| #ifdef REALGLX | ||||
|    if (display_has_glx(dpy)) | ||||
| @@ -419,8 +419,7 @@ GLboolean glXSet3DfxModeMESA( GLint mode ) | ||||
|  | ||||
|  | ||||
|  | ||||
| #if 0  /* spec for this not finalized yet */ | ||||
| void (*glXGetProcAddressEXT( const GLubyte *procName ))() | ||||
| void (*glXGetProcAddressARB( const GLubyte *procName ))() | ||||
| { | ||||
| #ifdef REALGLX | ||||
|    return NULL; | ||||
| @@ -428,4 +427,4 @@ void (*glXGetProcAddressEXT( const GLubyte *procName ))() | ||||
|    return Fake_glXGetProcAddress( procName ); | ||||
| #endif | ||||
| } | ||||
| #endif | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: realglx.c,v 1.1 1999/08/19 00:55:42 jtg Exp $ */ | ||||
| /* $Id: realglx.c,v 1.1.1.1.2.1 2000/02/23 23:06:55 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -89,7 +89,7 @@ void Real_glXDestroyContext( Display *dpy, GLXContext ctx ) | ||||
|  | ||||
|  | ||||
| void Real_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||
|                           GLuint mask ) | ||||
|                           unsigned long mask ) | ||||
| { | ||||
|    (void) dpy; | ||||
|    (void) src; | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: realglx.h,v 1.1 1999/08/19 00:55:42 jtg Exp $ */ | ||||
| /* $Id: realglx.h,v 1.1.1.1.2.1 2000/02/23 23:06:55 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -54,7 +54,7 @@ extern void Real_glXDestroyContext( Display *dpy, GLXContext ctx ); | ||||
|  | ||||
|  | ||||
| extern void Real_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||
|                                  GLuint mask ); | ||||
|                                  unsigned long mask ); | ||||
|  | ||||
|  | ||||
| extern Bool Real_glXMakeCurrent( Display *dpy, GLXDrawable drawable, | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* $Id: xfonts.c,v 1.3 1999/11/11 01:29:28 brianp Exp $ */ | ||||
| /* $Id: xfonts.c,v 1.2.2.1 1999/12/12 17:03:07 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
| @@ -44,7 +44,7 @@ | ||||
| #include "GL/xmesa.h" | ||||
| #include "context.h" | ||||
| #include "fakeglx.h" | ||||
| #include "mem.h" | ||||
| #include "macros.h" | ||||
| #include "xmesaP.h" | ||||
|  | ||||
| /* Some debugging info.  */ | ||||
| @@ -338,7 +338,8 @@ void Fake_glXUseXFont( Font font, int first, int count, int listbase ) | ||||
|       width = ch->rbearing - ch->lbearing; | ||||
|       height = ch->ascent + ch->descent; | ||||
|       x0 = - ch->lbearing; | ||||
|       y0 = ch->descent - 1; | ||||
|       y0 = ch->descent - 0;  /* XXX used to subtract 1 here */ | ||||
|                              /* but that caused a conformace failure */ | ||||
|       dx = ch->width; | ||||
|       dy = 0; | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: xmesaP.h,v 1.2 1999/10/08 09:27:12 keithw Exp $ */ | ||||
| /* $Id: xmesaP.h,v 1.2.2.1 2000/02/22 17:22:42 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -193,7 +193,7 @@ struct xmesa_buffer { | ||||
|    GLint ximage_width1; | ||||
|    GLushort *ximage_origin2;	/* used for PIXELADDR2 macro */ | ||||
|    GLint ximage_width2; | ||||
|    bgr_t *ximage_origin3;	/* used for PIXELADDR3 macro */ | ||||
|    GLubyte *ximage_origin3;	/* used for PIXELADDR3 macro */ | ||||
|    GLint ximage_width3; | ||||
|    GLuint *ximage_origin4;	/* used for PIXELADDR4 macro */ | ||||
|    GLint ximage_width4; | ||||
| @@ -492,7 +492,7 @@ static int const kernel1[16] = { | ||||
|       ( xmesa->xm_buffer->ximage_origin2 - (Y) * xmesa->xm_buffer->ximage_width2 + (X) ) | ||||
|  | ||||
| #define PIXELADDR3( X, Y )  \ | ||||
|       ( xmesa->xm_buffer->ximage_origin3 - (Y) * xmesa->xm_buffer->ximage_width3 + (X) ) | ||||
|       ((bgr_t *) ( xmesa->xm_buffer->ximage_origin3 - (Y) * xmesa->xm_buffer->ximage_width3 + 3 * (X) )) | ||||
|  | ||||
| #define PIXELADDR4( X, Y )  \ | ||||
|       ( xmesa->xm_buffer->ximage_origin4 - (Y) * xmesa->xm_buffer->ximage_width4 + (X) ) | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| # $Id: Makefile.X11,v 1.7 1999/11/11 01:22:28 brianp Exp $ | ||||
| # $Id: Makefile.X11,v 1.6.2.2 2000/01/23 17:47:00 brianp Exp $ | ||||
|  | ||||
| # Mesa 3-D graphics library | ||||
| # Version:  3.3 | ||||
| # Version:  3.1 | ||||
| # Copyright (C) 1995-1999  Brian Paul | ||||
|  | ||||
| # Makefile for core library | ||||
| @@ -18,13 +18,13 @@ VPATH = RCS | ||||
| INCDIR = ../include | ||||
| LIBDIR = ../lib | ||||
|  | ||||
|  | ||||
| CORE_SOURCES = \ | ||||
| 	glapi.c \ | ||||
| 	glapinoop.c \ | ||||
| 	accum.c \ | ||||
| 	alpha.c \ | ||||
| 	alphabuf.c \ | ||||
| 	api1.c \ | ||||
| 	api2.c \ | ||||
| 	apiext.c \ | ||||
| 	attrib.c \ | ||||
| 	bbox.c \ | ||||
| 	bitmap.c \ | ||||
| @@ -37,7 +37,6 @@ CORE_SOURCES = \ | ||||
| 	cva.c \ | ||||
| 	debug_xform.c \ | ||||
| 	depth.c \ | ||||
| 	dispatch.c \ | ||||
| 	dlist.c \ | ||||
| 	drawpix.c \ | ||||
| 	enable.c \ | ||||
| @@ -50,19 +49,18 @@ CORE_SOURCES = \ | ||||
| 	glmisc.c \ | ||||
| 	hash.c \ | ||||
| 	image.c \ | ||||
| 	imaging.c \ | ||||
| 	light.c \ | ||||
| 	lines.c \ | ||||
| 	logic.c \ | ||||
| 	masking.c \ | ||||
| 	matrix.c \ | ||||
| 	mem.c \ | ||||
| 	mmath.c \ | ||||
| 	mthreads.c \ | ||||
| 	pb.c \ | ||||
| 	pixel.c \ | ||||
| 	pipeline.c \ | ||||
| 	points.c \ | ||||
| 	pointers.c \ | ||||
| 	polygon.c \ | ||||
| 	quads.c \ | ||||
| 	rastpos.c \ | ||||
| @@ -106,6 +104,11 @@ DRIVER_SOURCES = \ | ||||
| 	X/xmesa4.c \ | ||||
| 	OSmesa/osmesa.c \ | ||||
| 	SVGA/svgamesa.c \ | ||||
| 	SVGA/svgamesa8.c \ | ||||
| 	SVGA/svgamesa15.c \ | ||||
| 	SVGA/svgamesa16.c \ | ||||
| 	SVGA/svgamesa24.c \ | ||||
| 	SVGA/svgamesa32.c \ | ||||
| 	FX/fxapi.c \ | ||||
| 	FX/fxclip.c \ | ||||
| 	FX/fxcva.c \ | ||||
| @@ -222,7 +225,8 @@ X86/3dnow.o: X86/3dnow.c | ||||
| #	@echo "Specify a target configuration" | ||||
|  | ||||
| clean: | ||||
| 	-rm *.o *~ */*.o */*~ | ||||
| 	-rm *.o *~ */*.o */*~ *.lo *.la | ||||
| 	-rm -rf .libs | ||||
|  | ||||
| targets: $(LIBDIR)/$(GL_LIB) | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: accum.c,v 1.11 1999/11/11 01:22:25 brianp Exp $ */ | ||||
| /* $Id: accum.c,v 1.10.2.2 2000/02/02 21:53:59 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -25,13 +25,22 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* $XFree86: xc/lib/GL/mesa/src/accum.c,v 1.3 1999/04/04 00:20:17 dawes Exp $ */ | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #ifndef XFree86Server | ||||
| #include <assert.h> | ||||
| #include <limits.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #else | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "accum.h" | ||||
| #include "context.h" | ||||
| #include "mem.h" | ||||
| #include "macros.h" | ||||
| #include "masking.h" | ||||
| #include "span.h" | ||||
| #include "types.h" | ||||
| @@ -92,10 +101,9 @@ void gl_alloc_accum_buffer( GLcontext *ctx ) | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) | ||||
| void gl_ClearAccum( GLcontext *ctx, | ||||
|                     GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glAccum"); | ||||
|  | ||||
|    ctx->Accum.ClearColor[0] = CLAMP( red, -1.0, 1.0 ); | ||||
| @@ -131,10 +139,8 @@ static void rescale_accum( GLcontext *ctx ) | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_Accum( GLenum op, GLfloat value ) | ||||
| void gl_Accum( GLcontext *ctx, GLenum op, GLfloat value ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    GLuint xpos, ypos, width, height, width4; | ||||
|    GLfloat acc_scale; | ||||
|    GLubyte rgba[MAX_WIDTH][4]; | ||||
| @@ -332,13 +338,13 @@ _mesa_Accum( GLenum op, GLfloat value ) | ||||
|          if (ctx->IntegerAccumMode && value != 1.0) | ||||
|             rescale_accum(ctx); | ||||
|  | ||||
|          if (ctx->IntegerAccumMode) { | ||||
|          if (ctx->IntegerAccumMode && ctx->IntegerAccumScaler > 0) { | ||||
|             /* build lookup table to avoid many floating point multiplies */ | ||||
|             const GLfloat mult = ctx->IntegerAccumScaler; | ||||
|             static GLchan multTable[32768]; | ||||
|             static GLfloat prevMult = 0.0; | ||||
|             GLuint j; | ||||
|             const GLint max = 256 / mult; | ||||
|             const GLint max = (GLint) (256 / mult); | ||||
|             if (mult != prevMult) { | ||||
|                assert(max <= 32768); | ||||
|                for (j = 0; j < max; j++) | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: attrib.c,v 1.11 1999/11/11 01:22:25 brianp Exp $ */ | ||||
| /* $Id: attrib.c,v 1.10.2.4 2000/03/10 22:11:15 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -25,16 +25,23 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
|  | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #ifndef XFree86Server | ||||
| #include <stdio.h> | ||||
| #else | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "attrib.h" | ||||
| #include "context.h" | ||||
| #include "glmisc.h" | ||||
| #include "enable.h" | ||||
| #include "enums.h" | ||||
| #include "mem.h" | ||||
| #include "macros.h" | ||||
| #include "simple_list.h" | ||||
| #include "texstate.h" | ||||
| #include "types.h" | ||||
| @@ -85,7 +92,11 @@ static void copy_texobj_state( struct gl_texture_object *dest, | ||||
|    dest->P = src->P; | ||||
|    dest->M = src->M; | ||||
|    dest->MinMagThresh = src->MinMagThresh; | ||||
|    dest->Palette = src->Palette; | ||||
|    memcpy( dest->Palette, src->Palette, | ||||
|            sizeof(GLubyte) * MAX_TEXTURE_PALETTE_SIZE * 4 ); | ||||
|    dest->PaletteSize = src->PaletteSize; | ||||
|    dest->PaletteIntFormat = src->PaletteIntFormat; | ||||
|    dest->PaletteFormat = src->PaletteFormat; | ||||
|    dest->Complete = src->Complete; | ||||
|    dest->SampleFunc = src->SampleFunc; | ||||
| } | ||||
| @@ -417,21 +428,43 @@ void gl_PopAttrib( GLcontext* ctx ) | ||||
|                GLubyte oldAlphaRef = ctx->Color.AlphaRef; | ||||
|                GLenum oldBlendSrc = ctx->Color.BlendSrcRGB; | ||||
|                GLenum oldBlendDst = ctx->Color.BlendDstRGB; | ||||
| 	       GLenum oldLogicOp = ctx->Color.LogicOp; | ||||
|                MEMCPY( &ctx->Color, attr->data, | ||||
|                        sizeof(struct gl_colorbuffer_attrib) ); | ||||
|                if (ctx->Color.DrawBuffer != oldDrawBuffer) { | ||||
|                   _mesa_DrawBuffer( ctx->Color.DrawBuffer); | ||||
|                   gl_DrawBuffer(ctx, ctx->Color.DrawBuffer); | ||||
|                } | ||||
|                if ((ctx->Color.AlphaFunc != oldAlphaFunc || | ||||
|                     ctx->Color.AlphaRef != oldAlphaRef) && | ||||
|                    ctx->Driver.AlphaFunc) | ||||
|                   (*ctx->Driver.AlphaFunc)( ctx, ctx->Color.AlphaFunc, | ||||
|                                             ctx->Color.AlphaRef / 255.0F); | ||||
|                if ((ctx->Color.BlendSrcRGB != oldBlendSrc || | ||||
|                     ctx->Color.BlendSrcRGB != oldBlendDst) && | ||||
|                     ctx->Color.BlendDstRGB != oldBlendDst) && | ||||
|                    ctx->Driver.BlendFunc) | ||||
|                   (*ctx->Driver.BlendFunc)( ctx, ctx->Color.BlendSrcRGB, | ||||
|                                             ctx->Color.BlendDstRGB); | ||||
| 	       if (ctx->Color.LogicOp != oldLogicOp && | ||||
| 		   ctx->Driver.LogicOpcode) { | ||||
| 		  ctx->Driver.LogicOpcode( ctx, ctx->Color.LogicOp ); | ||||
|                } | ||||
|                if (ctx->Visual->RGBAflag) { | ||||
|                   GLubyte r = (GLint) (ctx->Color.ClearColor[0] * 255.0F); | ||||
|                   GLubyte g = (GLint) (ctx->Color.ClearColor[1] * 255.0F); | ||||
|                   GLubyte b = (GLint) (ctx->Color.ClearColor[2] * 255.0F); | ||||
|                   GLubyte a = (GLint) (ctx->Color.ClearColor[3] * 255.0F); | ||||
|                   (*ctx->Driver.ClearColor)( ctx, r, g, b, a ); | ||||
|                   if ((ctx->Color.AlphaFunc != oldAlphaFunc || | ||||
|                        ctx->Color.AlphaRef != oldAlphaRef) && | ||||
|                       ctx->Driver.AlphaFunc) | ||||
|                      (*ctx->Driver.AlphaFunc)( ctx, ctx->Color.AlphaFunc, | ||||
|                                                ctx->Color.AlphaRef / 255.0F); | ||||
|                   if (ctx->Driver.ColorMask) { | ||||
|                      (*ctx->Driver.ColorMask)(ctx, | ||||
|                                               ctx->Color.ColorMask[0], | ||||
|                                               ctx->Color.ColorMask[1], | ||||
|                                               ctx->Color.ColorMask[2], | ||||
|                                               ctx->Color.ColorMask[3]); | ||||
|                   } | ||||
|                } | ||||
|                else { | ||||
|                   (*ctx->Driver.ClearIndex)( ctx, ctx->Color.ClearIndex); | ||||
|                } | ||||
|             } | ||||
|             break; | ||||
|          case GL_CURRENT_BIT: | ||||
| @@ -460,7 +493,7 @@ void gl_PopAttrib( GLcontext* ctx ) | ||||
|  | ||||
| #define TEST_AND_UPDATE(VALUE, NEWVALUE, ENUM)		\ | ||||
| 	if ((VALUE) != (NEWVALUE)) {			\ | ||||
| 	   _mesa_set_enable( ctx, ENUM, (NEWVALUE) );	\ | ||||
| 	   gl_set_enable( ctx, ENUM, (NEWVALUE) );	\ | ||||
| 	} | ||||
|  | ||||
|                TEST_AND_UPDATE(ctx->Color.AlphaEnabled, enable->AlphaTest, GL_ALPHA_TEST); | ||||
| @@ -470,7 +503,7 @@ void gl_PopAttrib( GLcontext* ctx ) | ||||
|                   GLuint i; | ||||
|                   for (i=0;i<MAX_CLIP_PLANES;i++) { | ||||
|                      if (ctx->Transform.ClipEnabled[i] != enable->ClipPlane[i]) | ||||
|                         _mesa_set_enable( ctx, (GLenum) (GL_CLIP_PLANE0 + i), enable->ClipPlane[i] ); | ||||
|                         gl_set_enable( ctx, (GLenum) (GL_CLIP_PLANE0 + i), enable->ClipPlane[i] ); | ||||
|                   } | ||||
|                } | ||||
|                TEST_AND_UPDATE(ctx->Light.ColorMaterialEnabled, enable->ColorMaterial, GL_COLOR_MATERIAL); | ||||
| @@ -585,7 +618,7 @@ void gl_PopAttrib( GLcontext* ctx ) | ||||
|                   (*ctx->Driver.Fogfv)( ctx, GL_FOG_INDEX, &index ); | ||||
|                   (*ctx->Driver.Fogfv)( ctx, GL_FOG_COLOR, ctx->Fog.Color ); | ||||
|                } | ||||
| 	       ctx->Enabled &= ENABLE_FOG; | ||||
| 	       ctx->Enabled &= ~ENABLE_FOG; | ||||
| 	       if (ctx->Fog.Enabled) ctx->Enabled |= ENABLE_FOG; | ||||
|             } | ||||
|             break; | ||||
| @@ -613,7 +646,13 @@ void gl_PopAttrib( GLcontext* ctx ) | ||||
|                } | ||||
|                (*ctx->Driver.Enable)( ctx, GL_LIGHTING, ctx->Light.Enabled ); | ||||
|             } | ||||
| 	    ctx->Enabled &= ENABLE_LIGHT; | ||||
|             if (ctx->Light.ShadeModel == GL_FLAT) | ||||
|                ctx->TriangleCaps |= DD_FLATSHADE; | ||||
|             else | ||||
|                ctx->TriangleCaps &= ~DD_FLATSHADE; | ||||
|             if (ctx->Driver.ShadeModel) | ||||
|                (*ctx->Driver.ShadeModel)(ctx, ctx->Light.ShadeModel); | ||||
| 	    ctx->Enabled &= ~ENABLE_LIGHT; | ||||
| 	    if (ctx->Light.Enabled && !is_empty_list(&ctx->Light.EnabledList)) | ||||
| 	       ctx->Enabled |= ENABLE_LIGHT; | ||||
|             break; | ||||
| @@ -731,8 +770,8 @@ void gl_PopAttrib( GLcontext* ctx ) | ||||
| 	    struct gl_viewport_attrib *v =  | ||||
| 	       (struct gl_viewport_attrib *)attr->data; | ||||
| 	     | ||||
| 	    _mesa_Viewport( v->X, v->Y, v->Width, v->Height ); | ||||
| 	    _mesa_DepthRange( v->Near, v->Far ); | ||||
| 	    gl_Viewport( ctx, v->X, v->Y, v->Width, v->Height ); | ||||
| 	    gl_DepthRange( ctx, v->Near, v->Far ); | ||||
| 	    break; | ||||
| 	 } | ||||
|          default: | ||||
| @@ -846,37 +885,3 @@ void gl_PopClientAttrib( GLcontext *ctx ) | ||||
|    ctx->NewState = NEW_ALL; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_PushAttrib( GLbitfield mask ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    gl_PushAttrib(ctx, mask); | ||||
| } | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_PopAttrib( void ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    gl_PopAttrib(ctx); | ||||
| } | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_PushClientAttrib( GLbitfield mask ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    gl_PushClientAttrib(ctx, mask); | ||||
| } | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_PopClientAttrib( void ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    gl_PopClientAttrib(ctx); | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| /* $Id: blend.c,v 1.8 1999/11/11 01:22:25 brianp Exp $ */ | ||||
| /* $Id: blend.c,v 1.7.2.1 2000/02/21 14:59:41 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.1 | ||||
|  * Version:  3.2 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * Copyright (C) 1999-2000  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"), | ||||
| @@ -29,7 +29,13 @@ | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #ifndef XFree86Server | ||||
| #include <stdio.h> | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #else | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "alphabuf.h" | ||||
| #include "blend.h" | ||||
| #include "context.h" | ||||
| @@ -41,9 +47,8 @@ | ||||
| #endif | ||||
|  | ||||
|  | ||||
| void _mesa_BlendFunc( GLenum sfactor, GLenum dfactor ) | ||||
| void gl_BlendFunc( GLcontext *ctx, GLenum sfactor, GLenum dfactor ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFunc"); | ||||
|  | ||||
|    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) | ||||
| @@ -103,10 +108,9 @@ void _mesa_BlendFunc( GLenum sfactor, GLenum dfactor ) | ||||
|  | ||||
| /* GL_INGR_blend_func_separate */ | ||||
| void | ||||
| _mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB, | ||||
|                              GLenum sfactorA, GLenum dfactorA ) | ||||
| gl_BlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, GLenum dfactorRGB, | ||||
|                       GLenum sfactorA, GLenum dfactorA ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFuncSeparate"); | ||||
|  | ||||
|    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) | ||||
| @@ -210,10 +214,8 @@ _mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB, | ||||
|  | ||||
|  | ||||
| /* This is really an extension function! */ | ||||
| void | ||||
| _mesa_BlendEquationEXT( GLenum mode ) | ||||
| void gl_BlendEquation( GLcontext *ctx, GLenum mode ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendEquation"); | ||||
|  | ||||
|    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) | ||||
| @@ -254,10 +256,9 @@ _mesa_BlendEquationEXT( GLenum mode ) | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_BlendColorEXT( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) | ||||
| void gl_BlendColor( GLcontext *ctx, GLclampf red, GLclampf green, | ||||
| 		    GLclampf blue, GLclampf alpha ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    ctx->Color.BlendColor[0] = CLAMP( red,   0.0F, 1.0F ); | ||||
|    ctx->Color.BlendColor[1] = CLAMP( green, 0.0F, 1.0F ); | ||||
|    ctx->Color.BlendColor[2] = CLAMP( blue,  0.0F, 1.0F ); | ||||
| @@ -475,7 +476,7 @@ static void blend_general( GLcontext *ctx, GLuint n, const GLubyte mask[], | ||||
|                sR = sG = sB = 1.0F - (GLfloat) Ad * ascale; | ||||
|                break; | ||||
|             case GL_SRC_ALPHA_SATURATE: | ||||
|                if (As < 1.0F - (GLfloat) Ad * ascale) { | ||||
|                if (As * ascale < 1.0F - (GLfloat) Ad * ascale) { | ||||
|                   sR = sG = sB = (GLfloat) As * ascale; | ||||
|                } | ||||
|                else { | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* $Id: clip.c,v 1.5 1999/11/11 01:22:25 brianp Exp $ */ | ||||
| /* $Id: clip.c,v 1.4.2.1 1999/11/25 16:51:24 keithw Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Version:  3.1 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  *  | ||||
| @@ -25,10 +25,19 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #ifndef XFree86Server | ||||
| #include <string.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #else | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "clip.h" | ||||
| #include "context.h" | ||||
| #include "macros.h" | ||||
| @@ -42,6 +51,15 @@ | ||||
|  | ||||
|  | ||||
|  | ||||
| #define CLIP_RGBA0    0x1 | ||||
| #define CLIP_RGBA1    0x2 | ||||
| #define CLIP_TEX0     0x4 | ||||
| #define CLIP_TEX1     0x8 | ||||
| #define CLIP_INDEX0   0x10 | ||||
| #define CLIP_INDEX1   0x20 | ||||
| #define CLIP_FOG_COORD 0x40 | ||||
|  | ||||
|  | ||||
| /* Linear interpolation between A and B: */ | ||||
| #define LINTERP( T, A, B )   ( (A) + (T) * ( (B) - (A) ) ) | ||||
|  | ||||
| @@ -58,16 +76,7 @@ do {								\ | ||||
| } while(0) | ||||
|     | ||||
|  | ||||
|  | ||||
|  | ||||
| #define CLIP_RGBA0    0x1 | ||||
| #define CLIP_RGBA1    0x2 | ||||
| #define CLIP_TEX0     0x4 | ||||
| #define CLIP_TEX1     0x8 | ||||
| #define CLIP_INDEX0   0x10 | ||||
| #define CLIP_INDEX1   0x20 | ||||
|  | ||||
| static clip_interp_func clip_interp_tab[0x40];  | ||||
| static clip_interp_func clip_interp_tab[0x80];  | ||||
|  | ||||
| #define IND 0 | ||||
| #define NAME clip_nil | ||||
| @@ -113,6 +122,50 @@ static clip_interp_func clip_interp_tab[0x40]; | ||||
| #define NAME clipINDEX0_INDEX1 | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_FOG_COORD) | ||||
| #define NAME clip_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_RGBA0|CLIP_FOG_COORD) | ||||
| #define NAME clipRGBA0_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD) | ||||
| #define NAME clipRGBA0_RGBA1_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD) | ||||
| #define NAME clipTEX0_RGBA0_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD) | ||||
| #define NAME clipTEX0_RGBA0_RGBA1_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD) | ||||
| #define NAME clipTEX1_TEX0_RGBA0_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_TEX0|CLIP_FOG_COORD) | ||||
| #define NAME clipTEX0_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_TEX1|CLIP_TEX0|CLIP_FOG_COORD) | ||||
| #define NAME clipTEX1_TEX0_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD) | ||||
| #define NAME clipTEX1_TEX0_RGBA0_RGBA1_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_INDEX0|CLIP_FOG_COORD) | ||||
| #define NAME clipINDEX0_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
| #define IND (CLIP_INDEX0|CLIP_INDEX1|CLIP_FOG_COORD) | ||||
| #define NAME clipINDEX0_INDEX1_FOG | ||||
| #include "interp_tmp.h" | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -122,17 +175,9 @@ static clip_interp_func clip_interp_tab[0x40]; | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_ClipPlane( GLenum plane, const GLdouble *eq ) | ||||
| void gl_ClipPlane( GLcontext* ctx, GLenum plane, const GLfloat *equation ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    GLint p; | ||||
|    GLfloat equation[4]; | ||||
|  | ||||
|    equation[0] = eq[0]; | ||||
|    equation[1] = eq[1]; | ||||
|    equation[2] = eq[2]; | ||||
|    equation[3] = eq[3]; | ||||
|  | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glClipPlane"); | ||||
|  | ||||
| @@ -183,10 +228,8 @@ void gl_update_userclip( GLcontext *ctx ) | ||||
|    } | ||||
| } | ||||
|  | ||||
| void | ||||
| _mesa_GetClipPlane( GLenum plane, GLdouble *equation ) | ||||
| void gl_GetClipPlane( GLcontext* ctx, GLenum plane, GLdouble *equation ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    GLint p; | ||||
|  | ||||
|    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetClipPlane"); | ||||
| @@ -353,6 +396,8 @@ void gl_update_clipmask( GLcontext *ctx ) | ||||
| 	 mask |= CLIP_INDEX1; | ||||
|    } | ||||
|  | ||||
|    if (ctx->FogMode == FOG_FRAGMENT && (ctx->TriangleCaps & DD_CLIP_FOG_COORD)) | ||||
|       mask |= CLIP_FOG_COORD; | ||||
|     | ||||
|    ctx->ClipInterpFunc = clip_interp_tab[mask]; | ||||
|    ctx->poly_clip_tab = gl_poly_clip_tab[0]; | ||||
| @@ -448,11 +493,22 @@ void gl_init_clip(void) | ||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0] = clipTEX1_TEX0_RGBA0; | ||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1] =  | ||||
|       clipTEX1_TEX0_RGBA0_RGBA1; | ||||
|  | ||||
|    clip_interp_tab[CLIP_TEX0] = clipTEX0; | ||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0] = clipTEX1_TEX0; | ||||
|  | ||||
|    clip_interp_tab[CLIP_INDEX0] = clipINDEX0; | ||||
|    clip_interp_tab[CLIP_INDEX0|CLIP_INDEX1] = clipINDEX0_INDEX1; | ||||
|  | ||||
|    clip_interp_tab[CLIP_FOG_COORD] = clip_FOG; | ||||
|    clip_interp_tab[CLIP_RGBA0|CLIP_FOG_COORD] = clipRGBA0_FOG; | ||||
|    clip_interp_tab[CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD] = clipRGBA0_RGBA1_FOG; | ||||
|    clip_interp_tab[CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD] = clipTEX0_RGBA0_FOG; | ||||
|    clip_interp_tab[CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD] = clipTEX0_RGBA0_RGBA1_FOG; | ||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD] = clipTEX1_TEX0_RGBA0_FOG; | ||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD] =  | ||||
|       clipTEX1_TEX0_RGBA0_RGBA1_FOG; | ||||
|    clip_interp_tab[CLIP_TEX0|CLIP_FOG_COORD] = clipTEX0_FOG; | ||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_FOG_COORD] = clipTEX1_TEX0_FOG; | ||||
|    clip_interp_tab[CLIP_INDEX0|CLIP_FOG_COORD] = clipINDEX0_FOG; | ||||
|    clip_interp_tab[CLIP_INDEX0|CLIP_INDEX1|CLIP_FOG_COORD] = clipINDEX0_INDEX1_FOG; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: colortab.c,v 1.4 1999/11/11 01:22:25 brianp Exp $ */ | ||||
| /* $Id: colortab.c,v 1.3.2.1 2000/02/28 20:40:18 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -23,15 +23,20 @@ | ||||
|  * 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/lib/GL/mesa/src/colortab.c,v 1.2 1999/04/04 00:20:21 dawes Exp $ */ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #ifdef XFree86Server | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "colortab.h" | ||||
| #include "context.h" | ||||
| #include "image.h" | ||||
| #include "macros.h" | ||||
| #endif | ||||
|  | ||||
| @@ -40,8 +45,7 @@ | ||||
| /* | ||||
|  * Return GL_TRUE if k is a power of two, else return GL_FALSE. | ||||
|  */ | ||||
| static GLboolean | ||||
| power_of_two( GLint k ) | ||||
| static GLboolean power_of_two( GLint k ) | ||||
| { | ||||
|    GLint i, m = 1; | ||||
|    for (i=0; i<32; i++) { | ||||
| @@ -53,8 +57,7 @@ power_of_two( GLint k ) | ||||
| } | ||||
|  | ||||
|  | ||||
| static GLint | ||||
| decode_internal_format( GLint format ) | ||||
| static GLint decode_internal_format( GLint format ) | ||||
| { | ||||
|    switch (format) { | ||||
|       case GL_ALPHA: | ||||
| @@ -111,171 +114,81 @@ decode_internal_format( GLint format ) | ||||
| } | ||||
|  | ||||
|  | ||||
| void  | ||||
| _mesa_ColorTable( GLenum target, GLenum internalFormat, | ||||
|                   GLsizei width, GLenum format, GLenum type, | ||||
|                   const GLvoid *table ) | ||||
| void gl_ColorTable( GLcontext *ctx, GLenum target, | ||||
|                     GLenum internalFormat, struct gl_image *table ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; | ||||
|    struct gl_texture_object *texObj; | ||||
|    struct gl_palette *palette; | ||||
|    GLboolean proxy = GL_FALSE; | ||||
|  | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorTable"); | ||||
|  | ||||
|    switch (target) { | ||||
|       case GL_TEXTURE_1D: | ||||
|          texObj = texUnit->CurrentD[1]; | ||||
|          palette = &texObj->Palette; | ||||
|          break; | ||||
|       case GL_TEXTURE_2D: | ||||
|          texObj = texUnit->CurrentD[2]; | ||||
|          palette = &texObj->Palette; | ||||
|          break; | ||||
|       case GL_TEXTURE_3D: | ||||
|          texObj = texUnit->CurrentD[3]; | ||||
|          palette = &texObj->Palette; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_1D: | ||||
|          texObj = ctx->Texture.Proxy1D; | ||||
|          palette = &texObj->Palette; | ||||
|          proxy = GL_TRUE; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_2D: | ||||
|          texObj = ctx->Texture.Proxy2D; | ||||
|          palette = &texObj->Palette; | ||||
|          proxy = GL_TRUE; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_3D: | ||||
|          texObj = ctx->Texture.Proxy3D; | ||||
|          palette = &texObj->Palette; | ||||
|          proxy = GL_TRUE; | ||||
|          break; | ||||
|       case GL_SHARED_TEXTURE_PALETTE_EXT: | ||||
|          texObj = NULL; | ||||
|          palette = &ctx->Texture.Palette; | ||||
|          break; | ||||
|       default: | ||||
|          gl_error(ctx, GL_INVALID_ENUM, "glColorTable(target)"); | ||||
|          return; | ||||
|    } | ||||
|  | ||||
|    assert(palette); | ||||
|  | ||||
|    if (!gl_is_legal_format_and_type(format, type)) { | ||||
|       gl_error(ctx, GL_INVALID_ENUM, "glColorTable(format or type)"); | ||||
|       return; | ||||
|    } | ||||
|  | ||||
|    if (decode_internal_format(internalFormat) < 0) { | ||||
|       gl_error( ctx, GL_INVALID_ENUM, "glColorTable(internalFormat)" ); | ||||
|       return; | ||||
|    } | ||||
|  | ||||
|    if (width < 1 || width > MAX_TEXTURE_PALETTE_SIZE || !power_of_two(width)) { | ||||
|       gl_error(ctx, GL_INVALID_VALUE, "glColorTable(width)"); | ||||
|       if (proxy) { | ||||
|          palette->Size = 0; | ||||
|          palette->IntFormat = (GLenum) 0; | ||||
|          palette->Format = (GLenum) 0; | ||||
|       } | ||||
|       return; | ||||
|    } | ||||
|  | ||||
|    palette->Size = width; | ||||
|    palette->IntFormat = internalFormat; | ||||
|    palette->Format = (GLenum) decode_internal_format(internalFormat); | ||||
|    if (!proxy) { | ||||
|       _mesa_unpack_ubyte_color_span(ctx, width, palette->Format, | ||||
|                                     palette->Table,  /* dest */ | ||||
|                                     format, type, table, | ||||
|                                     &ctx->Unpack, GL_FALSE); | ||||
|    } | ||||
|    if (texObj) { | ||||
|       /* per-texture object palette */ | ||||
|       if (ctx->Driver.UpdateTexturePalette) { | ||||
|          (*ctx->Driver.UpdateTexturePalette)( ctx, texObj ); | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* shared texture palette */ | ||||
|       if (ctx->Driver.UpdateTexturePalette) { | ||||
|          (*ctx->Driver.UpdateTexturePalette)( ctx, NULL ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_ColorSubTable( GLenum target, GLsizei start, | ||||
|                      GLsizei count, GLenum format, GLenum type, | ||||
|                      const GLvoid *table ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; | ||||
|    struct gl_texture_object *texObj; | ||||
|    struct gl_palette *palette; | ||||
|    GLint comps; | ||||
|    GLubyte *dest; | ||||
|  | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorSubTable"); | ||||
|  | ||||
|    switch (target) { | ||||
|       case GL_TEXTURE_1D: | ||||
|          texObj = texUnit->CurrentD[1]; | ||||
|          palette = &texObj->Palette; | ||||
|          break; | ||||
|       case GL_TEXTURE_2D: | ||||
|          texObj = texUnit->CurrentD[2]; | ||||
|          palette = &texObj->Palette; | ||||
|          break; | ||||
|       case GL_TEXTURE_3D: | ||||
|       case GL_TEXTURE_3D_EXT: | ||||
|          texObj = texUnit->CurrentD[3]; | ||||
|          palette = &texObj->Palette; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_1D: | ||||
|          texObj = ctx->Texture.Proxy1D; | ||||
|          proxy = GL_TRUE; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_2D: | ||||
|          texObj = ctx->Texture.Proxy2D; | ||||
|          proxy = GL_TRUE; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_3D_EXT: | ||||
|          texObj = ctx->Texture.Proxy3D; | ||||
|          proxy = GL_TRUE; | ||||
|          break; | ||||
|       case GL_SHARED_TEXTURE_PALETTE_EXT: | ||||
|          texObj = NULL; | ||||
|          palette = &ctx->Texture.Palette; | ||||
|          break; | ||||
|       default: | ||||
|          gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(target)"); | ||||
|          gl_error(ctx, GL_INVALID_ENUM, "glColorTableEXT(target)"); | ||||
|          return; | ||||
|    } | ||||
|  | ||||
|    assert(palette); | ||||
|    /* internalformat = just like glTexImage */ | ||||
|  | ||||
|    if (!gl_is_legal_format_and_type(format, type)) { | ||||
|       gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(format or type)"); | ||||
|    if (table->Width < 1 || table->Width > MAX_TEXTURE_PALETTE_SIZE | ||||
|        || !power_of_two(table->Width)) { | ||||
|       gl_error(ctx, GL_INVALID_VALUE, "glColorTableEXT(width)"); | ||||
|       if (proxy) { | ||||
|          texObj->PaletteSize = 0; | ||||
|          texObj->PaletteIntFormat = (GLenum) 0; | ||||
|          texObj->PaletteFormat = (GLenum) 0; | ||||
|       } | ||||
|       return; | ||||
|    } | ||||
|  | ||||
|    if (count < 1) { | ||||
|       gl_error(ctx, GL_INVALID_VALUE, "glColorSubTable(count)"); | ||||
|       return; | ||||
|    } | ||||
|  | ||||
|    comps = gl_components_in_format(format); | ||||
|    assert(comps > 0);  /* error should be caught sooner */ | ||||
|  | ||||
|    if (start + count > palette->Size) { | ||||
|       gl_error(ctx, GL_INVALID_VALUE, "glColorSubTable(count)"); | ||||
|       return; | ||||
|    } | ||||
|    dest = palette->Table + start * comps * sizeof(GLubyte); | ||||
|    _mesa_unpack_ubyte_color_span(ctx, count, palette->Format, dest, | ||||
|                                  format, type, table, | ||||
|                                  &ctx->Unpack, GL_FALSE); | ||||
|  | ||||
|    if (texObj) { | ||||
|       /* per-texture object palette */ | ||||
|       if (ctx->Driver.UpdateTexturePalette) { | ||||
|          (*ctx->Driver.UpdateTexturePalette)( ctx, texObj ); | ||||
|       texObj->PaletteSize = table->Width; | ||||
|       texObj->PaletteIntFormat = internalFormat; | ||||
|       texObj->PaletteFormat = (GLenum) decode_internal_format(internalFormat); | ||||
|       if (!proxy) { | ||||
|          MEMCPY(texObj->Palette, table->Data, table->Width*table->Components); | ||||
|          if (ctx->Driver.UpdateTexturePalette) { | ||||
|             (*ctx->Driver.UpdateTexturePalette)( ctx, texObj ); | ||||
|          } | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* shared texture palette */ | ||||
|       ctx->Texture.PaletteSize = table->Width; | ||||
|       ctx->Texture.PaletteIntFormat = internalFormat; | ||||
|       ctx->Texture.PaletteFormat = (GLenum) decode_internal_format(internalFormat); | ||||
|       MEMCPY(ctx->Texture.Palette, table->Data, table->Width*table->Components); | ||||
|       if (ctx->Driver.UpdateTexturePalette) { | ||||
|          (*ctx->Driver.UpdateTexturePalette)( ctx, NULL ); | ||||
|       } | ||||
| @@ -284,96 +197,38 @@ _mesa_ColorSubTable( GLenum target, GLsizei start, | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_GetColorTable( GLenum target, GLenum format, | ||||
|                      GLenum type, GLvoid *table ) | ||||
| void gl_ColorSubTable( GLcontext *ctx, GLenum target, | ||||
|                        GLsizei start, struct gl_image *data ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; | ||||
|    struct gl_palette *palette; | ||||
|    GLubyte rgba[MAX_TEXTURE_PALETTE_SIZE][4]; | ||||
|    GLint i; | ||||
|    /* XXX TODO */ | ||||
|    gl_problem(ctx, "glColorSubTableEXT not implemented"); | ||||
|    (void) target; | ||||
|    (void) start; | ||||
|    (void) data; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| void gl_GetColorTable( GLcontext *ctx, GLenum target, GLenum format, | ||||
|                        GLenum type, GLvoid *table ) | ||||
| { | ||||
|    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetBooleanv"); | ||||
|  | ||||
|    switch (target) { | ||||
|       case GL_TEXTURE_1D: | ||||
|          palette = &texUnit->CurrentD[1]->Palette; | ||||
|          break; | ||||
|       case GL_TEXTURE_2D: | ||||
|          palette = &texUnit->CurrentD[2]->Palette; | ||||
|          break; | ||||
|       case GL_TEXTURE_3D: | ||||
|          palette = &texUnit->CurrentD[3]->Palette; | ||||
|       case GL_TEXTURE_3D_EXT: | ||||
|          break; | ||||
|       case GL_SHARED_TEXTURE_PALETTE_EXT: | ||||
|          palette = &ctx->Texture.Palette; | ||||
|          break; | ||||
|       default: | ||||
|          gl_error(ctx, GL_INVALID_ENUM, "glGetColorTable(target)"); | ||||
|          gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableEXT(target)"); | ||||
|          return; | ||||
|    } | ||||
|  | ||||
|    assert(palette); | ||||
|  | ||||
|    switch (palette->Format) { | ||||
|       case GL_ALPHA: | ||||
|          for (i = 0; i < palette->Size; i++) { | ||||
|             rgba[i][RCOMP] = 0; | ||||
|             rgba[i][GCOMP] = 0; | ||||
|             rgba[i][BCOMP] = 0; | ||||
|             rgba[i][ACOMP] = palette->Table[i]; | ||||
|          } | ||||
|          break; | ||||
|       case GL_LUMINANCE: | ||||
|          for (i = 0; i < palette->Size; i++) { | ||||
|             rgba[i][RCOMP] = palette->Table[i]; | ||||
|             rgba[i][GCOMP] = palette->Table[i]; | ||||
|             rgba[i][BCOMP] = palette->Table[i]; | ||||
|             rgba[i][ACOMP] = 255; | ||||
|          } | ||||
|          break; | ||||
|       case GL_LUMINANCE_ALPHA: | ||||
|          for (i = 0; i < palette->Size; i++) { | ||||
|             rgba[i][RCOMP] = palette->Table[i*2+0]; | ||||
|             rgba[i][GCOMP] = palette->Table[i*2+0]; | ||||
|             rgba[i][BCOMP] = palette->Table[i*2+0]; | ||||
|             rgba[i][ACOMP] = palette->Table[i*2+1]; | ||||
|          } | ||||
|          break; | ||||
|       case GL_INTENSITY: | ||||
|          for (i = 0; i < palette->Size; i++) { | ||||
|             rgba[i][RCOMP] = palette->Table[i]; | ||||
|             rgba[i][GCOMP] = palette->Table[i]; | ||||
|             rgba[i][BCOMP] = palette->Table[i]; | ||||
|             rgba[i][ACOMP] = 255; | ||||
|          } | ||||
|          break; | ||||
|       case GL_RGB: | ||||
|          for (i = 0; i < palette->Size; i++) { | ||||
|             rgba[i][RCOMP] = palette->Table[i*3+0]; | ||||
|             rgba[i][GCOMP] = palette->Table[i*3+1]; | ||||
|             rgba[i][BCOMP] = palette->Table[i*3+2]; | ||||
|             rgba[i][ACOMP] = 255; | ||||
|          } | ||||
|          break; | ||||
|       case GL_RGBA: | ||||
|          for (i = 0; i < palette->Size; i++) { | ||||
|             rgba[i][RCOMP] = palette->Table[i*4+0]; | ||||
|             rgba[i][GCOMP] = palette->Table[i*4+1]; | ||||
|             rgba[i][BCOMP] = palette->Table[i*4+2]; | ||||
|             rgba[i][ACOMP] = palette->Table[i*4+3]; | ||||
|          } | ||||
|          break; | ||||
|       default: | ||||
|          gl_problem(ctx, "bad palette format in glGetColorTable"); | ||||
|          return; | ||||
|    } | ||||
|  | ||||
|    gl_pack_rgba_span(ctx, palette->Size, (const GLubyte (*)[]) rgba, | ||||
|                      format, type, table, &ctx->Pack, GL_FALSE); | ||||
|  | ||||
|    gl_problem(ctx, "glGetColorTable not implemented!"); | ||||
|    gl_problem(ctx, "glGetColorTableEXT not implemented!"); | ||||
|    (void) format; | ||||
|    (void) type; | ||||
|    (void) table; | ||||
| @@ -381,37 +236,46 @@ _mesa_GetColorTable( GLenum target, GLenum format, | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_GetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) | ||||
| void gl_GetColorTableParameterfv( GLcontext *ctx, GLenum target, | ||||
|                                   GLenum pname, GLfloat *params ) | ||||
| { | ||||
|    GLint iparams[10]; | ||||
|    _mesa_GetColorTableParameteriv( target, pname, iparams ); | ||||
|  | ||||
|    gl_GetColorTableParameteriv( ctx, target, pname, iparams ); | ||||
|    *params = (GLfloat) iparams[0]; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) | ||||
| void gl_GetColorTableParameteriv( GLcontext *ctx, GLenum target, | ||||
|                                   GLenum pname, GLint *params ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; | ||||
|    struct gl_palette *palette; | ||||
|    struct gl_texture_object *texObj; | ||||
|  | ||||
|    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetColorTableParameter"); | ||||
|  | ||||
|    switch (target) { | ||||
|       case GL_TEXTURE_1D: | ||||
|          palette = &texUnit->CurrentD[1]->Palette; | ||||
|          texObj = texUnit->CurrentD[1]; | ||||
|          break; | ||||
|       case GL_TEXTURE_2D: | ||||
|          palette = &texUnit->CurrentD[2]->Palette; | ||||
|          texObj = texUnit->CurrentD[2]; | ||||
|          break; | ||||
|       case GL_TEXTURE_3D: | ||||
|          palette = &texUnit->CurrentD[3]->Palette; | ||||
|       case GL_TEXTURE_3D_EXT: | ||||
|          texObj = texUnit->CurrentD[3]; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_1D: | ||||
|          texObj = ctx->Texture.Proxy1D; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_2D: | ||||
|          texObj = ctx->Texture.Proxy2D; | ||||
|          break; | ||||
|       case GL_PROXY_TEXTURE_3D: | ||||
|          texObj = ctx->Texture.Proxy3D; | ||||
|          break; | ||||
|       case GL_SHARED_TEXTURE_PALETTE_EXT: | ||||
|          palette = &ctx->Texture.Palette; | ||||
|          texObj = NULL; | ||||
|          break; | ||||
|       default: | ||||
|          gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter(target)"); | ||||
| @@ -419,28 +283,34 @@ _mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) | ||||
|    } | ||||
|  | ||||
|    switch (pname) { | ||||
|       case GL_COLOR_TABLE_FORMAT: | ||||
|          *params = palette->IntFormat; | ||||
|       case GL_COLOR_TABLE_FORMAT_EXT: | ||||
|          if (texObj) | ||||
|             *params = texObj->PaletteIntFormat; | ||||
|          else | ||||
|             *params = ctx->Texture.PaletteIntFormat; | ||||
|          break; | ||||
|       case GL_COLOR_TABLE_WIDTH: | ||||
|          *params = palette->Size; | ||||
|       case GL_COLOR_TABLE_WIDTH_EXT: | ||||
|          if (texObj) | ||||
|             *params = texObj->PaletteSize; | ||||
|          else | ||||
|             *params = ctx->Texture.PaletteSize; | ||||
|          break; | ||||
|       case GL_COLOR_TABLE_RED_SIZE: | ||||
|       case GL_COLOR_TABLE_RED_SIZE_EXT: | ||||
|          *params = 8; | ||||
|          break; | ||||
|       case GL_COLOR_TABLE_GREEN_SIZE: | ||||
|       case GL_COLOR_TABLE_GREEN_SIZE_EXT: | ||||
|          *params = 8; | ||||
|          break; | ||||
|       case GL_COLOR_TABLE_BLUE_SIZE: | ||||
|       case GL_COLOR_TABLE_BLUE_SIZE_EXT: | ||||
|          *params = 8; | ||||
|          break; | ||||
|       case GL_COLOR_TABLE_ALPHA_SIZE: | ||||
|       case GL_COLOR_TABLE_ALPHA_SIZE_EXT: | ||||
|          *params = 8; | ||||
|          break; | ||||
|       case GL_COLOR_TABLE_LUMINANCE_SIZE: | ||||
|       case GL_COLOR_TABLE_LUMINANCE_SIZE_EXT: | ||||
|          *params = 8; | ||||
|          break; | ||||
|       case GL_COLOR_TABLE_INTENSITY_SIZE: | ||||
|       case GL_COLOR_TABLE_INTENSITY_SIZE_EXT: | ||||
|          *params = 8; | ||||
|          break; | ||||
|       default: | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* $Id: context.c,v 1.19 1999/11/11 01:22:25 brianp Exp $ */ | ||||
| /* $Id: context.c,v 1.18.2.8 2000/03/06 16:59:26 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Version:  3.1 | ||||
|  * | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  * | ||||
| @@ -25,6 +25,8 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* $XFree86: xc/lib/GL/mesa/src/context.c,v 1.4 1999/04/04 00:20:21 dawes Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * If multi-threading is enabled (-DTHREADS) then each thread has it's | ||||
|  * own rendering context.  A thread obtains the pointer to its GLcontext | ||||
| @@ -34,34 +36,43 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #ifndef XFree86Server | ||||
| #include <assert.h> | ||||
| #include <math.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #else | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "accum.h" | ||||
| #include "alphabuf.h" | ||||
| #include "api.h" | ||||
| #include "clip.h" | ||||
| #include "context.h" | ||||
| #include "cva.h" | ||||
| #include "depth.h" | ||||
| #include "dispatch.h" | ||||
| #include "dlist.h" | ||||
| #include "eval.h" | ||||
| #include "enums.h" | ||||
| #include "extensions.h" | ||||
| #include "fog.h" | ||||
| #include "glapi.h" | ||||
| #include "get.h" | ||||
| #include "hash.h" | ||||
| #include "light.h" | ||||
| #include "lines.h" | ||||
| #include "dlist.h" | ||||
| #include "macros.h" | ||||
| #include "matrix.h" | ||||
| #include "mem.h" | ||||
| #include "mmath.h" | ||||
| #include "pb.h" | ||||
| #include "pipeline.h" | ||||
| #include "points.h" | ||||
| #include "pointers.h" | ||||
| #include "quads.h" | ||||
| #include "shade.h" | ||||
| #include "simple_list.h" | ||||
| @@ -85,6 +96,40 @@ | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Memory allocation functions.  Called via the MALLOC, CALLOC and | ||||
|  * FREE macros when DEBUG symbol is defined. | ||||
|  * You might want to set breakpoints on these functions or plug in | ||||
|  * other memory allocation functions.  The Mesa sources should only | ||||
|  * use the MALLOC and FREE macros (which could also be overriden). | ||||
|  * | ||||
|  * XXX these functions should probably go into a new glmemory.c file. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * Allocate memory (uninitialized) | ||||
|  */ | ||||
| void *gl_malloc(size_t bytes) | ||||
| { | ||||
|    return malloc(bytes); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Allocate memory and initialize to zero. | ||||
|  */ | ||||
| void *gl_calloc(size_t bytes) | ||||
| { | ||||
|    return calloc(1, bytes); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Free memory | ||||
|  */ | ||||
| void gl_free(void *ptr) | ||||
| { | ||||
|    free(ptr); | ||||
| } | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                  Context and Thread management             *****/ | ||||
| @@ -113,7 +158,7 @@ static void set_thread_context( GLcontext *ctx ) { | ||||
| #else | ||||
|  | ||||
| /* One Current Context pointer for all threads in the address space */ | ||||
| GLcontext *_mesa_current_context = NULL; | ||||
| GLcontext *CC = NULL; | ||||
| struct immediate *CURRENT_INPUT = NULL; | ||||
|  | ||||
| #endif /*THREADS*/ | ||||
| @@ -322,9 +367,9 @@ static struct gl_shared_state *alloc_shared_state( void ) | ||||
|    if (!ss) | ||||
|       return NULL; | ||||
|  | ||||
|    ss->DisplayList = NewHashTable(); | ||||
|    ss->DisplayList = _mesa_NewHashTable(); | ||||
|  | ||||
|    ss->TexObjects = NewHashTable(); | ||||
|    ss->TexObjects = _mesa_NewHashTable(); | ||||
|  | ||||
|    /* Default Texture objects */ | ||||
|    outOfMemory = GL_FALSE; | ||||
| @@ -340,9 +385,9 @@ static struct gl_shared_state *alloc_shared_state( void ) | ||||
|    if (!ss->DisplayList || !ss->TexObjects || outOfMemory) { | ||||
|       /* Ran out of memory at some point.  Free everything and return NULL */ | ||||
|       if (ss->DisplayList) | ||||
|          DeleteHashTable(ss->DisplayList); | ||||
|          _mesa_DeleteHashTable(ss->DisplayList); | ||||
|       if (ss->TexObjects) | ||||
|          DeleteHashTable(ss->TexObjects); | ||||
|          _mesa_DeleteHashTable(ss->TexObjects); | ||||
|       if (ss->DefaultD[1]) | ||||
|          gl_free_texture_object(ss, ss->DefaultD[1]); | ||||
|       if (ss->DefaultD[2]) | ||||
| @@ -365,7 +410,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss ) | ||||
| { | ||||
|    /* Free display lists */ | ||||
|    while (1) { | ||||
|       GLuint list = HashFirstEntry(ss->DisplayList); | ||||
|       GLuint list = _mesa_HashFirstEntry(ss->DisplayList); | ||||
|       if (list) { | ||||
|          gl_destroy_list(ctx, list); | ||||
|       } | ||||
| @@ -373,7 +418,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss ) | ||||
|          break; | ||||
|       } | ||||
|    } | ||||
|    DeleteHashTable(ss->DisplayList); | ||||
|    _mesa_DeleteHashTable(ss->DisplayList); | ||||
|  | ||||
|    /* Free texture objects */ | ||||
|    while (ss->TexObjectList) | ||||
| @@ -383,7 +428,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss ) | ||||
|       /* this function removes from linked list too! */ | ||||
|       gl_free_texture_object(ss, ss->TexObjectList); | ||||
|    } | ||||
|    DeleteHashTable(ss->TexObjects); | ||||
|    _mesa_DeleteHashTable(ss->TexObjects); | ||||
|  | ||||
|    FREE(ss); | ||||
| } | ||||
| @@ -534,6 +579,7 @@ static void init_1d_map( struct gl_1d_map *map, int n, const float *initial ) | ||||
|       for (i=0;i<n;i++) | ||||
|          map->Points[i] = initial[i]; | ||||
|    } | ||||
|    map->Retain = GL_FALSE; | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -552,20 +598,10 @@ static void init_2d_map( struct gl_2d_map *map, int n, const float *initial ) | ||||
|       for (i=0;i<n;i++) | ||||
|          map->Points[i] = initial[i]; | ||||
|    } | ||||
|    map->Retain = GL_FALSE; | ||||
| } | ||||
|  | ||||
|  | ||||
| static void init_palette( struct gl_palette *p ) | ||||
| { | ||||
|    p->Table[0] = 255; | ||||
|    p->Table[1] = 255; | ||||
|    p->Table[2] = 255; | ||||
|    p->Table[3] = 255; | ||||
|    p->Size = 1; | ||||
|    p->IntFormat = GL_RGBA; | ||||
|    p->Format = GL_RGBA; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Initialize a gl_context structure to default values. | ||||
| @@ -586,7 +622,7 @@ static void initialize_context( GLcontext *ctx ) | ||||
|       gl_matrix_alloc_inv( &ctx->ModelView ); | ||||
|  | ||||
|       ctx->ModelViewStackDepth = 0; | ||||
|       for (i = 0 ; i < MAX_MODELVIEW_STACK_DEPTH ; i++) { | ||||
|       for (i = 0; i < MAX_MODELVIEW_STACK_DEPTH - 1; i++) { | ||||
| 	 gl_matrix_ctr( &ctx->ModelViewStack[i] ); | ||||
| 	 gl_matrix_alloc_inv( &ctx->ModelViewStack[i] ); | ||||
|       } | ||||
| @@ -603,16 +639,16 @@ static void initialize_context( GLcontext *ctx ) | ||||
|       ctx->NearFarStack[0][0] = 1.0; /* These values seem weird by make */ | ||||
|       ctx->NearFarStack[0][1] = 0.0; /* sense mathematically. */ | ||||
|  | ||||
|       for (i = 0 ; i < MAX_PROJECTION_STACK_DEPTH ; i++) { | ||||
|       for (i = 0; i < MAX_PROJECTION_STACK_DEPTH - 1; i++) { | ||||
| 	 gl_matrix_ctr( &ctx->ProjectionStack[i] ); | ||||
| 	 gl_matrix_alloc_inv( &ctx->ProjectionStack[i] ); | ||||
|       } | ||||
|  | ||||
|       /* Texture matrix */ | ||||
|       for (i=0; i<MAX_TEXTURE_UNITS; i++) { | ||||
|       for (i = 0; i < MAX_TEXTURE_UNITS; i++) { | ||||
| 	 gl_matrix_ctr( &ctx->TextureMatrix[i] ); | ||||
| 	 ctx->TextureStackDepth[i] = 0; | ||||
| 	 for (j = 0 ; j < MAX_TEXTURE_STACK_DEPTH ; j++) { | ||||
| 	 for (j = 0; j < MAX_TEXTURE_STACK_DEPTH - 1; j++) { | ||||
| 	    ctx->TextureStack[i][j].inv = 0; | ||||
| 	 } | ||||
|       } | ||||
| @@ -882,9 +918,9 @@ static void initialize_context( GLcontext *ctx ) | ||||
|       ctx->Stencil.ZPassFunc = GL_KEEP; | ||||
|       ctx->Stencil.ZFailFunc = GL_KEEP; | ||||
|       ctx->Stencil.Ref = 0; | ||||
|       ctx->Stencil.ValueMask = 0xff; | ||||
|       ctx->Stencil.ValueMask = STENCIL_MAX; | ||||
|       ctx->Stencil.Clear = 0; | ||||
|       ctx->Stencil.WriteMask = 0xff; | ||||
|       ctx->Stencil.WriteMask = STENCIL_MAX; | ||||
|  | ||||
|       /* Texture group */ | ||||
|       ctx->Texture.CurrentUnit = 0;      /* multitexture */ | ||||
| @@ -894,7 +930,14 @@ static void initialize_context( GLcontext *ctx ) | ||||
|       for (i=0; i<MAX_TEXTURE_UNITS; i++) | ||||
|          init_texture_unit( ctx, i ); | ||||
|  | ||||
|       init_palette(&ctx->Texture.Palette); | ||||
|       ctx->Texture.SharedPalette = GL_FALSE; | ||||
|       ctx->Texture.Palette[0] = 255; | ||||
|       ctx->Texture.Palette[1] = 255; | ||||
|       ctx->Texture.Palette[2] = 255; | ||||
|       ctx->Texture.Palette[3] = 255; | ||||
|       ctx->Texture.PaletteSize = 1; | ||||
|       ctx->Texture.PaletteIntFormat = GL_RGBA; | ||||
|       ctx->Texture.PaletteFormat = GL_RGBA; | ||||
|  | ||||
|       /* Transformation group */ | ||||
|       ctx->Transform.MatrixMode = GL_MODELVIEW; | ||||
| @@ -1028,6 +1071,7 @@ static void initialize_context( GLcontext *ctx ) | ||||
|  | ||||
|       /* For debug/development only */ | ||||
|       ctx->NoRaster = getenv("MESA_NO_RASTER") ? GL_TRUE : GL_FALSE; | ||||
|       ctx->FirstTimeCurrent = GL_TRUE; | ||||
|  | ||||
|       /* Dither disable */ | ||||
|       ctx->NoDither = getenv("MESA_NO_DITHER") ? GL_TRUE : GL_FALSE; | ||||
| @@ -1289,10 +1333,12 @@ GLcontext *gl_create_context( GLvisual *visual, | ||||
|    ctx->Driver.ReadDepthSpanFloat = gl_read_depth_span_float; | ||||
|    ctx->Driver.ReadDepthSpanInt = gl_read_depth_span_int; | ||||
|  | ||||
|     | ||||
| #ifdef PROFILE | ||||
|    init_timings( ctx ); | ||||
| #endif | ||||
|  | ||||
| #ifdef GL_VERSION_1_1 | ||||
|    if (!alloc_proxy_textures(ctx)) { | ||||
|       free_shared_state(ctx, ctx->Shared); | ||||
|       FREE(ctx->VB); | ||||
| @@ -1300,11 +1346,10 @@ GLcontext *gl_create_context( GLvisual *visual, | ||||
|       FREE(ctx); | ||||
|       return NULL; | ||||
|    } | ||||
| #endif | ||||
|  | ||||
|    /* setup API dispatch tables */ | ||||
|    _mesa_init_exec_table( &ctx->Exec ); | ||||
|    _mesa_init_dlist_table( &ctx->Save ); | ||||
|    ctx->CurrentDispatch = &ctx->Exec; | ||||
|    gl_init_api_function_pointers( ctx ); | ||||
|    ctx->API = ctx->Exec;   /* GL_EXECUTE is default */ | ||||
|  | ||||
|    return ctx; | ||||
| } | ||||
| @@ -1325,9 +1370,8 @@ void gl_context_initialize( GLcontext *ctx ) | ||||
| void gl_destroy_context( GLcontext *ctx ) | ||||
| { | ||||
|    if (ctx) { | ||||
|  | ||||
|       GLuint i; | ||||
|       struct gl_shine_tab *s, *tmps; | ||||
|       GLuint i, j; | ||||
|  | ||||
| #ifdef PROFILE | ||||
|       if (getenv("MESA_PROFILE")) { | ||||
| @@ -1336,13 +1380,19 @@ void gl_destroy_context( GLcontext *ctx ) | ||||
| #endif | ||||
|  | ||||
|       gl_matrix_dtr( &ctx->ModelView ); | ||||
|       for (i = 0 ; i < MAX_MODELVIEW_STACK_DEPTH ; i++) { | ||||
|       for (i = 0 ; i < MAX_MODELVIEW_STACK_DEPTH - 1; i++) { | ||||
| 	 gl_matrix_dtr( &ctx->ModelViewStack[i] ); | ||||
|       } | ||||
|       gl_matrix_dtr( &ctx->ProjectionMatrix ); | ||||
|       for (i = 0 ; i < MAX_PROJECTION_STACK_DEPTH ; i++) { | ||||
|       for (i = 0 ; i < MAX_PROJECTION_STACK_DEPTH - 1; i++) { | ||||
| 	 gl_matrix_dtr( &ctx->ProjectionStack[i] ); | ||||
|       } | ||||
|       for (i = 0; i < MAX_TEXTURE_UNITS; i++) { | ||||
| 	 gl_matrix_dtr( &ctx->TextureMatrix[i] ); | ||||
| 	 for (j = 0; j < MAX_TEXTURE_STACK_DEPTH - 1; j++) { | ||||
| 	    gl_matrix_dtr( &ctx->TextureStack[i][j] ); | ||||
| 	 } | ||||
|       } | ||||
|  | ||||
|       FREE( ctx->PB ); | ||||
|  | ||||
| @@ -1418,8 +1468,8 @@ void gl_destroy_context( GLcontext *ctx ) | ||||
|       FREE( (void *) ctx ); | ||||
|  | ||||
| #ifndef THREADS | ||||
|       if (ctx == _mesa_current_context) { | ||||
|          _mesa_current_context = NULL; | ||||
|       if (ctx==CC) { | ||||
|          CC = NULL; | ||||
| 	 CURRENT_INPUT = NULL; | ||||
|       } | ||||
| #endif | ||||
| @@ -1488,42 +1538,52 @@ void gl_destroy_framebuffer( GLframebuffer *buffer ) | ||||
| /* | ||||
|  * Set the current context, binding the given frame buffer to the context. | ||||
|  */ | ||||
| void gl_make_current( GLcontext *newCtx, GLframebuffer *buffer ) | ||||
| void gl_make_current( GLcontext *ctx, GLframebuffer *buffer ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(oldCtx); | ||||
|    GET_CONTEXT; | ||||
|  | ||||
|    /* Flush the old context | ||||
|     */ | ||||
|    if (oldCtx) { | ||||
|       ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(oldCtx, "gl_make_current"); | ||||
|    if (CC) { | ||||
|       ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(CC, "gl_make_current"); | ||||
|    } | ||||
|  | ||||
| #ifdef THREADS | ||||
|    /* TODO: unbind old buffer from context? */ | ||||
|    set_thread_context( newCtx ); | ||||
|    set_thread_context( ctx ); | ||||
| #else | ||||
|    if (oldCtx && oldCtx->Buffer) { | ||||
|    if (CC && CC->Buffer) { | ||||
|       /* unbind frame buffer from context */ | ||||
|       oldCtx->Buffer = NULL; | ||||
|       CC->Buffer = NULL; | ||||
|    } | ||||
|    _mesa_current_context = newCtx; | ||||
|    if (newCtx) { | ||||
|       SET_IMMEDIATE(newCtx, newCtx->input); | ||||
|    CC = ctx; | ||||
|    if (ctx) { | ||||
|       SET_IMMEDIATE(ctx, ctx->input); | ||||
|    } | ||||
| #endif | ||||
|  | ||||
|    if (newCtx) | ||||
|       _glapi_set_dispatch(newCtx->CurrentDispatch); | ||||
|    else | ||||
|       _glapi_set_dispatch(NULL);  /* none current */ | ||||
|  | ||||
|    if (MESA_VERBOSE) fprintf(stderr, "gl_make_current()\n"); | ||||
|  | ||||
|    if (newCtx && buffer) { | ||||
|       /* TODO: check if newCtx and buffer's visual match??? */ | ||||
|       newCtx->Buffer = buffer;      /* Bind the frame buffer to the context */ | ||||
|       newCtx->NewState = NEW_ALL;   /* just to be safe */ | ||||
|       gl_update_state( newCtx ); | ||||
|    if (ctx && buffer) { | ||||
|       /* TODO: check if ctx and buffer's visual match??? */ | ||||
|       ctx->Buffer = buffer;      /* Bind the frame buffer to the context */ | ||||
|       ctx->NewState = NEW_ALL;   /* just to be safe */ | ||||
|       gl_update_state( ctx ); | ||||
|    } | ||||
|  | ||||
|    /* We can use this to help debug user's problems.  Tell the to set | ||||
|     * the MESA_INFO env variable before running their app.  Then the | ||||
|     * first time each context is made current we'll print some useful | ||||
|     * information. | ||||
|     */ | ||||
|    if (ctx && ctx->FirstTimeCurrent) { | ||||
|       if (getenv("MESA_INFO")) { | ||||
|          fprintf(stderr, "Mesa GL_VERSION = %s\n", (char *) gl_GetString(ctx, GL_VERSION)); | ||||
|          fprintf(stderr, "Mesa GL_RENDERER = %s\n", (char *) gl_GetString(ctx, GL_RENDERER)); | ||||
|          fprintf(stderr, "Mesa GL_VENDOR = %s\n", (char *) gl_GetString(ctx, GL_VENDOR)); | ||||
|          fprintf(stderr, "Mesa GL_EXTENSIONS = %s\n", (char *) gl_GetString(ctx, GL_EXTENSIONS)); | ||||
|       } | ||||
|       ctx->FirstTimeCurrent = GL_FALSE; | ||||
|    } | ||||
| } | ||||
|  | ||||
| @@ -1536,7 +1596,7 @@ GLcontext *gl_get_current_context( void ) | ||||
| #ifdef THREADS | ||||
|    return gl_get_thread_context(); | ||||
| #else | ||||
|    return _mesa_current_context; | ||||
|    return CC; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| @@ -1620,73 +1680,26 @@ void gl_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask ) | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * This should be called by device drivers just before they do a | ||||
|  * swapbuffers.  Any pending rendering commands will be executed. | ||||
|  */ | ||||
| void | ||||
| _mesa_swapbuffers(GLcontext *ctx) | ||||
| { | ||||
|    FLUSH_VB( ctx, "swap buffers" ); | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Return pointer to this context's current API dispatch table. | ||||
|  * It'll either be the immediate-mode execute dispatcher or the | ||||
|  * display list compile dispatcher. | ||||
|  * Someday a GLS library or OpenGL-like debugger may call this function | ||||
|  * to register it's own set of API entry points. | ||||
|  * Input: ctx - the context to set API pointers for | ||||
|  *        api - if NULL, restore original API pointers | ||||
|  *              else, set API function table to this table. | ||||
|  */ | ||||
| struct _glapi_table * | ||||
| _mesa_get_dispatch(GLcontext *ctx) | ||||
| void gl_set_api_table( GLcontext *ctx, const struct gl_api_table *api ) | ||||
| { | ||||
|    return ctx->CurrentDispatch; | ||||
|    if (api) { | ||||
|       MEMCPY( &ctx->API, api, sizeof(struct gl_api_table) ); | ||||
|    } | ||||
|    else { | ||||
|       MEMCPY( &ctx->API, &ctx->Exec, sizeof(struct gl_api_table) ); | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| void | ||||
| _mesa_ResizeBuffersMESA( void ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|  | ||||
|    GLuint buf_width, buf_height; | ||||
|  | ||||
|    if (MESA_VERBOSE & VERBOSE_API) | ||||
|       fprintf(stderr, "glResizeBuffersMESA\n"); | ||||
|  | ||||
|    /* ask device driver for size of output buffer */ | ||||
|    (*ctx->Driver.GetBufferSize)( ctx, &buf_width, &buf_height ); | ||||
|  | ||||
|    /* see if size of device driver's color buffer (window) has changed */ | ||||
|    if (ctx->Buffer->Width == (GLint) buf_width && | ||||
|        ctx->Buffer->Height == (GLint) buf_height) | ||||
|       return; | ||||
|  | ||||
|    ctx->NewState |= NEW_RASTER_OPS;  /* to update scissor / window bounds */ | ||||
|  | ||||
|    /* save buffer size */ | ||||
|    ctx->Buffer->Width = buf_width; | ||||
|    ctx->Buffer->Height = buf_height; | ||||
|  | ||||
|    /* Reallocate other buffers if needed. */ | ||||
|    if (ctx->Visual->DepthBits>0) { | ||||
|       /* reallocate depth buffer */ | ||||
|       (*ctx->Driver.AllocDepthBuffer)( ctx ); | ||||
|    } | ||||
|    if (ctx->Visual->StencilBits>0) { | ||||
|       /* reallocate stencil buffer */ | ||||
|       gl_alloc_stencil_buffer( ctx ); | ||||
|    } | ||||
|    if (ctx->Visual->AccumBits>0) { | ||||
|       /* reallocate accum buffer */ | ||||
|       gl_alloc_accum_buffer( ctx ); | ||||
|    } | ||||
|    if (ctx->Visual->SoftwareAlpha) { | ||||
|       gl_alloc_alpha_buffers( ctx ); | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                Miscellaneous functions                     *****/ | ||||
| @@ -1809,6 +1822,66 @@ void gl_error( GLcontext *ctx, GLenum error, const char *s ) | ||||
|  | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Execute a glGetError command | ||||
|  */ | ||||
| GLenum gl_GetError( GLcontext *ctx ) | ||||
| { | ||||
|    GLenum e = ctx->ErrorValue; | ||||
|  | ||||
|    ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx, "glGetError", (GLenum) 0); | ||||
|  | ||||
|    if (MESA_VERBOSE & VERBOSE_API) | ||||
|       fprintf(stderr, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e)); | ||||
|  | ||||
|    ctx->ErrorValue = (GLenum) GL_NO_ERROR; | ||||
|    return e; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| void gl_ResizeBuffersMESA( GLcontext *ctx ) | ||||
| { | ||||
|    GLuint buf_width, buf_height; | ||||
|  | ||||
|    if (MESA_VERBOSE & VERBOSE_API) | ||||
|       fprintf(stderr, "glResizeBuffersMESA\n"); | ||||
|  | ||||
|    /* ask device driver for size of output buffer */ | ||||
|    (*ctx->Driver.GetBufferSize)( ctx, &buf_width, &buf_height ); | ||||
|  | ||||
|    /* see if size of device driver's color buffer (window) has changed */ | ||||
|    if (ctx->Buffer->Width == (GLint) buf_width && | ||||
|        ctx->Buffer->Height == (GLint) buf_height) | ||||
|       return; | ||||
|  | ||||
|    ctx->NewState |= NEW_RASTER_OPS;  /* to update scissor / window bounds */ | ||||
|  | ||||
|    /* save buffer size */ | ||||
|    ctx->Buffer->Width = buf_width; | ||||
|    ctx->Buffer->Height = buf_height; | ||||
|  | ||||
|    /* Reallocate other buffers if needed. */ | ||||
|    if (ctx->Visual->DepthBits>0) { | ||||
|       /* reallocate depth buffer */ | ||||
|       (*ctx->Driver.AllocDepthBuffer)( ctx ); | ||||
|    } | ||||
|    if (ctx->Visual->StencilBits>0) { | ||||
|       /* reallocate stencil buffer */ | ||||
|       gl_alloc_stencil_buffer( ctx ); | ||||
|    } | ||||
|    if (ctx->Visual->AccumBits>0) { | ||||
|       /* reallocate accum buffer */ | ||||
|       gl_alloc_accum_buffer( ctx ); | ||||
|    } | ||||
|    if (ctx->Visual->SoftwareAlpha) { | ||||
|       gl_alloc_alpha_buffers( ctx ); | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /**********************************************************************/ | ||||
| /*****                   State update logic                       *****/ | ||||
| /**********************************************************************/ | ||||
| @@ -1925,21 +1998,17 @@ static void update_pixel_masking( GLcontext *ctx ) | ||||
| static void update_fog_mode( GLcontext *ctx ) | ||||
| { | ||||
|    int old_mode = ctx->FogMode; | ||||
|    ctx->FogMode = FOG_NONE; | ||||
|  | ||||
|    if (ctx->Fog.Enabled) { | ||||
|       if (ctx->Texture.Enabled) | ||||
|          ctx->FogMode = FOG_FRAGMENT; | ||||
|       else if (ctx->Hint.Fog == GL_NICEST) | ||||
|          ctx->FogMode = FOG_FRAGMENT; | ||||
|       else | ||||
|          ctx->FogMode = FOG_VERTEX; | ||||
|       ctx->FogMode = FOG_VERTEX; | ||||
|  | ||||
|       if (ctx->Driver.GetParameteri) | ||||
|          if ((ctx->Driver.GetParameteri)( ctx, DD_HAVE_HARDWARE_FOG )) | ||||
|             ctx->FogMode = FOG_FRAGMENT; | ||||
|    } | ||||
|    else { | ||||
|       ctx->FogMode = FOG_NONE; | ||||
|       if (ctx->Texture.Enabled || ctx->Hint.Fog == GL_NICEST) | ||||
| 	 ctx->FogMode = FOG_FRAGMENT; | ||||
|  | ||||
|       if ( ctx->Driver.GetParameteri &&  | ||||
| 	   ctx->Driver.GetParameteri( ctx, DD_HAVE_HARDWARE_FOG ) ) | ||||
| 	 ctx->FogMode = FOG_FRAGMENT; | ||||
|    } | ||||
|     | ||||
|    if (old_mode != ctx->FogMode) | ||||
| @@ -2078,14 +2147,6 @@ void gl_update_state( GLcontext *ctx ) | ||||
|       ctx->Texture.Unit[1].LastEnvMode = ctx->Texture.Unit[1].EnvMode; | ||||
|    } | ||||
|  | ||||
|    if ((ctx->NewState & ~(NEW_CLIENT_STATE|NEW_TEXTURE_ENABLE)) == 0) { | ||||
|  | ||||
|       if (MESA_VERBOSE&VERBOSE_STATE) | ||||
| 	 fprintf(stderr, "update_state: goto finished\n"); | ||||
|  | ||||
|       goto finished; | ||||
|    } | ||||
|  | ||||
|    if (ctx->NewState & NEW_TEXTURE_MATRIX) { | ||||
|       ctx->Enabled &= ~(ENABLE_TEXMAT0|ENABLE_TEXMAT1); | ||||
|  | ||||
| @@ -2102,7 +2163,7 @@ void gl_update_state( GLcontext *ctx ) | ||||
|       } | ||||
|    } | ||||
|  | ||||
|    if (ctx->NewState & NEW_TEXTURING) { | ||||
|    if (ctx->NewState & (NEW_TEXTURING | NEW_TEXTURE_ENABLE)) { | ||||
|       ctx->Texture.NeedNormals = GL_FALSE; | ||||
|       gl_update_dirty_texobjs(ctx); | ||||
|       ctx->Enabled &= ~(ENABLE_TEXGEN0|ENABLE_TEXGEN1); | ||||
| @@ -2264,7 +2325,7 @@ void gl_update_state( GLcontext *ctx ) | ||||
|       } | ||||
|    } | ||||
|  | ||||
|    if (ctx->NewState & ~(NEW_CLIENT_STATE|NEW_TEXTURE_ENABLE| | ||||
|    if (ctx->NewState & ~(NEW_CLIENT_STATE| | ||||
| 			 NEW_DRIVER_STATE|NEW_USER_CLIP| | ||||
| 			 NEW_POLYGON)) | ||||
|       gl_update_clipmask(ctx); | ||||
| @@ -2272,6 +2333,7 @@ void gl_update_state( GLcontext *ctx ) | ||||
|    if (ctx->NewState & (NEW_LIGHTING| | ||||
| 			NEW_RASTER_OPS| | ||||
| 			NEW_TEXTURING| | ||||
| 			NEW_TEXTURE_ENABLE| | ||||
| 			NEW_TEXTURE_ENV| | ||||
| 			NEW_POLYGON| | ||||
| 			NEW_DRVSTATE0| | ||||
| @@ -2367,7 +2429,7 @@ void gl_update_state( GLcontext *ctx ) | ||||
|       oldnorm = ctx->NeedEyeNormals; | ||||
|  | ||||
|       ctx->NeedNormals = (ctx->Light.Enabled || ctx->Texture.NeedNormals); | ||||
|       ctx->NeedEyeCoords = ((ctx->Fog.Enabled && ctx->Hint.Fog != GL_NICEST) || | ||||
|       ctx->NeedEyeCoords = (ctx->FogMode == FOG_VERTEX || | ||||
| 			    ctx->Point.Attenuated); | ||||
|       ctx->NeedEyeNormals = GL_FALSE; | ||||
|  | ||||
| @@ -2423,7 +2485,6 @@ void gl_update_state( GLcontext *ctx ) | ||||
|       gl_update_normal_transform( ctx ); | ||||
|    } | ||||
|  | ||||
|  finished: | ||||
|    gl_update_pipelines(ctx); | ||||
|    ctx->NewState = 0; | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: dd.h,v 1.4 1999/10/21 12:46:27 brianp Exp $ */ | ||||
| /* $Id: dd.h,v 1.4.2.1 1999/12/12 18:30:47 keithw Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -659,6 +659,7 @@ struct dd_function_table { | ||||
|    void (*Lightfv)(GLcontext *ctx, GLenum light, | ||||
| 		   GLenum pname, const GLfloat *params, GLint nparams ); | ||||
|    void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params); | ||||
|    void (*LogicOpcode)(GLcontext *ctx, GLenum opcode); | ||||
|    void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode); | ||||
|    void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); | ||||
|    void (*ShadeModel)(GLcontext *ctx, GLenum mode); | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,8 +1,8 @@ | ||||
| /* $Id: drawpix.c,v 1.6 1999/11/11 01:22:26 brianp Exp $ */ | ||||
| /* $Id: drawpix.c,v 1.5.2.2 2000/02/22 18:10:43 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Version:  3.1 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  *  | ||||
| @@ -25,10 +25,19 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #ifndef XFree86Server | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #else | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "context.h" | ||||
| #include "drawpix.h" | ||||
| #include "feedback.h" | ||||
| @@ -44,16 +53,23 @@ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* TODO:  apply texture mapping to fragments */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Try to do a fast and simple RGB(a) glDrawPixels. | ||||
|  * Try to do a fast glDrawPixels.  Conditions include: | ||||
|  *   not using a display list | ||||
|  *   simple pixel unpacking | ||||
|  *   no raster ops | ||||
|  *   etc.... | ||||
|  * Return:  GL_TRUE if success, GL_FALSE if slow path must be used instead | ||||
|  */ | ||||
| static GLboolean | ||||
| simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                    GLsizei width, GLsizei height, GLenum format, GLenum type, | ||||
|                    const GLvoid *pixels ) | ||||
| GLboolean gl_direct_DrawPixels( GLcontext *ctx, | ||||
|                                 const struct gl_pixelstore_attrib *unpack, | ||||
|                                 GLsizei width, GLsizei height, | ||||
|                                 GLenum format, GLenum type, | ||||
|                                 const GLvoid *pixels ) | ||||
| { | ||||
|    const struct gl_pixelstore_attrib *unpack = &ctx->Unpack; | ||||
|    GLubyte rgb[MAX_WIDTH][3]; | ||||
|    GLubyte rgba[MAX_WIDTH][4]; | ||||
|  | ||||
| @@ -61,6 +77,9 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | ||||
| 						  GL_FALSE); | ||||
|  | ||||
|  | ||||
|    if (ctx->RenderMode != GL_RENDER) | ||||
|       return GL_FALSE; | ||||
|  | ||||
|    if (!ctx->Current.RasterPosValid) { | ||||
|       /* no-op */ | ||||
|       return GL_TRUE; | ||||
| @@ -71,10 +90,12 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | ||||
|    } | ||||
|  | ||||
|    /* see if device driver can do the drawpix */ | ||||
|    if (ctx->Driver.DrawPixels | ||||
|        && (*ctx->Driver.DrawPixels)(ctx, x, y, width, height, format, type, | ||||
|                                     unpack, pixels)) { | ||||
|       return GL_TRUE; | ||||
|    if (ctx->Driver.DrawPixels) { | ||||
|       GLint x = (GLint) (ctx->Current.RasterPos[0] + 0.5F); | ||||
|       GLint y = (GLint) (ctx->Current.RasterPos[1] + 0.5F); | ||||
|       if ((*ctx->Driver.DrawPixels)(ctx, x, y, width, height, format, type, | ||||
|                                     unpack, pixels)) | ||||
|          return GL_TRUE; | ||||
|    } | ||||
|  | ||||
|    if ((ctx->RasterMask&(~(SCISSOR_BIT|WINCLIP_BIT)))==0 | ||||
| @@ -88,8 +109,8 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | ||||
|        && !unpack->SwapBytes | ||||
|        && !unpack->LsbFirst) { | ||||
|  | ||||
|       GLint destX = x; | ||||
|       GLint destY = y; | ||||
|       GLint destX = (GLint) (ctx->Current.RasterPos[0] + 0.5F); | ||||
|       GLint destY = (GLint) (ctx->Current.RasterPos[1] + 0.5F); | ||||
|       GLint drawWidth = width;           /* actual width drawn */ | ||||
|       GLint drawHeight = height;         /* actual height drawn */ | ||||
|       GLint skipPixels = unpack->SkipPixels; | ||||
| @@ -346,9 +367,10 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | ||||
|          return GL_FALSE; | ||||
|       } | ||||
|    } | ||||
|  | ||||
|    /* can't do a simple draw, have to use slow path */ | ||||
|    return GL_FALSE; | ||||
|    else { | ||||
|       /* can't do direct render, have to use slow path */ | ||||
|       return GL_FALSE; | ||||
|    } | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -356,43 +378,99 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | ||||
| /* | ||||
|  * Do glDrawPixels of index pixels. | ||||
|  */ | ||||
| static void | ||||
| draw_index_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                    GLsizei width, GLsizei height, | ||||
|                    GLenum type, const GLvoid *pixels ) | ||||
| static void draw_index_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                                const struct gl_image *image ) | ||||
| { | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|    GLint width, height, widthInBytes; | ||||
|    const GLint desty = y; | ||||
|    GLint row, drawWidth; | ||||
|    GLint i, j; | ||||
|    GLdepth zspan[MAX_WIDTH]; | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|  | ||||
|    drawWidth = (width > MAX_WIDTH) ? MAX_WIDTH : width; | ||||
|    assert(image); | ||||
|    assert(image->Format == GL_COLOR_INDEX); | ||||
|  | ||||
|    width = image->Width; | ||||
|    height = image->Height; | ||||
|    if (image->Type == GL_BITMAP) | ||||
|       widthInBytes = (width + 7) / 8; | ||||
|    else | ||||
|       widthInBytes = width; | ||||
|  | ||||
|    /* Fragment depth values */ | ||||
|    if (ctx->Depth.Test) { | ||||
|    if (ctx->Depth.Test || ctx->Fog.Enabled) { | ||||
|       GLdepth zval = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE); | ||||
|       GLint i; | ||||
|       for (i = 0; i < drawWidth; i++) { | ||||
|       for (i=0;i<width;i++) { | ||||
| 	 zspan[i] = zval; | ||||
|       } | ||||
|    } | ||||
|  | ||||
|    /* | ||||
|     * General solution | ||||
|     */ | ||||
|    for (row = 0; row < height; row++, y++) { | ||||
|       GLuint indexes[MAX_WIDTH]; | ||||
|       const GLvoid *source = gl_pixel_addr_in_image(&ctx->Unpack, | ||||
|                     pixels, width, height, GL_COLOR_INDEX, type, 0, row, 0); | ||||
|       _mesa_unpack_index_span(ctx, drawWidth, GL_UNSIGNED_INT, indexes, | ||||
|                               type, source, &ctx->Unpack, GL_TRUE); | ||||
|       if (zoom) { | ||||
|          gl_write_zoomed_index_span(ctx, drawWidth, x, y, zspan, indexes, desty); | ||||
|    /* process the image row by row */ | ||||
|    for (i=0;i<height;i++,y++) { | ||||
|       GLuint ispan[MAX_WIDTH]; | ||||
|  | ||||
|       /* convert to uints */ | ||||
|       switch (image->Type) { | ||||
| 	 case GL_UNSIGNED_BYTE: | ||||
| 	    { | ||||
| 	       GLubyte *src = (GLubyte *) image->Data + i * width; | ||||
| 	       for (j=0;j<width;j++) { | ||||
| 		  ispan[j] = (GLuint) *src++; | ||||
| 	       } | ||||
| 	    } | ||||
| 	    break; | ||||
| 	 case GL_FLOAT: | ||||
| 	    { | ||||
| 	       GLfloat *src = (GLfloat *) image->Data + i * width; | ||||
| 	       for (j=0;j<width;j++) { | ||||
| 		  ispan[j] = (GLuint) (GLint) *src++; | ||||
| 	       } | ||||
| 	    } | ||||
| 	    break; | ||||
|          case GL_BITMAP: | ||||
|             { | ||||
| 	       GLubyte *src = (GLubyte *) image->Data + i * widthInBytes; | ||||
| 	       for (j=0;j<width;j++) { | ||||
| 		  ispan[j] = ( src[j >> 3] >> (7 - (j & 0x7)) ) & 1; | ||||
| 	       } | ||||
|             } | ||||
|             break; | ||||
| 	 default: | ||||
| 	    gl_problem( ctx, "draw_index_pixels type" ); | ||||
|             return; | ||||
|       } | ||||
|  | ||||
|       /* apply shift and offset */ | ||||
|       if (ctx->Pixel.IndexOffset || ctx->Pixel.IndexShift) { | ||||
|          gl_shift_and_offset_ci( ctx, width, ispan ); | ||||
|       } | ||||
|  | ||||
|       if (ctx->Visual->RGBAflag) { | ||||
| 	 /* Convert index to RGBA and write to frame buffer */ | ||||
| 	 GLubyte rgba[MAX_WIDTH][4]; | ||||
|          gl_map_ci_to_rgba( ctx, width, ispan, rgba ); | ||||
|          if (zoom) { | ||||
|             gl_write_zoomed_rgba_span( ctx, width, x, y, zspan,  | ||||
| 				       (const GLubyte (*)[4])rgba, desty ); | ||||
|          } | ||||
|          else { | ||||
|             gl_write_rgba_span( ctx, width, x, y, zspan, rgba, GL_BITMAP ); | ||||
|          } | ||||
|       } | ||||
|       else { | ||||
|          gl_write_index_span(ctx, drawWidth, x, y, zspan, indexes, GL_BITMAP); | ||||
| 	 /* optionally apply index map then write to frame buffer */ | ||||
| 	 if (ctx->Pixel.MapColorFlag) { | ||||
|             gl_map_ci(ctx, width, ispan); | ||||
| 	 } | ||||
|          if (zoom) { | ||||
|             gl_write_zoomed_index_span( ctx, width, x, y, zspan, ispan, desty ); | ||||
|          } | ||||
|          else { | ||||
|             gl_write_index_span( ctx, width, x, y, zspan, ispan, GL_BITMAP ); | ||||
|          } | ||||
|       } | ||||
|    } | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -401,44 +479,83 @@ draw_index_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|  * Do glDrawPixels of stencil image.  The image datatype may either | ||||
|  * be GLubyte or GLbitmap. | ||||
|  */ | ||||
| static void  | ||||
| draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                      GLsizei width, GLsizei height, | ||||
|                      GLenum type, const GLvoid *pixels ) | ||||
| static void draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                                  const struct gl_image *image ) | ||||
| { | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|    GLint widthInBytes, width, height; | ||||
|    const GLint desty = y; | ||||
|    GLint row, drawWidth; | ||||
|    GLint i; | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|  | ||||
|    if (type != GL_BYTE && | ||||
|        type != GL_UNSIGNED_BYTE && | ||||
|        type != GL_SHORT && | ||||
|        type != GL_UNSIGNED_SHORT && | ||||
|        type != GL_INT && | ||||
|        type != GL_UNSIGNED_INT && | ||||
|        type != GL_FLOAT && | ||||
|        type != GL_BITMAP) { | ||||
|       gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels(stencil type)"); | ||||
|    if (image->Type != GL_BYTE && | ||||
|        image->Type != GL_UNSIGNED_BYTE && | ||||
|        image->Type != GL_SHORT && | ||||
|        image->Type != GL_UNSIGNED_SHORT && | ||||
|        image->Type != GL_INT && | ||||
|        image->Type != GL_UNSIGNED_INT && | ||||
|        image->Type != GL_FLOAT && | ||||
|        image->Type != GL_BITMAP) { | ||||
|       gl_error( ctx, GL_INVALID_OPERATION, "glDrawPixels(stencil type)"); | ||||
|       return; | ||||
|    } | ||||
|  | ||||
|    drawWidth = (width > MAX_WIDTH) ? MAX_WIDTH : width; | ||||
|    assert(image); | ||||
|    assert(image->Format == GL_STENCIL_INDEX); | ||||
|    assert(image->Type == GL_UNSIGNED_BYTE || image->Type == GL_BITMAP); | ||||
|  | ||||
|    for (row = 0; row < height; row++, y++) { | ||||
|       GLstencil values[MAX_WIDTH]; | ||||
|       GLenum destType = (sizeof(GLstencil) == sizeof(GLubyte)) | ||||
|                       ? GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT; | ||||
|       const GLvoid *source = gl_pixel_addr_in_image(&ctx->Unpack, | ||||
|                     pixels, width, height, GL_COLOR_INDEX, type, 0, row, 0); | ||||
|       _mesa_unpack_index_span(ctx, drawWidth, destType, values, | ||||
|                               type, source, &ctx->Unpack, GL_TRUE); | ||||
|    if (image->Type == GL_UNSIGNED_BYTE) | ||||
|       widthInBytes = image->Width; | ||||
|    else | ||||
|       widthInBytes = (image->Width + 7) / 8; | ||||
|    width = image->Width; | ||||
|    height = image->Height; | ||||
|  | ||||
|       if (zoom) { | ||||
|          gl_write_zoomed_stencil_span( ctx, (GLuint) drawWidth, x, y, | ||||
|                                        values, desty ); | ||||
|    /* process the image row by row */ | ||||
|    for (i=0;i<height;i++,y++) { | ||||
|       GLstencil *src = (GLstencil*)image->Data + i * widthInBytes; | ||||
|       GLstencil *stencilValues; | ||||
|       GLstencil stencilCopy[MAX_WIDTH]; | ||||
|  | ||||
|       if (image->Type == GL_BITMAP) { | ||||
|          /* convert bitmap data to GLubyte (0 or 1) data */ | ||||
|          GLint j; | ||||
|          for (j = 0; j < width; j++) { | ||||
|             stencilCopy[j] = ( src[j >> 3] >> (7 - (j & 0x7)) ) & 1; | ||||
|          } | ||||
|          src = stencilCopy; | ||||
|       } | ||||
|  | ||||
|       if (ctx->Pixel.IndexOffset || ctx->Pixel.IndexShift | ||||
|           || ctx->Pixel.MapStencilFlag) { | ||||
|  | ||||
|          /* make copy of stencil values */ | ||||
|          if (src != stencilCopy) | ||||
|             MEMCPY( stencilCopy, src, width * sizeof(GLstencil)); | ||||
|  | ||||
|          /* apply shift and offset */ | ||||
|          if (ctx->Pixel.IndexOffset || ctx->Pixel.IndexShift) { | ||||
|             gl_shift_and_offset_stencil( ctx, width, stencilCopy ); | ||||
|          } | ||||
|  | ||||
|          /* mapping */ | ||||
|          if (ctx->Pixel.MapStencilFlag) { | ||||
|             gl_map_stencil( ctx, width, stencilCopy ); | ||||
|          } | ||||
|  | ||||
|          stencilValues = stencilCopy; | ||||
|       } | ||||
|       else { | ||||
|          gl_write_stencil_span( ctx, (GLuint) drawWidth, x, y, values ); | ||||
|          /* use stencil values in-place */ | ||||
|          stencilValues = src; | ||||
|       } | ||||
|  | ||||
|       /* write stencil values to stencil buffer */ | ||||
|       if (zoom) { | ||||
|          gl_write_zoomed_stencil_span( ctx, (GLuint) width, x, y, | ||||
|                                        stencilValues, desty ); | ||||
|       } | ||||
|       else { | ||||
|          gl_write_stencil_span( ctx, (GLuint) width, x, y, stencilValues ); | ||||
|       } | ||||
|    } | ||||
| } | ||||
| @@ -448,37 +565,30 @@ draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
| /* | ||||
|  * Do a glDrawPixels of depth values. | ||||
|  */ | ||||
| static void | ||||
| draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                    GLsizei width, GLsizei height, | ||||
|                    GLenum type, const GLvoid *pixels ) | ||||
| static void draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                                const struct gl_image *image ) | ||||
| { | ||||
|    const GLboolean bias_or_scale = ctx->Pixel.DepthBias!=0.0 || ctx->Pixel.DepthScale!=1.0; | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|    GLint width, height; | ||||
|    const GLint desty = y; | ||||
|    GLubyte rgba[MAX_WIDTH][4]; | ||||
|    GLuint ispan[MAX_WIDTH]; | ||||
|    GLint drawWidth = (width > MAX_WIDTH) ? MAX_WIDTH : width; | ||||
|    const GLboolean bias_or_scale = ctx->Pixel.DepthBias!=0.0 || ctx->Pixel.DepthScale!=1.0; | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|  | ||||
|    if (type != GL_UNSIGNED_BYTE | ||||
|        && type != GL_UNSIGNED_BYTE | ||||
|        && type != GL_UNSIGNED_SHORT | ||||
|        && type != GL_UNSIGNED_SHORT | ||||
|        && type != GL_UNSIGNED_INT | ||||
|        && type != GL_UNSIGNED_INT | ||||
|        && type != GL_FLOAT) { | ||||
|       gl_error(ctx, GL_INVALID_ENUM, "glDrawPixels(type)"); | ||||
|       return; | ||||
|    } | ||||
|    assert(image); | ||||
|    assert(image->Format == GL_DEPTH_COMPONENT); | ||||
|  | ||||
|    /* Colors or indexes */ | ||||
|    width = image->Width; | ||||
|    height = image->Height; | ||||
|  | ||||
|    /* Color or index */ | ||||
|    if (ctx->Visual->RGBAflag) { | ||||
|       GLint r = (GLint) (ctx->Current.RasterColor[0] * 255.0F); | ||||
|       GLint g = (GLint) (ctx->Current.RasterColor[1] * 255.0F); | ||||
|       GLint b = (GLint) (ctx->Current.RasterColor[2] * 255.0F); | ||||
|       GLint a = (GLint) (ctx->Current.RasterColor[3] * 255.0F); | ||||
|       GLint i; | ||||
|       for (i = 0; i < drawWidth; i++) { | ||||
|       for (i=0; i<width; i++) { | ||||
|          rgba[i][RCOMP] = r; | ||||
|          rgba[i][GCOMP] = g; | ||||
|          rgba[i][BCOMP] = b; | ||||
| @@ -487,36 +597,34 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|    } | ||||
|    else { | ||||
|       GLint i; | ||||
|       for (i = 0; i < drawWidth; i++) { | ||||
|       for (i=0;i<width;i++) { | ||||
| 	 ispan[i] = ctx->Current.RasterIndex; | ||||
|       } | ||||
|    } | ||||
|  | ||||
|    if (type==GL_UNSIGNED_SHORT && sizeof(GLdepth)==sizeof(GLushort) | ||||
|    if (image->Type==GL_UNSIGNED_SHORT && sizeof(GLdepth)==sizeof(GLushort) | ||||
|        && !bias_or_scale && !zoom && ctx->Visual->RGBAflag) { | ||||
|       /* Special case: directly write 16-bit depth values */ | ||||
|       GLint row; | ||||
|       for (row = 0; row < height; row++, y++) { | ||||
|          const GLdepth *zptr = gl_pixel_addr_in_image(&ctx->Unpack, | ||||
|                 pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0); | ||||
|       GLint j; | ||||
|       for (j=0;j<height;j++,y++) { | ||||
|          GLdepth *zptr = (GLdepth *) image->Data + j * width; | ||||
|          gl_write_rgba_span( ctx, width, x, y, zptr, rgba, GL_BITMAP ); | ||||
|       } | ||||
|    } | ||||
|    else if (type==GL_UNSIGNED_INT && sizeof(GLdepth)==sizeof(GLuint) | ||||
|    else if (image->Type==GL_UNSIGNED_INT && sizeof(GLdepth)==sizeof(GLuint) | ||||
|        && !bias_or_scale && !zoom && ctx->Visual->RGBAflag) { | ||||
|       /* Special case: directly write 32-bit depth values */ | ||||
|       GLint i, row; | ||||
|       GLint i, j; | ||||
|       /* Compute shift value to scale 32-bit uints down to depth values. */ | ||||
|       GLuint shift = 0; | ||||
|       GLuint max = MAX_DEPTH; | ||||
|       while ((max & 0x80000000) == 0) { | ||||
|       while ((max&0x80000000)==0) { | ||||
|          max = max << 1; | ||||
|          shift++; | ||||
|       } | ||||
|       for (row = 0; row < height; row++, y++) { | ||||
|       for (j=0;j<height;j++,y++) { | ||||
|          GLdepth zspan[MAX_WIDTH]; | ||||
|          const GLdepth *zptr = gl_pixel_addr_in_image(&ctx->Unpack, | ||||
|                 pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0); | ||||
|          GLuint *zptr = (GLuint *) image->Data + j * width; | ||||
|          for (i=0;i<width;i++) { | ||||
|             zspan[i] = zptr[i] >> shift; | ||||
|          } | ||||
| @@ -524,30 +632,72 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|       } | ||||
|    } | ||||
|    else { | ||||
|       /* General case */ | ||||
|       GLint row; | ||||
|       for (row = 0; row < height; row++, y++) { | ||||
|       /* General case (slower) */ | ||||
|       GLint i, j; | ||||
|  | ||||
|       /* process image row by row */ | ||||
|       for (i=0;i<height;i++,y++) { | ||||
|          GLfloat depth[MAX_WIDTH]; | ||||
|          GLdepth zspan[MAX_WIDTH]; | ||||
|          const GLvoid *src = gl_pixel_addr_in_image(&ctx->Unpack, | ||||
|                 pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0); | ||||
|          _mesa_unpack_depth_span( ctx, drawWidth, zspan, type, src, | ||||
|                                   &ctx->Unpack, GL_TRUE ); | ||||
|  | ||||
|          switch (image->Type) { | ||||
|             case GL_UNSIGNED_SHORT: | ||||
|                { | ||||
|                   GLushort *src = (GLushort *) image->Data + i * width; | ||||
|                   for (j=0;j<width;j++) { | ||||
|                      depth[j] = USHORT_TO_FLOAT( *src++ ); | ||||
|                   } | ||||
|                } | ||||
|                break; | ||||
|             case GL_UNSIGNED_INT: | ||||
|                { | ||||
|                   GLuint *src = (GLuint *) image->Data + i * width; | ||||
|                   for (j=0;j<width;j++) { | ||||
|                      depth[j] = UINT_TO_FLOAT( *src++ ); | ||||
|                   } | ||||
|                } | ||||
|                break; | ||||
|             case GL_FLOAT: | ||||
|                { | ||||
|                   GLfloat *src = (GLfloat *) image->Data + i * width; | ||||
|                   for (j=0;j<width;j++) { | ||||
|                      depth[j] = *src++; | ||||
|                   } | ||||
|                } | ||||
|                break; | ||||
|             default: | ||||
|                gl_problem(ctx, "Bad type in draw_depth_pixels"); | ||||
|                return; | ||||
|          } | ||||
|  | ||||
|          /* apply depth scale and bias */ | ||||
|          if (ctx->Pixel.DepthScale!=1.0 || ctx->Pixel.DepthBias!=0.0) { | ||||
|             for (j=0;j<width;j++) { | ||||
|                depth[j] = depth[j] * ctx->Pixel.DepthScale + ctx->Pixel.DepthBias; | ||||
|             } | ||||
|          } | ||||
|  | ||||
|          /* clamp depth values to [0,1] and convert from floats to integers */ | ||||
|          for (j=0;j<width;j++) { | ||||
|             zspan[j] = (GLdepth) (CLAMP( depth[j], 0.0F, 1.0F ) * DEPTH_SCALE); | ||||
|          } | ||||
|  | ||||
|          if (ctx->Visual->RGBAflag) { | ||||
|             if (zoom) { | ||||
|                gl_write_zoomed_rgba_span(ctx, width, x, y, zspan, | ||||
|                                          (const GLubyte (*)[4])rgba, desty); | ||||
|                gl_write_zoomed_rgba_span( ctx, width, x, y, zspan, | ||||
|                                           (const GLubyte (*)[4])rgba, desty ); | ||||
|             } | ||||
|             else { | ||||
|                gl_write_rgba_span(ctx, width, x, y, zspan, rgba, GL_BITMAP); | ||||
|                gl_write_rgba_span( ctx, width, x, y, zspan, rgba, GL_BITMAP ); | ||||
|             } | ||||
|          } | ||||
|          else { | ||||
|             if (zoom) { | ||||
|                gl_write_zoomed_index_span(ctx, width, x, y, zspan, | ||||
|                                           ispan, GL_BITMAP); | ||||
|                gl_write_zoomed_index_span( ctx, width, x, y, zspan, | ||||
|                                            ispan, GL_BITMAP ); | ||||
|             } | ||||
|             else { | ||||
|                gl_write_index_span(ctx, width, x, y, zspan, ispan, GL_BITMAP); | ||||
|                gl_write_index_span( ctx, width, x, y, zspan, ispan, GL_BITMAP ); | ||||
|             } | ||||
|          } | ||||
|  | ||||
| @@ -556,71 +706,184 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Simple unpacking parameters: */ | ||||
| static struct gl_pixelstore_attrib NoUnpack = { | ||||
|    1,            /* Alignment */ | ||||
|    0,            /* RowLength */ | ||||
|    0,            /* SkipPixels */ | ||||
|    0,            /* SkipRows */ | ||||
|    0,            /* ImageHeight */ | ||||
|    0,            /* SkipImages */ | ||||
|    GL_FALSE,     /* SwapBytes */ | ||||
|    GL_FALSE      /* LsbFirst */ | ||||
| }; | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Do glDrawPixels of RGBA pixels. | ||||
|  */ | ||||
| static void | ||||
| draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                   GLsizei width, GLsizei height, | ||||
|                   GLenum format, GLenum type, const GLvoid *pixels ) | ||||
| static void draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
|                               const struct gl_image *image ) | ||||
| { | ||||
|    const struct gl_pixelstore_attrib *unpack = &ctx->Unpack; | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|    GLint width, height; | ||||
|    GLint i, j; | ||||
|    const GLint desty = y; | ||||
|    GLdepth zspan[MAX_WIDTH]; | ||||
|    GLboolean quickDraw; | ||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||
|  | ||||
|    assert(image); | ||||
|  | ||||
|    /* Try an optimized glDrawPixels first */ | ||||
|    if (simple_DrawPixels(ctx, x, y, width, height, format, type, pixels)) | ||||
|    if (gl_direct_DrawPixels(ctx, &NoUnpack, image->Width, image->Height, | ||||
|                             image->Format, image->Type, image->Data )) | ||||
|       return; | ||||
|  | ||||
|    width = image->Width; | ||||
|    height = image->Height; | ||||
|  | ||||
|    /* Fragment depth values */ | ||||
|    if (ctx->Depth.Test) { | ||||
|    if (ctx->Depth.Test || ctx->Fog.Enabled) { | ||||
|       /* fill in array of z values */ | ||||
|       GLdepth z = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE); | ||||
|       GLint i; | ||||
|       for (i=0;i<width;i++) { | ||||
| 	 zspan[i] = z; | ||||
|       } | ||||
|    } | ||||
|  | ||||
|  | ||||
|    if (ctx->RasterMask == 0 && !zoom | ||||
|        && x >= 0 && y >= 0 | ||||
|        && x + width <= ctx->Buffer->Width | ||||
|        && y + height <= ctx->Buffer->Height) { | ||||
|    if (ctx->RasterMask==0 && !zoom && x>=0 && y>=0 | ||||
|        && x+width<=ctx->Buffer->Width && y+height<=ctx->Buffer->Height) { | ||||
|       quickDraw = GL_TRUE; | ||||
|    } | ||||
|    else { | ||||
|       quickDraw = GL_FALSE; | ||||
|    } | ||||
|  | ||||
|    /* | ||||
|     * General solution | ||||
|     */ | ||||
|    { | ||||
|       /* General solution */ | ||||
|       GLboolean r_flag, g_flag, b_flag, a_flag, l_flag; | ||||
|       GLuint components; | ||||
|       GLubyte rgba[MAX_WIDTH][4]; | ||||
|       GLint row; | ||||
|       if (width > MAX_WIDTH) | ||||
|          width = MAX_WIDTH; | ||||
|       for (row = 0; row < height; row++, y++) { | ||||
|          const GLvoid *source = gl_pixel_addr_in_image(unpack, | ||||
|                   pixels, width, height, format, type, 0, row, 0); | ||||
|          _mesa_unpack_ubyte_color_span(ctx, width, GL_RGBA, (void*) rgba, | ||||
|                    format, type, source, unpack, GL_TRUE); | ||||
|       GLfloat  rf[MAX_WIDTH]; | ||||
|       GLfloat  gf[MAX_WIDTH]; | ||||
|       GLfloat  bf[MAX_WIDTH]; | ||||
|       DEFARRAY(GLfloat,af,MAX_WIDTH); | ||||
|       CHECKARRAY(af,return); | ||||
|  | ||||
|       r_flag = g_flag = b_flag = a_flag = l_flag = GL_FALSE; | ||||
|       switch (image->Format) { | ||||
| 	 case GL_RED: | ||||
| 	    r_flag = GL_TRUE; | ||||
| 	    components = 1; | ||||
| 	    break; | ||||
| 	 case GL_GREEN: | ||||
| 	    g_flag = GL_TRUE; | ||||
| 	    components = 1; | ||||
| 	    break; | ||||
| 	 case GL_BLUE: | ||||
| 	    b_flag = GL_TRUE; | ||||
| 	    components = 1; | ||||
| 	    break; | ||||
| 	 case GL_ALPHA: | ||||
| 	    a_flag = GL_TRUE; | ||||
| 	    components = 1; | ||||
| 	    break; | ||||
| 	 case GL_RGB: | ||||
| 	    r_flag = g_flag = b_flag = GL_TRUE; | ||||
| 	    components = 3; | ||||
| 	    break; | ||||
| 	 case GL_LUMINANCE: | ||||
| 	    l_flag = GL_TRUE; | ||||
| 	    components = 1; | ||||
| 	    break; | ||||
| 	 case GL_LUMINANCE_ALPHA: | ||||
| 	    l_flag = a_flag = GL_TRUE; | ||||
| 	    components = 2; | ||||
| 	    break; | ||||
| 	 case GL_RGBA: | ||||
| 	    r_flag = g_flag = b_flag = a_flag = GL_TRUE; | ||||
| 	    components = 4; | ||||
| 	    break; | ||||
|          default: | ||||
|             gl_problem(ctx, "Bad type in draw_rgba_pixels"); | ||||
|             goto cleanup; | ||||
|       } | ||||
|  | ||||
|       /* process the image row by row */ | ||||
|       for (i=0;i<height;i++,y++) { | ||||
| 	 /* convert to floats */ | ||||
| 	 switch (image->Type) { | ||||
| 	    case GL_UNSIGNED_BYTE: | ||||
| 	       { | ||||
| 		  GLubyte *src = (GLubyte *) image->Data + i * width * components; | ||||
| 		  for (j=0;j<width;j++) { | ||||
| 		     if (l_flag) { | ||||
| 			rf[j] = gf[j] = bf[j] = UBYTE_TO_FLOAT(*src++); | ||||
| 		     } | ||||
| 		     else { | ||||
| 			rf[j] = r_flag ? UBYTE_TO_FLOAT(*src++) : 0.0; | ||||
| 			gf[j] = g_flag ? UBYTE_TO_FLOAT(*src++) : 0.0; | ||||
| 			bf[j] = b_flag ? UBYTE_TO_FLOAT(*src++) : 0.0; | ||||
| 		     } | ||||
| 		     af[j] = a_flag ? UBYTE_TO_FLOAT(*src++) : 1.0; | ||||
| 		  } | ||||
| 	       } | ||||
| 	       break; | ||||
| 	    case GL_FLOAT: | ||||
| 	       { | ||||
| 		  GLfloat *src = (GLfloat *) image->Data + i * width * components; | ||||
| 		  for (j=0;j<width;j++) { | ||||
| 		     if (l_flag) { | ||||
| 			rf[j] = gf[j] = bf[j] = *src++; | ||||
| 		     } | ||||
| 		     else { | ||||
| 			rf[j] = r_flag ? *src++ : 0.0; | ||||
| 			gf[j] = g_flag ? *src++ : 0.0; | ||||
| 			bf[j] = b_flag ? *src++ : 0.0; | ||||
| 		     } | ||||
| 		     af[j] = a_flag ? *src++ : 1.0; | ||||
| 		  } | ||||
| 	       } | ||||
| 	       break; | ||||
| 	    default: | ||||
| 	       gl_problem( ctx, "draw_rgba_pixels type" ); | ||||
|                goto cleanup; | ||||
| 	 } | ||||
|  | ||||
| 	 /* apply scale and bias */ | ||||
| 	 if (ctx->Pixel.ScaleOrBiasRGBA) { | ||||
|             gl_scale_and_bias_color(ctx, width, rf, gf, bf, af); | ||||
| 	 } | ||||
|  | ||||
| 	 /* apply pixel mappings */ | ||||
| 	 if (ctx->Pixel.MapColorFlag) { | ||||
|             gl_map_color(ctx, width, rf, gf, bf, af); | ||||
| 	 } | ||||
|  | ||||
| 	 /* convert to integers */ | ||||
| 	 for (j=0;j<width;j++) { | ||||
| 	    rgba[j][RCOMP] = (GLint) (rf[j] * 255.0F); | ||||
| 	    rgba[j][GCOMP] = (GLint) (gf[j] * 255.0F); | ||||
| 	    rgba[j][BCOMP] = (GLint) (bf[j] * 255.0F); | ||||
| 	    rgba[j][ACOMP] = (GLint) (af[j] * 255.0F); | ||||
| 	 } | ||||
|  | ||||
| 	 /* write to frame buffer */ | ||||
|          if (quickDraw) { | ||||
|             (*ctx->Driver.WriteRGBASpan)( ctx, width, x, y, | ||||
|                                           (CONST GLubyte (*)[]) rgba, NULL); | ||||
|             (*ctx->Driver.WriteRGBASpan)( ctx, width, x, y,  | ||||
| 					  (const GLubyte (*)[4])rgba, NULL); | ||||
|          } | ||||
|          else if (zoom) { | ||||
|             gl_write_zoomed_rgba_span( ctx, width, x, y, zspan,  | ||||
| 				       (CONST GLubyte (*)[]) rgba, desty ); | ||||
| 				       (const GLubyte (*)[4])rgba, desty ); | ||||
|          } | ||||
|          else { | ||||
|             gl_write_rgba_span( ctx, (GLuint) width, x, y, zspan, rgba, GL_BITMAP); | ||||
|          } | ||||
|       } | ||||
| cleanup: | ||||
|       UNDEFARRAY(af); | ||||
|    } | ||||
| } | ||||
|  | ||||
| @@ -629,50 +892,45 @@ draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y, | ||||
| /* | ||||
|  * Execute glDrawPixels | ||||
|  */ | ||||
| void | ||||
| _mesa_DrawPixels( GLsizei width, GLsizei height, | ||||
|                   GLenum format, GLenum type, const GLvoid *pixels ) | ||||
| void gl_DrawPixels( GLcontext* ctx, struct gl_image *image ) | ||||
| { | ||||
|    GET_CURRENT_CONTEXT(ctx); | ||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glDrawPixels"); | ||||
|  | ||||
|  | ||||
|    if (gl_image_error_test( ctx, image, "glDrawPixels" )) | ||||
|       return; | ||||
|  | ||||
|    if (ctx->RenderMode==GL_RENDER) { | ||||
|       GLint x, y; | ||||
|       if (!pixels || !ctx->Current.RasterPosValid) { | ||||
|       if (!ctx->Current.RasterPosValid) { | ||||
| 	 return; | ||||
|       } | ||||
|  | ||||
|       x = (GLint) (ctx->Current.RasterPos[0] + 0.5F); | ||||
|       y = (GLint) (ctx->Current.RasterPos[1] + 0.5F); | ||||
|  | ||||
|       switch (format) { | ||||
|       switch (image->Format) { | ||||
| 	 case GL_COLOR_INDEX: | ||||
|             draw_index_pixels( ctx, x, y, image ); | ||||
| 	    break; | ||||
| 	 case GL_STENCIL_INDEX: | ||||
| 	    draw_stencil_pixels( ctx, x, y, width, height, type, pixels ); | ||||
| 	    draw_stencil_pixels( ctx, x, y, image ); | ||||
| 	    break; | ||||
| 	 case GL_DEPTH_COMPONENT: | ||||
| 	    draw_depth_pixels( ctx, x, y, width, height, type, pixels ); | ||||
| 	    break; | ||||
| 	 case GL_COLOR_INDEX: | ||||
|             if (ctx->Visual->RGBAflag) | ||||
|                draw_index_pixels(ctx, x, y, width, height, type, pixels); | ||||
|             else | ||||
|                draw_rgba_pixels(ctx, x,y, width, height, format, type, pixels); | ||||
| 	    draw_depth_pixels( ctx, x, y, image ); | ||||
| 	    break; | ||||
| 	 case GL_RED: | ||||
| 	 case GL_GREEN: | ||||
| 	 case GL_BLUE: | ||||
| 	 case GL_ALPHA: | ||||
| 	 case GL_RGB: | ||||
| 	 case GL_LUMINANCE: | ||||
| 	 case GL_LUMINANCE_ALPHA: | ||||
| 	 case GL_RGB: | ||||
|          case GL_BGR: | ||||
| 	 case GL_RGBA: | ||||
| 	 case GL_BGRA: | ||||
| 	 case GL_ABGR_EXT: | ||||
|             draw_rgba_pixels(ctx, x, y, width, height, format, type, pixels); | ||||
|             draw_rgba_pixels( ctx, x, y, image ); | ||||
| 	    break; | ||||
| 	 default: | ||||
| 	    gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels(format)" ); | ||||
| 	    gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels" ); | ||||
|             return; | ||||
|       } | ||||
|    } | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* $Id: enums.c,v 1.5 1999/11/11 01:22:26 brianp Exp $ */ | ||||
| /* $Id: enums.c,v 1.4.2.1 2000/02/05 01:52:23 brianp Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Version:  3.1 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  *  | ||||
| @@ -24,15 +24,17 @@ | ||||
|  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #ifndef XFree86Server | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #include "enums.h" | ||||
| #include "mem.h" | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
|  | ||||
| #include "GL/gl.h" | ||||
| #include "enums.h" | ||||
| #include "macros.h" | ||||
|  | ||||
|  | ||||
| typedef struct {  | ||||
|    const char *c;  | ||||
| @@ -795,8 +797,8 @@ enum_elt all_enums[] = | ||||
|    { "GL_NATIVE_GRAPHICS_HANDLE_PGI", 107010 }, | ||||
|  | ||||
|    /* GL_EXT_compiled_vertex_array */ | ||||
|    { "GL_ARRAY_ELEMENT_LOCK_FIRST_SGI", 0x81A8}, | ||||
|    { "GL_ARRAY_ELEMENT_LOCK_COUNT_SGI", 0x81A9}, | ||||
|    { "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", 0x81A8}, | ||||
|    { "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9}, | ||||
|  | ||||
|    /* GL_EXT_clip_volume_hint */ | ||||
|    { "GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0} | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* $Id: extensions.c,v 1.11 1999/11/11 01:22:26 brianp Exp $ */ | ||||
| /* $Id: extensions.c,v 1.10.2.4 1999/12/21 17:22:39 keithw Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
|  * Version:  3.3 | ||||
|  * Version:  3.1 | ||||
|  *  | ||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||
|  *  | ||||
| @@ -25,16 +25,16 @@ | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifdef PC_HEADER | ||||
| #include "all.h" | ||||
| #ifndef XFree86Server | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #else | ||||
| #include "glheader.h" | ||||
| #include "GL/xf86glx.h" | ||||
| #endif | ||||
| #include "context.h" | ||||
| #include "extensions.h" | ||||
| #include "mem.h" | ||||
| #include "simple_list.h" | ||||
| #include "types.h" | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #define MAX_EXT_NAMELEN 80 | ||||
| @@ -62,7 +62,7 @@ static struct { int enabled; const char *name; } default_extensions[] = { | ||||
|    { DEFAULT_ON,     "GL_EXT_texture3D" }, | ||||
|    { ALWAYS_ENABLED, "GL_MESA_window_pos" }, | ||||
|    { ALWAYS_ENABLED, "GL_MESA_resize_buffers" }, | ||||
|    { ALWAYS_ENABLED, "GL_EXT_shared_texture_palette" }, | ||||
|    { DEFAULT_ON,     "GL_EXT_shared_texture_palette" }, | ||||
|    { ALWAYS_ENABLED, "GL_EXT_rescale_normal" }, | ||||
|    { ALWAYS_ENABLED, "GL_EXT_abgr" }, | ||||
|    { ALWAYS_ENABLED, "GL_SGIS_texture_edge_clamp" }, | ||||
| @@ -72,8 +72,15 @@ static struct { int enabled; const char *name; } default_extensions[] = { | ||||
|    { ALWAYS_ENABLED, "GL_NV_texgen_reflection" }, | ||||
|    { DEFAULT_ON,     "GL_PGI_misc_hints" }, | ||||
|    { DEFAULT_ON,     "GL_EXT_compiled_vertex_array" }, | ||||
|    { DEFAULT_OFF,    "GL_EXT_vertex_array_set" }, | ||||
|    { DEFAULT_ON,     "GL_EXT_clip_volume_hint" }, | ||||
|     | ||||
|    { DEFAULT_OFF,    "GL_EXT_texture_env_add" }, | ||||
|  | ||||
|    /* These obviously won't make it before 3.3: | ||||
|     */ | ||||
|    { DEFAULT_OFF,    "GL_EXT_vertex_array_set" }, | ||||
|    { DEFAULT_OFF,    "GL_EXT_texture_env" }, | ||||
|    { DEFAULT_OFF,    "GL_EXT_fog_coord" }, | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -105,14 +112,21 @@ static int set_extension( GLcontext *ctx, const char *name, GLuint state ) | ||||
|       if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0)  | ||||
| 	 break; | ||||
|  | ||||
|    if (i == ctx->Extensions.ext_list) return 1; | ||||
|    if (i == ctx->Extensions.ext_list) { | ||||
|       if (MESA_VERBOSE&VERBOSE_EXTENSIONS) | ||||
| 	 fprintf(stderr, "extension %s -- not found\n", name); | ||||
|       return 1; | ||||
|    } | ||||
|  | ||||
|    if (i->enabled && !(i->enabled & ALWAYS_ENABLED)) | ||||
|    if (i->enabled != state && !(i->enabled & ALWAYS_ENABLED)) | ||||
|    { | ||||
|       if (i->notify) i->notify( ctx, state );       | ||||
|       i->enabled = state; | ||||
|    } | ||||
|  | ||||
|    if (MESA_VERBOSE&VERBOSE_EXTENSIONS) | ||||
|       fprintf(stderr, "extension %s, state %d\n", name, i->enabled); | ||||
|  | ||||
|    return 0; | ||||
| }    | ||||
|  | ||||
| @@ -133,6 +147,24 @@ int gl_extensions_disable( GLcontext *ctx, const char *name ) | ||||
| } | ||||
|        | ||||
|  | ||||
| /* | ||||
|  * Test if the named extension is enabled in this context. | ||||
|  */ | ||||
| GLboolean gl_extension_is_enabled( GLcontext *ctx, const char *name) | ||||
| { | ||||
|    struct extension *i; | ||||
|    foreach( i, ctx->Extensions.ext_list ) | ||||
|       if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0) { | ||||
|          if (i->enabled) | ||||
|             return GL_TRUE; | ||||
|          else | ||||
|             return GL_FALSE; | ||||
|       } | ||||
|  | ||||
|    return GL_FALSE; | ||||
| } | ||||
|  | ||||
|  | ||||
| void gl_extensions_dtr( GLcontext *ctx ) | ||||
| { | ||||
|    struct extension *i, *nexti; | ||||
| @@ -218,43 +250,409 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | ||||
|       gl_function address; | ||||
|    }; | ||||
|    static struct proc procTable[] = { | ||||
|       /* OpenGL 1.0 functions */ | ||||
|       { "glAccum", (gl_function) glAccum }, | ||||
|       { "glAlphaFunc", (gl_function) glAlphaFunc }, | ||||
|       { "glBegin", (gl_function) glBegin }, | ||||
|       { "glBitmap", (gl_function) glBitmap }, | ||||
|       { "glAccum", (gl_function) glAccum }, | ||||
|       { "glAlphaFunc", (gl_function) glAlphaFunc }, | ||||
|       { "glBegin", (gl_function) glBegin }, | ||||
|       { "glBitmap", (gl_function) glBitmap }, | ||||
|       { "glBlendFunc", (gl_function) glBlendFunc }, | ||||
|       { "glCallList", (gl_function) glCallList }, | ||||
|       { "glCallLists", (gl_function) glCallLists }, | ||||
|       { "glClear", (gl_function) glClear }, | ||||
|       { "glClearAccum", (gl_function) glClearAccum }, | ||||
|       { "glClearColor", (gl_function) glClearColor }, | ||||
|       { "glClearDepth", (gl_function) glClearDepth }, | ||||
|       { "glClearIndex", (gl_function) glClearIndex }, | ||||
|       { "glClearStencil", (gl_function) glClearStencil }, | ||||
|       { "glClipPlane", (gl_function) glClipPlane }, | ||||
|       { "glColor3b", (gl_function) glColor3b }, | ||||
|       { "glColor3bv", (gl_function) glColor3bv }, | ||||
|       { "glColor3d", (gl_function) glColor3d }, | ||||
|       { "glColor3dv", (gl_function) glColor3dv }, | ||||
|       { "glColor3f", (gl_function) glColor3f }, | ||||
|       { "glColor3fv", (gl_function) glColor3fv }, | ||||
|       { "glColor3i", (gl_function) glColor3i }, | ||||
|       { "glColor3iv", (gl_function) glColor3iv }, | ||||
|       { "glColor3s", (gl_function) glColor3s }, | ||||
|       { "glColor3sv", (gl_function) glColor3sv }, | ||||
|       { "glColor3ub", (gl_function) glColor3ub }, | ||||
|       { "glColor3ubv", (gl_function) glColor3ubv }, | ||||
|       { "glColor3ui", (gl_function) glColor3ui }, | ||||
|       { "glColor3uiv", (gl_function) glColor3uiv }, | ||||
|       { "glColor3us", (gl_function) glColor3us }, | ||||
|       { "glColor3usv", (gl_function) glColor3usv }, | ||||
|       { "glColor4b", (gl_function) glColor4b }, | ||||
|       { "glColor4bv", (gl_function) glColor4bv }, | ||||
|       { "glColor4d", (gl_function) glColor4d }, | ||||
|       { "glColor4dv", (gl_function) glColor4dv }, | ||||
|       { "glColor4f", (gl_function) glColor4f }, | ||||
|       { "glColor4fv", (gl_function) glColor4fv }, | ||||
|       { "glColor4i", (gl_function) glColor4i }, | ||||
|       { "glColor4iv", (gl_function) glColor4iv }, | ||||
|       { "glColor4s", (gl_function) glColor4s }, | ||||
|       { "glColor4sv", (gl_function) glColor4sv }, | ||||
|       { "glColor4ub", (gl_function) glColor4ub }, | ||||
|       { "glColor4ubv", (gl_function) glColor4ubv }, | ||||
|       { "glColor4ui", (gl_function) glColor4ui }, | ||||
|       { "glColor4uiv", (gl_function) glColor4uiv }, | ||||
|       { "glColor4us", (gl_function) glColor4us }, | ||||
|       { "glColor4usv", (gl_function) glColor4usv }, | ||||
|       { "glColorMask", (gl_function) glColorMask }, | ||||
|       { "glColorMaterial", (gl_function) glColorMaterial }, | ||||
|       { "glCopyPixels", (gl_function) glCopyPixels }, | ||||
|       { "glCullFace", (gl_function) glCullFace }, | ||||
|       { "glDeleteLists", (gl_function) glDeleteLists }, | ||||
|       { "glDepthFunc", (gl_function) glDepthFunc }, | ||||
|       { "glDepthMask", (gl_function) glDepthMask }, | ||||
|       { "glDepthRange", (gl_function) glDepthRange }, | ||||
|       { "glDisable", (gl_function) glDisable }, | ||||
|       { "glDrawBuffer", (gl_function) glDrawBuffer }, | ||||
|       { "glDrawPixels", (gl_function) glDrawPixels }, | ||||
|       { "glEdgeFlag", (gl_function) glEdgeFlag }, | ||||
|       { "glEdgeFlagv", (gl_function) glEdgeFlagv }, | ||||
|       { "glEnable", (gl_function) glEnable }, | ||||
|       { "glEnd", (gl_function) glEnd }, | ||||
|       { "glEndList", (gl_function) glEndList }, | ||||
|       { "glEvalCoord1d", (gl_function) glEvalCoord1d }, | ||||
|       { "glEvalCoord1dv", (gl_function) glEvalCoord1dv }, | ||||
|       { "glEvalCoord1f", (gl_function) glEvalCoord1f }, | ||||
|       { "glEvalCoord1fv", (gl_function) glEvalCoord1fv }, | ||||
|       { "glEvalCoord2d", (gl_function) glEvalCoord2d }, | ||||
|       { "glEvalCoord2dv", (gl_function) glEvalCoord2dv }, | ||||
|       { "glEvalCoord2f", (gl_function) glEvalCoord2f }, | ||||
|       { "glEvalCoord2fv", (gl_function) glEvalCoord2fv }, | ||||
|       { "glEvalMesh1", (gl_function) glEvalMesh1 }, | ||||
|       { "glEvalMesh2", (gl_function) glEvalMesh2 }, | ||||
|       { "glEvalPoint1", (gl_function) glEvalPoint1 }, | ||||
|       { "glEvalPoint2", (gl_function) glEvalPoint2 }, | ||||
|       { "glFeedbackBuffer", (gl_function) glFeedbackBuffer }, | ||||
|       { "glFinish", (gl_function) glFinish }, | ||||
|       { "glFlush", (gl_function) glFlush }, | ||||
|       { "glFogf", (gl_function) glFogf }, | ||||
|       { "glFogfv", (gl_function) glFogfv }, | ||||
|       { "glFogi", (gl_function) glFogi }, | ||||
|       { "glFogiv", (gl_function) glFogiv }, | ||||
|       { "glFrontFace", (gl_function) glFrontFace }, | ||||
|       { "glFrustum", (gl_function) glFrustum }, | ||||
|       { "glGenLists", (gl_function) glGenLists }, | ||||
|       { "glGetBooleanv", (gl_function) glGetBooleanv }, | ||||
|       { "glGetClipPlane", (gl_function) glGetClipPlane }, | ||||
|       { "glGetDoublev", (gl_function) glGetDoublev }, | ||||
|       { "glGetError", (gl_function) glGetError }, | ||||
|       { "glGetFloatv", (gl_function) glGetFloatv }, | ||||
|       { "glGetIntegerv", (gl_function) glGetIntegerv }, | ||||
|       { "glGetLightfv", (gl_function) glGetLightfv }, | ||||
|       { "glGetLightiv", (gl_function) glGetLightiv }, | ||||
|       { "glGetMapdv", (gl_function) glGetMapdv }, | ||||
|       { "glGetMapfv", (gl_function) glGetMapfv }, | ||||
|       { "glGetMapiv", (gl_function) glGetMapiv }, | ||||
|       { "glGetMaterialfv", (gl_function) glGetMaterialfv }, | ||||
|       { "glGetMaterialiv", (gl_function) glGetMaterialiv }, | ||||
|       { "glGetPixelMapfv", (gl_function) glGetPixelMapfv }, | ||||
|       { "glGetPixelMapuiv", (gl_function) glGetPixelMapuiv }, | ||||
|       { "glGetPixelMapusv", (gl_function) glGetPixelMapusv }, | ||||
|       { "glGetPolygonStipple", (gl_function) glGetPolygonStipple }, | ||||
|       { "glGetString", (gl_function) glGetString }, | ||||
|       { "glGetTexEnvfv", (gl_function) glGetTexEnvfv }, | ||||
|       { "glGetTexEnviv", (gl_function) glGetTexEnviv }, | ||||
|       { "glGetTexGendv", (gl_function) glGetTexGendv }, | ||||
|       { "glGetTexGenfv", (gl_function) glGetTexGenfv }, | ||||
|       { "glGetTexGeniv", (gl_function) glGetTexGeniv }, | ||||
|       { "glGetTexImage", (gl_function) glGetTexImage }, | ||||
|       { "glGetTexLevelParameterfv", (gl_function) glGetTexLevelParameterfv }, | ||||
|       { "glGetTexLevelParameteriv", (gl_function) glGetTexLevelParameteriv }, | ||||
|       { "glGetTexParameterfv", (gl_function) glGetTexParameterfv }, | ||||
|       { "glGetTexParameteriv", (gl_function) glGetTexParameteriv }, | ||||
|       { "glHint", (gl_function) glHint }, | ||||
|       { "glIndexMask", (gl_function) glIndexMask }, | ||||
|       { "glIndexd", (gl_function) glIndexd }, | ||||
|       { "glIndexdv", (gl_function) glIndexdv }, | ||||
|       { "glIndexf", (gl_function) glIndexf }, | ||||
|       { "glIndexfv", (gl_function) glIndexfv }, | ||||
|       { "glIndexi", (gl_function) glIndexi }, | ||||
|       { "glIndexiv", (gl_function) glIndexiv }, | ||||
|       { "glIndexs", (gl_function) glIndexs }, | ||||
|       { "glIndexsv", (gl_function) glIndexsv }, | ||||
|       { "glInitNames", (gl_function) glInitNames }, | ||||
|       { "glIsEnabled", (gl_function) glIsEnabled }, | ||||
|       { "glIsList", (gl_function) glIsList }, | ||||
|       { "glLightModelf", (gl_function) glLightModelf }, | ||||
|       { "glLightModelfv", (gl_function) glLightModelfv }, | ||||
|       { "glLightModeli", (gl_function) glLightModeli }, | ||||
|       { "glLightModeliv", (gl_function) glLightModeliv }, | ||||
|       { "glLightf", (gl_function) glLightf }, | ||||
|       { "glLightfv", (gl_function) glLightfv }, | ||||
|       { "glLighti", (gl_function) glLighti }, | ||||
|       { "glLightiv", (gl_function) glLightiv }, | ||||
|       { "glLineStipple", (gl_function) glLineStipple }, | ||||
|       { "glLineWidth", (gl_function) glLineWidth }, | ||||
|       { "glListBase", (gl_function) glListBase }, | ||||
|       { "glLoadIdentity", (gl_function) glLoadIdentity }, | ||||
|       { "glLoadMatrixd", (gl_function) glLoadMatrixd }, | ||||
|       { "glLoadMatrixf", (gl_function) glLoadMatrixf }, | ||||
|       { "glLoadName", (gl_function) glLoadName }, | ||||
|       { "glLogicOp", (gl_function) glLogicOp }, | ||||
|       { "glMap1d", (gl_function) glMap1d }, | ||||
|       { "glMap1f", (gl_function) glMap1f }, | ||||
|       { "glMap2d", (gl_function) glMap2d }, | ||||
|       { "glMap2f", (gl_function) glMap2f }, | ||||
|       { "glMapGrid1d", (gl_function) glMapGrid1d }, | ||||
|       { "glMapGrid1f", (gl_function) glMapGrid1f }, | ||||
|       { "glMapGrid2d", (gl_function) glMapGrid2d }, | ||||
|       { "glMapGrid2f", (gl_function) glMapGrid2f }, | ||||
|       { "glMaterialf", (gl_function) glMaterialf }, | ||||
|       { "glMaterialfv", (gl_function) glMaterialfv }, | ||||
|       { "glMateriali", (gl_function) glMateriali }, | ||||
|       { "glMaterialiv", (gl_function) glMaterialiv }, | ||||
|       { "glMatrixMode", (gl_function) glMatrixMode }, | ||||
|       { "glMultMatrixd", (gl_function) glMultMatrixd }, | ||||
|       { "glMultMatrixf", (gl_function) glMultMatrixf }, | ||||
|       { "glNewList", (gl_function) glNewList }, | ||||
|       { "glNormal3b", (gl_function) glNormal3b }, | ||||
|       { "glNormal3bv", (gl_function) glNormal3bv }, | ||||
|       { "glNormal3d", (gl_function) glNormal3d }, | ||||
|       { "glNormal3dv", (gl_function) glNormal3dv }, | ||||
|       { "glNormal3f", (gl_function) glNormal3f }, | ||||
|       { "glNormal3fv", (gl_function) glNormal3fv }, | ||||
|       { "glNormal3i", (gl_function) glNormal3i }, | ||||
|       { "glNormal3iv", (gl_function) glNormal3iv }, | ||||
|       { "glNormal3s", (gl_function) glNormal3s }, | ||||
|       { "glNormal3sv", (gl_function) glNormal3sv }, | ||||
|       { "glOrtho", (gl_function) glOrtho }, | ||||
|       { "glPassThrough", (gl_function) glPassThrough }, | ||||
|       { "glPixelMapfv", (gl_function) glPixelMapfv }, | ||||
|       { "glPixelMapuiv", (gl_function) glPixelMapuiv }, | ||||
|       { "glPixelMapusv", (gl_function) glPixelMapusv }, | ||||
|       { "glPixelStoref", (gl_function) glPixelStoref }, | ||||
|       { "glPixelStorei", (gl_function) glPixelStorei }, | ||||
|       { "glPixelTransferf", (gl_function) glPixelTransferf }, | ||||
|       { "glPixelTransferi", (gl_function) glPixelTransferi }, | ||||
|       { "glPixelZoom", (gl_function) glPixelZoom }, | ||||
|       { "glPointSize", (gl_function) glPointSize }, | ||||
|       { "glPolygonMode", (gl_function) glPolygonMode }, | ||||
|       { "glPolygonOffset", (gl_function) glPolygonOffset }, | ||||
|       { "glPolygonStipple", (gl_function) glPolygonStipple }, | ||||
|       { "glPopAttrib", (gl_function) glPopAttrib }, | ||||
|       { "glPopMatrix", (gl_function) glPopMatrix }, | ||||
|       { "glPopName", (gl_function) glPopName }, | ||||
|       { "glPushAttrib", (gl_function) glPushAttrib }, | ||||
|       { "glPushMatrix", (gl_function) glPushMatrix }, | ||||
|       { "glPushName", (gl_function) glPushName }, | ||||
|       { "glRasterPos2d", (gl_function) glRasterPos2d }, | ||||
|       { "glRasterPos2dv", (gl_function) glRasterPos2dv }, | ||||
|       { "glRasterPos2f", (gl_function) glRasterPos2f }, | ||||
|       { "glRasterPos2fv", (gl_function) glRasterPos2fv }, | ||||
|       { "glRasterPos2i", (gl_function) glRasterPos2i }, | ||||
|       { "glRasterPos2iv", (gl_function) glRasterPos2iv }, | ||||
|       { "glRasterPos2s", (gl_function) glRasterPos2s }, | ||||
|       { "glRasterPos2sv", (gl_function) glRasterPos2sv }, | ||||
|       { "glRasterPos3d", (gl_function) glRasterPos3d }, | ||||
|       { "glRasterPos3dv", (gl_function) glRasterPos3dv }, | ||||
|       { "glRasterPos3f", (gl_function) glRasterPos3f }, | ||||
|       { "glRasterPos3fv", (gl_function) glRasterPos3fv }, | ||||
|       { "glRasterPos3i", (gl_function) glRasterPos3i }, | ||||
|       { "glRasterPos3iv", (gl_function) glRasterPos3iv }, | ||||
|       { "glRasterPos3s", (gl_function) glRasterPos3s }, | ||||
|       { "glRasterPos3sv", (gl_function) glRasterPos3sv }, | ||||
|       { "glRasterPos4d", (gl_function) glRasterPos4d }, | ||||
|       { "glRasterPos4dv", (gl_function) glRasterPos4dv }, | ||||
|       { "glRasterPos4f", (gl_function) glRasterPos4f }, | ||||
|       { "glRasterPos4fv", (gl_function) glRasterPos4fv }, | ||||
|       { "glRasterPos4i", (gl_function) glRasterPos4i }, | ||||
|       { "glRasterPos4iv", (gl_function) glRasterPos4iv }, | ||||
|       { "glRasterPos4s", (gl_function) glRasterPos4s }, | ||||
|       { "glRasterPos4sv", (gl_function) glRasterPos4sv }, | ||||
|       { "glReadBuffer", (gl_function) glReadBuffer }, | ||||
|       { "glReadPixels", (gl_function) glReadPixels }, | ||||
|       { "glRectd", (gl_function) glRectd }, | ||||
|       { "glRectdv", (gl_function) glRectdv }, | ||||
|       { "glRectf", (gl_function) glRectf }, | ||||
|       { "glRectfv", (gl_function) glRectfv }, | ||||
|       { "glRecti", (gl_function) glRecti }, | ||||
|       { "glRectiv", (gl_function) glRectiv }, | ||||
|       { "glRects", (gl_function) glRects }, | ||||
|       { "glRectsv", (gl_function) glRectsv }, | ||||
|       { "glRenderMode", (gl_function) glRenderMode }, | ||||
|       { "glRotated", (gl_function) glRotated }, | ||||
|       { "glRotatef", (gl_function) glRotatef }, | ||||
|       { "glScaled", (gl_function) glScaled }, | ||||
|       { "glScalef", (gl_function) glScalef }, | ||||
|       { "glScissor", (gl_function) glScissor }, | ||||
|       { "glSelectBuffer", (gl_function) glSelectBuffer }, | ||||
|       { "glShadeModel", (gl_function) glShadeModel }, | ||||
|       { "glStencilFunc", (gl_function) glStencilFunc }, | ||||
|       { "glStencilMask", (gl_function) glStencilMask }, | ||||
|       { "glStencilOp", (gl_function) glStencilOp }, | ||||
|       { "glTexCoord1d", (gl_function) glTexCoord1d }, | ||||
|       { "glTexCoord1dv", (gl_function) glTexCoord1dv }, | ||||
|       { "glTexCoord1f", (gl_function) glTexCoord1f }, | ||||
|       { "glTexCoord1fv", (gl_function) glTexCoord1fv }, | ||||
|       { "glTexCoord1i", (gl_function) glTexCoord1i }, | ||||
|       { "glTexCoord1iv", (gl_function) glTexCoord1iv }, | ||||
|       { "glTexCoord1s", (gl_function) glTexCoord1s }, | ||||
|       { "glTexCoord1sv", (gl_function) glTexCoord1sv }, | ||||
|       { "glTexCoord2d", (gl_function) glTexCoord2d }, | ||||
|       { "glTexCoord2dv", (gl_function) glTexCoord2dv }, | ||||
|       { "glTexCoord2f", (gl_function) glTexCoord2f }, | ||||
|       { "glTexCoord2fv", (gl_function) glTexCoord2fv }, | ||||
|       { "glTexCoord2i", (gl_function) glTexCoord2i }, | ||||
|       { "glTexCoord2iv", (gl_function) glTexCoord2iv }, | ||||
|       { "glTexCoord2s", (gl_function) glTexCoord2s }, | ||||
|       { "glTexCoord2sv", (gl_function) glTexCoord2sv }, | ||||
|       { "glTexCoord3d", (gl_function) glTexCoord3d }, | ||||
|       { "glTexCoord3dv", (gl_function) glTexCoord3dv }, | ||||
|       { "glTexCoord3f", (gl_function) glTexCoord3f }, | ||||
|       { "glTexCoord3fv", (gl_function) glTexCoord3fv }, | ||||
|       { "glTexCoord3i", (gl_function) glTexCoord3i }, | ||||
|       { "glTexCoord3iv", (gl_function) glTexCoord3iv }, | ||||
|       { "glTexCoord3s", (gl_function) glTexCoord3s }, | ||||
|       { "glTexCoord3sv", (gl_function) glTexCoord3sv }, | ||||
|       { "glTexCoord4d", (gl_function) glTexCoord4d }, | ||||
|       { "glTexCoord4dv", (gl_function) glTexCoord4dv }, | ||||
|       { "glTexCoord4f", (gl_function) glTexCoord4f }, | ||||
|       { "glTexCoord4fv", (gl_function) glTexCoord4fv }, | ||||
|       { "glTexCoord4i", (gl_function) glTexCoord4i }, | ||||
|       { "glTexCoord4iv", (gl_function) glTexCoord4iv }, | ||||
|       { "glTexCoord4s", (gl_function) glTexCoord4s }, | ||||
|       { "glTexCoord4sv", (gl_function) glTexCoord4sv }, | ||||
|       { "glTexEnvf", (gl_function) glTexEnvf }, | ||||
|       { "glTexEnvfv", (gl_function) glTexEnvfv }, | ||||
|       { "glTexEnvi", (gl_function) glTexEnvi }, | ||||
|       { "glTexEnviv", (gl_function) glTexEnviv }, | ||||
|       { "glTexGend", (gl_function) glTexGend }, | ||||
|       { "glTexGendv", (gl_function) glTexGendv }, | ||||
|       { "glTexGenf", (gl_function) glTexGenf }, | ||||
|       { "glTexGenfv", (gl_function) glTexGenfv }, | ||||
|       { "glTexGeni", (gl_function) glTexGeni }, | ||||
|       { "glTexGeniv", (gl_function) glTexGeniv }, | ||||
|       { "glTexImage1D", (gl_function) glTexImage1D }, | ||||
|       { "glTexImage2D", (gl_function) glTexImage2D }, | ||||
|       { "glTexParameterf", (gl_function) glTexParameterf }, | ||||
|       { "glTexParameterfv", (gl_function) glTexParameterfv }, | ||||
|       { "glTexParameteri", (gl_function) glTexParameteri }, | ||||
|       { "glTexParameteriv", (gl_function) glTexParameteriv }, | ||||
|       { "glTranslated", (gl_function) glTranslated }, | ||||
|       { "glTranslatef", (gl_function) glTranslatef }, | ||||
|       { "glVertex2d", (gl_function) glVertex2d }, | ||||
|       { "glVertex2dv", (gl_function) glVertex2dv }, | ||||
|       { "glVertex2f", (gl_function) glVertex2f }, | ||||
|       { "glVertex2fv", (gl_function) glVertex2fv }, | ||||
|       { "glVertex2i", (gl_function) glVertex2i }, | ||||
|       { "glVertex2iv", (gl_function) glVertex2iv }, | ||||
|       { "glVertex2s", (gl_function) glVertex2s }, | ||||
|       { "glVertex2sv", (gl_function) glVertex2sv }, | ||||
|       { "glVertex3d", (gl_function) glVertex3d }, | ||||
|       { "glVertex3dv", (gl_function) glVertex3dv }, | ||||
|       { "glVertex3f", (gl_function) glVertex3f }, | ||||
|       { "glVertex3fv", (gl_function) glVertex3fv }, | ||||
|       { "glVertex3i", (gl_function) glVertex3i }, | ||||
|       { "glVertex3iv", (gl_function) glVertex3iv }, | ||||
|       { "glVertex3s", (gl_function) glVertex3s }, | ||||
|       { "glVertex3sv", (gl_function) glVertex3sv }, | ||||
|       { "glVertex4d", (gl_function) glVertex4d }, | ||||
|       { "glVertex4dv", (gl_function) glVertex4dv }, | ||||
|       { "glVertex4f", (gl_function) glVertex4f }, | ||||
|       { "glVertex4fv", (gl_function) glVertex4fv }, | ||||
|       { "glVertex4i", (gl_function) glVertex4i }, | ||||
|       { "glVertex4iv", (gl_function) glVertex4iv }, | ||||
|       { "glVertex4s", (gl_function) glVertex4s }, | ||||
|       { "glVertex4sv", (gl_function) glVertex4sv }, | ||||
|       { "glViewport", (gl_function) glViewport }, | ||||
|  | ||||
|       /* OpenGL 1.1 functions */ | ||||
|       { "glEnableClientState", (gl_function) glEnableClientState }, | ||||
|       { "glDisableClientState", (gl_function) glDisableClientState }, | ||||
|       { "glPushClientAttrib", (gl_function) glPushClientAttrib }, | ||||
|       { "glPopClientAttrib", (gl_function) glPopClientAttrib }, | ||||
|       { "glIndexub", (gl_function) glIndexub }, | ||||
|       { "glIndexubv", (gl_function) glIndexubv }, | ||||
|       { "glVertexPointer", (gl_function) glVertexPointer }, | ||||
|       { "glNormalPointer", (gl_function) glNormalPointer }, | ||||
|       { "glColorPointer", (gl_function) glColorPointer }, | ||||
|       { "glIndexPointer", (gl_function) glIndexPointer }, | ||||
|       { "glTexCoordPointer", (gl_function) glTexCoordPointer }, | ||||
|       { "glEdgeFlagPointer", (gl_function) glEdgeFlagPointer }, | ||||
|       { "glGetPointerv", (gl_function) glGetPointerv }, | ||||
|       { "glArrayElement", (gl_function) glArrayElement }, | ||||
|       { "glDrawArrays", (gl_function) glDrawArrays }, | ||||
|       { "glDrawElements", (gl_function) glDrawElements }, | ||||
|       { "glInterleavedArrays", (gl_function) glInterleavedArrays }, | ||||
|       { "glGenTextures", (gl_function) glGenTextures }, | ||||
|       { "glDeleteTextures", (gl_function) glDeleteTextures }, | ||||
|       { "glBindTexture", (gl_function) glBindTexture }, | ||||
|       { "glPrioritizeTextures", (gl_function) glPrioritizeTextures }, | ||||
|       { "glAreTexturesResident", (gl_function) glAreTexturesResident }, | ||||
|       { "glIsTexture", (gl_function) glIsTexture }, | ||||
|       { "glTexSubImage1D", (gl_function) glTexSubImage1D }, | ||||
|       { "glTexSubImage2D", (gl_function) glTexSubImage2D }, | ||||
|       { "glArrayElement", (gl_function) glArrayElement }, | ||||
|       { "glBindTexture", (gl_function) glBindTexture }, | ||||
|       { "glColorPointer", (gl_function) glColorPointer }, | ||||
|       { "glCopyTexImage1D", (gl_function) glCopyTexImage1D }, | ||||
|       { "glCopyTexImage2D", (gl_function) glCopyTexImage2D }, | ||||
|       { "glCopyTexSubImage1D", (gl_function) glCopyTexSubImage1D }, | ||||
|       { "glCopyTexSubImage2D", (gl_function) glCopyTexSubImage2D }, | ||||
|       { "glDeleteTextures", (gl_function) glDeleteTextures }, | ||||
|       { "glDisableClientState", (gl_function) glDisableClientState }, | ||||
|       { "glDrawArrays", (gl_function) glDrawArrays }, | ||||
|       { "glDrawElements", (gl_function) glDrawElements }, | ||||
|       { "glEdgeFlagPointer", (gl_function) glEdgeFlagPointer }, | ||||
|       { "glEnableClientState", (gl_function) glEnableClientState }, | ||||
|       { "glGenTextures", (gl_function) glGenTextures }, | ||||
|       { "glGetPointerv", (gl_function) glGetPointerv }, | ||||
|       { "glIndexPointer", (gl_function) glIndexPointer }, | ||||
|       { "glIndexub", (gl_function) glIndexub }, | ||||
|       { "glIndexubv", (gl_function) glIndexubv }, | ||||
|       { "glInterleavedArrays", (gl_function) glInterleavedArrays }, | ||||
|       { "glIsTexture", (gl_function) glIsTexture }, | ||||
|       { "glNormalPointer", (gl_function) glNormalPointer }, | ||||
|       { "glPopClientAttrib", (gl_function) glPopClientAttrib }, | ||||
|       { "glPrioritizeTextures", (gl_function) glPrioritizeTextures }, | ||||
|       { "glPushClientAttrib", (gl_function) glPushClientAttrib }, | ||||
|       { "glTexCoordPointer", (gl_function) glTexCoordPointer }, | ||||
|       { "glTexSubImage1D", (gl_function) glTexSubImage1D }, | ||||
|       { "glTexSubImage2D", (gl_function) glTexSubImage2D }, | ||||
|       { "glVertexPointer", (gl_function) glVertexPointer }, | ||||
|  | ||||
|       /* OpenGL 1.2 functions */ | ||||
|       { "glCopyTexSubImage3D", (gl_function) glCopyTexSubImage3D }, | ||||
|       { "glDrawRangeElements", (gl_function) glDrawRangeElements }, | ||||
|       { "glTexImage3D", (gl_function) glTexImage3D }, | ||||
|       { "glTexSubImage3D", (gl_function) glTexSubImage3D }, | ||||
|       { "glCopyTexSubImage3D", (gl_function) glCopyTexSubImage3D }, | ||||
|       /* NOTE: 1.2 imaging subset functions not implemented in Mesa */ | ||||
|  | ||||
|       /* ARB_imaging functions */ | ||||
|       { "glBlendColor", (gl_function) glBlendColor }, | ||||
|       { "glBlendEquation", (gl_function) glBlendEquation }, | ||||
|       { "glColorSubTable", (gl_function) glColorSubTable }, | ||||
|       { "glColorTable", (gl_function) glColorTable }, | ||||
|       { "glColorTableParameterfv", (gl_function) glColorTableParameterfv }, | ||||
|       { "glColorTableParameteriv", (gl_function) glColorTableParameteriv }, | ||||
|       { "glConvolutionFilter1D", (gl_function) glConvolutionFilter1D }, | ||||
|       { "glConvolutionFilter2D", (gl_function) glConvolutionFilter2D }, | ||||
|       { "glConvolutionParameterf", (gl_function) glConvolutionParameterf }, | ||||
|       { "glConvolutionParameterfv", (gl_function) glConvolutionParameterfv }, | ||||
|       { "glConvolutionParameteri", (gl_function) glConvolutionParameteri }, | ||||
|       { "glConvolutionParameteriv", (gl_function) glConvolutionParameteriv }, | ||||
|       { "glCopyColorSubTable", (gl_function) glCopyColorSubTable }, | ||||
|       { "glCopyColorTable", (gl_function) glCopyColorTable }, | ||||
|       { "glCopyConvolutionFilter1D", (gl_function) glCopyConvolutionFilter1D }, | ||||
|       { "glCopyConvolutionFilter2D", (gl_function) glCopyConvolutionFilter2D }, | ||||
|       { "glGetColorTable", (gl_function) glGetColorTable }, | ||||
|       { "glGetColorTableParameterfv", (gl_function) glGetColorTableParameterfv }, | ||||
|       { "glGetColorTableParameteriv", (gl_function) glGetColorTableParameteriv }, | ||||
|       { "glGetConvolutionFilter", (gl_function) glGetConvolutionFilter }, | ||||
|       { "glGetConvolutionParameterfv", (gl_function) glGetConvolutionParameterfv }, | ||||
|       { "glGetConvolutionParameteriv", (gl_function) glGetConvolutionParameteriv }, | ||||
|       { "glGetHistogram", (gl_function) glGetHistogram }, | ||||
|       { "glGetHistogramParameterfv", (gl_function) glGetHistogramParameterfv }, | ||||
|       { "glGetHistogramParameteriv", (gl_function) glGetHistogramParameteriv }, | ||||
|       { "glGetMinmax", (gl_function) glGetMinmax }, | ||||
|       { "glGetMinmaxParameterfv", (gl_function) glGetMinmaxParameterfv }, | ||||
|       { "glGetMinmaxParameteriv", (gl_function) glGetMinmaxParameteriv }, | ||||
|       { "glGetSeparableFilter", (gl_function) glGetSeparableFilter }, | ||||
|       { "glHistogram", (gl_function) glHistogram }, | ||||
|       { "glMinmax", (gl_function) glMinmax }, | ||||
|       { "glResetHistogram", (gl_function) glResetHistogram }, | ||||
|       { "glResetMinmax", (gl_function) glResetMinmax }, | ||||
|       { "glSeparableFilter2D", (gl_function) glSeparableFilter2D }, | ||||
|  | ||||
|       /* GL_EXT_paletted_texture */ | ||||
|       { "glColorTableEXT", (gl_function) glColorTableEXT }, | ||||
|       { "glColorSubTableEXT", (gl_function) glColorSubTableEXT }, | ||||
|       { "glGetColorTableEXT", (gl_function) glGetColorTableEXT }, | ||||
|       { "glGetColorTableParameterfvEXT", (gl_function) glGetColorTableParameterfvEXT }, | ||||
|       { "glGetColorTableParameterivEXT", (gl_function) glGetColorTableParameterivEXT }, | ||||
|  | ||||
|       /* GL_EXT_compiled_vertex_array */ | ||||
|       { "glLockArraysEXT", (gl_function) glLockArraysEXT }, | ||||
|       { "glUnlockArraysEXT", (gl_function) glUnlockArraysEXT }, | ||||
|  | ||||
|       /* GL_EXT_point_parameters */ | ||||
|       { "glPointParameterfEXT", (gl_function) glPointParameterfEXT }, | ||||
|       { "glPointParameterfvEXT", (gl_function) glPointParameterfvEXT }, | ||||
|  | ||||
|       /* GL_EXT_polygon_offset */ | ||||
|       { "glPolygonOffsetEXT", (gl_function) glPolygonOffsetEXT }, | ||||
|  | ||||
|       /* GL_EXT_blend_minmax */ | ||||
|       { "glBlendEquationEXT", (gl_function) glBlendEquationEXT }, | ||||
| @@ -262,9 +660,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | ||||
|       /* GL_EXT_blend_color */ | ||||
|       { "glBlendColorEXT", (gl_function) glBlendColorEXT }, | ||||
|  | ||||
|       /* GL_EXT_polygon_offset */ | ||||
|       { "glPolygonOffsetEXT", (gl_function) glPolygonOffsetEXT }, | ||||
|  | ||||
|       /* GL_EXT_vertex_arrays */ | ||||
|       { "glVertexPointerEXT", (gl_function) glVertexPointerEXT }, | ||||
|       { "glNormalPointerEXT", (gl_function) glNormalPointerEXT }, | ||||
| @@ -289,13 +684,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | ||||
|       { "glTexSubImage3DEXT", (gl_function) glTexSubImage3DEXT }, | ||||
|       { "glCopyTexSubImage3DEXT", (gl_function) glCopyTexSubImage3DEXT }, | ||||
|  | ||||
|       /* GL_EXT_color_table */ | ||||
|       { "glColorTableEXT", (gl_function) glColorTableEXT }, | ||||
|       { "glColorSubTableEXT", (gl_function) glColorSubTableEXT }, | ||||
|       { "glGetColorTableEXT", (gl_function) glGetColorTableEXT }, | ||||
|       { "glGetColorTableParameterfvEXT", (gl_function) glGetColorTableParameterfvEXT }, | ||||
|       { "glGetColorTableParameterivEXT", (gl_function) glGetColorTableParameterivEXT }, | ||||
|  | ||||
|       /* GL_ARB_multitexture */ | ||||
|       { "glActiveTextureARB", (gl_function) glActiveTextureARB }, | ||||
|       { "glClientActiveTextureARB", (gl_function) glClientActiveTextureARB }, | ||||
| @@ -332,10 +720,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | ||||
|       { "glMultiTexCoord4sARB", (gl_function) glMultiTexCoord4sARB }, | ||||
|       { "glMultiTexCoord4svARB", (gl_function) glMultiTexCoord4svARB }, | ||||
|  | ||||
|       /* GL_EXT_point_parameters */ | ||||
|       { "glPointParameterfEXT", (gl_function) glPointParameterfEXT }, | ||||
|       { "glPointParameterfvEXT", (gl_function) glPointParameterfvEXT }, | ||||
|  | ||||
|       /* GL_INGR_blend_func_separate */ | ||||
|       { "glBlendFuncSeparateINGR", (gl_function) glBlendFuncSeparateINGR }, | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /* $Id: extensions.h,v 1.5 1999/10/16 11:30:27 brianp Exp $ */ | ||||
| /* $Id: extensions.h,v 1.5.2.1 1999/11/20 13:13:50 miklos Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Mesa 3-D graphics library | ||||
| @@ -39,7 +39,7 @@ | ||||
|  */ | ||||
| extern int gl_extensions_add( struct gl_context *ctx, int state,  | ||||
| 			      const char *name, void (*notify)( void ) ); | ||||
|  | ||||
| extern GLboolean gl_extension_is_enabled( GLcontext *ctx, const char *name); | ||||
| extern int gl_extensions_enable( struct gl_context *ctx, const char *name ); | ||||
| extern int gl_extensions_disable( struct gl_context *ctx, const char *name ); | ||||
| extern void gl_extensions_dtr( struct gl_context *ctx ); | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user