Compare commits
	
		
			188 Commits
		
	
	
		
			mesa-20.1.
			...
			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_MAJOR=3 | ||||||
| MESA_MINOR=3 | MESA_MINOR=2 | ||||||
| MESA_TINY=0 | MESA_TINY=0 | ||||||
| VERSION=$(MESA_MAJOR).$(MESA_MINOR) | VERSION=$(MESA_MAJOR).$(MESA_MINOR) | ||||||
|  |  | ||||||
| # Mesa 3-D graphics library | # 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 | # Permission is hereby granted, free of charge, to any person obtaining a | ||||||
| # copy of this software and associated documentation files (the "Software"), | # 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 | # 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. | # 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. | # CFLAGS line and add -lXext to the XLIBS line. | ||||||
| # | # | ||||||
| # Some compilers complain about const parameters.  Adding -DNO_CONST to the | # Some compilers complain about const parameters.  Adding -DNO_CONST to the | ||||||
| @@ -183,7 +183,7 @@ freebsd: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.freebsd" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -194,7 +194,7 @@ freebsd-386: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.freebsd" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" \ | 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" \ | ||||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S" | ||||||
| @@ -217,7 +217,7 @@ hpux9: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -228,7 +228,7 @@ hpux9-gcc: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -239,7 +239,7 @@ hpux9-sl: | |||||||
| 	"GLUT_LIB = libglut.sl" \ | 	"GLUT_LIB = libglut.sl" \ | ||||||
| 	"GLW_LIB = libGLw.sl" \ | 	"GLW_LIB = libGLw.sl" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.hpux" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R5 -s -Wl,+s,-B,nonfatal,-B,immediate -lXext -lXmu -lXi -lX11 -lm" | 	"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" \ | 	"GLUT_LIB = libglut.sl" \ | ||||||
| 	"GLW_LIB = libGLw.sl" \ | 	"GLW_LIB = libGLw.sl" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.hpux" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -261,7 +261,7 @@ hpux10: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -272,7 +272,7 @@ hpux10-sl: | |||||||
| 	"GLUT_LIB = libglut" \ | 	"GLUT_LIB = libglut" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.hpux" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | 	"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" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | 	"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" \ | 	"GLUT_LIB = libglut.sl" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.hpux" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -307,7 +307,7 @@ irix4: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"CC = cc" \ | ||||||
| 	"CFLAGS = -O2 -ansi -prototypes -DUSE_XSHM" \ | 	"CFLAGS = -O2 -ansi -prototypes -DSHM" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||||
| 	"XLIBS = -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -319,7 +319,7 @@ irix5: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"CC = cc" \ | ||||||
| 	"CFLAGS = -O2 -ansi -fullwarn -DUSE_XSHM -DNO_CONST" \ | 	"CFLAGS = -O2 -ansi -fullwarn -DSHM -DNO_CONST" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -331,7 +331,7 @@ irix5-gcc: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"CC = gcc" \ | ||||||
| 	"CFLAGS = -O2 -pedantic -DUSE_XSHM" \ | 	"CFLAGS = -O2 -pedantic -DSHM" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -343,7 +343,7 @@ irix5-dso: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = cc" \ | 	"CC = cc" \ | ||||||
| 	"CFLAGS = -O2 -ansi -fullwarn -DUSE_XSHM -DNO_CONST" \ | 	"CFLAGS = -O2 -ansi -fullwarn -DSHM -DNO_CONST" \ | ||||||
| 	"MAKELIB = ../bin/mklib.irix5" \ | 	"MAKELIB = ../bin/mklib.irix5" \ | ||||||
| 	"XLIBS = -rpath ../lib -lX11 -lXmu -lXi -lm" | 	"XLIBS = -rpath ../lib -lX11 -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -354,7 +354,7 @@ irix6-o32: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"CC = cc" \ | ||||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \ | 	"CFLAGS = -32 -mips2 -O2 -ansi -DSHM -DNO_CONST" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -365,7 +365,7 @@ irix6-o32-dso: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = cc" \ | 	"CC = cc" \ | ||||||
| 	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \ | 	"CFLAGS = -32 -mips2 -O2 -ansi -DSHM -DNO_CONST" \ | ||||||
| 	"MAKELIB = ../bin/mklib.irix6-32" \ | 	"MAKELIB = ../bin/mklib.irix6-32" \ | ||||||
| 	"XLIBS = -rpath ../lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -rpath ../lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -391,7 +391,7 @@ irix6-n32-dso: | |||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"LIBDIR = ../lib32" \ | 	"LIBDIR = ../lib32" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.irix6-n32" \ | ||||||
| 	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lfpe -lm" | 	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lfpe -lm" | ||||||
|  |  | ||||||
| @@ -403,7 +403,7 @@ irix6-gcc-n32-sl: | |||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"LIBDIR = ../lib32" \ | 	"LIBDIR = ../lib32" \ | ||||||
| 	"CC = gcc" \ | 	"CC = gcc" \ | ||||||
| 	"CFLAGS = -mabi=n32 -mips3 -O3 -DUSE_XSHM" \ | 	"CFLAGS = -mabi=n32 -mips3 -O3 -DSHM" \ | ||||||
| 	"MAKELIB = ../bin/mklib.irix6-n32" \ | 	"MAKELIB = ../bin/mklib.irix6-n32" \ | ||||||
| 	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lm" | 	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -423,7 +423,7 @@ irix6-64: | |||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"LIBDIR = ../lib64" \ | 	"LIBDIR = ../lib64" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -435,12 +435,12 @@ irix6-64-dso: | |||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"LIBDIR = ../lib64" \ | 	"LIBDIR = ../lib64" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.irix6-64" \ | ||||||
| 	"XLIBS = -rpath ../lib64 -lX11 -lXmu -lXi -lm" | 	"XLIBS = -rpath ../lib64 -lX11 -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| # May want to try these CFLAGS for better performance under Linux and GCC: | # 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 | # -fexpensive-optimizations -fomit-frame-pointer -ffast-math | ||||||
| # and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium | # and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium | ||||||
|  |  | ||||||
| @@ -451,7 +451,7 @@ linux: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||||
|  |  | ||||||
| @@ -465,7 +465,7 @@ linux-elf: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||||
|  |  | ||||||
| @@ -476,7 +476,7 @@ linux-glide: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" | 	"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" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -500,7 +500,7 @@ linux-386-elf: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -512,7 +512,7 @@ linux-386-glide: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -524,7 +524,7 @@ linux-386-glide-mits: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm -lpthread" \ | 	"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" | 	"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" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm -lpthread" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -548,7 +548,7 @@ linux-386-opt-glide: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -560,7 +560,7 @@ linux-3dnow: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | ||||||
| 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | ||||||
| @@ -578,7 +578,7 @@ linux-3dnow-glide: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \ | 	"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 \ | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | ||||||
| @@ -598,7 +598,7 @@ linux-386-pthread-shared-glide: | |||||||
| 	"GLU_LIB = libGLU.so" \ | 	"GLU_LIB = libGLU.so" \ | ||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../mklib.glide" \ | ||||||
| 	"XLIBS = -L/usr/X11/lib -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \ | 	"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 \ | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \ | ||||||
| @@ -612,7 +612,7 @@ linux-ggi: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc"  \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ggi" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lggi -lm" | 	"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" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc"  \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ggi" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lggi -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -637,7 +637,7 @@ linux-alpha: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -648,7 +648,7 @@ linux-alpha-elf: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -664,7 +664,7 @@ linux-ppc: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||||
|  |  | ||||||
| @@ -676,7 +676,7 @@ linux-ppc-so: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||||
|  |  | ||||||
| @@ -687,7 +687,7 @@ linux-386-pthread: | |||||||
| 	"GLU_LIB = libGLU.a" \ | 	"GLU_LIB = libGLU.a" \ | ||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -699,7 +699,7 @@ linux-386-pthread-shared: | |||||||
| 	"GLU_LIB = libGLU.so" \ | 	"GLU_LIB = libGLU.so" \ | ||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -711,7 +711,7 @@ linux-sparc: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"CC = gcc" \ | ||||||
| 	"CFLAGS = -pedantic -funroll-loops -O3 -DUSE_XSHM" \ | 	"CFLAGS = -pedantic -funroll-loops -O3 -DSHM" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXt -lSM -lICE -lXmu -lXi -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXt -lSM -lICE -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -723,7 +723,7 @@ linux-sparc5-elf: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | ||||||
|  |  | ||||||
| @@ -735,12 +735,12 @@ linux-sparc-ultra: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" | 	"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: | # 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 | # -fexpensive-optimizations -fomit-frame-pointer -ffast-math | ||||||
| # and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium | # and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium | ||||||
|  |  | ||||||
| @@ -751,7 +751,7 @@ lynxos: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/X11/lib -lXext -lXi -lXmu -lX11 -lbsd -lm" | 	"XLIBS = -L/usr/X11/lib -lXext -lXi -lXmu -lX11 -lbsd -lm" | ||||||
|  |  | ||||||
| @@ -795,7 +795,7 @@ netbsd: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.netbsd" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | 	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" | ||||||
|  |  | ||||||
| @@ -815,7 +815,7 @@ openbsd: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.openbsd" \ | ||||||
| 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -856,7 +856,7 @@ osf1: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -867,7 +867,7 @@ osf1-sl: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.osf1" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -934,7 +934,7 @@ solaris-x86: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.solaris" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"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" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.solaris" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -956,7 +956,7 @@ sunos4: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = acc" \ | 	"CC = acc" \ | ||||||
| 	"CFLAGS = -O -DUSE_XSHM -DSUNOS4" \ | 	"CFLAGS = -O -DSHM -DSUNOS4" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -967,7 +967,7 @@ sunos4-sl: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = acc" \ | 	"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" \ | 	"MAKELIB = ld -assert pure-text -o" \ | ||||||
| 	"XLIBS = -L/usr/lib/X11R5 -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/lib/X11R5 -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -978,7 +978,7 @@ sunos4-gcc: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"CC = gcc" \ | ||||||
| 	"CFLAGS = -O3 -DUSE_XSHM -DSUNOS4 -I/usr/openwin/include" \ | 	"CFLAGS = -O3 -DSHM -DSUNOS4 -I/usr/openwin/include" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -989,7 +989,7 @@ sunos4-gcc-sl: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.sunos4" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -1000,7 +1000,7 @@ sunos4-gcc-x11r6-sl: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.sunos4" \ | ||||||
| 	"XLIBS = -L/usr/X11R6.3/lib/X11 -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/X11R6.3/lib/X11 -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -1011,7 +1011,7 @@ sunos5: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"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" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"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" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"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" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"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" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -1066,7 +1066,7 @@ sunos5-gcc-sl: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"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" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"CC = gcc" \ | ||||||
| 	"CFLAGS = -fPIC -O3 -DUSE_XSHM -DSOLARIS_2_4_BUG" \ | 	"CFLAGS = -fPIC -O3 -DSHM -DSOLARIS_2_4_BUG" \ | ||||||
| 	"MAKELIB = ../bin/mklib.sunos5" \ | 	"MAKELIB = ../bin/mklib.sunos5" \ | ||||||
| 	"XLIBS = -lSM -lICE -lX11 -lXext -lXmu -lXi -lnsl -lsocket -lm" | 	"XLIBS = -lSM -lICE -lX11 -lXext -lXmu -lXi -lnsl -lsocket -lm" | ||||||
|  |  | ||||||
| @@ -1088,7 +1088,7 @@ sunos5-pthread: | |||||||
| 	"GLU_LIB = libGLU.a" \ | 	"GLU_LIB = libGLU.a" \ | ||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lpthread -lm" | 	"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" \ | 	"GLU_LIB = libGLU.a" \ | ||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lthread -lm" | 	"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" \ | 	"GLU_LIB = libGLU.a" \ | ||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ |       	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lthread -lm" | 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lthread -lm" | ||||||
|  |  | ||||||
| @@ -1121,7 +1121,7 @@ sunos5-gcc-pthread: | |||||||
| 	"GLU_LIB = libGLU.a" \ | 	"GLU_LIB = libGLU.a" \ | ||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lpthread -lm" | 	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lpthread -lm" | ||||||
|  |  | ||||||
| @@ -1133,7 +1133,7 @@ sunSolaris-CC: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = CC" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | 	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -1179,7 +1179,7 @@ unixware: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"CC = cc" \ | ||||||
| 	"CFLAGS = -O -I/usr/X/include -DUSE_XSHM" \ | 	"CFLAGS = -O -I/usr/X/include -DSHM" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-ruv" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm" | ||||||
|  |  | ||||||
| @@ -1190,7 +1190,7 @@ unixware-shared: | |||||||
| 	"GLUT_LIB = libglut" \ | 	"GLUT_LIB = libglut" \ | ||||||
| 	"GLW_LIB = libGLw" \ | 	"GLW_LIB = libGLw" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.solaris" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm" | ||||||
|  |  | ||||||
| @@ -1230,7 +1230,7 @@ irix-debug: | |||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"LIBDIR = ../lib32" \ | 	"LIBDIR = ../lib32" \ | ||||||
| 	"CC = cc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||||
| 	"XLIBS = -rpath ../lib32 -lX11 -lXext -lXmu -lXi -lfpe -lXext -lXmu -lXi -lm" | 	"XLIBS = -rpath ../lib32 -lX11 -lXext -lXmu -lXi -lfpe -lXext -lXmu -lXi -lm" | ||||||
|  |  | ||||||
| @@ -1241,7 +1241,7 @@ DEBUG: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = cc" \ | 	"CC = cc" \ | ||||||
| 	"CFLAGS = -g -ansi -prototypes -fullwarn -DUSE_XSHM -DDEBUG" \ | 	"CFLAGS = -g -ansi -prototypes -fullwarn -DSHM -DDEBUG" \ | ||||||
| 	"MAKELIB = ../bin/mklib.ar-rcv" \ | 	"MAKELIB = ../bin/mklib.ar-rcv" \ | ||||||
| 	"XLIBS = -lX11 -lXext -lXmu -lXi -lfpe -lm" | 	"XLIBS = -lX11 -lXext -lXmu -lXi -lfpe -lm" | ||||||
|  |  | ||||||
| @@ -1253,7 +1253,7 @@ linux-debug: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"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" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -1265,9 +1265,9 @@ linux-elf-debug: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
|  |  | ||||||
| linux-glide-debug: | linux-glide-debug: | ||||||
| @@ -1277,7 +1277,7 @@ linux-glide-debug: | |||||||
| 	"GLUT_LIB = libglut.so" \ | 	"GLUT_LIB = libglut.so" \ | ||||||
| 	"GLW_LIB = libGLw.so" \ | 	"GLW_LIB = libGLw.so" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.linux" \ | ||||||
| 	"XLIBS = -L/usr/local/glide/lib -lglide2x -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm" \ | 	"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" | 	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S" | ||||||
| @@ -1290,7 +1290,7 @@ linux-prof: | |||||||
| 	"GLUT_LIB = libglut.a" \ | 	"GLUT_LIB = libglut.a" \ | ||||||
| 	"GLW_LIB = libGLw.a" \ | 	"GLW_LIB = libGLw.a" \ | ||||||
| 	"CC = gcc" \ | 	"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" \ | 	"MAKELIB = ../bin/mklib.ar-ruv" \ | ||||||
| 	"XLIBS = -L/usr/local/glide/lib -lglide2x -L/usr/X11/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \ | 	"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 \ | 	"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 | # 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 | # Permission is hereby granted, free of charge, to any person obtaining a | ||||||
| # copy of this software and associated documentation files (the "Software"), | # 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 xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
| 	if [ -d samples ]  ; then cd samples  ; $(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 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: | 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 xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
| 	if [ -d samples ]  ; then cd samples  ; $(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 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: | 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 xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
| 	if [ -d samples ]  ; then cd samples  ; $(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 book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  | 	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
|  |  | ||||||
|  |  | ||||||
| amiwin: | amiwin: | ||||||
| @@ -225,9 +228,10 @@ cygnus cygnus-linux: | |||||||
| 	touch src-glu/depend | 	touch src-glu/depend | ||||||
| 	cd src ; $(MAKE) -f Makefile.X11 $@ | 	cd src ; $(MAKE) -f Makefile.X11 $@ | ||||||
| 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | 	cd src-glu ; $(MAKE) -f Makefile.X11 $@ | ||||||
| 	cd src-glut ; $(MAKE) -f Makefile.X11 $@ | 	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
| 	cd demos ; $(MAKE) -f Makefile.X11 $@ | 	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
| 	if [ -d xdemos ]  ; then cd xdemos  ; $(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: | macintosh: | ||||||
| 	@echo "See the README file for Macintosh intallation information" | 	@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 xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi | ||||||
| 	if [ -d samples ]  ; then cd samples  ; $(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 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. | # if you change GGI_DEST please change it in ggimesa.conf, too. | ||||||
| DESTDIR=/usr/local | DESTDIR=/usr/local | ||||||
| @@ -314,103 +319,106 @@ realclean: clean | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| DIRECTORY = Mesa-3.1 | DIRECTORY = Mesa-3.2 | ||||||
| LIB_NAME = MesaLib-3.1beta3 | LIB_NAME = MesaLib-3.2 | ||||||
| DEMO_NAME = MesaDemos-3.1beta3 | DEMO_NAME = MesaDemos-3.2 | ||||||
|  |  | ||||||
|  |  | ||||||
| LIB_FILES =	\ | LIB_FILES =	\ | ||||||
| 	$(DIRECTORY)/Makefile*			\ | 	$(DIRECTORY)/Makefile*					\ | ||||||
| 	$(DIRECTORY)/Make-config		\ | 	$(DIRECTORY)/Make-config				\ | ||||||
| 	$(DIRECTORY)/acconfig.h			\ | 	$(DIRECTORY)/acconfig.h					\ | ||||||
| 	$(DIRECTORY)/acinclude.m4		\ | 	$(DIRECTORY)/acinclude.m4				\ | ||||||
| 	$(DIRECTORY)/aclocal.m4			\ | 	$(DIRECTORY)/aclocal.m4					\ | ||||||
| 	$(DIRECTORY)/conf.h.in			\ | 	$(DIRECTORY)/conf.h.in					\ | ||||||
| 	$(DIRECTORY)/config.guess		\ | 	$(DIRECTORY)/config.guess				\ | ||||||
| 	$(DIRECTORY)/config.sub			\ | 	$(DIRECTORY)/config.sub					\ | ||||||
| 	$(DIRECTORY)/configure			\ | 	$(DIRECTORY)/configure					\ | ||||||
| 	$(DIRECTORY)/configure.in		\ | 	$(DIRECTORY)/configure.in				\ | ||||||
| 	$(DIRECTORY)/install-sh			\ | 	$(DIRECTORY)/install-sh					\ | ||||||
| 	$(DIRECTORY)/ltconfig			\ | 	$(DIRECTORY)/ltconfig					\ | ||||||
| 	$(DIRECTORY)/ltmain.sh			\ | 	$(DIRECTORY)/ltmain.sh					\ | ||||||
| 	$(DIRECTORY)/missing			\ | 	$(DIRECTORY)/missing					\ | ||||||
| 	$(DIRECTORY)/mkinstalldirs		\ | 	$(DIRECTORY)/mkinstalldirs				\ | ||||||
| 	$(DIRECTORY)/stamp-h.in			\ | 	$(DIRECTORY)/stamp-h.in					\ | ||||||
| 	$(DIRECTORY)/configure			\ | 	$(DIRECTORY)/configure					\ | ||||||
| 	$(DIRECTORY)/docs/CONFIG		\ | 	$(DIRECTORY)/docs/CONFIG				\ | ||||||
| 	$(DIRECTORY)/docs/CONFORM		\ | 	$(DIRECTORY)/docs/CONFORM				\ | ||||||
| 	$(DIRECTORY)/docs/COPYING		\ | 	$(DIRECTORY)/docs/COPYING				\ | ||||||
| 	$(DIRECTORY)/docs/COPYRIGHT		\ | 	$(DIRECTORY)/docs/COPYRIGHT				\ | ||||||
| 	$(DIRECTORY)/docs/DEVINFO		\ | 	$(DIRECTORY)/docs/DEVINFO				\ | ||||||
| 	$(DIRECTORY)/docs/IAFA-PACKAGE		\ | 	$(DIRECTORY)/docs/IAFA-PACKAGE				\ | ||||||
| 	$(DIRECTORY)/docs/INSTALL		\ | 	$(DIRECTORY)/docs/INSTALL				\ | ||||||
| 	$(DIRECTORY)/docs/INSTALL.GNU		\ | 	$(DIRECTORY)/docs/INSTALL.GNU				\ | ||||||
| 	$(DIRECTORY)/docs/README		\ | 	$(DIRECTORY)/docs/README				\ | ||||||
| 	$(DIRECTORY)/docs/README.*		\ | 	$(DIRECTORY)/docs/README.*				\ | ||||||
| 	$(DIRECTORY)/docs/RELNOTES		\ | 	$(DIRECTORY)/docs/RELNOTES				\ | ||||||
| 	$(DIRECTORY)/docs/VERSIONS		\ | 	$(DIRECTORY)/docs/VERSIONS				\ | ||||||
| 	$(DIRECTORY)/docs/*.spec		\ | 	$(DIRECTORY)/docs/*.spec				\ | ||||||
| 	$(DIRECTORY)/bin/README			\ | 	$(DIRECTORY)/bin/README					\ | ||||||
| 	$(DIRECTORY)/bin/mklib*			\ | 	$(DIRECTORY)/bin/mklib*					\ | ||||||
| 	$(DIRECTORY)/*.BAT			\ | 	$(DIRECTORY)/*.BAT					\ | ||||||
| 	$(DIRECTORY)/*.bat			\ | 	$(DIRECTORY)/*.bat					\ | ||||||
| 	$(DIRECTORY)/descrip.mms		\ | 	$(DIRECTORY)/descrip.mms				\ | ||||||
| 	$(DIRECTORY)/mms-config			\ | 	$(DIRECTORY)/mms-config					\ | ||||||
| 	$(DIRECTORY)/xlib.opt			\ | 	$(DIRECTORY)/xlib.opt					\ | ||||||
| 	$(DIRECTORY)/STARTUP.MK			\ | 	$(DIRECTORY)/STARTUP.MK					\ | ||||||
| 	$(DIRECTORY)/mesawin32.mak		\ | 	$(DIRECTORY)/mesawin32.mak				\ | ||||||
| 	$(DIRECTORY)/Names.win			\ | 	$(DIRECTORY)/Names.win					\ | ||||||
| 	$(DIRECTORY)/win32-openstep.sh		\ | 	$(DIRECTORY)/win32-openstep.sh				\ | ||||||
| 	$(DIRECTORY)/*.dja			\ | 	$(DIRECTORY)/Makefile.dja				\ | ||||||
| 	$(DIRECTORY)/include/GL/Makefile.in	\ | 	$(DIRECTORY)/common.dja					\ | ||||||
| 	$(DIRECTORY)/include/GL/Makefile.am	\ | 	$(DIRECTORY)/include/GL/Makefile.in			\ | ||||||
| 	$(DIRECTORY)/include/GL/dosmesa.h	\ | 	$(DIRECTORY)/include/GL/Makefile.am			\ | ||||||
| 	$(DIRECTORY)/include/GL/foomesa.h	\ | 	$(DIRECTORY)/include/GL/amesa.h				\ | ||||||
| 	$(DIRECTORY)/include/GL/fxmesa.h	\ | 	$(DIRECTORY)/include/GL/dosmesa.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/ggimesa.h	\ | 	$(DIRECTORY)/include/GL/foomesa.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/gl.h		\ | 	$(DIRECTORY)/include/GL/fxmesa.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/gl_mangle.h	\ | 	$(DIRECTORY)/include/GL/ggimesa.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/glu.h		\ | 	$(DIRECTORY)/include/GL/gl.h				\ | ||||||
| 	$(DIRECTORY)/include/GL/glu_mangle.h	\ | 	$(DIRECTORY)/include/GL/gl_mangle.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/glx.h		\ | 	$(DIRECTORY)/include/GL/glu.h				\ | ||||||
| 	$(DIRECTORY)/include/GL/glx_mangle.h	\ | 	$(DIRECTORY)/include/GL/glu_mangle.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/mglmesa.h	\ | 	$(DIRECTORY)/include/GL/glx.h				\ | ||||||
| 	$(DIRECTORY)/include/GL/osmesa.h	\ | 	$(DIRECTORY)/include/GL/glx_mangle.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/svgamesa.h	\ | 	$(DIRECTORY)/include/GL/mesa_wgl.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/wmesa.h		\ | 	$(DIRECTORY)/include/GL/mglmesa.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/xmesa.h		\ | 	$(DIRECTORY)/include/GL/osmesa.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/xmesa_x.h	\ | 	$(DIRECTORY)/include/GL/svgamesa.h			\ | ||||||
| 	$(DIRECTORY)/include/GL/xmesa_xf86.h	\ | 	$(DIRECTORY)/include/GL/wmesa.h				\ | ||||||
| 	$(DIRECTORY)/include/GLView.h		\ | 	$(DIRECTORY)/include/GL/xmesa.h				\ | ||||||
| 	$(DIRECTORY)/include/Makefile.in	\ | 	$(DIRECTORY)/include/GL/xmesa_x.h			\ | ||||||
| 	$(DIRECTORY)/include/Makefile.am	\ | 	$(DIRECTORY)/include/GL/xmesa_xf86.h			\ | ||||||
| 	$(DIRECTORY)/src/Makefile*		\ | 	$(DIRECTORY)/include/GLView.h				\ | ||||||
| 	$(DIRECTORY)/src/descrip.mms		\ | 	$(DIRECTORY)/include/Makefile.in			\ | ||||||
| 	$(DIRECTORY)/src/mms_depend		\ | 	$(DIRECTORY)/include/Makefile.am			\ | ||||||
| 	$(DIRECTORY)/src/mesa.conf		\ | 	$(DIRECTORY)/src/Makefile*				\ | ||||||
| 	$(DIRECTORY)/src/*.def			\ | 	$(DIRECTORY)/src/descrip.mms				\ | ||||||
| 	$(DIRECTORY)/src/depend			\ | 	$(DIRECTORY)/src/mms_depend				\ | ||||||
| 	$(DIRECTORY)/src/*.[chS]		\ | 	$(DIRECTORY)/src/mesa.conf				\ | ||||||
| 	$(DIRECTORY)/src/Allegro/*.[ch]		\ | 	$(DIRECTORY)/src/*.def					\ | ||||||
| 	$(DIRECTORY)/src/BeOS/*.cpp		\ | 	$(DIRECTORY)/src/depend					\ | ||||||
| 	$(DIRECTORY)/src/D3D/*.cpp		\ | 	$(DIRECTORY)/src/*.[chS]				\ | ||||||
| 	$(DIRECTORY)/src/D3D/*.CPP		\ | 	$(DIRECTORY)/src/Allegro/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/D3D/*.h		\ | 	$(DIRECTORY)/src/BeOS/*.cpp				\ | ||||||
| 	$(DIRECTORY)/src/D3D/*.H		\ | 	$(DIRECTORY)/src/D3D/*.cpp				\ | ||||||
| 	$(DIRECTORY)/src/D3D/*.c		\ | 	$(DIRECTORY)/src/D3D/*.CPP				\ | ||||||
| 	$(DIRECTORY)/src/D3D/*.C		\ | 	$(DIRECTORY)/src/D3D/*.h				\ | ||||||
| 	$(DIRECTORY)/src/D3D/MAKEFILE		\ | 	$(DIRECTORY)/src/D3D/*.H				\ | ||||||
| 	$(DIRECTORY)/src/D3D/*bat		\ | 	$(DIRECTORY)/src/D3D/*.c				\ | ||||||
| 	$(DIRECTORY)/src/D3D/*DEF		\ | 	$(DIRECTORY)/src/D3D/*.C				\ | ||||||
| 	$(DIRECTORY)/src/DOS/DEPEND.DOS		\ | 	$(DIRECTORY)/src/D3D/MAKEFILE				\ | ||||||
| 	$(DIRECTORY)/src/DOS/*.c		\ | 	$(DIRECTORY)/src/D3D/*bat				\ | ||||||
| 	$(DIRECTORY)/src/FX/Makefile.am		\ | 	$(DIRECTORY)/src/D3D/*DEF				\ | ||||||
| 	$(DIRECTORY)/src/FX/Makefile.in		\ | 	$(DIRECTORY)/src/DOS/DEPEND.DOS				\ | ||||||
| 	$(DIRECTORY)/src/FX/*.[ch]		\ | 	$(DIRECTORY)/src/DOS/*.c				\ | ||||||
| 	$(DIRECTORY)/src/FX/*.def		\ | 	$(DIRECTORY)/src/FX/Makefile.am				\ | ||||||
| 	$(DIRECTORY)/src/FX/X86/Makefile.am	\ | 	$(DIRECTORY)/src/FX/Makefile.in				\ | ||||||
| 	$(DIRECTORY)/src/FX/X86/Makefile.in	\ | 	$(DIRECTORY)/src/FX/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/FX/X86/*.[Shc]		\ | 	$(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.am			\ | ||||||
| 	$(DIRECTORY)/src/GGI/Makefile.in			\ | 	$(DIRECTORY)/src/GGI/Makefile.in			\ | ||||||
| 	$(DIRECTORY)/src/GGI/*.[ch]				\ | 	$(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.am	\ | ||||||
| 	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in	\ | 	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in	\ | ||||||
| 	$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h		\ | 	$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h		\ | ||||||
| 	$(DIRECTORY)/src/KNOWN_BUGS		\ | 	$(DIRECTORY)/src/KNOWN_BUGS				\ | ||||||
| 	$(DIRECTORY)/src/MGL/*.[ch]		\ | 	$(DIRECTORY)/src/MGL/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/MGL/*.txt		\ | 	$(DIRECTORY)/src/MGL/*.txt				\ | ||||||
| 	$(DIRECTORY)/src/OSmesa/Makefile.am	\ | 	$(DIRECTORY)/src/OSmesa/Makefile.am			\ | ||||||
| 	$(DIRECTORY)/src/OSmesa/Makefile.in	\ | 	$(DIRECTORY)/src/OSmesa/Makefile.in			\ | ||||||
| 	$(DIRECTORY)/src/OSmesa/*.[ch]		\ | 	$(DIRECTORY)/src/OSmesa/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/S3/*.[ch]		\ | 	$(DIRECTORY)/src/S3/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/S3/*.def		\ | 	$(DIRECTORY)/src/S3/*.def				\ | ||||||
| 	$(DIRECTORY)/src/S3/*.mak		\ | 	$(DIRECTORY)/src/S3/*.mak				\ | ||||||
| 	$(DIRECTORY)/src/S3/*.rc		\ | 	$(DIRECTORY)/src/S3/*.rc				\ | ||||||
| 	$(DIRECTORY)/src/SVGA/Makefile.am	\ | 	$(DIRECTORY)/src/SVGA/Makefile.am			\ | ||||||
| 	$(DIRECTORY)/src/SVGA/Makefile.in	\ | 	$(DIRECTORY)/src/SVGA/Makefile.in			\ | ||||||
| 	$(DIRECTORY)/src/SVGA/*.[ch]		\ | 	$(DIRECTORY)/src/SVGA/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/Windows/*.[ch]		\ | 	$(DIRECTORY)/src/Windows/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/Windows/*.def		\ | 	$(DIRECTORY)/src/Windows/*.def				\ | ||||||
| 	$(DIRECTORY)/src/X/Makefile.am		\ | 	$(DIRECTORY)/src/X/Makefile.am				\ | ||||||
| 	$(DIRECTORY)/src/X/Makefile.in		\ | 	$(DIRECTORY)/src/X/Makefile.in				\ | ||||||
| 	$(DIRECTORY)/src/X/*.[ch]		\ | 	$(DIRECTORY)/src/X/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/X86/*.[ch]		\ | 	$(DIRECTORY)/src/X86/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/src/X86/Makefile.am	\ | 	$(DIRECTORY)/src/X86/Makefile.am			\ | ||||||
| 	$(DIRECTORY)/src/X86/Makefile.in	\ | 	$(DIRECTORY)/src/X86/Makefile.in			\ | ||||||
| 	$(DIRECTORY)/src/X86/*.m4		\ | 	$(DIRECTORY)/src/X86/*.m4				\ | ||||||
| 	$(DIRECTORY)/src/X86/*.S		\ | 	$(DIRECTORY)/src/X86/*.S				\ | ||||||
| 	$(DIRECTORY)/src/*.dja			\ | 	$(DIRECTORY)/src/*.dja					\ | ||||||
| 	$(DIRECTORY)/src-glu/README[12]		\ | 	$(DIRECTORY)/src-glu/README[12]				\ | ||||||
| 	$(DIRECTORY)/src-glu/Makefile*		\ | 	$(DIRECTORY)/src-glu/Makefile*				\ | ||||||
| 	$(DIRECTORY)/src-glu/descrip.mms	\ | 	$(DIRECTORY)/src-glu/descrip.mms			\ | ||||||
| 	$(DIRECTORY)/src-glu/mms_depend		\ | 	$(DIRECTORY)/src-glu/mms_depend				\ | ||||||
| 	$(DIRECTORY)/src-glu/*.def		\ | 	$(DIRECTORY)/src-glu/*.def				\ | ||||||
| 	$(DIRECTORY)/src-glu/*.dja		\ | 	$(DIRECTORY)/src-glu/*.dja				\ | ||||||
| 	$(DIRECTORY)/src-glu/depend		\ | 	$(DIRECTORY)/src-glu/depend				\ | ||||||
| 	$(DIRECTORY)/src-glu/*.[ch]		\ | 	$(DIRECTORY)/src-glu/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/widgets-mesa		\ | 	$(DIRECTORY)/widgets-mesa				\ | ||||||
| 	$(DIRECTORY)/widgets-sgi		\ | 	$(DIRECTORY)/widgets-sgi				\ | ||||||
| 	$(DIRECTORY)/util/README		\ | 	$(DIRECTORY)/util/README				\ | ||||||
| 	$(DIRECTORY)/util/Makefile.am		\ | 	$(DIRECTORY)/util/Makefile.am				\ | ||||||
| 	$(DIRECTORY)/util/Makefile.in		\ | 	$(DIRECTORY)/util/Makefile.in				\ | ||||||
| 	$(DIRECTORY)/util/*.[ch]		\ | 	$(DIRECTORY)/util/*.[ch]				\ | ||||||
| 	$(DIRECTORY)/util/sampleMakefile	\ | 	$(DIRECTORY)/util/sampleMakefile			\ | ||||||
| 	$(DIRECTORY)/BeOS/Makefile		\ | 	$(DIRECTORY)/BeOS/Makefile				\ | ||||||
| 	$(DIRECTORY)/BeOS/*.cpp			 | 	$(DIRECTORY)/BeOS/*.cpp					\ | ||||||
|  | 	$(DIRECTORY)/WIN32/NMAKE.MAK				\ | ||||||
| # old stuff | 	$(DIRECTORY)/WIN32/NMAKE.MIF				\ | ||||||
| #	$(DIRECTORY)/Win32			\ | 	$(DIRECTORY)/WIN32/RES/*rc				\ | ||||||
| #	$(DIRECTORY)/win32 | 	$(DIRECTORY)/WIN32/RES/*def				\ | ||||||
|  | 	$(DIRECTORY)/WIN32/RULES/lib.*				\ | ||||||
| #	$(DIRECTORY)/OpenStep			\ | 	$(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 =	\ | DEMO_FILES =	\ | ||||||
| @@ -517,13 +538,13 @@ DEMO_FILES =	\ | |||||||
|  |  | ||||||
| lib_tar: | lib_tar: | ||||||
| 	cd .. ; \ | 	cd .. ; \ | ||||||
| 	tar -cvf $(LIB_NAME).tar $(LIB_FILES) ; \ | 	tar --exclude CVS -c -v -f $(LIB_NAME).tar $(LIB_FILES) ; \ | ||||||
| 	gzip $(LIB_NAME).tar ; \ | 	gzip $(LIB_NAME).tar ; \ | ||||||
| 	mv $(LIB_NAME).tar.gz $(DIRECTORY) | 	mv $(LIB_NAME).tar.gz $(DIRECTORY) | ||||||
|  |  | ||||||
| demo_tar: | demo_tar: | ||||||
| 	cd .. ; \ | 	cd .. ; \ | ||||||
| 	tar -cvf $(DEMO_NAME).tar $(DEMO_FILES) ; \ | 	tar --exclude CVS -c -v -f $(DEMO_NAME).tar $(DEMO_FILES) ; \ | ||||||
| 	gzip $(DEMO_NAME).tar ; \ | 	gzip $(DEMO_NAME).tar ; \ | ||||||
| 	mv $(DEMO_NAME).tar.gz $(DIRECTORY) | 	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) | 				(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 ? | What do you need ? | ||||||
| ------------------ | ------------------ | ||||||
|  |  | ||||||
| @@ -327,6 +322,11 @@ The Mesa/Voodoo Environment Variables: | |||||||
| 		export MESA_FX_INFO=1 | 		export MESA_FX_INFO=1 | ||||||
|           you will get some useful statistic. |           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: | 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 | a binary copy of the Mesa in order to make the software | ||||||
| working out of the box ? | working out of the box ? | ||||||
|  |  | ||||||
| Yes, you have simply to include some informations about authors | Yes. | ||||||
| and where the library sources are available (check the LICENSE |  | ||||||
| file for more informations about the GNU GPL). |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 11. Which is the best make target for compiling the Mesa for | 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 | 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 | When it finishes the libMesaGL.so and libMesaGLU.so libraries for | ||||||
| BeOS will be in the Mesa-3.x/lib/ directory. | 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 | 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 | build will work for your system. | ||||||
| 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 | 	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. | ||||||
| from the author of this EGCS-Mingw32 native windows port of the Mesa 3-D Graphics |  | ||||||
| Library. |  | ||||||
|  |  | ||||||
| 	Feel free to modify or change things as you see fit, just remember that | 	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 | 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. | 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: | 		(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/) | ||||||
| 		mingw32.bat |  | ||||||
| 		src/makefile.nt4 |  | ||||||
| 		src/wmesa.c |  | ||||||
| 		src-glu/makefile.nt4 |  | ||||||
|  |  | ||||||
| ############### | 	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 | 	ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95.2 | ||||||
| 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 |  | ||||||
|  |  | ||||||
| 	Much thanks to the combined efforts of Mumit Khan, Jan-Jaap Vanderhagen | 	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 | 	a) Open the file archive (either tar.gz or .zip extensions) | ||||||
| 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) Move the mingw32.zip file to the top level of the hard drive on your | 	b) Decide the directory you want to move the archived files to. | ||||||
| system. |  | ||||||
|  |  | ||||||
| 	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 | 		%mesaroot%:	This is your root directory (Mesa-3.2) | ||||||
|  | 		%mesasrc%:	This is the Mesa-3.2 src directory (Mesa-3.2\src) | ||||||
| 	c) Verify that the files will be properly extracted. | 		%mesalib%:	This is where the build will put libGL.a and libGLU.a | ||||||
|  |  | ||||||
| 	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	 |  | ||||||
|  |  | ||||||
| Running the Build: | Running the Build: | ||||||
|  |  | ||||||
| 	Ok, now that we've got the basics out of the way, follows is all you need | 	Open your Command Prompt or MS-DOS prompt. | ||||||
| to do in order to build the EGCS-Mingw32 version of libMesaGL.a and libMesaGLU.a: | 	Go to your Mesa-3.2 'root' directory | ||||||
|  |  | ||||||
| 	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. |  | ||||||
| 	At the command line type: mingw32 | 	At the command line type: mingw32 | ||||||
| 		mingw32 is the .bat file that actually does the build. |  | ||||||
|  | 	That's all there is to it. | ||||||
|  |  | ||||||
| 	Enjoy! | 	Enjoy! | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,9 +1,7 @@ | |||||||
|  |  | ||||||
| 			Mesa 3.0 MITS Information | 			Mesa 3.0 MITS Information | ||||||
|  |  | ||||||
|  | [The MITS code hasn't been update for Mesa 3.1 and may no longer work] | ||||||
| This software is distributed under the terms of the GNU Library |  | ||||||
| General Public License, see the LICENSE file for details. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| This document is a preliminary introduction to help you get | 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 | Installation | ||||||
| ============ | ============ | ||||||
|  |  | ||||||
| To compile the library, first type 'make' alone to see the list of system | There are two ways to compile Mesa on Unix/X11 systems: | ||||||
| configurations currently supported.  If you see your configuration on the |  | ||||||
| list, type 'make <config>'.  Most popular Unix/X workstations are currently | 1. The old way: | ||||||
| supported. |     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- | 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. | 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 | If you also downloaded and unpacked the demos there should be executables | ||||||
| in the "xdemos/", "samples/", and "book/" directories for you to try out. | 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 | If you have compilation problems you should try to fix them and return the | ||||||
| patches to the author. | 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: | Header and library files: | ||||||
|    After you've compiled Mesa and tried the demos I recommend the following |    After you've compiled Mesa and tried the demos I recommend the following | ||||||
|    procedure for "installing" Mesa. |    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 | Mesa Version History | ||||||
| @@ -659,3 +659,52 @@ Mesa Version History | |||||||
| 	- New library numbering: libGL.so.1.2.310 | 	- New library numbering: libGL.so.1.2.310 | ||||||
| 	- New subdirectories:  docs/ and bin/ | 	- New subdirectories:  docs/ and bin/ | ||||||
| 	- New Makefile-system (autoconf,automake,libtool) | 	- 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 |  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * 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) */ | /* Allegro (DJGPP) driver by Bernhard Tschirren (bernie-t@geocities.com) */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifndef AMESA_H | #ifndef AMESA_H | ||||||
| #define AMESA_H | #define AMESA_H | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define AMESA_MAJOR_VERSION 3 | ||||||
|  | #define AMESA_MINOR_VERSION 2 | ||||||
|  |  | ||||||
|  |  | ||||||
| typedef struct amesa_visual  *AMesaVisual; | typedef struct amesa_visual  *AMesaVisual; | ||||||
| typedef struct amesa_buffer  *AMesaBuffer; | typedef struct amesa_buffer  *AMesaBuffer; | ||||||
| typedef struct amesa_context *AMesaContext; | 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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1999  Brian Paul |  | ||||||
|  * |  * | ||||||
|  * This library is free software; you can redistribute it and/or |  * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved. | ||||||
|  * 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, |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU |  * to deal in the Software without restriction, including without limitation | ||||||
|  * Library General Public License for more details. |  * 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 |  * The above copyright notice and this permission notice shall be included | ||||||
|  * License along with this library; if not, write to the Free |  * in all copies or substantial portions of the Software. | ||||||
|  * 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 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_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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1998  Brian Paul |  * Copyright (C) 1995-1998  Brian Paul | ||||||
|  * Copyright (C) 1998  Uwe Maurer |  * 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 | #ifndef GGIMESA_H | ||||||
| #define GGIMESA_H | #define GGIMESA_H | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #define GGIMESA_MAJOR_VERSION 3 | ||||||
|  | #define GGIMESA_MINOR_VERSION 2 | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.2 | ||||||
|  *  |  *  | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  *  |  *  | ||||||
| @@ -396,6 +396,8 @@ | |||||||
| #define glTexSubImage3DEXT mglTexSubImage3DEXT | #define glTexSubImage3DEXT mglTexSubImage3DEXT | ||||||
| #define glCopyTexSubImage3DEXT mglCopyTexSubImage3DEXT | #define glCopyTexSubImage3DEXT mglCopyTexSubImage3DEXT | ||||||
| #define glColorTable mglColorTable | #define glColorTable mglColorTable | ||||||
|  | #define glColorTableParameteriv mglColorTableParameteriv | ||||||
|  | #define glColorTableParameterfv mglColorTableParameterfv | ||||||
| #define glColorSubTable mglColorSubTable | #define glColorSubTable mglColorSubTable | ||||||
| #define glGetColorTable mglGetColorTable | #define glGetColorTable mglGetColorTable | ||||||
| #define glGetColorTableParameteriv mglGetColorTableParameteriv  | #define glGetColorTableParameteriv mglGetColorTableParameteriv  | ||||||
|   | |||||||
| @@ -108,7 +108,7 @@ extern _CRTIMP void __cdecl exit(int); | |||||||
|    and redifinition of Windows system defs, also removes requirement of |    and redifinition of Windows system defs, also removes requirement of | ||||||
|    pretty much any standard windows header from this file */ |    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 | #	define GLUTAPIENTRY __stdcall | ||||||
| #else | #else | ||||||
| #	define GLUTAPIENTRY | #	define GLUTAPIENTRY | ||||||
| @@ -152,7 +152,7 @@ typedef unsigned long COLORREF; | |||||||
| #		define wglUseFontOutlines  wglUseFontOutlinesA | #		define wglUseFontOutlines  wglUseFontOutlinesA | ||||||
| #	endif /* !UNICODE */ | #	endif /* !UNICODE */ | ||||||
| typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR; | typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR; | ||||||
| typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT | typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT; | ||||||
| #  pragma warning( push ) | #  pragma warning( push ) | ||||||
| #  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */ | #  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */ | ||||||
| #  define WGLAPI __declspec(dllimport) | #  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 wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT); | ||||||
| WGLAPI int   GLAPIENTRY SwapBuffers(HDC); | WGLAPI int   GLAPIENTRY SwapBuffers(HDC); | ||||||
| WGLAPI int   GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *); | 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 GetPixelFormat(HDC); | ||||||
| WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *); | WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *); | ||||||
| #  undef WGLAPI | #  undef WGLAPI | ||||||
| @@ -739,7 +739,6 @@ GLUTAPI int GLUTAPIENTRY glutGameModeGet(GLenum mode); | |||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if 0 | #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 |  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * copy of this software and associated documentation files (the "Software"), | ||||||
| @@ -50,41 +50,38 @@ extern "C" { | |||||||
|  |  | ||||||
| #define GLX_VERSION_1_1		1 | #define GLX_VERSION_1_1		1 | ||||||
|  |  | ||||||
| #define GLX_EXTENSION_NAME   "GLX" |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Tokens for glXChooseVisual and glXGetConfig: |  * Tokens for glXChooseVisual and glXGetConfig: | ||||||
|  */ |  */ | ||||||
| #define GLX_USE_GL		1 | enum _GLX_CONFIGS { | ||||||
| #define GLX_BUFFER_SIZE		2 | 	GLX_USE_GL		= 1, | ||||||
| #define GLX_LEVEL		3 | 	GLX_BUFFER_SIZE		= 2, | ||||||
| #define GLX_RGBA		4 | 	GLX_LEVEL		= 3, | ||||||
| #define GLX_DOUBLEBUFFER	5 | 	GLX_RGBA		= 4, | ||||||
| #define GLX_STEREO		6 | 	GLX_DOUBLEBUFFER	= 5,  | ||||||
| #define GLX_AUX_BUFFERS		7 | 	GLX_STEREO		= 6, | ||||||
| #define GLX_RED_SIZE		8 | 	GLX_AUX_BUFFERS		= 7, | ||||||
| #define GLX_GREEN_SIZE		9 | 	GLX_RED_SIZE		= 8, | ||||||
| #define GLX_BLUE_SIZE		10 | 	GLX_GREEN_SIZE		= 9, | ||||||
| #define GLX_ALPHA_SIZE		11 | 	GLX_BLUE_SIZE		= 10, | ||||||
| #define GLX_DEPTH_SIZE		12 | 	GLX_ALPHA_SIZE		= 11, | ||||||
| #define GLX_STENCIL_SIZE	13 | 	GLX_DEPTH_SIZE		= 12, | ||||||
| #define GLX_ACCUM_RED_SIZE	14 | 	GLX_STENCIL_SIZE	= 13, | ||||||
| #define GLX_ACCUM_GREEN_SIZE	15 | 	GLX_ACCUM_RED_SIZE	= 14, | ||||||
| #define GLX_ACCUM_BLUE_SIZE	16 | 	GLX_ACCUM_GREEN_SIZE	= 15, | ||||||
| #define GLX_ACCUM_ALPHA_SIZE	17 | 	GLX_ACCUM_BLUE_SIZE	= 16, | ||||||
|  | 	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 |  | ||||||
|  |  | ||||||
|  | 	/* 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 |  * Compile-time extension tests | ||||||
|  */ |  */ | ||||||
| #define GLX_EXT_visual_info		1 | #define GLX_EXT_visual_info		1 | ||||||
| #define GLX_EXT_get_proc_address	1 |  | ||||||
| #define GLX_MESA_pixmap_colormap	1 | #define GLX_MESA_pixmap_colormap	1 | ||||||
| #define GLX_MESA_release_buffers	1 | #define GLX_MESA_release_buffers	1 | ||||||
| #define GLX_MESA_copy_sub_buffer	1 | #define GLX_MESA_copy_sub_buffer	1 | ||||||
| #define GLX_MESA_set_3dfx_mode		1 | #define GLX_MESA_set_3dfx_mode		1 | ||||||
| #define GLX_SGI_video_sync		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); | 			    GLXContext ctx); | ||||||
|  |  | ||||||
| extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||||
| 			    GLuint mask ); | 			    unsigned long mask ); | ||||||
|  |  | ||||||
| extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); | extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); | ||||||
|  |  | ||||||
| @@ -222,6 +219,10 @@ extern int glXWaitVideoSyncSGI(int divisor, int remainder, | |||||||
|                                unsigned int *count); |                                unsigned int *count); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* GLX_ARB_get_proc_address */ | ||||||
|  | extern void (*glXGetProcAddressARB(const GLubyte *procName))(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #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 */ | /* prototypes for the Mesa WGL functions */ | ||||||
| /* relocated here so that I could make GLUT get them properly */ | /* relocated here so that I could make GLUT get them properly */ | ||||||
|  |  | ||||||
| #ifndef GL_H | #ifndef _mesa_wgl_h_ | ||||||
| #   include <gl/gl.h> | #define _mesa_wgl_h_ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include <gl/gl.h> | ||||||
|  |  | ||||||
|  | #ifdef __cplusplus | ||||||
|  | extern "C" { | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||||
|  | #  pragma warning( disable : 4615 ) /* pragma warning : unknown user warning type*/ | ||||||
| #  pragma warning( push ) | #  pragma warning( push ) | ||||||
| #  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */ | #  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */ | ||||||
| #endif | #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 wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT); | ||||||
| WGLAPI int   GLAPIENTRY SwapBuffers(HDC); | WGLAPI int   GLAPIENTRY SwapBuffers(HDC); | ||||||
| WGLAPI int   GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *); | 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 GetPixelFormat(HDC); | ||||||
| WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *); | WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *); | ||||||
|  |  | ||||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||||
| #  pragma warning( pop ) | #  pragma warning( pop ) | ||||||
| #endif | #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 |  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * 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. |  * Mesa Off-Screen rendering interface. | ||||||
|  * |  * | ||||||
| @@ -86,7 +66,7 @@ extern "C" { | |||||||
|  |  | ||||||
|  |  | ||||||
| #define OSMESA_MAJOR_VERSION 3 | #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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.0 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1998  Brian Paul |  * Copyright (C) 1995-2000  Brian Paul | ||||||
|  * |  * | ||||||
|  * This library is free software; you can redistribute it and/or |  * This library is free software; you can redistribute it and/or | ||||||
|  * modify it under the terms of the GNU Library General Public |  * 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. |  * SVGA/Mesa interface for Linux. | ||||||
|  */ |  */ | ||||||
| @@ -65,7 +53,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| #define SVGAMESA_MAJOR_VERSION 3 | #define SVGAMESA_MAJOR_VERSION 3 | ||||||
| #define SVGAMESA_MINOR_VERSION 0 | #define SVGAMESA_MINOR_VERSION 2 | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| @@ -87,16 +75,21 @@ typedef struct svgamesa_context *SVGAMesaContext; | |||||||
| /* | /* | ||||||
|  * doubleBuffer flag new in version 2.4 |  * doubleBuffer flag new in version 2.4 | ||||||
|  */ |  */ | ||||||
|  | extern int SVGAMesaInit( int GraphMode ); | ||||||
|  |  | ||||||
|  | extern int SVGAMesaClose( void ); | ||||||
|  |  | ||||||
| extern SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ); | extern SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ); | ||||||
|  |  | ||||||
| extern void SVGAMesaDestroyContext( SVGAMesaContext ctx ); | extern void SVGAMesaDestroyContext( SVGAMesaContext ctx ); | ||||||
|  |  | ||||||
| extern void SVGAMesaMakeCurrent( SVGAMesaContext ctx ); | extern void SVGAMesaMakeCurrent( SVGAMesaContext ctx ); | ||||||
|  |  | ||||||
| extern SVGAMesaContext SVGAMesaGetCurrentContext( void ); |  | ||||||
|  |  | ||||||
| extern void SVGAMesaSwapBuffers( void ); | extern void SVGAMesaSwapBuffers( void ); | ||||||
|  |  | ||||||
|  | extern void SVGAMesaSetCI(int ndx, GLubyte red, GLubyte green, GLubyte blue); | ||||||
|  |  | ||||||
|  | extern SVGAMesaContext SVGAMesaGetCurrentContext( void ); | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #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 |  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * 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 |  * Mesa/X11 interface.  This header file serves as the documentation for | ||||||
|  * the Mesa/X11 interface functions. |  * the Mesa/X11 interface functions. | ||||||
| @@ -96,6 +79,9 @@ extern "C" { | |||||||
| #include <X11/Xlib.h> | #include <X11/Xlib.h> | ||||||
| #include <X11/Xutil.h> | #include <X11/Xutil.h> | ||||||
| #include "xmesa_x.h" | #include "xmesa_x.h" | ||||||
|  | #ifdef GLX_DIRECT_RENDERING | ||||||
|  | #include "dri_mesa.h" | ||||||
|  | #endif | ||||||
| #endif | #endif | ||||||
| #include "GL/gl.h" | #include "GL/gl.h" | ||||||
|  |  | ||||||
| @@ -106,7 +92,7 @@ extern struct Library *XLibBase; | |||||||
|  |  | ||||||
|  |  | ||||||
| #define XMESA_MAJOR_VERSION 3 | #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; | 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. |  * Return:  an XMesaContext or NULL if error. | ||||||
|  */ |  */ | ||||||
| extern XMesaContext XMesaCreateContext( XMesaVisual v, | 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. |  * Create an XMesaBuffer from an X window. | ||||||
|  */ |  */ | ||||||
| extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v, | 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, | extern XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v, | ||||||
| 					    XMesaPixmap p, | 					    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: |  * Authors: | ||||||
|  *   Kevin E. Martin <kevin@precisioninsight.com> |  *   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_ | #ifndef _XMESA_XF86_H_ | ||||||
| @@ -52,29 +52,29 @@ typedef DDXPointRec XMesaPoint; | |||||||
| typedef xColorItem  XMesaColor; | typedef xColorItem  XMesaColor; | ||||||
|  |  | ||||||
| #define XMesaSetGeneric(__d,__gc,__val,__mask) \ | #define XMesaSetGeneric(__d,__gc,__val,__mask) \ | ||||||
| { \ | do { \ | ||||||
|     CARD32 __v[1]; \ |     CARD32 __v[1]; \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     __v[0] = __val; \ |     __v[0] = __val; \ | ||||||
|     dixChangeGC(NullClient, __gc, __mask, __v, NULL); \ |     dixChangeGC(NullClient, __gc, __mask, __v, NULL); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaSetGenericPtr(__d,__gc,__pval,__mask) \ | #define XMesaSetGenericPtr(__d,__gc,__pval,__mask) \ | ||||||
| { \ | do { \ | ||||||
|     ChangeGCVal __v[1]; \ |     ChangeGCVal __v[1]; \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     __v[0].ptr = __pval; \ |     __v[0].ptr = __pval; \ | ||||||
|     dixChangeGC(NullClient, __gc, __mask, NULL, __v); \ |     dixChangeGC(NullClient, __gc, __mask, NULL, __v); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaSetDashes(__d,__gc,__do,__dl,__n) \ | #define XMesaSetDashes(__d,__gc,__do,__dl,__n) \ | ||||||
| { \ | do { \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     SetDashes(__gc, __do, __n, (unsigned char *)__dl); \ |     SetDashes(__gc, __do, __n, (unsigned char *)__dl); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaSetLineAttributes(__d,__gc,__lw,__ls,__cs,__js) \ | #define XMesaSetLineAttributes(__d,__gc,__lw,__ls,__cs,__js) \ | ||||||
| { \ | do { \ | ||||||
|     CARD32 __v[4]; \ |     CARD32 __v[4]; \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     __v[0] = __lw; \ |     __v[0] = __lw; \ | ||||||
| @@ -84,7 +84,7 @@ typedef xColorItem  XMesaColor; | |||||||
|     dixChangeGC(NullClient, __gc, \ |     dixChangeGC(NullClient, __gc, \ | ||||||
| 		GCLineWidth|GCLineStyle|GCCapStyle|GCJoinStyle, \ | 		GCLineWidth|GCLineStyle|GCCapStyle|GCJoinStyle, \ | ||||||
| 		__v, NULL); \ | 		__v, NULL); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaSetForeground(d,gc,v) XMesaSetGeneric(d,gc,v,GCForeground) | #define XMesaSetForeground(d,gc,v) XMesaSetGeneric(d,gc,v,GCForeground) | ||||||
| #define XMesaSetBackground(d,gc,v) XMesaSetGeneric(d,gc,v,GCBackground) | #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 XMesaSetStipple(d,gc,v)    XMesaSetGenericPtr(d,gc,v,GCStipple) | ||||||
|  |  | ||||||
| #define XMesaDrawPoint(__d,__b,__gc,__x,__y) \ | #define XMesaDrawPoint(__d,__b,__gc,__x,__y) \ | ||||||
| { \ | do { \ | ||||||
|     XMesaPoint __p[1]; \ |     XMesaPoint __p[1]; \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     __p[0].x = __x; \ |     __p[0].x = __x; \ | ||||||
|     __p[0].y = __y; \ |     __p[0].y = __y; \ | ||||||
|     ValidateGC(__b, __gc); \ |     ValidateGC(__b, __gc); \ | ||||||
|     (*gc->ops->PolyPoint)(__b, __gc, CoordModeOrigin, 1, __p); \ |     (*gc->ops->PolyPoint)(__b, __gc, CoordModeOrigin, 1, __p); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaDrawPoints(__d,__b,__gc,__p,__n,__m) \ | #define XMesaDrawPoints(__d,__b,__gc,__p,__n,__m) \ | ||||||
| { \ | do { \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     ValidateGC(__b, __gc); \ |     ValidateGC(__b, __gc); \ | ||||||
|     (*gc->ops->PolyPoint)(__b, __gc, __m, __n, __p); \ |     (*gc->ops->PolyPoint)(__b, __gc, __m, __n, __p); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaDrawLine(__d,__b,__gc,__x0,__y0,__x1,__y1) \ | #define XMesaDrawLine(__d,__b,__gc,__x0,__y0,__x1,__y1) \ | ||||||
| { \ | do { \ | ||||||
|     XMesaPoint __p[2]; \ |     XMesaPoint __p[2]; \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     ValidateGC(__b, __gc); \ |     ValidateGC(__b, __gc); \ | ||||||
| @@ -122,10 +122,10 @@ typedef xColorItem  XMesaColor; | |||||||
|     __p[1].x = __x1; \ |     __p[1].x = __x1; \ | ||||||
|     __p[1].y = __y1; \ |     __p[1].y = __y1; \ | ||||||
|     (*__gc->ops->Polylines)(__b, __gc, CoordModeOrigin, 2, __p); \ |     (*__gc->ops->Polylines)(__b, __gc, CoordModeOrigin, 2, __p); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaFillRectangle(__d,__b,__gc,__x,__y,__w,__h) \ | #define XMesaFillRectangle(__d,__b,__gc,__x,__y,__w,__h) \ | ||||||
| { \ | do { \ | ||||||
|     xRectangle __r[1]; \ |     xRectangle __r[1]; \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     ValidateGC(__b, __gc); \ |     ValidateGC(__b, __gc); \ | ||||||
| @@ -134,10 +134,10 @@ typedef xColorItem  XMesaColor; | |||||||
|     __r[0].width = __w; \ |     __r[0].width = __w; \ | ||||||
|     __r[0].height = __h; \ |     __r[0].height = __h; \ | ||||||
|     (*__gc->ops->PolyFillRect)(__b, __gc, 1, __r); \ |     (*__gc->ops->PolyFillRect)(__b, __gc, 1, __r); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \ | #define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \ | ||||||
| { \ | do { \ | ||||||
|     /* Assumes: Images are always in ZPixmap format */ \ |     /* Assumes: Images are always in ZPixmap format */ \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     if (__sx || __sy) /* The non-trivial case */ \ |     if (__sx || __sy) /* The non-trivial case */ \ | ||||||
| @@ -146,22 +146,22 @@ typedef xColorItem  XMesaColor; | |||||||
|     (*__gc->ops->PutImage)(__b, __gc, ((XMesaDrawable)(__b))->depth, \ |     (*__gc->ops->PutImage)(__b, __gc, ((XMesaDrawable)(__b))->depth, \ | ||||||
| 			   __x, __y, __w, __h, 0, ZPixmap, \ | 			   __x, __y, __w, __h, 0, ZPixmap, \ | ||||||
| 			   ((XMesaImage *)(__i))->data); \ | 			   ((XMesaImage *)(__i))->data); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaCopyArea(__d,__sb,__db,__gc,__sx,__sy,__w,__h,__x,__y) \ | #define XMesaCopyArea(__d,__sb,__db,__gc,__sx,__sy,__w,__h,__x,__y) \ | ||||||
| { \ | do { \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     ValidateGC(__db, __gc); \ |     ValidateGC(__db, __gc); \ | ||||||
|     (*__gc->ops->CopyArea)((DrawablePtr)__sb, __db, __gc, \ |     (*__gc->ops->CopyArea)((DrawablePtr)__sb, __db, __gc, \ | ||||||
| 			   __sx, __sy, __w, __h, __x, __y); \ | 			   __sx, __sy, __w, __h, __x, __y); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define XMesaFillPolygon(__d,__b,__gc,__p,__n,__s,__m) \ | #define XMesaFillPolygon(__d,__b,__gc,__p,__n,__s,__m) \ | ||||||
| { \ | do { \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     ValidateGC(__b, __gc); \ |     ValidateGC(__b, __gc); \ | ||||||
|     (*__gc->ops->FillPolygon)(__b, __gc, __s, __m, __n, __p); \ |     (*__gc->ops->FillPolygon)(__b, __gc, __s, __m, __n, __p); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| /* CreatePixmap returns a PixmapPtr; so, it cannot be inside braces */ | /* CreatePixmap returns a PixmapPtr; so, it cannot be inside braces */ | ||||||
| #define XMesaCreatePixmap(__d,__b,__w,__h,__depth) \ | #define XMesaCreatePixmap(__d,__b,__w,__h,__depth) \ | ||||||
| @@ -170,10 +170,10 @@ typedef xColorItem  XMesaColor; | |||||||
|     (*__d->DestroyPixmap)(__b) |     (*__d->DestroyPixmap)(__b) | ||||||
|  |  | ||||||
| #define XMesaFreeGC(__d,__gc) \ | #define XMesaFreeGC(__d,__gc) \ | ||||||
| { \ | do { \ | ||||||
|     (void) __d; \ |     (void) __d; \ | ||||||
|     FreeScratchGC(__gc); \ |     FreeScratchGC(__gc); \ | ||||||
| } | } while (0) | ||||||
|  |  | ||||||
| #define GET_COLORMAP_SIZE(__v)  __v->visinfo->ColormapEntries | #define GET_COLORMAP_SIZE(__v)  __v->visinfo->ColormapEntries | ||||||
| #define GET_REDMASK(__v)        __v->visinfo->redMask | #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. | /* Draw test patterns to help determine correct gamma value for a display. | ||||||
|    When the intensities of the inner squares nearly match the intensities |    When the intensities of the inner squares nearly match the intensities | ||||||
| @@ -25,8 +25,14 @@ | |||||||
|  |  | ||||||
| /* | /* | ||||||
|  * $Log: gamma.c,v $ |  * $Log: gamma.c,v $ | ||||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg |  * Revision 1.1.1.1.2.1  2000/03/18 01:14:01  brianp | ||||||
|  * Initial revision |  * 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 |  * Revision 3.1  1999/06/19 01:35:38  brianp | ||||||
|  * merged in Kai Schuetz's RGB changes |  * 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% */ |   for(d = 1; d < 4; d++) {  /* increasing density from 25% to 75% */ | ||||||
|     GLfloat xcoord = (-1.0 + d*0.4); |     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); |     glRectf(xcoord, yoffs, xcoord+0.4, yoffs + 0.5); | ||||||
|  |  | ||||||
|     glColor3f(0.0, 0.0, 0.0);   /* "clear" inner rect */ |     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 $ |  * $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 |  * Revision 1.2  1999/09/17 12:27:01  brianp | ||||||
|  * silenced some warnings |  * silenced some warnings | ||||||
|  * |  * | ||||||
| @@ -498,7 +501,7 @@ static void draw_dodeca( void ) | |||||||
| { | { | ||||||
|   GLuint list; |   GLuint list; | ||||||
|  |  | ||||||
|   #define TAU ((SQRT5+1)/2) | #define TAU ((SQRT5+1)/2) | ||||||
|  |  | ||||||
|   list = glGenLists( 1 ); |   list = glGenLists( 1 ); | ||||||
|   glNewList( list, GL_COMPILE ); |   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 |  * GL_ARB_multitexture demo | ||||||
| @@ -12,6 +12,12 @@ | |||||||
|  |  | ||||||
| /* | /* | ||||||
|  * $Log: multiarb.c,v $ |  * $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 |  * Revision 1.3  1999/10/21 16:40:32  brianp | ||||||
|  * added -info command line option |  * added -info command line option | ||||||
|  * |  * | ||||||
| @@ -61,6 +67,8 @@ static void Idle( void ) | |||||||
| { | { | ||||||
|    if (Animate) { |    if (Animate) { | ||||||
|       Drift += 0.05; |       Drift += 0.05; | ||||||
|  |       if (Drift >= 1.0) | ||||||
|  |          Drift = 0.0; | ||||||
|  |  | ||||||
| #ifdef GL_ARB_multitexture | #ifdef GL_ARB_multitexture | ||||||
|       glActiveTextureARB(GL_TEXTURE0_ARB); |       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 |  * stex3d.c GL example of the mesa 3d-texture extention to simulate procedural | ||||||
| @@ -17,6 +17,9 @@ | |||||||
|  |  | ||||||
| /* | /* | ||||||
|  * $Log: stex3d.c,v $ |  * $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 |  * Revision 1.2  1999/09/17 12:27:01  brianp | ||||||
|  * silenced some warnings |  * silenced some warnings | ||||||
|  * |  * | ||||||
| @@ -230,7 +233,7 @@ void create3Dtexture() | |||||||
|  int tmp; |  int tmp; | ||||||
|  |  | ||||||
|  printf("creating 3d textures...\n"); |  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; |  vp=voxels; | ||||||
|  for (i=0;i<tex_width;i++){ |  for (i=0;i<tex_width;i++){ | ||||||
|     vec[0]=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. |  * A demo of the GLU polygon tesselation functions written by Bogdan Sikorski. | ||||||
| @@ -14,6 +14,9 @@ | |||||||
|  |  | ||||||
| /* | /* | ||||||
|  * $Log: tessdemo.c,v $ |  * $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 |  * Revision 1.3  1999/11/04 04:00:42  gareth | ||||||
|  * Updated demo for new GLU 1.3 tessellation.  Added optimized rendering |  * Updated demo for new GLU 1.3 tessellation.  Added optimized rendering | ||||||
|  * by saving the output of the tessellation into display lists. |  * by saving the output of the tessellation into display lists. | ||||||
| @@ -79,20 +82,20 @@ static GLfloat		edge_color[3]; | |||||||
|  |  | ||||||
| static struct | static struct | ||||||
| { | { | ||||||
|    GLint	p[MAX_POINTS][2]; |    GLfloat	p[MAX_POINTS][2]; | ||||||
|    GLuint	point_cnt; |    GLuint	point_cnt; | ||||||
| } contours[MAX_CONTOURS]; | } contours[MAX_CONTOURS]; | ||||||
|  |  | ||||||
| static struct | static struct | ||||||
| { | { | ||||||
|    GLsizei	no; |    GLsizei	no; | ||||||
|    GLint	p[3][2]; |    GLfloat	p[3][2]; | ||||||
|    GLclampf	color[3][3]; |    GLclampf	color[3][3]; | ||||||
| } triangles[MAX_TRIANGLES]; | } triangles[MAX_TRIANGLES]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void GLCALLBACK my_error( GLenum err ) | void GLCALLBACK error_callback( GLenum err ) | ||||||
| { | { | ||||||
|    int		len, i; |    int		len, i; | ||||||
|    char const	*str; |    char const	*str; | ||||||
| @@ -146,22 +149,22 @@ void GLCALLBACK end_callback() | |||||||
| 		 triangles[i].color[0][1], | 		 triangles[i].color[0][1], | ||||||
| 		 triangles[i].color[0][2] ); | 		 triangles[i].color[0][2] ); | ||||||
|  |  | ||||||
|       glVertex2i( triangles[i].p[0][0], triangles[i].p[0][1] ); |       glVertex2f( 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[1][0], triangles[i].p[1][1] ); | ||||||
|  |  | ||||||
|       glColor3f( triangles[i].color[1][0], |       glColor3f( triangles[i].color[1][0], | ||||||
| 		 triangles[i].color[1][1], | 		 triangles[i].color[1][1], | ||||||
| 		 triangles[i].color[1][2] ); | 		 triangles[i].color[1][2] ); | ||||||
|  |  | ||||||
|       glVertex2i( triangles[i].p[1][0], triangles[i].p[1][1] ); |       glVertex2f( 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[2][0], triangles[i].p[2][1] ); | ||||||
|  |  | ||||||
|       glColor3f( triangles[i].color[2][0], |       glColor3f( triangles[i].color[2][0], | ||||||
| 		 triangles[i].color[2][1], | 		 triangles[i].color[2][1], | ||||||
| 		 triangles[i].color[2][2] ); | 		 triangles[i].color[2][2] ); | ||||||
|  |  | ||||||
|       glVertex2i( triangles[i].p[2][0], triangles[i].p[2][1] ); |       glVertex2f( 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[0][0], triangles[i].p[0][1] ); | ||||||
|    } |    } | ||||||
|  |  | ||||||
|    glEnd(); |    glEnd(); | ||||||
| @@ -170,9 +173,9 @@ void GLCALLBACK end_callback() | |||||||
| void GLCALLBACK vertex_callback( void *data ) | void GLCALLBACK vertex_callback( void *data ) | ||||||
| { | { | ||||||
|    GLsizei	no; |    GLsizei	no; | ||||||
|    GLint	*p; |    GLfloat	*p; | ||||||
|  |  | ||||||
|    p = (GLint *) data; |    p = (GLfloat *) data; | ||||||
|    no = triangles[triangle_cnt].no; |    no = triangles[triangle_cnt].no; | ||||||
|  |  | ||||||
|    triangles[triangle_cnt].p[no][0] = p[0]; |    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 ) | void set_screen_wh( GLsizei w, GLsizei h ) | ||||||
| { | { | ||||||
|    width = w; |    width = w; | ||||||
| @@ -208,10 +227,11 @@ void tesse( void ) | |||||||
|  |  | ||||||
|    if ( tobj != NULL ) |    if ( tobj != NULL ) | ||||||
|    { |    { | ||||||
|       gluTessCallback( tobj, GLU_BEGIN, glBegin ); |       gluTessCallback( tobj, GLU_TESS_BEGIN, glBegin ); | ||||||
|       gluTessCallback( tobj, GLU_VERTEX, glVertex2iv ); |       gluTessCallback( tobj, GLU_TESS_VERTEX, glVertex2fv ); | ||||||
|       gluTessCallback( tobj, GLU_END, glEnd ); |       gluTessCallback( tobj, GLU_TESS_END, glEnd ); | ||||||
|       gluTessCallback( tobj, GLU_ERROR, my_error ); |       gluTessCallback( tobj, GLU_TESS_ERROR, error_callback ); | ||||||
|  |       gluTessCallback( tobj, GLU_TESS_COMBINE, combine_callback ); | ||||||
|  |  | ||||||
|       glNewList( list_start, GL_COMPILE ); |       glNewList( list_start, GL_COMPILE ); | ||||||
|       gluBeginPolygon( tobj ); |       gluBeginPolygon( tobj ); | ||||||
| @@ -233,10 +253,10 @@ void tesse( void ) | |||||||
|       gluEndPolygon( tobj ); |       gluEndPolygon( tobj ); | ||||||
|       glEndList(); |       glEndList(); | ||||||
|  |  | ||||||
|       gluTessCallback( tobj, GLU_BEGIN, begin_callback ); |       gluTessCallback( tobj, GLU_TESS_BEGIN, begin_callback ); | ||||||
|       gluTessCallback( tobj, GLU_VERTEX, vertex_callback ); |       gluTessCallback( tobj, GLU_TESS_VERTEX, vertex_callback ); | ||||||
|       gluTessCallback( tobj, GLU_END, end_callback ); |       gluTessCallback( tobj, GLU_TESS_END, end_callback ); | ||||||
|       gluTessCallback( tobj, GLU_EDGE_FLAG, edge_callback ); |       gluTessCallback( tobj, GLU_TESS_EDGE_FLAG, edge_callback ); | ||||||
|  |  | ||||||
|       glNewList( list_start + 1, GL_COMPILE ); |       glNewList( list_start + 1, GL_COMPILE ); | ||||||
|       gluBeginPolygon( tobj ); |       gluBeginPolygon( tobj ); | ||||||
| @@ -267,7 +287,7 @@ void tesse( void ) | |||||||
|  |  | ||||||
| void left_down( int x1, int y1 ) | void left_down( int x1, int y1 ) | ||||||
| { | { | ||||||
|    GLint	P[2]; |    GLfloat	P[2]; | ||||||
|    GLuint	point_cnt; |    GLuint	point_cnt; | ||||||
|  |  | ||||||
|    /* translate GLUT into GL coordinates */ |    /* translate GLUT into GL coordinates */ | ||||||
| @@ -284,13 +304,13 @@ void left_down( int x1, int y1 ) | |||||||
|  |  | ||||||
|    if ( point_cnt ) |    if ( point_cnt ) | ||||||
|    { |    { | ||||||
|       glVertex2iv( contours[contour_cnt].p[point_cnt-1] ); |       glVertex2fv( contours[contour_cnt].p[point_cnt-1] ); | ||||||
|       glVertex2iv( P ); |       glVertex2fv( P ); | ||||||
|    } |    } | ||||||
|    else |    else | ||||||
|    { |    { | ||||||
|       glVertex2iv( P ); |       glVertex2fv( P ); | ||||||
|       glVertex2iv( P ); |       glVertex2fv( P ); | ||||||
|    } |    } | ||||||
|  |  | ||||||
|    glEnd(); |    glEnd(); | ||||||
| @@ -311,8 +331,8 @@ void middle_down( int x1, int y1 ) | |||||||
|    { |    { | ||||||
|       glBegin( GL_LINES ); |       glBegin( GL_LINES ); | ||||||
|  |  | ||||||
|       glVertex2iv( contours[contour_cnt].p[0] ); |       glVertex2fv( contours[contour_cnt].p[0] ); | ||||||
|       glVertex2iv( contours[contour_cnt].p[point_cnt-1] ); |       glVertex2fv( contours[contour_cnt].p[point_cnt-1] ); | ||||||
|  |  | ||||||
|       contours[contour_cnt].p[point_cnt][0] = -1; |       contours[contour_cnt].p[point_cnt][0] = -1; | ||||||
|  |  | ||||||
| @@ -383,24 +403,24 @@ void display( void ) | |||||||
| 	 case 0: | 	 case 0: | ||||||
| 	    break; | 	    break; | ||||||
| 	 case 1: | 	 case 1: | ||||||
| 	    glVertex2iv( contours[i].p[0] ); | 	    glVertex2fv( contours[i].p[0] ); | ||||||
| 	    glVertex2iv( contours[i].p[0] ); | 	    glVertex2fv( contours[i].p[0] ); | ||||||
| 	    break; | 	    break; | ||||||
| 	 case 2: | 	 case 2: | ||||||
| 	    glVertex2iv( contours[i].p[0] ); | 	    glVertex2fv( contours[i].p[0] ); | ||||||
| 	    glVertex2iv( contours[i].p[1] ); | 	    glVertex2fv( contours[i].p[1] ); | ||||||
| 	    break; | 	    break; | ||||||
| 	 default: | 	 default: | ||||||
| 	    --point_cnt; | 	    --point_cnt; | ||||||
| 	    for ( j = 0 ; j < point_cnt ; j++ ) | 	    for ( j = 0 ; j < point_cnt ; j++ ) | ||||||
| 	    { | 	    { | ||||||
| 	       glVertex2iv( contours[i].p[j] ); | 	       glVertex2fv( contours[i].p[j] ); | ||||||
| 	       glVertex2iv( contours[i].p[j+1] ); | 	       glVertex2fv( contours[i].p[j+1] ); | ||||||
| 	    } | 	    } | ||||||
| 	    if ( contours[i].p[j+1][0] == -1 ) | 	    if ( contours[i].p[j+1][0] == -1 ) | ||||||
| 	    { | 	    { | ||||||
| 	       glVertex2iv( contours[i].p[0] ); | 	       glVertex2fv( contours[i].p[0] ); | ||||||
| 	       glVertex2iv( contours[i].p[j] ); | 	       glVertex2fv( contours[i].p[j] ); | ||||||
| 	    } | 	    } | ||||||
| 	    break; | 	    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. |  * Example of using the 1.1 texture object functions. | ||||||
| @@ -10,8 +10,14 @@ | |||||||
|  |  | ||||||
| /* | /* | ||||||
|  * $Log: texobj.c,v $ |  * $Log: texobj.c,v $ | ||||||
|  * Revision 1.1  1999/08/19 00:55:40  jtg |  * Revision 1.1.1.1.2.2  2000/03/01 03:36:35  brianp | ||||||
|  * Initial revision |  * 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 |  * Revision 3.1  1999/03/28 18:24:37  brianp | ||||||
|  * minor clean-up |  * minor clean-up | ||||||
| @@ -34,7 +40,7 @@ static GLfloat Angle = 0.0f; | |||||||
| static GLboolean HaveTexObj = GL_FALSE; | 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 | #  define TEXTURE_OBJECT 1 | ||||||
| #elif defined(GL_EXT_texture_object) | #elif defined(GL_EXT_texture_object) | ||||||
| #  define TEXTURE_OBJECT 1 | #  define TEXTURE_OBJECT 1 | ||||||
| @@ -84,7 +90,7 @@ static void draw( void ) | |||||||
| #endif | #endif | ||||||
|    } |    } | ||||||
|    else { |    else { | ||||||
|       glCallList( TexObj[0] ); |       glCallList( TexObj[1] ); | ||||||
|    } |    } | ||||||
|    glBegin( GL_POLYGON ); |    glBegin( GL_POLYGON ); | ||||||
|    glTexCoord2f( 0.0, 0.0 );   glVertex2f( -1.0, -1.0 ); |    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 *exten = (char *) glGetString( GL_EXTENSIONS ); | ||||||
|       char *version = (char *) glGetString( GL_VERSION ); |       char *version = (char *) glGetString( GL_VERSION ); | ||||||
|       if (   strstr( exten, "GL_EXT_texture_object" ) |       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; |          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. |  * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. | ||||||
| @@ -108,16 +108,16 @@ GLubyte *image = checkImage; | |||||||
| GLint imageHeight = CHECKIMAGEHEIGHT; | GLint imageHeight = CHECKIMAGEHEIGHT; | ||||||
| GLint imageWidth = CHECKIMAGEWIDTH; | GLint imageWidth = CHECKIMAGEWIDTH; | ||||||
|  |  | ||||||
| float decal[] = { | static float decal[] = { | ||||||
|     GL_DECAL, |     GL_DECAL, | ||||||
| }; | }; | ||||||
| float modulate[] = { | static float modulate[] = { | ||||||
|     GL_MODULATE, |     GL_MODULATE, | ||||||
| }; | }; | ||||||
| float repeat[] = { | static float repeat[] = { | ||||||
|     GL_REPEAT, |     GL_REPEAT, | ||||||
| }; | }; | ||||||
| float nearest[] = { | static float nearest[] = { | ||||||
|     GL_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 | # Mesa 3-D graphics library | ||||||
| # Version:  3.1 | # 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) | 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 \ | 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 \ | 	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) | OBJECTS = $(SOURCES:.c=.o) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -19,9 +19,12 @@ | |||||||
| # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | # 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 $ | # $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 | # Revision 1.5  1999/10/03 00:53:38  gareth | ||||||
| # Added tessellation winding rule files. | # Added tessellation winding rule files. | ||||||
| # | # | ||||||
| @@ -59,7 +62,7 @@ LIBDIR = ../lib | |||||||
|  |  | ||||||
| SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \ | 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 \ | 	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) | 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 | # Mesa 3-D graphics library | ||||||
| # Version:  3.1 | # Version:  3.1 | ||||||
| @@ -20,7 +20,7 @@ LIBDIR = ../lib | |||||||
|  |  | ||||||
| SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \ | 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 \ | 	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) | 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 \ | 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 \ | 	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,\ | 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,\ | 	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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1999  Brian Paul |  * Copyright (C) 1995-2000  Brian Paul | ||||||
|  * |  * | ||||||
|  * This library is free software; you can redistribute it and/or |  * This library is free software; you can redistribute it and/or | ||||||
|  * modify it under the terms of the GNU Library General Public |  * 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 | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #else | ||||||
| @@ -304,7 +211,7 @@ const GLubyte* GLAPIENTRY gluErrorString( GLenum errorCode ) | |||||||
|       "unconnected trim curves", |       "unconnected trim curves", | ||||||
|       "unknown knot error", |       "unknown knot error", | ||||||
|       "negative vertex count encountered", |       "negative vertex count encountered", | ||||||
|       "negative byte-stride encounteed", |       "negative byte-stride encountered", | ||||||
|       "unknown type descriptor", |       "unknown type descriptor", | ||||||
|       "null control array or knot vector", |       "null control array or knot vector", | ||||||
|       "duplicate point on pwlcurve" |       "duplicate point on pwlcurve" | ||||||
| @@ -367,8 +274,8 @@ const GLubyte* GLAPIENTRY gluErrorString( GLenum errorCode ) | |||||||
|  |  | ||||||
| const GLubyte* GLAPIENTRY gluGetString( GLenum name ) | const GLubyte* GLAPIENTRY gluGetString( GLenum name ) | ||||||
| { | { | ||||||
|    static char *extensions = "GL_EXT_abgr GLU_EXT_get_proc_address"; |    static char *extensions = "GL_EXT_abgr"; | ||||||
|    static char *version = "1.2 Mesa 3.1"; |    static char *version = "1.2 Mesa 3.2 beta 1"; | ||||||
|  |  | ||||||
|    switch (name) { |    switch (name) { | ||||||
|       case GLU_EXTENSIONS: |       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 |  * Mesa 3-D graphics library | ||||||
| @@ -23,8 +23,19 @@ | |||||||
|  |  | ||||||
| /* | /* | ||||||
|  * $Log: gluP.h,v $ |  * $Log: gluP.h,v $ | ||||||
|  * Revision 1.1  1999/08/19 00:55:42  jtg |  * Revision 1.1.1.1.2.1  1999/12/06 05:24:36  joukj | ||||||
|  * Initial revision |  * | ||||||
|  |  *  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 |  * Revision 1.4  1999/01/03 03:23:15  brianp | ||||||
|  * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) |  * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) | ||||||
| @@ -55,6 +66,7 @@ | |||||||
| #include "GL/gl.h" | #include "GL/gl.h" | ||||||
| #include "GL/glu.h" | #include "GL/glu.h" | ||||||
|  |  | ||||||
|  | #include <string.h> | ||||||
|  |  | ||||||
| #ifndef MESA | #ifndef MESA | ||||||
|    /* If we're using the real OpenGL header files... */ |    /* 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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1999  Brian Paul |  * Copyright (C) 1995-2000  Brian Paul | ||||||
|  * |  * | ||||||
|  * This library is free software; you can redistribute it and/or |  * This library is free software; you can redistribute it and/or | ||||||
|  * modify it under the terms of the GNU Library General Public |  * 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 | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #else | ||||||
| @@ -138,9 +85,11 @@ GLint GLAPIENTRY gluScaleImage( GLenum format, | |||||||
| 	 components = 2; | 	 components = 2; | ||||||
| 	 break; | 	 break; | ||||||
|       case GL_RGB: |       case GL_RGB: | ||||||
|  |       case GL_BGR: | ||||||
| 	 components = 3; | 	 components = 3; | ||||||
| 	 break; | 	 break; | ||||||
|       case GL_RGBA: |       case GL_RGBA: | ||||||
|  |       case GL_BGRA: | ||||||
| #ifdef GL_EXT_abgr | #ifdef GL_EXT_abgr | ||||||
|       case GL_ABGR_EXT: |       case GL_ABGR_EXT: | ||||||
| #endif | #endif | ||||||
| @@ -702,12 +651,6 @@ GLint GLAPIENTRY gluBuild1DMipmaps( GLenum target, GLint components, | |||||||
|  |  | ||||||
|    free( texture ); |    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; |    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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1999  Brian Paul |  * Copyright (C) 1995-2000  Brian Paul | ||||||
|  * |  * | ||||||
|  * This library is free software; you can redistribute it and/or |  * This library is free software; you can redistribute it and/or | ||||||
|  * modify it under the terms of the GNU Library General Public |  * 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) |  * NURBS implementation written by Bogdan Sikorski (bogdan@cira.it) | ||||||
|  * See README2 for more info. |  * See README2 for more info. | ||||||
| @@ -617,13 +550,9 @@ void GLAPIENTRY gluNurbsSurface( GLUnurbsObj *nobj, | |||||||
|  |  | ||||||
|  |  | ||||||
| void GLAPIENTRY | 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(GLCALLBACKPCAST)(GLenum))fn; | ||||||
|     nobj->error_callback = (void(*)(GLenum))fn; |  | ||||||
| #else |  | ||||||
| 	nobj->error_callback = (void(GLCALLBACKP)(GLenum))fn; |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|     if(which!=GLU_ERROR) |     if(which!=GLU_ERROR) | ||||||
|         call_user_error(nobj,GLU_INVALID_ENUM); |         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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1999  Brian Paul |  * Copyright (C) 1999-2000  Brian Paul | ||||||
|  * |  * | ||||||
|  * This library is free software; you can redistribute it and/or |  * This library is free software; you can redistribute it and/or | ||||||
|  * modify it under the terms of the GNU Library General Public |  * 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: | /* TODO: | ||||||
|  *   texture coordinate support |  *   texture coordinate support | ||||||
|  *   flip normals according to orientation |  *   flip normals according to orientation | ||||||
| @@ -122,11 +36,21 @@ | |||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include "gluP.h" | #include "gluP.h" | ||||||
| #include "tess_macros.h" |  | ||||||
| #endif | #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: |  * Sin and Cos for degree angles: | ||||||
|  */ |  */ | ||||||
| @@ -146,7 +70,7 @@ struct GLUquadric { | |||||||
| 	GLenum Orientation;		/* GLU_INSIDE or GLU_OUTSIDE */ | 	GLenum Orientation;		/* GLU_INSIDE or GLU_OUTSIDE */ | ||||||
| 	GLboolean TextureFlag;		/* Generate texture coords? */ | 	GLboolean TextureFlag;		/* Generate texture coords? */ | ||||||
| 	GLenum Normals;		/* GLU_NONE, GLU_FLAT, or GLU_SMOOTH */ | 	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. |  * Set the error handler callback function. | ||||||
|  */ |  */ | ||||||
| void GLAPIENTRY gluQuadricCallback( GLUquadricObj *qobj, | 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. |     * UGH, this is a mess!  I thought ANSI was a standard. | ||||||
|     */ |     */ | ||||||
|    if (qobj && which==GLU_ERROR) { |    if (qobj && which==GLU_ERROR) { | ||||||
| #ifdef __CYGWIN32__ | #ifdef __CYGWIN32__ | ||||||
|       qobj->ErrorFunc = (void(*)(int))fn; |       qobj->ErrorFunc = (void(GLCALLBACKPCAST)(GLenum))fn; | ||||||
| #elif defined(OPENSTEP) | #elif defined(OPENSTEP) | ||||||
|       qobj->ErrorFunc = (void(*)(GLenum))fn; |       qobj->ErrorFunc = (void(*)(GLenum))fn; | ||||||
| #elif defined(_WIN32) | #elif defined(_WIN32) | ||||||
| 	  qobj->ErrorFunc = (void(GLCALLBACKP)(int))fn; |       qobj->ErrorFunc = (void(GLCALLBACK*)(int))fn; | ||||||
| #elif defined(__STORM__) | #elif defined(__STORM__) | ||||||
| 	  qobj->ErrorFunc = (void(GLCALLBACKP)(GLenum))fn; |       qobj->ErrorFunc = (void(GLCALLBACK*)(GLenum))fn; | ||||||
| #elif defined(__BEOS__) | #elif defined(__BEOS__) | ||||||
|       qobj->ErrorFunc = (void(*)(GLenum))fn; |       qobj->ErrorFunc = (void(*)(GLenum))fn; | ||||||
| #else | #else | ||||||
| 	  qobj->ErrorFunc = (void(GLCALLBACKP)())fn; |       qobj->ErrorFunc = (void(GLCALLBACK*)())fn; | ||||||
| #endif | #endif | ||||||
|    } |    } | ||||||
| } | } | ||||||
| @@ -392,8 +316,8 @@ void GLAPIENTRY gluCylinder( GLUquadricObj *qobj, | |||||||
|          for (i=0;i<=slices;i++) { |          for (i=0;i<=slices;i++) { | ||||||
|             GLfloat x, y; |             GLfloat x, y; | ||||||
|             if (i == slices) { |             if (i == slices) { | ||||||
|                x = sin(0); |                x = sin(0.0); | ||||||
|                y = cos(0); |                y = cos(0.0); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                x = sin(i * da); |                x = sin(i * da); | ||||||
| @@ -783,7 +707,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius, | |||||||
|       for (loop=0; loop<loops; loop++) { |       for (loop=0; loop<loops; loop++) { | ||||||
| 	 angle = DEG_TO_RAD(startAngle); | 	 angle = DEG_TO_RAD(startAngle); | ||||||
| 	 glBegin( GL_LINE_STRIP ); | 	 glBegin( GL_LINE_STRIP ); | ||||||
| 	 for (slice=0; slice<slices; slice++) { | 	 for (slice=0; slice<=slices; slice++) { | ||||||
| 	    glVertex2d( radius * sin(angle), radius * cos(angle) ); | 	    glVertex2d( radius * sin(angle), radius * cos(angle) ); | ||||||
| 	    angle += delta_angle; | 	    angle += delta_angle; | ||||||
| 	 } | 	 } | ||||||
| @@ -792,7 +716,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius, | |||||||
|       } |       } | ||||||
|       /* draw spokes */ |       /* draw spokes */ | ||||||
|       angle = DEG_TO_RAD(startAngle); |       angle = DEG_TO_RAD(startAngle); | ||||||
|       for (slice=0; slice<slices; slice++) { |       for (slice=0; slice<=slices; slice++) { | ||||||
| 	 radius = innerRadius; | 	 radius = innerRadius; | ||||||
| 	 glBegin( GL_LINE_STRIP ); | 	 glBegin( GL_LINE_STRIP ); | ||||||
| 	 for (loop=0; loop<loops; loop++) { | 	 for (loop=0; loop<loops; loop++) { | ||||||
| @@ -846,7 +770,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius, | |||||||
|       for (loop=0; loop<loops; loop++) { |       for (loop=0; loop<loops; loop++) { | ||||||
| 	 glBegin( GL_QUAD_STRIP ); | 	 glBegin( GL_QUAD_STRIP ); | ||||||
| 	 angle = DEG_TO_RAD(startAngle); | 	 angle = DEG_TO_RAD(startAngle); | ||||||
| 	 for (slice=0; slice<slices; slice++) { | 	 for (slice=0; slice<=slices; slice++) { | ||||||
| 	    if (qobj->Orientation==GLU_OUTSIDE) { | 	    if (qobj->Orientation==GLU_OUTSIDE) { | ||||||
| 	       glVertex2d( (radius+delta_radius)*sin(angle), | 	       glVertex2d( (radius+delta_radius)*sin(angle), | ||||||
| 			   (radius+delta_radius)*cos(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 |  * Mesa 3-D graphics library | ||||||
| @@ -56,33 +56,39 @@ extern "C" { | |||||||
| struct GLUtesselator | struct GLUtesselator | ||||||
| { | { | ||||||
|     tess_callbacks_t	callbacks; |     tess_callbacks_t	callbacks; | ||||||
|     GLboolean		boundary_only; |  | ||||||
|     GLenum		winding_rule; |     GLenum		winding_rule; | ||||||
|  |     GLboolean		boundary_only; | ||||||
|     GLdouble		tolerance; |     GLdouble		tolerance; | ||||||
|     tess_plane_t	plane; |     GLenum		orientation; | ||||||
|     GLuint		contour_count; |     void		*data; | ||||||
|  |     GLint		num_contours; | ||||||
|     tess_contour_t	*contours, *last_contour; |     tess_contour_t	*contours, *last_contour; | ||||||
|     tess_contour_t	*current_contour; |     tess_contour_t	*current_contour; | ||||||
|     GLdouble		mins[2], maxs[2]; |     GLdouble		mins[2], maxs[2]; | ||||||
|     GLuint		vertex_count; |     GLint		num_vertices; | ||||||
|     tess_vertex_t	**sorted_vertices; |     tess_vertex_t	**sorted_vertices; | ||||||
| #if 0 | #if 0 | ||||||
|     tess_grid_t		*grid;			/* Not currently used... */ |     tess_grid_t		*grid;			/* Not currently used... */ | ||||||
| #endif | #endif | ||||||
|     heap_t		*ears; |     heap_t		*ears; | ||||||
|     hashtable_t		*cvc_lists; |  | ||||||
|     void		*data; |  | ||||||
|     GLboolean		edge_flag; |     GLboolean		edge_flag; | ||||||
|     GLuint		label; |     GLuint		label; | ||||||
|  |     tess_plane_t	plane; | ||||||
|     GLenum		error; |     GLenum		error; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| /***************************************************************************** | /***************************************************************************** | ||||||
|  * Tessellation error handler: |  * Common tessellation functions: | ||||||
|  *****************************************************************************/ |  *****************************************************************************/ | ||||||
| extern void tess_error_callback( GLUtesselator *, GLenum ); | 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: |  * Debugging output: | ||||||
| @@ -115,8 +121,8 @@ extern	int	tess_dbg_level; | |||||||
| #define MSG		tess_msg | #define MSG		tess_msg | ||||||
| #endif /* DEBUG */ | #endif /* DEBUG */ | ||||||
|  |  | ||||||
| extern INLINE void tess_msg( int level, char *format, ... ); | extern INLINE void tess_msg( GLint level, char *format, ... ); | ||||||
| extern INLINE void tess_info( char *file, char *line ); | extern INLINE void tess_info( char *file, GLint line ); | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| ## BeOS Generic Makefile v2.0 ## | ## 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 | ## 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 | #		naming scheme you need to specify the path to the library | ||||||
| #		and it's name | #		and it's name | ||||||
| #		library: my_lib.a entry: my_lib.a or path/my_lib.a | #		library: my_lib.a entry: my_lib.a or path/my_lib.a | ||||||
| #LIBS= MesaGL MesaGLU be |  | ||||||
| LIBS= GL GLU be | LIBS= GL GLU be | ||||||
| 		 |  | ||||||
| #	specify additional paths to directories following the standard | #	specify additional paths to directories following the standard | ||||||
| #	libXXX.so or libXXX.a naming scheme.  You can specify full paths | #	libXXX.so or libXXX.a naming scheme.  You can specify full paths | ||||||
| #	or paths relative to the makefile.  The paths included may not | #	or paths relative to the makefile.  The paths included may not | ||||||
|   | |||||||
| @@ -303,8 +303,7 @@ interruptibleXNextEvent(Display * dpy, XEvent * event) | |||||||
|     } |     } | ||||||
|     FD_ZERO(&fds); |     FD_ZERO(&fds); | ||||||
|     FD_SET(__glutConnectionFD, &fds); |     FD_SET(__glutConnectionFD, &fds); | ||||||
|     rc = select(__glutConnectionFD + 1, &fds, |     rc = select(__glutConnectionFD + 1, &fds, NULL, NULL, NULL); | ||||||
|       NULL, NULL, NULL); |  | ||||||
|     if (rc < 0) { |     if (rc < 0) { | ||||||
|       if (errno == EINTR) { |       if (errno == EINTR) { | ||||||
|         return 0; |         return 0; | ||||||
| @@ -897,8 +896,7 @@ waitForSomething(void) | |||||||
|     waittime = zerotime; |     waittime = zerotime; | ||||||
|   } |   } | ||||||
| #if !defined(_WIN32) | #if !defined(_WIN32) | ||||||
|   rc = select(__glutConnectionFD + 1, &fds, |   rc = select(__glutConnectionFD + 1, &fds, NULL, NULL, &waittime); | ||||||
|     NULL, NULL, &waittime); |  | ||||||
|   if (rc < 0 && errno != EINTR) |   if (rc < 0 && errno != EINTR) | ||||||
|     __glutFatalError("select error."); |     __glutFatalError("select error."); | ||||||
| #else | #else | ||||||
|   | |||||||
| @@ -20,7 +20,9 @@ | |||||||
| #include <X11/Xutil.h> | #include <X11/Xutil.h> | ||||||
| #else | #else | ||||||
| #include <windows.h> | #include <windows.h> | ||||||
|  | #ifndef __CYGWIN32__ | ||||||
| #include <mmsystem.h>  /* Win32 Multimedia API header. */ | #include <mmsystem.h>  /* Win32 Multimedia API header. */ | ||||||
|  | #endif | ||||||
| #endif /* !_WIN32 */ | #endif /* !_WIN32 */ | ||||||
|  |  | ||||||
| #include "glutint.h" | #include "glutint.h" | ||||||
|   | |||||||
| @@ -7,8 +7,10 @@ | |||||||
|  |  | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| #include <windows.h> | #include <windows.h> | ||||||
|  | #ifndef __CYGWIN32__ | ||||||
| #include <mmsystem.h>  /* Win32 Multimedia API header. */ | #include <mmsystem.h>  /* Win32 Multimedia API header. */ | ||||||
| #endif | #endif | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #include "glutint.h" | #include "glutint.h" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ | |||||||
| #define GLUT_BUILDING_LIB  /* Building the GLUT library itself. */ | #define GLUT_BUILDING_LIB  /* Building the GLUT library itself. */ | ||||||
| #include <GL/glut.h> | #include <GL/glut.h> | ||||||
|  |  | ||||||
| #if defined( MESA ) && defined( _WIN32 ) | #if defined(MESA) && defined(_WIN32) && !defined(__CYGWIN32__) | ||||||
| #include <gl/mesa_wgl.h> | #include <gl/mesa_wgl.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| @@ -71,7 +71,7 @@ extern int sys$gettim(struct timeval *); | |||||||
| #endif | #endif | ||||||
| #else | #else | ||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #if !defined(_WIN32) | #if !defined(_WIN32) || defined(__CYGWIN32__) | ||||||
| #include <sys/time.h> | #include <sys/time.h> | ||||||
| #else | #else | ||||||
| #include <winsock.h> | #include <winsock.h> | ||||||
|   | |||||||
| @@ -40,9 +40,57 @@ | |||||||
| #define XA_STRING 0 | #define XA_STRING 0 | ||||||
|  |  | ||||||
| /* Private routines from win32_util.c */ | /* Private routines from win32_util.c */ | ||||||
|  | #ifndef __CYGWIN32__ | ||||||
| extern int gettimeofday(struct timeval* tp, void* tzp); | extern int gettimeofday(struct timeval* tp, void* tzp); | ||||||
|  | #endif | ||||||
| extern void *__glutFont(void *font); | extern void *__glutFont(void *font); | ||||||
| extern int __glutGetTransparentPixel(Display *dpy, XVisualInfo *vinfo); | extern int __glutGetTransparentPixel(Display *dpy, XVisualInfo *vinfo); | ||||||
| extern void __glutAdjustCoords(Window parent, int *x, int *y, int *width, int *height); | 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__ */ | #endif /* __glutwin32_h__ */ | ||||||
|   | |||||||
| @@ -129,26 +129,29 @@ __glutXGetLayerVisualInfo(Display * dpy, long lvinfo_mask, | |||||||
|           break; |           break; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     if (lvinfo_mask & VisualLayerMask) |     if (lvinfo_mask & VisualLayerMask) { | ||||||
|       if (overlayInfo == NULL) { |       if (overlayInfo == NULL) { | ||||||
|         if (lvinfo_template->layer != 0) |         if (lvinfo_template->layer != 0) | ||||||
|           continue; |           continue; | ||||||
|       } else if (lvinfo_template->layer != overlayInfo->layer) |       } else if (lvinfo_template->layer != overlayInfo->layer) | ||||||
|         continue; |         continue; | ||||||
|     if (lvinfo_mask & VisualTransparentType) |     } | ||||||
|  |     if (lvinfo_mask & VisualTransparentType) { | ||||||
|       if (overlayInfo == NULL) { |       if (overlayInfo == NULL) { | ||||||
|         if (lvinfo_template->type != None) |         if (lvinfo_template->type != None) | ||||||
|           continue; |           continue; | ||||||
|       } else if (lvinfo_template->type != |       } else if (lvinfo_template->type != | ||||||
|         overlayInfo->transparent_type) |         overlayInfo->transparent_type) | ||||||
|         continue; |         continue; | ||||||
|     if (lvinfo_mask & VisualTransparentValue) |     } | ||||||
|  |     if (lvinfo_mask & VisualTransparentValue) { | ||||||
|       if (overlayInfo == NULL) |       if (overlayInfo == NULL) | ||||||
|         /* Non-overlay visuals have no sense of |         /* Non-overlay visuals have no sense of | ||||||
|            TransparentValue. */ |            TransparentValue. */ | ||||||
|         continue; |         continue; | ||||||
|       else if (lvinfo_template->value != overlayInfo->value) |       else if (lvinfo_template->value != overlayInfo->value) | ||||||
|         continue; |         continue; | ||||||
|  |     } | ||||||
|     layerInfo[count].vinfo = *pVinfo; |     layerInfo[count].vinfo = *pVinfo; | ||||||
|     if (overlayInfo == NULL) { |     if (overlayInfo == NULL) { | ||||||
|       layerInfo[count].layer = 0; |       layerInfo[count].layer = 0; | ||||||
|   | |||||||
| @@ -11,11 +11,7 @@ | |||||||
| #include "glutint.h" | #include "glutint.h" | ||||||
| #include "glutstroke.h" | #include "glutstroke.h" | ||||||
| #include "glutbitmap.h" | #include "glutbitmap.h" | ||||||
| #if defined(__CYGWIN32__) |  | ||||||
| typedef MINMAXINFO* LPMINMAXINFO; |  | ||||||
| #else |  | ||||||
| #include <sys/timeb.h> | #include <sys/timeb.h> | ||||||
| #endif |  | ||||||
|  |  | ||||||
| /* The following added by Paul Garceau <pgarceau@teleport.com> */ | /* The following added by Paul Garceau <pgarceau@teleport.com> */ | ||||||
| #if defined(__MINGW32__) | #if defined(__MINGW32__) | ||||||
| @@ -27,6 +23,7 @@ struct timeval; | |||||||
| extern StrokeFontRec glutStrokeRoman, glutStrokeMonoRoman; | extern StrokeFontRec glutStrokeRoman, glutStrokeMonoRoman; | ||||||
| extern BitmapFontRec glutBitmap8By13, glutBitmap9By15, glutBitmapTimesRoman10, glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12, glutBitmapHelvetica18; | extern BitmapFontRec glutBitmap8By13, glutBitmap9By15, glutBitmapTimesRoman10, glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12, glutBitmapHelvetica18; | ||||||
|  |  | ||||||
|  | #ifndef __CYGWIN32__ | ||||||
| int | int | ||||||
| gettimeofday(struct timeval* tp, void* tzp) | gettimeofday(struct timeval* tp, void* tzp) | ||||||
| { | { | ||||||
| @@ -39,6 +36,7 @@ gettimeofday(struct timeval* tp, void* tzp) | |||||||
|   /* 0 indicates that the call succeeded. */ |   /* 0 indicates that the call succeeded. */ | ||||||
|   return 0; |   return 0; | ||||||
| } | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
| /* To get around the fact that Microsoft DLLs only allow functions | /* To get around the fact that Microsoft DLLs only allow functions | ||||||
|    to be exported and now data addresses (as Unix DSOs support), the |    to be exported and now data addresses (as Unix DSOs support), the | ||||||
|   | |||||||
| @@ -8,13 +8,9 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| #include "glutint.h" | #include "glutint.h" | ||||||
| #if defined(__CYGWIN32__) |  | ||||||
| typedef MINMAXINFO* LPMINMAXINFO; |  | ||||||
| #else |  | ||||||
| #include <sys/timeb.h> | #include <sys/timeb.h> | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifdef _WIN32 | #if defined(_WIN32) && !defined(__CYGWIN32__) | ||||||
| #include <mmsystem.h>  /* Win32 Multimedia API header. */ | #include <mmsystem.h>  /* Win32 Multimedia API header. */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,59 +1 @@ | |||||||
| # Makefile for OpenGL widgets | include Makefile.X11 | ||||||
|  |  | ||||||
| # 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) |  | ||||||
|   | |||||||
							
								
								
									
										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 | # Mesa 3-D graphics library | ||||||
| # Version:  3.3 | # Version:  3.1 | ||||||
| # Copyright (C) 1995-1999  Brian Paul | # Copyright (C) 1995-1999  Brian Paul | ||||||
|  |  | ||||||
| # Makefile for core library | # Makefile for core library | ||||||
| @@ -18,13 +18,13 @@ VPATH = RCS | |||||||
| INCDIR = ../include | INCDIR = ../include | ||||||
| LIBDIR = ../lib | LIBDIR = ../lib | ||||||
|  |  | ||||||
|  |  | ||||||
| CORE_SOURCES = \ | CORE_SOURCES = \ | ||||||
| 	glapi.c \ |  | ||||||
| 	glapinoop.c \ |  | ||||||
| 	accum.c \ | 	accum.c \ | ||||||
| 	alpha.c \ | 	alpha.c \ | ||||||
| 	alphabuf.c \ | 	alphabuf.c \ | ||||||
|  | 	api1.c \ | ||||||
|  | 	api2.c \ | ||||||
|  | 	apiext.c \ | ||||||
| 	attrib.c \ | 	attrib.c \ | ||||||
| 	bbox.c \ | 	bbox.c \ | ||||||
| 	bitmap.c \ | 	bitmap.c \ | ||||||
| @@ -37,7 +37,6 @@ CORE_SOURCES = \ | |||||||
| 	cva.c \ | 	cva.c \ | ||||||
| 	debug_xform.c \ | 	debug_xform.c \ | ||||||
| 	depth.c \ | 	depth.c \ | ||||||
| 	dispatch.c \ |  | ||||||
| 	dlist.c \ | 	dlist.c \ | ||||||
| 	drawpix.c \ | 	drawpix.c \ | ||||||
| 	enable.c \ | 	enable.c \ | ||||||
| @@ -50,19 +49,18 @@ CORE_SOURCES = \ | |||||||
| 	glmisc.c \ | 	glmisc.c \ | ||||||
| 	hash.c \ | 	hash.c \ | ||||||
| 	image.c \ | 	image.c \ | ||||||
| 	imaging.c \ |  | ||||||
| 	light.c \ | 	light.c \ | ||||||
| 	lines.c \ | 	lines.c \ | ||||||
| 	logic.c \ | 	logic.c \ | ||||||
| 	masking.c \ | 	masking.c \ | ||||||
| 	matrix.c \ | 	matrix.c \ | ||||||
| 	mem.c \ |  | ||||||
| 	mmath.c \ | 	mmath.c \ | ||||||
| 	mthreads.c \ | 	mthreads.c \ | ||||||
| 	pb.c \ | 	pb.c \ | ||||||
| 	pixel.c \ | 	pixel.c \ | ||||||
| 	pipeline.c \ | 	pipeline.c \ | ||||||
| 	points.c \ | 	points.c \ | ||||||
|  | 	pointers.c \ | ||||||
| 	polygon.c \ | 	polygon.c \ | ||||||
| 	quads.c \ | 	quads.c \ | ||||||
| 	rastpos.c \ | 	rastpos.c \ | ||||||
| @@ -106,6 +104,11 @@ DRIVER_SOURCES = \ | |||||||
| 	X/xmesa4.c \ | 	X/xmesa4.c \ | ||||||
| 	OSmesa/osmesa.c \ | 	OSmesa/osmesa.c \ | ||||||
| 	SVGA/svgamesa.c \ | 	SVGA/svgamesa.c \ | ||||||
|  | 	SVGA/svgamesa8.c \ | ||||||
|  | 	SVGA/svgamesa15.c \ | ||||||
|  | 	SVGA/svgamesa16.c \ | ||||||
|  | 	SVGA/svgamesa24.c \ | ||||||
|  | 	SVGA/svgamesa32.c \ | ||||||
| 	FX/fxapi.c \ | 	FX/fxapi.c \ | ||||||
| 	FX/fxclip.c \ | 	FX/fxclip.c \ | ||||||
| 	FX/fxcva.c \ | 	FX/fxcva.c \ | ||||||
| @@ -222,7 +225,8 @@ X86/3dnow.o: X86/3dnow.c | |||||||
| #	@echo "Specify a target configuration" | #	@echo "Specify a target configuration" | ||||||
|  |  | ||||||
| clean: | clean: | ||||||
| 	-rm *.o *~ */*.o */*~ | 	-rm *.o *~ */*.o */*~ *.lo *.la | ||||||
|  | 	-rm -rf .libs | ||||||
|  |  | ||||||
| targets: $(LIBDIR)/$(GL_LIB) | 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;  -*- | /* -*- mode: C; tab-width:8;  -*- */ | ||||||
|  |  | ||||||
|              fxapi.c - 3Dfx VooDoo/Mesa interface |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * This library is free software; you can redistribute it and/or |  * Mesa 3-D graphics library | ||||||
|  * modify it under the terms of the GNU Library General Public |  * Version:  3.1 | ||||||
|  * 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, |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * License along with this library; if not, write to the Free |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |  * 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: |  * Function names: | ||||||
|  *  fxMesa....     (The driver API) |  *  fxMesa....     (The driver API) | ||||||
| @@ -820,9 +848,10 @@ void fxsignals() | |||||||
| /* | /* | ||||||
|  * Create a new FX/Mesa context and return a handle to it. |  * Create a new FX/Mesa context and return a handle to it. | ||||||
|  */ |  */ | ||||||
| fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res, | fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win, | ||||||
| 					   GrScreenRefresh_t ref, |                                              GrScreenResolution_t res, | ||||||
| 					   const GLint attribList[]) |                                              GrScreenRefresh_t ref, | ||||||
|  |                                              const GLint attribList[]) | ||||||
| { | { | ||||||
|    fxMesaContext fxMesa = NULL; |    fxMesaContext fxMesa = NULL; | ||||||
|    int i,type; |    int i,type; | ||||||
| @@ -835,7 +864,7 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res | |||||||
|    GLint accumSize=0; |    GLint accumSize=0; | ||||||
|    GLcontext *shareCtx = NULL; |    GLcontext *shareCtx = NULL; | ||||||
|    GLcontext *ctx = 0; |    GLcontext *ctx = 0; | ||||||
|    FX_GrContext_t glideContext = 0; |    /*FX_GrContext_t glideContext = 0;*/ | ||||||
|    char *errorstr; |    char *errorstr; | ||||||
|  |  | ||||||
|    if (MESA_VERBOSE&VERBOSE_DRIVER) { |    if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
| @@ -928,24 +957,61 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res | |||||||
|    fxMesa->verbose=verbose; |    fxMesa->verbose=verbose; | ||||||
|    fxMesa->board=glbCurrentBoard; |    fxMesa->board=glbCurrentBoard; | ||||||
|  |  | ||||||
|  |  | ||||||
|    fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref, |  | ||||||
| #if  FXMESA_USE_ARGB | #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 | #else | ||||||
| 					  GR_COLORFORMAT_ABGR, |    fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref, | ||||||
|  | 					GR_COLORFORMAT_ABGR, | ||||||
|  | 					GR_ORIGIN_LOWER_LEFT, | ||||||
|  | 					2,aux); | ||||||
| #endif | #endif | ||||||
| 					  GR_ORIGIN_LOWER_LEFT, |  | ||||||
| 					  2,aux); |  | ||||||
|    if (!fxMesa->glideContext){ |    if (!fxMesa->glideContext){ | ||||||
|       errorstr = "grSstWinOpen";  |       errorstr = "grSstWinOpen";  | ||||||
|       goto errorhandler; |       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->width=FX_grSstScreenWidth(); | ||||||
|    fxMesa->height=FX_grSstScreenHeight(); |    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) |    if(verbose) | ||||||
|       fprintf(stderr,"Glide screen size: %dx%d\n", |       fprintf(stderr,"Glide screen size: %dx%d\n", | ||||||
|               (int)FX_grSstScreenWidth(),(int)FX_grSstScreenHeight()); |               (int)FX_grSstScreenWidth(),(int)FX_grSstScreenHeight()); | ||||||
| @@ -989,7 +1055,8 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res | |||||||
|  |  | ||||||
|    /* install signal handlers */ |    /* install signal handlers */ | ||||||
| #if defined(__linux__) | #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(SIGINT,cleangraphics_handler); | ||||||
|       signal(SIGHUP,cleangraphics_handler); |       signal(SIGHUP,cleangraphics_handler); | ||||||
|       signal(SIGPIPE,cleangraphics_handler); |       signal(SIGPIPE,cleangraphics_handler); | ||||||
| @@ -1204,7 +1271,7 @@ int GLAPIENTRY fxQueryHardware(void) | |||||||
|         char buf[80]; |         char buf[80]; | ||||||
|                          |                          | ||||||
|         FX_grGlideGetVersion(buf); |         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); |         fprintf(stderr,"Number of boards: %d\n",glbHWConfig.num_sst); | ||||||
|  |  | ||||||
|         if(glbHWConfig.SSTs[glbCurrentBoard].type==GR_SSTTYPE_VOODOO) { |         if(glbHWConfig.SSTs[glbCurrentBoard].type==GR_SSTTYPE_VOODOO) { | ||||||
| @@ -1232,7 +1299,10 @@ int GLAPIENTRY fxQueryHardware(void) | |||||||
| #if defined(__WIN32__) | #if defined(__WIN32__) | ||||||
|     onexit((_onexit_t)cleangraphics); |     onexit((_onexit_t)cleangraphics); | ||||||
| #elif defined(__linux__) | #elif defined(__linux__) | ||||||
|     atexit(cleangraphics); |     /* Only register handler if environment variable is not defined. */ | ||||||
|  |     if (!getenv("MESA_FX_NO_SIGNALS")) { | ||||||
|  | 	atexit(cleangraphics); | ||||||
|  |     } | ||||||
| #endif | #endif | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,28 +1,51 @@ | |||||||
| /* -*- mode: C; tab-width:8;  -*- | /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||||
|  |  | ||||||
|              fxdd.c - 3Dfx VooDoo Mesa device driver functions |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * This library is free software; you can redistribute it and/or |  * Mesa 3-D graphics library | ||||||
|  * modify it under the terms of the GNU Library General Public |  * Version:  3.1 | ||||||
|  * 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, |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * License along with this library; if not, write to the Free |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |  * 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 | #ifdef HAVE_CONFIG_H | ||||||
| #include "conf.h" | #include "conf.h" | ||||||
| #endif | #endif | ||||||
| @@ -34,6 +57,46 @@ | |||||||
| #include "enums.h" | #include "enums.h" | ||||||
| #include "extensions.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                    *****/ | /*****                 Miscellaneous functions                    *****/ | ||||||
| /**********************************************************************/ | /**********************************************************************/ | ||||||
| @@ -45,10 +108,11 @@ void fxDDDither(GLcontext *ctx, GLboolean enable) | |||||||
|     fprintf(stderr,"fxmesa: fxDDDither()\n"); |     fprintf(stderr,"fxmesa: fxDDDither()\n"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if(enable) |   if (enable) { | ||||||
|     grDitherMode(GR_DITHER_4x4); |     FX_grDitherMode(GR_DITHER_4x4); | ||||||
|   else |   } else { | ||||||
|     grDitherMode(GR_DITHER_DISABLE); |     FX_grDitherMode(GR_DITHER_DISABLE); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -121,14 +185,14 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all, | |||||||
|     /* clear color and depth buffer */ |     /* clear color and depth buffer */ | ||||||
|  |  | ||||||
|     if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) { |     if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) { | ||||||
|       grRenderBuffer(GR_BUFFER_BACKBUFFER); |       FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||||
|       grBufferClear(fxMesa->clearC, fxMesa->clearA, |       FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||||
|                     (FxU16)(ctx->Depth.Clear*0xffff)); | 		       (FxU16)(ctx->Depth.Clear*0xffff)); | ||||||
|     } |     } | ||||||
|     if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) { |     if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) { | ||||||
|        grRenderBuffer(GR_BUFFER_FRONTBUFFER); |       FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||||
|        grBufferClear(fxMesa->clearC, fxMesa->clearA, |       FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||||
|                      (FxU16)(ctx->Depth.Clear*0xffff)); | 		       (FxU16)(ctx->Depth.Clear*0xffff)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     newmask=mask & (~(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)); |     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 */ |     /* clear color buffer */ | ||||||
|  |  | ||||||
|     if(ctx->Color.ColorMask) { |     if(ctx->Color.ColorMask) { | ||||||
|       grDepthMask(FXFALSE); |       FX_grDepthMask(FXFALSE); | ||||||
|  |  | ||||||
|       if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) { |       if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) { | ||||||
|         grRenderBuffer(GR_BUFFER_BACKBUFFER); |         FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||||
|         grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); |         FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); | ||||||
|       } |       } | ||||||
|       if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) { |       if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) { | ||||||
|         grRenderBuffer(GR_BUFFER_FRONTBUFFER); |         FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||||
|         grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); |         FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, 0); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       if(ctx->Depth.Mask) |       if(ctx->Depth.Mask) { | ||||||
|         grDepthMask(FXTRUE); |         FX_grDepthMask(FXTRUE); | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     newmask=mask & (~(GL_COLOR_BUFFER_BIT)); |     newmask=mask & (~(GL_COLOR_BUFFER_BIT)); | ||||||
| @@ -158,14 +223,14 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all, | |||||||
|     /* clear depth buffer */ |     /* clear depth buffer */ | ||||||
|  |  | ||||||
|     if(ctx->Depth.Mask) { |     if(ctx->Depth.Mask) { | ||||||
|       grColorMask(FXFALSE,FXFALSE); |       FX_grColorMask(FXFALSE,FXFALSE); | ||||||
|       grBufferClear(fxMesa->clearC, fxMesa->clearA, |       FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, | ||||||
|                     (FxU16)(ctx->Depth.Clear*0xffff)); | 		       (FxU16)(ctx->Depth.Clear*0xffff)); | ||||||
|  |  | ||||||
|       grColorMask(ctx->Color.ColorMask[RCOMP] || |       FX_grColorMask(ctx->Color.ColorMask[RCOMP] || | ||||||
|                   ctx->Color.ColorMask[GCOMP] || | 		     ctx->Color.ColorMask[GCOMP] || | ||||||
|                   ctx->Color.ColorMask[BCOMP], | 		     ctx->Color.ColorMask[BCOMP], | ||||||
|                   ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); | 		     ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     newmask=mask & (~(GL_DEPTH_BUFFER_BIT)); |     newmask=mask & (~(GL_DEPTH_BUFFER_BIT)); | ||||||
| @@ -190,12 +255,12 @@ static GLboolean fxDDSetBuffer(GLcontext *ctx, GLenum mode ) | |||||||
|  |  | ||||||
|   if (mode == GL_FRONT_LEFT) { |   if (mode == GL_FRONT_LEFT) { | ||||||
|     fxMesa->currentFB = GR_BUFFER_FRONTBUFFER; |     fxMesa->currentFB = GR_BUFFER_FRONTBUFFER; | ||||||
|     grRenderBuffer(fxMesa->currentFB); |     FX_grRenderBuffer(fxMesa->currentFB); | ||||||
|     return GL_TRUE; |     return GL_TRUE; | ||||||
|   } |   } | ||||||
|   else if (mode == GL_BACK_LEFT) { |   else if (mode == GL_BACK_LEFT) { | ||||||
|     fxMesa->currentFB = GR_BUFFER_BACKBUFFER; |     fxMesa->currentFB = GR_BUFFER_BACKBUFFER; | ||||||
|     grRenderBuffer(fxMesa->currentFB); |     FX_grRenderBuffer(fxMesa->currentFB); | ||||||
|     return GL_TRUE; |     return GL_TRUE; | ||||||
|   } |   } | ||||||
|   else { |   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, | static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | ||||||
|                                 GLsizei width, GLsizei height, |                                 GLsizei width, GLsizei height, | ||||||
| @@ -241,10 +322,16 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | |||||||
|         ymax=fxMesa->height; |         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) {       \ | #define DRAWBIT(i) {       \ | ||||||
|   if(!ISCLIPPED(x+px))     \ |   if(!ISCLIPPED(x+px, y))  \ | ||||||
|     if( (*pb) & (1<<(i)) ) \ |     if( (*pb) & (1<<(i)) ) \ | ||||||
|       (*p)=color;          \ |       (*p)=color;          \ | ||||||
|   p++;                     \ |   p++;                     \ | ||||||
| @@ -258,7 +345,7 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | |||||||
|   scrwidth=fxMesa->width; |   scrwidth=fxMesa->width; | ||||||
|   scrheight=fxMesa->height; |   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; |     return GL_TRUE; | ||||||
|  |  | ||||||
|   pb=bitmap; |   pb=bitmap; | ||||||
| @@ -269,16 +356,16 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | |||||||
|     py=0; |     py=0; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if(py+height>=scrheight) |   if (py+height>=scrheight) | ||||||
|     height-=(py+height)-scrheight; |     height-=(py+height)-scrheight; | ||||||
|  |  | ||||||
|   info.size=sizeof(info); |   info.size=sizeof(info); | ||||||
|   if(!grLfbLock(GR_LFB_WRITE_ONLY, |   if(!FX_grLfbLock(GR_LFB_WRITE_ONLY, | ||||||
|                 fxMesa->currentFB, | 		   fxMesa->currentFB, | ||||||
|                 GR_LFBWRITEMODE_565, | 		   GR_LFBWRITEMODE_565, | ||||||
|                 GR_ORIGIN_UPPER_LEFT, | 		   GR_ORIGIN_UPPER_LEFT, | ||||||
|                 FXFALSE, | 		   FXFALSE, | ||||||
|                 &info)) { | 		   &info)) { | ||||||
| #ifndef FX_SILENT | #ifndef FX_SILENT | ||||||
|     fprintf(stderr,"fx Driver: error locking the linear frame buffer\n"); |     fprintf(stderr,"fx Driver: error locking the linear frame buffer\n"); | ||||||
| #endif | #endif | ||||||
| @@ -289,22 +376,28 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py, | |||||||
|   g=(GLint)(ctx->Current.RasterColor[1]*255.0f); |   g=(GLint)(ctx->Current.RasterColor[1]*255.0f); | ||||||
|   b=(GLint)(ctx->Current.RasterColor[2]*255.0f); |   b=(GLint)(ctx->Current.RasterColor[2]*255.0f); | ||||||
|   a=(GLint)(ctx->Current.RasterColor[3]*255.0f); |   a=(GLint)(ctx->Current.RasterColor[3]*255.0f); | ||||||
|   color=(FxU16) |   if (fxMesa->bgrOrder) | ||||||
|     ( ((FxU16)0xf8 & b) <<(11-3))  | |     color=(FxU16) | ||||||
|     ( ((FxU16)0xfc & g) <<(5-3+1)) | |       ( ((FxU16)0xf8 & b) <<(11-3))  | | ||||||
|     ( ((FxU16)0xf8 & r) >> 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; |   stride=info.strideInBytes>>1; | ||||||
|  |  | ||||||
|   /* This code is a bit slow... */ |   /* 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) |   px+=fxMesa->x_offset; | ||||||
|         break; |   scrheight=fxMesa->height+fxMesa->y_offset; | ||||||
|  |  | ||||||
|     if (y<=ymin) |   for(y=ymin; y<ymax; y++) { | ||||||
|         continue; |  | ||||||
|  |  | ||||||
|     p=((FxU16 *)info.lfbPtr)+px+((scrheight-y)*stride); |     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 ISCLIPPED | ||||||
| #undef DRAWBIT | #undef DRAWBIT | ||||||
| @@ -347,8 +440,6 @@ void fxDDSetNearFar(GLcontext *ctx, GLfloat n, GLfloat f) | |||||||
| { | { | ||||||
|    FX_CONTEXT(ctx)->new_state |= FX_NEW_FOG; |    FX_CONTEXT(ctx)->new_state |= FX_NEW_FOG; | ||||||
|    ctx->Driver.RenderStart = fxSetupFXUnits; |    ctx->Driver.RenderStart = fxSetupFXUnits; | ||||||
|  |  | ||||||
|    FX_CONTEXT(ctx)->wscale = fabs(f)/65535.0f; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| /* KW: Put the word Mesa in the render string because quakeworld | /* 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.depthMask		=GL_TRUE; | ||||||
|    fxMesa->unitsState.depthTestFunc	=GR_CMP_LESS; |    fxMesa->unitsState.depthTestFunc	=GR_CMP_LESS; | ||||||
|  |  | ||||||
|    grColorMask(FXTRUE, fxMesa->haveAlphaBuffer ? FXTRUE : FXFALSE); |    FX_grColorMask(FXTRUE, fxMesa->haveAlphaBuffer ? FXTRUE : FXFALSE); | ||||||
|    if(fxMesa->haveDoubleBuffer) { |    if(fxMesa->haveDoubleBuffer) { | ||||||
|       fxMesa->currentFB=GR_BUFFER_BACKBUFFER; |       fxMesa->currentFB=GR_BUFFER_BACKBUFFER; | ||||||
|       grRenderBuffer(GR_BUFFER_BACKBUFFER); |       FX_grRenderBuffer(GR_BUFFER_BACKBUFFER); | ||||||
|    } else { |    } else { | ||||||
|       fxMesa->currentFB=GR_BUFFER_FRONTBUFFER; |       fxMesa->currentFB=GR_BUFFER_FRONTBUFFER; | ||||||
|       grRenderBuffer(GR_BUFFER_FRONTBUFFER); |       FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER); | ||||||
|    } |    } | ||||||
|    |    | ||||||
|    fxMesa->state 	= NULL; |    fxMesa->state 	= NULL; | ||||||
| @@ -481,10 +572,10 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa ) | |||||||
|    } |    } | ||||||
|  |  | ||||||
|    if(fxMesa->haveZBuffer) |    if(fxMesa->haveZBuffer) | ||||||
|       grDepthBufferMode(GR_DEPTHBUFFER_ZBUFFER); |       FX_grDepthBufferMode(GR_DEPTHBUFFER_ZBUFFER); | ||||||
|      |      | ||||||
| #if (!FXMESA_USE_ARGB) | #if (!FXMESA_USE_ARGB) | ||||||
|    grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); /* Not every Glide has this  */ |    FX_grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); /* Not every Glide has this */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|    fxMesa->glCtx->Const.MaxTextureLevels=9; |    fxMesa->glCtx->Const.MaxTextureLevels=9; | ||||||
| @@ -505,7 +596,7 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa ) | |||||||
|  |  | ||||||
|    fxDDSetNearFar(fxMesa->glCtx,1.0,100.0); |    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. |    /* 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" ); |       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 ... */ |        /* Not very well written ... */ | ||||||
|        ((ctx->Enabled & (TEXTURE0_1D | TEXTURE1_1D)) &&  |        ((ctx->Enabled & (TEXTURE0_1D | TEXTURE1_1D)) &&  | ||||||
|         ((ctx->Enabled & (TEXTURE0_2D | TEXTURE1_2D))!=(TEXTURE0_2D | TEXTURE1_2D))) |         ((ctx->Enabled & (TEXTURE0_2D | TEXTURE1_2D))!=(TEXTURE0_2D | TEXTURE1_2D))) | ||||||
|        ) |        ) { | ||||||
|       return GL_FALSE; |       return GL_FALSE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     if((ctx->Texture.ReallyEnabled & TEXTURE0_2D) && |     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_FALSE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     if((ctx->Texture.ReallyEnabled & TEXTURE1_2D) && |     if((ctx->Texture.ReallyEnabled & TEXTURE1_2D) && | ||||||
|        (ctx->Texture.Unit[1].EnvMode==GL_BLEND)) |        (ctx->Texture.Unit[1].EnvMode==GL_BLEND)) { | ||||||
|       return GL_FALSE; |       return GL_FALSE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     if (MESA_VERBOSE & (VERBOSE_DRIVER|VERBOSE_TEXTURE)) |     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 |        /* Can't use multipass to blend a multitextured triangle - fall | ||||||
| 	* back to software. | 	* back to software. | ||||||
| 	*/ | 	*/ | ||||||
|        if (!fxMesa->haveTwoTMUs && ctx->Color.BlendEnabled)  |       if (!fxMesa->haveTwoTMUs && ctx->Color.BlendEnabled) { | ||||||
| 	  return GL_FALSE; | 	  return GL_FALSE; | ||||||
|  |       } | ||||||
| 	   | 	   | ||||||
|        if ((ctx->Texture.Unit[0].EnvMode!=ctx->Texture.Unit[1].EnvMode) && |        if ((ctx->Texture.Unit[0].EnvMode!=ctx->Texture.Unit[1].EnvMode) && | ||||||
| 	   (ctx->Texture.Unit[0].EnvMode!=GL_MODULATE) && | 	   (ctx->Texture.Unit[0].EnvMode!=GL_MODULATE) && | ||||||
| @@ -626,7 +727,6 @@ static GLboolean fxIsInHardware(GLcontext *ctx) | |||||||
|        { |        { | ||||||
| 	  if (MESA_VERBOSE&VERBOSE_DRIVER) | 	  if (MESA_VERBOSE&VERBOSE_DRIVER) | ||||||
| 	    fprintf(stderr, "fxMesa: unsupported multitex env mode\n"); | 	    fprintf(stderr, "fxMesa: unsupported multitex env mode\n"); | ||||||
|  |  | ||||||
| 	  return GL_FALSE; | 	  return GL_FALSE; | ||||||
|        } |        } | ||||||
|     } |     } | ||||||
| @@ -635,13 +735,15 @@ static GLboolean fxIsInHardware(GLcontext *ctx) | |||||||
|        /* Not very well written ... */ |        /* Not very well written ... */ | ||||||
|        ((ctx->Enabled & TEXTURE0_1D) &&  |        ((ctx->Enabled & TEXTURE0_1D) &&  | ||||||
|         (!(ctx->Enabled & TEXTURE0_2D))) |         (!(ctx->Enabled & TEXTURE0_2D))) | ||||||
|        ) |        ) { | ||||||
|       return GL_FALSE; |       return GL_FALSE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|      |      | ||||||
|     if((ctx->Texture.ReallyEnabled & TEXTURE0_2D) && |     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_FALSE; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   return GL_TRUE; |   return GL_TRUE; | ||||||
| @@ -680,11 +782,11 @@ static void fxDDUpdateDDPointers(GLcontext *ctx) | |||||||
|     ctx->Driver.LineFunc=fxMesa->LineFunc; |     ctx->Driver.LineFunc=fxMesa->LineFunc; | ||||||
|     ctx->Driver.TriangleFunc=fxMesa->TriangleFunc; |     ctx->Driver.TriangleFunc=fxMesa->TriangleFunc; | ||||||
|     ctx->Driver.QuadFunc=fxMesa->QuadFunc; |     ctx->Driver.QuadFunc=fxMesa->QuadFunc; | ||||||
|   } else  |   } else { | ||||||
|      fxMesa->render_index = FX_FALLBACK; |      fxMesa->render_index = FX_FALLBACK; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void fxSetupDDPointers(GLcontext *ctx) | void fxSetupDDPointers(GLcontext *ctx) | ||||||
| { | { | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
| @@ -748,7 +850,6 @@ void fxSetupDDPointers(GLcontext *ctx) | |||||||
|   ctx->Driver.CullFace=fxDDCullFace; |   ctx->Driver.CullFace=fxDDCullFace; | ||||||
|   ctx->Driver.ShadeModel=fxDDShadeModel; |   ctx->Driver.ShadeModel=fxDDShadeModel; | ||||||
|   ctx->Driver.Enable=fxDDEnable; |   ctx->Driver.Enable=fxDDEnable; | ||||||
|    |  | ||||||
|  |  | ||||||
|   ctx->Driver.RegisterVB=fxDDRegisterVB; |   ctx->Driver.RegisterVB=fxDDRegisterVB; | ||||||
|   ctx->Driver.UnregisterVB=fxDDUnregisterVB; |   ctx->Driver.UnregisterVB=fxDDUnregisterVB; | ||||||
| @@ -786,3 +887,4 @@ int gl_fx_dummy_function_dd(void) | |||||||
| } | } | ||||||
|  |  | ||||||
| #endif  /* FX */ | #endif  /* FX */ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,27 +1,51 @@ | |||||||
| /* -*- mode: C; tab-width:8;  -*- | /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||||
|  |  | ||||||
|              fxdd.c - 3Dfx VooDoo Mesa span and pixel functions |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * This library is free software; you can redistribute it and/or |  * Mesa 3-D graphics library | ||||||
|  * modify it under the terms of the GNU Library General Public |  * Version:  3.1 | ||||||
|  * 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, |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * License along with this library; if not, write to the Free |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |  * 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 | #ifdef HAVE_CONFIG_H | ||||||
| #include "conf.h" | #include "conf.h" | ||||||
| #endif | #endif | ||||||
| @@ -42,6 +66,72 @@ | |||||||
|  |  | ||||||
| #if !defined(FXMESA_USE_ARGB)  | #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(). | /* KW: Rearranged the args in the call to grLfbWriteRegion(). | ||||||
|  */ |  */ | ||||||
| #define LFB_WRITE_SPAN_MESA(dst_buffer,		\ | #define LFB_WRITE_SPAN_MESA(dst_buffer,		\ | ||||||
| @@ -50,7 +140,7 @@ | |||||||
| 			    src_width,		\ | 			    src_width,		\ | ||||||
| 			    src_stride,		\ | 			    src_stride,		\ | ||||||
| 			    src_data)		\ | 			    src_data)		\ | ||||||
|   grLfbWriteRegion(dst_buffer,			\ |   writeRegionClipped(fxMesa, dst_buffer,	\ | ||||||
| 		   dst_x,			\ | 		   dst_x,			\ | ||||||
| 		   dst_y,			\ | 		   dst_y,			\ | ||||||
| 		   GR_LFB_SRC_FMT_8888,		\ | 		   GR_LFB_SRC_FMT_8888,		\ | ||||||
| @@ -60,7 +150,11 @@ | |||||||
| 		   src_data)			\ | 		   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) (				\ | #define MESACOLOR_TO_ARGB(c) (				\ | ||||||
|              ( ((unsigned int)(c[ACOMP]))<<24 ) |	\ |              ( ((unsigned int)(c[ACOMP]))<<24 ) |	\ | ||||||
| @@ -68,7 +162,7 @@ | |||||||
|              ( ((unsigned int)(c[GCOMP]))<<8 )  |	\ |              ( ((unsigned int)(c[GCOMP]))<<8 )  |	\ | ||||||
|              (  (unsigned int)(c[BCOMP])) ) |              (  (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_x,  | ||||||
| 			 FxU32 dst_y,  | 			 FxU32 dst_y,  | ||||||
| 			 FxU32 src_width, | 			 FxU32 src_width, | ||||||
| @@ -84,7 +178,7 @@ void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer, | |||||||
|    { |    { | ||||||
|       argb[i] = MESACOLOR_TO_ARGB(rgba[i]); |       argb[i] = MESACOLOR_TO_ARGB(rgba[i]); | ||||||
|    } |    } | ||||||
|    FX_grLfbWriteRegion(dst_buffer, |    writeRegionClipped( /*fxMesa,*/ NULL, dst_buffer, | ||||||
| 		       dst_x, | 		       dst_x, | ||||||
| 		       dst_y, | 		       dst_y, | ||||||
| 		       GR_LFB_SRC_FMT_8888, | 		       GR_LFB_SRC_FMT_8888, | ||||||
| @@ -93,8 +187,9 @@ void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer, | |||||||
| 		       src_stride, | 		       src_stride, | ||||||
| 		       (void*)argb); | 		       (void*)argb); | ||||||
| } | } | ||||||
|  |   | ||||||
|  | #endif /* !defined(FXMESA_USE_RGBA) */ | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| /************************************************************************/ | /************************************************************************/ | ||||||
| /*****                    Span functions                            *****/ | /*****                    Span functions                            *****/ | ||||||
| @@ -107,12 +202,13 @@ static void fxDDWriteRGBASpan(const GLcontext *ctx, | |||||||
| { | { | ||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1;  | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDWriteRGBASpan(...)\n"); |      fprintf(stderr,"fxmesa: fxDDWriteRGBASpan(...)\n"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   x+=fxMesa->x_offset; | ||||||
|   if (mask) { |   if (mask) { | ||||||
|     int span=0; |     int span=0; | ||||||
|  |  | ||||||
| @@ -143,13 +239,14 @@ static void fxDDWriteRGBSpan(const GLcontext *ctx, | |||||||
| { | { | ||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|   GLubyte rgba[MAX_WIDTH][4]; |   GLubyte rgba[MAX_WIDTH][4]; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDWriteRGBSpan()\n"); |      fprintf(stderr,"fxmesa: fxDDWriteRGBSpan()\n"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   x+=fxMesa->x_offset; | ||||||
|   if (mask) { |   if (mask) { | ||||||
|     int span=0; |     int span=0; | ||||||
|  |  | ||||||
| @@ -192,13 +289,14 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | |||||||
| { | { | ||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|   GLuint data[MAX_WIDTH]; |   GLuint data[MAX_WIDTH]; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDWriteMonoRGBASpan(...)\n"); |      fprintf(stderr,"fxmesa: fxDDWriteMonoRGBASpan(...)\n"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   x+=fxMesa->x_offset; | ||||||
|   if (mask) { |   if (mask) { | ||||||
|     int span=0; |     int span=0; | ||||||
|  |  | ||||||
| @@ -208,7 +306,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | |||||||
|         ++span; |         ++span; | ||||||
|       } else { |       } else { | ||||||
|         if (span > 0) { |         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, |                             GR_LFB_SRC_FMT_8888, span, 1, 0, | ||||||
|                             (void *) data ); |                             (void *) data ); | ||||||
|           span = 0; |           span = 0; | ||||||
| @@ -217,7 +315,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (span > 0) |     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, |                         GR_LFB_SRC_FMT_8888, span, 1, 0, | ||||||
|                         (void *) data ); |                         (void *) data ); | ||||||
|   } else { |   } else { | ||||||
| @@ -225,7 +323,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx, | |||||||
|       data[i]=(GLuint) fxMesa->color; |       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 ); |                       n, 1, 0, (void *) data ); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @@ -237,7 +335,7 @@ static void fxDDReadRGBASpan(const GLcontext *ctx, | |||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLushort data[MAX_WIDTH]; |   GLushort data[MAX_WIDTH]; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDReadRGBASpan(...)\n"); |      fprintf(stderr,"fxmesa: fxDDReadRGBASpan(...)\n"); | ||||||
| @@ -245,20 +343,16 @@ static void fxDDReadRGBASpan(const GLcontext *ctx, | |||||||
|  |  | ||||||
|   assert(n < MAX_WIDTH); |   assert(n < MAX_WIDTH); | ||||||
|  |  | ||||||
|   grLfbReadRegion( fxMesa->currentFB, x, bottom-y, n, 1, 0, data); |   x+=fxMesa->x_offset; | ||||||
|   for (i=0;i<n;i++) { |   FX_grLfbReadRegion( fxMesa->currentFB, x, bottom-y, n, 1, 0, data); | ||||||
| #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; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|  |   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; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDWriteRGBAPixels(...)\n"); |      fprintf(stderr,"fxmesa: fxDDWriteRGBAPixels(...)\n"); | ||||||
| @@ -279,8 +373,8 @@ static void fxDDWriteRGBAPixels(const GLcontext *ctx, | |||||||
|  |  | ||||||
|   for(i=0;i<n;i++) |   for(i=0;i<n;i++) | ||||||
|     if(mask[i]) |     if(mask[i]) | ||||||
|        LFB_WRITE_SPAN_MESA(fxMesa->currentFB,x[i],bottom-y[i], |        LFB_WRITE_SPAN_MESA(fxMesa->currentFB, x[i]+fxMesa->x_offset, bottom-y[i], | ||||||
|                        /*GR_LFB_SRC_FMT_8888,*/1,/*1,*/0,(void *)rgba[i]); |                        1, 1, (void *)rgba[i]); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx, | static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx, | ||||||
| @@ -289,7 +383,7 @@ static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx, | |||||||
| { | { | ||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDWriteMonoRGBAPixels(...)\n"); |      fprintf(stderr,"fxmesa: fxDDWriteMonoRGBAPixels(...)\n"); | ||||||
| @@ -297,7 +391,7 @@ static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx, | |||||||
|  |  | ||||||
|   for(i=0;i<n;i++) |   for(i=0;i<n;i++) | ||||||
|     if(mask[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); |                        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; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|   GLushort data; |  | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDReadRGBAPixels(...)\n"); |      fprintf(stderr,"fxmesa: fxDDReadRGBAPixels(...)\n"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   for(i=0;i<n;i++) |   for(i=0;i<n;i++) { | ||||||
|     if(mask[i]) { |     if(mask[i]) { | ||||||
|       grLfbReadRegion(fxMesa->currentFB,x[i],bottom-y[i],1,1,0,&data); |       GLushort pixel; | ||||||
|    #if FXMESA_USE_ARGB  |       FX_grLfbReadRegion(fxMesa->currentFB,x[i],bottom-y[i],1,1,0,&pixel); | ||||||
|       rgba[i][RCOMP]=(data & 0xF800) >> 8; |       rgba[i][RCOMP] = FX_PixelToR[pixel]; | ||||||
|       rgba[i][GCOMP]=(data & 0x07E0) >> 3; |       rgba[i][GCOMP] = FX_PixelToG[pixel]; | ||||||
|       rgba[i][BCOMP]=(data & 0x001F) >> 8; |       rgba[i][BCOMP] = FX_PixelToB[pixel]; | ||||||
|    #else |       rgba[i][ACOMP] = 255; | ||||||
|       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; |  | ||||||
|     } |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| /************************************************************************/ | /************************************************************************/ | ||||||
| /*****                    Depth functions                           *****/ | /*****                    Depth functions                           *****/ | ||||||
| /************************************************************************/ | /************************************************************************/ | ||||||
| @@ -341,14 +429,15 @@ void fxDDReadDepthSpanFloat(GLcontext *ctx, | |||||||
| { | { | ||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|   GLushort data[MAX_WIDTH]; |   GLushort data[MAX_WIDTH]; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDReadDepthSpanFloat(...)\n"); |      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]. |     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[]) | 			  GLuint n, GLint x, GLint y, GLdepth depth[]) | ||||||
| { | { | ||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDReadDepthSpanInt(...)\n"); |      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, | GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx, | ||||||
| @@ -380,13 +470,14 @@ GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx, | |||||||
|   GLubyte *m=mask; |   GLubyte *m=mask; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLuint passed=0; |   GLuint passed=0; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDDepthTestSpanGeneric(...)\n"); |      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 cases ordered from most frequent to less frequent */ | ||||||
|   switch (ctx->Depth.Func) { |   switch (ctx->Depth.Func) { | ||||||
| @@ -578,7 +669,7 @@ GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx, | |||||||
|   } /*switch*/ |   } /*switch*/ | ||||||
|  |  | ||||||
|   if(passed) |   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; |   return passed; | ||||||
| } | } | ||||||
| @@ -590,7 +681,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   GLdepth zval; |   GLdepth zval; | ||||||
|   GLuint i; |   GLuint i; | ||||||
|   GLint bottom=fxMesa->height-1; |   GLint bottom=fxMesa->height+fxMesa->y_offset-1; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDDepthTestPixelsGeneric(...)\n"); |      fprintf(stderr,"fxmesa: fxDDDepthTestPixelsGeneric(...)\n"); | ||||||
| @@ -603,10 +694,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Update Z buffer */ |       /* Update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] < zval) { | ||||||
|             /* pass */ |             /* 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 { |           } else { | ||||||
|             /* fail */ |             /* fail */ | ||||||
|             mask[i] = 0; |             mask[i] = 0; | ||||||
| @@ -617,7 +708,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Don't update Z buffer */ |       /* Don't update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] < zval) { | ||||||
|             /* pass */ |             /* pass */ | ||||||
|           } |           } | ||||||
| @@ -634,10 +725,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Update Z buffer */ |       /* Update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] <= zval) { | ||||||
|             /* pass */ |             /* 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 { |           } else { | ||||||
|             /* fail */ |             /* fail */ | ||||||
|             mask[i] = 0; |             mask[i] = 0; | ||||||
| @@ -648,7 +739,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Don't update Z buffer */ |       /* Don't update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] <= zval) { | ||||||
|             /* pass */ |             /* pass */ | ||||||
|           } else { |           } else { | ||||||
| @@ -664,10 +755,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Update Z buffer */ |       /* Update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] >= zval) { | ||||||
|             /* pass */ |             /* 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 { |           } else { | ||||||
|             /* fail */ |             /* fail */ | ||||||
|             mask[i] = 0; |             mask[i] = 0; | ||||||
| @@ -678,7 +769,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Don't update Z buffer */ |       /* Don't update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] >= zval) { | ||||||
|             /* pass */ |             /* pass */ | ||||||
|           } else { |           } else { | ||||||
| @@ -694,10 +785,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Update Z buffer */ |       /* Update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] > zval) { | ||||||
|             /* pass */ |             /* 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 { |           } else { | ||||||
|             /* fail */ |             /* fail */ | ||||||
|             mask[i] = 0; |             mask[i] = 0; | ||||||
| @@ -708,7 +799,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Don't update Z buffer */ |       /* Don't update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] > zval) { | ||||||
|             /* pass */ |             /* pass */ | ||||||
|           } else { |           } else { | ||||||
| @@ -724,10 +815,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Update Z buffer */ |       /* Update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] != zval) { | ||||||
|             /* pass */ |             /* 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 { |           } else { | ||||||
|             /* fail */ |             /* fail */ | ||||||
|             mask[i] = 0; |             mask[i] = 0; | ||||||
| @@ -738,7 +829,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Don't update Z buffer */ |       /* Don't update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] != zval) { | ||||||
|             /* pass */ |             /* pass */ | ||||||
|           } |           } | ||||||
| @@ -755,10 +846,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Update Z buffer */ |       /* Update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] == zval) { | ||||||
|             /* pass */ |             /* 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 { |           } else { | ||||||
|             /* fail */ |             /* fail */ | ||||||
|             mask[i] = 0; |             mask[i] = 0; | ||||||
| @@ -769,7 +860,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Don't update Z buffer */ |       /* Don't update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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) { |           if (z[i] == zval) { | ||||||
|             /* pass */ |             /* pass */ | ||||||
|           } else { |           } else { | ||||||
| @@ -785,7 +876,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx, | |||||||
|       /* Update Z buffer */ |       /* Update Z buffer */ | ||||||
|       for (i=0; i<n; i++) { |       for (i=0; i<n; i++) { | ||||||
|         if (mask[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 { |     } else { | ||||||
|   | |||||||
| @@ -1,27 +1,48 @@ | |||||||
| /* -*- mode: C; tab-width:8;  -*- | /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||||
|  |  | ||||||
|              fxddtex.c - 3Dfx VooDoo Texture mapping functions |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * This library is free software; you can redistribute it and/or |  * Mesa 3-D graphics library | ||||||
|  * modify it under the terms of the GNU Library General Public |  * Version:  3.1 | ||||||
|  * 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, |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * License along with this library; if not, write to the Free |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |  * 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 | #ifdef HAVE_CONFIG_H | ||||||
| #include "conf.h" | #include "conf.h" | ||||||
| #endif | #endif | ||||||
| @@ -30,6 +51,37 @@ | |||||||
|  |  | ||||||
| #include "fxdrv.h" | #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 ****************************/ | /*************************** 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 */ |   fxTMMoveOutTM(fxMesa,tObj); /* TO DO: SLOW but easy to write */ | ||||||
|  |  | ||||||
|   ti=(tfxTexInfo *)tObj->DriverData; |   ti=fxTMGetTexInfo(tObj); | ||||||
|   ti->validated=GL_FALSE; |   ti->validated=GL_FALSE; | ||||||
|   fxMesa->new_state|=FX_NEW_TEXTURING; |   fxMesa->new_state|=FX_NEW_TEXTURING; | ||||||
|   ctx->Driver.RenderStart = fxSetupFXUnits; |   ctx->Driver.RenderStart = fxSetupFXUnits; | ||||||
| @@ -59,12 +111,12 @@ static tfxTexInfo *fxAllocTexObjData(fxMesaContext fxMesa) | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   ti->validated=GL_FALSE; |   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->tm[FX_TMU0]=NULL; | ||||||
|   ti->tmi.tm[FX_TMU1]=NULL; |   ti->tm[FX_TMU1]=NULL; | ||||||
|  |  | ||||||
|   ti->minFilt=GR_TEXTUREFILTER_POINT_SAMPLED; |   ti->minFilt=GR_TEXTUREFILTER_POINT_SAMPLED; | ||||||
|   ti->maxFilt=GR_TEXTUREFILTER_BILINEAR; |   ti->maxFilt=GR_TEXTUREFILTER_BILINEAR; | ||||||
| @@ -72,17 +124,12 @@ static tfxTexInfo *fxAllocTexObjData(fxMesaContext fxMesa) | |||||||
|   ti->sClamp=GR_TEXTURECLAMP_WRAP; |   ti->sClamp=GR_TEXTURECLAMP_WRAP; | ||||||
|   ti->tClamp=GR_TEXTURECLAMP_WRAP; |   ti->tClamp=GR_TEXTURECLAMP_WRAP; | ||||||
|  |  | ||||||
|   if(fxMesa->haveTwoTMUs) { |   ti->mmMode=GR_MIPMAP_NEAREST; | ||||||
|     ti->mmMode=GR_MIPMAP_NEAREST; |   ti->LODblend=FXFALSE; | ||||||
|     ti->LODblend=FXTRUE; |  | ||||||
|   } else { |  | ||||||
|     ti->mmMode=GR_MIPMAP_NEAREST_DITHER; |  | ||||||
|     ti->LODblend=FXFALSE; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   for(i=0;i<MAX_TEXTURE_LEVELS;i++) { |   for(i=0;i<MAX_TEXTURE_LEVELS;i++) { | ||||||
|     ti->tmi.mipmapLevel[i].used=GL_FALSE; |     ti->mipmapLevel[i].used=GL_FALSE; | ||||||
|     ti->tmi.mipmapLevel[i].data=NULL; |     ti->mipmapLevel[i].data=NULL; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   return ti; |   return ti; | ||||||
| @@ -100,13 +147,14 @@ void fxDDTexBind(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj) | |||||||
|   if(target!=GL_TEXTURE_2D) |   if(target!=GL_TEXTURE_2D) | ||||||
|     return; |     return; | ||||||
|  |  | ||||||
|   if(!tObj->DriverData) |   if (!tObj->DriverData) { | ||||||
|     tObj->DriverData=fxAllocTexObjData(fxMesa); |     tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   ti=(tfxTexInfo *)tObj->DriverData; |   ti=fxTMGetTexInfo(tObj); | ||||||
|  |  | ||||||
|   fxMesa->texBindNumber++; |   fxMesa->texBindNumber++; | ||||||
|   ti->tmi.lastTimeUsed=fxMesa->texBindNumber; |   ti->lastTimeUsed=fxMesa->texBindNumber; | ||||||
|  |  | ||||||
|   fxMesa->new_state|=FX_NEW_TEXTURING; |   fxMesa->new_state|=FX_NEW_TEXTURING; | ||||||
|   ctx->Driver.RenderStart = fxSetupFXUnits; |   ctx->Driver.RenderStart = fxSetupFXUnits; | ||||||
| @@ -141,10 +189,10 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, | |||||||
|   if(target!=GL_TEXTURE_2D) |   if(target!=GL_TEXTURE_2D) | ||||||
|     return; |     return; | ||||||
|  |  | ||||||
|   if(!tObj->DriverData) |   if (!tObj->DriverData) | ||||||
|     tObj->DriverData=fxAllocTexObjData(fxMesa); |     tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||||
|  |  | ||||||
|   ti=(tfxTexInfo *)tObj->DriverData; |   ti=fxTMGetTexInfo(tObj); | ||||||
|  |  | ||||||
|   switch(pname) { |   switch(pname) { | ||||||
|  |  | ||||||
| @@ -219,7 +267,6 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj, | |||||||
|       ti->sClamp=GR_TEXTURECLAMP_WRAP; |       ti->sClamp=GR_TEXTURECLAMP_WRAP; | ||||||
|       break; |       break; | ||||||
|     default: |     default: | ||||||
|        fprintf(stderr, "BAD CLAMP\n"); |  | ||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|     fxMesa->new_state|=FX_NEW_TEXTURING; |     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) | void fxDDTexDel(GLcontext *ctx, struct gl_texture_object *tObj) | ||||||
| { | { | ||||||
|   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; |   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx; | ||||||
|   tfxTexInfo *ti=(tfxTexInfo *)tObj->DriverData; |   tfxTexInfo *ti=fxTMGetTexInfo(tObj); | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: fxDDTexDel(%d,%x)\n",tObj->Name,(GLuint)ti); |      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; |       return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if(!tObj->DriverData) |     if (!tObj->DriverData) | ||||||
|       tObj->DriverData=fxAllocTexObjData(fxMesa); |       tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||||
|    |    | ||||||
|     ti=(tfxTexInfo *)tObj->DriverData; |     ti=fxTMGetTexInfo(tObj); | ||||||
|  |  | ||||||
|     for(i=0;i<tObj->PaletteSize;i++) { |     for(i=0;i<tObj->PaletteSize;i++) { | ||||||
|       r=tObj->Palette[i*4]; |       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]) && |     if((ctx->Texture.Unit[0].Current==ctx->Texture.Unit[0].CurrentD[2]) && | ||||||
|        (ctx->Texture.Unit[0].Current!=NULL)) { |        (ctx->Texture.Unit[0].Current!=NULL)) { | ||||||
|       struct gl_texture_object *tObj=ctx->Texture.Unit[0].Current; |       struct gl_texture_object *tObj=ctx->Texture.Unit[0].Current; | ||||||
|       tfxTexInfo *ti; |  | ||||||
|  |  | ||||||
|       if(!tObj->DriverData) |       if (!tObj->DriverData) | ||||||
|         tObj->DriverData=fxAllocTexObjData(fxMesa); |         tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||||
|    |    | ||||||
|       ti=(tfxTexInfo *)tObj->DriverData; |  | ||||||
|  |  | ||||||
|       fxTexInvalidate(ctx,tObj); |       fxTexInvalidate(ctx,tObj); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @@ -872,10 +916,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image, | |||||||
|  |  | ||||||
|     if(wscale==hscale==1) { |     if(wscale==hscale==1) { | ||||||
|       int i=0; |       int i=0; | ||||||
|       int lenght=h*w; |       int length=h*w; | ||||||
|       unsigned short a,l; |       unsigned short a,l; | ||||||
|  |  | ||||||
|       while(i++<lenght) { |       while(i++<length) { | ||||||
|         l=*data++; |         l=*data++; | ||||||
|         a=*data++; |         a=*data++; | ||||||
|  |  | ||||||
| @@ -916,10 +960,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image, | |||||||
|  |  | ||||||
|     if(wscale==hscale==1) { |     if(wscale==hscale==1) { | ||||||
|       int i=0; |       int i=0; | ||||||
|       int lenght=h*w; |       int length=h*w; | ||||||
|       unsigned short r,g,b; |       unsigned short r,g,b; | ||||||
|  |  | ||||||
|       while(i++<lenght) { |       while(i++<length) { | ||||||
|         r=*data++; |         r=*data++; | ||||||
|         g=*data++; |         g=*data++; | ||||||
|         b=*data++; |         b=*data++; | ||||||
| @@ -966,10 +1010,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image, | |||||||
|  |  | ||||||
|     if(wscale==hscale==1) { |     if(wscale==hscale==1) { | ||||||
|       int i=0; |       int i=0; | ||||||
|       int lenght=h*w; |       int length=h*w; | ||||||
|       unsigned short r,g,b,a; |       unsigned short r,g,b,a; | ||||||
|  |  | ||||||
|       while(i++<lenght) { |       while(i++<length) { | ||||||
|         r=*data++; |         r=*data++; | ||||||
|         g=*data++; |         g=*data++; | ||||||
|         b=*data++; |         b=*data++; | ||||||
| @@ -1014,21 +1058,23 @@ void fxDDTexImg(GLcontext *ctx, GLenum target, | |||||||
|   tfxTexInfo *ti; |   tfxTexInfo *ti; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: (%d) fxDDTexImg(...,%d,%x,%d,%d...)\n",tObj->Name, |      fprintf(stderr, | ||||||
| 	     target,internalFormat,image->Width,image->Height); | 	     "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) |   if(target!=GL_TEXTURE_2D) | ||||||
|     return; |     return; | ||||||
|  |  | ||||||
|   if(!tObj->DriverData) |   if (!tObj->DriverData) | ||||||
|     tObj->DriverData=fxAllocTexObjData(fxMesa); |     tObj->DriverData=fxAllocTexObjData(fxMesa); | ||||||
|  |  | ||||||
|   ti=(tfxTexInfo *)tObj->DriverData; |   ti=fxTMGetTexInfo(tObj); | ||||||
|  |  | ||||||
|   if(fxIsTexSupported(target,internalFormat,image)) { |   if(fxIsTexSupported(target,internalFormat,image)) { | ||||||
|     GrTextureFormat_t gldformat; |     GrTextureFormat_t gldformat; | ||||||
|     tfxMipMapLevel *mml=&ti->tmi.mipmapLevel[level]; |     tfxMipMapLevel *mml=&ti->mipmapLevel[level]; | ||||||
|  |  | ||||||
|     fxTexGetFormat(internalFormat,&gldformat,NULL); |     fxTexGetFormat(internalFormat,&gldformat,NULL); | ||||||
|      |      | ||||||
| @@ -1039,7 +1085,7 @@ void fxDDTexImg(GLcontext *ctx, GLenum target, | |||||||
|         fxTexBuildImageMap(image,internalFormat,&(mml->data), |         fxTexBuildImageMap(image,internalFormat,&(mml->data), | ||||||
|                            &(mml->translated)); |                            &(mml->translated)); | ||||||
|  |  | ||||||
|         if(ti->validated && ti->tmi.isInTM) |         if(ti->validated && ti->isInTM) | ||||||
|           fxTMReloadMipMapLevel(fxMesa,tObj,level); |           fxTMReloadMipMapLevel(fxMesa,tObj,level); | ||||||
|         else |         else | ||||||
|           fxTexInvalidate(ctx,tObj); |           fxTexInvalidate(ctx,tObj); | ||||||
| @@ -1239,18 +1285,20 @@ void fxDDTexSubImg(GLcontext *ctx, GLenum target, | |||||||
|   tfxMipMapLevel *mml; |   tfxMipMapLevel *mml; | ||||||
|  |  | ||||||
|   if (MESA_VERBOSE&VERBOSE_DRIVER) { |   if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|      fprintf(stderr,"fxmesa: (%d) fxDDTexSubImg(...,%d,%x,%d,%d...)\n",tObj->Name, |      fprintf(stderr, | ||||||
| 	     target,internalFormat,image->Width,image->Height); | 	     "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) |   if(target!=GL_TEXTURE_2D) | ||||||
|     return; |     return; | ||||||
|  |  | ||||||
|   if(!tObj->DriverData) |   if (!tObj->DriverData) | ||||||
|     return; |     return; | ||||||
|  |  | ||||||
|   ti=(tfxTexInfo *)tObj->DriverData; |   ti=fxTMGetTexInfo(tObj); | ||||||
|   mml=&ti->tmi.mipmapLevel[level]; |   mml=&ti->mipmapLevel[level]; | ||||||
|  |  | ||||||
|   fxTexGetFormat(internalFormat,&gldformat,NULL); |   fxTexGetFormat(internalFormat,&gldformat,NULL); | ||||||
|  |  | ||||||
| @@ -1278,7 +1326,7 @@ void fxDDTexSubImg(GLcontext *ctx, GLenum target, | |||||||
|     fxTexBuildSubImageMap(image,internalFormat,xoffset,yoffset, |     fxTexBuildSubImageMap(image,internalFormat,xoffset,yoffset, | ||||||
|                           width,height,mml->data); |                           width,height,mml->data); | ||||||
|  |  | ||||||
|   if(ti->validated && ti->tmi.isInTM) |   if(ti->validated && ti->isInTM) | ||||||
|     fxTMReloadSubMipMapLevel(fxMesa,tObj,level,yoffset,height); |     fxTMReloadSubMipMapLevel(fxMesa,tObj,level,yoffset,height); | ||||||
|   else |   else | ||||||
|     fxTexInvalidate(ctx,tObj); |     fxTexInvalidate(ctx,tObj); | ||||||
|   | |||||||
| @@ -1,27 +1,48 @@ | |||||||
| /* -*- mode: C; tab-width:8;  -*- | /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||||
|  |  | ||||||
|              fxdrv.h - 3Dfx VooDoo driver types |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * This library is free software; you can redistribute it and/or |  * Mesa 3-D graphics library | ||||||
|  * modify it under the terms of the GNU Library General Public |  * Version:  3.1 | ||||||
|  * 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, |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * License along with this library; if not, write to the Free |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |  * 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 | #ifndef FXDRV_H | ||||||
| #define FXDRV_H | #define FXDRV_H | ||||||
|  |  | ||||||
| @@ -54,14 +75,18 @@ | |||||||
| #include "clip.h" | #include "clip.h" | ||||||
| #include "vbrender.h" | #include "vbrender.h" | ||||||
|  |  | ||||||
|  | #ifdef XF86DRI | ||||||
|  | typedef struct tfxMesaContext *fxMesaContext; | ||||||
|  | #else | ||||||
| #include "GL/fxmesa.h" | #include "GL/fxmesa.h" | ||||||
|  | #endif | ||||||
| #include "fxglidew.h" | #include "fxglidew.h" | ||||||
| /* use gl/gl.h GLAPI/GLAPIENTRY/GLCALLBACK in place of WINGDIAPI/APIENTRY/CALLBACK, */ | /* use gl/gl.h GLAPI/GLAPIENTRY/GLCALLBACK in place of WINGDIAPI/APIENTRY/CALLBACK, */ | ||||||
| /* these are defined in mesa gl/gl.h - tjump@spgs.com */ | /* 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 * ); | extern void fx_sanity_triangle( GrVertex *, GrVertex *, GrVertex * ); | ||||||
| #define grDrawTriangle fx_sanity_triangle | #define grDrawTriangle fx_sanity_triangle | ||||||
| #endif | #endif | ||||||
| @@ -140,17 +165,17 @@ typedef struct { | |||||||
| #endif | #endif | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #define FX_VB_COLOR(fxm, color)			\ | #define FX_VB_COLOR(fxm, color)				\ | ||||||
| do {						\ |   do {							\ | ||||||
|   if (sizeof(GLint) == 4*sizeof(GLubyte)) {	\ |     if (sizeof(GLint) == 4*sizeof(GLubyte)) {		\ | ||||||
|      if (fxm->constColor != *(GLuint*)color) {	\ |       if (fxm->constColor != *(GLuint*)color) {		\ | ||||||
| 	fxm->constColor = *(GLuint*)color;	\ | 	fxm->constColor = *(GLuint*)color;		\ | ||||||
| 	grConstantColorValue(FXCOLOR4(color));	\ | 	FX_grConstantColorValue(FXCOLOR4(color));	\ | ||||||
|      }						\ |       }							\ | ||||||
|   } else {					\ |     } else {						\ | ||||||
|      grConstantColorValue(FXCOLOR4(color));	\ |       FX_grConstantColorValue(FXCOLOR4(color));		\ | ||||||
|   }						\ |     }							\ | ||||||
| } while (0) |   } while (0) | ||||||
|  |  | ||||||
| #define GOURAUD(x) {					\ | #define GOURAUD(x) {					\ | ||||||
|   GLubyte *col = VB->ColorPtr->data[(x)];		\ |   GLubyte *col = VB->ColorPtr->data[(x)];		\ | ||||||
| @@ -230,23 +255,20 @@ do {						\ | |||||||
|  |  | ||||||
| #define FX_UM_E_IFMT                0x00fff000 | #define FX_UM_E_IFMT                0x00fff000 | ||||||
|  |  | ||||||
| #define FX_UM_COLOR_ITERATED        0x00100000 | #define FX_UM_COLOR_ITERATED        0x01000000 | ||||||
| #define FX_UM_COLOR_CONSTANT        0x00200000 | #define FX_UM_COLOR_CONSTANT        0x02000000 | ||||||
| #define FX_UM_ALPHA_ITERATED        0x00400000 | #define FX_UM_ALPHA_ITERATED        0x04000000 | ||||||
| #define FX_UM_ALPHA_CONSTANT        0x00800000 | #define FX_UM_ALPHA_CONSTANT        0x08000000 | ||||||
|  |  | ||||||
| typedef void (*tfxRenderVBFunc)(GLcontext *); | typedef void (*tfxRenderVBFunc)(GLcontext *); | ||||||
|  |  | ||||||
| typedef struct tfxTMFreeListNode { | /* | ||||||
|   struct tfxTMFreeListNode *next; |   Memory range from startAddr to endAddr-1 | ||||||
|   FxU32 startAddress, endAddress; | */ | ||||||
| } tfxTMFreeNode; | typedef struct MemRange_t { | ||||||
|  |   struct MemRange_t *next; | ||||||
| typedef struct tfxTMAllocListNode { |   FxU32 startAddr, endAddr; | ||||||
|   struct tfxTMAllocListNode *next; | } MemRange; | ||||||
|   FxU32 startAddress, endAddress; |  | ||||||
|   struct gl_texture_object *tObj; |  | ||||||
| } tfxTMAllocNode; |  | ||||||
|  |  | ||||||
| typedef struct { | typedef struct { | ||||||
|   GLsizei width, height; |   GLsizei width, height; | ||||||
| @@ -256,19 +278,17 @@ typedef struct { | |||||||
|   GLboolean translated, used; |   GLboolean translated, used; | ||||||
| } tfxMipMapLevel; | } tfxMipMapLevel; | ||||||
|  |  | ||||||
| typedef struct { | typedef struct tfxTexInfo_t { | ||||||
|  |   struct tfxTexInfo *next; | ||||||
|  |   struct gl_texture_object *tObj; | ||||||
|  |  | ||||||
|   GLuint lastTimeUsed; |   GLuint lastTimeUsed; | ||||||
|  |  | ||||||
|   FxU32 whichTMU; |   FxU32 whichTMU; | ||||||
|  |   GLboolean isInTM; | ||||||
|   tfxTMAllocNode *tm[FX_NUM_TMU]; |  | ||||||
|  |  | ||||||
|   tfxMipMapLevel mipmapLevel[MAX_TEXTURE_LEVELS]; |   tfxMipMapLevel mipmapLevel[MAX_TEXTURE_LEVELS]; | ||||||
|   GLboolean isInTM; |  | ||||||
| } tfxTMInfo; |  | ||||||
|  |  | ||||||
| typedef struct { |   MemRange *tm[FX_NUM_TMU]; | ||||||
|   tfxTMInfo tmi; |  | ||||||
|  |  | ||||||
|   GLint minLevel, maxLevel; |   GLint minLevel, maxLevel; | ||||||
|   GLint baseLevelInternalFormat; |   GLint baseLevelInternalFormat; | ||||||
| @@ -384,14 +404,27 @@ struct tfxMesaVertexBuffer { | |||||||
|  |  | ||||||
| #define FX_DRIVER_DATA(vb) ((struct tfxMesaVertexBuffer *)((vb)->driver_data)) | #define FX_DRIVER_DATA(vb) ((struct tfxMesaVertexBuffer *)((vb)->driver_data)) | ||||||
| #define FX_CONTEXT(ctx) ((fxMesaContext)((ctx)->DriverCtx)) | #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) | #if defined(XFree86Server) || defined(GLX_DIRECT_RENDERING) | ||||||
| #include "tdfx_init.h" | #include "tdfx_init.h" | ||||||
| #else | #else | ||||||
| #define DRI_FX_CONTEXT | #define DRI_FX_CONTEXT | ||||||
|  | #define BEGIN_BOARD_LOCK() | ||||||
|  | #define END_BOARD_LOCK() | ||||||
|  | #define BEGIN_CLIP_LOOP() | ||||||
|  | #define END_CLIP_LOOP() | ||||||
| #endif | #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 { | struct tfxMesaContext { | ||||||
|   GuTexPalette glbPalette; |   GuTexPalette glbPalette; | ||||||
|  |  | ||||||
| @@ -404,6 +437,7 @@ struct tfxMesaContext { | |||||||
|  |  | ||||||
|   GrBuffer_t currentFB; |   GrBuffer_t currentFB; | ||||||
|  |  | ||||||
|  |   GLboolean bgrOrder; | ||||||
|   GrColor_t color; |   GrColor_t color; | ||||||
|   GrColor_t clearC; |   GrColor_t clearC; | ||||||
|   GrAlpha_t clearA; |   GrAlpha_t clearA; | ||||||
| @@ -412,7 +446,6 @@ struct tfxMesaContext { | |||||||
|   tfxUnitsState unitsState; |   tfxUnitsState unitsState; | ||||||
|   tfxUnitsState restoreUnitsState; /* saved during multipass */ |   tfxUnitsState restoreUnitsState; /* saved during multipass */ | ||||||
|  |  | ||||||
|  |  | ||||||
|   GLuint tmu_source[FX_NUM_TMU]; |   GLuint tmu_source[FX_NUM_TMU]; | ||||||
|   GLuint tex_dest[MAX_TEXTURE_UNITS]; |   GLuint tex_dest[MAX_TEXTURE_UNITS]; | ||||||
|   GLuint setupindex; |   GLuint setupindex; | ||||||
| @@ -438,11 +471,12 @@ struct tfxMesaContext { | |||||||
|   GLint tmuSrc; |   GLint tmuSrc; | ||||||
|   GLuint lastUnitsMode; |   GLuint lastUnitsMode; | ||||||
|   GLuint freeTexMem[FX_NUM_TMU]; |   GLuint freeTexMem[FX_NUM_TMU]; | ||||||
|   tfxTMFreeNode *tmFree[FX_NUM_TMU]; |   MemRange *tmPool; | ||||||
|   tfxTMAllocNode *tmAlloc[FX_NUM_TMU]; |   MemRange *tmFree[FX_NUM_TMU]; | ||||||
|  |  | ||||||
|   GLenum fogTableMode; |   GLenum fogTableMode; | ||||||
|   GLfloat fogDensity; |   GLfloat fogDensity; | ||||||
|  |   GLfloat fogStart, fogEnd; | ||||||
|   GrFog_t *fogTable; |   GrFog_t *fogTable; | ||||||
|  |  | ||||||
|   /* Acc. functions */ |   /* Acc. functions */ | ||||||
| @@ -477,10 +511,19 @@ struct tfxMesaContext { | |||||||
|    |    | ||||||
|   FX_GrContext_t glideContext; |   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 |   DRI_FX_CONTEXT | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| typedef void (*tfxSetupFunc)(struct vertex_buffer *, GLuint, GLuint); | typedef void (*tfxSetupFunc)(struct vertex_buffer *, GLuint, GLuint); | ||||||
| @@ -522,6 +565,7 @@ extern void fxSetupDDSpanPointers(GLcontext *); | |||||||
|  |  | ||||||
| extern void fxDDBufferSize(GLcontext *, GLuint *, GLuint *); | extern void fxDDBufferSize(GLcontext *, GLuint *, GLuint *); | ||||||
|  |  | ||||||
|  | extern void fxPrintTextureData(tfxTexInfo *ti); | ||||||
| extern void fxDDTexEnv(GLcontext *, GLenum, const GLfloat *); | extern void fxDDTexEnv(GLcontext *, GLenum, const GLfloat *); | ||||||
| extern void fxDDTexImg(GLcontext *, GLenum, struct gl_texture_object *, | extern void fxDDTexImg(GLcontext *, GLenum, struct gl_texture_object *, | ||||||
| 		       GLint, GLint, const struct gl_texture_image *); | 		       GLint, GLint, const struct gl_texture_image *); | ||||||
| @@ -571,10 +615,12 @@ extern void fxDDRenderVBIndirectDirect( struct vertex_buffer *VB ); | |||||||
|  |  | ||||||
| extern void fxDDInitExtensions( GLcontext *ctx ); | extern void fxDDInitExtensions( GLcontext *ctx ); | ||||||
|  |  | ||||||
|  | #define fxTMGetTexInfo(o) ((tfxTexInfo*)((o)->DriverData)) | ||||||
| extern void fxTMInit(fxMesaContext ctx); | extern void fxTMInit(fxMesaContext ctx); | ||||||
| extern void fxTMClose(fxMesaContext ctx); | extern void fxTMClose(fxMesaContext ctx); | ||||||
| extern void fxTMMoveInTM(fxMesaContext, struct gl_texture_object *, GLint); | extern void fxTMMoveInTM(fxMesaContext, struct gl_texture_object *, GLint); | ||||||
| extern void fxTMMoveOutTM(fxMesaContext, struct gl_texture_object *); | extern void fxTMMoveOutTM(fxMesaContext, struct gl_texture_object *); | ||||||
|  | #define fxTMMoveOutTM_NoLock fxTMMoveOutTM | ||||||
| extern void fxTMFreeTexture(fxMesaContext, struct gl_texture_object *); | extern void fxTMFreeTexture(fxMesaContext, struct gl_texture_object *); | ||||||
| extern void fxTMReloadMipMapLevel(fxMesaContext, struct gl_texture_object *, GLint); | extern void fxTMReloadMipMapLevel(fxMesaContext, struct gl_texture_object *, GLint); | ||||||
| extern void fxTMReloadSubMipMapLevel(fxMesaContext, struct gl_texture_object *, | 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 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 | #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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.1 | ||||||
|  *  |  * | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  *  |  * | ||||||
|  * Permission is hereby granted, free of charge, to any person obtaining a |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * to deal in the Software without restriction, including without limitation |  * to deal in the Software without restriction, including without limitation | ||||||
|  * the rights to use, copy, modify, merge, publish, distribute, sublicense, |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  * and/or sell copies of the Software, and to permit persons to whom the |  * 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: |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  *  |  * | ||||||
|  * The above copyright notice and this permission notice shall be included |  * The above copyright notice and this permission notice shall be included | ||||||
|  * in all copies or substantial portions of the Software. |  * in all copies or substantial portions of the Software. | ||||||
|  *  |  * | ||||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||||||
|  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |  * 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 |  * 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. |  * 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 | #ifdef HAVE_CONFIG_H | ||||||
| #include "conf.h" | #include "conf.h" | ||||||
| @@ -36,8 +55,7 @@ | |||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  |  | ||||||
|  | static FxI32 FX_grGetInteger_NoLock(FxU32 pname) | ||||||
| FxI32 FX_grGetInteger(FxU32 pname) |  | ||||||
| { | { | ||||||
| #if !defined(FX_GLIDE3) | #if !defined(FX_GLIDE3) | ||||||
|   switch (pname)  |   switch (pname)  | ||||||
| @@ -49,7 +67,7 @@ FxI32 FX_grGetInteger(FxU32 pname) | |||||||
|     case FX_LFB_PIXEL_PIPE: |     case FX_LFB_PIXEL_PIPE: | ||||||
|        return FXFALSE; |        return FXFALSE; | ||||||
|     case FX_PENDING_BUFFERSWAPS: |     case FX_PENDING_BUFFERSWAPS: | ||||||
|        return grBufferNumPending(); | 	return grBufferNumPending(); | ||||||
|     default: |     default: | ||||||
|        if (MESA_VERBOSE&VERBOSE_DRIVER) { |        if (MESA_VERBOSE&VERBOSE_DRIVER) { | ||||||
|           fprintf(stderr,"Wrong parameter in FX_grGetInteger!\n"); |           fprintf(stderr,"Wrong parameter in FX_grGetInteger!\n"); | ||||||
| @@ -74,12 +92,74 @@ FxI32 FX_grGetInteger(FxU32 pname) | |||||||
|        } |        } | ||||||
|        return -1; |        return -1; | ||||||
|   } |   } | ||||||
|    |  | ||||||
|   grGet(grname,4,&result); |   grGet(grname,4,&result); | ||||||
|   return result; |   return result; | ||||||
| #endif | #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) | #if defined(FX_GLIDE3) | ||||||
| @@ -90,39 +170,33 @@ void FX_grGammaCorrectionValue(float val) | |||||||
| /* ToDo */ | /* ToDo */ | ||||||
| } | } | ||||||
|  |  | ||||||
| void FX_grSstControl(int par) |  | ||||||
| { |  | ||||||
|   (void)par; |  | ||||||
|   /* ToDo */ |  | ||||||
| } |  | ||||||
| int FX_getFogTableSize(void) | int FX_getFogTableSize(void) | ||||||
| { | { | ||||||
|    int result; |    int result; | ||||||
|  |    BEGIN_BOARD_LOCK(); | ||||||
|    grGet(GR_FOG_TABLE_ENTRIES,sizeof(int),(void*)&result); |    grGet(GR_FOG_TABLE_ENTRIES,sizeof(int),(void*)&result); | ||||||
|  |    END_BOARD_LOCK(); | ||||||
|    return result;  |    return result;  | ||||||
| } | } | ||||||
|  |  | ||||||
| int FX_getGrStateSize(void) | int FX_getGrStateSize(void) | ||||||
| { | { | ||||||
|    int result; |    int result; | ||||||
|  |    BEGIN_BOARD_LOCK(); | ||||||
|    grGet(GR_GLIDE_STATE_SIZE,sizeof(int),(void*)&result); |    grGet(GR_GLIDE_STATE_SIZE,sizeof(int),(void*)&result); | ||||||
|     |    END_BOARD_LOCK(); | ||||||
|  |  | ||||||
|    return result; |    return result; | ||||||
|     |     | ||||||
| } | } | ||||||
| int FX_grBufferNumPending() |  | ||||||
| { |  | ||||||
|    int result; |  | ||||||
|    grGet(GR_PENDING_BUFFERSWAPS,sizeof(int),(void*)&result); |  | ||||||
|     |  | ||||||
|    return result; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| int FX_grSstScreenWidth() | int FX_grSstScreenWidth() | ||||||
| { | { | ||||||
|    FxI32 result[4]; |    FxI32 result[4]; | ||||||
|     |  | ||||||
|  |    BEGIN_BOARD_LOCK(); | ||||||
|    grGet(GR_VIEWPORT,sizeof(FxI32)*4,result); |    grGet(GR_VIEWPORT,sizeof(FxI32)*4,result); | ||||||
|  |    END_BOARD_LOCK(); | ||||||
|     |     | ||||||
|    return result[2]; |    return result[2]; | ||||||
| } | } | ||||||
| @@ -130,15 +204,19 @@ int FX_grSstScreenWidth() | |||||||
| int FX_grSstScreenHeight() | int FX_grSstScreenHeight() | ||||||
| { | { | ||||||
|    FxI32 result[4]; |    FxI32 result[4]; | ||||||
|     |  | ||||||
|  |    BEGIN_BOARD_LOCK(); | ||||||
|    grGet(GR_VIEWPORT,sizeof(FxI32)*4,result); |    grGet(GR_VIEWPORT,sizeof(FxI32)*4,result); | ||||||
|  |    END_BOARD_LOCK(); | ||||||
|     |     | ||||||
|    return result[3]; |    return result[3]; | ||||||
| } | } | ||||||
|  |  | ||||||
| void FX_grGlideGetVersion(char *buf) | 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) | void FX_grSstPerfStats(GrSstPerfStats_t *st) | ||||||
| @@ -154,74 +232,91 @@ void FX_grSstPerfStats(GrSstPerfStats_t *st) | |||||||
| void FX_grAADrawLine(GrVertex *a,GrVertex *b) | void FX_grAADrawLine(GrVertex *a,GrVertex *b) | ||||||
| { | { | ||||||
|    /* ToDo */ |    /* ToDo */ | ||||||
|  |    BEGIN_CLIP_LOOP(); | ||||||
|    grDrawLine(a,b); |    grDrawLine(a,b); | ||||||
|  |    END_CLIP_LOOP(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void FX_grAADrawPoint(GrVertex *a) | void FX_grAADrawPoint(GrVertex *a) | ||||||
| { | { | ||||||
|  |   BEGIN_CLIP_LOOP(); | ||||||
|   grDrawPoint(a); |   grDrawPoint(a); | ||||||
|  |   END_CLIP_LOOP(); | ||||||
| } | } | ||||||
|  |  | ||||||
| #if FX_USE_PARGB | #if FX_USE_PARGB | ||||||
| void FX_setupGrVertexLayout(void) | void FX_setupGrVertexLayout(void) | ||||||
| { | { | ||||||
|    grReset(GR_VERTEX_PARAMETER); |   BEGIN_BOARD_LOCK(); | ||||||
|  |   grReset(GR_VERTEX_PARAMETER); | ||||||
|     |     | ||||||
|    grCoordinateSpace(GR_WINDOW_COORDS); |   grCoordinateSpace(GR_WINDOW_COORDS); | ||||||
|    grVertexLayout(GR_PARAM_XY,  	GR_VERTEX_X_OFFSET << 2, 	GR_PARAM_ENABLE); |   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_PARGB, GR_VERTEX_PARGB_OFFSET << 2, GR_PARAM_ENABLE); | ||||||
|    grVertexLayout(GR_PARAM_Q,		GR_VERTEX_OOW_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_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_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_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_ST1, GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 | ||||||
|    grVertexLayout(GR_PARAM_Q1,  	GR_VERTEX_OOW_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 */ | #else /* FX_USE_PARGB */ | ||||||
| void FX_setupGrVertexLayout(void) | void FX_setupGrVertexLayout(void) | ||||||
| { | { | ||||||
|    grReset(GR_VERTEX_PARAMETER); |   BEGIN_BOARD_LOCK(); | ||||||
|  |   grReset(GR_VERTEX_PARAMETER); | ||||||
|     |     | ||||||
|    grCoordinateSpace(GR_WINDOW_COORDS); |   grCoordinateSpace(GR_WINDOW_COORDS); | ||||||
|    grVertexLayout(GR_PARAM_XY,  	GR_VERTEX_X_OFFSET << 2, 	GR_PARAM_ENABLE); |   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_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_A,   	GR_VERTEX_A_OFFSET << 2, 	GR_PARAM_ENABLE); |   grVertexLayout(GR_PARAM_Q, GR_VERTEX_OOW_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_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_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_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_ST1, 	GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 |   grVertexLayout(GR_PARAM_Q1, GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE); | ||||||
|    grVertexLayout(GR_PARAM_Q1,  	GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	 |   END_BOARD_LOCK(); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| void FX_grHints(GrHint_t hintType, FxU32 hintMask) | void FX_grHints_NoLock(GrHint_t hintType, FxU32 hintMask) | ||||||
| { | { | ||||||
|    switch(hintType) { |   switch(hintType) { | ||||||
|       case GR_HINT_STWHINT: |   case GR_HINT_STWHINT: | ||||||
|       { |     { | ||||||
|         if (hintMask & GR_STWHINT_W_DIFF_TMU0) |       if (hintMask & GR_STWHINT_W_DIFF_TMU0) | ||||||
|            grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_ENABLE); | 	grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_ENABLE); | ||||||
|         else |       else | ||||||
|            grVertexLayout(GR_PARAM_Q0,GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_DISABLE); | 	grVertexLayout(GR_PARAM_Q0,GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_DISABLE); | ||||||
|             |        | ||||||
|         if (hintMask & GR_STWHINT_ST_DIFF_TMU1) |       if (hintMask & GR_STWHINT_ST_DIFF_TMU1) | ||||||
|             grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_ENABLE); | 	grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_ENABLE); | ||||||
|         else |       else | ||||||
|             grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE); | 	grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE); | ||||||
|          |          | ||||||
|         if (hintMask & GR_STWHINT_W_DIFF_TMU1) |       if (hintMask & GR_STWHINT_W_DIFF_TMU1) | ||||||
|             grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_ENABLE); | 	grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_ENABLE); | ||||||
|         else |       else | ||||||
|             grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_DISABLE); | 	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 FX_grSstQueryHardware(GrHwConfiguration *config) | ||||||
| { | { | ||||||
|    int i,j; |    int i,j; | ||||||
|    int numFB; |    int numFB; | ||||||
|  |  | ||||||
|  |    BEGIN_BOARD_LOCK(); | ||||||
|    grGet(GR_NUM_BOARDS,4,(void*)&(config->num_sst)); |    grGet(GR_NUM_BOARDS,4,(void*)&(config->num_sst)); | ||||||
|    if (config->num_sst == 0) |    if (config->num_sst == 0) | ||||||
|    	return 0; |    	return 0; | ||||||
| @@ -246,9 +341,76 @@ int FX_grSstQueryHardware(GrHwConfiguration *config) | |||||||
|       	 config->SSTs[i].sstBoard.VoodooConfig.tmuConfig[j].tmuRam /= 1024*1024; |       	 config->SSTs[i].sstBoard.VoodooConfig.tmuConfig[j].tmuRam /= 1024*1024; | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|  |    END_BOARD_LOCK(); | ||||||
|    return 1; |    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  | #endif  | ||||||
| #else | #else | ||||||
|   | |||||||
| @@ -1,26 +1,48 @@ | |||||||
|  | /* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */ | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Mesa 3-D graphics library |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.1 |  * Version:  3.1 | ||||||
|  *  |  * | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  *  |  * | ||||||
|  * Permission is hereby granted, free of charge, to any person obtaining a |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * copy of this software and associated documentation files (the "Software"), | ||||||
|  * to deal in the Software without restriction, including without limitation |  * to deal in the Software without restriction, including without limitation | ||||||
|  * the rights to use, copy, modify, merge, publish, distribute, sublicense, |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||||
|  * and/or sell copies of the Software, and to permit persons to whom the |  * 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: |  * Software is furnished to do so, subject to the following conditions: | ||||||
|  *  |  * | ||||||
|  * The above copyright notice and this permission notice shall be included |  * The above copyright notice and this permission notice shall be included | ||||||
|  * in all copies or substantial portions of the Software. |  * in all copies or substantial portions of the Software. | ||||||
|  *  |  * | ||||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||||||
|  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||||
|  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |  * 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 |  * 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. |  * 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__ | #ifndef __FX_GLIDE_WARPER__ | ||||||
| #define __FX_GLIDE_WARPER__ | #define __FX_GLIDE_WARPER__ | ||||||
|  |  | ||||||
| @@ -201,23 +223,23 @@ typedef struct | |||||||
|  |  | ||||||
| typedef struct | typedef struct | ||||||
| { | { | ||||||
|   float x, y;         /* X and Y in screen space */ |   float x, y, z;                /* X, Y, and Z of scrn space -- Z is ignored */ | ||||||
|   float ooz;          /* 65535/Z (used for Z-buffering) */ |   float r, g, b;                /* R, G, B, ([0..255.0]) */ | ||||||
|   float oow;          /* 1/W (used for W-buffering, texturing) */ |   float ooz;                    /* 65535/Z (used for Z-buffering) */ | ||||||
|   float r, g, b, a;   /* R, G, B, A [0..255.0] */ |   float a;                      /* Alpha [0..255.0] */ | ||||||
|   float z;            /* Z is ignored */ |   float oow;                    /* 1/W (used for W-buffering, texturing) */ | ||||||
|   GrTmuVertex  tmuvtx[GLIDE_NUM_TMU]; |   GrTmuVertex  tmuvtx[GLIDE_NUM_TMU]; | ||||||
| } GrVertex; | } GrVertex; | ||||||
|  |  | ||||||
| #define GR_VERTEX_X_OFFSET              0 | #define GR_VERTEX_X_OFFSET              0 | ||||||
| #define GR_VERTEX_Y_OFFSET              1 | #define GR_VERTEX_Y_OFFSET              1 | ||||||
| #define GR_VERTEX_OOZ_OFFSET            2 | #define GR_VERTEX_Z_OFFSET              2 | ||||||
| #define GR_VERTEX_OOW_OFFSET            3 | #define GR_VERTEX_R_OFFSET              3 | ||||||
| #define GR_VERTEX_R_OFFSET              4 | #define GR_VERTEX_G_OFFSET              4 | ||||||
| #define GR_VERTEX_G_OFFSET              5 | #define GR_VERTEX_B_OFFSET              5 | ||||||
| #define GR_VERTEX_B_OFFSET              6 | #define GR_VERTEX_OOZ_OFFSET            6 | ||||||
| #define GR_VERTEX_A_OFFSET              7 | #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_SOW_TMU0_OFFSET       9 | ||||||
| #define GR_VERTEX_TOW_TMU0_OFFSET       10 | #define GR_VERTEX_TOW_TMU0_OFFSET       10 | ||||||
| #define GR_VERTEX_OOW_TMU0_OFFSET       11 | #define GR_VERTEX_OOW_TMU0_OFFSET       11 | ||||||
| @@ -233,29 +255,89 @@ typedef struct | |||||||
|  * Glide2 functions for Glide3 |  * Glide2 functions for Glide3 | ||||||
|  */ |  */ | ||||||
| #if defined(FX_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 | #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 | #endif | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Flush |  * Flush | ||||||
|  */ |  */ | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
| #define FX_grFlush		grFlush | #define FX_grFlush()	\ | ||||||
|  |   do {			\ | ||||||
|  |     BEGIN_BOARD_LOCK(); \ | ||||||
|  |     grFlush();		\ | ||||||
|  |     END_BOARD_LOCK();	\ | ||||||
|  |   } while (0) | ||||||
| #else | #else | ||||||
| #define FX_grFlush		grSstIdle | #define FX_grFlush()	\ | ||||||
|  |   do {			\ | ||||||
|  |     BEGIN_BOARD_LOCK(); \ | ||||||
|  |     grSstIdle();	\ | ||||||
|  |     END_BOARD_LOCK();	\ | ||||||
|  |   } while (0) | ||||||
| #endif	 | #endif	 | ||||||
|  |  | ||||||
|  | #define FX_grFinish()	\ | ||||||
|  |   do {			\ | ||||||
|  |     BEGIN_BOARD_LOCK(); \ | ||||||
|  |     grFinish();		\ | ||||||
|  |     END_BOARD_LOCK();	\ | ||||||
|  |   } while (0) | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Write region: ToDo possible exploit the PixelPipe parameter. |  * Write region: ToDo possible exploit the PixelPipe parameter. | ||||||
|  */ |  */ | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
| #define FX_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)		\ | ||||||
| 	grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,FXFALSE,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 | #else | ||||||
| #define FX_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)		\ | ||||||
| 	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 | #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. |  * For Lod/LodLog2 conversion. | ||||||
|  */ |  */ | ||||||
| @@ -288,12 +370,14 @@ typedef struct | |||||||
| #else | #else | ||||||
| 	#define FX_largeLodValue(info)		((int)(info).largeLod) | 	#define FX_largeLodValue(info)		((int)(info).largeLod) | ||||||
| #endif | #endif | ||||||
|  | #define FX_largeLodValue_NoLock FX_largeLodValue | ||||||
|  |  | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
| 	#define FX_smallLodValue(info)		((int)(GR_LOD_256-(info).smallLodLog2)) | 	#define FX_smallLodValue(info)		((int)(GR_LOD_256-(info).smallLodLog2)) | ||||||
| #else | #else | ||||||
| 	#define FX_smallLodValue(info)		((int)(info).smallLod) | 	#define FX_smallLodValue(info)		((int)(info).smallLod) | ||||||
| #endif | #endif | ||||||
|  | #define FX_smallLodValue_NoLock FX_smallLodValue | ||||||
|  |  | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
| 	#define FX_valueToLod(val)		((GrLOD_t)(GR_LOD_256-val)) | 	#define FX_valueToLod(val)		((GrLOD_t)(GR_LOD_256-val)) | ||||||
| @@ -304,13 +388,9 @@ typedef struct | |||||||
| /* | /* | ||||||
|  * ScreenWidth/Height stuff. |  * ScreenWidth/Height stuff. | ||||||
|  */ |  */ | ||||||
| #if defined(FX_GLIDE3) | 	extern int FX_grSstScreenWidth(void); | ||||||
| 	extern int FX_grSstScreenWidth(); | 	extern int FX_grSstScreenHeight(void); | ||||||
| 	extern int FX_grSstScreenHeight(); |  | ||||||
| #else |  | ||||||
| 	#define FX_grSstScreenWidth()		grSstScreenWidth() |  | ||||||
| 	#define FX_grSstScreenHeight()		grSstScreenHeight() |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -319,7 +399,12 @@ typedef struct | |||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
| 	extern void FX_grGlideGetVersion(char *buf); | 	extern void FX_grGlideGetVersion(char *buf); | ||||||
| #else | #else | ||||||
| 	#define FX_grGlideGetVersion		grGlideGetVersion	 | 	#define FX_grGlideGetVersion(b)	\ | ||||||
|  | 	do {				\ | ||||||
|  | 	  BEGIN_BOARD_LOCK();		\ | ||||||
|  | 	  grGlideGetVersion(b);		\ | ||||||
|  | 	  END_BOARD_LOCK();		\ | ||||||
|  | 	} while (0) | ||||||
| #endif | #endif | ||||||
| /* | /* | ||||||
|  * Performance statistics |  * Performance statistics | ||||||
| @@ -327,25 +412,33 @@ typedef struct | |||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
|         extern void FX_grSstPerfStats(GrSstPerfStats_t *st); |         extern void FX_grSstPerfStats(GrSstPerfStats_t *st); | ||||||
| #else | #else | ||||||
| 	#define FX_grSstPerfStats		grSstPerfStats | 	#define FX_grSstPerfStats(s)	\ | ||||||
|  | 	do {				\ | ||||||
|  | 	  BEGIN_BOARD_LOCK();		\ | ||||||
|  | 	  grSstPerfStats(s);		\ | ||||||
|  | 	  END_BOARD_LOCK();		\ | ||||||
|  | 	} while (0) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Hardware Query |  * Hardware Query | ||||||
|  */ |  */ | ||||||
| #if defined(FX_GLIDE3) |  | ||||||
|        extern int FX_grSstQueryHardware(GrHwConfiguration *config); |        extern int FX_grSstQueryHardware(GrHwConfiguration *config); | ||||||
| #else |  | ||||||
|        #define FX_grSstQueryHardware		grSstQueryHardware		 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * GrHints |  * GrHints | ||||||
|  */ |  */ | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
|  |         extern void FX_grHints_NoLock(GrHint_t hintType, FxU32 hintMask); | ||||||
| 	extern void FX_grHints(GrHint_t hintType, FxU32 hintMask); | 	extern void FX_grHints(GrHint_t hintType, FxU32 hintMask); | ||||||
| #else | #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 | #endif | ||||||
| /* | /* | ||||||
|  * Antialiashed line+point drawing. |  * Antialiashed line+point drawing. | ||||||
| @@ -353,13 +446,23 @@ typedef struct | |||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
| 	extern void FX_grAADrawLine(GrVertex *a,GrVertex *b); | 	extern void FX_grAADrawLine(GrVertex *a,GrVertex *b); | ||||||
| #else | #else | ||||||
| 	#define FX_grAADrawLine			grAADrawLine | 	#define FX_grAADrawLine(a,b)	\ | ||||||
|  | 	do {				\ | ||||||
|  | 	  BEGIN_CLIP_LOOP();		\ | ||||||
|  | 	  grAADrawLine(a,b);		\ | ||||||
|  | 	  END_CLIP_LOOP();		\ | ||||||
|  | 	} while (0) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
| 	extern void FX_grAADrawPoint(GrVertex *a); | 	extern void FX_grAADrawPoint(GrVertex *a); | ||||||
| #else | #else | ||||||
| 	#define FX_grAADrawPoint		grAADrawPoint | 	#define FX_grAADrawPoint(a)	\ | ||||||
|  | 	do {				\ | ||||||
|  | 	  BEGIN_CLIP_LOOP();		\ | ||||||
|  | 	  grAADrawPoint(a);		\ | ||||||
|  | 	  END_CLIP_LOOP();		\ | ||||||
|  | 	} while (0) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -373,31 +476,345 @@ typedef struct | |||||||
| /* | /* | ||||||
|  * grSstControl stuff |  * grSstControl stuff | ||||||
|  */ |  */ | ||||||
| #if defined(FX_GLIDE3) | extern FxBool FX_grSstControl(FxU32 code); | ||||||
| 	extern void FX_grSstControl(int par); |  | ||||||
| #else |  | ||||||
| 	#define FX_grSstControl				grSstControl |  | ||||||
| #endif |  | ||||||
| /* | /* | ||||||
|  * grGammaCorrectionValue |  * grGammaCorrectionValue | ||||||
|  */ |  */ | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
|       extern void FX_grGammaCorrectionValue(float val); |       extern void FX_grGammaCorrectionValue(float val); | ||||||
| #else | #else | ||||||
|       #define FX_grGammaCorrectionValue			grGammaCorrectionValue |       #define FX_grGammaCorrectionValue(v)	\ | ||||||
|  |       do {					\ | ||||||
|  |         BEGIN_BOARD_LOCK();			\ | ||||||
|  | 	grGammaCorrectionValue(v)		\ | ||||||
|  |         END_BOARD_LOCK();			\ | ||||||
|  |       } while (0) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * WinOpen/Close. |  | ||||||
|  */ |  | ||||||
| #if defined(FX_GLIDE3) | #if defined(FX_GLIDE3) | ||||||
|        #define FX_grSstWinOpen(hWnd,screen_resolution,refresh_rate,color_format,origin_location,nColBuffers,nAuxBuffers) \ | #define FX_grSstWinClose(w)	\ | ||||||
|       		  grSstWinOpen(-1,screen_resolution,refresh_rate,color_format,origin_location,nColBuffers,nAuxBuffers) |   do { 				\ | ||||||
|        #define FX_grSstWinClose		grSstWinClose |     BEGIN_BOARD_LOCK();		\ | ||||||
|  |     grSstWinClose(w);		\ | ||||||
|  |     END_BOARD_LOCK();		\ | ||||||
|  |   } while (0) | ||||||
| #else | #else | ||||||
|        #define FX_grSstWinOpen		grSstWinOpen | #define FX_grSstWinClose(w)	\ | ||||||
|        #define FX_grSstWinClose(win)	grSstWinClose() |   do { 				\ | ||||||
|  |     BEGIN_BOARD_LOCK();		\ | ||||||
|  |     grSstWinClose();		\ | ||||||
|  |     END_BOARD_LOCK();		\ | ||||||
|  |   } while (0) | ||||||
| #endif | #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__ */ | #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 | /* fxwgl.c - Microsoft wgl functions emulation for | ||||||
|  *           3Dfx VooDoo/Mesa interface |  *           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__ | #ifdef __WIN32__ | ||||||
|  |  | ||||||
| @@ -243,11 +271,11 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam) | |||||||
|         static int moving = 0; |         static int moving = 0; | ||||||
|         if (!moving) { |         if (!moving) { | ||||||
|           if(fxQueryHardware()!=GR_SSTTYPE_VOODOO) { |           if(fxQueryHardware()!=GR_SSTTYPE_VOODOO) { | ||||||
|             if(!grSstControl(GR_CONTROL_RESIZE)) { |             if(!FX_grSstControl(GR_CONTROL_RESIZE)) { | ||||||
|               moving = 1; |               moving = 1; | ||||||
|               SetWindowPos(hwnd, 0, 0, 0, 300, 300, SWP_NOMOVE|SWP_NOZORDER); |               SetWindowPos(hwnd, 0, 0, 0, 300, 300, SWP_NOMOVE|SWP_NOZORDER); | ||||||
|               moving = 0; |               moving = 0; | ||||||
|               if(!grSstControl(GR_CONTROL_RESIZE)) { |               if(!FX_grSstControl(GR_CONTROL_RESIZE)) { | ||||||
|                 /*MessageBox(0,_T("Error changing windowsize"),_T("fxMESA"),MB_OK);*/ |                 /*MessageBox(0,_T("Error changing windowsize"),_T("fxMESA"),MB_OK);*/ | ||||||
|                 PostMessage(hWND,WM_CLOSE,0,0); |                 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 */ |           /* 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 */ |           /* And let the new size set in the context */ | ||||||
|           fxMesaUpdateScreenSize(ctx); |           fxMesaUpdateScreenSize(ctx); | ||||||
|         } |         } | ||||||
| @@ -269,21 +297,22 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam) | |||||||
|         BOOL fMinimized = (BOOL) HIWORD(wParam); |         BOOL fMinimized = (BOOL) HIWORD(wParam); | ||||||
|  |  | ||||||
|         if((fActive == WA_INACTIVE) || fMinimized) |         if((fActive == WA_INACTIVE) || fMinimized) | ||||||
|           grSstControl(GR_CONTROL_DEACTIVATE); |           FX_grSstControl(GR_CONTROL_DEACTIVATE); | ||||||
|         else |         else | ||||||
|           grSstControl(GR_CONTROL_ACTIVATE); |           FX_grSstControl(GR_CONTROL_ACTIVATE); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
|     case WM_SHOWWINDOW: |     case WM_SHOWWINDOW: | ||||||
|       break; |       break; | ||||||
|  |     case WM_SYSKEYDOWN: | ||||||
|     case WM_SYSCHAR: |     case WM_SYSCHAR: | ||||||
|       if(gdiWindowHackEna && (VK_RETURN == wParam)) { |       if(gdiWindowHackEna && (VK_RETURN == wParam)) { | ||||||
|         if(gdiWindowHack) { |         if(gdiWindowHack) { | ||||||
|           gdiWindowHack = GL_FALSE; |           gdiWindowHack = GL_FALSE; | ||||||
|           grSstControl(GR_CONTROL_ACTIVATE); |           FX_grSstControl(GR_CONTROL_ACTIVATE); | ||||||
|         } else { |         } else { | ||||||
|           gdiWindowHack = GL_TRUE; |           gdiWindowHack = GL_TRUE; | ||||||
|           grSstControl(GR_CONTROL_DEACTIVATE); |           FX_grSstControl(GR_CONTROL_DEACTIVATE); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
| @@ -382,7 +411,7 @@ HGLRC GLAPIENTRY wglCreateContext(HDC hdc) | |||||||
|         gdiWindowHack = GL_FALSE; |         gdiWindowHack = GL_FALSE; | ||||||
|       else { |       else { | ||||||
|         gdiWindowHack = GL_TRUE; |         gdiWindowHack = GL_TRUE; | ||||||
|         grSstControl(GR_CONTROL_DEACTIVATE); |         FX_grSstControl(GR_CONTROL_DEACTIVATE); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } else { |   } else { | ||||||
| @@ -779,7 +808,7 @@ BOOL GLAPIENTRY wglSwapBuffers(HDC hdc) | |||||||
|     HDC hdcDIBSection  = CreateCompatibleDC(hdcScreen); |     HDC hdcDIBSection  = CreateCompatibleDC(hdcScreen); | ||||||
|     HBITMAP holdBitmap = (HBITMAP) SelectObject(hdcDIBSection, dibHBM); |     HBITMAP holdBitmap = (HBITMAP) SelectObject(hdcDIBSection, dibHBM); | ||||||
|  |  | ||||||
|     grLfbReadRegion(GR_BUFFER_FRONTBUFFER, 0, 0, |     FX_grLfbReadRegion(GR_BUFFER_FRONTBUFFER, 0, 0, | ||||||
|                     width, height, |                     width, height, | ||||||
|                     width * 2, |                     width * 2, | ||||||
|                     dibSurfacePtr); |                     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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.0 |  * Version:  3.2 | ||||||
|  * Copyright (C) 1995-1998  Brian Paul |  * Copyright (C) 1995-2000  Brian Paul | ||||||
|  * |  * | ||||||
|  * This library is free software; you can redistribute it and/or |  * This library is free software; you can redistribute it and/or | ||||||
|  * modify it under the terms of the GNU Library General Public |  * modify it under the terms of the GNU Library General Public | ||||||
| @@ -21,23 +21,19 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Linux SVGA/Mesa interface. |  * SVGA driver for Mesa. | ||||||
|  * |  * Original author:  Brian Paul | ||||||
|  * This interface is not finished!  Still have to implement pixel |  * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2) | ||||||
|  * reading functions and double buffering.  Then, look into accelerated |  | ||||||
|  * line and polygon rendering.  And, clean up a bunch of other stuff. |  | ||||||
|  * Any volunteers? |  | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef HAVE_CONFIG_H | #ifdef HAVE_CONFIG_H | ||||||
| #include "conf.h" | #include "conf.h" | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #ifdef SVGA | #ifdef SVGA | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef PC_HEADER | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #else | ||||||
| @@ -48,35 +44,164 @@ | |||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "matrix.h" | #include "matrix.h" | ||||||
| #include "types.h" | #include "types.h" | ||||||
|  | #include <string.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #include "svgapix.h" | ||||||
|  | #include "svgamesa8.h" | ||||||
|  | #include "svgamesa15.h" | ||||||
|  | #include "svgamesa16.h" | ||||||
|  | #include "svgamesa24.h" | ||||||
|  | #include "svgamesa32.h" | ||||||
|  |  | ||||||
| struct svgamesa_context { | struct svga_buffer SVGABuffer; | ||||||
|    GLcontext *gl_ctx;		/* the core Mesa context */ | vga_modeinfo * SVGAInfo; | ||||||
|    GLvisual *gl_vis;		/* describes the color buffer */ | SVGAMesaContext SVGAMesa;    /* the current context */ | ||||||
|    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) */ |  | ||||||
| }; |  | ||||||
|  |  | ||||||
|  | #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: | /*****                       Init stuff...                        *****/ | ||||||
|  */ | /**********************************************************************/ | ||||||
| #define FLIP(Y)  (SVGAMesa->height-(Y)-1) |  | ||||||
|  |  | ||||||
|  | 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                    *****/ | /*****                 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 ) | 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(); |    *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 ) | static GLboolean set_buffer( GLcontext *ctx, GLenum buffer ) | ||||||
| { | { | ||||||
|    /* TODO: implement double buffering and use this function to select */ |  void * tmpptr; | ||||||
|    /* between front and back buffers. */ |   | ||||||
|    if (buffer == GL_FRONT_LEFT) |    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) |    else if (buffer == GL_BACK_LEFT) | ||||||
|       return GL_TRUE; |    { | ||||||
|  | /*    vga_waitretrace(); */ | ||||||
|  |     copy_buffer(SVGABuffer.BackBuffer); | ||||||
|  |     return GL_TRUE; | ||||||
|  |    }     | ||||||
|    else |    else | ||||||
|       return GL_FALSE; |       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 ) | static void svgamesa_update_state( GLcontext *ctx ) | ||||||
| { | { | ||||||
|    /* Initialize all the pointers in the DD struct.  Do this whenever */ |    /* 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.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.SetBuffer = set_buffer; | ||||||
|    ctx->Driver.GetBufferSize = get_buffer_size; |    ctx->Driver.GetBufferSize = get_buffer_size; | ||||||
|  |  | ||||||
| @@ -378,59 +250,119 @@ static void svgamesa_update_state( GLcontext *ctx ) | |||||||
|    ctx->Driver.LineFunc = NULL; |    ctx->Driver.LineFunc = NULL; | ||||||
|    ctx->Driver.TriangleFunc = NULL; |    ctx->Driver.TriangleFunc = NULL; | ||||||
|  |  | ||||||
|    /* Pixel/span writing functions: */ |    switch (SVGABuffer.Depth) { | ||||||
|    /* TODO: use different funcs for 8, 16, 32-bit depths */ |     case  8: ctx->Driver.ClearIndex = __clear_index8; | ||||||
|    ctx->Driver.WriteRGBASpan        = write_rgba_span; |              ctx->Driver.Clear 	    = __clear8; | ||||||
|    ctx->Driver.WriteMonoRGBASpan    = write_mono_rgba_span; |              ctx->Driver.Index 	    = __set_index8;  | ||||||
|    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; |  | ||||||
|  |  | ||||||
|    /* Pixel/span reading functions: */ |              ctx->Driver.ReadCI32Span         = __read_ci32_span8; | ||||||
|    /* TODO: use different funcs for 8, 16, 32-bit depths */ |              ctx->Driver.ReadCI32Pixels       = __read_ci32_pixels8; | ||||||
|    ctx->Driver.ReadCI32Span   = read_ci32_span; |              ctx->Driver.WriteCI8Span         = __write_ci8_span8; | ||||||
|    ctx->Driver.ReadRGBASpan   = read_rgba_span; |              ctx->Driver.WriteCI32Span        = __write_ci32_span8; | ||||||
|    ctx->Driver.ReadCI32Pixels = read_ci32_pixels; |              ctx->Driver.WriteCI32Pixels      = __write_ci32_pixels8; | ||||||
|    ctx->Driver.ReadRGBAPixels = read_rgba_pixels; |              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. |  * Create a new VGA/Mesa context and return a handle to it. | ||||||
|  */ |  */ | ||||||
| SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ) | SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ) | ||||||
| { | { | ||||||
|    SVGAMesaContext ctx; |    SVGAMesaContext ctx; | ||||||
|  | #ifndef DEV | ||||||
|    GLboolean rgb_flag; |    GLboolean rgb_flag; | ||||||
|    GLfloat redscale, greenscale, bluescale, alphascale; |    GLfloat redscale, greenscale, bluescale, alphascale; | ||||||
|    GLboolean alpha_flag = GL_FALSE; |    GLboolean alpha_flag = GL_FALSE; | ||||||
|    int colors; |  | ||||||
|    GLint index_bits; |    GLint index_bits; | ||||||
|    GLint redbits, greenbits, bluebits, alphabits; |    GLint redbits, greenbits, bluebits, alphabits; | ||||||
|  |  | ||||||
|    /* determine if we're in RGB or color index mode */ |    /* determine if we're in RGB or color index mode */ | ||||||
|    colors = vga_getcolors(); |    if ((SVGABuffer.Depth==32) || (SVGABuffer.Depth==24)) { | ||||||
|    if (colors==32768) { |  | ||||||
|       rgb_flag = GL_TRUE; |       rgb_flag = GL_TRUE; | ||||||
|       redscale = greenscale = bluescale = alphascale = 255.0; |       redscale = greenscale = bluescale = alphascale = 255.0; | ||||||
|       redbits = greenbits = bluebits = 8; |       redbits = greenbits = bluebits = 8; | ||||||
|       alphabits = 0; |       alphabits = 0; | ||||||
|       index_bits = 0; |       index_bits = 0; | ||||||
|    } |    } | ||||||
|    else if (colors==256) { |    else if (SVGABuffer.Depth==8) { | ||||||
|       rgb_flag = GL_FALSE; |       rgb_flag = GL_FALSE; | ||||||
|       redscale = greenscale = bluescale = alphascale = 0.0; |       redscale = greenscale = bluescale = alphascale = 0.0; | ||||||
|       redbits = greenbits = bluebits = alphabits = 0; |       redbits = greenbits = bluebits = alphabits = 0; | ||||||
|       index_bits = 8; |       index_bits = 8; | ||||||
|    } |    } | ||||||
|    else { |    else if (SVGABuffer.Depth==15) { | ||||||
|       printf(">16 bit color not implemented yet!\n"); |       rgb_flag = GL_TRUE; | ||||||
|       return NULL; |       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) ); |    ctx = (SVGAMesaContext) calloc( 1, sizeof(struct svgamesa_context) ); | ||||||
| @@ -459,18 +391,16 @@ SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer ) | |||||||
|    ctx->red = ctx->green = ctx->blue = 255; |    ctx->red = ctx->green = ctx->blue = 255; | ||||||
|  |  | ||||||
|    ctx->width = ctx->height = 0;  /* temporary until first "make-current" */ |    ctx->width = ctx->height = 0;  /* temporary until first "make-current" */ | ||||||
|  | #endif | ||||||
|    return ctx; |    return ctx; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Destroy the given VGA/Mesa context. |  * Destroy the given VGA/Mesa context. | ||||||
|  */ |  */ | ||||||
| void SVGAMesaDestroyContext( SVGAMesaContext ctx ) | void SVGAMesaDestroyContext( SVGAMesaContext ctx ) | ||||||
| { | { | ||||||
|  | #ifndef DEV | ||||||
|    if (ctx) { |    if (ctx) { | ||||||
|       gl_destroy_visual( ctx->gl_vis ); |       gl_destroy_visual( ctx->gl_vis ); | ||||||
|       gl_destroy_context( ctx->gl_ctx ); |       gl_destroy_context( ctx->gl_ctx ); | ||||||
| @@ -480,15 +410,15 @@ void SVGAMesaDestroyContext( SVGAMesaContext ctx ) | |||||||
|          SVGAMesa = NULL; |          SVGAMesa = NULL; | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|  | #endif | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Make the specified VGA/Mesa context the current one. |  * Make the specified VGA/Mesa context the current one. | ||||||
|  */ |  */ | ||||||
| void SVGAMesaMakeCurrent( SVGAMesaContext ctx ) | void SVGAMesaMakeCurrent( SVGAMesaContext ctx ) | ||||||
| { | { | ||||||
|  | #ifndef DEV | ||||||
|    SVGAMesa = ctx; |    SVGAMesa = ctx; | ||||||
|    svgamesa_update_state( ctx->gl_ctx ); |    svgamesa_update_state( ctx->gl_ctx ); | ||||||
|    gl_make_current( ctx->gl_ctx, ctx->gl_buffer ); |    gl_make_current( ctx->gl_ctx, ctx->gl_buffer ); | ||||||
| @@ -499,10 +429,9 @@ void SVGAMesaMakeCurrent( SVGAMesaContext ctx ) | |||||||
|       ctx->height = vga_getydim(); |       ctx->height = vga_getydim(); | ||||||
|       gl_Viewport( ctx->gl_ctx, 0, 0, ctx->width, ctx->height ); |       gl_Viewport( ctx->gl_ctx, 0, 0, ctx->width, ctx->height ); | ||||||
|    } |    } | ||||||
|  | #endif | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Return a handle to the current VGA/Mesa context. |  * Return a handle to the current VGA/Mesa context. | ||||||
|  */ |  */ | ||||||
| @@ -511,20 +440,38 @@ SVGAMesaContext SVGAMesaGetCurrentContext( void ) | |||||||
|    return SVGAMesa; |    return SVGAMesa; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Swap front/back buffers for current context if double buffered. |  * Swap front/back buffers for current context if double buffered. | ||||||
|  */ |  */ | ||||||
| void SVGAMesaSwapBuffers( void ) | void SVGAMesaSwapBuffers( void ) | ||||||
| { | { | ||||||
|  |  void * tmpptr; | ||||||
|  |   | ||||||
|  | /* vga_waitretrace(); */ | ||||||
|  |  copy_buffer(SVGABuffer.BackBuffer); | ||||||
|  |  | ||||||
|  | #ifndef DEV | ||||||
|    FLUSH_VB( SVGAMesa->gl_ctx, "swap buffers" ); |    FLUSH_VB( SVGAMesa->gl_ctx, "swap buffers" ); | ||||||
|    if (SVGAMesa->gl_vis->DBflag) { |    if (SVGAMesa->gl_vis->DBflag)  | ||||||
|       vga_flip(); | #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 /*SVGA*/ | ||||||
| #else |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Need this to provide at least one external definition when SVGA is |  * 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 |  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * 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 "GL/xmesa.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "config.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->StencilBits >= stencil_size || stencil_size == 0) | ||||||
|           && (v->gl_visual->AccumBits >= accum_size || accum_size == 0)) { |           && (v->gl_visual->AccumBits >= accum_size || accum_size == 0)) { | ||||||
|          /* now either compare XVisualInfo pointers or visual IDs */ |          /* 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)) { |              || (comparePointers && v->vishandle == vinfo)) { | ||||||
|             return v; |             return v; | ||||||
|          } |          } | ||||||
| @@ -1047,7 +1056,6 @@ Bool Fake_glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx ) | |||||||
| { | { | ||||||
|    if (ctx && drawable) { |    if (ctx && drawable) { | ||||||
|       XMesaBuffer buffer; |       XMesaBuffer buffer; | ||||||
|       XMesaContext xmctx = (XMesaContext) ctx; |  | ||||||
|  |  | ||||||
|       if (drawable==MakeCurrent_PrevDrawable && ctx==MakeCurrent_PrevContext) { |       if (drawable==MakeCurrent_PrevDrawable && ctx==MakeCurrent_PrevContext) { | ||||||
|          buffer = MakeCurrent_PrevBuffer; |          buffer = MakeCurrent_PrevBuffer; | ||||||
| @@ -1057,7 +1065,7 @@ Bool Fake_glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx ) | |||||||
|       } |       } | ||||||
|       if (!buffer) { |       if (!buffer) { | ||||||
|          /* drawable must be a new window! */ |          /* drawable must be a new window! */ | ||||||
|          buffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, drawable, ctx ); |          buffer = XMesaCreateWindowBuffer2( ctx->xm_visual, drawable, ctx ); | ||||||
|          if (!buffer) { |          if (!buffer) { | ||||||
|             /* Out of memory, or context/drawable depth mismatch */ |             /* Out of memory, or context/drawable depth mismatch */ | ||||||
|             return False; |             return False; | ||||||
| @@ -1149,12 +1157,12 @@ void Fake_glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ) | |||||||
|  |  | ||||||
|  |  | ||||||
| void Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | void Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||||
|                           GLuint mask ) |                           unsigned long mask ) | ||||||
| { | { | ||||||
|    XMesaContext xm_src = (XMesaContext) src; |    XMesaContext xm_src = (XMesaContext) src; | ||||||
|    XMesaContext xm_dst = (XMesaContext) dst; |    XMesaContext xm_dst = (XMesaContext) dst; | ||||||
|    (void) dpy; |    (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 | #ifdef FX | ||||||
|    const char *fx = getenv("MESA_GLX_FX"); |    const char *fx = getenv("MESA_GLX_FX"); | ||||||
|    if (fx && fx[0] != 'd') { |    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 | #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 ) | const char *Fake_glXQueryServerString( Display *dpy, int screen, int name ) | ||||||
| { | { | ||||||
|    static char *vendor = "Brian Paul"; |    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) dpy; | ||||||
|    (void) screen; |    (void) screen; | ||||||
| @@ -1467,7 +1475,7 @@ const char *Fake_glXQueryServerString( Display *dpy, int screen, int name ) | |||||||
| const char *Fake_glXGetClientString( Display *dpy, int name ) | const char *Fake_glXGetClientString( Display *dpy, int name ) | ||||||
| { | { | ||||||
|    static char *vendor = "Brian Paul"; |    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) dpy; | ||||||
|  |  | ||||||
| @@ -1510,37 +1518,62 @@ GLboolean Fake_glXSet3DfxModeMESA( GLint mode ) | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #if 0 |  | ||||||
| /*GLfunction Fake_glXGetProcAddress( const GLubyte *procName )*/ |  | ||||||
| void (*Fake_glXGetProcAddress( const GLubyte *procName ))() | void (*Fake_glXGetProcAddress( const GLubyte *procName ))() | ||||||
| { | { | ||||||
|    typedef void (*GLfunction)(); |    typedef void (*gl_function)(); | ||||||
|    struct proc { |    struct proc { | ||||||
|       const char *name; |       const char *name; | ||||||
|       GLfunction address; |       gl_function address; | ||||||
|    }; |    }; | ||||||
|    static struct proc procTable[] = { |    static struct proc procTable[] = { | ||||||
|       { "glXGetProcAddressEXT", (GLfunction) glXGetProcAddressEXT }, |       /* GLX 1.0 functions */ | ||||||
|       { "glXCreateGLXPixmapMESA", (GLfunction) glXCreateGLXPixmapMESA }, |       { "glXChooseVisual", (gl_function) glXChooseVisual }, | ||||||
|       { "glXReleaseBuffersMESA", (GLfunction) glXReleaseBuffersMESA }, |       { "glXCopyContext", (gl_function) glXCopyContext }, | ||||||
|       { "glXCopySubBufferMESA", (GLfunction) glXCopySubBufferMESA }, |       { "glXCreateContext", (gl_function) glXCreateContext }, | ||||||
|       { "glXSet3DfxModeMESA", (GLfunction) glXSet3DfxModeMESA }, |       { "glXCreateGLXPixmap", (gl_function) glXCreateGLXPixmap }, | ||||||
|       /* NOTE: GLX_SGI_video_sync not implemented in Mesa */ |       { "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 */ |       { NULL, NULL }  /* end of list token */ | ||||||
|    }; |    }; | ||||||
|    GLuint i; |    GLuint i; | ||||||
|  |  | ||||||
|    /* First, look for core library functions */ |    /* 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) |    if (f) | ||||||
|       return f; |       return f; | ||||||
|  |  | ||||||
|    /* Second, look for GLX funtion */ |    /* Second, look for GLX funtion */ | ||||||
|    for (i = 0; procTable[i].address; i++) { |    for (i = 0; procTable[i].address; i++) { | ||||||
|       if (strcmp((const char *) procName, procTable[i].name) == 0) |       if (strcmp((const char *) procName, procTable[i].name) == 0) | ||||||
| 	  return (GLfunction) procTable[i].address; | 	  return procTable[i].address; | ||||||
|    } |    } | ||||||
|  |  | ||||||
|    return NULL; |    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 |  * Mesa 3-D graphics library | ||||||
| @@ -126,7 +126,7 @@ void glXDestroyContext( Display *dpy, GLXContext ctx ) | |||||||
|  |  | ||||||
|  |  | ||||||
| void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||||
| 		     GLuint mask ) | 		     unsigned long mask ) | ||||||
| { | { | ||||||
| #ifdef REALGLX | #ifdef REALGLX | ||||||
|    if (display_has_glx(dpy)) |    if (display_has_glx(dpy)) | ||||||
| @@ -419,8 +419,7 @@ GLboolean glXSet3DfxModeMESA( GLint mode ) | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #if 0  /* spec for this not finalized yet */ | void (*glXGetProcAddressARB( const GLubyte *procName ))() | ||||||
| void (*glXGetProcAddressEXT( const GLubyte *procName ))() |  | ||||||
| { | { | ||||||
| #ifdef REALGLX | #ifdef REALGLX | ||||||
|    return NULL; |    return NULL; | ||||||
| @@ -428,4 +427,4 @@ void (*glXGetProcAddressEXT( const GLubyte *procName ))() | |||||||
|    return Fake_glXGetProcAddress( procName ); |    return Fake_glXGetProcAddress( procName ); | ||||||
| #endif | #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 |  * 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, | void Real_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||||
|                           GLuint mask ) |                           unsigned long mask ) | ||||||
| { | { | ||||||
|    (void) dpy; |    (void) dpy; | ||||||
|    (void) src; |    (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 |  * 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, | extern void Real_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, | ||||||
|                                  GLuint mask ); |                                  unsigned long mask ); | ||||||
|  |  | ||||||
|  |  | ||||||
| extern Bool Real_glXMakeCurrent( Display *dpy, GLXDrawable drawable, | 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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.3 |  * Version:  3.1 | ||||||
|  * |  * | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  * |  * | ||||||
| @@ -44,7 +44,7 @@ | |||||||
| #include "GL/xmesa.h" | #include "GL/xmesa.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "fakeglx.h" | #include "fakeglx.h" | ||||||
| #include "mem.h" | #include "macros.h" | ||||||
| #include "xmesaP.h" | #include "xmesaP.h" | ||||||
|  |  | ||||||
| /* Some debugging info.  */ | /* Some debugging info.  */ | ||||||
| @@ -338,7 +338,8 @@ void Fake_glXUseXFont( Font font, int first, int count, int listbase ) | |||||||
|       width = ch->rbearing - ch->lbearing; |       width = ch->rbearing - ch->lbearing; | ||||||
|       height = ch->ascent + ch->descent; |       height = ch->ascent + ch->descent; | ||||||
|       x0 = - ch->lbearing; |       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; |       dx = ch->width; | ||||||
|       dy = 0; |       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 |  * Mesa 3-D graphics library | ||||||
| @@ -193,7 +193,7 @@ struct xmesa_buffer { | |||||||
|    GLint ximage_width1; |    GLint ximage_width1; | ||||||
|    GLushort *ximage_origin2;	/* used for PIXELADDR2 macro */ |    GLushort *ximage_origin2;	/* used for PIXELADDR2 macro */ | ||||||
|    GLint ximage_width2; |    GLint ximage_width2; | ||||||
|    bgr_t *ximage_origin3;	/* used for PIXELADDR3 macro */ |    GLubyte *ximage_origin3;	/* used for PIXELADDR3 macro */ | ||||||
|    GLint ximage_width3; |    GLint ximage_width3; | ||||||
|    GLuint *ximage_origin4;	/* used for PIXELADDR4 macro */ |    GLuint *ximage_origin4;	/* used for PIXELADDR4 macro */ | ||||||
|    GLint ximage_width4; |    GLint ximage_width4; | ||||||
| @@ -492,7 +492,7 @@ static int const kernel1[16] = { | |||||||
|       ( xmesa->xm_buffer->ximage_origin2 - (Y) * xmesa->xm_buffer->ximage_width2 + (X) ) |       ( xmesa->xm_buffer->ximage_origin2 - (Y) * xmesa->xm_buffer->ximage_width2 + (X) ) | ||||||
|  |  | ||||||
| #define PIXELADDR3( X, Y )  \ | #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 )  \ | #define PIXELADDR4( X, Y )  \ | ||||||
|       ( xmesa->xm_buffer->ximage_origin4 - (Y) * xmesa->xm_buffer->ximage_width4 + (X) ) |       ( 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 | # Mesa 3-D graphics library | ||||||
| # Version:  3.3 | # Version:  3.1 | ||||||
| # Copyright (C) 1995-1999  Brian Paul | # Copyright (C) 1995-1999  Brian Paul | ||||||
|  |  | ||||||
| # Makefile for core library | # Makefile for core library | ||||||
| @@ -18,13 +18,13 @@ VPATH = RCS | |||||||
| INCDIR = ../include | INCDIR = ../include | ||||||
| LIBDIR = ../lib | LIBDIR = ../lib | ||||||
|  |  | ||||||
|  |  | ||||||
| CORE_SOURCES = \ | CORE_SOURCES = \ | ||||||
| 	glapi.c \ |  | ||||||
| 	glapinoop.c \ |  | ||||||
| 	accum.c \ | 	accum.c \ | ||||||
| 	alpha.c \ | 	alpha.c \ | ||||||
| 	alphabuf.c \ | 	alphabuf.c \ | ||||||
|  | 	api1.c \ | ||||||
|  | 	api2.c \ | ||||||
|  | 	apiext.c \ | ||||||
| 	attrib.c \ | 	attrib.c \ | ||||||
| 	bbox.c \ | 	bbox.c \ | ||||||
| 	bitmap.c \ | 	bitmap.c \ | ||||||
| @@ -37,7 +37,6 @@ CORE_SOURCES = \ | |||||||
| 	cva.c \ | 	cva.c \ | ||||||
| 	debug_xform.c \ | 	debug_xform.c \ | ||||||
| 	depth.c \ | 	depth.c \ | ||||||
| 	dispatch.c \ |  | ||||||
| 	dlist.c \ | 	dlist.c \ | ||||||
| 	drawpix.c \ | 	drawpix.c \ | ||||||
| 	enable.c \ | 	enable.c \ | ||||||
| @@ -50,19 +49,18 @@ CORE_SOURCES = \ | |||||||
| 	glmisc.c \ | 	glmisc.c \ | ||||||
| 	hash.c \ | 	hash.c \ | ||||||
| 	image.c \ | 	image.c \ | ||||||
| 	imaging.c \ |  | ||||||
| 	light.c \ | 	light.c \ | ||||||
| 	lines.c \ | 	lines.c \ | ||||||
| 	logic.c \ | 	logic.c \ | ||||||
| 	masking.c \ | 	masking.c \ | ||||||
| 	matrix.c \ | 	matrix.c \ | ||||||
| 	mem.c \ |  | ||||||
| 	mmath.c \ | 	mmath.c \ | ||||||
| 	mthreads.c \ | 	mthreads.c \ | ||||||
| 	pb.c \ | 	pb.c \ | ||||||
| 	pixel.c \ | 	pixel.c \ | ||||||
| 	pipeline.c \ | 	pipeline.c \ | ||||||
| 	points.c \ | 	points.c \ | ||||||
|  | 	pointers.c \ | ||||||
| 	polygon.c \ | 	polygon.c \ | ||||||
| 	quads.c \ | 	quads.c \ | ||||||
| 	rastpos.c \ | 	rastpos.c \ | ||||||
| @@ -106,6 +104,11 @@ DRIVER_SOURCES = \ | |||||||
| 	X/xmesa4.c \ | 	X/xmesa4.c \ | ||||||
| 	OSmesa/osmesa.c \ | 	OSmesa/osmesa.c \ | ||||||
| 	SVGA/svgamesa.c \ | 	SVGA/svgamesa.c \ | ||||||
|  | 	SVGA/svgamesa8.c \ | ||||||
|  | 	SVGA/svgamesa15.c \ | ||||||
|  | 	SVGA/svgamesa16.c \ | ||||||
|  | 	SVGA/svgamesa24.c \ | ||||||
|  | 	SVGA/svgamesa32.c \ | ||||||
| 	FX/fxapi.c \ | 	FX/fxapi.c \ | ||||||
| 	FX/fxclip.c \ | 	FX/fxclip.c \ | ||||||
| 	FX/fxcva.c \ | 	FX/fxcva.c \ | ||||||
| @@ -222,7 +225,8 @@ X86/3dnow.o: X86/3dnow.c | |||||||
| #	@echo "Specify a target configuration" | #	@echo "Specify a target configuration" | ||||||
|  |  | ||||||
| clean: | clean: | ||||||
| 	-rm *.o *~ */*.o */*~ | 	-rm *.o *~ */*.o */*~ *.lo *.la | ||||||
|  | 	-rm -rf .libs | ||||||
|  |  | ||||||
| targets: $(LIBDIR)/$(GL_LIB) | 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 |  * 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 | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #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 "accum.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "mem.h" | #include "macros.h" | ||||||
| #include "masking.h" | #include "masking.h" | ||||||
| #include "span.h" | #include "span.h" | ||||||
| #include "types.h" | #include "types.h" | ||||||
| @@ -92,10 +101,9 @@ void gl_alloc_accum_buffer( GLcontext *ctx ) | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void | void gl_ClearAccum( GLcontext *ctx, | ||||||
| _mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) |                     GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glAccum"); |    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glAccum"); | ||||||
|  |  | ||||||
|    ctx->Accum.ClearColor[0] = CLAMP( red, -1.0, 1.0 ); |    ctx->Accum.ClearColor[0] = CLAMP( red, -1.0, 1.0 ); | ||||||
| @@ -131,10 +139,8 @@ static void rescale_accum( GLcontext *ctx ) | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void | void gl_Accum( GLcontext *ctx, GLenum op, GLfloat value ) | ||||||
| _mesa_Accum( GLenum op, GLfloat value ) |  | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    GLuint xpos, ypos, width, height, width4; |    GLuint xpos, ypos, width, height, width4; | ||||||
|    GLfloat acc_scale; |    GLfloat acc_scale; | ||||||
|    GLubyte rgba[MAX_WIDTH][4]; |    GLubyte rgba[MAX_WIDTH][4]; | ||||||
| @@ -332,13 +338,13 @@ _mesa_Accum( GLenum op, GLfloat value ) | |||||||
|          if (ctx->IntegerAccumMode && value != 1.0) |          if (ctx->IntegerAccumMode && value != 1.0) | ||||||
|             rescale_accum(ctx); |             rescale_accum(ctx); | ||||||
|  |  | ||||||
|          if (ctx->IntegerAccumMode) { |          if (ctx->IntegerAccumMode && ctx->IntegerAccumScaler > 0) { | ||||||
|             /* build lookup table to avoid many floating point multiplies */ |             /* build lookup table to avoid many floating point multiplies */ | ||||||
|             const GLfloat mult = ctx->IntegerAccumScaler; |             const GLfloat mult = ctx->IntegerAccumScaler; | ||||||
|             static GLchan multTable[32768]; |             static GLchan multTable[32768]; | ||||||
|             static GLfloat prevMult = 0.0; |             static GLfloat prevMult = 0.0; | ||||||
|             GLuint j; |             GLuint j; | ||||||
|             const GLint max = 256 / mult; |             const GLint max = (GLint) (256 / mult); | ||||||
|             if (mult != prevMult) { |             if (mult != prevMult) { | ||||||
|                assert(max <= 32768); |                assert(max <= 32768); | ||||||
|                for (j = 0; j < max; j++) |                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 |  * Mesa 3-D graphics library | ||||||
| @@ -25,16 +25,23 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #include <stdlib.h> | ||||||
|  |  | ||||||
| #ifdef PC_HEADER | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #else | ||||||
| #include "glheader.h" | #ifndef XFree86Server | ||||||
|  | #include <stdio.h> | ||||||
|  | #else | ||||||
|  | #include "GL/xf86glx.h" | ||||||
|  | #endif | ||||||
| #include "attrib.h" | #include "attrib.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "glmisc.h" | #include "glmisc.h" | ||||||
| #include "enable.h" | #include "enable.h" | ||||||
| #include "enums.h" | #include "enums.h" | ||||||
| #include "mem.h" | #include "macros.h" | ||||||
| #include "simple_list.h" | #include "simple_list.h" | ||||||
| #include "texstate.h" | #include "texstate.h" | ||||||
| #include "types.h" | #include "types.h" | ||||||
| @@ -85,7 +92,11 @@ static void copy_texobj_state( struct gl_texture_object *dest, | |||||||
|    dest->P = src->P; |    dest->P = src->P; | ||||||
|    dest->M = src->M; |    dest->M = src->M; | ||||||
|    dest->MinMagThresh = src->MinMagThresh; |    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->Complete = src->Complete; | ||||||
|    dest->SampleFunc = src->SampleFunc; |    dest->SampleFunc = src->SampleFunc; | ||||||
| } | } | ||||||
| @@ -417,21 +428,43 @@ void gl_PopAttrib( GLcontext* ctx ) | |||||||
|                GLubyte oldAlphaRef = ctx->Color.AlphaRef; |                GLubyte oldAlphaRef = ctx->Color.AlphaRef; | ||||||
|                GLenum oldBlendSrc = ctx->Color.BlendSrcRGB; |                GLenum oldBlendSrc = ctx->Color.BlendSrcRGB; | ||||||
|                GLenum oldBlendDst = ctx->Color.BlendDstRGB; |                GLenum oldBlendDst = ctx->Color.BlendDstRGB; | ||||||
|  | 	       GLenum oldLogicOp = ctx->Color.LogicOp; | ||||||
|                MEMCPY( &ctx->Color, attr->data, |                MEMCPY( &ctx->Color, attr->data, | ||||||
|                        sizeof(struct gl_colorbuffer_attrib) ); |                        sizeof(struct gl_colorbuffer_attrib) ); | ||||||
|                if (ctx->Color.DrawBuffer != oldDrawBuffer) { |                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 || |                if ((ctx->Color.BlendSrcRGB != oldBlendSrc || | ||||||
|                     ctx->Color.BlendSrcRGB != oldBlendDst) && |                     ctx->Color.BlendDstRGB != oldBlendDst) && | ||||||
|                    ctx->Driver.BlendFunc) |                    ctx->Driver.BlendFunc) | ||||||
|                   (*ctx->Driver.BlendFunc)( ctx, ctx->Color.BlendSrcRGB, |                   (*ctx->Driver.BlendFunc)( ctx, ctx->Color.BlendSrcRGB, | ||||||
|                                             ctx->Color.BlendDstRGB); |                                             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; |             break; | ||||||
|          case GL_CURRENT_BIT: |          case GL_CURRENT_BIT: | ||||||
| @@ -460,7 +493,7 @@ void gl_PopAttrib( GLcontext* ctx ) | |||||||
|  |  | ||||||
| #define TEST_AND_UPDATE(VALUE, NEWVALUE, ENUM)		\ | #define TEST_AND_UPDATE(VALUE, NEWVALUE, ENUM)		\ | ||||||
| 	if ((VALUE) != (NEWVALUE)) {			\ | 	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); |                TEST_AND_UPDATE(ctx->Color.AlphaEnabled, enable->AlphaTest, GL_ALPHA_TEST); | ||||||
| @@ -470,7 +503,7 @@ void gl_PopAttrib( GLcontext* ctx ) | |||||||
|                   GLuint i; |                   GLuint i; | ||||||
|                   for (i=0;i<MAX_CLIP_PLANES;i++) { |                   for (i=0;i<MAX_CLIP_PLANES;i++) { | ||||||
|                      if (ctx->Transform.ClipEnabled[i] != enable->ClipPlane[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); |                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_INDEX, &index ); | ||||||
|                   (*ctx->Driver.Fogfv)( ctx, GL_FOG_COLOR, ctx->Fog.Color ); |                   (*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; | 	       if (ctx->Fog.Enabled) ctx->Enabled |= ENABLE_FOG; | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
| @@ -613,7 +646,13 @@ void gl_PopAttrib( GLcontext* ctx ) | |||||||
|                } |                } | ||||||
|                (*ctx->Driver.Enable)( ctx, GL_LIGHTING, ctx->Light.Enabled ); |                (*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)) | 	    if (ctx->Light.Enabled && !is_empty_list(&ctx->Light.EnabledList)) | ||||||
| 	       ctx->Enabled |= ENABLE_LIGHT; | 	       ctx->Enabled |= ENABLE_LIGHT; | ||||||
|             break; |             break; | ||||||
| @@ -731,8 +770,8 @@ void gl_PopAttrib( GLcontext* ctx ) | |||||||
| 	    struct gl_viewport_attrib *v =  | 	    struct gl_viewport_attrib *v =  | ||||||
| 	       (struct gl_viewport_attrib *)attr->data; | 	       (struct gl_viewport_attrib *)attr->data; | ||||||
| 	     | 	     | ||||||
| 	    _mesa_Viewport( v->X, v->Y, v->Width, v->Height ); | 	    gl_Viewport( ctx, v->X, v->Y, v->Width, v->Height ); | ||||||
| 	    _mesa_DepthRange( v->Near, v->Far ); | 	    gl_DepthRange( ctx, v->Near, v->Far ); | ||||||
| 	    break; | 	    break; | ||||||
| 	 } | 	 } | ||||||
|          default: |          default: | ||||||
| @@ -846,37 +885,3 @@ void gl_PopClientAttrib( GLcontext *ctx ) | |||||||
|    ctx->NewState = NEW_ALL; |    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 |  * 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 |  * Permission is hereby granted, free of charge, to any person obtaining a | ||||||
|  * copy of this software and associated documentation files (the "Software"), |  * copy of this software and associated documentation files (the "Software"), | ||||||
| @@ -29,7 +29,13 @@ | |||||||
| #ifdef PC_HEADER | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #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 "alphabuf.h" | ||||||
| #include "blend.h" | #include "blend.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| @@ -41,9 +47,8 @@ | |||||||
| #endif | #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"); |    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFunc"); | ||||||
|  |  | ||||||
|    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) |    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) | ||||||
| @@ -103,10 +108,9 @@ void _mesa_BlendFunc( GLenum sfactor, GLenum dfactor ) | |||||||
|  |  | ||||||
| /* GL_INGR_blend_func_separate */ | /* GL_INGR_blend_func_separate */ | ||||||
| void | void | ||||||
| _mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB, | gl_BlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, GLenum dfactorRGB, | ||||||
|                              GLenum sfactorA, GLenum dfactorA ) |                       GLenum sfactorA, GLenum dfactorA ) | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFuncSeparate"); |    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFuncSeparate"); | ||||||
|  |  | ||||||
|    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) |    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) | ||||||
| @@ -210,10 +214,8 @@ _mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB, | |||||||
|  |  | ||||||
|  |  | ||||||
| /* This is really an extension function! */ | /* This is really an extension function! */ | ||||||
| void | void gl_BlendEquation( GLcontext *ctx, GLenum mode ) | ||||||
| _mesa_BlendEquationEXT( GLenum mode ) |  | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendEquation"); |    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendEquation"); | ||||||
|  |  | ||||||
|    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) |    if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) | ||||||
| @@ -254,10 +256,9 @@ _mesa_BlendEquationEXT( GLenum mode ) | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void | void gl_BlendColor( GLcontext *ctx, GLclampf red, GLclampf green, | ||||||
| _mesa_BlendColorEXT( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) | 		    GLclampf blue, GLclampf alpha ) | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    ctx->Color.BlendColor[0] = CLAMP( red,   0.0F, 1.0F ); |    ctx->Color.BlendColor[0] = CLAMP( red,   0.0F, 1.0F ); | ||||||
|    ctx->Color.BlendColor[1] = CLAMP( green, 0.0F, 1.0F ); |    ctx->Color.BlendColor[1] = CLAMP( green, 0.0F, 1.0F ); | ||||||
|    ctx->Color.BlendColor[2] = CLAMP( blue,  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; |                sR = sG = sB = 1.0F - (GLfloat) Ad * ascale; | ||||||
|                break; |                break; | ||||||
|             case GL_SRC_ALPHA_SATURATE: |             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; |                   sR = sG = sB = (GLfloat) As * ascale; | ||||||
|                } |                } | ||||||
|                else { |                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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.3 |  * Version:  3.1 | ||||||
|  *  |  *  | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  *  |  *  | ||||||
| @@ -25,10 +25,19 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef PC_HEADER | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #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 "clip.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "macros.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: */ | /* Linear interpolation between A and B: */ | ||||||
| #define LINTERP( T, A, B )   ( (A) + (T) * ( (B) - (A) ) ) | #define LINTERP( T, A, B )   ( (A) + (T) * ( (B) - (A) ) ) | ||||||
|  |  | ||||||
| @@ -58,16 +76,7 @@ do {								\ | |||||||
| } while(0) | } while(0) | ||||||
|     |     | ||||||
|  |  | ||||||
|  | static clip_interp_func clip_interp_tab[0x80];  | ||||||
|  |  | ||||||
| #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];  |  | ||||||
|  |  | ||||||
| #define IND 0 | #define IND 0 | ||||||
| #define NAME clip_nil | #define NAME clip_nil | ||||||
| @@ -113,6 +122,50 @@ static clip_interp_func clip_interp_tab[0x40]; | |||||||
| #define NAME clipINDEX0_INDEX1 | #define NAME clipINDEX0_INDEX1 | ||||||
| #include "interp_tmp.h" | #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 | void gl_ClipPlane( GLcontext* ctx, GLenum plane, const GLfloat *equation ) | ||||||
| _mesa_ClipPlane( GLenum plane, const GLdouble *eq ) |  | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    GLint p; |    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"); |    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glClipPlane"); | ||||||
|  |  | ||||||
| @@ -183,10 +228,8 @@ void gl_update_userclip( GLcontext *ctx ) | |||||||
|    } |    } | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void gl_GetClipPlane( GLcontext* ctx, GLenum plane, GLdouble *equation ) | ||||||
| _mesa_GetClipPlane( GLenum plane, GLdouble *equation ) |  | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    GLint p; |    GLint p; | ||||||
|  |  | ||||||
|    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetClipPlane"); |    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetClipPlane"); | ||||||
| @@ -353,6 +396,8 @@ void gl_update_clipmask( GLcontext *ctx ) | |||||||
| 	 mask |= CLIP_INDEX1; | 	 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->ClipInterpFunc = clip_interp_tab[mask]; | ||||||
|    ctx->poly_clip_tab = gl_poly_clip_tab[0]; |    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] = clipTEX1_TEX0_RGBA0; | ||||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1] =  |    clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1] =  | ||||||
|       clipTEX1_TEX0_RGBA0_RGBA1; |       clipTEX1_TEX0_RGBA0_RGBA1; | ||||||
|  |  | ||||||
|    clip_interp_tab[CLIP_TEX0] = clipTEX0; |    clip_interp_tab[CLIP_TEX0] = clipTEX0; | ||||||
|    clip_interp_tab[CLIP_TEX1|CLIP_TEX0] = clipTEX1_TEX0; |    clip_interp_tab[CLIP_TEX1|CLIP_TEX0] = clipTEX1_TEX0; | ||||||
|  |  | ||||||
|    clip_interp_tab[CLIP_INDEX0] = clipINDEX0; |    clip_interp_tab[CLIP_INDEX0] = clipINDEX0; | ||||||
|    clip_interp_tab[CLIP_INDEX0|CLIP_INDEX1] = clipINDEX0_INDEX1; |    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 |  * Mesa 3-D graphics library | ||||||
| @@ -23,15 +23,20 @@ | |||||||
|  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 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. |  * 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 | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #else | ||||||
| #include "glheader.h" | #ifdef XFree86Server | ||||||
|  | #include "GL/xf86glx.h" | ||||||
|  | #endif | ||||||
| #include "colortab.h" | #include "colortab.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "image.h" |  | ||||||
| #include "macros.h" | #include "macros.h" | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| @@ -40,8 +45,7 @@ | |||||||
| /* | /* | ||||||
|  * Return GL_TRUE if k is a power of two, else return GL_FALSE. |  * Return GL_TRUE if k is a power of two, else return GL_FALSE. | ||||||
|  */ |  */ | ||||||
| static GLboolean | static GLboolean power_of_two( GLint k ) | ||||||
| power_of_two( GLint k ) |  | ||||||
| { | { | ||||||
|    GLint i, m = 1; |    GLint i, m = 1; | ||||||
|    for (i=0; i<32; i++) { |    for (i=0; i<32; i++) { | ||||||
| @@ -53,8 +57,7 @@ power_of_two( GLint k ) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| static GLint | static GLint decode_internal_format( GLint format ) | ||||||
| decode_internal_format( GLint format ) |  | ||||||
| { | { | ||||||
|    switch (format) { |    switch (format) { | ||||||
|       case GL_ALPHA: |       case GL_ALPHA: | ||||||
| @@ -111,171 +114,81 @@ decode_internal_format( GLint format ) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void  | void gl_ColorTable( GLcontext *ctx, GLenum target, | ||||||
| _mesa_ColorTable( GLenum target, GLenum internalFormat, |                     GLenum internalFormat, struct gl_image *table ) | ||||||
|                   GLsizei width, 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_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; | ||||||
|    struct gl_texture_object *texObj; |    struct gl_texture_object *texObj; | ||||||
|    struct gl_palette *palette; |  | ||||||
|    GLboolean proxy = GL_FALSE; |    GLboolean proxy = GL_FALSE; | ||||||
|  |  | ||||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorTable"); |    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) { |    if (decode_internal_format(internalFormat) < 0) { | ||||||
|       gl_error( ctx, GL_INVALID_ENUM, "glColorTable(internalFormat)" ); |       gl_error( ctx, GL_INVALID_ENUM, "glColorTable(internalFormat)" ); | ||||||
|       return; |       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) { |    switch (target) { | ||||||
|       case GL_TEXTURE_1D: |       case GL_TEXTURE_1D: | ||||||
|          texObj = texUnit->CurrentD[1]; |          texObj = texUnit->CurrentD[1]; | ||||||
|          palette = &texObj->Palette; |  | ||||||
|          break; |          break; | ||||||
|       case GL_TEXTURE_2D: |       case GL_TEXTURE_2D: | ||||||
|          texObj = texUnit->CurrentD[2]; |          texObj = texUnit->CurrentD[2]; | ||||||
|          palette = &texObj->Palette; |  | ||||||
|          break; |          break; | ||||||
|       case GL_TEXTURE_3D: |       case GL_TEXTURE_3D_EXT: | ||||||
|          texObj = texUnit->CurrentD[3]; |          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; |          break; | ||||||
|       case GL_SHARED_TEXTURE_PALETTE_EXT: |       case GL_SHARED_TEXTURE_PALETTE_EXT: | ||||||
|          texObj = NULL; |          texObj = NULL; | ||||||
|          palette = &ctx->Texture.Palette; |  | ||||||
|          break; |          break; | ||||||
|       default: |       default: | ||||||
|          gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(target)"); |          gl_error(ctx, GL_INVALID_ENUM, "glColorTableEXT(target)"); | ||||||
|          return; |          return; | ||||||
|    } |    } | ||||||
|  |  | ||||||
|    assert(palette); |    /* internalformat = just like glTexImage */ | ||||||
|  |  | ||||||
|    if (!gl_is_legal_format_and_type(format, type)) { |    if (table->Width < 1 || table->Width > MAX_TEXTURE_PALETTE_SIZE | ||||||
|       gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(format or type)"); |        || !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; |       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) { |    if (texObj) { | ||||||
|       /* per-texture object palette */ |       /* per-texture object palette */ | ||||||
|       if (ctx->Driver.UpdateTexturePalette) { |       texObj->PaletteSize = table->Width; | ||||||
|          (*ctx->Driver.UpdateTexturePalette)( ctx, texObj ); |       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 { |    else { | ||||||
|       /* shared texture palette */ |       /* 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) { |       if (ctx->Driver.UpdateTexturePalette) { | ||||||
|          (*ctx->Driver.UpdateTexturePalette)( ctx, NULL ); |          (*ctx->Driver.UpdateTexturePalette)( ctx, NULL ); | ||||||
|       } |       } | ||||||
| @@ -284,96 +197,38 @@ _mesa_ColorSubTable( GLenum target, GLsizei start, | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void | void gl_ColorSubTable( GLcontext *ctx, GLenum target, | ||||||
| _mesa_GetColorTable( GLenum target, GLenum format, |                        GLsizei start, struct gl_image *data ) | ||||||
|                      GLenum type, GLvoid *table ) |  | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |    /* XXX TODO */ | ||||||
|    struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; |    gl_problem(ctx, "glColorSubTableEXT not implemented"); | ||||||
|    struct gl_palette *palette; |    (void) target; | ||||||
|    GLubyte rgba[MAX_TEXTURE_PALETTE_SIZE][4]; |    (void) start; | ||||||
|    GLint i; |    (void) data; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void gl_GetColorTable( GLcontext *ctx, GLenum target, GLenum format, | ||||||
|  |                        GLenum type, GLvoid *table ) | ||||||
|  | { | ||||||
|    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetBooleanv"); |    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetBooleanv"); | ||||||
|  |  | ||||||
|    switch (target) { |    switch (target) { | ||||||
|       case GL_TEXTURE_1D: |       case GL_TEXTURE_1D: | ||||||
|          palette = &texUnit->CurrentD[1]->Palette; |  | ||||||
|          break; |          break; | ||||||
|       case GL_TEXTURE_2D: |       case GL_TEXTURE_2D: | ||||||
|          palette = &texUnit->CurrentD[2]->Palette; |  | ||||||
|          break; |          break; | ||||||
|       case GL_TEXTURE_3D: |       case GL_TEXTURE_3D_EXT: | ||||||
|          palette = &texUnit->CurrentD[3]->Palette; |  | ||||||
|          break; |          break; | ||||||
|       case GL_SHARED_TEXTURE_PALETTE_EXT: |       case GL_SHARED_TEXTURE_PALETTE_EXT: | ||||||
|          palette = &ctx->Texture.Palette; |  | ||||||
|          break; |          break; | ||||||
|       default: |       default: | ||||||
|          gl_error(ctx, GL_INVALID_ENUM, "glGetColorTable(target)"); |          gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableEXT(target)"); | ||||||
|          return; |          return; | ||||||
|    } |    } | ||||||
|  |  | ||||||
|    assert(palette); |    gl_problem(ctx, "glGetColorTableEXT not implemented!"); | ||||||
|  |  | ||||||
|    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!"); |  | ||||||
|    (void) format; |    (void) format; | ||||||
|    (void) type; |    (void) type; | ||||||
|    (void) table; |    (void) table; | ||||||
| @@ -381,37 +236,46 @@ _mesa_GetColorTable( GLenum target, GLenum format, | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void | void gl_GetColorTableParameterfv( GLcontext *ctx, GLenum target, | ||||||
| _mesa_GetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) |                                   GLenum pname, GLfloat *params ) | ||||||
| { | { | ||||||
|    GLint iparams[10]; |    GLint iparams[10]; | ||||||
|    _mesa_GetColorTableParameteriv( target, pname, iparams ); |  | ||||||
|  |    gl_GetColorTableParameteriv( ctx, target, pname, iparams ); | ||||||
|    *params = (GLfloat) iparams[0]; |    *params = (GLfloat) iparams[0]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void | void gl_GetColorTableParameteriv( GLcontext *ctx, GLenum target, | ||||||
| _mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) |                                   GLenum pname, GLint *params ) | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit]; |    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"); |    ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetColorTableParameter"); | ||||||
|  |  | ||||||
|    switch (target) { |    switch (target) { | ||||||
|       case GL_TEXTURE_1D: |       case GL_TEXTURE_1D: | ||||||
|          palette = &texUnit->CurrentD[1]->Palette; |          texObj = texUnit->CurrentD[1]; | ||||||
|          break; |          break; | ||||||
|       case GL_TEXTURE_2D: |       case GL_TEXTURE_2D: | ||||||
|          palette = &texUnit->CurrentD[2]->Palette; |          texObj = texUnit->CurrentD[2]; | ||||||
|          break; |          break; | ||||||
|       case GL_TEXTURE_3D: |       case GL_TEXTURE_3D_EXT: | ||||||
|          palette = &texUnit->CurrentD[3]->Palette; |          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; |          break; | ||||||
|       case GL_SHARED_TEXTURE_PALETTE_EXT: |       case GL_SHARED_TEXTURE_PALETTE_EXT: | ||||||
|          palette = &ctx->Texture.Palette; |          texObj = NULL; | ||||||
|          break; |          break; | ||||||
|       default: |       default: | ||||||
|          gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter(target)"); |          gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter(target)"); | ||||||
| @@ -419,28 +283,34 @@ _mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) | |||||||
|    } |    } | ||||||
|  |  | ||||||
|    switch (pname) { |    switch (pname) { | ||||||
|       case GL_COLOR_TABLE_FORMAT: |       case GL_COLOR_TABLE_FORMAT_EXT: | ||||||
|          *params = palette->IntFormat; |          if (texObj) | ||||||
|  |             *params = texObj->PaletteIntFormat; | ||||||
|  |          else | ||||||
|  |             *params = ctx->Texture.PaletteIntFormat; | ||||||
|          break; |          break; | ||||||
|       case GL_COLOR_TABLE_WIDTH: |       case GL_COLOR_TABLE_WIDTH_EXT: | ||||||
|          *params = palette->Size; |          if (texObj) | ||||||
|  |             *params = texObj->PaletteSize; | ||||||
|  |          else | ||||||
|  |             *params = ctx->Texture.PaletteSize; | ||||||
|          break; |          break; | ||||||
|       case GL_COLOR_TABLE_RED_SIZE: |       case GL_COLOR_TABLE_RED_SIZE_EXT: | ||||||
|          *params = 8; |          *params = 8; | ||||||
|          break; |          break; | ||||||
|       case GL_COLOR_TABLE_GREEN_SIZE: |       case GL_COLOR_TABLE_GREEN_SIZE_EXT: | ||||||
|          *params = 8; |          *params = 8; | ||||||
|          break; |          break; | ||||||
|       case GL_COLOR_TABLE_BLUE_SIZE: |       case GL_COLOR_TABLE_BLUE_SIZE_EXT: | ||||||
|          *params = 8; |          *params = 8; | ||||||
|          break; |          break; | ||||||
|       case GL_COLOR_TABLE_ALPHA_SIZE: |       case GL_COLOR_TABLE_ALPHA_SIZE_EXT: | ||||||
|          *params = 8; |          *params = 8; | ||||||
|          break; |          break; | ||||||
|       case GL_COLOR_TABLE_LUMINANCE_SIZE: |       case GL_COLOR_TABLE_LUMINANCE_SIZE_EXT: | ||||||
|          *params = 8; |          *params = 8; | ||||||
|          break; |          break; | ||||||
|       case GL_COLOR_TABLE_INTENSITY_SIZE: |       case GL_COLOR_TABLE_INTENSITY_SIZE_EXT: | ||||||
|          *params = 8; |          *params = 8; | ||||||
|          break; |          break; | ||||||
|       default: |       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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.3 |  * Version:  3.1 | ||||||
|  * |  * | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * 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 |  * If multi-threading is enabled (-DTHREADS) then each thread has it's | ||||||
|  * own rendering context.  A thread obtains the pointer to its GLcontext |  * own rendering context.  A thread obtains the pointer to its GLcontext | ||||||
| @@ -34,34 +36,43 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef PC_HEADER | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #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 "accum.h" | ||||||
| #include "alphabuf.h" | #include "alphabuf.h" | ||||||
|  | #include "api.h" | ||||||
| #include "clip.h" | #include "clip.h" | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "cva.h" | #include "cva.h" | ||||||
| #include "depth.h" | #include "depth.h" | ||||||
| #include "dispatch.h" |  | ||||||
| #include "dlist.h" | #include "dlist.h" | ||||||
| #include "eval.h" | #include "eval.h" | ||||||
| #include "enums.h" | #include "enums.h" | ||||||
| #include "extensions.h" | #include "extensions.h" | ||||||
| #include "fog.h" | #include "fog.h" | ||||||
| #include "glapi.h" | #include "get.h" | ||||||
| #include "hash.h" | #include "hash.h" | ||||||
| #include "light.h" | #include "light.h" | ||||||
| #include "lines.h" | #include "lines.h" | ||||||
| #include "dlist.h" | #include "dlist.h" | ||||||
| #include "macros.h" | #include "macros.h" | ||||||
| #include "matrix.h" | #include "matrix.h" | ||||||
| #include "mem.h" |  | ||||||
| #include "mmath.h" | #include "mmath.h" | ||||||
| #include "pb.h" | #include "pb.h" | ||||||
| #include "pipeline.h" | #include "pipeline.h" | ||||||
| #include "points.h" | #include "points.h" | ||||||
|  | #include "pointers.h" | ||||||
| #include "quads.h" | #include "quads.h" | ||||||
| #include "shade.h" | #include "shade.h" | ||||||
| #include "simple_list.h" | #include "simple_list.h" | ||||||
| @@ -85,6 +96,40 @@ | |||||||
| #endif | #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             *****/ | /*****                  Context and Thread management             *****/ | ||||||
| @@ -113,7 +158,7 @@ static void set_thread_context( GLcontext *ctx ) { | |||||||
| #else | #else | ||||||
|  |  | ||||||
| /* One Current Context pointer for all threads in the address space */ | /* One Current Context pointer for all threads in the address space */ | ||||||
| GLcontext *_mesa_current_context = NULL; | GLcontext *CC = NULL; | ||||||
| struct immediate *CURRENT_INPUT = NULL; | struct immediate *CURRENT_INPUT = NULL; | ||||||
|  |  | ||||||
| #endif /*THREADS*/ | #endif /*THREADS*/ | ||||||
| @@ -322,9 +367,9 @@ static struct gl_shared_state *alloc_shared_state( void ) | |||||||
|    if (!ss) |    if (!ss) | ||||||
|       return NULL; |       return NULL; | ||||||
|  |  | ||||||
|    ss->DisplayList = NewHashTable(); |    ss->DisplayList = _mesa_NewHashTable(); | ||||||
|  |  | ||||||
|    ss->TexObjects = NewHashTable(); |    ss->TexObjects = _mesa_NewHashTable(); | ||||||
|  |  | ||||||
|    /* Default Texture objects */ |    /* Default Texture objects */ | ||||||
|    outOfMemory = GL_FALSE; |    outOfMemory = GL_FALSE; | ||||||
| @@ -340,9 +385,9 @@ static struct gl_shared_state *alloc_shared_state( void ) | |||||||
|    if (!ss->DisplayList || !ss->TexObjects || outOfMemory) { |    if (!ss->DisplayList || !ss->TexObjects || outOfMemory) { | ||||||
|       /* Ran out of memory at some point.  Free everything and return NULL */ |       /* Ran out of memory at some point.  Free everything and return NULL */ | ||||||
|       if (ss->DisplayList) |       if (ss->DisplayList) | ||||||
|          DeleteHashTable(ss->DisplayList); |          _mesa_DeleteHashTable(ss->DisplayList); | ||||||
|       if (ss->TexObjects) |       if (ss->TexObjects) | ||||||
|          DeleteHashTable(ss->TexObjects); |          _mesa_DeleteHashTable(ss->TexObjects); | ||||||
|       if (ss->DefaultD[1]) |       if (ss->DefaultD[1]) | ||||||
|          gl_free_texture_object(ss, ss->DefaultD[1]); |          gl_free_texture_object(ss, ss->DefaultD[1]); | ||||||
|       if (ss->DefaultD[2]) |       if (ss->DefaultD[2]) | ||||||
| @@ -365,7 +410,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss ) | |||||||
| { | { | ||||||
|    /* Free display lists */ |    /* Free display lists */ | ||||||
|    while (1) { |    while (1) { | ||||||
|       GLuint list = HashFirstEntry(ss->DisplayList); |       GLuint list = _mesa_HashFirstEntry(ss->DisplayList); | ||||||
|       if (list) { |       if (list) { | ||||||
|          gl_destroy_list(ctx, list); |          gl_destroy_list(ctx, list); | ||||||
|       } |       } | ||||||
| @@ -373,7 +418,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss ) | |||||||
|          break; |          break; | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|    DeleteHashTable(ss->DisplayList); |    _mesa_DeleteHashTable(ss->DisplayList); | ||||||
|  |  | ||||||
|    /* Free texture objects */ |    /* Free texture objects */ | ||||||
|    while (ss->TexObjectList) |    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! */ |       /* this function removes from linked list too! */ | ||||||
|       gl_free_texture_object(ss, ss->TexObjectList); |       gl_free_texture_object(ss, ss->TexObjectList); | ||||||
|    } |    } | ||||||
|    DeleteHashTable(ss->TexObjects); |    _mesa_DeleteHashTable(ss->TexObjects); | ||||||
|  |  | ||||||
|    FREE(ss); |    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++) |       for (i=0;i<n;i++) | ||||||
|          map->Points[i] = initial[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++) |       for (i=0;i<n;i++) | ||||||
|          map->Points[i] = initial[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. |  * Initialize a gl_context structure to default values. | ||||||
| @@ -586,7 +622,7 @@ static void initialize_context( GLcontext *ctx ) | |||||||
|       gl_matrix_alloc_inv( &ctx->ModelView ); |       gl_matrix_alloc_inv( &ctx->ModelView ); | ||||||
|  |  | ||||||
|       ctx->ModelViewStackDepth = 0; |       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_ctr( &ctx->ModelViewStack[i] ); | ||||||
| 	 gl_matrix_alloc_inv( &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][0] = 1.0; /* These values seem weird by make */ | ||||||
|       ctx->NearFarStack[0][1] = 0.0; /* sense mathematically. */ |       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_ctr( &ctx->ProjectionStack[i] ); | ||||||
| 	 gl_matrix_alloc_inv( &ctx->ProjectionStack[i] ); | 	 gl_matrix_alloc_inv( &ctx->ProjectionStack[i] ); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       /* Texture matrix */ |       /* Texture matrix */ | ||||||
|       for (i=0; i<MAX_TEXTURE_UNITS; i++) { |       for (i = 0; i < MAX_TEXTURE_UNITS; i++) { | ||||||
| 	 gl_matrix_ctr( &ctx->TextureMatrix[i] ); | 	 gl_matrix_ctr( &ctx->TextureMatrix[i] ); | ||||||
| 	 ctx->TextureStackDepth[i] = 0; | 	 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; | 	    ctx->TextureStack[i][j].inv = 0; | ||||||
| 	 } | 	 } | ||||||
|       } |       } | ||||||
| @@ -882,9 +918,9 @@ static void initialize_context( GLcontext *ctx ) | |||||||
|       ctx->Stencil.ZPassFunc = GL_KEEP; |       ctx->Stencil.ZPassFunc = GL_KEEP; | ||||||
|       ctx->Stencil.ZFailFunc = GL_KEEP; |       ctx->Stencil.ZFailFunc = GL_KEEP; | ||||||
|       ctx->Stencil.Ref = 0; |       ctx->Stencil.Ref = 0; | ||||||
|       ctx->Stencil.ValueMask = 0xff; |       ctx->Stencil.ValueMask = STENCIL_MAX; | ||||||
|       ctx->Stencil.Clear = 0; |       ctx->Stencil.Clear = 0; | ||||||
|       ctx->Stencil.WriteMask = 0xff; |       ctx->Stencil.WriteMask = STENCIL_MAX; | ||||||
|  |  | ||||||
|       /* Texture group */ |       /* Texture group */ | ||||||
|       ctx->Texture.CurrentUnit = 0;      /* multitexture */ |       ctx->Texture.CurrentUnit = 0;      /* multitexture */ | ||||||
| @@ -894,7 +930,14 @@ static void initialize_context( GLcontext *ctx ) | |||||||
|       for (i=0; i<MAX_TEXTURE_UNITS; i++) |       for (i=0; i<MAX_TEXTURE_UNITS; i++) | ||||||
|          init_texture_unit( ctx, 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 */ |       /* Transformation group */ | ||||||
|       ctx->Transform.MatrixMode = GL_MODELVIEW; |       ctx->Transform.MatrixMode = GL_MODELVIEW; | ||||||
| @@ -1028,6 +1071,7 @@ static void initialize_context( GLcontext *ctx ) | |||||||
|  |  | ||||||
|       /* For debug/development only */ |       /* For debug/development only */ | ||||||
|       ctx->NoRaster = getenv("MESA_NO_RASTER") ? GL_TRUE : GL_FALSE; |       ctx->NoRaster = getenv("MESA_NO_RASTER") ? GL_TRUE : GL_FALSE; | ||||||
|  |       ctx->FirstTimeCurrent = GL_TRUE; | ||||||
|  |  | ||||||
|       /* Dither disable */ |       /* Dither disable */ | ||||||
|       ctx->NoDither = getenv("MESA_NO_DITHER") ? GL_TRUE : GL_FALSE; |       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.ReadDepthSpanFloat = gl_read_depth_span_float; | ||||||
|    ctx->Driver.ReadDepthSpanInt = gl_read_depth_span_int; |    ctx->Driver.ReadDepthSpanInt = gl_read_depth_span_int; | ||||||
|  |  | ||||||
|  |     | ||||||
| #ifdef PROFILE | #ifdef PROFILE | ||||||
|    init_timings( ctx ); |    init_timings( ctx ); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #ifdef GL_VERSION_1_1 | ||||||
|    if (!alloc_proxy_textures(ctx)) { |    if (!alloc_proxy_textures(ctx)) { | ||||||
|       free_shared_state(ctx, ctx->Shared); |       free_shared_state(ctx, ctx->Shared); | ||||||
|       FREE(ctx->VB); |       FREE(ctx->VB); | ||||||
| @@ -1300,11 +1346,10 @@ GLcontext *gl_create_context( GLvisual *visual, | |||||||
|       FREE(ctx); |       FREE(ctx); | ||||||
|       return NULL; |       return NULL; | ||||||
|    } |    } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|    /* setup API dispatch tables */ |    gl_init_api_function_pointers( ctx ); | ||||||
|    _mesa_init_exec_table( &ctx->Exec ); |    ctx->API = ctx->Exec;   /* GL_EXECUTE is default */ | ||||||
|    _mesa_init_dlist_table( &ctx->Save ); |  | ||||||
|    ctx->CurrentDispatch = &ctx->Exec; |  | ||||||
|  |  | ||||||
|    return ctx; |    return ctx; | ||||||
| } | } | ||||||
| @@ -1325,9 +1370,8 @@ void gl_context_initialize( GLcontext *ctx ) | |||||||
| void gl_destroy_context( GLcontext *ctx ) | void gl_destroy_context( GLcontext *ctx ) | ||||||
| { | { | ||||||
|    if (ctx) { |    if (ctx) { | ||||||
|  |  | ||||||
|       GLuint i; |  | ||||||
|       struct gl_shine_tab *s, *tmps; |       struct gl_shine_tab *s, *tmps; | ||||||
|  |       GLuint i, j; | ||||||
|  |  | ||||||
| #ifdef PROFILE | #ifdef PROFILE | ||||||
|       if (getenv("MESA_PROFILE")) { |       if (getenv("MESA_PROFILE")) { | ||||||
| @@ -1336,13 +1380,19 @@ void gl_destroy_context( GLcontext *ctx ) | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|       gl_matrix_dtr( &ctx->ModelView ); |       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->ModelViewStack[i] ); | ||||||
|       } |       } | ||||||
|       gl_matrix_dtr( &ctx->ProjectionMatrix ); |       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] ); | 	 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 ); |       FREE( ctx->PB ); | ||||||
|  |  | ||||||
| @@ -1418,8 +1468,8 @@ void gl_destroy_context( GLcontext *ctx ) | |||||||
|       FREE( (void *) ctx ); |       FREE( (void *) ctx ); | ||||||
|  |  | ||||||
| #ifndef THREADS | #ifndef THREADS | ||||||
|       if (ctx == _mesa_current_context) { |       if (ctx==CC) { | ||||||
|          _mesa_current_context = NULL; |          CC = NULL; | ||||||
| 	 CURRENT_INPUT = NULL; | 	 CURRENT_INPUT = NULL; | ||||||
|       } |       } | ||||||
| #endif | #endif | ||||||
| @@ -1488,42 +1538,52 @@ void gl_destroy_framebuffer( GLframebuffer *buffer ) | |||||||
| /* | /* | ||||||
|  * Set the current context, binding the given frame buffer to the context. |  * 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 |    /* Flush the old context | ||||||
|     */ |     */ | ||||||
|    if (oldCtx) { |    if (CC) { | ||||||
|       ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(oldCtx, "gl_make_current"); |       ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(CC, "gl_make_current"); | ||||||
|    } |    } | ||||||
|  |  | ||||||
| #ifdef THREADS | #ifdef THREADS | ||||||
|    /* TODO: unbind old buffer from context? */ |    /* TODO: unbind old buffer from context? */ | ||||||
|    set_thread_context( newCtx ); |    set_thread_context( ctx ); | ||||||
| #else | #else | ||||||
|    if (oldCtx && oldCtx->Buffer) { |    if (CC && CC->Buffer) { | ||||||
|       /* unbind frame buffer from context */ |       /* unbind frame buffer from context */ | ||||||
|       oldCtx->Buffer = NULL; |       CC->Buffer = NULL; | ||||||
|    } |    } | ||||||
|    _mesa_current_context = newCtx; |    CC = ctx; | ||||||
|    if (newCtx) { |    if (ctx) { | ||||||
|       SET_IMMEDIATE(newCtx, newCtx->input); |       SET_IMMEDIATE(ctx, ctx->input); | ||||||
|    } |    } | ||||||
| #endif | #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 (MESA_VERBOSE) fprintf(stderr, "gl_make_current()\n"); | ||||||
|  |  | ||||||
|    if (newCtx && buffer) { |    if (ctx && buffer) { | ||||||
|       /* TODO: check if newCtx and buffer's visual match??? */ |       /* TODO: check if ctx and buffer's visual match??? */ | ||||||
|       newCtx->Buffer = buffer;      /* Bind the frame buffer to the context */ |       ctx->Buffer = buffer;      /* Bind the frame buffer to the context */ | ||||||
|       newCtx->NewState = NEW_ALL;   /* just to be safe */ |       ctx->NewState = NEW_ALL;   /* just to be safe */ | ||||||
|       gl_update_state( newCtx ); |       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 | #ifdef THREADS | ||||||
|    return gl_get_thread_context(); |    return gl_get_thread_context(); | ||||||
| #else | #else | ||||||
|    return _mesa_current_context; |    return CC; | ||||||
| #endif | #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. |  * Someday a GLS library or OpenGL-like debugger may call this function | ||||||
|  * It'll either be the immediate-mode execute dispatcher or the |  * to register it's own set of API entry points. | ||||||
|  * display list compile dispatcher. |  * 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 * | void gl_set_api_table( GLcontext *ctx, const struct gl_api_table *api ) | ||||||
| _mesa_get_dispatch(GLcontext *ctx) |  | ||||||
| { | { | ||||||
|    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                     *****/ | /*****                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                       *****/ | /*****                   State update logic                       *****/ | ||||||
| /**********************************************************************/ | /**********************************************************************/ | ||||||
| @@ -1925,21 +1998,17 @@ static void update_pixel_masking( GLcontext *ctx ) | |||||||
| static void update_fog_mode( GLcontext *ctx ) | static void update_fog_mode( GLcontext *ctx ) | ||||||
| { | { | ||||||
|    int old_mode = ctx->FogMode; |    int old_mode = ctx->FogMode; | ||||||
|  |    ctx->FogMode = FOG_NONE; | ||||||
|  |  | ||||||
|    if (ctx->Fog.Enabled) { |    if (ctx->Fog.Enabled) { | ||||||
|       if (ctx->Texture.Enabled) |       ctx->FogMode = FOG_VERTEX; | ||||||
|          ctx->FogMode = FOG_FRAGMENT; |  | ||||||
|       else if (ctx->Hint.Fog == GL_NICEST) |  | ||||||
|          ctx->FogMode = FOG_FRAGMENT; |  | ||||||
|       else |  | ||||||
|          ctx->FogMode = FOG_VERTEX; |  | ||||||
|  |  | ||||||
|       if (ctx->Driver.GetParameteri) |       if (ctx->Texture.Enabled || ctx->Hint.Fog == GL_NICEST) | ||||||
|          if ((ctx->Driver.GetParameteri)( ctx, DD_HAVE_HARDWARE_FOG )) | 	 ctx->FogMode = FOG_FRAGMENT; | ||||||
|             ctx->FogMode = FOG_FRAGMENT; |  | ||||||
|    } |       if ( ctx->Driver.GetParameteri &&  | ||||||
|    else { | 	   ctx->Driver.GetParameteri( ctx, DD_HAVE_HARDWARE_FOG ) ) | ||||||
|       ctx->FogMode = FOG_NONE; | 	 ctx->FogMode = FOG_FRAGMENT; | ||||||
|    } |    } | ||||||
|     |     | ||||||
|    if (old_mode != ctx->FogMode) |    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; |       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) { |    if (ctx->NewState & NEW_TEXTURE_MATRIX) { | ||||||
|       ctx->Enabled &= ~(ENABLE_TEXMAT0|ENABLE_TEXMAT1); |       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; |       ctx->Texture.NeedNormals = GL_FALSE; | ||||||
|       gl_update_dirty_texobjs(ctx); |       gl_update_dirty_texobjs(ctx); | ||||||
|       ctx->Enabled &= ~(ENABLE_TEXGEN0|ENABLE_TEXGEN1); |       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_DRIVER_STATE|NEW_USER_CLIP| | ||||||
| 			 NEW_POLYGON)) | 			 NEW_POLYGON)) | ||||||
|       gl_update_clipmask(ctx); |       gl_update_clipmask(ctx); | ||||||
| @@ -2272,6 +2333,7 @@ void gl_update_state( GLcontext *ctx ) | |||||||
|    if (ctx->NewState & (NEW_LIGHTING| |    if (ctx->NewState & (NEW_LIGHTING| | ||||||
| 			NEW_RASTER_OPS| | 			NEW_RASTER_OPS| | ||||||
| 			NEW_TEXTURING| | 			NEW_TEXTURING| | ||||||
|  | 			NEW_TEXTURE_ENABLE| | ||||||
| 			NEW_TEXTURE_ENV| | 			NEW_TEXTURE_ENV| | ||||||
| 			NEW_POLYGON| | 			NEW_POLYGON| | ||||||
| 			NEW_DRVSTATE0| | 			NEW_DRVSTATE0| | ||||||
| @@ -2367,7 +2429,7 @@ void gl_update_state( GLcontext *ctx ) | |||||||
|       oldnorm = ctx->NeedEyeNormals; |       oldnorm = ctx->NeedEyeNormals; | ||||||
|  |  | ||||||
|       ctx->NeedNormals = (ctx->Light.Enabled || ctx->Texture.NeedNormals); |       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->Point.Attenuated); | ||||||
|       ctx->NeedEyeNormals = GL_FALSE; |       ctx->NeedEyeNormals = GL_FALSE; | ||||||
|  |  | ||||||
| @@ -2423,7 +2485,6 @@ void gl_update_state( GLcontext *ctx ) | |||||||
|       gl_update_normal_transform( ctx ); |       gl_update_normal_transform( ctx ); | ||||||
|    } |    } | ||||||
|  |  | ||||||
|  finished: |  | ||||||
|    gl_update_pipelines(ctx); |    gl_update_pipelines(ctx); | ||||||
|    ctx->NewState = 0; |    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 |  * Mesa 3-D graphics library | ||||||
| @@ -659,6 +659,7 @@ struct dd_function_table { | |||||||
|    void (*Lightfv)(GLcontext *ctx, GLenum light, |    void (*Lightfv)(GLcontext *ctx, GLenum light, | ||||||
| 		   GLenum pname, const GLfloat *params, GLint nparams ); | 		   GLenum pname, const GLfloat *params, GLint nparams ); | ||||||
|    void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params); |    void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params); | ||||||
|  |    void (*LogicOpcode)(GLcontext *ctx, GLenum opcode); | ||||||
|    void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode); |    void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode); | ||||||
|    void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); |    void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h); | ||||||
|    void (*ShadeModel)(GLcontext *ctx, GLenum mode); |    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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.3 |  * Version:  3.1 | ||||||
|  *  |  *  | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  *  |  *  | ||||||
| @@ -25,10 +25,19 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef PC_HEADER | #ifdef PC_HEADER | ||||||
| #include "all.h" | #include "all.h" | ||||||
| #else | #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 "context.h" | ||||||
| #include "drawpix.h" | #include "drawpix.h" | ||||||
| #include "feedback.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 |  * Return:  GL_TRUE if success, GL_FALSE if slow path must be used instead | ||||||
|  */ |  */ | ||||||
| static GLboolean | GLboolean gl_direct_DrawPixels( GLcontext *ctx, | ||||||
| simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, |                                 const struct gl_pixelstore_attrib *unpack, | ||||||
|                    GLsizei width, GLsizei height, GLenum format, GLenum type, |                                 GLsizei width, GLsizei height, | ||||||
|                    const GLvoid *pixels ) |                                 GLenum format, GLenum type, | ||||||
|  |                                 const GLvoid *pixels ) | ||||||
| { | { | ||||||
|    const struct gl_pixelstore_attrib *unpack = &ctx->Unpack; |  | ||||||
|    GLubyte rgb[MAX_WIDTH][3]; |    GLubyte rgb[MAX_WIDTH][3]; | ||||||
|    GLubyte rgba[MAX_WIDTH][4]; |    GLubyte rgba[MAX_WIDTH][4]; | ||||||
|  |  | ||||||
| @@ -61,6 +77,9 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | |||||||
| 						  GL_FALSE); | 						  GL_FALSE); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    if (ctx->RenderMode != GL_RENDER) | ||||||
|  |       return GL_FALSE; | ||||||
|  |  | ||||||
|    if (!ctx->Current.RasterPosValid) { |    if (!ctx->Current.RasterPosValid) { | ||||||
|       /* no-op */ |       /* no-op */ | ||||||
|       return GL_TRUE; |       return GL_TRUE; | ||||||
| @@ -71,10 +90,12 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | |||||||
|    } |    } | ||||||
|  |  | ||||||
|    /* see if device driver can do the drawpix */ |    /* see if device driver can do the drawpix */ | ||||||
|    if (ctx->Driver.DrawPixels |    if (ctx->Driver.DrawPixels) { | ||||||
|        && (*ctx->Driver.DrawPixels)(ctx, x, y, width, height, format, type, |       GLint x = (GLint) (ctx->Current.RasterPos[0] + 0.5F); | ||||||
|                                     unpack, pixels)) { |       GLint y = (GLint) (ctx->Current.RasterPos[1] + 0.5F); | ||||||
|       return GL_TRUE; |       if ((*ctx->Driver.DrawPixels)(ctx, x, y, width, height, format, type, | ||||||
|  |                                     unpack, pixels)) | ||||||
|  |          return GL_TRUE; | ||||||
|    } |    } | ||||||
|  |  | ||||||
|    if ((ctx->RasterMask&(~(SCISSOR_BIT|WINCLIP_BIT)))==0 |    if ((ctx->RasterMask&(~(SCISSOR_BIT|WINCLIP_BIT)))==0 | ||||||
| @@ -88,8 +109,8 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | |||||||
|        && !unpack->SwapBytes |        && !unpack->SwapBytes | ||||||
|        && !unpack->LsbFirst) { |        && !unpack->LsbFirst) { | ||||||
|  |  | ||||||
|       GLint destX = x; |       GLint destX = (GLint) (ctx->Current.RasterPos[0] + 0.5F); | ||||||
|       GLint destY = y; |       GLint destY = (GLint) (ctx->Current.RasterPos[1] + 0.5F); | ||||||
|       GLint drawWidth = width;           /* actual width drawn */ |       GLint drawWidth = width;           /* actual width drawn */ | ||||||
|       GLint drawHeight = height;         /* actual height drawn */ |       GLint drawHeight = height;         /* actual height drawn */ | ||||||
|       GLint skipPixels = unpack->SkipPixels; |       GLint skipPixels = unpack->SkipPixels; | ||||||
| @@ -346,9 +367,10 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | |||||||
|          return GL_FALSE; |          return GL_FALSE; | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|  |    else { | ||||||
|    /* can't do a simple draw, have to use slow path */ |       /* can't do direct render, have to use slow path */ | ||||||
|    return GL_FALSE; |       return GL_FALSE; | ||||||
|  |    } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -356,43 +378,99 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y, | |||||||
| /* | /* | ||||||
|  * Do glDrawPixels of index pixels. |  * Do glDrawPixels of index pixels. | ||||||
|  */ |  */ | ||||||
| static void | static void draw_index_pixels( GLcontext *ctx, GLint x, GLint y, | ||||||
| draw_index_pixels( GLcontext *ctx, GLint x, GLint y, |                                const struct gl_image *image ) | ||||||
|                    GLsizei width, GLsizei height, |  | ||||||
|                    GLenum type, const GLvoid *pixels ) |  | ||||||
| { | { | ||||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; |    GLint width, height, widthInBytes; | ||||||
|    const GLint desty = y; |    const GLint desty = y; | ||||||
|    GLint row, drawWidth; |    GLint i, j; | ||||||
|    GLdepth zspan[MAX_WIDTH]; |    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 */ |    /* Fragment depth values */ | ||||||
|    if (ctx->Depth.Test) { |    if (ctx->Depth.Test || ctx->Fog.Enabled) { | ||||||
|       GLdepth zval = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE); |       GLdepth zval = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE); | ||||||
|       GLint i; |       for (i=0;i<width;i++) { | ||||||
|       for (i = 0; i < drawWidth; i++) { |  | ||||||
| 	 zspan[i] = zval; | 	 zspan[i] = zval; | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|  |  | ||||||
|    /* |    /* process the image row by row */ | ||||||
|     * General solution |    for (i=0;i<height;i++,y++) { | ||||||
|     */ |       GLuint ispan[MAX_WIDTH]; | ||||||
|    for (row = 0; row < height; row++, y++) { |  | ||||||
|       GLuint indexes[MAX_WIDTH]; |       /* convert to uints */ | ||||||
|       const GLvoid *source = gl_pixel_addr_in_image(&ctx->Unpack, |       switch (image->Type) { | ||||||
|                     pixels, width, height, GL_COLOR_INDEX, type, 0, row, 0); | 	 case GL_UNSIGNED_BYTE: | ||||||
|       _mesa_unpack_index_span(ctx, drawWidth, GL_UNSIGNED_INT, indexes, | 	    { | ||||||
|                               type, source, &ctx->Unpack, GL_TRUE); | 	       GLubyte *src = (GLubyte *) image->Data + i * width; | ||||||
|       if (zoom) { | 	       for (j=0;j<width;j++) { | ||||||
|          gl_write_zoomed_index_span(ctx, drawWidth, x, y, zspan, indexes, desty); | 		  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 { |       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 |  * Do glDrawPixels of stencil image.  The image datatype may either | ||||||
|  * be GLubyte or GLbitmap. |  * be GLubyte or GLbitmap. | ||||||
|  */ |  */ | ||||||
| static void  | static void draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y, | ||||||
| draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y, |                                  const struct gl_image *image ) | ||||||
|                      GLsizei width, GLsizei height, |  | ||||||
|                      GLenum type, const GLvoid *pixels ) |  | ||||||
| { | { | ||||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; |    GLint widthInBytes, width, height; | ||||||
|    const GLint desty = y; |    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 && |    if (image->Type != GL_BYTE && | ||||||
|        type != GL_UNSIGNED_BYTE && |        image->Type != GL_UNSIGNED_BYTE && | ||||||
|        type != GL_SHORT && |        image->Type != GL_SHORT && | ||||||
|        type != GL_UNSIGNED_SHORT && |        image->Type != GL_UNSIGNED_SHORT && | ||||||
|        type != GL_INT && |        image->Type != GL_INT && | ||||||
|        type != GL_UNSIGNED_INT && |        image->Type != GL_UNSIGNED_INT && | ||||||
|        type != GL_FLOAT && |        image->Type != GL_FLOAT && | ||||||
|        type != GL_BITMAP) { |        image->Type != GL_BITMAP) { | ||||||
|       gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels(stencil type)"); |       gl_error( ctx, GL_INVALID_OPERATION, "glDrawPixels(stencil type)"); | ||||||
|       return; |       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++) { |    if (image->Type == GL_UNSIGNED_BYTE) | ||||||
|       GLstencil values[MAX_WIDTH]; |       widthInBytes = image->Width; | ||||||
|       GLenum destType = (sizeof(GLstencil) == sizeof(GLubyte)) |    else | ||||||
|                       ? GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT; |       widthInBytes = (image->Width + 7) / 8; | ||||||
|       const GLvoid *source = gl_pixel_addr_in_image(&ctx->Unpack, |    width = image->Width; | ||||||
|                     pixels, width, height, GL_COLOR_INDEX, type, 0, row, 0); |    height = image->Height; | ||||||
|       _mesa_unpack_index_span(ctx, drawWidth, destType, values, |  | ||||||
|                               type, source, &ctx->Unpack, GL_TRUE); |  | ||||||
|  |  | ||||||
|       if (zoom) { |    /* process the image row by row */ | ||||||
|          gl_write_zoomed_stencil_span( ctx, (GLuint) drawWidth, x, y, |    for (i=0;i<height;i++,y++) { | ||||||
|                                        values, desty ); |       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 { |       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. |  * Do a glDrawPixels of depth values. | ||||||
|  */ |  */ | ||||||
| static void | static void draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | ||||||
| draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, |                                const struct gl_image *image ) | ||||||
|                    GLsizei width, GLsizei height, |  | ||||||
|                    GLenum type, const GLvoid *pixels ) |  | ||||||
| { | { | ||||||
|    const GLboolean bias_or_scale = ctx->Pixel.DepthBias!=0.0 || ctx->Pixel.DepthScale!=1.0; |    GLint width, height; | ||||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; |  | ||||||
|    const GLint desty = y; |    const GLint desty = y; | ||||||
|    GLubyte rgba[MAX_WIDTH][4]; |    GLubyte rgba[MAX_WIDTH][4]; | ||||||
|    GLuint ispan[MAX_WIDTH]; |    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 |    assert(image); | ||||||
|        && type != GL_UNSIGNED_BYTE |    assert(image->Format == GL_DEPTH_COMPONENT); | ||||||
|        && 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; |  | ||||||
|    } |  | ||||||
|  |  | ||||||
|    /* Colors or indexes */ |    width = image->Width; | ||||||
|  |    height = image->Height; | ||||||
|  |  | ||||||
|  |    /* Color or index */ | ||||||
|    if (ctx->Visual->RGBAflag) { |    if (ctx->Visual->RGBAflag) { | ||||||
|       GLint r = (GLint) (ctx->Current.RasterColor[0] * 255.0F); |       GLint r = (GLint) (ctx->Current.RasterColor[0] * 255.0F); | ||||||
|       GLint g = (GLint) (ctx->Current.RasterColor[1] * 255.0F); |       GLint g = (GLint) (ctx->Current.RasterColor[1] * 255.0F); | ||||||
|       GLint b = (GLint) (ctx->Current.RasterColor[2] * 255.0F); |       GLint b = (GLint) (ctx->Current.RasterColor[2] * 255.0F); | ||||||
|       GLint a = (GLint) (ctx->Current.RasterColor[3] * 255.0F); |       GLint a = (GLint) (ctx->Current.RasterColor[3] * 255.0F); | ||||||
|       GLint i; |       GLint i; | ||||||
|       for (i = 0; i < drawWidth; i++) { |       for (i=0; i<width; i++) { | ||||||
|          rgba[i][RCOMP] = r; |          rgba[i][RCOMP] = r; | ||||||
|          rgba[i][GCOMP] = g; |          rgba[i][GCOMP] = g; | ||||||
|          rgba[i][BCOMP] = b; |          rgba[i][BCOMP] = b; | ||||||
| @@ -487,36 +597,34 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | |||||||
|    } |    } | ||||||
|    else { |    else { | ||||||
|       GLint i; |       GLint i; | ||||||
|       for (i = 0; i < drawWidth; i++) { |       for (i=0;i<width;i++) { | ||||||
| 	 ispan[i] = ctx->Current.RasterIndex; | 	 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) { |        && !bias_or_scale && !zoom && ctx->Visual->RGBAflag) { | ||||||
|       /* Special case: directly write 16-bit depth values */ |       /* Special case: directly write 16-bit depth values */ | ||||||
|       GLint row; |       GLint j; | ||||||
|       for (row = 0; row < height; row++, y++) { |       for (j=0;j<height;j++,y++) { | ||||||
|          const GLdepth *zptr = gl_pixel_addr_in_image(&ctx->Unpack, |          GLdepth *zptr = (GLdepth *) image->Data + j * width; | ||||||
|                 pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0); |  | ||||||
|          gl_write_rgba_span( ctx, width, x, y, zptr, rgba, GL_BITMAP ); |          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) { |        && !bias_or_scale && !zoom && ctx->Visual->RGBAflag) { | ||||||
|       /* Special case: directly write 32-bit depth values */ |       /* 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. */ |       /* Compute shift value to scale 32-bit uints down to depth values. */ | ||||||
|       GLuint shift = 0; |       GLuint shift = 0; | ||||||
|       GLuint max = MAX_DEPTH; |       GLuint max = MAX_DEPTH; | ||||||
|       while ((max & 0x80000000) == 0) { |       while ((max&0x80000000)==0) { | ||||||
|          max = max << 1; |          max = max << 1; | ||||||
|          shift++; |          shift++; | ||||||
|       } |       } | ||||||
|       for (row = 0; row < height; row++, y++) { |       for (j=0;j<height;j++,y++) { | ||||||
|          GLdepth zspan[MAX_WIDTH]; |          GLdepth zspan[MAX_WIDTH]; | ||||||
|          const GLdepth *zptr = gl_pixel_addr_in_image(&ctx->Unpack, |          GLuint *zptr = (GLuint *) image->Data + j * width; | ||||||
|                 pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0); |  | ||||||
|          for (i=0;i<width;i++) { |          for (i=0;i<width;i++) { | ||||||
|             zspan[i] = zptr[i] >> shift; |             zspan[i] = zptr[i] >> shift; | ||||||
|          } |          } | ||||||
| @@ -524,30 +632,72 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y, | |||||||
|       } |       } | ||||||
|    } |    } | ||||||
|    else { |    else { | ||||||
|       /* General case */ |       /* General case (slower) */ | ||||||
|       GLint row; |       GLint i, j; | ||||||
|       for (row = 0; row < height; row++, y++) { |  | ||||||
|  |       /* process image row by row */ | ||||||
|  |       for (i=0;i<height;i++,y++) { | ||||||
|  |          GLfloat depth[MAX_WIDTH]; | ||||||
|          GLdepth zspan[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); |          switch (image->Type) { | ||||||
|          _mesa_unpack_depth_span( ctx, drawWidth, zspan, type, src, |             case GL_UNSIGNED_SHORT: | ||||||
|                                   &ctx->Unpack, GL_TRUE ); |                { | ||||||
|  |                   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 (ctx->Visual->RGBAflag) { | ||||||
|             if (zoom) { |             if (zoom) { | ||||||
|                gl_write_zoomed_rgba_span(ctx, width, x, y, zspan, |                gl_write_zoomed_rgba_span( ctx, width, x, y, zspan, | ||||||
|                                          (const GLubyte (*)[4])rgba, desty); |                                           (const GLubyte (*)[4])rgba, desty ); | ||||||
|             } |             } | ||||||
|             else { |             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 { |          else { | ||||||
|             if (zoom) { |             if (zoom) { | ||||||
|                gl_write_zoomed_index_span(ctx, width, x, y, zspan, |                gl_write_zoomed_index_span( ctx, width, x, y, zspan, | ||||||
|                                           ispan, GL_BITMAP); |                                            ispan, GL_BITMAP ); | ||||||
|             } |             } | ||||||
|             else { |             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. |  * Do glDrawPixels of RGBA pixels. | ||||||
|  */ |  */ | ||||||
| static void | static void draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y, | ||||||
| draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y, |                               const struct gl_image *image ) | ||||||
|                   GLsizei width, GLsizei height, |  | ||||||
|                   GLenum format, GLenum type, const GLvoid *pixels ) |  | ||||||
| { | { | ||||||
|    const struct gl_pixelstore_attrib *unpack = &ctx->Unpack; |    GLint width, height; | ||||||
|    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; |    GLint i, j; | ||||||
|    const GLint desty = y; |    const GLint desty = y; | ||||||
|    GLdepth zspan[MAX_WIDTH]; |    GLdepth zspan[MAX_WIDTH]; | ||||||
|    GLboolean quickDraw; |    GLboolean quickDraw; | ||||||
|  |    const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0; | ||||||
|  |  | ||||||
|  |    assert(image); | ||||||
|  |  | ||||||
|    /* Try an optimized glDrawPixels first */ |    /* 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; |       return; | ||||||
|  |  | ||||||
|  |    width = image->Width; | ||||||
|  |    height = image->Height; | ||||||
|  |  | ||||||
|    /* Fragment depth values */ |    /* Fragment depth values */ | ||||||
|    if (ctx->Depth.Test) { |    if (ctx->Depth.Test || ctx->Fog.Enabled) { | ||||||
|       /* fill in array of z values */ |       /* fill in array of z values */ | ||||||
|       GLdepth z = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE); |       GLdepth z = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE); | ||||||
|       GLint i; |  | ||||||
|       for (i=0;i<width;i++) { |       for (i=0;i<width;i++) { | ||||||
| 	 zspan[i] = z; | 	 zspan[i] = z; | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
|  |  | ||||||
|  |    if (ctx->RasterMask==0 && !zoom && x>=0 && y>=0 | ||||||
|    if (ctx->RasterMask == 0 && !zoom |        && x+width<=ctx->Buffer->Width && y+height<=ctx->Buffer->Height) { | ||||||
|        && x >= 0 && y >= 0 |  | ||||||
|        && x + width <= ctx->Buffer->Width |  | ||||||
|        && y + height <= ctx->Buffer->Height) { |  | ||||||
|       quickDraw = GL_TRUE; |       quickDraw = GL_TRUE; | ||||||
|    } |    } | ||||||
|    else { |    else { | ||||||
|       quickDraw = GL_FALSE; |       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]; |       GLubyte rgba[MAX_WIDTH][4]; | ||||||
|       GLint row; |       GLfloat  rf[MAX_WIDTH]; | ||||||
|       if (width > MAX_WIDTH) |       GLfloat  gf[MAX_WIDTH]; | ||||||
|          width = MAX_WIDTH; |       GLfloat  bf[MAX_WIDTH]; | ||||||
|       for (row = 0; row < height; row++, y++) { |       DEFARRAY(GLfloat,af,MAX_WIDTH); | ||||||
|          const GLvoid *source = gl_pixel_addr_in_image(unpack, |       CHECKARRAY(af,return); | ||||||
|                   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); |  | ||||||
|  |  | ||||||
|  |       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) { |          if (quickDraw) { | ||||||
|             (*ctx->Driver.WriteRGBASpan)( ctx, width, x, y, |             (*ctx->Driver.WriteRGBASpan)( ctx, width, x, y,  | ||||||
|                                           (CONST GLubyte (*)[]) rgba, NULL); | 					  (const GLubyte (*)[4])rgba, NULL); | ||||||
|          } |          } | ||||||
|          else if (zoom) { |          else if (zoom) { | ||||||
|             gl_write_zoomed_rgba_span( ctx, width, x, y, zspan,  |             gl_write_zoomed_rgba_span( ctx, width, x, y, zspan,  | ||||||
| 				       (CONST GLubyte (*)[]) rgba, desty ); | 				       (const GLubyte (*)[4])rgba, desty ); | ||||||
|          } |          } | ||||||
|          else { |          else { | ||||||
|             gl_write_rgba_span( ctx, (GLuint) width, x, y, zspan, rgba, GL_BITMAP); |             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 |  * Execute glDrawPixels | ||||||
|  */ |  */ | ||||||
| void | void gl_DrawPixels( GLcontext* ctx, struct gl_image *image ) | ||||||
| _mesa_DrawPixels( GLsizei width, GLsizei height, |  | ||||||
|                   GLenum format, GLenum type, const GLvoid *pixels ) |  | ||||||
| { | { | ||||||
|    GET_CURRENT_CONTEXT(ctx); |  | ||||||
|    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glDrawPixels"); |    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glDrawPixels"); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    if (gl_image_error_test( ctx, image, "glDrawPixels" )) | ||||||
|  |       return; | ||||||
|  |  | ||||||
|    if (ctx->RenderMode==GL_RENDER) { |    if (ctx->RenderMode==GL_RENDER) { | ||||||
|       GLint x, y; |       GLint x, y; | ||||||
|       if (!pixels || !ctx->Current.RasterPosValid) { |       if (!ctx->Current.RasterPosValid) { | ||||||
| 	 return; | 	 return; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       x = (GLint) (ctx->Current.RasterPos[0] + 0.5F); |       x = (GLint) (ctx->Current.RasterPos[0] + 0.5F); | ||||||
|       y = (GLint) (ctx->Current.RasterPos[1] + 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: | 	 case GL_STENCIL_INDEX: | ||||||
| 	    draw_stencil_pixels( ctx, x, y, width, height, type, pixels ); | 	    draw_stencil_pixels( ctx, x, y, image ); | ||||||
| 	    break; | 	    break; | ||||||
| 	 case GL_DEPTH_COMPONENT: | 	 case GL_DEPTH_COMPONENT: | ||||||
| 	    draw_depth_pixels( ctx, x, y, width, height, type, pixels ); | 	    draw_depth_pixels( ctx, x, y, image ); | ||||||
| 	    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); |  | ||||||
| 	    break; | 	    break; | ||||||
| 	 case GL_RED: | 	 case GL_RED: | ||||||
| 	 case GL_GREEN: | 	 case GL_GREEN: | ||||||
| 	 case GL_BLUE: | 	 case GL_BLUE: | ||||||
| 	 case GL_ALPHA: | 	 case GL_ALPHA: | ||||||
|  | 	 case GL_RGB: | ||||||
| 	 case GL_LUMINANCE: | 	 case GL_LUMINANCE: | ||||||
| 	 case GL_LUMINANCE_ALPHA: | 	 case GL_LUMINANCE_ALPHA: | ||||||
| 	 case GL_RGB: |  | ||||||
|          case GL_BGR: |  | ||||||
| 	 case GL_RGBA: | 	 case GL_RGBA: | ||||||
| 	 case GL_BGRA: |             draw_rgba_pixels( ctx, x, y, image ); | ||||||
| 	 case GL_ABGR_EXT: |  | ||||||
|             draw_rgba_pixels(ctx, x, y, width, height, format, type, pixels); |  | ||||||
| 	    break; | 	    break; | ||||||
| 	 default: | 	 default: | ||||||
| 	    gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels(format)" ); | 	    gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels" ); | ||||||
|             return; |             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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.3 |  * Version:  3.1 | ||||||
|  *  |  *  | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * 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. |  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | #ifndef XFree86Server | ||||||
| #ifdef PC_HEADER | #include <stdlib.h> | ||||||
| #include "all.h" | #include <string.h> | ||||||
| #else | #else | ||||||
| #include "glheader.h" | #include "GL/xf86glx.h" | ||||||
| #include "enums.h" |  | ||||||
| #include "mem.h" |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #include "GL/gl.h" | ||||||
|  | #include "enums.h" | ||||||
|  | #include "macros.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| typedef struct {  | typedef struct {  | ||||||
|    const char *c;  |    const char *c;  | ||||||
| @@ -795,8 +797,8 @@ enum_elt all_enums[] = | |||||||
|    { "GL_NATIVE_GRAPHICS_HANDLE_PGI", 107010 }, |    { "GL_NATIVE_GRAPHICS_HANDLE_PGI", 107010 }, | ||||||
|  |  | ||||||
|    /* GL_EXT_compiled_vertex_array */ |    /* GL_EXT_compiled_vertex_array */ | ||||||
|    { "GL_ARRAY_ELEMENT_LOCK_FIRST_SGI", 0x81A8}, |    { "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", 0x81A8}, | ||||||
|    { "GL_ARRAY_ELEMENT_LOCK_COUNT_SGI", 0x81A9}, |    { "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9}, | ||||||
|  |  | ||||||
|    /* GL_EXT_clip_volume_hint */ |    /* GL_EXT_clip_volume_hint */ | ||||||
|    { "GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0} |    { "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 |  * Mesa 3-D graphics library | ||||||
|  * Version:  3.3 |  * Version:  3.1 | ||||||
|  *  |  *  | ||||||
|  * Copyright (C) 1999  Brian Paul   All Rights Reserved. |  * Copyright (C) 1999  Brian Paul   All Rights Reserved. | ||||||
|  *  |  *  | ||||||
| @@ -25,16 +25,16 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef PC_HEADER | #ifndef XFree86Server | ||||||
| #include "all.h" | #include <stdlib.h> | ||||||
|  | #include <stdio.h> | ||||||
| #else | #else | ||||||
| #include "glheader.h" | #include "GL/xf86glx.h" | ||||||
|  | #endif | ||||||
| #include "context.h" | #include "context.h" | ||||||
| #include "extensions.h" | #include "extensions.h" | ||||||
| #include "mem.h" |  | ||||||
| #include "simple_list.h" | #include "simple_list.h" | ||||||
| #include "types.h" | #include "types.h" | ||||||
| #endif |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #define MAX_EXT_NAMELEN 80 | #define MAX_EXT_NAMELEN 80 | ||||||
| @@ -62,7 +62,7 @@ static struct { int enabled; const char *name; } default_extensions[] = { | |||||||
|    { DEFAULT_ON,     "GL_EXT_texture3D" }, |    { DEFAULT_ON,     "GL_EXT_texture3D" }, | ||||||
|    { ALWAYS_ENABLED, "GL_MESA_window_pos" }, |    { ALWAYS_ENABLED, "GL_MESA_window_pos" }, | ||||||
|    { ALWAYS_ENABLED, "GL_MESA_resize_buffers" }, |    { 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_rescale_normal" }, | ||||||
|    { ALWAYS_ENABLED, "GL_EXT_abgr" }, |    { ALWAYS_ENABLED, "GL_EXT_abgr" }, | ||||||
|    { ALWAYS_ENABLED, "GL_SGIS_texture_edge_clamp" }, |    { 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" }, |    { ALWAYS_ENABLED, "GL_NV_texgen_reflection" }, | ||||||
|    { DEFAULT_ON,     "GL_PGI_misc_hints" }, |    { DEFAULT_ON,     "GL_PGI_misc_hints" }, | ||||||
|    { DEFAULT_ON,     "GL_EXT_compiled_vertex_array" }, |    { DEFAULT_ON,     "GL_EXT_compiled_vertex_array" }, | ||||||
|    { DEFAULT_OFF,    "GL_EXT_vertex_array_set" }, |  | ||||||
|    { DEFAULT_ON,     "GL_EXT_clip_volume_hint" }, |    { 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)  |       if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0)  | ||||||
| 	 break; | 	 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 );       |       if (i->notify) i->notify( ctx, state );       | ||||||
|       i->enabled = state; |       i->enabled = state; | ||||||
|    } |    } | ||||||
|  |  | ||||||
|  |    if (MESA_VERBOSE&VERBOSE_EXTENSIONS) | ||||||
|  |       fprintf(stderr, "extension %s, state %d\n", name, i->enabled); | ||||||
|  |  | ||||||
|    return 0; |    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 ) | void gl_extensions_dtr( GLcontext *ctx ) | ||||||
| { | { | ||||||
|    struct extension *i, *nexti; |    struct extension *i, *nexti; | ||||||
| @@ -218,43 +250,409 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | |||||||
|       gl_function address; |       gl_function address; | ||||||
|    }; |    }; | ||||||
|    static struct proc procTable[] = { |    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 */ |       /* 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 }, |       { "glAreTexturesResident", (gl_function) glAreTexturesResident }, | ||||||
|       { "glIsTexture", (gl_function) glIsTexture }, |       { "glArrayElement", (gl_function) glArrayElement }, | ||||||
|       { "glTexSubImage1D", (gl_function) glTexSubImage1D }, |       { "glBindTexture", (gl_function) glBindTexture }, | ||||||
|       { "glTexSubImage2D", (gl_function) glTexSubImage2D }, |       { "glColorPointer", (gl_function) glColorPointer }, | ||||||
|       { "glCopyTexImage1D", (gl_function) glCopyTexImage1D }, |       { "glCopyTexImage1D", (gl_function) glCopyTexImage1D }, | ||||||
|       { "glCopyTexImage2D", (gl_function) glCopyTexImage2D }, |       { "glCopyTexImage2D", (gl_function) glCopyTexImage2D }, | ||||||
|       { "glCopyTexSubImage1D", (gl_function) glCopyTexSubImage1D }, |       { "glCopyTexSubImage1D", (gl_function) glCopyTexSubImage1D }, | ||||||
|       { "glCopyTexSubImage2D", (gl_function) glCopyTexSubImage2D }, |       { "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 */ |       /* OpenGL 1.2 functions */ | ||||||
|  |       { "glCopyTexSubImage3D", (gl_function) glCopyTexSubImage3D }, | ||||||
|       { "glDrawRangeElements", (gl_function) glDrawRangeElements }, |       { "glDrawRangeElements", (gl_function) glDrawRangeElements }, | ||||||
|       { "glTexImage3D", (gl_function) glTexImage3D }, |       { "glTexImage3D", (gl_function) glTexImage3D }, | ||||||
|       { "glTexSubImage3D", (gl_function) glTexSubImage3D }, |       { "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 */ |       /* GL_EXT_blend_minmax */ | ||||||
|       { "glBlendEquationEXT", (gl_function) glBlendEquationEXT }, |       { "glBlendEquationEXT", (gl_function) glBlendEquationEXT }, | ||||||
| @@ -262,9 +660,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | |||||||
|       /* GL_EXT_blend_color */ |       /* GL_EXT_blend_color */ | ||||||
|       { "glBlendColorEXT", (gl_function) glBlendColorEXT }, |       { "glBlendColorEXT", (gl_function) glBlendColorEXT }, | ||||||
|  |  | ||||||
|       /* GL_EXT_polygon_offset */ |  | ||||||
|       { "glPolygonOffsetEXT", (gl_function) glPolygonOffsetEXT }, |  | ||||||
|  |  | ||||||
|       /* GL_EXT_vertex_arrays */ |       /* GL_EXT_vertex_arrays */ | ||||||
|       { "glVertexPointerEXT", (gl_function) glVertexPointerEXT }, |       { "glVertexPointerEXT", (gl_function) glVertexPointerEXT }, | ||||||
|       { "glNormalPointerEXT", (gl_function) glNormalPointerEXT }, |       { "glNormalPointerEXT", (gl_function) glNormalPointerEXT }, | ||||||
| @@ -289,13 +684,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | |||||||
|       { "glTexSubImage3DEXT", (gl_function) glTexSubImage3DEXT }, |       { "glTexSubImage3DEXT", (gl_function) glTexSubImage3DEXT }, | ||||||
|       { "glCopyTexSubImage3DEXT", (gl_function) glCopyTexSubImage3DEXT }, |       { "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 */ |       /* GL_ARB_multitexture */ | ||||||
|       { "glActiveTextureARB", (gl_function) glActiveTextureARB }, |       { "glActiveTextureARB", (gl_function) glActiveTextureARB }, | ||||||
|       { "glClientActiveTextureARB", (gl_function) glClientActiveTextureARB }, |       { "glClientActiveTextureARB", (gl_function) glClientActiveTextureARB }, | ||||||
| @@ -332,10 +720,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))() | |||||||
|       { "glMultiTexCoord4sARB", (gl_function) glMultiTexCoord4sARB }, |       { "glMultiTexCoord4sARB", (gl_function) glMultiTexCoord4sARB }, | ||||||
|       { "glMultiTexCoord4svARB", (gl_function) glMultiTexCoord4svARB }, |       { "glMultiTexCoord4svARB", (gl_function) glMultiTexCoord4svARB }, | ||||||
|  |  | ||||||
|       /* GL_EXT_point_parameters */ |  | ||||||
|       { "glPointParameterfEXT", (gl_function) glPointParameterfEXT }, |  | ||||||
|       { "glPointParameterfvEXT", (gl_function) glPointParameterfvEXT }, |  | ||||||
|  |  | ||||||
|       /* GL_INGR_blend_func_separate */ |       /* GL_INGR_blend_func_separate */ | ||||||
|       { "glBlendFuncSeparateINGR", (gl_function) glBlendFuncSeparateINGR }, |       { "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 |  * Mesa 3-D graphics library | ||||||
| @@ -39,7 +39,7 @@ | |||||||
|  */ |  */ | ||||||
| extern int gl_extensions_add( struct gl_context *ctx, int state,  | extern int gl_extensions_add( struct gl_context *ctx, int state,  | ||||||
| 			      const char *name, void (*notify)( void ) ); | 			      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_enable( struct gl_context *ctx, const char *name ); | ||||||
| extern int gl_extensions_disable( 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 ); | 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