Compare commits
	
		
			188 Commits
		
	
	
		
			mesa-18.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_MINOR=3
 | 
			
		||||
MESA_MINOR=2
 | 
			
		||||
MESA_TINY=0
 | 
			
		||||
VERSION=$(MESA_MAJOR).$(MESA_MINOR)
 | 
			
		||||
 | 
			
		||||
# Mesa 3-D graphics library
 | 
			
		||||
# 
 | 
			
		||||
# Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
# Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
# 
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
# copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -46,7 +46,7 @@ VERSION=$(MESA_MAJOR).$(MESA_MINOR)
 | 
			
		||||
# To enable profiling add -DPROFILE to the CFLAGS line.  Be sure to set the
 | 
			
		||||
# MESA_PROFILE environment variable to enable printing of the profile report.
 | 
			
		||||
#
 | 
			
		||||
# If your system supports the X Shared Memory extension add -DUSE_XSHM to the
 | 
			
		||||
# If your system supports the X Shared Memory extension add -DSHM to the
 | 
			
		||||
# CFLAGS line and add -lXext to the XLIBS line.
 | 
			
		||||
#
 | 
			
		||||
# Some compilers complain about const parameters.  Adding -DNO_CONST to the
 | 
			
		||||
@@ -183,7 +183,7 @@ freebsd:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -fPIC -pedantic -I/usr/X11R6/include -DUSE_XSHM -DHZ=100" \
 | 
			
		||||
	"CFLAGS = -O2 -fPIC -pedantic -I/usr/X11R6/include -DSHM -DHZ=100" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.freebsd" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -194,7 +194,7 @@ freebsd-386:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -ffast-math -fPIC -pedantic -I/usr/X11R6/include -DUSE_XSHM -DHZ=100 -DUSE_X86_ASM -DFREEBSD" \
 | 
			
		||||
	"CFLAGS = -O3 -ffast-math -fPIC -pedantic -I/usr/X11R6/include -DSHM -DHZ=100 -DUSE_X86_ASM -DFREEBSD" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.freebsd" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S"
 | 
			
		||||
@@ -217,7 +217,7 @@ hpux9:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = +O3 -Aa -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = +O3 -Aa -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -228,7 +228,7 @@ hpux9-gcc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -239,7 +239,7 @@ hpux9-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.sl" \
 | 
			
		||||
	"GLW_LIB = libGLw.sl" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = +z +O3 +Olibcalls +ESlit -Aa +Onolimit -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = +z +O3 +Olibcalls +ESlit -Aa +Onolimit -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.hpux" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R5 -s -Wl,+s,-B,nonfatal,-B,immediate -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -250,7 +250,7 @@ hpux9-gcc-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.sl" \
 | 
			
		||||
	"GLW_LIB = libGLw.sl" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R5 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.hpux" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R5 -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -261,7 +261,7 @@ hpux10:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = +O3 +DAportable -Aa -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = +O3 +DAportable -Aa -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -272,7 +272,7 @@ hpux10-sl:
 | 
			
		||||
	"GLUT_LIB = libglut" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = +z -Ae +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = +z -Ae +O2 +Onolimit +Oaggressive -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.hpux" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -283,7 +283,7 @@ hpux10-gcc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include  -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include  -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -294,7 +294,7 @@ hpux10-gcc-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.sl" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -fPIC -ansi -O3 -D_HPUX_SOURCE -I/usr/include/X11R6 -I/usr/contrib/X11R6/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.hpux" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -307,7 +307,7 @@ irix4:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -prototypes -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -prototypes -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-rcv" \
 | 
			
		||||
	"XLIBS = -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -319,7 +319,7 @@ irix5:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -fullwarn -DUSE_XSHM -DNO_CONST" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -fullwarn -DSHM -DNO_CONST" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-rcv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -331,7 +331,7 @@ irix5-gcc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -pedantic -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O2 -pedantic -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-rcv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -343,7 +343,7 @@ irix5-dso:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -fullwarn -DUSE_XSHM -DNO_CONST" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -fullwarn -DSHM -DNO_CONST" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.irix5" \
 | 
			
		||||
	"XLIBS = -rpath ../lib -lX11 -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -354,7 +354,7 @@ irix6-o32:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \
 | 
			
		||||
	"CFLAGS = -32 -mips2 -O2 -ansi -DSHM -DNO_CONST" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-rcv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -365,7 +365,7 @@ irix6-o32-dso:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -32 -mips2 -O2 -ansi -DUSE_XSHM -DNO_CONST" \
 | 
			
		||||
	"CFLAGS = -32 -mips2 -O2 -ansi -DSHM -DNO_CONST" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.irix6-32" \
 | 
			
		||||
	"XLIBS = -rpath ../lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -391,7 +391,7 @@ irix6-n32-dso:
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"LIBDIR = ../lib32" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -n32 -mips3 -O3 -ansi -DUSE_XSHM -woff 1185,1521" \
 | 
			
		||||
	"CFLAGS = -n32 -mips3 -O3 -ansi -DSHM -woff 1185,1521" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.irix6-n32" \
 | 
			
		||||
	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lfpe -lm"
 | 
			
		||||
 | 
			
		||||
@@ -403,7 +403,7 @@ irix6-gcc-n32-sl:
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"LIBDIR = ../lib32" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -mabi=n32 -mips3 -O3 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -mabi=n32 -mips3 -O3 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.irix6-n32" \
 | 
			
		||||
	"XLIBS = -rpath ../lib32 -lX11 -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -423,7 +423,7 @@ irix6-64:
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"LIBDIR = ../lib64" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-rcv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -435,12 +435,12 @@ irix6-64-dso:
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"LIBDIR = ../lib64" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -64 -O3 -ansi -woff 1068,1069,1174,1185,1209,1474,1552 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.irix6-64" \
 | 
			
		||||
	"XLIBS = -rpath ../lib64 -lX11 -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
# May want to try these CFLAGS for better performance under Linux and GCC:
 | 
			
		||||
# -fPIC -O2 -ansi -pedantic -mieee-fp -DUSE_XSHM -funroll-loops
 | 
			
		||||
# -fPIC -O2 -ansi -pedantic -mieee-fp -DSHM -funroll-loops
 | 
			
		||||
# -fexpensive-optimizations -fomit-frame-pointer -ffast-math
 | 
			
		||||
# and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium
 | 
			
		||||
 | 
			
		||||
@@ -451,7 +451,7 @@ linux:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -I/usr/X11R6/include" \
 | 
			
		||||
	"CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -I/usr/X11R6/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm"
 | 
			
		||||
 | 
			
		||||
@@ -465,7 +465,7 @@ linux-elf:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -I/usr/X11R6/include" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -I/usr/X11R6/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm"
 | 
			
		||||
 | 
			
		||||
@@ -476,7 +476,7 @@ linux-glide:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm"
 | 
			
		||||
 | 
			
		||||
@@ -488,7 +488,7 @@ linux-386:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -I/usr/X11R6/include" \
 | 
			
		||||
	"CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DUSE_X86_ASM -I/usr/X11R6/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -500,7 +500,7 @@ linux-386-elf:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -I/usr/X11R6/include" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DUSE_X86_ASM -I/usr/X11R6/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -512,7 +512,7 @@ linux-386-glide:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_XSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -524,7 +524,7 @@ linux-386-glide-mits:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -D_REENTRANT -DMITS -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -D_REENTRANT -DMITS -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm -lpthread" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -536,7 +536,7 @@ linux-386-opt-V2-glide:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -DFX_V2 -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include"\
 | 
			
		||||
	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -DFX_V2 -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include"\
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm -lpthread" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -548,7 +548,7 @@ linux-386-opt-glide:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DFX -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"CFLAGS = -O3 -m486 -fomit-frame-pointer -pipe -ansi -pedantic -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DFX -DUSE_X86_ASM -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -560,7 +560,7 @@ linux-3dnow:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \
 | 
			
		||||
	"CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/X11R6/include" \
 | 
			
		||||
	"CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/X11R6/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \
 | 
			
		||||
@@ -578,7 +578,7 @@ linux-3dnow-glide:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_XSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include -I/usr/src/mesa-glx/src/FX/X86" \
 | 
			
		||||
	"CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DSHM -DFX -I/usr/X11R6/include -I/usr/include/glide -I/usr/local/glide/include -I/usr/src/mesa-glx/src/FX/X86" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -L/usr/local/glide/lib -lglide2x -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \
 | 
			
		||||
@@ -598,7 +598,7 @@ linux-386-pthread-shared-glide:
 | 
			
		||||
	"GLU_LIB = libGLU.so" \
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS -DFX -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS -DFX -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"MAKELIB = ../mklib.glide" \
 | 
			
		||||
	"XLIBS = -L/usr/X11/lib -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \
 | 
			
		||||
@@ -612,7 +612,7 @@ linux-ggi:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc"  \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DGGI -DCDECL=" \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DGGI -DCDECL=" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ggi" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lggi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -624,7 +624,7 @@ linux-386-ggi:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc"  \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DUSE_X86_ASM -DGGI -DCDECL=" \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DUSE_X86_ASM -DGGI -DCDECL=" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ggi" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lggi -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -637,7 +637,7 @@ linux-alpha:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -mieee -pedantic -L/usr/X11R6/lib -D_XOPEN_SOURCE -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O3 -mieee -pedantic -L/usr/X11R6/lib -D_XOPEN_SOURCE -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -648,7 +648,7 @@ linux-alpha-elf:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -ansi -mieee -pedantic -fPIC -D_XOPEN_SOURCE -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -ansi -mieee -pedantic -fPIC -D_XOPEN_SOURCE -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -664,7 +664,7 @@ linux-ppc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm"
 | 
			
		||||
 | 
			
		||||
@@ -676,7 +676,7 @@ linux-ppc-so:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fPIC -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O3 -mcpu=603 -ansi -pedantic -fPIC -fsigned-char -ffast-math -funroll-loops -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm"
 | 
			
		||||
 | 
			
		||||
@@ -687,7 +687,7 @@ linux-386-pthread:
 | 
			
		||||
	"GLU_LIB = libGLU.a" \
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R\6/include -DUSE_XSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R\6/include -DSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -699,7 +699,7 @@ linux-386-pthread-shared:
 | 
			
		||||
	"GLU_LIB = libGLU.so" \
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/us\r/X11R6/include -DUSE_XSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/us\r/X11R6/include -DSHM -DUSE_X86_ASM -D_REENTRANT -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lpthread -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -711,7 +711,7 @@ linux-sparc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -pedantic -funroll-loops -O3 -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -pedantic -funroll-loops -O3 -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXt -lSM -lICE -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -723,7 +723,7 @@ linux-sparc5-elf:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -mv8 -O2 -ffast-math -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -mv8 -O3 -ffast-math -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm"
 | 
			
		||||
 | 
			
		||||
@@ -735,12 +735,12 @@ linux-sparc-ultra:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -mv8 -O2 -mtune=ultrasparc -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -mv8 -O3 -mtune=ultrasparc -ansi -pedantic -fPIC -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm"
 | 
			
		||||
 | 
			
		||||
# May want to add these CFLAGS for better performance under LynxOS and GCC:
 | 
			
		||||
# -fPIC -O2 -ansi -pedantic -mieee-fp -DUSE_XSHM -funroll-loops
 | 
			
		||||
# -fPIC -O2 -ansi -pedantic -mieee-fp -DSHM -funroll-loops
 | 
			
		||||
# -fexpensive-optimizations -fomit-frame-pointer -ffast-math
 | 
			
		||||
# and  -malign-loops=2 -malign-jumps=2 -malign-functions=2 for Pentium
 | 
			
		||||
 | 
			
		||||
@@ -751,7 +751,7 @@ lynxos:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -pedantic -funroll-loops -ffast-math -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O2 -ansi -pedantic -funroll-loops -ffast-math -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/X11/lib -lXext -lXi -lXmu -lX11 -lbsd -lm"
 | 
			
		||||
 | 
			
		||||
@@ -795,7 +795,7 @@ netbsd:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -fPIC -DUSE_XSHM -I/usr/X11R6/include -DHZ=100"  \
 | 
			
		||||
	"CFLAGS = -O3 -fPIC -DSHM -I/usr/X11R6/include -DHZ=100"  \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.netbsd" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lXext -lXmu -lXi -lX11 -lm"
 | 
			
		||||
 | 
			
		||||
@@ -815,7 +815,7 @@ openbsd:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O2 -fPIC -I/usr/X11R6/include -DUSE_XSHM -DHZ=100" \
 | 
			
		||||
	"CFLAGS = -O2 -fPIC -I/usr/X11R6/include -DSHM -DHZ=100" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.openbsd" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -856,7 +856,7 @@ osf1:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DUSE_XSHM -DNO_CONST" \
 | 
			
		||||
	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DSHM -DNO_CONST" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -867,7 +867,7 @@ osf1-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DUSE_XSHM -DNO_CONST" \
 | 
			
		||||
	"CFLAGS = -O2 -std1 -ieee_with_no_inexact -DSHM -DNO_CONST" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.osf1" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -934,7 +934,7 @@ solaris-x86:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -Xa -xO3 -xpentium -KPIC -I/usr/openwin/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -Xa -xO3 -xpentium -KPIC -I/usr/openwin/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.solaris" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -945,7 +945,7 @@ solaris-x86-gcc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -m486 -fPIC -I/usr/openwin/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O3 -m486 -fPIC -I/usr/openwin/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.solaris" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -956,7 +956,7 @@ sunos4:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = acc" \
 | 
			
		||||
	"CFLAGS = -O -DUSE_XSHM -DSUNOS4" \
 | 
			
		||||
	"CFLAGS = -O -DSHM -DSUNOS4" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -967,7 +967,7 @@ sunos4-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = acc" \
 | 
			
		||||
	"CFLAGS = -Kpic -O -I/usr/include/X11R5 -DUSE_XSHM -DSUNOS4" \
 | 
			
		||||
	"CFLAGS = -Kpic -O -I/usr/include/X11R5 -DSHM -DSUNOS4" \
 | 
			
		||||
	"MAKELIB = ld -assert pure-text -o" \
 | 
			
		||||
	"XLIBS = -L/usr/lib/X11R5 -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -978,7 +978,7 @@ sunos4-gcc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -DUSE_XSHM -DSUNOS4 -I/usr/openwin/include" \
 | 
			
		||||
	"CFLAGS = -O3 -DSHM -DSUNOS4 -I/usr/openwin/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -989,7 +989,7 @@ sunos4-gcc-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -I/usr/include/X11R5 -I/usr/include/X11R5 -DUSE_XSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -I/usr/include/X11R5 -I/usr/include/X11R5 -DSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.sunos4" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1000,7 +1000,7 @@ sunos4-gcc-x11r6-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -I/usr/X11R6.3/include -DUSE_XSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -I/usr/X11R6.3/include -DSHM -DSUNOS4 -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.sunos4" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6.3/lib/X11 -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1011,7 +1011,7 @@ sunos5:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1022,7 +1022,7 @@ sunos5-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -KPIC -Xa -O -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -KPIC -Xa -O -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.sunos5" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1033,7 +1033,7 @@ sunos5-ultra:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1044,7 +1044,7 @@ sunos5-ultra-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -KPIC -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -KPIC -Xa -fast -xO5 -xtarget=ultra -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.sunos5" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1055,7 +1055,7 @@ sunos5-gcc:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1066,7 +1066,7 @@ sunos5-gcc-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.sunos5" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1077,7 +1077,7 @@ sunos5-x11r6-gcc-sl:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -fPIC -O3 -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.sunos5" \
 | 
			
		||||
	"XLIBS = -lSM -lICE -lX11 -lXext -lXmu -lXi -lnsl -lsocket -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1088,7 +1088,7 @@ sunos5-pthread:
 | 
			
		||||
	"GLU_LIB = libGLU.a" \
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4\_BUG -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4\_BUG -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lpthread -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1099,7 +1099,7 @@ sunos5-thread:
 | 
			
		||||
	"GLU_LIB = libGLU.a" \
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DUSE_XSHM -DSOLARIS_2_4\_BUG -DTHREADS -DSOLARIS_THREADS" \
 | 
			
		||||
	"CFLAGS = -mt -Xa -fast -xO4 -native -I/usr/openwin/include -I/usr/dt/include -DSHM -DSOLARIS_2_4\_BUG -DTHREADS -DSOLARIS_THREADS" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -L/usr/dt/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lthread -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1110,7 +1110,7 @@ sunos5-gcc-thread:
 | 
			
		||||
	"GLU_LIB = libGLU.a" \
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DSOLARIS_THREADS" \
 | 
			
		||||
	"CFLAGS = -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DSOLARIS_THR\EADS" \
 | 
			
		||||
      	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lthread -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1121,7 +1121,7 @@ sunos5-gcc-pthread:
 | 
			
		||||
	"GLU_LIB = libGLU.a" \
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O3 -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"CFLAGS = -O3 -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG -D_REENTRANT -DTHREADS -DPTHREADS" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lpthread -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1133,7 +1133,7 @@ sunSolaris-CC:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = CC" \
 | 
			
		||||
	"CFLAGS = -O -I/usr/openwin/include -DUSE_XSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"CFLAGS = -O -I/usr/openwin/include -DSHM -DSOLARIS_2_4_BUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/openwin/lib -R/usr/openwin/lib -lX11 -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1179,7 +1179,7 @@ unixware:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O -I/usr/X/include -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O -I/usr/X/include -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1190,7 +1190,7 @@ unixware-shared:
 | 
			
		||||
	"GLUT_LIB = libglut" \
 | 
			
		||||
	"GLW_LIB = libGLw" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -O -I/usr/X/include -KPIC,inline -DUSE_XSHM" \
 | 
			
		||||
	"CFLAGS = -O -I/usr/X/include -KPIC,inline -DSHM" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.solaris" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lsocket -lnsl -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1230,7 +1230,7 @@ irix-debug:
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"LIBDIR = ../lib32" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -g -n32 -ansi -fullwarn -DUSE_XSHM -DDEBUG -woff 1209,1210,1506,1521,3496" \
 | 
			
		||||
	"CFLAGS = -g -n32 -ansi -fullwarn -DSHM -DDEBUG -woff 1209,1210,1506,1521,3496" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-rcv" \
 | 
			
		||||
	"XLIBS = -rpath ../lib32 -lX11 -lXext -lXmu -lXi -lfpe -lXext -lXmu -lXi -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1241,7 +1241,7 @@ DEBUG:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = cc" \
 | 
			
		||||
	"CFLAGS = -g -ansi -prototypes -fullwarn -DUSE_XSHM -DDEBUG" \
 | 
			
		||||
	"CFLAGS = -g -ansi -prototypes -fullwarn -DSHM -DDEBUG" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-rcv" \
 | 
			
		||||
	"XLIBS = -lX11 -lXext -lXmu -lXi -lfpe -lm"
 | 
			
		||||
 | 
			
		||||
@@ -1253,7 +1253,7 @@ linux-debug:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -g -ansi -pedantic -Wall -DUSE_XSHM -DDEBUG -DSVGA -DFX -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM_not -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"CFLAGS = -g -ansi -pedantic -Wall -DSHM -DDEBUG -DSVGA -DFX -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM_not -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/local/glide/lib -lglide2x -ltexus -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -1265,9 +1265,9 @@ linux-elf-debug:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DDEBUG" \
 | 
			
		||||
	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DSHM -DDEBUG -DSVGA -DFX -I/usr/X11R6/include -I/usr/include/glide" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm" \
 | 
			
		||||
	"XLIBS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm -lvga -L/usr/local/lib -L/usr/local/glide/lib -lglide2x" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
 | 
			
		||||
linux-glide-debug:
 | 
			
		||||
@@ -1277,7 +1277,7 @@ linux-glide-debug:
 | 
			
		||||
	"GLUT_LIB = libglut.so" \
 | 
			
		||||
	"GLW_LIB = libGLw.so" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DUSE_XSHM -DFX -DDEBUG -I/usr/local/glide/include -I/usr/include/glide" \
 | 
			
		||||
	"CFLAGS = -g -ansi -pedantic -Wall -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -I/usr/X11R6/include -DSHM -DFX -DDEBUG -I/usr/local/glide/include -I/usr/include/glide" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.linux" \
 | 
			
		||||
	"XLIBS = -L/usr/local/glide/lib -lglide2x -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lvga -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S X86/vertex.S"
 | 
			
		||||
@@ -1290,7 +1290,7 @@ linux-prof:
 | 
			
		||||
	"GLUT_LIB = libglut.a" \
 | 
			
		||||
	"GLW_LIB = libGLw.a" \
 | 
			
		||||
	"CC = gcc" \
 | 
			
		||||
	"CFLAGS = -O2 -pg -ansi -pedantic -Wall -DUSE_XSHM -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"CFLAGS = -O2 -pg -ansi -pedantic -Wall -DSHM -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -I/usr/include/glide -I/usr/local/glide/include" \
 | 
			
		||||
	"MAKELIB = ../bin/mklib.ar-ruv" \
 | 
			
		||||
	"XLIBS = -L/usr/local/glide/lib -lglide2x -L/usr/X11/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -lm" \
 | 
			
		||||
	"ASM_SOURCES = X86/x86a.S X86/common_x86asm.S \
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										321
									
								
								Makefile.X11
									
									
									
									
									
								
							
							
						
						
									
										321
									
								
								Makefile.X11
									
									
									
									
									
								
							@@ -1,9 +1,9 @@
 | 
			
		||||
# $Id: Makefile.X11,v 1.12 1999/11/04 03:57:28 gareth Exp $
 | 
			
		||||
# $Id: Makefile.X11,v 1.12.2.8 2000/03/23 00:14:28 brianp Exp $
 | 
			
		||||
 | 
			
		||||
# Mesa 3-D graphics library
 | 
			
		||||
# Version:  3.1
 | 
			
		||||
# Version:  3.2
 | 
			
		||||
# 
 | 
			
		||||
# Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
# Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
# 
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
# copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -169,6 +169,7 @@ sunos5-x11r6-gcc-sl ultrix-gcc unicos unixware uwin vistra:
 | 
			
		||||
	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug:
 | 
			
		||||
@@ -183,6 +184,7 @@ irix6-n32 irix6-n32-dso irix6-gcc-n32-sl irix-debug:
 | 
			
		||||
	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
irix6-64 irix6-64-dso:
 | 
			
		||||
@@ -197,6 +199,7 @@ irix6-64 irix6-64-dso:
 | 
			
		||||
	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
amiwin:
 | 
			
		||||
@@ -225,9 +228,10 @@ cygnus cygnus-linux:
 | 
			
		||||
	touch src-glu/depend
 | 
			
		||||
	cd src ; $(MAKE) -f Makefile.X11 $@
 | 
			
		||||
	cd src-glu ; $(MAKE) -f Makefile.X11 $@
 | 
			
		||||
	cd src-glut ; $(MAKE) -f Makefile.X11 $@
 | 
			
		||||
	cd demos ; $(MAKE) -f Makefile.X11 $@
 | 
			
		||||
	if [ -d src-glut ] ; then cd src-glut ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d demos ]    ; then cd demos    ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d xdemos ]  ; then cd xdemos  ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
 | 
			
		||||
macintosh:
 | 
			
		||||
	@echo "See the README file for Macintosh intallation information"
 | 
			
		||||
@@ -272,6 +276,7 @@ linux-ggi linux-386-ggi:
 | 
			
		||||
	if [ -d xdemos ]   ; then cd xdemos   ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d samples ]  ; then cd samples  ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d book ]     ; then cd book     ; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
	if [ -d widgets-sgi ] ; then cd widgets-sgi; $(MAKE) -f Makefile.X11 $@ ; fi
 | 
			
		||||
 | 
			
		||||
# if you change GGI_DEST please change it in ggimesa.conf, too.
 | 
			
		||||
DESTDIR=/usr/local
 | 
			
		||||
@@ -314,103 +319,106 @@ realclean: clean
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DIRECTORY = Mesa-3.1
 | 
			
		||||
LIB_NAME = MesaLib-3.1beta3
 | 
			
		||||
DEMO_NAME = MesaDemos-3.1beta3
 | 
			
		||||
DIRECTORY = Mesa-3.2
 | 
			
		||||
LIB_NAME = MesaLib-3.2
 | 
			
		||||
DEMO_NAME = MesaDemos-3.2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LIB_FILES =	\
 | 
			
		||||
	$(DIRECTORY)/Makefile*			\
 | 
			
		||||
	$(DIRECTORY)/Make-config		\
 | 
			
		||||
	$(DIRECTORY)/acconfig.h			\
 | 
			
		||||
	$(DIRECTORY)/acinclude.m4		\
 | 
			
		||||
	$(DIRECTORY)/aclocal.m4			\
 | 
			
		||||
	$(DIRECTORY)/conf.h.in			\
 | 
			
		||||
	$(DIRECTORY)/config.guess		\
 | 
			
		||||
	$(DIRECTORY)/config.sub			\
 | 
			
		||||
	$(DIRECTORY)/configure			\
 | 
			
		||||
	$(DIRECTORY)/configure.in		\
 | 
			
		||||
	$(DIRECTORY)/install-sh			\
 | 
			
		||||
	$(DIRECTORY)/ltconfig			\
 | 
			
		||||
	$(DIRECTORY)/ltmain.sh			\
 | 
			
		||||
	$(DIRECTORY)/missing			\
 | 
			
		||||
	$(DIRECTORY)/mkinstalldirs		\
 | 
			
		||||
	$(DIRECTORY)/stamp-h.in			\
 | 
			
		||||
	$(DIRECTORY)/configure			\
 | 
			
		||||
	$(DIRECTORY)/docs/CONFIG		\
 | 
			
		||||
	$(DIRECTORY)/docs/CONFORM		\
 | 
			
		||||
	$(DIRECTORY)/docs/COPYING		\
 | 
			
		||||
	$(DIRECTORY)/docs/COPYRIGHT		\
 | 
			
		||||
	$(DIRECTORY)/docs/DEVINFO		\
 | 
			
		||||
	$(DIRECTORY)/docs/IAFA-PACKAGE		\
 | 
			
		||||
	$(DIRECTORY)/docs/INSTALL		\
 | 
			
		||||
	$(DIRECTORY)/docs/INSTALL.GNU		\
 | 
			
		||||
	$(DIRECTORY)/docs/README		\
 | 
			
		||||
	$(DIRECTORY)/docs/README.*		\
 | 
			
		||||
	$(DIRECTORY)/docs/RELNOTES		\
 | 
			
		||||
	$(DIRECTORY)/docs/VERSIONS		\
 | 
			
		||||
	$(DIRECTORY)/docs/*.spec		\
 | 
			
		||||
	$(DIRECTORY)/bin/README			\
 | 
			
		||||
	$(DIRECTORY)/bin/mklib*			\
 | 
			
		||||
	$(DIRECTORY)/*.BAT			\
 | 
			
		||||
	$(DIRECTORY)/*.bat			\
 | 
			
		||||
	$(DIRECTORY)/descrip.mms		\
 | 
			
		||||
	$(DIRECTORY)/mms-config			\
 | 
			
		||||
	$(DIRECTORY)/xlib.opt			\
 | 
			
		||||
	$(DIRECTORY)/STARTUP.MK			\
 | 
			
		||||
	$(DIRECTORY)/mesawin32.mak		\
 | 
			
		||||
	$(DIRECTORY)/Names.win			\
 | 
			
		||||
	$(DIRECTORY)/win32-openstep.sh		\
 | 
			
		||||
	$(DIRECTORY)/*.dja			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/Makefile.in	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/Makefile.am	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/dosmesa.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/foomesa.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/fxmesa.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/ggimesa.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/gl.h		\
 | 
			
		||||
	$(DIRECTORY)/include/GL/gl_mangle.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glu.h		\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glu_mangle.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glx.h		\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glx_mangle.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/mglmesa.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/osmesa.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/svgamesa.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/wmesa.h		\
 | 
			
		||||
	$(DIRECTORY)/include/GL/xmesa.h		\
 | 
			
		||||
	$(DIRECTORY)/include/GL/xmesa_x.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GL/xmesa_xf86.h	\
 | 
			
		||||
	$(DIRECTORY)/include/GLView.h		\
 | 
			
		||||
	$(DIRECTORY)/include/Makefile.in	\
 | 
			
		||||
	$(DIRECTORY)/include/Makefile.am	\
 | 
			
		||||
	$(DIRECTORY)/src/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/src/descrip.mms		\
 | 
			
		||||
	$(DIRECTORY)/src/mms_depend		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa.conf		\
 | 
			
		||||
	$(DIRECTORY)/src/*.def			\
 | 
			
		||||
	$(DIRECTORY)/src/depend			\
 | 
			
		||||
	$(DIRECTORY)/src/*.[chS]		\
 | 
			
		||||
	$(DIRECTORY)/src/Allegro/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/BeOS/*.cpp		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.cpp		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.CPP		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.h		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.H		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.c		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.C		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/MAKEFILE		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*bat		\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*DEF		\
 | 
			
		||||
	$(DIRECTORY)/src/DOS/DEPEND.DOS		\
 | 
			
		||||
	$(DIRECTORY)/src/DOS/*.c		\
 | 
			
		||||
	$(DIRECTORY)/src/FX/Makefile.am		\
 | 
			
		||||
	$(DIRECTORY)/src/FX/Makefile.in		\
 | 
			
		||||
	$(DIRECTORY)/src/FX/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/FX/*.def		\
 | 
			
		||||
	$(DIRECTORY)/src/FX/X86/Makefile.am	\
 | 
			
		||||
	$(DIRECTORY)/src/FX/X86/Makefile.in	\
 | 
			
		||||
	$(DIRECTORY)/src/FX/X86/*.[Shc]		\
 | 
			
		||||
	$(DIRECTORY)/Makefile*					\
 | 
			
		||||
	$(DIRECTORY)/Make-config				\
 | 
			
		||||
	$(DIRECTORY)/acconfig.h					\
 | 
			
		||||
	$(DIRECTORY)/acinclude.m4				\
 | 
			
		||||
	$(DIRECTORY)/aclocal.m4					\
 | 
			
		||||
	$(DIRECTORY)/conf.h.in					\
 | 
			
		||||
	$(DIRECTORY)/config.guess				\
 | 
			
		||||
	$(DIRECTORY)/config.sub					\
 | 
			
		||||
	$(DIRECTORY)/configure					\
 | 
			
		||||
	$(DIRECTORY)/configure.in				\
 | 
			
		||||
	$(DIRECTORY)/install-sh					\
 | 
			
		||||
	$(DIRECTORY)/ltconfig					\
 | 
			
		||||
	$(DIRECTORY)/ltmain.sh					\
 | 
			
		||||
	$(DIRECTORY)/missing					\
 | 
			
		||||
	$(DIRECTORY)/mkinstalldirs				\
 | 
			
		||||
	$(DIRECTORY)/stamp-h.in					\
 | 
			
		||||
	$(DIRECTORY)/configure					\
 | 
			
		||||
	$(DIRECTORY)/docs/CONFIG				\
 | 
			
		||||
	$(DIRECTORY)/docs/CONFORM				\
 | 
			
		||||
	$(DIRECTORY)/docs/COPYING				\
 | 
			
		||||
	$(DIRECTORY)/docs/COPYRIGHT				\
 | 
			
		||||
	$(DIRECTORY)/docs/DEVINFO				\
 | 
			
		||||
	$(DIRECTORY)/docs/IAFA-PACKAGE				\
 | 
			
		||||
	$(DIRECTORY)/docs/INSTALL				\
 | 
			
		||||
	$(DIRECTORY)/docs/INSTALL.GNU				\
 | 
			
		||||
	$(DIRECTORY)/docs/README				\
 | 
			
		||||
	$(DIRECTORY)/docs/README.*				\
 | 
			
		||||
	$(DIRECTORY)/docs/RELNOTES				\
 | 
			
		||||
	$(DIRECTORY)/docs/VERSIONS				\
 | 
			
		||||
	$(DIRECTORY)/docs/*.spec				\
 | 
			
		||||
	$(DIRECTORY)/bin/README					\
 | 
			
		||||
	$(DIRECTORY)/bin/mklib*					\
 | 
			
		||||
	$(DIRECTORY)/*.BAT					\
 | 
			
		||||
	$(DIRECTORY)/*.bat					\
 | 
			
		||||
	$(DIRECTORY)/descrip.mms				\
 | 
			
		||||
	$(DIRECTORY)/mms-config					\
 | 
			
		||||
	$(DIRECTORY)/xlib.opt					\
 | 
			
		||||
	$(DIRECTORY)/STARTUP.MK					\
 | 
			
		||||
	$(DIRECTORY)/mesawin32.mak				\
 | 
			
		||||
	$(DIRECTORY)/Names.win					\
 | 
			
		||||
	$(DIRECTORY)/win32-openstep.sh				\
 | 
			
		||||
	$(DIRECTORY)/Makefile.dja				\
 | 
			
		||||
	$(DIRECTORY)/common.dja					\
 | 
			
		||||
	$(DIRECTORY)/include/GL/Makefile.in			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/Makefile.am			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/amesa.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/dosmesa.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/foomesa.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/fxmesa.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/ggimesa.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/gl.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/gl_mangle.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glu.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glu_mangle.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glx.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glx_mangle.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/mesa_wgl.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/mglmesa.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/osmesa.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/svgamesa.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/wmesa.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/xmesa.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/xmesa_x.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/xmesa_xf86.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GLView.h				\
 | 
			
		||||
	$(DIRECTORY)/include/Makefile.in			\
 | 
			
		||||
	$(DIRECTORY)/include/Makefile.am			\
 | 
			
		||||
	$(DIRECTORY)/src/Makefile*				\
 | 
			
		||||
	$(DIRECTORY)/src/descrip.mms				\
 | 
			
		||||
	$(DIRECTORY)/src/mms_depend				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa.conf				\
 | 
			
		||||
	$(DIRECTORY)/src/*.def					\
 | 
			
		||||
	$(DIRECTORY)/src/depend					\
 | 
			
		||||
	$(DIRECTORY)/src/*.[chS]				\
 | 
			
		||||
	$(DIRECTORY)/src/Allegro/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/BeOS/*.cpp				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.cpp				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.CPP				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.h				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.H				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.c				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*.C				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/MAKEFILE				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*bat				\
 | 
			
		||||
	$(DIRECTORY)/src/D3D/*DEF				\
 | 
			
		||||
	$(DIRECTORY)/src/DOS/DEPEND.DOS				\
 | 
			
		||||
	$(DIRECTORY)/src/DOS/*.c				\
 | 
			
		||||
	$(DIRECTORY)/src/FX/Makefile.am				\
 | 
			
		||||
	$(DIRECTORY)/src/FX/Makefile.in				\
 | 
			
		||||
	$(DIRECTORY)/src/FX/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/FX/*.def				\
 | 
			
		||||
	$(DIRECTORY)/src/FX/X86/Makefile.am			\
 | 
			
		||||
	$(DIRECTORY)/src/FX/X86/Makefile.in			\
 | 
			
		||||
	$(DIRECTORY)/src/FX/X86/*.[Shc]				\
 | 
			
		||||
	$(DIRECTORY)/src/GGI/Makefile.am			\
 | 
			
		||||
	$(DIRECTORY)/src/GGI/Makefile.in			\
 | 
			
		||||
	$(DIRECTORY)/src/GGI/*.[ch]				\
 | 
			
		||||
@@ -430,55 +438,68 @@ LIB_FILES =	\
 | 
			
		||||
	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.am	\
 | 
			
		||||
	$(DIRECTORY)/src/GGI/include/ggi/mesa/Makefile.in	\
 | 
			
		||||
	$(DIRECTORY)/src/GGI/include/ggi/mesa/*.h		\
 | 
			
		||||
	$(DIRECTORY)/src/KNOWN_BUGS		\
 | 
			
		||||
	$(DIRECTORY)/src/MGL/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/MGL/*.txt		\
 | 
			
		||||
	$(DIRECTORY)/src/OSmesa/Makefile.am	\
 | 
			
		||||
	$(DIRECTORY)/src/OSmesa/Makefile.in	\
 | 
			
		||||
	$(DIRECTORY)/src/OSmesa/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.def		\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.mak		\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.rc		\
 | 
			
		||||
	$(DIRECTORY)/src/SVGA/Makefile.am	\
 | 
			
		||||
	$(DIRECTORY)/src/SVGA/Makefile.in	\
 | 
			
		||||
	$(DIRECTORY)/src/SVGA/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/Windows/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/Windows/*.def		\
 | 
			
		||||
	$(DIRECTORY)/src/X/Makefile.am		\
 | 
			
		||||
	$(DIRECTORY)/src/X/Makefile.in		\
 | 
			
		||||
	$(DIRECTORY)/src/X/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/X86/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/X86/Makefile.am	\
 | 
			
		||||
	$(DIRECTORY)/src/X86/Makefile.in	\
 | 
			
		||||
	$(DIRECTORY)/src/X86/*.m4		\
 | 
			
		||||
	$(DIRECTORY)/src/X86/*.S		\
 | 
			
		||||
	$(DIRECTORY)/src/*.dja			\
 | 
			
		||||
	$(DIRECTORY)/src-glu/README[12]		\
 | 
			
		||||
	$(DIRECTORY)/src-glu/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/src-glu/descrip.mms	\
 | 
			
		||||
	$(DIRECTORY)/src-glu/mms_depend		\
 | 
			
		||||
	$(DIRECTORY)/src-glu/*.def		\
 | 
			
		||||
	$(DIRECTORY)/src-glu/*.dja		\
 | 
			
		||||
	$(DIRECTORY)/src-glu/depend		\
 | 
			
		||||
	$(DIRECTORY)/src-glu/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/widgets-mesa		\
 | 
			
		||||
	$(DIRECTORY)/widgets-sgi		\
 | 
			
		||||
	$(DIRECTORY)/util/README		\
 | 
			
		||||
	$(DIRECTORY)/util/Makefile.am		\
 | 
			
		||||
	$(DIRECTORY)/util/Makefile.in		\
 | 
			
		||||
	$(DIRECTORY)/util/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/util/sampleMakefile	\
 | 
			
		||||
	$(DIRECTORY)/BeOS/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/BeOS/*.cpp			
 | 
			
		||||
 | 
			
		||||
# old stuff
 | 
			
		||||
#	$(DIRECTORY)/Win32			\
 | 
			
		||||
#	$(DIRECTORY)/win32
 | 
			
		||||
 | 
			
		||||
#	$(DIRECTORY)/OpenStep			\
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
	$(DIRECTORY)/src/KNOWN_BUGS				\
 | 
			
		||||
	$(DIRECTORY)/src/MGL/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/MGL/*.txt				\
 | 
			
		||||
	$(DIRECTORY)/src/OSmesa/Makefile.am			\
 | 
			
		||||
	$(DIRECTORY)/src/OSmesa/Makefile.in			\
 | 
			
		||||
	$(DIRECTORY)/src/OSmesa/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.def				\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.mak				\
 | 
			
		||||
	$(DIRECTORY)/src/S3/*.rc				\
 | 
			
		||||
	$(DIRECTORY)/src/SVGA/Makefile.am			\
 | 
			
		||||
	$(DIRECTORY)/src/SVGA/Makefile.in			\
 | 
			
		||||
	$(DIRECTORY)/src/SVGA/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/Windows/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/Windows/*.def				\
 | 
			
		||||
	$(DIRECTORY)/src/X/Makefile.am				\
 | 
			
		||||
	$(DIRECTORY)/src/X/Makefile.in				\
 | 
			
		||||
	$(DIRECTORY)/src/X/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/X86/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/X86/Makefile.am			\
 | 
			
		||||
	$(DIRECTORY)/src/X86/Makefile.in			\
 | 
			
		||||
	$(DIRECTORY)/src/X86/*.m4				\
 | 
			
		||||
	$(DIRECTORY)/src/X86/*.S				\
 | 
			
		||||
	$(DIRECTORY)/src/*.dja					\
 | 
			
		||||
	$(DIRECTORY)/src-glu/README[12]				\
 | 
			
		||||
	$(DIRECTORY)/src-glu/Makefile*				\
 | 
			
		||||
	$(DIRECTORY)/src-glu/descrip.mms			\
 | 
			
		||||
	$(DIRECTORY)/src-glu/mms_depend				\
 | 
			
		||||
	$(DIRECTORY)/src-glu/*.def				\
 | 
			
		||||
	$(DIRECTORY)/src-glu/*.dja				\
 | 
			
		||||
	$(DIRECTORY)/src-glu/depend				\
 | 
			
		||||
	$(DIRECTORY)/src-glu/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/widgets-mesa				\
 | 
			
		||||
	$(DIRECTORY)/widgets-sgi				\
 | 
			
		||||
	$(DIRECTORY)/util/README				\
 | 
			
		||||
	$(DIRECTORY)/util/Makefile.am				\
 | 
			
		||||
	$(DIRECTORY)/util/Makefile.in				\
 | 
			
		||||
	$(DIRECTORY)/util/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/util/sampleMakefile			\
 | 
			
		||||
	$(DIRECTORY)/BeOS/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/BeOS/*.cpp					\
 | 
			
		||||
	$(DIRECTORY)/WIN32/NMAKE.MAK				\
 | 
			
		||||
	$(DIRECTORY)/WIN32/NMAKE.MIF				\
 | 
			
		||||
	$(DIRECTORY)/WIN32/RES/*rc				\
 | 
			
		||||
	$(DIRECTORY)/WIN32/RES/*def				\
 | 
			
		||||
	$(DIRECTORY)/WIN32/RULES/lib.*				\
 | 
			
		||||
	$(DIRECTORY)/WIN32/RULES/progs.*			\
 | 
			
		||||
	$(DIRECTORY)/macos/README				\
 | 
			
		||||
	$(DIRECTORY)/macos/gli_api/*.h				\
 | 
			
		||||
	$(DIRECTORY)/macos/include-mac/*.h			\
 | 
			
		||||
	$(DIRECTORY)/macos/libraries/*.stub			\
 | 
			
		||||
	$(DIRECTORY)/macos/libraries/*Stub			\
 | 
			
		||||
	$(DIRECTORY)/macos/projects/*.mcp			\
 | 
			
		||||
	$(DIRECTORY)/macos/projects/*.exp			\
 | 
			
		||||
	$(DIRECTORY)/macos/projects/*.h				\
 | 
			
		||||
	$(DIRECTORY)/macos/resources/*.c			\
 | 
			
		||||
	$(DIRECTORY)/macos/resources/*.r			\
 | 
			
		||||
	$(DIRECTORY)/macos/resources/*.rsrc			\
 | 
			
		||||
	$(DIRECTORY)/macos/src-agl/*.exp			\
 | 
			
		||||
	$(DIRECTORY)/macos/src-agl/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/macos/src-gli/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/OpenStep					\
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DEMO_FILES =	\
 | 
			
		||||
@@ -517,13 +538,13 @@ DEMO_FILES =	\
 | 
			
		||||
 | 
			
		||||
lib_tar:
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cvf $(LIB_NAME).tar $(LIB_FILES) ; \
 | 
			
		||||
	tar --exclude CVS -c -v -f $(LIB_NAME).tar $(LIB_FILES) ; \
 | 
			
		||||
	gzip $(LIB_NAME).tar ; \
 | 
			
		||||
	mv $(LIB_NAME).tar.gz $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
demo_tar:
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cvf $(DEMO_NAME).tar $(DEMO_FILES) ; \
 | 
			
		||||
	tar --exclude CVS -c -v -f $(DEMO_NAME).tar $(DEMO_FILES) ; \
 | 
			
		||||
	gzip $(DEMO_NAME).tar ; \
 | 
			
		||||
	mv $(DEMO_NAME).tar.gz $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,8 @@
 | 
			
		||||
 | 
			
		||||
                     3Dfx Glide device driver for Mesa 3.1
 | 
			
		||||
                     3Dfx Glide device driver for Mesa 3.2
 | 
			
		||||
				(see below for FAQ)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This software is distributed under the terms of the GNU Library
 | 
			
		||||
General Public License, see the LICENSE file for details.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
What do you need ?
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
@@ -327,6 +322,11 @@ The Mesa/Voodoo Environment Variables:
 | 
			
		||||
		export MESA_FX_INFO=1
 | 
			
		||||
          you will get some useful statistic.
 | 
			
		||||
 | 
			
		||||
        - If you define the env. var. MESA_FX_NO_SIGNALS:
 | 
			
		||||
		export MESA_FX_NO_SIGNALS=1
 | 
			
		||||
          Mesa/FX will not install atexit() or signal() handlers.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Know BUGS and Problems:
 | 
			
		||||
-----------------------
 | 
			
		||||
@@ -541,9 +541,7 @@ No because the Linux Glide doesn't (yet) support the Voodoo Rush.
 | 
			
		||||
a binary copy of the Mesa in order to make the software
 | 
			
		||||
working out of the box ?
 | 
			
		||||
 | 
			
		||||
Yes, you have simply to include some informations about authors
 | 
			
		||||
and where the library sources are available (check the LICENSE
 | 
			
		||||
file for more informations about the GNU GPL).
 | 
			
		||||
Yes.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
11. Which is the best make target for compiling the Mesa for
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ working.  No optimizations have been made at this time.
 | 
			
		||||
 | 
			
		||||
Compiling
 | 
			
		||||
 | 
			
		||||
Simply cd to the Mesa-3.x directory and type "make beos-r4".
 | 
			
		||||
In the Mesa-3.x directory type "make -f Makefile.X11 beos-r4".
 | 
			
		||||
When it finishes the libMesaGL.so and libMesaGLU.so libraries for
 | 
			
		||||
BeOS will be in the Mesa-3.x/lib/ directory.
 | 
			
		||||
 | 
			
		||||
@@ -99,4 +99,4 @@ of February, 1999.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------
 | 
			
		||||
$Id: README.BEOS,v 1.5 1999/03/03 02:34:04 brianp Exp $
 | 
			
		||||
$Id: README.BEOS,v 1.5.6.1 1999/11/27 01:39:50 brianp Exp $
 | 
			
		||||
 
 | 
			
		||||
@@ -1,120 +1,50 @@
 | 
			
		||||
August 30, 1998 -- Paul Garceau (pgarceau@teleport.com)
 | 
			
		||||
August 30, 1998 -- Paul Garceau
 | 
			
		||||
Updated January 13, 2000 -- Paul Garceau (pgarceau@teleport.com)
 | 
			
		||||
 | 
			
		||||
DISCLAIMER:  I make this extension to the Mesa 3-D Graphics Library as a service
 | 
			
		||||
DISCLAIMER:  I make this port of the Mesa 3-D Graphics Library as a service
 | 
			
		||||
to the general public.  I can, in no way support or make any guarantee that the
 | 
			
		||||
EGCS-Mingw32 build or any Gnu-Win32 build will work for your system. The
 | 
			
		||||
associated packages and batch files I have included as part of the EGCS-Mingw32
 | 
			
		||||
extension are provided "As-is" with out any guarantee of support or functionality
 | 
			
		||||
from the author of this EGCS-Mingw32 native windows port of the Mesa 3-D Graphics
 | 
			
		||||
Library.
 | 
			
		||||
build will work for your system.
 | 
			
		||||
 | 
			
		||||
	The associated packages and batch files I have included as part of the GCC-2.95.2/Mingw32 extension are provided "As-is" with out any guarantee of support or functionality from this author.
 | 
			
		||||
 | 
			
		||||
	Feel free to modify or change things as you see fit, just remember that
 | 
			
		||||
I can't support any modifications you might want to make to the files which I
 | 
			
		||||
have included OR the lgpl protected Mesa 3-D Graphics Library.
 | 
			
		||||
 | 
			
		||||
	I recommend using GCC-2.95.2/Mingw32 which is available at Mumit Khans' ftp site:
 | 
			
		||||
 | 
			
		||||
	EGCS-Mingw32 Beta 3.08 Archive Manifest:
 | 
			
		||||
		mingw32.bat
 | 
			
		||||
		src/makefile.nt4
 | 
			
		||||
		src/wmesa.c
 | 
			
		||||
		src-glu/makefile.nt4
 | 
			
		||||
		(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/)
 | 
			
		||||
 | 
			
		||||
###############
 | 
			
		||||
	This build has been tested under WinNT4/SP6.  Win9x and WinNT5 remain untested by me.  I have not tested any of the demos included with Mesa3d.
 | 
			
		||||
 | 
			
		||||
Greetings,
 | 
			
		||||
	I recommend using the GCC-2.95.2/Mingw32.
 | 
			
		||||
 | 
			
		||||
	In order to build the Mingw32 set of Mesa 3-D Graphics Library for Beta3.08
 | 
			
		||||
it will be necessary for you to use the Dos or Command Prompt that is available
 | 
			
		||||
on most of the i86 based MS Windows machines.  Also, I believe that this build
 | 
			
		||||
will run on Win95, Win98, WinNT4 and WinNT5.
 | 
			
		||||
 | 
			
		||||
	I haven't tested Win95/98 or WinNT5.  This build was generated under
 | 
			
		||||
WinNT4 with SP3 installed.
 | 
			
		||||
 | 
			
		||||
	This has not been tested under any systems outside of
 | 
			
		||||
a WinNT4 Workstation with EGCS-Mingw32 toolchain, v.1.0.2 installed.
 | 
			
		||||
 | 
			
		||||
	EGCS-Mingw32 uses a variation of gcc to handle its build.  The Mesa 3-D
 | 
			
		||||
Graphics Library build that I have generated is based, in small part, on the
 | 
			
		||||
Cygwin32 build and associated makefiles that Stephane Rehel (rehel@worldnet.fr)
 | 
			
		||||
defined back in 1997.  The EGCS-Mingw32 toolchain is capable of generating
 | 
			
		||||
native windows code and, as of the date of this readme, can be obtained from:
 | 
			
		||||
 | 
			
		||||
	http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs-mingw32-102.html
 | 
			
		||||
	ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95.2
 | 
			
		||||
 | 
			
		||||
	Much thanks to the combined efforts of Mumit Khan, Jan-Jaap Vanderhagen
 | 
			
		||||
and Colin Peters for making it possible for the EGCS-Mingw32 toolchain to exist.
 | 
			
		||||
and Colin Peters for making it possible for the Mingw32 toolchain to exist.  Also, thanks go out to Stephane Rehel for the work that was completed on the Cygwin build.
 | 
			
		||||
 | 
			
		||||
Installing EGCS-Mingw32 Build Revisions:
 | 
			
		||||
Installing GCC-2.95.2/Mingw32 Build:
 | 
			
		||||
 | 
			
		||||
	To install the makefile and source revisions incorporated with this build
 | 
			
		||||
of the Mesa 3-D Graphics Library, you'll have to use a version of winzip.  I am
 | 
			
		||||
in the process of finding a suitable Win32 compatible tar executable so that if
 | 
			
		||||
you don't have winzip, you can still decompress the files into their respective
 | 
			
		||||
folders/directories.
 | 
			
		||||
	a) Open the file archive (either tar.gz or .zip extensions)
 | 
			
		||||
 | 
			
		||||
	a) Move the mingw32.zip file to the top level of the hard drive on your
 | 
			
		||||
system.
 | 
			
		||||
	b) Decide the directory you want to move the archived files to.
 | 
			
		||||
 | 
			
		||||
	b) Copy all of the Beta 3.08 src/windows files to the src/ directory.
 | 
			
		||||
	d) Extract the files from the archive.
 | 
			
		||||
	
 | 
			
		||||
	e) Edit the mingw32.bat file to accomodate your choice of directory structure.
 | 
			
		||||
 | 
			
		||||
	b) Open the Winzip file
 | 
			
		||||
 | 
			
		||||
	c) Verify that the files will be properly extracted.
 | 
			
		||||
 | 
			
		||||
	d) Extract the files with the Winzip "Overwrite" and "Use Folder Names"
 | 
			
		||||
	   options enabled.
 | 
			
		||||
 | 
			
		||||
	The zip file directory structure extraction defaults to the top level of
 | 
			
		||||
the hard drive where the mingw32.zip file exists unless otherwise instructed by
 | 
			
		||||
you.
 | 
			
		||||
 | 
			
		||||
	The version of wmesa.c included with the mingw32 archive needs to replace
 | 
			
		||||
the current version of the Beta 3.08 wmesa.c file in order for the egcs-mingw32
 | 
			
		||||
build to work.  This is because the original Win32 stuff assumes that the glut
 | 
			
		||||
utilities are to be installed.  The Glut utilities are not part of the
 | 
			
		||||
egcs-mingw32 build for Beta 3.08.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Build Considerations:
 | 
			
		||||
 | 
			
		||||
	In order to get the build to work, I needed to create a special makefile
 | 
			
		||||
for each library which the Mesa 3-D Graphics Library requires since there is no
 | 
			
		||||
comparable make-config/config on a native windows platform.
 | 
			
		||||
 | 
			
		||||
	Since I was only creating a few of the possible libraries for 
 | 
			
		||||
Mesa (gl, glu), I only created the new make files in their respective libraries
 | 
			
		||||
src, src-glu).  For libMesaaux.a. you will find a makefile for it in the
 | 
			
		||||
src-aux directory.  libMesatk.a and libglut.a were not ported.
 | 
			
		||||
 | 
			
		||||
	The build itself is a .bat based build and uses Gnu Make,Version 3.76.1 to
 | 
			
		||||
process the makefiles noted above.  The build must be run from the directory
 | 
			
		||||
where the mingw32.bat file is.  You can get the binary version of Make 3.76.1
 | 
			
		||||
from Jan-Jaap van der Heijden's site in Germany:
 | 
			
		||||
 | 
			
		||||
	http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/download.html
 | 
			
		||||
 | 
			
		||||
	It was necessary to modify some source code, specifically the source code
 | 
			
		||||
in the src-glu directory.  I needed to modify nurbs.c, quadric.c and tess.c in
 | 
			
		||||
order to get them to work using the EGCS-Mingw32 toolchain.
 | 
			
		||||
 | 
			
		||||
	The original EGCS-Mingw32 Toolchain, is available from:
 | 
			
		||||
 | 
			
		||||
	http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs-mingw32-102.html	
 | 
			
		||||
		%mesaroot%:	This is your root directory (Mesa-3.2)
 | 
			
		||||
		%mesasrc%:	This is the Mesa-3.2 src directory (Mesa-3.2\src)
 | 
			
		||||
		%mesalib%:	This is where the build will put libGL.a and libGLU.a
 | 
			
		||||
 | 
			
		||||
Running the Build:
 | 
			
		||||
 | 
			
		||||
	Ok, now that we've got the basics out of the way, follows is all you need
 | 
			
		||||
to do in order to build the EGCS-Mingw32 version of libMesaGL.a and libMesaGLU.a:
 | 
			
		||||
 | 
			
		||||
	Open your Command Prompt/Dos prompt.
 | 
			
		||||
	Go to your Mesa-3.0 beta 'root' directory.
 | 
			
		||||
		This is the same directory that the Mesa mingw32.zip file was
 | 
			
		||||
		originally stored in if you've installed the Mesa-3.0 beta 3-D
 | 
			
		||||
		Graphics Library source as outlined in the "readme" file included
 | 
			
		||||
		with the Mesa-3.0 beta distribution.
 | 
			
		||||
	Open your Command Prompt or MS-DOS prompt.
 | 
			
		||||
	Go to your Mesa-3.2 'root' directory
 | 
			
		||||
	At the command line type: mingw32
 | 
			
		||||
		mingw32 is the .bat file that actually does the build.
 | 
			
		||||
 | 
			
		||||
	That's all there is to it.
 | 
			
		||||
 | 
			
		||||
	Enjoy!
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,7 @@
 | 
			
		||||
 | 
			
		||||
			Mesa 3.0 MITS Information
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This software is distributed under the terms of the GNU Library
 | 
			
		||||
General Public License, see the LICENSE file for details.
 | 
			
		||||
[The MITS code hasn't been update for Mesa 3.1 and may no longer work]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This document is a preliminary introduction to help you get
 | 
			
		||||
 
 | 
			
		||||
@@ -1,33 +1,54 @@
 | 
			
		||||
 | 
			
		||||
                         Mesa 3.0 Unix/X11 Information
 | 
			
		||||
                         Mesa 3.1 Unix/X11 Information
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Installation
 | 
			
		||||
============
 | 
			
		||||
 | 
			
		||||
To compile the library, first type 'make' alone to see the list of system
 | 
			
		||||
configurations currently supported.  If you see your configuration on the
 | 
			
		||||
list, type 'make <config>'.  Most popular Unix/X workstations are currently
 | 
			
		||||
supported.
 | 
			
		||||
There are two ways to compile Mesa on Unix/X11 systems:
 | 
			
		||||
 | 
			
		||||
1. The old way:
 | 
			
		||||
    First type 'make' alone to see the list of system
 | 
			
		||||
    configurations currently supported.  If you see your configuration on the
 | 
			
		||||
    list, type 'make <config>'.  Most popular Unix/X workstations are currently
 | 
			
		||||
    supported.
 | 
			
		||||
 | 
			
		||||
    If your system configuration is not listed by 'make', you'll have to modify
 | 
			
		||||
    the top-level Makefile and Make-config files.  There are instructions in
 | 
			
		||||
    each file.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
2. The new way:
 | 
			
		||||
    Type './configure' and then 'make'.  This uses GNU autoconfig.
 | 
			
		||||
    See docs/INSTALL for more details.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The top-level makefile will execute the makefiles in a number of sub-
 | 
			
		||||
directories.  When finished, the Mesa libraries will be in the Mesa-2.6/lib/
 | 
			
		||||
directories.  When finished, the Mesa libraries will be in the Mesa-3.1/lib/
 | 
			
		||||
directory.  A few GLUT demos in the demos/ directory should be ready to run.
 | 
			
		||||
 | 
			
		||||
If you also downloaded and unpacked the demos there should be executables
 | 
			
		||||
in the "xdemos/", "samples/", and "book/" directories for you to try out.
 | 
			
		||||
If you only want to compile the contents of one subdirectory you can 'cd'
 | 
			
		||||
to that directory and type 'make <config>' there.
 | 
			
		||||
 | 
			
		||||
If your system configuration is not listed by 'make', you'll have to modify
 | 
			
		||||
the top-level Makefile and Make-config files.  There are instructions in
 | 
			
		||||
each file.
 | 
			
		||||
 | 
			
		||||
If you have compilation problems you should try to fix them and return the
 | 
			
		||||
patches to the author.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Notes on assembly language optimizations:
 | 
			
		||||
 | 
			
		||||
   When using the old-style Makefiles, you can specify a configuration
 | 
			
		||||
   that uses X86 assembly language optimizations (linux-3dnow for example).
 | 
			
		||||
 | 
			
		||||
   The detection of MMX, 3DNow!, PIII/SSE, etc capability is done at
 | 
			
		||||
   runtime.  That means you can compile Mesa for 3DNow! optimizations
 | 
			
		||||
   even if you don't have an AMD CPU.
 | 
			
		||||
 | 
			
		||||
   However, your Linux binutils and assembler must understand the
 | 
			
		||||
   special instructions in order to compile them.  If you have
 | 
			
		||||
   compilation problems, try upgrading your binutils.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Header and library files:
 | 
			
		||||
   After you've compiled Mesa and tried the demos I recommend the following
 | 
			
		||||
   procedure for "installing" Mesa.
 | 
			
		||||
@@ -301,4 +322,4 @@ Summary of X-related environment variables:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------
 | 
			
		||||
$Id: README.X11,v 3.3 1999/09/15 16:39:01 brianp Exp $
 | 
			
		||||
$Id: README.X11,v 3.3.2.3 2000/01/25 17:18:46 brianp Exp $
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										146
									
								
								docs/RELNOTES-3.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								docs/RELNOTES-3.1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,146 @@
 | 
			
		||||
 | 
			
		||||
                         Mesa 3.1 release notes
 | 
			
		||||
 | 
			
		||||
                             PLEASE READ!!!!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
New copyright
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
Mesa 3.1 will be distributed under an XFree86-style copyright instead
 | 
			
		||||
of the GNU LGPL.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
New directories
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
All documentation files are now in the docs/ directory.
 | 
			
		||||
All shell scripts are now in the bin/ directory.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
New library names
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
Formerly, the main Mesa library was named libMesaGL.so (or libMesaGL.a)
 | 
			
		||||
and the GLU library was named libMesaGLU.so (or libMesaGLU.a).
 | 
			
		||||
 | 
			
		||||
Now, the main library is named libGL.so (or libGL.a) and the GLU library
 | 
			
		||||
is named libGLU.so (or libGLU.a).
 | 
			
		||||
 | 
			
		||||
The change allows Mesa to be more easily substituted for OpenGL.
 | 
			
		||||
Specifically, the linker/loader on some Unix-like systems won't
 | 
			
		||||
allow libMesaGL.so to be used instead of libGL.so if the application
 | 
			
		||||
was linked with the former.
 | 
			
		||||
 | 
			
		||||
Warning: if you have another OpenGL implementation installed on your
 | 
			
		||||
system (i.e. you have another OpenGL libGL.so) you'll have to be
 | 
			
		||||
carefull about which library (OpenGL or Mesa) you link against.  Be
 | 
			
		||||
aware of -L linker flags and the value of the LD_LIBRARY_PATH environment
 | 
			
		||||
variable.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
New library versioning
 | 
			
		||||
----------------------
 | 
			
		||||
 | 
			
		||||
Previously, the Mesa GL library was named libMesaGL.so.3.0
 | 
			
		||||
To better support Linux/OpenGL standards, the Mesa GL library is now
 | 
			
		||||
named libGL.so.1.2.030100  This indicates version 1.2 of the OpenGL spec
 | 
			
		||||
and Mesa implementation 3.1.0
 | 
			
		||||
 | 
			
		||||
In the long term this will allow better interoperability with other
 | 
			
		||||
OpenGL implementations, especially on Linux.  In the short term,
 | 
			
		||||
OpenGL apps may have to be relinked to use the new library naming.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
New makefiles
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
The old Makefiles found in the various directories have been renamed
 | 
			
		||||
to Makefile.X11 in order to prevent filename collisions with autoconfig-
 | 
			
		||||
generated Makefiles.
 | 
			
		||||
 | 
			
		||||
The top-level Makefile simply includes Makefile.X11
 | 
			
		||||
If your top-level Makefile get's overwritten/destroyed you can restore
 | 
			
		||||
it by copying Makefile.X11 to Makefile
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
New extensions
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
GL_EXT_stencil_wrap
 | 
			
		||||
	Implements two new stencil operations: GL_INCR_WRAP_EXT and
 | 
			
		||||
	GL_DECR_WRAP_EXT which allow stencil increment and decrement
 | 
			
		||||
	without clamping.
 | 
			
		||||
 | 
			
		||||
GL_INGR_blend_func_separate
 | 
			
		||||
	Allows specification of blend factors for RGB and Alpha independently.
 | 
			
		||||
	(INGR = Intergraph)
 | 
			
		||||
 | 
			
		||||
GL_ARB_multitexture
 | 
			
		||||
	Multiple simultaneous textures.  (ARB = Architecture Review Board)
 | 
			
		||||
 | 
			
		||||
GL_NV_texgen_reflection
 | 
			
		||||
	nVidia texgen extension for better reflection mapping.
 | 
			
		||||
 | 
			
		||||
GL_PGI_misc_hints
 | 
			
		||||
	Assorted transformation hints.
 | 
			
		||||
 | 
			
		||||
GL_EXT_compiled_vertex_array
 | 
			
		||||
	Compiled vertex arrays.
 | 
			
		||||
 | 
			
		||||
GL_EXT_clip_volume_hint
 | 
			
		||||
	Allows one to disable clip volume (frustum) testing.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Extensions removed
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
GL_EXT_multitexture - obsolete in favor of GL_ARB_multitexture
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Config file
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
By default, /etc/mesa.conf will be read when Mesa starts.  This
 | 
			
		||||
file controls default hints, enable/disable of extensions, and
 | 
			
		||||
more.  See the CONFIG file for documentation.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Optimizations
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
Keith Whitwell has contributed significant optimizations to Mesa's
 | 
			
		||||
vertex transformation code.  Basically, the whole transformation
 | 
			
		||||
stage of Mesa has been rewritten.
 | 
			
		||||
 | 
			
		||||
It's impossible to give a speedup factor.  You'll just have to
 | 
			
		||||
try your app and see how it performs.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Device Driver changes
 | 
			
		||||
---------------------
 | 
			
		||||
 | 
			
		||||
A bunch of new device driver functions have been added.  See src/dd.h
 | 
			
		||||
Keith Harrison contributed many of them.  I've been planning on adding
 | 
			
		||||
a bunch of functions like these to make writing hardware drivers easier.
 | 
			
		||||
More such function will probably be added in the near future.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Miscellaneous
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
util/glstate.c has some handy functions for debugging.  Basically, it
 | 
			
		||||
offers a simple function for printing GL state variables.  It's not
 | 
			
		||||
finished yet.  There's a LOT more GLenum records to be added (see the
 | 
			
		||||
code).  Anyone want to help?
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----------------------------------------------------------------------
 | 
			
		||||
$Id: RELNOTES-3.1,v 1.1.2.1 2000/02/22 17:56:56 brianp Exp $
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
$Id: VERSIONS,v 1.13 1999/09/19 20:09:00 tanner Exp $
 | 
			
		||||
$Id: VERSIONS,v 1.13.2.24 2000/03/23 00:12:41 brianp Exp $
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Mesa Version History
 | 
			
		||||
@@ -659,3 +659,52 @@ Mesa Version History
 | 
			
		||||
	- New library numbering: libGL.so.1.2.310
 | 
			
		||||
	- New subdirectories:  docs/ and bin/
 | 
			
		||||
	- New Makefile-system (autoconf,automake,libtool)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
3.1 final  December 14, 1999
 | 
			
		||||
    New:
 | 
			
		||||
	- added demos/gloss.c
 | 
			
		||||
	- added xdemos/glxdpyinfo.c
 | 
			
		||||
	- added GLX_ARB_get_proc_address extension
 | 
			
		||||
    Bug fixes:
 | 
			
		||||
	- several vertex array bug fixes
 | 
			
		||||
	- overlapping glCopyPixels with pixel zooming now works
 | 
			
		||||
	- glXUseXFont() bitmaps were vertically shifted by one pixel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
3.2 beta 1 March 23, 2000
 | 
			
		||||
    Bug fixes:
 | 
			
		||||
	- mixed drawing of lines and bitmaps sometimes had wrong colors
 | 
			
		||||
	- added missing glHintPGI() function
 | 
			
		||||
	- fixed a polygon culling bug
 | 
			
		||||
	- fixed bugs in gluPartialDisk()
 | 
			
		||||
	- Z values in selection mode were wrong
 | 
			
		||||
	- added missing tokens:
 | 
			
		||||
		GL_SMOOTH_POINT_SIZE_RANGE
 | 
			
		||||
		GL_SMOOTH_POINT_SIZE_GRANULARITY
 | 
			
		||||
		GL_SMOOTH_LINE_WIDTH_RANGE
 | 
			
		||||
		GL_SMOOTH_LINE_WIDTH_GRANULARITY
 | 
			
		||||
		GL_ALIASED_POINT_SIZE_RANGE
 | 
			
		||||
		GL_ALIASED_LINE_WIDTH_RANGE
 | 
			
		||||
	- fixed glCopyPixels when copying from back to front buffer
 | 
			
		||||
	- GL_EXT_compiled_vertex_array tokens had _SGI suffix instead of _EXT
 | 
			
		||||
	- glDrawRangeElements(GL_LINES, 0, 1, 2, type, indices) was broken
 | 
			
		||||
	- glDeleteTextures() didn't decrement reference count correctly
 | 
			
		||||
	- GL_SRCA_ALPHA_SATURATE blend mode didn't work correctly
 | 
			
		||||
	- Actual depth of transformation matrix stacks was off by one
 | 
			
		||||
	- 24bpp visuals didn't address pixels correctly
 | 
			
		||||
	- mipmap level of detail (lambda) calculation simplified, more accurate
 | 
			
		||||
	- 101691 - Polygon clipping and GL_LINE
 | 
			
		||||
	- 101928 - Polygon clipping and GL_LINE (same fix as above)
 | 
			
		||||
	- 101808 - Non-glVertexArrays tristrip bug
 | 
			
		||||
	- 101971 - find_last_3f on Dec OSF (worked around)
 | 
			
		||||
	- 102369 - segv on dec osf (possibly a duplicate of the above)
 | 
			
		||||
	- 102893 - orientations of modelview cause segfault
 | 
			
		||||
    New:
 | 
			
		||||
	- updated SVGA Linux driver
 | 
			
		||||
	- added the MESA_FX_NO_SIGNALS env var, see docs/README.3DFX
 | 
			
		||||
	- build libGLw.a (Xt/OpenGL drawing area widget) library by default
 | 
			
		||||
	- changed -O2 to -O3 for a number of gcc configs
 | 
			
		||||
    Changes:
 | 
			
		||||
        - glXCopyContext's mask parameter is now unsigned long, per GLX spec
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
/* $Id: amesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
 | 
			
		||||
/* $Id: amesa.h,v 1.1.1.1.2.1 2000/02/09 18:53:54 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -25,25 +25,17 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: amesa.h,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1  1999/03/16 01:24:13  brianp
 | 
			
		||||
 * initial check-in
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Allegro (DJGPP) driver by Bernhard Tschirren (bernie-t@geocities.com) */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef AMESA_H
 | 
			
		||||
#define AMESA_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define AMESA_MAJOR_VERSION 3
 | 
			
		||||
#define AMESA_MINOR_VERSION 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct amesa_visual  *AMesaVisual;
 | 
			
		||||
typedef struct amesa_buffer  *AMesaBuffer;
 | 
			
		||||
typedef struct amesa_context *AMesaContext;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,40 +1,27 @@
 | 
			
		||||
/* $Id: fxmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
 | 
			
		||||
/* $Id: fxmesa.h,v 1.1.1.1.2.2 2000/02/09 18:53:55 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: fxmesa.h,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 3.2  1999/01/03 02:46:31  brianp
 | 
			
		||||
 * now using GLAPI and GLAPIENTRY keywords (Ted Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 3.1  1998/04/01 03:00:28  brianp
 | 
			
		||||
 * updated for v0.24 of 3Dfx/Glide driver
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 3.0  1998/02/20 05:04:45  brianp
 | 
			
		||||
 * initial rev
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -58,7 +45,7 @@ extern "C" {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FXMESA_MAJOR_VERSION 3
 | 
			
		||||
#define FXMESA_MINOR_VERSION 0
 | 
			
		||||
#define FXMESA_MINOR_VERSION 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: ggimesa.h,v 1.2 1999/08/23 22:34:08 jtaylor Exp $ */
 | 
			
		||||
/* $Id: ggimesa.h,v 1.2.2.1 2000/02/09 18:53:55 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-1998  Brian Paul
 | 
			
		||||
 * Copyright (C) 1998  Uwe Maurer
 | 
			
		||||
 *
 | 
			
		||||
@@ -22,23 +22,14 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: ggimesa.h,v $
 | 
			
		||||
 * Revision 1.2  1999/08/23 22:34:08  jtaylor
 | 
			
		||||
 * Misc small cleanups
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1998/09/29 01:46:40  brianp
 | 
			
		||||
 * applied Emmanuel Marty's patches for latest GGI
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef GGIMESA_H
 | 
			
		||||
#define GGIMESA_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define GGIMESA_MAJOR_VERSION 3
 | 
			
		||||
#define GGIMESA_MINOR_VERSION 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2485
									
								
								include/GL/gl.h
									
									
									
									
									
								
							
							
						
						
									
										2485
									
								
								include/GL/gl.h
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: gl_mangle.h,v 1.3 1999/11/04 00:43:09 miklos Exp $ */
 | 
			
		||||
/* $Id: gl_mangle.h,v 1.3.2.1 2000/01/04 08:08:28 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
@@ -396,6 +396,8 @@
 | 
			
		||||
#define glTexSubImage3DEXT mglTexSubImage3DEXT
 | 
			
		||||
#define glCopyTexSubImage3DEXT mglCopyTexSubImage3DEXT
 | 
			
		||||
#define glColorTable mglColorTable
 | 
			
		||||
#define glColorTableParameteriv mglColorTableParameteriv
 | 
			
		||||
#define glColorTableParameterfv mglColorTableParameterfv
 | 
			
		||||
#define glColorSubTable mglColorSubTable
 | 
			
		||||
#define glGetColorTable mglGetColorTable
 | 
			
		||||
#define glGetColorTableParameteriv mglGetColorTableParameteriv 
 | 
			
		||||
 
 | 
			
		||||
@@ -108,7 +108,7 @@ extern _CRTIMP void __cdecl exit(int);
 | 
			
		||||
   and redifinition of Windows system defs, also removes requirement of
 | 
			
		||||
   pretty much any standard windows header from this file */
 | 
			
		||||
 | 
			
		||||
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
 | 
			
		||||
#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__)
 | 
			
		||||
#	define GLUTAPIENTRY __stdcall
 | 
			
		||||
#else
 | 
			
		||||
#	define GLUTAPIENTRY
 | 
			
		||||
@@ -152,7 +152,7 @@ typedef unsigned long COLORREF;
 | 
			
		||||
#		define wglUseFontOutlines  wglUseFontOutlinesA
 | 
			
		||||
#	endif /* !UNICODE */
 | 
			
		||||
typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
 | 
			
		||||
typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT
 | 
			
		||||
typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
 | 
			
		||||
#  pragma warning( push )
 | 
			
		||||
#  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */
 | 
			
		||||
#  define WGLAPI __declspec(dllimport)
 | 
			
		||||
@@ -183,7 +183,7 @@ WGLAPI int   GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, u
 | 
			
		||||
WGLAPI int   GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
 | 
			
		||||
WGLAPI int   GLAPIENTRY SwapBuffers(HDC);
 | 
			
		||||
WGLAPI int   GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *);
 | 
			
		||||
WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned long,LPPIXELFORMATDESCRIPTOR);
 | 
			
		||||
WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,LPPIXELFORMATDESCRIPTOR);
 | 
			
		||||
WGLAPI int   GLAPIENTRY GetPixelFormat(HDC);
 | 
			
		||||
WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *);
 | 
			
		||||
#  undef WGLAPI
 | 
			
		||||
@@ -739,7 +739,6 @@ GLUTAPI int GLUTAPIENTRY glutGameModeGet(GLenum mode);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
/* $Id: glx.h,v 1.6 1999/11/11 01:27:17 brianp Exp $ */
 | 
			
		||||
/* $Id: glx.h,v 1.5.2.3 2000/02/23 23:05:07 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.3
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -50,41 +50,38 @@ extern "C" {
 | 
			
		||||
 | 
			
		||||
#define GLX_VERSION_1_1		1
 | 
			
		||||
 | 
			
		||||
#define GLX_EXTENSION_NAME   "GLX"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Tokens for glXChooseVisual and glXGetConfig:
 | 
			
		||||
 */
 | 
			
		||||
#define GLX_USE_GL		1
 | 
			
		||||
#define GLX_BUFFER_SIZE		2
 | 
			
		||||
#define GLX_LEVEL		3
 | 
			
		||||
#define GLX_RGBA		4
 | 
			
		||||
#define GLX_DOUBLEBUFFER	5
 | 
			
		||||
#define GLX_STEREO		6
 | 
			
		||||
#define GLX_AUX_BUFFERS		7
 | 
			
		||||
#define GLX_RED_SIZE		8
 | 
			
		||||
#define GLX_GREEN_SIZE		9
 | 
			
		||||
#define GLX_BLUE_SIZE		10
 | 
			
		||||
#define GLX_ALPHA_SIZE		11
 | 
			
		||||
#define GLX_DEPTH_SIZE		12
 | 
			
		||||
#define GLX_STENCIL_SIZE	13
 | 
			
		||||
#define GLX_ACCUM_RED_SIZE	14
 | 
			
		||||
#define GLX_ACCUM_GREEN_SIZE	15
 | 
			
		||||
#define GLX_ACCUM_BLUE_SIZE	16
 | 
			
		||||
#define GLX_ACCUM_ALPHA_SIZE	17
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* GLX_EXT_visual_info extension */
 | 
			
		||||
#define GLX_X_VISUAL_TYPE_EXT		0x22
 | 
			
		||||
#define GLX_TRANSPARENT_TYPE_EXT	0x23
 | 
			
		||||
#define GLX_TRANSPARENT_INDEX_VALUE_EXT	0x24
 | 
			
		||||
#define GLX_TRANSPARENT_RED_VALUE_EXT	0x25
 | 
			
		||||
#define GLX_TRANSPARENT_GREEN_VALUE_EXT	0x26
 | 
			
		||||
#define GLX_TRANSPARENT_BLUE_VALUE_EXT	0x27
 | 
			
		||||
#define GLX_TRANSPARENT_ALPHA_VALUE_EXT	0x28
 | 
			
		||||
enum _GLX_CONFIGS {
 | 
			
		||||
	GLX_USE_GL		= 1,
 | 
			
		||||
	GLX_BUFFER_SIZE		= 2,
 | 
			
		||||
	GLX_LEVEL		= 3,
 | 
			
		||||
	GLX_RGBA		= 4,
 | 
			
		||||
	GLX_DOUBLEBUFFER	= 5, 
 | 
			
		||||
	GLX_STEREO		= 6,
 | 
			
		||||
	GLX_AUX_BUFFERS		= 7,
 | 
			
		||||
	GLX_RED_SIZE		= 8,
 | 
			
		||||
	GLX_GREEN_SIZE		= 9,
 | 
			
		||||
	GLX_BLUE_SIZE		= 10,
 | 
			
		||||
	GLX_ALPHA_SIZE		= 11,
 | 
			
		||||
	GLX_DEPTH_SIZE		= 12,
 | 
			
		||||
	GLX_STENCIL_SIZE	= 13,
 | 
			
		||||
	GLX_ACCUM_RED_SIZE	= 14,
 | 
			
		||||
	GLX_ACCUM_GREEN_SIZE	= 15,
 | 
			
		||||
	GLX_ACCUM_BLUE_SIZE	= 16,
 | 
			
		||||
	GLX_ACCUM_ALPHA_SIZE	= 17,
 | 
			
		||||
 | 
			
		||||
	/* GLX_EXT_visual_info extension */
 | 
			
		||||
	GLX_X_VISUAL_TYPE_EXT		= 0x22,
 | 
			
		||||
	GLX_TRANSPARENT_TYPE_EXT	= 0x23,
 | 
			
		||||
	GLX_TRANSPARENT_INDEX_VALUE_EXT	= 0x24,
 | 
			
		||||
	GLX_TRANSPARENT_RED_VALUE_EXT	= 0x25,
 | 
			
		||||
	GLX_TRANSPARENT_GREEN_VALUE_EXT	= 0x26,
 | 
			
		||||
	GLX_TRANSPARENT_BLUE_VALUE_EXT	= 0x27,
 | 
			
		||||
	GLX_TRANSPARENT_ALPHA_VALUE_EXT	= 0x28
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -125,12 +122,12 @@ extern "C" {
 | 
			
		||||
 * Compile-time extension tests
 | 
			
		||||
 */
 | 
			
		||||
#define GLX_EXT_visual_info		1
 | 
			
		||||
#define GLX_EXT_get_proc_address	1
 | 
			
		||||
#define GLX_MESA_pixmap_colormap	1
 | 
			
		||||
#define GLX_MESA_release_buffers	1
 | 
			
		||||
#define GLX_MESA_copy_sub_buffer	1
 | 
			
		||||
#define GLX_MESA_set_3dfx_mode		1
 | 
			
		||||
#define GLX_SGI_video_sync		1
 | 
			
		||||
#define GLX_ARB_get_proc_address	1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -159,7 +156,7 @@ extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
 | 
			
		||||
			    GLXContext ctx);
 | 
			
		||||
 | 
			
		||||
extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
 | 
			
		||||
			    GLuint mask );
 | 
			
		||||
			    unsigned long mask );
 | 
			
		||||
 | 
			
		||||
extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
 | 
			
		||||
 | 
			
		||||
@@ -222,6 +219,10 @@ extern int glXWaitVideoSyncSGI(int divisor, int remainder,
 | 
			
		||||
                               unsigned int *count);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* GLX_ARB_get_proc_address */
 | 
			
		||||
extern void (*glXGetProcAddressARB(const GLubyte *procName))();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,46 @@
 | 
			
		||||
/* $Id: mesa_wgl.h,v 1.2.2.2 1999/11/22 14:05:15 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* prototypes for the Mesa WGL functions */
 | 
			
		||||
/* relocated here so that I could make GLUT get them properly */
 | 
			
		||||
 | 
			
		||||
#ifndef GL_H
 | 
			
		||||
#   include <gl/gl.h>
 | 
			
		||||
#ifndef _mesa_wgl_h_
 | 
			
		||||
#define _mesa_wgl_h_
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <gl/gl.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
#  pragma warning( disable : 4615 ) /* pragma warning : unknown user warning type*/
 | 
			
		||||
#  pragma warning( push )
 | 
			
		||||
#  pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */
 | 
			
		||||
#endif
 | 
			
		||||
@@ -37,10 +72,17 @@ WGLAPI int   GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, u
 | 
			
		||||
WGLAPI int   GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT);
 | 
			
		||||
WGLAPI int   GLAPIENTRY SwapBuffers(HDC);
 | 
			
		||||
WGLAPI int   GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *);
 | 
			
		||||
WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,PIXELFORMATDESCRIPTOR *);
 | 
			
		||||
WGLAPI int   GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,LPPIXELFORMATDESCRIPTOR);
 | 
			
		||||
WGLAPI int   GLAPIENTRY GetPixelFormat(HDC);
 | 
			
		||||
WGLAPI int   GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *);
 | 
			
		||||
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
#  pragma warning( pop )
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* _mesa_wgl_h_ */
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
/* $Id: osmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
 | 
			
		||||
/* $Id: osmesa.h,v 1.1.1.1.2.2 2000/02/09 18:53:55 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -25,26 +25,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: osmesa.h,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.4  1999/02/14 03:39:09  brianp
 | 
			
		||||
 * new copyright
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1999/01/03 02:52:30  brianp
 | 
			
		||||
 * now using GLAPI and GLAPIENTRY keywords (Ted Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1998/07/26 01:33:51  brianp
 | 
			
		||||
 * added WINGDIAPI and APIENTRY keywords per Ted Jump
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1  1998/02/13 03:17:50  brianp
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa Off-Screen rendering interface.
 | 
			
		||||
 *
 | 
			
		||||
@@ -86,7 +66,7 @@ extern "C" {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define OSMESA_MAJOR_VERSION 3
 | 
			
		||||
#define OSMESA_MINOR_VERSION 0
 | 
			
		||||
#define OSMESA_MINOR_VERSION 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
/* $Id: svgamesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
 | 
			
		||||
/* $Id: svgamesa.h,v 1.1.1.1.2.2 2000/01/22 19:58:02 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.0
 | 
			
		||||
 * Copyright (C) 1995-1998  Brian Paul
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
@@ -21,18 +21,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: svgamesa.h,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 3.0  1998/02/20 05:07:24  brianp
 | 
			
		||||
 * initial rev
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA/Mesa interface for Linux.
 | 
			
		||||
 */
 | 
			
		||||
@@ -65,7 +53,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SVGAMESA_MAJOR_VERSION 3
 | 
			
		||||
#define SVGAMESA_MINOR_VERSION 0
 | 
			
		||||
#define SVGAMESA_MINOR_VERSION 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
@@ -87,16 +75,21 @@ typedef struct svgamesa_context *SVGAMesaContext;
 | 
			
		||||
/*
 | 
			
		||||
 * doubleBuffer flag new in version 2.4
 | 
			
		||||
 */
 | 
			
		||||
extern int SVGAMesaInit( int GraphMode );
 | 
			
		||||
 | 
			
		||||
extern int SVGAMesaClose( void );
 | 
			
		||||
 | 
			
		||||
extern SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer );
 | 
			
		||||
 | 
			
		||||
extern void SVGAMesaDestroyContext( SVGAMesaContext ctx );
 | 
			
		||||
 | 
			
		||||
extern void SVGAMesaMakeCurrent( SVGAMesaContext ctx );
 | 
			
		||||
 | 
			
		||||
extern SVGAMesaContext SVGAMesaGetCurrentContext( void );
 | 
			
		||||
 | 
			
		||||
extern void SVGAMesaSwapBuffers( void );
 | 
			
		||||
 | 
			
		||||
extern void SVGAMesaSetCI(int ndx, GLubyte red, GLubyte green, GLubyte blue);
 | 
			
		||||
 | 
			
		||||
extern SVGAMesaContext SVGAMesaGetCurrentContext( void );
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
/* $Id: xmesa.h,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
 | 
			
		||||
/* $Id: xmesa.h,v 1.1.1.1.2.3 2000/02/09 18:53:55 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -25,23 +25,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: xmesa.h,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1999/02/24 22:43:27  jens
 | 
			
		||||
 * Name changes to get XMesa to compile standalone inside XFree86
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1999/02/14 03:39:09  brianp
 | 
			
		||||
 * new copyright
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1  1998/02/13 03:17:32  brianp
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa/X11 interface.  This header file serves as the documentation for
 | 
			
		||||
 * the Mesa/X11 interface functions.
 | 
			
		||||
@@ -96,6 +79,9 @@ extern "C" {
 | 
			
		||||
#include <X11/Xlib.h>
 | 
			
		||||
#include <X11/Xutil.h>
 | 
			
		||||
#include "xmesa_x.h"
 | 
			
		||||
#ifdef GLX_DIRECT_RENDERING
 | 
			
		||||
#include "dri_mesa.h"
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#include "GL/gl.h"
 | 
			
		||||
 | 
			
		||||
@@ -106,7 +92,7 @@ extern struct Library *XLibBase;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define XMESA_MAJOR_VERSION 3
 | 
			
		||||
#define XMESA_MINOR_VERSION 0
 | 
			
		||||
#define XMESA_MINOR_VERSION 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -131,7 +117,17 @@ typedef struct xmesa_visual *XMesaVisual;
 | 
			
		||||
 | 
			
		||||
typedef struct xmesa_buffer *XMesaBuffer;
 | 
			
		||||
 | 
			
		||||
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
 | 
			
		||||
/*
 | 
			
		||||
 * Initialize the XMesa driver.
 | 
			
		||||
 */
 | 
			
		||||
extern GLboolean XMesaInitDriver( __DRIscreenPrivate *driScrnPriv );
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Reset the XMesa driver when the X server resets.
 | 
			
		||||
 */
 | 
			
		||||
extern void XMesaResetDriver( __DRIscreenPrivate *driScrnPriv );
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -179,7 +175,11 @@ extern void XMesaDestroyVisual( XMesaVisual v );
 | 
			
		||||
 * Return:  an XMesaContext or NULL if error.
 | 
			
		||||
 */
 | 
			
		||||
extern XMesaContext XMesaCreateContext( XMesaVisual v,
 | 
			
		||||
					XMesaContext share_list );
 | 
			
		||||
					XMesaContext share_list
 | 
			
		||||
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
 | 
			
		||||
					, __DRIcontextPrivate *driContextPriv
 | 
			
		||||
#endif
 | 
			
		||||
				      );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -192,7 +192,12 @@ extern void XMesaDestroyContext( XMesaContext c );
 | 
			
		||||
 * Create an XMesaBuffer from an X window.
 | 
			
		||||
 */
 | 
			
		||||
extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v,
 | 
			
		||||
					    XMesaWindow w );
 | 
			
		||||
					    XMesaWindow w
 | 
			
		||||
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
 | 
			
		||||
					    , __DRIdrawablePrivate *driDrawPriv
 | 
			
		||||
#endif
 | 
			
		||||
					  );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -200,7 +205,12 @@ extern XMesaBuffer XMesaCreateWindowBuffer( XMesaVisual v,
 | 
			
		||||
 */
 | 
			
		||||
extern XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v,
 | 
			
		||||
					    XMesaPixmap p,
 | 
			
		||||
					    XMesaColormap cmap );
 | 
			
		||||
					    XMesaColormap cmap
 | 
			
		||||
#if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server)
 | 
			
		||||
					    , __DRIdrawablePrivate *driDrawPriv
 | 
			
		||||
#endif
 | 
			
		||||
					  );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 * Authors:
 | 
			
		||||
 *   Kevin E. Martin <kevin@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_xf86.h,v 1.1 1999/08/19 00:55:40 jtg Exp $
 | 
			
		||||
 * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/include/GL/xmesa_xf86.h,v 1.1.1.1.2.1 1999/12/13 21:54:19 brianp Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _XMESA_XF86_H_
 | 
			
		||||
@@ -52,29 +52,29 @@ typedef DDXPointRec XMesaPoint;
 | 
			
		||||
typedef xColorItem  XMesaColor;
 | 
			
		||||
 | 
			
		||||
#define XMesaSetGeneric(__d,__gc,__val,__mask) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    CARD32 __v[1]; \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    __v[0] = __val; \
 | 
			
		||||
    dixChangeGC(NullClient, __gc, __mask, __v, NULL); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaSetGenericPtr(__d,__gc,__pval,__mask) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    ChangeGCVal __v[1]; \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    __v[0].ptr = __pval; \
 | 
			
		||||
    dixChangeGC(NullClient, __gc, __mask, NULL, __v); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaSetDashes(__d,__gc,__do,__dl,__n) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    SetDashes(__gc, __do, __n, (unsigned char *)__dl); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaSetLineAttributes(__d,__gc,__lw,__ls,__cs,__js) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    CARD32 __v[4]; \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    __v[0] = __lw; \
 | 
			
		||||
@@ -84,7 +84,7 @@ typedef xColorItem  XMesaColor;
 | 
			
		||||
    dixChangeGC(NullClient, __gc, \
 | 
			
		||||
		GCLineWidth|GCLineStyle|GCCapStyle|GCJoinStyle, \
 | 
			
		||||
		__v, NULL); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaSetForeground(d,gc,v) XMesaSetGeneric(d,gc,v,GCForeground)
 | 
			
		||||
#define XMesaSetBackground(d,gc,v) XMesaSetGeneric(d,gc,v,GCBackground)
 | 
			
		||||
@@ -96,24 +96,24 @@ typedef xColorItem  XMesaColor;
 | 
			
		||||
#define XMesaSetStipple(d,gc,v)    XMesaSetGenericPtr(d,gc,v,GCStipple)
 | 
			
		||||
 | 
			
		||||
#define XMesaDrawPoint(__d,__b,__gc,__x,__y) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    XMesaPoint __p[1]; \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    __p[0].x = __x; \
 | 
			
		||||
    __p[0].y = __y; \
 | 
			
		||||
    ValidateGC(__b, __gc); \
 | 
			
		||||
    (*gc->ops->PolyPoint)(__b, __gc, CoordModeOrigin, 1, __p); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaDrawPoints(__d,__b,__gc,__p,__n,__m) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    ValidateGC(__b, __gc); \
 | 
			
		||||
    (*gc->ops->PolyPoint)(__b, __gc, __m, __n, __p); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaDrawLine(__d,__b,__gc,__x0,__y0,__x1,__y1) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    XMesaPoint __p[2]; \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    ValidateGC(__b, __gc); \
 | 
			
		||||
@@ -122,10 +122,10 @@ typedef xColorItem  XMesaColor;
 | 
			
		||||
    __p[1].x = __x1; \
 | 
			
		||||
    __p[1].y = __y1; \
 | 
			
		||||
    (*__gc->ops->Polylines)(__b, __gc, CoordModeOrigin, 2, __p); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaFillRectangle(__d,__b,__gc,__x,__y,__w,__h) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    xRectangle __r[1]; \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    ValidateGC(__b, __gc); \
 | 
			
		||||
@@ -134,10 +134,10 @@ typedef xColorItem  XMesaColor;
 | 
			
		||||
    __r[0].width = __w; \
 | 
			
		||||
    __r[0].height = __h; \
 | 
			
		||||
    (*__gc->ops->PolyFillRect)(__b, __gc, 1, __r); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaPutImage(__d,__b,__gc,__i,__sx,__sy,__x,__y,__w,__h) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    /* Assumes: Images are always in ZPixmap format */ \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    if (__sx || __sy) /* The non-trivial case */ \
 | 
			
		||||
@@ -146,22 +146,22 @@ typedef xColorItem  XMesaColor;
 | 
			
		||||
    (*__gc->ops->PutImage)(__b, __gc, ((XMesaDrawable)(__b))->depth, \
 | 
			
		||||
			   __x, __y, __w, __h, 0, ZPixmap, \
 | 
			
		||||
			   ((XMesaImage *)(__i))->data); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaCopyArea(__d,__sb,__db,__gc,__sx,__sy,__w,__h,__x,__y) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    ValidateGC(__db, __gc); \
 | 
			
		||||
    (*__gc->ops->CopyArea)((DrawablePtr)__sb, __db, __gc, \
 | 
			
		||||
			   __sx, __sy, __w, __h, __x, __y); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define XMesaFillPolygon(__d,__b,__gc,__p,__n,__s,__m) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    ValidateGC(__b, __gc); \
 | 
			
		||||
    (*__gc->ops->FillPolygon)(__b, __gc, __s, __m, __n, __p); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
/* CreatePixmap returns a PixmapPtr; so, it cannot be inside braces */
 | 
			
		||||
#define XMesaCreatePixmap(__d,__b,__w,__h,__depth) \
 | 
			
		||||
@@ -170,10 +170,10 @@ typedef xColorItem  XMesaColor;
 | 
			
		||||
    (*__d->DestroyPixmap)(__b)
 | 
			
		||||
 | 
			
		||||
#define XMesaFreeGC(__d,__gc) \
 | 
			
		||||
{ \
 | 
			
		||||
do { \
 | 
			
		||||
    (void) __d; \
 | 
			
		||||
    FreeScratchGC(__gc); \
 | 
			
		||||
}
 | 
			
		||||
} while (0)
 | 
			
		||||
 | 
			
		||||
#define GET_COLORMAP_SIZE(__v)  __v->visinfo->ColormapEntries
 | 
			
		||||
#define GET_REDMASK(__v)        __v->visinfo->redMask
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
 | 
			
		||||
/* $Id: gamma.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
 | 
			
		||||
/* $Id: gamma.c,v 1.1.1.1.2.1 2000/03/18 01:14:01 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/* Draw test patterns to help determine correct gamma value for a display.
 | 
			
		||||
   When the intensities of the inner squares nearly match the intensities
 | 
			
		||||
@@ -25,8 +25,14 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: gamma.c,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 * Revision 1.1.1.1.2.1  2000/03/18 01:14:01  brianp
 | 
			
		||||
 * colors were computed incorrectly (Hans Nelles)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  2000/03/18 01:13:29  brianp
 | 
			
		||||
 * colors were computed incorrectly (Hans Nelles)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 3.1  1999/06/19 01:35:38  brianp
 | 
			
		||||
 * merged in Kai Schuetz's RGB changes
 | 
			
		||||
@@ -130,8 +136,9 @@ gamma_ramp(GLfloat yoffs, GLfloat r, GLfloat g, GLfloat b)
 | 
			
		||||
 | 
			
		||||
  for(d = 1; d < 4; d++) {  /* increasing density from 25% to 75% */
 | 
			
		||||
    GLfloat xcoord = (-1.0 + d*0.4);
 | 
			
		||||
    GLfloat t = d * 0.25;
 | 
			
		||||
 | 
			
		||||
    glColor3f(r*d / 5.0, g*d / 5.0, b*d / 5.0); /* draw outer rect */
 | 
			
		||||
    glColor3f(r*t, g*t, b*t); /* draw outer rect */
 | 
			
		||||
    glRectf(xcoord, yoffs, xcoord+0.4, yoffs + 0.5);
 | 
			
		||||
 | 
			
		||||
    glColor3f(0.0, 0.0, 0.0);   /* "clear" inner rect */
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,10 @@
 | 
			
		||||
/* $Id: morph3d.c,v 1.2 1999/09/17 12:27:01 brianp Exp $ */
 | 
			
		||||
/* $Id: morph3d.c,v 1.2.2.1 1999/12/15 13:00:24 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: morph3d.c,v $
 | 
			
		||||
 * Revision 1.2.2.1  1999/12/15 13:00:24  brianp
 | 
			
		||||
 * moved #define to column 0
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1999/09/17 12:27:01  brianp
 | 
			
		||||
 * silenced some warnings
 | 
			
		||||
 *
 | 
			
		||||
@@ -498,7 +501,7 @@ static void draw_dodeca( void )
 | 
			
		||||
{
 | 
			
		||||
  GLuint list;
 | 
			
		||||
 | 
			
		||||
  #define TAU ((SQRT5+1)/2)
 | 
			
		||||
#define TAU ((SQRT5+1)/2)
 | 
			
		||||
 | 
			
		||||
  list = glGenLists( 1 );
 | 
			
		||||
  glNewList( list, GL_COMPILE );
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: multiarb.c,v 1.3 1999/10/21 16:40:32 brianp Exp $ */
 | 
			
		||||
/* $Id: multiarb.c,v 1.3.2.2 2000/02/02 17:32:15 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * GL_ARB_multitexture demo
 | 
			
		||||
@@ -12,6 +12,12 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: multiarb.c,v $
 | 
			
		||||
 * Revision 1.3.2.2  2000/02/02 17:32:15  brianp
 | 
			
		||||
 * changed > to >=
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3.2.1  2000/02/02 01:08:09  brianp
 | 
			
		||||
 * limit Drift to [0, 1]
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1999/10/21 16:40:32  brianp
 | 
			
		||||
 * added -info command line option
 | 
			
		||||
 *
 | 
			
		||||
@@ -61,6 +67,8 @@ static void Idle( void )
 | 
			
		||||
{
 | 
			
		||||
   if (Animate) {
 | 
			
		||||
      Drift += 0.05;
 | 
			
		||||
      if (Drift >= 1.0)
 | 
			
		||||
         Drift = 0.0;
 | 
			
		||||
 | 
			
		||||
#ifdef GL_ARB_multitexture
 | 
			
		||||
      glActiveTextureARB(GL_TEXTURE0_ARB);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: stex3d.c,v 1.2 1999/09/17 12:27:01 brianp Exp $ */
 | 
			
		||||
/* $Id: stex3d.c,v 1.2.2.1 1999/12/16 08:53:51 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*----------------------------- 
 | 
			
		||||
 * stex3d.c GL example of the mesa 3d-texture extention to simulate procedural
 | 
			
		||||
@@ -17,6 +17,9 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: stex3d.c,v $
 | 
			
		||||
 * Revision 1.2.2.1  1999/12/16 08:53:51  brianp
 | 
			
		||||
 * added a cast to malloc call
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1999/09/17 12:27:01  brianp
 | 
			
		||||
 * silenced some warnings
 | 
			
		||||
 *
 | 
			
		||||
@@ -230,7 +233,7 @@ void create3Dtexture()
 | 
			
		||||
 int tmp;
 | 
			
		||||
 | 
			
		||||
 printf("creating 3d textures...\n");
 | 
			
		||||
 voxels = (unsigned char  *) malloc((4*tex_width*tex_height*tex_depth));
 | 
			
		||||
 voxels = (unsigned char  *) malloc((size_t) (4*tex_width*tex_height*tex_depth));
 | 
			
		||||
 vp=voxels;
 | 
			
		||||
 for (i=0;i<tex_width;i++){
 | 
			
		||||
    vec[0]=i;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: tessdemo.c,v 1.3 1999/11/04 04:00:42 gareth Exp $ */
 | 
			
		||||
/* $Id: tessdemo.c,v 1.3.2.1 1999/11/16 11:09:09 gareth Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * A demo of the GLU polygon tesselation functions written by Bogdan Sikorski.
 | 
			
		||||
@@ -14,6 +14,9 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: tessdemo.c,v $
 | 
			
		||||
 * Revision 1.3.2.1  1999/11/16 11:09:09  gareth
 | 
			
		||||
 * Added combine callback.  Converted vertices from ints to floats.
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1999/11/04 04:00:42  gareth
 | 
			
		||||
 * Updated demo for new GLU 1.3 tessellation.  Added optimized rendering
 | 
			
		||||
 * by saving the output of the tessellation into display lists.
 | 
			
		||||
@@ -79,20 +82,20 @@ static GLfloat		edge_color[3];
 | 
			
		||||
 | 
			
		||||
static struct
 | 
			
		||||
{
 | 
			
		||||
   GLint	p[MAX_POINTS][2];
 | 
			
		||||
   GLfloat	p[MAX_POINTS][2];
 | 
			
		||||
   GLuint	point_cnt;
 | 
			
		||||
} contours[MAX_CONTOURS];
 | 
			
		||||
 | 
			
		||||
static struct
 | 
			
		||||
{
 | 
			
		||||
   GLsizei	no;
 | 
			
		||||
   GLint	p[3][2];
 | 
			
		||||
   GLfloat	p[3][2];
 | 
			
		||||
   GLclampf	color[3][3];
 | 
			
		||||
} triangles[MAX_TRIANGLES];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void GLCALLBACK my_error( GLenum err )
 | 
			
		||||
void GLCALLBACK error_callback( GLenum err )
 | 
			
		||||
{
 | 
			
		||||
   int		len, i;
 | 
			
		||||
   char const	*str;
 | 
			
		||||
@@ -146,22 +149,22 @@ void GLCALLBACK end_callback()
 | 
			
		||||
		 triangles[i].color[0][1],
 | 
			
		||||
		 triangles[i].color[0][2] );
 | 
			
		||||
 | 
			
		||||
      glVertex2i( triangles[i].p[0][0], triangles[i].p[0][1] );
 | 
			
		||||
      glVertex2i( triangles[i].p[1][0], triangles[i].p[1][1] );
 | 
			
		||||
      glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] );
 | 
			
		||||
      glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] );
 | 
			
		||||
 | 
			
		||||
      glColor3f( triangles[i].color[1][0],
 | 
			
		||||
		 triangles[i].color[1][1],
 | 
			
		||||
		 triangles[i].color[1][2] );
 | 
			
		||||
 | 
			
		||||
      glVertex2i( triangles[i].p[1][0], triangles[i].p[1][1] );
 | 
			
		||||
      glVertex2i( triangles[i].p[2][0], triangles[i].p[2][1] );
 | 
			
		||||
      glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] );
 | 
			
		||||
      glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] );
 | 
			
		||||
 | 
			
		||||
      glColor3f( triangles[i].color[2][0],
 | 
			
		||||
		 triangles[i].color[2][1],
 | 
			
		||||
		 triangles[i].color[2][2] );
 | 
			
		||||
 | 
			
		||||
      glVertex2i( triangles[i].p[2][0], triangles[i].p[2][1] );
 | 
			
		||||
      glVertex2i( triangles[i].p[0][0], triangles[i].p[0][1] );
 | 
			
		||||
      glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] );
 | 
			
		||||
      glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] );
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   glEnd();
 | 
			
		||||
@@ -170,9 +173,9 @@ void GLCALLBACK end_callback()
 | 
			
		||||
void GLCALLBACK vertex_callback( void *data )
 | 
			
		||||
{
 | 
			
		||||
   GLsizei	no;
 | 
			
		||||
   GLint	*p;
 | 
			
		||||
   GLfloat	*p;
 | 
			
		||||
 | 
			
		||||
   p = (GLint *) data;
 | 
			
		||||
   p = (GLfloat *) data;
 | 
			
		||||
   no = triangles[triangle_cnt].no;
 | 
			
		||||
 | 
			
		||||
   triangles[triangle_cnt].p[no][0] = p[0];
 | 
			
		||||
@@ -190,6 +193,22 @@ void GLCALLBACK vertex_callback( void *data )
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GLCALLBACK combine_callback( GLdouble coords[3],
 | 
			
		||||
				  GLdouble *vertex_data[4],
 | 
			
		||||
				  GLfloat weight[4], void **data )
 | 
			
		||||
{
 | 
			
		||||
   GLfloat	*vertex;
 | 
			
		||||
   int		i;
 | 
			
		||||
 | 
			
		||||
   vertex = (GLfloat *) malloc( 2 * sizeof(GLfloat) );
 | 
			
		||||
 | 
			
		||||
   vertex[0] = (GLfloat) coords[0];
 | 
			
		||||
   vertex[1] = (GLfloat) coords[1];
 | 
			
		||||
 | 
			
		||||
   *data = vertex;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void set_screen_wh( GLsizei w, GLsizei h )
 | 
			
		||||
{
 | 
			
		||||
   width = w;
 | 
			
		||||
@@ -208,10 +227,11 @@ void tesse( void )
 | 
			
		||||
 | 
			
		||||
   if ( tobj != NULL )
 | 
			
		||||
   {
 | 
			
		||||
      gluTessCallback( tobj, GLU_BEGIN, glBegin );
 | 
			
		||||
      gluTessCallback( tobj, GLU_VERTEX, glVertex2iv );
 | 
			
		||||
      gluTessCallback( tobj, GLU_END, glEnd );
 | 
			
		||||
      gluTessCallback( tobj, GLU_ERROR, my_error );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_BEGIN, glBegin );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_VERTEX, glVertex2fv );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_END, glEnd );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_ERROR, error_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_COMBINE, combine_callback );
 | 
			
		||||
 | 
			
		||||
      glNewList( list_start, GL_COMPILE );
 | 
			
		||||
      gluBeginPolygon( tobj );
 | 
			
		||||
@@ -233,10 +253,10 @@ void tesse( void )
 | 
			
		||||
      gluEndPolygon( tobj );
 | 
			
		||||
      glEndList();
 | 
			
		||||
 | 
			
		||||
      gluTessCallback( tobj, GLU_BEGIN, begin_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_VERTEX, vertex_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_END, end_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_EDGE_FLAG, edge_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_BEGIN, begin_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_VERTEX, vertex_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_END, end_callback );
 | 
			
		||||
      gluTessCallback( tobj, GLU_TESS_EDGE_FLAG, edge_callback );
 | 
			
		||||
 | 
			
		||||
      glNewList( list_start + 1, GL_COMPILE );
 | 
			
		||||
      gluBeginPolygon( tobj );
 | 
			
		||||
@@ -267,7 +287,7 @@ void tesse( void )
 | 
			
		||||
 | 
			
		||||
void left_down( int x1, int y1 )
 | 
			
		||||
{
 | 
			
		||||
   GLint	P[2];
 | 
			
		||||
   GLfloat	P[2];
 | 
			
		||||
   GLuint	point_cnt;
 | 
			
		||||
 | 
			
		||||
   /* translate GLUT into GL coordinates */
 | 
			
		||||
@@ -284,13 +304,13 @@ void left_down( int x1, int y1 )
 | 
			
		||||
 | 
			
		||||
   if ( point_cnt )
 | 
			
		||||
   {
 | 
			
		||||
      glVertex2iv( contours[contour_cnt].p[point_cnt-1] );
 | 
			
		||||
      glVertex2iv( P );
 | 
			
		||||
      glVertex2fv( contours[contour_cnt].p[point_cnt-1] );
 | 
			
		||||
      glVertex2fv( P );
 | 
			
		||||
   }
 | 
			
		||||
   else
 | 
			
		||||
   {
 | 
			
		||||
      glVertex2iv( P );
 | 
			
		||||
      glVertex2iv( P );
 | 
			
		||||
      glVertex2fv( P );
 | 
			
		||||
      glVertex2fv( P );
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   glEnd();
 | 
			
		||||
@@ -311,8 +331,8 @@ void middle_down( int x1, int y1 )
 | 
			
		||||
   {
 | 
			
		||||
      glBegin( GL_LINES );
 | 
			
		||||
 | 
			
		||||
      glVertex2iv( contours[contour_cnt].p[0] );
 | 
			
		||||
      glVertex2iv( contours[contour_cnt].p[point_cnt-1] );
 | 
			
		||||
      glVertex2fv( contours[contour_cnt].p[0] );
 | 
			
		||||
      glVertex2fv( contours[contour_cnt].p[point_cnt-1] );
 | 
			
		||||
 | 
			
		||||
      contours[contour_cnt].p[point_cnt][0] = -1;
 | 
			
		||||
 | 
			
		||||
@@ -383,24 +403,24 @@ void display( void )
 | 
			
		||||
	 case 0:
 | 
			
		||||
	    break;
 | 
			
		||||
	 case 1:
 | 
			
		||||
	    glVertex2iv( contours[i].p[0] );
 | 
			
		||||
	    glVertex2iv( contours[i].p[0] );
 | 
			
		||||
	    glVertex2fv( contours[i].p[0] );
 | 
			
		||||
	    glVertex2fv( contours[i].p[0] );
 | 
			
		||||
	    break;
 | 
			
		||||
	 case 2:
 | 
			
		||||
	    glVertex2iv( contours[i].p[0] );
 | 
			
		||||
	    glVertex2iv( contours[i].p[1] );
 | 
			
		||||
	    glVertex2fv( contours[i].p[0] );
 | 
			
		||||
	    glVertex2fv( contours[i].p[1] );
 | 
			
		||||
	    break;
 | 
			
		||||
	 default:
 | 
			
		||||
	    --point_cnt;
 | 
			
		||||
	    for ( j = 0 ; j < point_cnt ; j++ )
 | 
			
		||||
	    {
 | 
			
		||||
	       glVertex2iv( contours[i].p[j] );
 | 
			
		||||
	       glVertex2iv( contours[i].p[j+1] );
 | 
			
		||||
	       glVertex2fv( contours[i].p[j] );
 | 
			
		||||
	       glVertex2fv( contours[i].p[j+1] );
 | 
			
		||||
	    }
 | 
			
		||||
	    if ( contours[i].p[j+1][0] == -1 )
 | 
			
		||||
	    {
 | 
			
		||||
	       glVertex2iv( contours[i].p[0] );
 | 
			
		||||
	       glVertex2iv( contours[i].p[j] );
 | 
			
		||||
	       glVertex2fv( contours[i].p[0] );
 | 
			
		||||
	       glVertex2fv( contours[i].p[j] );
 | 
			
		||||
	    }
 | 
			
		||||
	    break;
 | 
			
		||||
	 }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: texobj.c,v 1.1 1999/08/19 00:55:40 jtg Exp $ */
 | 
			
		||||
/* $Id: texobj.c,v 1.1.1.1.2.2 2000/03/01 03:36:35 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Example of using the 1.1 texture object functions.
 | 
			
		||||
@@ -10,8 +10,14 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: texobj.c,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 * Revision 1.1.1.1.2.2  2000/03/01 03:36:35  brianp
 | 
			
		||||
 * test for GL 1.2
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1.2.1  2000/02/25 23:24:28  brianp
 | 
			
		||||
 * fixed bug when using display lists
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:40  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 3.1  1999/03/28 18:24:37  brianp
 | 
			
		||||
 * minor clean-up
 | 
			
		||||
@@ -34,7 +40,7 @@ static GLfloat Angle = 0.0f;
 | 
			
		||||
static GLboolean HaveTexObj = GL_FALSE;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(GL_VERSION_1_1)
 | 
			
		||||
#if defined(GL_VERSION_1_1) || defined(GL_VERSION_1_2)
 | 
			
		||||
#  define TEXTURE_OBJECT 1
 | 
			
		||||
#elif defined(GL_EXT_texture_object)
 | 
			
		||||
#  define TEXTURE_OBJECT 1
 | 
			
		||||
@@ -84,7 +90,7 @@ static void draw( void )
 | 
			
		||||
#endif
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      glCallList( TexObj[0] );
 | 
			
		||||
      glCallList( TexObj[1] );
 | 
			
		||||
   }
 | 
			
		||||
   glBegin( GL_POLYGON );
 | 
			
		||||
   glTexCoord2f( 0.0, 0.0 );   glVertex2f( -1.0, -1.0 );
 | 
			
		||||
@@ -272,7 +278,8 @@ int main( int argc, char *argv[] )
 | 
			
		||||
      char *exten = (char *) glGetString( GL_EXTENSIONS );
 | 
			
		||||
      char *version = (char *) glGetString( GL_VERSION );
 | 
			
		||||
      if (   strstr( exten, "GL_EXT_texture_object" )
 | 
			
		||||
          || strncmp( version, "1.1", 3 )==0 ) {
 | 
			
		||||
          || strncmp( version, "1.1", 3 )==0
 | 
			
		||||
          || strncmp( version, "1.2", 3 )==0 ) {
 | 
			
		||||
         HaveTexObj = GL_TRUE;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: logo.c,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
 | 
			
		||||
/* $Id: logo.c,v 1.1.1.1.2.1 1999/12/15 13:01:44 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc.
 | 
			
		||||
@@ -108,16 +108,16 @@ GLubyte *image = checkImage;
 | 
			
		||||
GLint imageHeight = CHECKIMAGEHEIGHT;
 | 
			
		||||
GLint imageWidth = CHECKIMAGEWIDTH;
 | 
			
		||||
 | 
			
		||||
float decal[] = {
 | 
			
		||||
static float decal[] = {
 | 
			
		||||
    GL_DECAL,
 | 
			
		||||
};
 | 
			
		||||
float modulate[] = {
 | 
			
		||||
static float modulate[] = {
 | 
			
		||||
    GL_MODULATE,
 | 
			
		||||
};
 | 
			
		||||
float repeat[] = {
 | 
			
		||||
static float repeat[] = {
 | 
			
		||||
    GL_REPEAT,
 | 
			
		||||
};
 | 
			
		||||
float nearest[] = {
 | 
			
		||||
static float nearest[] = {
 | 
			
		||||
    GL_NEAREST,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
# $Id: Makefile.X11,v 1.4 1999/11/05 08:01:17 brianp Exp $
 | 
			
		||||
# $Id: Makefile.X11,v 1.4.2.1 1999/11/12 15:43:25 brianp Exp $
 | 
			
		||||
 | 
			
		||||
# Mesa 3-D graphics library
 | 
			
		||||
# Version:  3.1
 | 
			
		||||
@@ -16,7 +16,7 @@ GL_LIBS = -L$(LIBDIR) -lglut -lGLU -lGL $(XLIBS)
 | 
			
		||||
 | 
			
		||||
LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
 | 
			
		||||
 | 
			
		||||
PROGS = glxdemo glxpixmap offset xdemo glxinfo xfont
 | 
			
		||||
PROGS = glxdemo glxpixmap offset xdemo glxinfo xfont glxdpyinfo
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1073
									
								
								progs/xdemos/glxdpyinfo.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1073
									
								
								progs/xdemos/glxdpyinfo.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -30,7 +30,7 @@ LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \
 | 
			
		||||
	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \
 | 
			
		||||
	tess_winding.c
 | 
			
		||||
	tess_winding.c tess_clip.c
 | 
			
		||||
 | 
			
		||||
OBJECTS = $(SOURCES:.c=.o)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,9 +19,12 @@
 | 
			
		||||
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# $Id: Makefile.BeOS-R4,v 1.5 1999/10/03 00:53:38 gareth Exp $
 | 
			
		||||
# $Id: Makefile.BeOS-R4,v 1.5.2.1 1999/11/15 21:15:43 gareth Exp $
 | 
			
		||||
 | 
			
		||||
# $Log: Makefile.BeOS-R4,v $
 | 
			
		||||
# Revision 1.5.2.1  1999/11/15 21:15:43  gareth
 | 
			
		||||
# Added new tessellation polygon clipping file tess_clip.c
 | 
			
		||||
#
 | 
			
		||||
# Revision 1.5  1999/10/03 00:53:38  gareth
 | 
			
		||||
# Added tessellation winding rule files.
 | 
			
		||||
#
 | 
			
		||||
@@ -59,7 +62,7 @@ LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \
 | 
			
		||||
	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \
 | 
			
		||||
	tess_winding.c
 | 
			
		||||
	tess_winding.c tess_clip.c
 | 
			
		||||
 | 
			
		||||
OBJECTS = $(SOURCES:.c=.o)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
# $Id: Makefile.X11,v 1.6 1999/10/03 00:53:38 gareth Exp $
 | 
			
		||||
# $Id: Makefile.X11,v 1.6.2.1 1999/11/15 21:15:43 gareth Exp $
 | 
			
		||||
 | 
			
		||||
# Mesa 3-D graphics library
 | 
			
		||||
# Version:  3.1
 | 
			
		||||
@@ -20,7 +20,7 @@ LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \
 | 
			
		||||
	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \
 | 
			
		||||
	tess_winding.c
 | 
			
		||||
	tess_winding.c tess_clip.c
 | 
			
		||||
 | 
			
		||||
OBJECTS = $(SOURCES:.c=.o)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								src/glu/mesa/Makefile.m32
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/glu/mesa/Makefile.m32
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
# Makefile for GLU for GCC-2.95.2/Mingw32 contributed by
 | 
			
		||||
# Paul Garceau <pgarceau@teleport.com>
 | 
			
		||||
 | 
			
		||||
# Mesa 3-D graphics library
 | 
			
		||||
# Version:  3.2
 | 
			
		||||
# Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
#
 | 
			
		||||
# This library is free software; you can redistribute it and/or
 | 
			
		||||
# modify it under the terms of the GNU Library General Public
 | 
			
		||||
# License as published by the Free Software Foundation; either
 | 
			
		||||
# version 2 of the License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# This library is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
# Library General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU Library General Public
 | 
			
		||||
# License along with this library; if not, write to the Free
 | 
			
		||||
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
MESA_MAJOR=3
 | 
			
		||||
MESA_MINOR=2
 | 
			
		||||
MESA_TINY=0
 | 
			
		||||
VERSION=$(MESA_MAJOR).$(MESA_MINOR)
 | 
			
		||||
 | 
			
		||||
CFLAGS = -I. -DWIN32 -D__WIN32__ -D_WINDOWS \
 | 
			
		||||
		-O2 -funroll-loops \
 | 
			
		||||
		-fexpensive-optimizations -fomit-frame-pointer -ffast-math \
 | 
			
		||||
		-malign-loops=2 -malign-jumps=2 -malign-functions=2 \
 | 
			
		||||
		-mwindows
 | 
			
		||||
CC = gcc
 | 
			
		||||
MAKELIB = ar ru
 | 
			
		||||
GLU_LIB = libGLU.a
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### MACROS #####
 | 
			
		||||
 | 
			
		||||
VPATH = RCS
 | 
			
		||||
 | 
			
		||||
INCDIR = ../include
 | 
			
		||||
LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \
 | 
			
		||||
	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \
 | 
			
		||||
	tess_winding.c tess_clip.c
 | 
			
		||||
 | 
			
		||||
OBJECTS = $(SOURCES:.c=.o)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### RULES #####
 | 
			
		||||
 | 
			
		||||
.c.o:
 | 
			
		||||
	$(CC) -c -I$(INCDIR) $(CFLAGS) $<
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### TARGETS #####
 | 
			
		||||
 | 
			
		||||
# Make the library:
 | 
			
		||||
$(LIBDIR)/$(GLU_LIB): $(OBJECTS)
 | 
			
		||||
	$(MAKELIB) $(GLU_LIB) $(MAJOR) $(MINOR) $(TINY) $(OBJECTS)
 | 
			
		||||
@@ -16,11 +16,11 @@ CFLAGS = /include=$(INCDIR)/define=(FBIND=1)
 | 
			
		||||
 | 
			
		||||
SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \
 | 
			
		||||
	project.c quadric.c tess.c tess_fist.c tess_hash.c tess_heap.c \
 | 
			
		||||
	tess_winding.c
 | 
			
		||||
	tess_winding.c tess_clip.c
 | 
			
		||||
 | 
			
		||||
OBJECTS =glu.obj,mipmap.obj,nurbs.obj,nurbscrv.obj,nurbssrf.obj,nurbsutl.obj,\
 | 
			
		||||
	project.obj,quadric.obj,tess.obj,tess_fist.obj,tess_hash.obj,\
 | 
			
		||||
	tess_heap.obj,tess_winding.obj
 | 
			
		||||
	tess_heap.obj,tess_winding.obj,tess_clip.obj
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
/* $Id: glu.c,v 1.16 1999/10/27 09:47:41 brianp Exp $ */
 | 
			
		||||
/* $Id: glu.c,v 1.16.2.4 2000/03/23 00:13:43 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
@@ -21,99 +21,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: glu.c,v $
 | 
			
		||||
 * Revision 1.16  1999/10/27 09:47:41  brianp
 | 
			
		||||
 * disabled gluGetProcAddressEXT
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.15  1999/09/19 02:03:19  tjump
 | 
			
		||||
 * More Win32 build compliance fixups
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.14  1999/09/17 12:21:53  brianp
 | 
			
		||||
 * glGetProcAddressEXT changes to accomodate Win32 and non-Win32
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.13  1999/09/17 03:17:18  tjump
 | 
			
		||||
 * Patch error fixup
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.12  1999/09/17 03:07:28  tjump
 | 
			
		||||
 * Win32 build req't updates
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.11  1999/09/17 01:00:38  brianp
 | 
			
		||||
 * fixed typo
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.10  1999/09/17 00:06:14  brianp
 | 
			
		||||
 * gluGetProcAddressEXT change for C++ / BeOS
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.9  1999/09/16 22:37:56  brianp
 | 
			
		||||
 * added some casts in gluGetProcAddressEXT()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.8  1999/09/16 16:53:28  brianp
 | 
			
		||||
 * clean-up of GLU_EXT_get_proc_address
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.7  1999/09/14 00:11:40  brianp
 | 
			
		||||
 * added gluCheckExtension()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.6  1999/09/13 14:31:32  joukj
 | 
			
		||||
 *
 | 
			
		||||
 * strcmp needs the string.h
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.5  1999/09/11 12:04:54  brianp
 | 
			
		||||
 * added 1.2 function to gluGetProcAddressEXT()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.4  1999/09/11 11:36:26  brianp
 | 
			
		||||
 * added GLU_EXT_get_proc_address
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1999/09/10 04:32:10  gareth
 | 
			
		||||
 * Fixed triangle output, recovery process termination.
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1999/09/10 02:03:31  gareth
 | 
			
		||||
 * Added GLU 1.3 tessellation (except winding rule code).
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:42  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.13  1999/03/31 19:07:28  brianp
 | 
			
		||||
 * added GL_EXT_abgr to extensions
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.12  1999/02/06 06:12:41  brianp
 | 
			
		||||
 * updated version string to 3.1
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.11  1999/01/03 03:23:15  brianp
 | 
			
		||||
 * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.10  1998/04/22 00:35:50  brianp
 | 
			
		||||
 * changed version to 3.0
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.9  1997/12/09 03:03:32  brianp
 | 
			
		||||
 * changed version to 2.6
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.8  1997/10/04 01:30:20  brianp
 | 
			
		||||
 * changed version to 2.5
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.7  1997/08/13 01:25:21  brianp
 | 
			
		||||
 * changed version string to 2.4
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.6  1997/07/24 01:28:44  brianp
 | 
			
		||||
 * changed precompiled header symbol from PCH to PC_HEADER
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.5  1997/07/13 22:59:11  brianp
 | 
			
		||||
 * added const to viewport parameter of gluPickMatrix()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.4  1997/05/28 02:29:38  brianp
 | 
			
		||||
 * added support for precompiled headers (PCH), inserted APIENTRY keyword
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1997/04/12 16:19:02  brianp
 | 
			
		||||
 * changed version to 2.3
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1997/03/11 00:58:34  brianp
 | 
			
		||||
 * changed version to 2.2
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1  1996/09/27 01:19:39  brianp
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
@@ -304,7 +211,7 @@ const GLubyte* GLAPIENTRY gluErrorString( GLenum errorCode )
 | 
			
		||||
      "unconnected trim curves",
 | 
			
		||||
      "unknown knot error",
 | 
			
		||||
      "negative vertex count encountered",
 | 
			
		||||
      "negative byte-stride encounteed",
 | 
			
		||||
      "negative byte-stride encountered",
 | 
			
		||||
      "unknown type descriptor",
 | 
			
		||||
      "null control array or knot vector",
 | 
			
		||||
      "duplicate point on pwlcurve"
 | 
			
		||||
@@ -367,8 +274,8 @@ const GLubyte* GLAPIENTRY gluErrorString( GLenum errorCode )
 | 
			
		||||
 | 
			
		||||
const GLubyte* GLAPIENTRY gluGetString( GLenum name )
 | 
			
		||||
{
 | 
			
		||||
   static char *extensions = "GL_EXT_abgr GLU_EXT_get_proc_address";
 | 
			
		||||
   static char *version = "1.2 Mesa 3.1";
 | 
			
		||||
   static char *extensions = "GL_EXT_abgr";
 | 
			
		||||
   static char *version = "1.2 Mesa 3.2 beta 1";
 | 
			
		||||
 | 
			
		||||
   switch (name) {
 | 
			
		||||
      case GLU_EXTENSIONS:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: gluP.h,v 1.1 1999/08/19 00:55:42 jtg Exp $ */
 | 
			
		||||
/* $Id: gluP.h,v 1.1.1.1.2.1 1999/12/06 05:24:36 joukj Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -23,8 +23,19 @@
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: gluP.h,v $
 | 
			
		||||
 * Revision 1.1  1999/08/19 00:55:42  jtg
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 * Revision 1.1.1.1.2.1  1999/12/06 05:24:36  joukj
 | 
			
		||||
 *
 | 
			
		||||
 *  Committing in .
 | 
			
		||||
 *
 | 
			
		||||
 *  Updating compilation on VMS
 | 
			
		||||
 *
 | 
			
		||||
 *  Modified Files:
 | 
			
		||||
 *   Tag: mesa_3_2_dev
 | 
			
		||||
 *  	Mesa/src-glu/descrip.mms Mesa/src-glu/gluP.h
 | 
			
		||||
 *  ----------------------------------------------------------------------
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:42  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.4  1999/01/03 03:23:15  brianp
 | 
			
		||||
 * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump)
 | 
			
		||||
@@ -55,6 +66,7 @@
 | 
			
		||||
#include "GL/gl.h"
 | 
			
		||||
#include "GL/glu.h"
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#ifndef MESA
 | 
			
		||||
   /* If we're using the real OpenGL header files... */
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
/* $Id: mipmap.c,v 1.3 1999/11/09 06:16:59 brianp Exp $ */
 | 
			
		||||
/* $Id: mipmap.c,v 1.3.2.2 2000/02/28 14:51:39 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
@@ -21,59 +21,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: mipmap.c,v $
 | 
			
		||||
 * Revision 1.3  1999/11/09 06:16:59  brianp
 | 
			
		||||
 * replace GLint with GLsizei in a gluScaleImage, gluBuild1/2DMipmaps()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1999/09/14 00:30:28  brianp
 | 
			
		||||
 * fixed pixel packing/unpacking code in gluBuild2DMipmaps()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:42  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.13  1999/03/05 17:49:06  brianp
 | 
			
		||||
 * added support for GL_EXT_abgr (devernay@istar.fr)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.12  1999/01/03 03:23:15  brianp
 | 
			
		||||
 * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.11  1998/09/18 02:44:03  brianp
 | 
			
		||||
 * further changes to gluScaleImage() per Randy Frank
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.10  1998/09/17 03:20:26  brianp
 | 
			
		||||
 * fixed another bug in gluScaleImage() per Sven Panne
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.9  1998/07/31 03:06:20  brianp
 | 
			
		||||
 * tweaked the gluScaleImage() function per Randy Frank
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.8  1998/07/08 01:02:53  brianp
 | 
			
		||||
 * if gluBuildxDMipmaps() width or height <= 0 return GLU_INVALID_VALUE
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.7  1998/07/01 00:18:02  brianp
 | 
			
		||||
 * if gluBuildxDMipmaps() width or height <= 0 just return 0
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.6  1998/06/01 01:06:41  brianp
 | 
			
		||||
 * small update for Next/OpenStep from Alexander Mai
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.5  1997/07/24 01:28:44  brianp
 | 
			
		||||
 * changed precompiled header symbol from PCH to PC_HEADER
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.4  1997/06/23 00:22:56  brianp
 | 
			
		||||
 * added dummy() call to work around an MSVC 4.1 bug
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1997/05/28 02:29:38  brianp
 | 
			
		||||
 * added support for precompiled headers (PCH), inserted APIENTRY keyword
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1997/05/24 13:32:25  brianp
 | 
			
		||||
 * undef EPSILON in case it's already defined
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1  1996/09/27 01:19:39  brianp
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
@@ -138,9 +85,11 @@ GLint GLAPIENTRY gluScaleImage( GLenum format,
 | 
			
		||||
	 components = 2;
 | 
			
		||||
	 break;
 | 
			
		||||
      case GL_RGB:
 | 
			
		||||
      case GL_BGR:
 | 
			
		||||
	 components = 3;
 | 
			
		||||
	 break;
 | 
			
		||||
      case GL_RGBA:
 | 
			
		||||
      case GL_BGRA:
 | 
			
		||||
#ifdef GL_EXT_abgr
 | 
			
		||||
      case GL_ABGR_EXT:
 | 
			
		||||
#endif
 | 
			
		||||
@@ -702,12 +651,6 @@ GLint GLAPIENTRY gluBuild1DMipmaps( GLenum target, GLint components,
 | 
			
		||||
 | 
			
		||||
   free( texture );
 | 
			
		||||
 | 
			
		||||
   /* make sure remaining mipmap levels are removed */
 | 
			
		||||
   for (l=levels;l<max_levels;l++) {
 | 
			
		||||
      glTexImage1D( GL_TEXTURE_1D, l, components, 0, 0,
 | 
			
		||||
		    format, GL_UNSIGNED_BYTE, NULL );
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
/* $Id: nurbs.c,v 1.2 1999/11/11 03:21:43 kendallb Exp $ */
 | 
			
		||||
/* $Id: nurbs.c,v 1.1.1.1.2.1 2000/02/10 17:23:47 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
@@ -21,73 +21,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: nurbs.c,v $
 | 
			
		||||
 * Revision 1.2  1999/11/11 03:21:43  kendallb
 | 
			
		||||
 *
 | 
			
		||||
 *  . Updated GL/gl.h with GLCALLACKP and GLAPIENTRYP macros for compatibility
 | 
			
		||||
 *    with the IBM VisualAge C++ compiler. Eventually some more code will be
 | 
			
		||||
 *    needed in the headers to enable the reversal of (__stdcall*) to (*__stdcall)
 | 
			
		||||
 *    for the IBM compilers, however we currently build using our own header files
 | 
			
		||||
 *    that already handle this.
 | 
			
		||||
 *
 | 
			
		||||
 *  . Changed instances of (GLCALLBACK*) to GLCALLBACKP for compatibility
 | 
			
		||||
 *    with the IBM VisualAge C++ compiler in src-glu.
 | 
			
		||||
 *
 | 
			
		||||
 *  . Misc cleanups for warnings generated with Watcom C++ in src-glu. Compiles
 | 
			
		||||
 *    with 0 warnings now.
 | 
			
		||||
 *
 | 
			
		||||
 *  . tess_hash.c: line 244 - Why is this function stubbed out? I removed the
 | 
			
		||||
 *    code with a #if 0 to avoid a compiler warning, but it looks dangerous.
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:42  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.14  1999/01/03 03:23:15  brianp
 | 
			
		||||
 * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.13  1998/06/01 01:07:49  brianp
 | 
			
		||||
 * small update for Next/OpenStep from Alexander Mai
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.12  1998/03/15 18:14:30  brianp
 | 
			
		||||
 * fixed a compiler cast warning
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.11  1998/02/07 14:29:11  brianp
 | 
			
		||||
 * fixed casting problem in gluNurbsCallback, again
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.10  1998/02/04 00:21:20  brianp
 | 
			
		||||
 * fixed cygnus compilation problem (Stephane Rehel)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.9  1998/01/16 03:35:26  brianp
 | 
			
		||||
 * fixed Windows compilation warnings (Theodore Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.8  1997/09/17 01:51:48  brianp
 | 
			
		||||
 * changed glu*Callback() functions to match prototype in glu.h
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.7  1997/07/24 01:28:44  brianp
 | 
			
		||||
 * changed precompiled header symbol from PCH to PC_HEADER
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.6  1997/07/24 01:26:31  brianp
 | 
			
		||||
 * added CALLBACK keyword to gluNurbsCallback()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.5  1997/05/28 02:29:38  brianp
 | 
			
		||||
 * added support for precompiled headers (PCH), inserted APIENTRY keyword
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.4  1997/05/27 03:17:22  brianp
 | 
			
		||||
 * minor clean-up
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1997/05/27 03:00:16  brianp
 | 
			
		||||
 * incorporated Bogdan's new NURBS code
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1996/09/27 23:11:23  brianp
 | 
			
		||||
 * ifdef'd out unimplemented trimmed nurbs code
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1  1996/09/27 01:19:39  brianp
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * NURBS implementation written by Bogdan Sikorski (bogdan@cira.it)
 | 
			
		||||
 * See README2 for more info.
 | 
			
		||||
@@ -617,13 +550,9 @@ void GLAPIENTRY gluNurbsSurface( GLUnurbsObj *nobj,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void GLAPIENTRY
 | 
			
		||||
gluNurbsCallback( GLUnurbsObj *nobj, GLenum which, void (GLCALLBACKP fn)())
 | 
			
		||||
gluNurbsCallback( GLUnurbsObj *nobj, GLenum which, void (GLCALLBACK *fn)())
 | 
			
		||||
{
 | 
			
		||||
#if defined(__CYGWIN32__) || defined(OPENSTEP)
 | 
			
		||||
    nobj->error_callback = (void(*)(GLenum))fn;
 | 
			
		||||
#else
 | 
			
		||||
	nobj->error_callback = (void(GLCALLBACKP)(GLenum))fn;
 | 
			
		||||
#endif
 | 
			
		||||
    nobj->error_callback = (void(GLCALLBACKPCAST)(GLenum))fn;
 | 
			
		||||
 | 
			
		||||
    if(which!=GLU_ERROR)
 | 
			
		||||
        call_user_error(nobj,GLU_INVALID_ENUM);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
/* $Id: quadric.c,v 1.3 1999/11/11 09:55:39 joukj Exp $ */
 | 
			
		||||
/* $Id: quadric.c,v 1.1.1.1.2.4 2000/02/10 17:23:48 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
@@ -21,92 +21,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * $Log: quadric.c,v $
 | 
			
		||||
 * Revision 1.3  1999/11/11 09:55:39  joukj
 | 
			
		||||
 *
 | 
			
		||||
 *  tess_macro.h included
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1999/11/11 03:21:43  kendallb
 | 
			
		||||
 *
 | 
			
		||||
 *  . Updated GL/gl.h with GLCALLACKP and GLAPIENTRYP macros for compatibility
 | 
			
		||||
 *    with the IBM VisualAge C++ compiler. Eventually some more code will be
 | 
			
		||||
 *    needed in the headers to enable the reversal of (__stdcall*) to (*__stdcall)
 | 
			
		||||
 *    for the IBM compilers, however we currently build using our own header files
 | 
			
		||||
 *    that already handle this.
 | 
			
		||||
 *
 | 
			
		||||
 *  . Changed instances of (GLCALLBACK*) to GLCALLBACKP for compatibility
 | 
			
		||||
 *    with the IBM VisualAge C++ compiler in src-glu.
 | 
			
		||||
 *
 | 
			
		||||
 *  . Misc cleanups for warnings generated with Watcom C++ in src-glu. Compiles
 | 
			
		||||
 *    with 0 warnings now.
 | 
			
		||||
 *
 | 
			
		||||
 *  . tess_hash.c: line 244 - Why is this function stubbed out? I removed the
 | 
			
		||||
 *    code with a #if 0 to avoid a compiler warning, but it looks dangerous.
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1.1.1  1999/08/19 00:55:42  jtg
 | 
			
		||||
 * Imported sources
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.19  1999/02/27 13:55:31  brianp
 | 
			
		||||
 * fixed BeOS-related GLU typedef problems
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.18  1999/01/03 03:23:15  brianp
 | 
			
		||||
 * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.17  1999/01/03 03:19:15  brianp
 | 
			
		||||
 * rewrote some of gluCylinder
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.16  1998/06/01 01:08:36  brianp
 | 
			
		||||
 * small update for Next/OpenStep from Alexander Mai
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.15  1998/03/15 18:28:54  brianp
 | 
			
		||||
 * reimplemented gluDisk() point and line mode
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.14  1998/03/15 18:14:17  brianp
 | 
			
		||||
 * fixed a compiler cast warning
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.13  1998/02/07 14:28:34  brianp
 | 
			
		||||
 * another change to gluQuadricCallback(), this time for StormC compiler
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.12  1998/02/05 00:43:19  brianp
 | 
			
		||||
 * Yes, still another change to gluQuadricCallback()!
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.11  1998/02/04 00:27:43  brianp
 | 
			
		||||
 * yet another change to gluQuadricCallback()!
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.10  1998/02/04 00:23:23  brianp
 | 
			
		||||
 * fixed CALLBACK problem in gluQuadricCallback() (Stephane Rehel)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.9  1998/02/04 00:20:09  brianp
 | 
			
		||||
 * added missing (int) in ErrorFunc cast
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.8  1998/01/16 03:37:51  brianp
 | 
			
		||||
 * fixed another assignment warning in gluQuadricCallback()
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.7  1998/01/16 03:35:26  brianp
 | 
			
		||||
 * fixed Windows compilation warnings (Theodore Jump)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.6  1997/10/29 02:02:20  brianp
 | 
			
		||||
 * various MS Windows compiler changes (David Bucciarelli, v20 3dfx driver)
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.5  1997/09/17 01:51:48  brianp
 | 
			
		||||
 * changed glu*Callback() functions to match prototype in glu.h
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.4  1997/07/24 01:28:44  brianp
 | 
			
		||||
 * changed precompiled header symbol from PCH to PC_HEADER
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.3  1997/05/28 02:29:38  brianp
 | 
			
		||||
 * added support for precompiled headers (PCH), inserted APIENTRY keyword
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.2  1997/03/12 02:15:38  brianp
 | 
			
		||||
 * fixed problem in gluPartialDisk() reported by Kenneth H. Carpenter
 | 
			
		||||
 *
 | 
			
		||||
 * Revision 1.1  1996/09/27 01:19:39  brianp
 | 
			
		||||
 * Initial revision
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* TODO:
 | 
			
		||||
 *   texture coordinate support
 | 
			
		||||
 *   flip normals according to orientation
 | 
			
		||||
@@ -122,11 +36,21 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include "gluP.h"
 | 
			
		||||
#include "tess_macros.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef M_PI
 | 
			
		||||
#  define M_PI (3.1415926)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Convert degrees to radians:
 | 
			
		||||
 */
 | 
			
		||||
#define DEG_TO_RAD(A)   ((A)*(M_PI/180.0))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Sin and Cos for degree angles:
 | 
			
		||||
 */
 | 
			
		||||
@@ -146,7 +70,7 @@ struct GLUquadric {
 | 
			
		||||
	GLenum Orientation;		/* GLU_INSIDE or GLU_OUTSIDE */
 | 
			
		||||
	GLboolean TextureFlag;		/* Generate texture coords? */
 | 
			
		||||
	GLenum Normals;		/* GLU_NONE, GLU_FLAT, or GLU_SMOOTH */
 | 
			
		||||
	void (GLCALLBACKP ErrorFunc)(GLenum err);	/* Error handler callback function */
 | 
			
		||||
	void (GLCALLBACK *ErrorFunc)(GLenum err);	/* Error handler callback function */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -232,24 +156,24 @@ void GLAPIENTRY gluQuadricOrientation( GLUquadricObj *quadObject,
 | 
			
		||||
 * Set the error handler callback function.
 | 
			
		||||
 */
 | 
			
		||||
void GLAPIENTRY gluQuadricCallback( GLUquadricObj *qobj,
 | 
			
		||||
								  GLenum which, void (GLCALLBACKP fn)() )
 | 
			
		||||
                                  GLenum which, void (GLCALLBACK *fn)() )
 | 
			
		||||
{
 | 
			
		||||
   /*
 | 
			
		||||
    * UGH, this is a mess!  I thought ANSI was a standard.
 | 
			
		||||
    */
 | 
			
		||||
   if (qobj && which==GLU_ERROR) {
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
      qobj->ErrorFunc = (void(*)(int))fn;
 | 
			
		||||
      qobj->ErrorFunc = (void(GLCALLBACKPCAST)(GLenum))fn;
 | 
			
		||||
#elif defined(OPENSTEP)
 | 
			
		||||
      qobj->ErrorFunc = (void(*)(GLenum))fn;
 | 
			
		||||
#elif defined(_WIN32)
 | 
			
		||||
	  qobj->ErrorFunc = (void(GLCALLBACKP)(int))fn;
 | 
			
		||||
      qobj->ErrorFunc = (void(GLCALLBACK*)(int))fn;
 | 
			
		||||
#elif defined(__STORM__)
 | 
			
		||||
	  qobj->ErrorFunc = (void(GLCALLBACKP)(GLenum))fn;
 | 
			
		||||
      qobj->ErrorFunc = (void(GLCALLBACK*)(GLenum))fn;
 | 
			
		||||
#elif defined(__BEOS__)
 | 
			
		||||
      qobj->ErrorFunc = (void(*)(GLenum))fn;
 | 
			
		||||
#else
 | 
			
		||||
	  qobj->ErrorFunc = (void(GLCALLBACKP)())fn;
 | 
			
		||||
      qobj->ErrorFunc = (void(GLCALLBACK*)())fn;
 | 
			
		||||
#endif
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
@@ -392,8 +316,8 @@ void GLAPIENTRY gluCylinder( GLUquadricObj *qobj,
 | 
			
		||||
         for (i=0;i<=slices;i++) {
 | 
			
		||||
            GLfloat x, y;
 | 
			
		||||
            if (i == slices) {
 | 
			
		||||
               x = sin(0);
 | 
			
		||||
               y = cos(0);
 | 
			
		||||
               x = sin(0.0);
 | 
			
		||||
               y = cos(0.0);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
               x = sin(i * da);
 | 
			
		||||
@@ -783,7 +707,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius,
 | 
			
		||||
      for (loop=0; loop<loops; loop++) {
 | 
			
		||||
	 angle = DEG_TO_RAD(startAngle);
 | 
			
		||||
	 glBegin( GL_LINE_STRIP );
 | 
			
		||||
	 for (slice=0; slice<slices; slice++) {
 | 
			
		||||
	 for (slice=0; slice<=slices; slice++) {
 | 
			
		||||
	    glVertex2d( radius * sin(angle), radius * cos(angle) );
 | 
			
		||||
	    angle += delta_angle;
 | 
			
		||||
	 }
 | 
			
		||||
@@ -792,7 +716,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius,
 | 
			
		||||
      }
 | 
			
		||||
      /* draw spokes */
 | 
			
		||||
      angle = DEG_TO_RAD(startAngle);
 | 
			
		||||
      for (slice=0; slice<slices; slice++) {
 | 
			
		||||
      for (slice=0; slice<=slices; slice++) {
 | 
			
		||||
	 radius = innerRadius;
 | 
			
		||||
	 glBegin( GL_LINE_STRIP );
 | 
			
		||||
	 for (loop=0; loop<loops; loop++) {
 | 
			
		||||
@@ -846,7 +770,7 @@ void GLAPIENTRY gluPartialDisk( GLUquadricObj *qobj, GLdouble innerRadius,
 | 
			
		||||
      for (loop=0; loop<loops; loop++) {
 | 
			
		||||
	 glBegin( GL_QUAD_STRIP );
 | 
			
		||||
	 angle = DEG_TO_RAD(startAngle);
 | 
			
		||||
	 for (slice=0; slice<slices; slice++) {
 | 
			
		||||
	 for (slice=0; slice<=slices; slice++) {
 | 
			
		||||
	    if (qobj->Orientation==GLU_OUTSIDE) {
 | 
			
		||||
	       glVertex2d( (radius+delta_radius)*sin(angle),
 | 
			
		||||
			   (radius+delta_radius)*cos(angle) );
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1031
									
								
								src/glu/mesa/tess.c
									
									
									
									
									
								
							
							
						
						
									
										1031
									
								
								src/glu/mesa/tess.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: tess.h,v 1.15 1999/11/05 20:37:14 gareth Exp $ */
 | 
			
		||||
/* $Id: tess.h,v 1.15.2.6 1999/12/05 17:01:17 gareth Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -56,33 +56,39 @@ extern "C" {
 | 
			
		||||
struct GLUtesselator
 | 
			
		||||
{
 | 
			
		||||
    tess_callbacks_t	callbacks;
 | 
			
		||||
    GLboolean		boundary_only;
 | 
			
		||||
    GLenum		winding_rule;
 | 
			
		||||
    GLboolean		boundary_only;
 | 
			
		||||
    GLdouble		tolerance;
 | 
			
		||||
    tess_plane_t	plane;
 | 
			
		||||
    GLuint		contour_count;
 | 
			
		||||
    GLenum		orientation;
 | 
			
		||||
    void		*data;
 | 
			
		||||
    GLint		num_contours;
 | 
			
		||||
    tess_contour_t	*contours, *last_contour;
 | 
			
		||||
    tess_contour_t	*current_contour;
 | 
			
		||||
    GLdouble		mins[2], maxs[2];
 | 
			
		||||
    GLuint		vertex_count;
 | 
			
		||||
    GLint		num_vertices;
 | 
			
		||||
    tess_vertex_t	**sorted_vertices;
 | 
			
		||||
#if 0
 | 
			
		||||
    tess_grid_t		*grid;			/* Not currently used... */
 | 
			
		||||
#endif
 | 
			
		||||
    heap_t		*ears;
 | 
			
		||||
    hashtable_t		*cvc_lists;
 | 
			
		||||
    void		*data;
 | 
			
		||||
    GLboolean		edge_flag;
 | 
			
		||||
    GLuint		label;
 | 
			
		||||
    tess_plane_t	plane;
 | 
			
		||||
    GLenum		error;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Tessellation error handler:
 | 
			
		||||
 * Common tessellation functions:
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
extern void tess_error_callback( GLUtesselator *, GLenum );
 | 
			
		||||
 | 
			
		||||
extern GLdouble twice_contour_area( tess_contour_t *contour );
 | 
			
		||||
extern void reverse_contour( tess_contour_t *contour );
 | 
			
		||||
extern void delete_contour( tess_contour_t **contour );
 | 
			
		||||
 | 
			
		||||
extern void contour_dump( tess_contour_t *contour );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Debugging output:
 | 
			
		||||
@@ -115,8 +121,8 @@ extern	int	tess_dbg_level;
 | 
			
		||||
#define MSG		tess_msg
 | 
			
		||||
#endif /* DEBUG */
 | 
			
		||||
 | 
			
		||||
extern INLINE void tess_msg( int level, char *format, ... );
 | 
			
		||||
extern INLINE void tess_info( char *file, char *line );
 | 
			
		||||
extern INLINE void tess_msg( GLint level, char *format, ... );
 | 
			
		||||
extern INLINE void tess_info( char *file, GLint line );
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
## BeOS Generic Makefile v2.0 ##
 | 
			
		||||
 | 
			
		||||
## Modified by Brian Paul to work with Mesa 3.1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Fill in this file to specify the project being created, and the referenced
 | 
			
		||||
@@ -48,9 +47,8 @@ RSRCS=
 | 
			
		||||
#		naming scheme you need to specify the path to the library
 | 
			
		||||
#		and it's name
 | 
			
		||||
#		library: my_lib.a entry: my_lib.a or path/my_lib.a
 | 
			
		||||
#LIBS= MesaGL MesaGLU be
 | 
			
		||||
LIBS= GL GLU be
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
#	specify additional paths to directories following the standard
 | 
			
		||||
#	libXXX.so or libXXX.a naming scheme.  You can specify full paths
 | 
			
		||||
#	or paths relative to the makefile.  The paths included may not
 | 
			
		||||
 
 | 
			
		||||
@@ -303,8 +303,7 @@ interruptibleXNextEvent(Display * dpy, XEvent * event)
 | 
			
		||||
    }
 | 
			
		||||
    FD_ZERO(&fds);
 | 
			
		||||
    FD_SET(__glutConnectionFD, &fds);
 | 
			
		||||
    rc = select(__glutConnectionFD + 1, &fds,
 | 
			
		||||
      NULL, NULL, NULL);
 | 
			
		||||
    rc = select(__glutConnectionFD + 1, &fds, NULL, NULL, NULL);
 | 
			
		||||
    if (rc < 0) {
 | 
			
		||||
      if (errno == EINTR) {
 | 
			
		||||
        return 0;
 | 
			
		||||
@@ -897,8 +896,7 @@ waitForSomething(void)
 | 
			
		||||
    waittime = zerotime;
 | 
			
		||||
  }
 | 
			
		||||
#if !defined(_WIN32)
 | 
			
		||||
  rc = select(__glutConnectionFD + 1, &fds,
 | 
			
		||||
    NULL, NULL, &waittime);
 | 
			
		||||
  rc = select(__glutConnectionFD + 1, &fds, NULL, NULL, &waittime);
 | 
			
		||||
  if (rc < 0 && errno != EINTR)
 | 
			
		||||
    __glutFatalError("select error.");
 | 
			
		||||
#else
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,9 @@
 | 
			
		||||
#include <X11/Xutil.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <windows.h>
 | 
			
		||||
#ifndef __CYGWIN32__
 | 
			
		||||
#include <mmsystem.h>  /* Win32 Multimedia API header. */
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* !_WIN32 */
 | 
			
		||||
 | 
			
		||||
#include "glutint.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,10 @@
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
#include <windows.h>
 | 
			
		||||
#ifndef __CYGWIN32__
 | 
			
		||||
#include <mmsystem.h>  /* Win32 Multimedia API header. */
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "glutint.h"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
#define GLUT_BUILDING_LIB  /* Building the GLUT library itself. */
 | 
			
		||||
#include <GL/glut.h>
 | 
			
		||||
 | 
			
		||||
#if defined( MESA ) && defined( _WIN32 )
 | 
			
		||||
#if defined(MESA) && defined(_WIN32) && !defined(__CYGWIN32__)
 | 
			
		||||
#include <gl/mesa_wgl.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -71,7 +71,7 @@ extern int sys$gettim(struct timeval *);
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#if !defined(_WIN32)
 | 
			
		||||
#if !defined(_WIN32) || defined(__CYGWIN32__)
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <winsock.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -40,9 +40,57 @@
 | 
			
		||||
#define XA_STRING 0
 | 
			
		||||
 | 
			
		||||
/* Private routines from win32_util.c */
 | 
			
		||||
#ifndef __CYGWIN32__
 | 
			
		||||
extern int gettimeofday(struct timeval* tp, void* tzp);
 | 
			
		||||
#endif
 | 
			
		||||
extern void *__glutFont(void *font);
 | 
			
		||||
extern int __glutGetTransparentPixel(Display *dpy, XVisualInfo *vinfo);
 | 
			
		||||
extern void __glutAdjustCoords(Window parent, int *x, int *y, int *width, int *height);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Cygwin B20.1 misses the following definitions */
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
 | 
			
		||||
/* from winuser.h */
 | 
			
		||||
#define CDS_FULLSCREEN 4
 | 
			
		||||
 | 
			
		||||
/* from mmsystem.h */
 | 
			
		||||
#define WINMMAPI __declspec(dllimport)
 | 
			
		||||
typedef UINT MMRESULT;
 | 
			
		||||
 | 
			
		||||
#define MM_JOY1MOVE 0x3A0
 | 
			
		||||
#define MM_JOY1ZMOVE 0x3A2
 | 
			
		||||
#define MM_JOY1BUTTONDOWN 0x3B5
 | 
			
		||||
#define MM_JOY1BUTTONUP 0x3B7
 | 
			
		||||
 | 
			
		||||
#define JOYERR_NOERROR 0
 | 
			
		||||
#define JOYERR_PARMS 165
 | 
			
		||||
 | 
			
		||||
#define JOY_RETURNALL 0x000000ffl
 | 
			
		||||
 | 
			
		||||
#define JOYSTICKID1 0
 | 
			
		||||
 | 
			
		||||
typedef struct joyinfoex_tag {
 | 
			
		||||
    DWORD dwSize;                /* size of structure */
 | 
			
		||||
    DWORD dwFlags;               /* flags to indicate what to return */
 | 
			
		||||
    DWORD dwXpos;                /* x position */
 | 
			
		||||
    DWORD dwYpos;                /* y position */
 | 
			
		||||
    DWORD dwZpos;                /* z position */
 | 
			
		||||
    DWORD dwRpos;                /* rudder/4th axis position */
 | 
			
		||||
    DWORD dwUpos;                /* 5th axis position */
 | 
			
		||||
    DWORD dwVpos;                /* 6th axis position */
 | 
			
		||||
    DWORD dwButtons;             /* button states */
 | 
			
		||||
    DWORD dwButtonNumber;        /* current button number pressed */
 | 
			
		||||
    DWORD dwPOV;                 /* point of view state */
 | 
			
		||||
    DWORD dwReserved1;           /* reserved for communication between winmm & driver */
 | 
			
		||||
    DWORD dwReserved2;           /* reserved for future expansion */
 | 
			
		||||
} JOYINFOEX, *PJOYINFOEX, /* NEAR */ *NPJOYINFOEX, /* FAR */ *LPJOYINFOEX;
 | 
			
		||||
 | 
			
		||||
WINMMAPI MMRESULT WINAPI joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji);
 | 
			
		||||
WINMMAPI MMRESULT WINAPI joyReleaseCapture( UINT uJoyID);
 | 
			
		||||
WINMMAPI MMRESULT WINAPI joySetCapture( HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged);
 | 
			
		||||
WINMMAPI MMRESULT WINAPI joySetThreshold( UINT uJoyID, UINT uThreshold);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __glutwin32_h__ */
 | 
			
		||||
 
 | 
			
		||||
@@ -129,26 +129,29 @@ __glutXGetLayerVisualInfo(Display * dpy, long lvinfo_mask,
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (lvinfo_mask & VisualLayerMask)
 | 
			
		||||
    if (lvinfo_mask & VisualLayerMask) {
 | 
			
		||||
      if (overlayInfo == NULL) {
 | 
			
		||||
        if (lvinfo_template->layer != 0)
 | 
			
		||||
          continue;
 | 
			
		||||
      } else if (lvinfo_template->layer != overlayInfo->layer)
 | 
			
		||||
        continue;
 | 
			
		||||
    if (lvinfo_mask & VisualTransparentType)
 | 
			
		||||
    }
 | 
			
		||||
    if (lvinfo_mask & VisualTransparentType) {
 | 
			
		||||
      if (overlayInfo == NULL) {
 | 
			
		||||
        if (lvinfo_template->type != None)
 | 
			
		||||
          continue;
 | 
			
		||||
      } else if (lvinfo_template->type !=
 | 
			
		||||
        overlayInfo->transparent_type)
 | 
			
		||||
        continue;
 | 
			
		||||
    if (lvinfo_mask & VisualTransparentValue)
 | 
			
		||||
    }
 | 
			
		||||
    if (lvinfo_mask & VisualTransparentValue) {
 | 
			
		||||
      if (overlayInfo == NULL)
 | 
			
		||||
        /* Non-overlay visuals have no sense of
 | 
			
		||||
           TransparentValue. */
 | 
			
		||||
        continue;
 | 
			
		||||
      else if (lvinfo_template->value != overlayInfo->value)
 | 
			
		||||
        continue;
 | 
			
		||||
    }
 | 
			
		||||
    layerInfo[count].vinfo = *pVinfo;
 | 
			
		||||
    if (overlayInfo == NULL) {
 | 
			
		||||
      layerInfo[count].layer = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -11,11 +11,7 @@
 | 
			
		||||
#include "glutint.h"
 | 
			
		||||
#include "glutstroke.h"
 | 
			
		||||
#include "glutbitmap.h"
 | 
			
		||||
#if defined(__CYGWIN32__)
 | 
			
		||||
typedef MINMAXINFO* LPMINMAXINFO;
 | 
			
		||||
#else
 | 
			
		||||
#include <sys/timeb.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* The following added by Paul Garceau <pgarceau@teleport.com> */
 | 
			
		||||
#if defined(__MINGW32__)
 | 
			
		||||
@@ -27,6 +23,7 @@ struct timeval;
 | 
			
		||||
extern StrokeFontRec glutStrokeRoman, glutStrokeMonoRoman;
 | 
			
		||||
extern BitmapFontRec glutBitmap8By13, glutBitmap9By15, glutBitmapTimesRoman10, glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12, glutBitmapHelvetica18;
 | 
			
		||||
 | 
			
		||||
#ifndef __CYGWIN32__
 | 
			
		||||
int
 | 
			
		||||
gettimeofday(struct timeval* tp, void* tzp)
 | 
			
		||||
{
 | 
			
		||||
@@ -39,6 +36,7 @@ gettimeofday(struct timeval* tp, void* tzp)
 | 
			
		||||
  /* 0 indicates that the call succeeded. */
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* To get around the fact that Microsoft DLLs only allow functions
 | 
			
		||||
   to be exported and now data addresses (as Unix DSOs support), the
 | 
			
		||||
 
 | 
			
		||||
@@ -8,13 +8,9 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "glutint.h"
 | 
			
		||||
#if defined(__CYGWIN32__)
 | 
			
		||||
typedef MINMAXINFO* LPMINMAXINFO;
 | 
			
		||||
#else
 | 
			
		||||
#include <sys/timeb.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
#if defined(_WIN32) && !defined(__CYGWIN32__)
 | 
			
		||||
#include <mmsystem.h>  /* Win32 Multimedia API header. */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,59 +1 @@
 | 
			
		||||
# Makefile for OpenGL widgets
 | 
			
		||||
 | 
			
		||||
# NOTE: widget code is from SGI.  See any of the .c or .h files for the
 | 
			
		||||
# complete copyright.  Mesa's GNU copyright DOES NOT apply to this widget
 | 
			
		||||
# code.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### MACROS #####
 | 
			
		||||
 | 
			
		||||
VPATH = RCS
 | 
			
		||||
 | 
			
		||||
INCDIRS = -I../include -I/usr/include/Motif1.2 -I/usr/X11R6/include
 | 
			
		||||
LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
SOURCES = GLwDrawA.c GLwMDrawA.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OBJECTS = $(SOURCES:.c=.o)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### RULES #####
 | 
			
		||||
 | 
			
		||||
.c.o:
 | 
			
		||||
	$(CC) -c $(INCDIRS) $(CFLAGS) $<
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### TARGETS #####
 | 
			
		||||
 | 
			
		||||
default:
 | 
			
		||||
	@echo "Specify a target configuration"
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	-rm *.o *~
 | 
			
		||||
 | 
			
		||||
# The name of the library file comes from Make-config
 | 
			
		||||
#XXX GLW_LIB = libGLw.a
 | 
			
		||||
 | 
			
		||||
targets: $(LIBDIR)/$(GLW_LIB)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Make the library
 | 
			
		||||
$(LIBDIR)/$(GLW_LIB): $(OBJECTS)
 | 
			
		||||
	$(MAKELIB) $(GLW_LIB) $(MAJOR) $(MINOR) $(OBJECTS)
 | 
			
		||||
	mv $(GLW_LIB)* $(LIBDIR)
 | 
			
		||||
 | 
			
		||||
include ../Make-config
 | 
			
		||||
 | 
			
		||||
include depend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Run 'make depend' to update the dependencies if you change what's included
 | 
			
		||||
# by any source file.
 | 
			
		||||
# 
 | 
			
		||||
dep: $(SOURCES)
 | 
			
		||||
	makedepend -fdepend -Y -I../include $(SOURCES)
 | 
			
		||||
include Makefile.X11
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								src/glw/Makefile.X11
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/glw/Makefile.X11
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
# Makefile for OpenGL widgets
 | 
			
		||||
 | 
			
		||||
# NOTE: widget code is from SGI.  See any of the .c or .h files for the
 | 
			
		||||
# complete copyright.  Mesa's GNU copyright DOES NOT apply to this widget
 | 
			
		||||
# code.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### MACROS #####
 | 
			
		||||
 | 
			
		||||
MAJOR = 1
 | 
			
		||||
MINOR = 0
 | 
			
		||||
TINY = 0
 | 
			
		||||
 | 
			
		||||
VPATH = RCS
 | 
			
		||||
 | 
			
		||||
INCDIRS = -I../include -I/usr/include/Motif1.2 -I/usr/X11R6/include
 | 
			
		||||
LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
# Compile GLwMDrawA.c only if you have Motif headers!
 | 
			
		||||
#SOURCES = GLwDrawA.c GLwMDrawA.c
 | 
			
		||||
SOURCES = GLwDrawA.c
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OBJECTS = $(SOURCES:.c=.o)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### RULES #####
 | 
			
		||||
 | 
			
		||||
.c.o:
 | 
			
		||||
	$(CC) -c $(INCDIRS) $(CFLAGS) $<
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##### TARGETS #####
 | 
			
		||||
 | 
			
		||||
default:
 | 
			
		||||
	@echo "Specify a target configuration"
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	-rm *.o *~
 | 
			
		||||
 | 
			
		||||
targets: $(LIBDIR)/$(GLW_LIB)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Make the library
 | 
			
		||||
$(LIBDIR)/$(GLW_LIB): $(OBJECTS)
 | 
			
		||||
	$(MAKELIB) $(GLW_LIB) $(MAJOR) $(MINOR) $(TINY) $(OBJECTS)
 | 
			
		||||
	mv $(GLW_LIB)* $(LIBDIR)
 | 
			
		||||
	-mv *.a $(LIBDIR)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
include ../Make-config
 | 
			
		||||
 | 
			
		||||
include depend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Run 'make depend' to update the dependencies if you change what's included
 | 
			
		||||
# by any source file.
 | 
			
		||||
# 
 | 
			
		||||
dep: $(SOURCES)
 | 
			
		||||
	makedepend -fdepend -Y -I../include $(SOURCES)
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
# $Id: Makefile.X11,v 1.7 1999/11/11 01:22:28 brianp Exp $
 | 
			
		||||
# $Id: Makefile.X11,v 1.6.2.2 2000/01/23 17:47:00 brianp Exp $
 | 
			
		||||
 | 
			
		||||
# Mesa 3-D graphics library
 | 
			
		||||
# Version:  3.3
 | 
			
		||||
# Version:  3.1
 | 
			
		||||
# Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
 | 
			
		||||
# Makefile for core library
 | 
			
		||||
@@ -18,13 +18,13 @@ VPATH = RCS
 | 
			
		||||
INCDIR = ../include
 | 
			
		||||
LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CORE_SOURCES = \
 | 
			
		||||
	glapi.c \
 | 
			
		||||
	glapinoop.c \
 | 
			
		||||
	accum.c \
 | 
			
		||||
	alpha.c \
 | 
			
		||||
	alphabuf.c \
 | 
			
		||||
	api1.c \
 | 
			
		||||
	api2.c \
 | 
			
		||||
	apiext.c \
 | 
			
		||||
	attrib.c \
 | 
			
		||||
	bbox.c \
 | 
			
		||||
	bitmap.c \
 | 
			
		||||
@@ -37,7 +37,6 @@ CORE_SOURCES = \
 | 
			
		||||
	cva.c \
 | 
			
		||||
	debug_xform.c \
 | 
			
		||||
	depth.c \
 | 
			
		||||
	dispatch.c \
 | 
			
		||||
	dlist.c \
 | 
			
		||||
	drawpix.c \
 | 
			
		||||
	enable.c \
 | 
			
		||||
@@ -50,19 +49,18 @@ CORE_SOURCES = \
 | 
			
		||||
	glmisc.c \
 | 
			
		||||
	hash.c \
 | 
			
		||||
	image.c \
 | 
			
		||||
	imaging.c \
 | 
			
		||||
	light.c \
 | 
			
		||||
	lines.c \
 | 
			
		||||
	logic.c \
 | 
			
		||||
	masking.c \
 | 
			
		||||
	matrix.c \
 | 
			
		||||
	mem.c \
 | 
			
		||||
	mmath.c \
 | 
			
		||||
	mthreads.c \
 | 
			
		||||
	pb.c \
 | 
			
		||||
	pixel.c \
 | 
			
		||||
	pipeline.c \
 | 
			
		||||
	points.c \
 | 
			
		||||
	pointers.c \
 | 
			
		||||
	polygon.c \
 | 
			
		||||
	quads.c \
 | 
			
		||||
	rastpos.c \
 | 
			
		||||
@@ -106,6 +104,11 @@ DRIVER_SOURCES = \
 | 
			
		||||
	X/xmesa4.c \
 | 
			
		||||
	OSmesa/osmesa.c \
 | 
			
		||||
	SVGA/svgamesa.c \
 | 
			
		||||
	SVGA/svgamesa8.c \
 | 
			
		||||
	SVGA/svgamesa15.c \
 | 
			
		||||
	SVGA/svgamesa16.c \
 | 
			
		||||
	SVGA/svgamesa24.c \
 | 
			
		||||
	SVGA/svgamesa32.c \
 | 
			
		||||
	FX/fxapi.c \
 | 
			
		||||
	FX/fxclip.c \
 | 
			
		||||
	FX/fxcva.c \
 | 
			
		||||
@@ -222,7 +225,8 @@ X86/3dnow.o: X86/3dnow.c
 | 
			
		||||
#	@echo "Specify a target configuration"
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	-rm *.o *~ */*.o */*~
 | 
			
		||||
	-rm *.o *~ */*.o */*~ *.lo *.la
 | 
			
		||||
	-rm -rf .libs
 | 
			
		||||
 | 
			
		||||
targets: $(LIBDIR)/$(GL_LIB)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								src/mesa/drivers/ggi/default/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/mesa/drivers/ggi/default/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
genkgi.conf
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.o
 | 
			
		||||
*.la
 | 
			
		||||
							
								
								
									
										8
									
								
								src/mesa/drivers/ggi/display/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/mesa/drivers/ggi/display/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
fbdev.conf
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.o
 | 
			
		||||
*.la
 | 
			
		||||
							
								
								
									
										7
									
								
								src/mesa/drivers/ggi/include/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/mesa/drivers/ggi/include/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.o
 | 
			
		||||
*.la
 | 
			
		||||
							
								
								
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.o
 | 
			
		||||
*.la
 | 
			
		||||
							
								
								
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/mesa/.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/mesa/drivers/ggi/include/ggi/mesa/.cvsignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
.deps
 | 
			
		||||
.libs
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
*.lo
 | 
			
		||||
*.o
 | 
			
		||||
*.la
 | 
			
		||||
@@ -1,24 +1,52 @@
 | 
			
		||||
/* -*- mode: C; tab-width:8;  -*-
 | 
			
		||||
 | 
			
		||||
             fxapi.c - 3Dfx VooDoo/Mesa interface
 | 
			
		||||
*/
 | 
			
		||||
/* -*- mode: C; tab-width:8;  -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 ********************************************************************
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* fxapi.c - 3Dfx VooDoo/Mesa interface */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 *
 | 
			
		||||
 * Function names:
 | 
			
		||||
 *  fxMesa....     (The driver API)
 | 
			
		||||
@@ -820,9 +848,10 @@ void fxsignals()
 | 
			
		||||
/*
 | 
			
		||||
 * Create a new FX/Mesa context and return a handle to it.
 | 
			
		||||
 */
 | 
			
		||||
fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res,
 | 
			
		||||
					   GrScreenRefresh_t ref,
 | 
			
		||||
					   const GLint attribList[])
 | 
			
		||||
fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,
 | 
			
		||||
                                             GrScreenResolution_t res,
 | 
			
		||||
                                             GrScreenRefresh_t ref,
 | 
			
		||||
                                             const GLint attribList[])
 | 
			
		||||
{
 | 
			
		||||
   fxMesaContext fxMesa = NULL;
 | 
			
		||||
   int i,type;
 | 
			
		||||
@@ -835,7 +864,7 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res
 | 
			
		||||
   GLint accumSize=0;
 | 
			
		||||
   GLcontext *shareCtx = NULL;
 | 
			
		||||
   GLcontext *ctx = 0;
 | 
			
		||||
   FX_GrContext_t glideContext = 0;
 | 
			
		||||
   /*FX_GrContext_t glideContext = 0;*/
 | 
			
		||||
   char *errorstr;
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
@@ -928,24 +957,61 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res
 | 
			
		||||
   fxMesa->verbose=verbose;
 | 
			
		||||
   fxMesa->board=glbCurrentBoard;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref,
 | 
			
		||||
#if  FXMESA_USE_ARGB
 | 
			
		||||
					  GR_COLORFORMAT_ARGB,
 | 
			
		||||
   fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref,
 | 
			
		||||
					GR_COLORFORMAT_ARGB,
 | 
			
		||||
					GR_ORIGIN_LOWER_LEFT,
 | 
			
		||||
					2,aux);
 | 
			
		||||
#else
 | 
			
		||||
					  GR_COLORFORMAT_ABGR,
 | 
			
		||||
   fxMesa->glideContext = FX_grSstWinOpen((FxU32)win,res,ref,
 | 
			
		||||
					GR_COLORFORMAT_ABGR,
 | 
			
		||||
					GR_ORIGIN_LOWER_LEFT,
 | 
			
		||||
					2,aux);
 | 
			
		||||
#endif
 | 
			
		||||
					  GR_ORIGIN_LOWER_LEFT,
 | 
			
		||||
					  2,aux);
 | 
			
		||||
   if (!fxMesa->glideContext){
 | 
			
		||||
      errorstr = "grSstWinOpen"; 
 | 
			
		||||
      goto errorhandler;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
   /* Pixel tables are use during pixel read-back */
 | 
			
		||||
#if FXMESA_USE_ARGB 
 | 
			
		||||
   fxInitPixelTables(fxMesa, GL_FALSE); /* Force RGB pixel order */	
 | 
			
		||||
#else
 | 
			
		||||
   if (glbHWConfig.SSTs[glbCurrentBoard].type == GR_SSTTYPE_VOODOO) {
 | 
			
		||||
      /* jk991130 - GROSS HACK!!! - Voodoo 3s don't use BGR!!
 | 
			
		||||
       * the only way to tell if it's a Voodoo 3 at this stage of the
 | 
			
		||||
       * ballgame (no Glide 3.x for linux *yet*) is to query the # of TMUs
 | 
			
		||||
       * as Voodoo3s have 2 TMUs on board, Banshee has only 1
 | 
			
		||||
       * Thanks to Joseph Kain for that one
 | 
			
		||||
       */
 | 
			
		||||
      if (glbHWConfig.SSTs[glbCurrentBoard].sstBoard.VoodooConfig.nTexelfx == 2) {
 | 
			
		||||
         fxInitPixelTables(fxMesa, GL_FALSE); /* use RGB pixel order (Voodoo3) */
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
         fxInitPixelTables(fxMesa, GL_TRUE); /* use BGR pixel order on Voodoo1/2 */
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      fxInitPixelTables(fxMesa, GL_FALSE); /* use RGB pixel order otherwise */
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
   fxMesa->width=FX_grSstScreenWidth();
 | 
			
		||||
   fxMesa->height=FX_grSstScreenHeight();
 | 
			
		||||
 | 
			
		||||
   fxMesa->clipMinX = 0;
 | 
			
		||||
   fxMesa->clipMaxX = fxMesa->width;
 | 
			
		||||
   fxMesa->clipMinY = 0;
 | 
			
		||||
   fxMesa->clipMaxY = fxMesa->height;
 | 
			
		||||
 | 
			
		||||
   fxMesa->screen_width = fxMesa->width;
 | 
			
		||||
   fxMesa->screen_height = fxMesa->height;
 | 
			
		||||
   fxMesa->x_offset = 0;
 | 
			
		||||
   fxMesa->y_offset = 0;
 | 
			
		||||
   fxMesa->y_delta = 0;
 | 
			
		||||
   
 | 
			
		||||
   fxMesa->needClip = 0;
 | 
			
		||||
 | 
			
		||||
   if(verbose)
 | 
			
		||||
      fprintf(stderr,"Glide screen size: %dx%d\n",
 | 
			
		||||
              (int)FX_grSstScreenWidth(),(int)FX_grSstScreenHeight());
 | 
			
		||||
@@ -989,7 +1055,8 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res
 | 
			
		||||
 | 
			
		||||
   /* install signal handlers */
 | 
			
		||||
#if defined(__linux__)
 | 
			
		||||
   if (fxMesa->glCtx->CatchSignals) {
 | 
			
		||||
   /* Only install if environment var. is not set. */
 | 
			
		||||
   if (fxMesa->glCtx->CatchSignals && !getenv("MESA_FX_NO_SIGNALS")) {
 | 
			
		||||
      signal(SIGINT,cleangraphics_handler);
 | 
			
		||||
      signal(SIGHUP,cleangraphics_handler);
 | 
			
		||||
      signal(SIGPIPE,cleangraphics_handler);
 | 
			
		||||
@@ -1204,7 +1271,7 @@ int GLAPIENTRY fxQueryHardware(void)
 | 
			
		||||
        char buf[80];
 | 
			
		||||
                        
 | 
			
		||||
        FX_grGlideGetVersion(buf);
 | 
			
		||||
        fprintf(stderr,"Using Glide V%s\n",0);
 | 
			
		||||
        fprintf(stderr,"Using Glide V%s\n","");
 | 
			
		||||
        fprintf(stderr,"Number of boards: %d\n",glbHWConfig.num_sst);
 | 
			
		||||
 | 
			
		||||
        if(glbHWConfig.SSTs[glbCurrentBoard].type==GR_SSTTYPE_VOODOO) {
 | 
			
		||||
@@ -1232,7 +1299,10 @@ int GLAPIENTRY fxQueryHardware(void)
 | 
			
		||||
#if defined(__WIN32__)
 | 
			
		||||
    onexit((_onexit_t)cleangraphics);
 | 
			
		||||
#elif defined(__linux__)
 | 
			
		||||
    atexit(cleangraphics);
 | 
			
		||||
    /* Only register handler if environment variable is not defined. */
 | 
			
		||||
    if (!getenv("MESA_FX_NO_SIGNALS")) {
 | 
			
		||||
	atexit(cleangraphics);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +1,51 @@
 | 
			
		||||
/* -*- mode: C; tab-width:8;  -*-
 | 
			
		||||
 | 
			
		||||
             fxdd.c - 3Dfx VooDoo Mesa device driver functions
 | 
			
		||||
*/
 | 
			
		||||
/* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * See the file fxapi.c for more informations about authors
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* fxdd.c - 3Dfx VooDoo Mesa device driver functions */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
@@ -34,6 +57,46 @@
 | 
			
		||||
#include "enums.h"
 | 
			
		||||
#include "extensions.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* These lookup table are used to extract RGB values in [0,255] from
 | 
			
		||||
 * 16-bit pixel values.
 | 
			
		||||
 */
 | 
			
		||||
GLubyte FX_PixelToR[0x10000];
 | 
			
		||||
GLubyte FX_PixelToG[0x10000];
 | 
			
		||||
GLubyte FX_PixelToB[0x10000];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Initialize the FX_PixelTo{RGB} arrays.
 | 
			
		||||
 * Input: bgrOrder - if TRUE, pixels are in BGR order, else RGB order.
 | 
			
		||||
 */
 | 
			
		||||
void fxInitPixelTables(fxMesaContext fxMesa, GLboolean bgrOrder)
 | 
			
		||||
{
 | 
			
		||||
  GLuint pixel;
 | 
			
		||||
 | 
			
		||||
  fxMesa->bgrOrder=bgrOrder;
 | 
			
		||||
  for (pixel = 0; pixel <= 0xffff; pixel++) {
 | 
			
		||||
    GLuint r, g, b;
 | 
			
		||||
    if (bgrOrder) {
 | 
			
		||||
      r = (pixel & 0x001F) << 3;
 | 
			
		||||
      g = (pixel & 0x07E0) >> 3;
 | 
			
		||||
      b = (pixel & 0xF800) >> 8;
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      r = (pixel & 0xF800) >> 8;
 | 
			
		||||
      g = (pixel & 0x07E0) >> 3;
 | 
			
		||||
      b = (pixel & 0x001F) << 3;
 | 
			
		||||
    }
 | 
			
		||||
    r = r * 255 / 0xF8;  /* fill in low-order bits */
 | 
			
		||||
    g = g * 255 / 0xFC;
 | 
			
		||||
    b = b * 255 / 0xF8;
 | 
			
		||||
    FX_PixelToR[pixel] = r;
 | 
			
		||||
    FX_PixelToG[pixel] = g;
 | 
			
		||||
    FX_PixelToB[pixel] = b;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                 Miscellaneous functions                    *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
@@ -45,10 +108,11 @@ void fxDDDither(GLcontext *ctx, GLboolean enable)
 | 
			
		||||
    fprintf(stderr,"fxmesa: fxDDDither()\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if(enable)
 | 
			
		||||
    grDitherMode(GR_DITHER_4x4);
 | 
			
		||||
  else
 | 
			
		||||
    grDitherMode(GR_DITHER_DISABLE);
 | 
			
		||||
  if (enable) {
 | 
			
		||||
    FX_grDitherMode(GR_DITHER_4x4);
 | 
			
		||||
  } else {
 | 
			
		||||
    FX_grDitherMode(GR_DITHER_DISABLE);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -121,14 +185,14 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
    /* clear color and depth buffer */
 | 
			
		||||
 | 
			
		||||
    if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) {
 | 
			
		||||
      grRenderBuffer(GR_BUFFER_BACKBUFFER);
 | 
			
		||||
      grBufferClear(fxMesa->clearC, fxMesa->clearA,
 | 
			
		||||
                    (FxU16)(ctx->Depth.Clear*0xffff));
 | 
			
		||||
      FX_grRenderBuffer(GR_BUFFER_BACKBUFFER);
 | 
			
		||||
      FX_grBufferClear(fxMesa->clearC, fxMesa->clearA,
 | 
			
		||||
		       (FxU16)(ctx->Depth.Clear*0xffff));
 | 
			
		||||
    }
 | 
			
		||||
    if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) {
 | 
			
		||||
       grRenderBuffer(GR_BUFFER_FRONTBUFFER);
 | 
			
		||||
       grBufferClear(fxMesa->clearC, fxMesa->clearA,
 | 
			
		||||
                     (FxU16)(ctx->Depth.Clear*0xffff));
 | 
			
		||||
      FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER);
 | 
			
		||||
      FX_grBufferClear(fxMesa->clearC, fxMesa->clearA,
 | 
			
		||||
		       (FxU16)(ctx->Depth.Clear*0xffff));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    newmask=mask & (~(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT));
 | 
			
		||||
@@ -137,19 +201,20 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
    /* clear color buffer */
 | 
			
		||||
 | 
			
		||||
    if(ctx->Color.ColorMask) {
 | 
			
		||||
      grDepthMask(FXFALSE);
 | 
			
		||||
      FX_grDepthMask(FXFALSE);
 | 
			
		||||
 | 
			
		||||
      if (ctx->Color.DrawDestMask & BACK_LEFT_BIT) {
 | 
			
		||||
        grRenderBuffer(GR_BUFFER_BACKBUFFER);
 | 
			
		||||
        grBufferClear(fxMesa->clearC, fxMesa->clearA, 0);
 | 
			
		||||
        FX_grRenderBuffer(GR_BUFFER_BACKBUFFER);
 | 
			
		||||
        FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, 0);
 | 
			
		||||
      }
 | 
			
		||||
      if (ctx->Color.DrawDestMask & FRONT_LEFT_BIT) {
 | 
			
		||||
        grRenderBuffer(GR_BUFFER_FRONTBUFFER);
 | 
			
		||||
        grBufferClear(fxMesa->clearC, fxMesa->clearA, 0);
 | 
			
		||||
        FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER);
 | 
			
		||||
        FX_grBufferClear(fxMesa->clearC, fxMesa->clearA, 0);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if(ctx->Depth.Mask)
 | 
			
		||||
        grDepthMask(FXTRUE);
 | 
			
		||||
      if(ctx->Depth.Mask) {
 | 
			
		||||
        FX_grDepthMask(FXTRUE);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    newmask=mask & (~(GL_COLOR_BUFFER_BIT));
 | 
			
		||||
@@ -158,14 +223,14 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
    /* clear depth buffer */
 | 
			
		||||
 | 
			
		||||
    if(ctx->Depth.Mask) {
 | 
			
		||||
      grColorMask(FXFALSE,FXFALSE);
 | 
			
		||||
      grBufferClear(fxMesa->clearC, fxMesa->clearA,
 | 
			
		||||
                    (FxU16)(ctx->Depth.Clear*0xffff));
 | 
			
		||||
      FX_grColorMask(FXFALSE,FXFALSE);
 | 
			
		||||
      FX_grBufferClear(fxMesa->clearC, fxMesa->clearA,
 | 
			
		||||
		       (FxU16)(ctx->Depth.Clear*0xffff));
 | 
			
		||||
 | 
			
		||||
      grColorMask(ctx->Color.ColorMask[RCOMP] ||
 | 
			
		||||
                  ctx->Color.ColorMask[GCOMP] ||
 | 
			
		||||
                  ctx->Color.ColorMask[BCOMP],
 | 
			
		||||
                  ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer);
 | 
			
		||||
      FX_grColorMask(ctx->Color.ColorMask[RCOMP] ||
 | 
			
		||||
		     ctx->Color.ColorMask[GCOMP] ||
 | 
			
		||||
		     ctx->Color.ColorMask[BCOMP],
 | 
			
		||||
		     ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    newmask=mask & (~(GL_DEPTH_BUFFER_BIT));
 | 
			
		||||
@@ -190,12 +255,12 @@ static GLboolean fxDDSetBuffer(GLcontext *ctx, GLenum mode )
 | 
			
		||||
 | 
			
		||||
  if (mode == GL_FRONT_LEFT) {
 | 
			
		||||
    fxMesa->currentFB = GR_BUFFER_FRONTBUFFER;
 | 
			
		||||
    grRenderBuffer(fxMesa->currentFB);
 | 
			
		||||
    FX_grRenderBuffer(fxMesa->currentFB);
 | 
			
		||||
    return GL_TRUE;
 | 
			
		||||
  }
 | 
			
		||||
  else if (mode == GL_BACK_LEFT) {
 | 
			
		||||
    fxMesa->currentFB = GR_BUFFER_BACKBUFFER;
 | 
			
		||||
    grRenderBuffer(fxMesa->currentFB);
 | 
			
		||||
    FX_grRenderBuffer(fxMesa->currentFB);
 | 
			
		||||
    return GL_TRUE;
 | 
			
		||||
  }
 | 
			
		||||
  else {
 | 
			
		||||
@@ -204,6 +269,22 @@ static GLboolean fxDDSetBuffer(GLcontext *ctx, GLenum mode )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef XF86DRI
 | 
			
		||||
static GLboolean inClipRects(fxMesaContext fxMesa, int px, int py)
 | 
			
		||||
{
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
  py=fxMesa->height+fxMesa->y_offset-py;
 | 
			
		||||
  for (i=0; i<fxMesa->numClipRects; i++) {
 | 
			
		||||
    if ((px>=fxMesa->pClipRects[i].x1) && 
 | 
			
		||||
	(px<fxMesa->pClipRects[i].x2) &&
 | 
			
		||||
	(py>=fxMesa->pClipRects[i].y1) && 
 | 
			
		||||
	(py<fxMesa->pClipRects[i].y2)) return GL_TRUE;
 | 
			
		||||
  }
 | 
			
		||||
  return GL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py,
 | 
			
		||||
                                GLsizei width, GLsizei height,
 | 
			
		||||
@@ -241,10 +322,16 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py,
 | 
			
		||||
        ymax=fxMesa->height;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  xmin+=fxMesa->x_offset;
 | 
			
		||||
  xmax+=fxMesa->x_offset;
 | 
			
		||||
 | 
			
		||||
#define ISCLIPPED(rx) ( ((rx)<xmin) || ((rx)>=xmax) )
 | 
			
		||||
#ifdef XF86DRI
 | 
			
		||||
#define ISCLIPPED(rx, ry) ( ((rx)<xmin) || ((rx)>=xmax) || !inClipRects(fxMesa, rx, ry))
 | 
			
		||||
#else
 | 
			
		||||
#define ISCLIPPED(rx, ry) ( ((rx)<xmin) || ((rx)>=xmax) )
 | 
			
		||||
#endif
 | 
			
		||||
#define DRAWBIT(i) {       \
 | 
			
		||||
  if(!ISCLIPPED(x+px))     \
 | 
			
		||||
  if(!ISCLIPPED(x+px, y))  \
 | 
			
		||||
    if( (*pb) & (1<<(i)) ) \
 | 
			
		||||
      (*p)=color;          \
 | 
			
		||||
  p++;                     \
 | 
			
		||||
@@ -258,7 +345,7 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py,
 | 
			
		||||
  scrwidth=fxMesa->width;
 | 
			
		||||
  scrheight=fxMesa->height;
 | 
			
		||||
 | 
			
		||||
  if((px>=scrwidth) || (px+width<=0) || (py>=scrheight) || (py+height<=0))
 | 
			
		||||
  if ((px>=scrwidth) || (px+width<=0) || (py>=scrheight) || (py+height<=0))
 | 
			
		||||
    return GL_TRUE;
 | 
			
		||||
 | 
			
		||||
  pb=bitmap;
 | 
			
		||||
@@ -269,16 +356,16 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py,
 | 
			
		||||
    py=0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if(py+height>=scrheight)
 | 
			
		||||
  if (py+height>=scrheight)
 | 
			
		||||
    height-=(py+height)-scrheight;
 | 
			
		||||
 | 
			
		||||
  info.size=sizeof(info);
 | 
			
		||||
  if(!grLfbLock(GR_LFB_WRITE_ONLY,
 | 
			
		||||
                fxMesa->currentFB,
 | 
			
		||||
                GR_LFBWRITEMODE_565,
 | 
			
		||||
                GR_ORIGIN_UPPER_LEFT,
 | 
			
		||||
                FXFALSE,
 | 
			
		||||
                &info)) {
 | 
			
		||||
  if(!FX_grLfbLock(GR_LFB_WRITE_ONLY,
 | 
			
		||||
		   fxMesa->currentFB,
 | 
			
		||||
		   GR_LFBWRITEMODE_565,
 | 
			
		||||
		   GR_ORIGIN_UPPER_LEFT,
 | 
			
		||||
		   FXFALSE,
 | 
			
		||||
		   &info)) {
 | 
			
		||||
#ifndef FX_SILENT
 | 
			
		||||
    fprintf(stderr,"fx Driver: error locking the linear frame buffer\n");
 | 
			
		||||
#endif
 | 
			
		||||
@@ -289,22 +376,28 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py,
 | 
			
		||||
  g=(GLint)(ctx->Current.RasterColor[1]*255.0f);
 | 
			
		||||
  b=(GLint)(ctx->Current.RasterColor[2]*255.0f);
 | 
			
		||||
  a=(GLint)(ctx->Current.RasterColor[3]*255.0f);
 | 
			
		||||
  color=(FxU16)
 | 
			
		||||
    ( ((FxU16)0xf8 & b) <<(11-3))  |
 | 
			
		||||
    ( ((FxU16)0xfc & g) <<(5-3+1)) |
 | 
			
		||||
    ( ((FxU16)0xf8 & r) >> 3);
 | 
			
		||||
  if (fxMesa->bgrOrder)
 | 
			
		||||
    color=(FxU16)
 | 
			
		||||
      ( ((FxU16)0xf8 & b) <<(11-3))  |
 | 
			
		||||
      ( ((FxU16)0xfc & g) <<(5-3+1)) |
 | 
			
		||||
      ( ((FxU16)0xf8 & r) >> 3);
 | 
			
		||||
  else
 | 
			
		||||
    color=(FxU16)
 | 
			
		||||
      ( ((FxU16)0xf8 & r) <<(11-3))  |
 | 
			
		||||
      ( ((FxU16)0xfc & g) <<(5-3+1)) |
 | 
			
		||||
      ( ((FxU16)0xf8 & b) >> 3);
 | 
			
		||||
 | 
			
		||||
  stride=info.strideInBytes>>1;
 | 
			
		||||
 | 
			
		||||
  /* This code is a bit slow... */
 | 
			
		||||
 | 
			
		||||
  for(y=py;y<(py+height);y++) {
 | 
			
		||||
  if (py>ymin) ymin=py;
 | 
			
		||||
  if (py+height<ymax) ymax=py+height;
 | 
			
		||||
 | 
			
		||||
    if (y>=ymax)
 | 
			
		||||
        break;
 | 
			
		||||
  px+=fxMesa->x_offset;
 | 
			
		||||
  scrheight=fxMesa->height+fxMesa->y_offset;
 | 
			
		||||
 | 
			
		||||
    if (y<=ymin)
 | 
			
		||||
        continue;
 | 
			
		||||
  for(y=ymin; y<ymax; y++) {
 | 
			
		||||
 | 
			
		||||
    p=((FxU16 *)info.lfbPtr)+px+((scrheight-y)*stride);
 | 
			
		||||
 | 
			
		||||
@@ -315,7 +408,7 @@ static GLboolean fxDDDrawBitMap(GLcontext *ctx, GLint px, GLint py,
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  grLfbUnlock(GR_LFB_WRITE_ONLY,fxMesa->currentFB);
 | 
			
		||||
  FX_grLfbUnlock(GR_LFB_WRITE_ONLY,fxMesa->currentFB);
 | 
			
		||||
 | 
			
		||||
#undef ISCLIPPED
 | 
			
		||||
#undef DRAWBIT
 | 
			
		||||
@@ -347,8 +440,6 @@ void fxDDSetNearFar(GLcontext *ctx, GLfloat n, GLfloat f)
 | 
			
		||||
{
 | 
			
		||||
   FX_CONTEXT(ctx)->new_state |= FX_NEW_FOG;
 | 
			
		||||
   ctx->Driver.RenderStart = fxSetupFXUnits;
 | 
			
		||||
 | 
			
		||||
   FX_CONTEXT(ctx)->wscale = fabs(f)/65535.0f;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* KW: Put the word Mesa in the render string because quakeworld
 | 
			
		||||
@@ -459,13 +550,13 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa )
 | 
			
		||||
   fxMesa->unitsState.depthMask		=GL_TRUE;
 | 
			
		||||
   fxMesa->unitsState.depthTestFunc	=GR_CMP_LESS;
 | 
			
		||||
 | 
			
		||||
   grColorMask(FXTRUE, fxMesa->haveAlphaBuffer ? FXTRUE : FXFALSE);
 | 
			
		||||
   FX_grColorMask(FXTRUE, fxMesa->haveAlphaBuffer ? FXTRUE : FXFALSE);
 | 
			
		||||
   if(fxMesa->haveDoubleBuffer) {
 | 
			
		||||
      fxMesa->currentFB=GR_BUFFER_BACKBUFFER;
 | 
			
		||||
      grRenderBuffer(GR_BUFFER_BACKBUFFER);
 | 
			
		||||
      FX_grRenderBuffer(GR_BUFFER_BACKBUFFER);
 | 
			
		||||
   } else {
 | 
			
		||||
      fxMesa->currentFB=GR_BUFFER_FRONTBUFFER;
 | 
			
		||||
      grRenderBuffer(GR_BUFFER_FRONTBUFFER);
 | 
			
		||||
      FX_grRenderBuffer(GR_BUFFER_FRONTBUFFER);
 | 
			
		||||
   }
 | 
			
		||||
  
 | 
			
		||||
   fxMesa->state 	= NULL;
 | 
			
		||||
@@ -481,10 +572,10 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa )
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if(fxMesa->haveZBuffer)
 | 
			
		||||
      grDepthBufferMode(GR_DEPTHBUFFER_ZBUFFER);
 | 
			
		||||
      FX_grDepthBufferMode(GR_DEPTHBUFFER_ZBUFFER);
 | 
			
		||||
    
 | 
			
		||||
#if (!FXMESA_USE_ARGB)
 | 
			
		||||
   grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); /* Not every Glide has this  */
 | 
			
		||||
   FX_grLfbWriteColorFormat(GR_COLORFORMAT_ABGR); /* Not every Glide has this */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
   fxMesa->glCtx->Const.MaxTextureLevels=9;
 | 
			
		||||
@@ -505,7 +596,7 @@ int fxDDInitFxMesaContext( fxMesaContext fxMesa )
 | 
			
		||||
 | 
			
		||||
   fxDDSetNearFar(fxMesa->glCtx,1.0,100.0);
 | 
			
		||||
  
 | 
			
		||||
   grGlideGetState((GrState*)fxMesa->state);
 | 
			
		||||
   FX_grGlideGetState((GrState*)fxMesa->state);
 | 
			
		||||
 | 
			
		||||
   /* XXX Fix me: callback not registered when main VB is created.
 | 
			
		||||
    */
 | 
			
		||||
@@ -546,6 +637,12 @@ void fxDDInitExtensions( GLcontext *ctx )
 | 
			
		||||
      gl_extensions_disable( ctx, "GL_ARB_multitexture" );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  This driver may need to move the drawing operations to a different sub
 | 
			
		||||
  window. This modifies the viewport command to add our X,Y offset to all
 | 
			
		||||
  drawn objects that go through the viewport transformation.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
@@ -591,16 +688,19 @@ static GLboolean fxIsInHardware(GLcontext *ctx)
 | 
			
		||||
       /* Not very well written ... */
 | 
			
		||||
       ((ctx->Enabled & (TEXTURE0_1D | TEXTURE1_1D)) && 
 | 
			
		||||
        ((ctx->Enabled & (TEXTURE0_2D | TEXTURE1_2D))!=(TEXTURE0_2D | TEXTURE1_2D)))
 | 
			
		||||
       )
 | 
			
		||||
       ) {
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if((ctx->Texture.ReallyEnabled & TEXTURE0_2D) &&
 | 
			
		||||
       (ctx->Texture.Unit[0].EnvMode==GL_BLEND))
 | 
			
		||||
       (ctx->Texture.Unit[0].EnvMode==GL_BLEND)) {
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if((ctx->Texture.ReallyEnabled & TEXTURE1_2D) &&
 | 
			
		||||
       (ctx->Texture.Unit[1].EnvMode==GL_BLEND))
 | 
			
		||||
       (ctx->Texture.Unit[1].EnvMode==GL_BLEND)) {
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (MESA_VERBOSE & (VERBOSE_DRIVER|VERBOSE_TEXTURE))
 | 
			
		||||
@@ -617,8 +717,9 @@ static GLboolean fxIsInHardware(GLcontext *ctx)
 | 
			
		||||
       /* Can't use multipass to blend a multitextured triangle - fall
 | 
			
		||||
	* back to software.
 | 
			
		||||
	*/
 | 
			
		||||
       if (!fxMesa->haveTwoTMUs && ctx->Color.BlendEnabled) 
 | 
			
		||||
      if (!fxMesa->haveTwoTMUs && ctx->Color.BlendEnabled) {
 | 
			
		||||
	  return GL_FALSE;
 | 
			
		||||
      }
 | 
			
		||||
	  
 | 
			
		||||
       if ((ctx->Texture.Unit[0].EnvMode!=ctx->Texture.Unit[1].EnvMode) &&
 | 
			
		||||
	   (ctx->Texture.Unit[0].EnvMode!=GL_MODULATE) &&
 | 
			
		||||
@@ -626,7 +727,6 @@ static GLboolean fxIsInHardware(GLcontext *ctx)
 | 
			
		||||
       {
 | 
			
		||||
	  if (MESA_VERBOSE&VERBOSE_DRIVER)
 | 
			
		||||
	    fprintf(stderr, "fxMesa: unsupported multitex env mode\n");
 | 
			
		||||
 | 
			
		||||
	  return GL_FALSE;
 | 
			
		||||
       }
 | 
			
		||||
    }
 | 
			
		||||
@@ -635,13 +735,15 @@ static GLboolean fxIsInHardware(GLcontext *ctx)
 | 
			
		||||
       /* Not very well written ... */
 | 
			
		||||
       ((ctx->Enabled & TEXTURE0_1D) && 
 | 
			
		||||
        (!(ctx->Enabled & TEXTURE0_2D)))
 | 
			
		||||
       )
 | 
			
		||||
       ) {
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    if((ctx->Texture.ReallyEnabled & TEXTURE0_2D) &&
 | 
			
		||||
       (ctx->Texture.Unit[0].EnvMode==GL_BLEND))
 | 
			
		||||
       (ctx->Texture.Unit[0].EnvMode==GL_BLEND)) {
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return GL_TRUE;
 | 
			
		||||
@@ -680,11 +782,11 @@ static void fxDDUpdateDDPointers(GLcontext *ctx)
 | 
			
		||||
    ctx->Driver.LineFunc=fxMesa->LineFunc;
 | 
			
		||||
    ctx->Driver.TriangleFunc=fxMesa->TriangleFunc;
 | 
			
		||||
    ctx->Driver.QuadFunc=fxMesa->QuadFunc;
 | 
			
		||||
  } else 
 | 
			
		||||
  } else {
 | 
			
		||||
     fxMesa->render_index = FX_FALLBACK;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void fxSetupDDPointers(GLcontext *ctx)
 | 
			
		||||
{
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
@@ -748,7 +850,6 @@ void fxSetupDDPointers(GLcontext *ctx)
 | 
			
		||||
  ctx->Driver.CullFace=fxDDCullFace;
 | 
			
		||||
  ctx->Driver.ShadeModel=fxDDShadeModel;
 | 
			
		||||
  ctx->Driver.Enable=fxDDEnable;
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  ctx->Driver.RegisterVB=fxDDRegisterVB;
 | 
			
		||||
  ctx->Driver.UnregisterVB=fxDDUnregisterVB;
 | 
			
		||||
@@ -786,3 +887,4 @@ int gl_fx_dummy_function_dd(void)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif  /* FX */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,27 +1,51 @@
 | 
			
		||||
/* -*- mode: C; tab-width:8;  -*-
 | 
			
		||||
 | 
			
		||||
             fxdd.c - 3Dfx VooDoo Mesa span and pixel functions
 | 
			
		||||
*/
 | 
			
		||||
/* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * See the file fxapi.c for more informations about authors
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* fxdd.c - 3Dfx VooDoo Mesa span and pixel functions */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
@@ -42,6 +66,72 @@
 | 
			
		||||
 | 
			
		||||
#if !defined(FXMESA_USE_ARGB) 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(FX_GLIDE3) && defined(XF86DRI)
 | 
			
		||||
 | 
			
		||||
static FxBool writeRegionClipped(fxMesaContext fxMesa, GrBuffer_t dst_buffer,
 | 
			
		||||
			  FxU32 dst_x, FxU32 dst_y, GrLfbSrcFmt_t src_format,
 | 
			
		||||
			  FxU32 src_width, FxU32 src_height, FxI32 src_stride,
 | 
			
		||||
			  void *src_data);
 | 
			
		||||
 | 
			
		||||
FxBool writeRegionClipped(fxMesaContext fxMesa, GrBuffer_t dst_buffer,
 | 
			
		||||
			  FxU32 dst_x, FxU32 dst_y, GrLfbSrcFmt_t src_format,
 | 
			
		||||
			  FxU32 src_width, FxU32 src_height, FxI32 src_stride,
 | 
			
		||||
			  void *src_data)
 | 
			
		||||
{
 | 
			
		||||
  int i, x, w, srcElt;
 | 
			
		||||
  void *data;
 | 
			
		||||
 | 
			
		||||
  if (src_width==1 && src_height==1) { /* Easy case writing a point */
 | 
			
		||||
    for (i=0; i<fxMesa->numClipRects; i++) {
 | 
			
		||||
      if ((dst_x>=fxMesa->pClipRects[i].x1) && 
 | 
			
		||||
	  (dst_x<fxMesa->pClipRects[i].x2) &&
 | 
			
		||||
	  (dst_y>=fxMesa->pClipRects[i].y1) && 
 | 
			
		||||
	  (dst_y<fxMesa->pClipRects[i].y2)) {
 | 
			
		||||
	FX_grLfbWriteRegion(dst_buffer, dst_x, dst_y, src_format,
 | 
			
		||||
			    1, 1, src_stride, src_data);
 | 
			
		||||
	return GL_TRUE;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  } else if (src_height==1) { /* Writing a span */
 | 
			
		||||
    if (src_format==GR_LFB_SRC_FMT_8888) srcElt=4;
 | 
			
		||||
    else if (src_format==GR_LFB_SRC_FMT_ZA16) srcElt=2;
 | 
			
		||||
    else {
 | 
			
		||||
      fprintf(stderr, "Unknown src_format passed to writeRegionClipped\n");
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
    for (i=0; i<fxMesa->numClipRects; i++) {
 | 
			
		||||
      if (dst_y>=fxMesa->pClipRects[i].y1 && dst_y<fxMesa->pClipRects[i].y2) {
 | 
			
		||||
	if (dst_x<fxMesa->pClipRects[i].x1) {
 | 
			
		||||
	  x=fxMesa->pClipRects[i].x1;
 | 
			
		||||
	  data=((char*)src_data)+srcElt*(dst_x-x);
 | 
			
		||||
	  w=src_width-(x-dst_x);
 | 
			
		||||
	} else {
 | 
			
		||||
	  x=dst_x;
 | 
			
		||||
	  data=src_data;
 | 
			
		||||
	  w=src_width;
 | 
			
		||||
	}
 | 
			
		||||
	if (x+w>fxMesa->pClipRects[i].x2) {
 | 
			
		||||
	  w=fxMesa->pClipRects[i].x2-x;
 | 
			
		||||
	}
 | 
			
		||||
	FX_grLfbWriteRegion(dst_buffer, x, dst_y, src_format, w, 1,
 | 
			
		||||
			    src_stride, data);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  } else { /* Punt on the case of arbitrary rectangles */
 | 
			
		||||
    return GL_FALSE;
 | 
			
		||||
  }
 | 
			
		||||
  return GL_TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#define writeRegionClipped(fxm,dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\
 | 
			
		||||
  FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* KW: Rearranged the args in the call to grLfbWriteRegion().
 | 
			
		||||
 */
 | 
			
		||||
#define LFB_WRITE_SPAN_MESA(dst_buffer,		\
 | 
			
		||||
@@ -50,7 +140,7 @@
 | 
			
		||||
			    src_width,		\
 | 
			
		||||
			    src_stride,		\
 | 
			
		||||
			    src_data)		\
 | 
			
		||||
  grLfbWriteRegion(dst_buffer,			\
 | 
			
		||||
  writeRegionClipped(fxMesa, dst_buffer,	\
 | 
			
		||||
		   dst_x,			\
 | 
			
		||||
		   dst_y,			\
 | 
			
		||||
		   GR_LFB_SRC_FMT_8888,		\
 | 
			
		||||
@@ -60,7 +150,11 @@
 | 
			
		||||
		   src_data)			\
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#else /* defined(FXMESA_USE_RGBA) */
 | 
			
		||||
#else /* !defined(FXMESA_USE_RGBA) */
 | 
			
		||||
 | 
			
		||||
#define writeRegionClipped(fxm,dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\
 | 
			
		||||
  FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define MESACOLOR_TO_ARGB(c) (				\
 | 
			
		||||
             ( ((unsigned int)(c[ACOMP]))<<24 ) |	\
 | 
			
		||||
@@ -68,7 +162,7 @@
 | 
			
		||||
             ( ((unsigned int)(c[GCOMP]))<<8 )  |	\
 | 
			
		||||
             (  (unsigned int)(c[BCOMP])) )
 | 
			
		||||
  
 | 
			
		||||
void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer, 
 | 
			
		||||
inline void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer, 
 | 
			
		||||
			 FxU32 dst_x, 
 | 
			
		||||
			 FxU32 dst_y, 
 | 
			
		||||
			 FxU32 src_width,
 | 
			
		||||
@@ -84,7 +178,7 @@ void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer,
 | 
			
		||||
   {
 | 
			
		||||
      argb[i] = MESACOLOR_TO_ARGB(rgba[i]);
 | 
			
		||||
   }
 | 
			
		||||
   FX_grLfbWriteRegion(dst_buffer,
 | 
			
		||||
   writeRegionClipped( /*fxMesa,*/ NULL, dst_buffer,
 | 
			
		||||
		       dst_x,
 | 
			
		||||
		       dst_y,
 | 
			
		||||
		       GR_LFB_SRC_FMT_8888,
 | 
			
		||||
@@ -93,8 +187,9 @@ void LFB_WRITE_SPAN_MESA(GrBuffer_t dst_buffer,
 | 
			
		||||
		       src_stride,
 | 
			
		||||
		       (void*)argb);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
#endif /* !defined(FXMESA_USE_RGBA) */
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
/*****                    Span functions                            *****/
 | 
			
		||||
@@ -107,12 +202,13 @@ static void fxDDWriteRGBASpan(const GLcontext *ctx,
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1; 
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDWriteRGBASpan(...)\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  x+=fxMesa->x_offset;
 | 
			
		||||
  if (mask) {
 | 
			
		||||
    int span=0;
 | 
			
		||||
 | 
			
		||||
@@ -143,13 +239,14 @@ static void fxDDWriteRGBSpan(const GLcontext *ctx,
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
  GLubyte rgba[MAX_WIDTH][4];
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDWriteRGBSpan()\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  x+=fxMesa->x_offset;
 | 
			
		||||
  if (mask) {
 | 
			
		||||
    int span=0;
 | 
			
		||||
 | 
			
		||||
@@ -192,13 +289,14 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx,
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
  GLuint data[MAX_WIDTH];
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDWriteMonoRGBASpan(...)\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  x+=fxMesa->x_offset;
 | 
			
		||||
  if (mask) {
 | 
			
		||||
    int span=0;
 | 
			
		||||
 | 
			
		||||
@@ -208,7 +306,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx,
 | 
			
		||||
        ++span;
 | 
			
		||||
      } else {
 | 
			
		||||
        if (span > 0) {
 | 
			
		||||
          FX_grLfbWriteRegion( fxMesa->currentFB, x+i-span, bottom-y,
 | 
			
		||||
          writeRegionClipped(fxMesa,  fxMesa->currentFB, x+i-span, bottom-y,
 | 
			
		||||
                            GR_LFB_SRC_FMT_8888, span, 1, 0,
 | 
			
		||||
                            (void *) data );
 | 
			
		||||
          span = 0;
 | 
			
		||||
@@ -217,7 +315,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (span > 0)
 | 
			
		||||
      FX_grLfbWriteRegion( fxMesa->currentFB, x+n-span, bottom-y,
 | 
			
		||||
      writeRegionClipped(fxMesa,  fxMesa->currentFB, x+n-span, bottom-y,
 | 
			
		||||
                        GR_LFB_SRC_FMT_8888, span, 1, 0,
 | 
			
		||||
                        (void *) data );
 | 
			
		||||
  } else {
 | 
			
		||||
@@ -225,7 +323,7 @@ static void fxDDWriteMonoRGBASpan(const GLcontext *ctx,
 | 
			
		||||
      data[i]=(GLuint) fxMesa->color;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FX_grLfbWriteRegion( fxMesa->currentFB, x, bottom-y, GR_LFB_SRC_FMT_8888,
 | 
			
		||||
    writeRegionClipped(fxMesa,  fxMesa->currentFB, x, bottom-y, GR_LFB_SRC_FMT_8888,
 | 
			
		||||
                      n, 1, 0, (void *) data );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -237,7 +335,7 @@ static void fxDDReadRGBASpan(const GLcontext *ctx,
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLushort data[MAX_WIDTH];
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDReadRGBASpan(...)\n");
 | 
			
		||||
@@ -245,20 +343,16 @@ static void fxDDReadRGBASpan(const GLcontext *ctx,
 | 
			
		||||
 | 
			
		||||
  assert(n < MAX_WIDTH);
 | 
			
		||||
 | 
			
		||||
  grLfbReadRegion( fxMesa->currentFB, x, bottom-y, n, 1, 0, data);
 | 
			
		||||
  for (i=0;i<n;i++) {
 | 
			
		||||
#if FXMESA_USE_ARGB
 | 
			
		||||
    rgba[i][RCOMP]=(data[i] & 0xF800) >> 8;
 | 
			
		||||
    rgba[i][GCOMP]=(data[i] & 0x07E0) >> 3;
 | 
			
		||||
    rgba[i][BCOMP]=(data[i] & 0x001F) << 3;
 | 
			
		||||
#else
 | 
			
		||||
    rgba[i][RCOMP]=(data[i] & 0x001f) << 3;
 | 
			
		||||
    rgba[i][GCOMP]=(data[i] & 0x07e0) >> 3;
 | 
			
		||||
    rgba[i][BCOMP]=(data[i] & 0xf800) >> 8;
 | 
			
		||||
#endif
 | 
			
		||||
    rgba[i][ACOMP]=255;
 | 
			
		||||
  }
 | 
			
		||||
  x+=fxMesa->x_offset;
 | 
			
		||||
  FX_grLfbReadRegion( fxMesa->currentFB, x, bottom-y, n, 1, 0, data);
 | 
			
		||||
 | 
			
		||||
  for (i=0;i<n;i++) {
 | 
			
		||||
    GLushort pixel = data[i];
 | 
			
		||||
    rgba[i][RCOMP] = FX_PixelToR[pixel];
 | 
			
		||||
    rgba[i][GCOMP] = FX_PixelToG[pixel];
 | 
			
		||||
    rgba[i][BCOMP] = FX_PixelToB[pixel];
 | 
			
		||||
    rgba[i][ACOMP] = 255;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
@@ -271,7 +365,7 @@ static void fxDDWriteRGBAPixels(const GLcontext *ctx,
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDWriteRGBAPixels(...)\n");
 | 
			
		||||
@@ -279,8 +373,8 @@ static void fxDDWriteRGBAPixels(const GLcontext *ctx,
 | 
			
		||||
 | 
			
		||||
  for(i=0;i<n;i++)
 | 
			
		||||
    if(mask[i])
 | 
			
		||||
       LFB_WRITE_SPAN_MESA(fxMesa->currentFB,x[i],bottom-y[i],
 | 
			
		||||
                       /*GR_LFB_SRC_FMT_8888,*/1,/*1,*/0,(void *)rgba[i]);
 | 
			
		||||
       LFB_WRITE_SPAN_MESA(fxMesa->currentFB, x[i]+fxMesa->x_offset, bottom-y[i],
 | 
			
		||||
                       1, 1, (void *)rgba[i]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx,
 | 
			
		||||
@@ -289,7 +383,7 @@ static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx,
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDWriteMonoRGBAPixels(...)\n");
 | 
			
		||||
@@ -297,7 +391,7 @@ static void fxDDWriteMonoRGBAPixels(const GLcontext *ctx,
 | 
			
		||||
 | 
			
		||||
  for(i=0;i<n;i++)
 | 
			
		||||
    if(mask[i])
 | 
			
		||||
      FX_grLfbWriteRegion(fxMesa->currentFB,x[i],bottom-y[i],
 | 
			
		||||
      writeRegionClipped(fxMesa, fxMesa->currentFB,x[i]+fxMesa->x_offset,bottom-y[i],
 | 
			
		||||
                       GR_LFB_SRC_FMT_8888,1,1,0,(void *) &fxMesa->color);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -307,31 +401,25 @@ static void fxDDReadRGBAPixels(const GLcontext *ctx,
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLushort data;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDReadRGBAPixels(...)\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for(i=0;i<n;i++)
 | 
			
		||||
  for(i=0;i<n;i++) {
 | 
			
		||||
    if(mask[i]) {
 | 
			
		||||
      grLfbReadRegion(fxMesa->currentFB,x[i],bottom-y[i],1,1,0,&data);
 | 
			
		||||
   #if FXMESA_USE_ARGB 
 | 
			
		||||
      rgba[i][RCOMP]=(data & 0xF800) >> 8;
 | 
			
		||||
      rgba[i][GCOMP]=(data & 0x07E0) >> 3;
 | 
			
		||||
      rgba[i][BCOMP]=(data & 0x001F) >> 8;
 | 
			
		||||
   #else
 | 
			
		||||
      rgba[i][RCOMP]=(data & 0x001f) << 3;
 | 
			
		||||
      rgba[i][GCOMP]=(data & 0x07e0) >> 3;
 | 
			
		||||
      rgba[i][BCOMP]=(data & 0xf800) >> 8;
 | 
			
		||||
   #endif
 | 
			
		||||
      /* the alpha value should be read from the auxiliary buffer when required */
 | 
			
		||||
 | 
			
		||||
      rgba[i][ACOMP]=255;
 | 
			
		||||
      GLushort pixel;
 | 
			
		||||
      FX_grLfbReadRegion(fxMesa->currentFB,x[i],bottom-y[i],1,1,0,&pixel);
 | 
			
		||||
      rgba[i][RCOMP] = FX_PixelToR[pixel];
 | 
			
		||||
      rgba[i][GCOMP] = FX_PixelToG[pixel];
 | 
			
		||||
      rgba[i][BCOMP] = FX_PixelToB[pixel];
 | 
			
		||||
      rgba[i][ACOMP] = 255;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
/*****                    Depth functions                           *****/
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
@@ -341,14 +429,15 @@ void fxDDReadDepthSpanFloat(GLcontext *ctx,
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
  GLushort data[MAX_WIDTH];
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDReadDepthSpanFloat(...)\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,data);
 | 
			
		||||
  x+=fxMesa->x_offset;
 | 
			
		||||
  FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,data);
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
    convert the read values to float values [0.0 .. 1.0].
 | 
			
		||||
@@ -361,13 +450,14 @@ void fxDDReadDepthSpanInt(GLcontext *ctx,
 | 
			
		||||
			  GLuint n, GLint x, GLint y, GLdepth depth[])
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDReadDepthSpanInt(...)\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depth);
 | 
			
		||||
  x+=fxMesa->x_offset;
 | 
			
		||||
  FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depth);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx,
 | 
			
		||||
@@ -380,13 +470,14 @@ GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx,
 | 
			
		||||
  GLubyte *m=mask;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLuint passed=0;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDDepthTestSpanGeneric(...)\n");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depthdata);
 | 
			
		||||
  x+=fxMesa->x_offset;
 | 
			
		||||
  FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,n,1,0,depthdata);
 | 
			
		||||
 | 
			
		||||
  /* switch cases ordered from most frequent to less frequent */
 | 
			
		||||
  switch (ctx->Depth.Func) {
 | 
			
		||||
@@ -578,7 +669,7 @@ GLuint fxDDDepthTestSpanGeneric(GLcontext *ctx,
 | 
			
		||||
  } /*switch*/
 | 
			
		||||
 | 
			
		||||
  if(passed)
 | 
			
		||||
    FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x,bottom-y,GR_LFB_SRC_FMT_ZA16,n,1,0,depthdata);
 | 
			
		||||
    writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x,bottom-y,GR_LFB_SRC_FMT_ZA16,n,1,0,depthdata);
 | 
			
		||||
 | 
			
		||||
  return passed;
 | 
			
		||||
}
 | 
			
		||||
@@ -590,7 +681,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  GLdepth zval;
 | 
			
		||||
  GLuint i;
 | 
			
		||||
  GLint bottom=fxMesa->height-1;
 | 
			
		||||
  GLint bottom=fxMesa->height+fxMesa->y_offset-1;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDDepthTestPixelsGeneric(...)\n");
 | 
			
		||||
@@ -603,10 +694,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] < zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
            FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
            writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
          } else {
 | 
			
		||||
            /* fail */
 | 
			
		||||
            mask[i] = 0;
 | 
			
		||||
@@ -617,7 +708,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Don't update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] < zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
          }
 | 
			
		||||
@@ -634,10 +725,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] <= zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
            FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
            writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
          } else {
 | 
			
		||||
            /* fail */
 | 
			
		||||
            mask[i] = 0;
 | 
			
		||||
@@ -648,7 +739,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Don't update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] <= zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
          } else {
 | 
			
		||||
@@ -664,10 +755,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] >= zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
            FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
            writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
          } else {
 | 
			
		||||
            /* fail */
 | 
			
		||||
            mask[i] = 0;
 | 
			
		||||
@@ -678,7 +769,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Don't update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] >= zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
          } else {
 | 
			
		||||
@@ -694,10 +785,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] > zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
            FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
            writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
          } else {
 | 
			
		||||
            /* fail */
 | 
			
		||||
            mask[i] = 0;
 | 
			
		||||
@@ -708,7 +799,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Don't update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] > zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
          } else {
 | 
			
		||||
@@ -724,10 +815,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] != zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
            FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
            writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
          } else {
 | 
			
		||||
            /* fail */
 | 
			
		||||
            mask[i] = 0;
 | 
			
		||||
@@ -738,7 +829,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Don't update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] != zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
          }
 | 
			
		||||
@@ -755,10 +846,10 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] == zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
            FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
            writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
          } else {
 | 
			
		||||
            /* fail */
 | 
			
		||||
            mask[i] = 0;
 | 
			
		||||
@@ -769,7 +860,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Don't update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          FX_grLfbReadRegion(GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],1,1,0,&zval);
 | 
			
		||||
          if (z[i] == zval) {
 | 
			
		||||
            /* pass */
 | 
			
		||||
          } else {
 | 
			
		||||
@@ -785,7 +876,7 @@ void fxDDDepthTestPixelsGeneric(GLcontext* ctx,
 | 
			
		||||
      /* Update Z buffer */
 | 
			
		||||
      for (i=0; i<n; i++) {
 | 
			
		||||
        if (mask[i]) {
 | 
			
		||||
          FX_grLfbWriteRegion(GR_BUFFER_AUXBUFFER,x[i],bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
          writeRegionClipped(fxMesa, GR_BUFFER_AUXBUFFER,x[i]+fxMesa->x_offset,bottom-y[i],GR_LFB_SRC_FMT_ZA16,1,1,0,(void*)&z[i]);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,27 +1,48 @@
 | 
			
		||||
/* -*- mode: C; tab-width:8;  -*-
 | 
			
		||||
 | 
			
		||||
             fxddtex.c - 3Dfx VooDoo Texture mapping functions
 | 
			
		||||
*/
 | 
			
		||||
/* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * See the file fxapi.c for more informations about authors
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
@@ -30,6 +51,37 @@
 | 
			
		||||
 | 
			
		||||
#include "fxdrv.h"
 | 
			
		||||
 | 
			
		||||
void fxPrintTextureData(tfxTexInfo *ti)
 | 
			
		||||
{
 | 
			
		||||
  fprintf(stderr, "Texture Data:\n");
 | 
			
		||||
  if (ti->tObj) {
 | 
			
		||||
    fprintf(stderr, "\tName: %d\n", ti->tObj->Name);
 | 
			
		||||
    fprintf(stderr, "\tBaseLevel: %d\n", ti->tObj->BaseLevel);
 | 
			
		||||
    fprintf(stderr, "\tSize: %d x %d\n", 
 | 
			
		||||
	    ti->tObj->Image[ti->tObj->BaseLevel]->Width,
 | 
			
		||||
	    ti->tObj->Image[ti->tObj->BaseLevel]->Height);
 | 
			
		||||
  } else
 | 
			
		||||
    fprintf(stderr, "\tName: UNNAMED\n");
 | 
			
		||||
  fprintf(stderr, "\tLast used: %d\n", ti->lastTimeUsed);
 | 
			
		||||
  fprintf(stderr, "\tTMU: %d\n", ti->whichTMU);
 | 
			
		||||
  fprintf(stderr, "\t%s\n", (ti->isInTM)?"In TMU":"Not in TMU");
 | 
			
		||||
  if (ti->tm[0]) 
 | 
			
		||||
    fprintf(stderr, "\tMem0: %x-%x\n", ti->tm[0]->startAddr, 
 | 
			
		||||
	    ti->tm[0]->endAddr);
 | 
			
		||||
  if (ti->tm[1]) 
 | 
			
		||||
    fprintf(stderr, "\tMem1: %x-%x\n", ti->tm[1]->startAddr, 
 | 
			
		||||
	    ti->tm[1]->endAddr);
 | 
			
		||||
  fprintf(stderr, "\tMipmaps: %d-%d\n", ti->minLevel, ti->maxLevel);
 | 
			
		||||
  fprintf(stderr, "\tFilters: min %d min %d\n", ti->minFilt, ti->maxFilt);
 | 
			
		||||
  fprintf(stderr, "\tClamps: s %d t %d\n", ti->sClamp, ti->tClamp);
 | 
			
		||||
  fprintf(stderr, "\tScales: s %f t %f\n", ti->sScale, ti->tScale);
 | 
			
		||||
  fprintf(stderr, "\tInt Scales: s %d t %d\n", 
 | 
			
		||||
	  ti->int_sScale/0x800000, ti->int_tScale/0x800000);
 | 
			
		||||
  fprintf(stderr, "\t%s\n", (ti->fixedPalette)?"Fixed palette":"Non fixed palette");
 | 
			
		||||
  fprintf(stderr, "\t%s\n", (ti->validated)?"Validated":"Not validated");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
/*************************** Texture Mapping ****************************/
 | 
			
		||||
/************************************************************************/
 | 
			
		||||
@@ -41,7 +93,7 @@ void fxTexInvalidate(GLcontext *ctx, struct gl_texture_object *tObj)
 | 
			
		||||
 | 
			
		||||
  fxTMMoveOutTM(fxMesa,tObj); /* TO DO: SLOW but easy to write */
 | 
			
		||||
 | 
			
		||||
  ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
  ti=fxTMGetTexInfo(tObj);
 | 
			
		||||
  ti->validated=GL_FALSE;
 | 
			
		||||
  fxMesa->new_state|=FX_NEW_TEXTURING;
 | 
			
		||||
  ctx->Driver.RenderStart = fxSetupFXUnits;
 | 
			
		||||
@@ -59,12 +111,12 @@ static tfxTexInfo *fxAllocTexObjData(fxMesaContext fxMesa)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ti->validated=GL_FALSE;
 | 
			
		||||
  ti->tmi.isInTM=GL_FALSE;
 | 
			
		||||
  ti->isInTM=GL_FALSE;
 | 
			
		||||
 | 
			
		||||
  ti->tmi.whichTMU=FX_TMU_NONE;
 | 
			
		||||
  ti->whichTMU=FX_TMU_NONE;
 | 
			
		||||
 | 
			
		||||
  ti->tmi.tm[FX_TMU0]=NULL;
 | 
			
		||||
  ti->tmi.tm[FX_TMU1]=NULL;
 | 
			
		||||
  ti->tm[FX_TMU0]=NULL;
 | 
			
		||||
  ti->tm[FX_TMU1]=NULL;
 | 
			
		||||
 | 
			
		||||
  ti->minFilt=GR_TEXTUREFILTER_POINT_SAMPLED;
 | 
			
		||||
  ti->maxFilt=GR_TEXTUREFILTER_BILINEAR;
 | 
			
		||||
@@ -72,17 +124,12 @@ static tfxTexInfo *fxAllocTexObjData(fxMesaContext fxMesa)
 | 
			
		||||
  ti->sClamp=GR_TEXTURECLAMP_WRAP;
 | 
			
		||||
  ti->tClamp=GR_TEXTURECLAMP_WRAP;
 | 
			
		||||
 | 
			
		||||
  if(fxMesa->haveTwoTMUs) {
 | 
			
		||||
    ti->mmMode=GR_MIPMAP_NEAREST;
 | 
			
		||||
    ti->LODblend=FXTRUE;
 | 
			
		||||
  } else {
 | 
			
		||||
    ti->mmMode=GR_MIPMAP_NEAREST_DITHER;
 | 
			
		||||
    ti->LODblend=FXFALSE;
 | 
			
		||||
  }
 | 
			
		||||
  ti->mmMode=GR_MIPMAP_NEAREST;
 | 
			
		||||
  ti->LODblend=FXFALSE;
 | 
			
		||||
 | 
			
		||||
  for(i=0;i<MAX_TEXTURE_LEVELS;i++) {
 | 
			
		||||
    ti->tmi.mipmapLevel[i].used=GL_FALSE;
 | 
			
		||||
    ti->tmi.mipmapLevel[i].data=NULL;
 | 
			
		||||
    ti->mipmapLevel[i].used=GL_FALSE;
 | 
			
		||||
    ti->mipmapLevel[i].data=NULL;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return ti;
 | 
			
		||||
@@ -100,13 +147,14 @@ void fxDDTexBind(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj)
 | 
			
		||||
  if(target!=GL_TEXTURE_2D)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  if(!tObj->DriverData)
 | 
			
		||||
  if (!tObj->DriverData) {
 | 
			
		||||
    tObj->DriverData=fxAllocTexObjData(fxMesa);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
  ti=fxTMGetTexInfo(tObj);
 | 
			
		||||
 | 
			
		||||
  fxMesa->texBindNumber++;
 | 
			
		||||
  ti->tmi.lastTimeUsed=fxMesa->texBindNumber;
 | 
			
		||||
  ti->lastTimeUsed=fxMesa->texBindNumber;
 | 
			
		||||
 | 
			
		||||
  fxMesa->new_state|=FX_NEW_TEXTURING;
 | 
			
		||||
  ctx->Driver.RenderStart = fxSetupFXUnits;
 | 
			
		||||
@@ -141,10 +189,10 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj,
 | 
			
		||||
  if(target!=GL_TEXTURE_2D)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  if(!tObj->DriverData)
 | 
			
		||||
  if (!tObj->DriverData)
 | 
			
		||||
    tObj->DriverData=fxAllocTexObjData(fxMesa);
 | 
			
		||||
 | 
			
		||||
  ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
  ti=fxTMGetTexInfo(tObj);
 | 
			
		||||
 | 
			
		||||
  switch(pname) {
 | 
			
		||||
 | 
			
		||||
@@ -219,7 +267,6 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj,
 | 
			
		||||
      ti->sClamp=GR_TEXTURECLAMP_WRAP;
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
       fprintf(stderr, "BAD CLAMP\n");
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    fxMesa->new_state|=FX_NEW_TEXTURING;
 | 
			
		||||
@@ -266,7 +313,7 @@ void fxDDTexParam(GLcontext *ctx, GLenum target, struct gl_texture_object *tObj,
 | 
			
		||||
void fxDDTexDel(GLcontext *ctx, struct gl_texture_object *tObj)
 | 
			
		||||
{
 | 
			
		||||
  fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 | 
			
		||||
  tfxTexInfo *ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
  tfxTexInfo *ti=fxTMGetTexInfo(tObj);
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: fxDDTexDel(%d,%x)\n",tObj->Name,(GLuint)ti);
 | 
			
		||||
@@ -309,10 +356,10 @@ void fxDDTexPalette(GLcontext *ctx, struct gl_texture_object *tObj)
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(!tObj->DriverData)
 | 
			
		||||
    if (!tObj->DriverData)
 | 
			
		||||
      tObj->DriverData=fxAllocTexObjData(fxMesa);
 | 
			
		||||
  
 | 
			
		||||
    ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
    ti=fxTMGetTexInfo(tObj);
 | 
			
		||||
 | 
			
		||||
    for(i=0;i<tObj->PaletteSize;i++) {
 | 
			
		||||
      r=tObj->Palette[i*4];
 | 
			
		||||
@@ -374,13 +421,10 @@ void fxDDTexUseGlbPalette(GLcontext *ctx, GLboolean state)
 | 
			
		||||
    if((ctx->Texture.Unit[0].Current==ctx->Texture.Unit[0].CurrentD[2]) &&
 | 
			
		||||
       (ctx->Texture.Unit[0].Current!=NULL)) {
 | 
			
		||||
      struct gl_texture_object *tObj=ctx->Texture.Unit[0].Current;
 | 
			
		||||
      tfxTexInfo *ti;
 | 
			
		||||
 | 
			
		||||
      if(!tObj->DriverData)
 | 
			
		||||
      if (!tObj->DriverData)
 | 
			
		||||
        tObj->DriverData=fxAllocTexObjData(fxMesa);
 | 
			
		||||
  
 | 
			
		||||
      ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
 | 
			
		||||
      fxTexInvalidate(ctx,tObj);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@@ -872,10 +916,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image,
 | 
			
		||||
 | 
			
		||||
    if(wscale==hscale==1) {
 | 
			
		||||
      int i=0;
 | 
			
		||||
      int lenght=h*w;
 | 
			
		||||
      int length=h*w;
 | 
			
		||||
      unsigned short a,l;
 | 
			
		||||
 | 
			
		||||
      while(i++<lenght) {
 | 
			
		||||
      while(i++<length) {
 | 
			
		||||
        l=*data++;
 | 
			
		||||
        a=*data++;
 | 
			
		||||
 | 
			
		||||
@@ -916,10 +960,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image,
 | 
			
		||||
 | 
			
		||||
    if(wscale==hscale==1) {
 | 
			
		||||
      int i=0;
 | 
			
		||||
      int lenght=h*w;
 | 
			
		||||
      int length=h*w;
 | 
			
		||||
      unsigned short r,g,b;
 | 
			
		||||
 | 
			
		||||
      while(i++<lenght) {
 | 
			
		||||
      while(i++<length) {
 | 
			
		||||
        r=*data++;
 | 
			
		||||
        g=*data++;
 | 
			
		||||
        b=*data++;
 | 
			
		||||
@@ -966,10 +1010,10 @@ static void fxTexBuildImageMap(const struct gl_texture_image *image,
 | 
			
		||||
 | 
			
		||||
    if(wscale==hscale==1) {
 | 
			
		||||
      int i=0;
 | 
			
		||||
      int lenght=h*w;
 | 
			
		||||
      int length=h*w;
 | 
			
		||||
      unsigned short r,g,b,a;
 | 
			
		||||
 | 
			
		||||
      while(i++<lenght) {
 | 
			
		||||
      while(i++<length) {
 | 
			
		||||
        r=*data++;
 | 
			
		||||
        g=*data++;
 | 
			
		||||
        b=*data++;
 | 
			
		||||
@@ -1014,21 +1058,23 @@ void fxDDTexImg(GLcontext *ctx, GLenum target,
 | 
			
		||||
  tfxTexInfo *ti;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: (%d) fxDDTexImg(...,%d,%x,%d,%d...)\n",tObj->Name,
 | 
			
		||||
	     target,internalFormat,image->Width,image->Height);
 | 
			
		||||
     fprintf(stderr,
 | 
			
		||||
	     "fxmesa: (%d) fxDDTexImg(...,level=%d,target=%d,format=%x,width=%d,height=%d...)\n",
 | 
			
		||||
	     tObj->Name, level, target, internalFormat, image->Width,
 | 
			
		||||
	     image->Height);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if(target!=GL_TEXTURE_2D)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  if(!tObj->DriverData)
 | 
			
		||||
  if (!tObj->DriverData)
 | 
			
		||||
    tObj->DriverData=fxAllocTexObjData(fxMesa);
 | 
			
		||||
 | 
			
		||||
  ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
  ti=fxTMGetTexInfo(tObj);
 | 
			
		||||
 | 
			
		||||
  if(fxIsTexSupported(target,internalFormat,image)) {
 | 
			
		||||
    GrTextureFormat_t gldformat;
 | 
			
		||||
    tfxMipMapLevel *mml=&ti->tmi.mipmapLevel[level];
 | 
			
		||||
    tfxMipMapLevel *mml=&ti->mipmapLevel[level];
 | 
			
		||||
 | 
			
		||||
    fxTexGetFormat(internalFormat,&gldformat,NULL);
 | 
			
		||||
    
 | 
			
		||||
@@ -1039,7 +1085,7 @@ void fxDDTexImg(GLcontext *ctx, GLenum target,
 | 
			
		||||
        fxTexBuildImageMap(image,internalFormat,&(mml->data),
 | 
			
		||||
                           &(mml->translated));
 | 
			
		||||
 | 
			
		||||
        if(ti->validated && ti->tmi.isInTM)
 | 
			
		||||
        if(ti->validated && ti->isInTM)
 | 
			
		||||
          fxTMReloadMipMapLevel(fxMesa,tObj,level);
 | 
			
		||||
        else
 | 
			
		||||
          fxTexInvalidate(ctx,tObj);
 | 
			
		||||
@@ -1239,18 +1285,20 @@ void fxDDTexSubImg(GLcontext *ctx, GLenum target,
 | 
			
		||||
  tfxMipMapLevel *mml;
 | 
			
		||||
 | 
			
		||||
  if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
     fprintf(stderr,"fxmesa: (%d) fxDDTexSubImg(...,%d,%x,%d,%d...)\n",tObj->Name,
 | 
			
		||||
	     target,internalFormat,image->Width,image->Height);
 | 
			
		||||
     fprintf(stderr,
 | 
			
		||||
	     "fxmesa: (%d) fxDDTexSubImg(level=%d,target=%d,format=%x,width=%d,height=%d)\n",
 | 
			
		||||
	     tObj->Name, level, target, internalFormat, image->Width,
 | 
			
		||||
	     image->Height);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if(target!=GL_TEXTURE_2D)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  if(!tObj->DriverData)
 | 
			
		||||
  if (!tObj->DriverData)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  ti=(tfxTexInfo *)tObj->DriverData;
 | 
			
		||||
  mml=&ti->tmi.mipmapLevel[level];
 | 
			
		||||
  ti=fxTMGetTexInfo(tObj);
 | 
			
		||||
  mml=&ti->mipmapLevel[level];
 | 
			
		||||
 | 
			
		||||
  fxTexGetFormat(internalFormat,&gldformat,NULL);
 | 
			
		||||
 | 
			
		||||
@@ -1278,7 +1326,7 @@ void fxDDTexSubImg(GLcontext *ctx, GLenum target,
 | 
			
		||||
    fxTexBuildSubImageMap(image,internalFormat,xoffset,yoffset,
 | 
			
		||||
                          width,height,mml->data);
 | 
			
		||||
 | 
			
		||||
  if(ti->validated && ti->tmi.isInTM)
 | 
			
		||||
  if(ti->validated && ti->isInTM)
 | 
			
		||||
    fxTMReloadSubMipMapLevel(fxMesa,tObj,level,yoffset,height);
 | 
			
		||||
  else
 | 
			
		||||
    fxTexInvalidate(ctx,tObj);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,27 +1,48 @@
 | 
			
		||||
/* -*- mode: C; tab-width:8;  -*-
 | 
			
		||||
 | 
			
		||||
             fxdrv.h - 3Dfx VooDoo driver types
 | 
			
		||||
*/
 | 
			
		||||
/* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * See the file fxapi.c for more informations about authors
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef FXDRV_H
 | 
			
		||||
#define FXDRV_H
 | 
			
		||||
 | 
			
		||||
@@ -54,14 +75,18 @@
 | 
			
		||||
#include "clip.h"
 | 
			
		||||
#include "vbrender.h"
 | 
			
		||||
 | 
			
		||||
#ifdef XF86DRI
 | 
			
		||||
typedef struct tfxMesaContext *fxMesaContext;
 | 
			
		||||
#else
 | 
			
		||||
#include "GL/fxmesa.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "fxglidew.h"
 | 
			
		||||
/* use gl/gl.h GLAPI/GLAPIENTRY/GLCALLBACK in place of WINGDIAPI/APIENTRY/CALLBACK, */
 | 
			
		||||
/* these are defined in mesa gl/gl.h - tjump@spgs.com */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
#if defined(MESA_DEBUG) && 0
 | 
			
		||||
extern void fx_sanity_triangle( GrVertex *, GrVertex *, GrVertex * );
 | 
			
		||||
#define grDrawTriangle fx_sanity_triangle
 | 
			
		||||
#endif
 | 
			
		||||
@@ -140,17 +165,17 @@ typedef struct {
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define FX_VB_COLOR(fxm, color)			\
 | 
			
		||||
do {						\
 | 
			
		||||
  if (sizeof(GLint) == 4*sizeof(GLubyte)) {	\
 | 
			
		||||
     if (fxm->constColor != *(GLuint*)color) {	\
 | 
			
		||||
	fxm->constColor = *(GLuint*)color;	\
 | 
			
		||||
	grConstantColorValue(FXCOLOR4(color));	\
 | 
			
		||||
     }						\
 | 
			
		||||
  } else {					\
 | 
			
		||||
     grConstantColorValue(FXCOLOR4(color));	\
 | 
			
		||||
  }						\
 | 
			
		||||
} while (0)
 | 
			
		||||
#define FX_VB_COLOR(fxm, color)				\
 | 
			
		||||
  do {							\
 | 
			
		||||
    if (sizeof(GLint) == 4*sizeof(GLubyte)) {		\
 | 
			
		||||
      if (fxm->constColor != *(GLuint*)color) {		\
 | 
			
		||||
	fxm->constColor = *(GLuint*)color;		\
 | 
			
		||||
	FX_grConstantColorValue(FXCOLOR4(color));	\
 | 
			
		||||
      }							\
 | 
			
		||||
    } else {						\
 | 
			
		||||
      FX_grConstantColorValue(FXCOLOR4(color));		\
 | 
			
		||||
    }							\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define GOURAUD(x) {					\
 | 
			
		||||
  GLubyte *col = VB->ColorPtr->data[(x)];		\
 | 
			
		||||
@@ -230,23 +255,20 @@ do {						\
 | 
			
		||||
 | 
			
		||||
#define FX_UM_E_IFMT                0x00fff000
 | 
			
		||||
 | 
			
		||||
#define FX_UM_COLOR_ITERATED        0x00100000
 | 
			
		||||
#define FX_UM_COLOR_CONSTANT        0x00200000
 | 
			
		||||
#define FX_UM_ALPHA_ITERATED        0x00400000
 | 
			
		||||
#define FX_UM_ALPHA_CONSTANT        0x00800000
 | 
			
		||||
#define FX_UM_COLOR_ITERATED        0x01000000
 | 
			
		||||
#define FX_UM_COLOR_CONSTANT        0x02000000
 | 
			
		||||
#define FX_UM_ALPHA_ITERATED        0x04000000
 | 
			
		||||
#define FX_UM_ALPHA_CONSTANT        0x08000000
 | 
			
		||||
 | 
			
		||||
typedef void (*tfxRenderVBFunc)(GLcontext *);
 | 
			
		||||
 | 
			
		||||
typedef struct tfxTMFreeListNode {
 | 
			
		||||
  struct tfxTMFreeListNode *next;
 | 
			
		||||
  FxU32 startAddress, endAddress;
 | 
			
		||||
} tfxTMFreeNode;
 | 
			
		||||
 | 
			
		||||
typedef struct tfxTMAllocListNode {
 | 
			
		||||
  struct tfxTMAllocListNode *next;
 | 
			
		||||
  FxU32 startAddress, endAddress;
 | 
			
		||||
  struct gl_texture_object *tObj;
 | 
			
		||||
} tfxTMAllocNode;
 | 
			
		||||
/*
 | 
			
		||||
  Memory range from startAddr to endAddr-1
 | 
			
		||||
*/
 | 
			
		||||
typedef struct MemRange_t {
 | 
			
		||||
  struct MemRange_t *next;
 | 
			
		||||
  FxU32 startAddr, endAddr;
 | 
			
		||||
} MemRange;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  GLsizei width, height;
 | 
			
		||||
@@ -256,19 +278,17 @@ typedef struct {
 | 
			
		||||
  GLboolean translated, used;
 | 
			
		||||
} tfxMipMapLevel;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
typedef struct tfxTexInfo_t {
 | 
			
		||||
  struct tfxTexInfo *next;
 | 
			
		||||
  struct gl_texture_object *tObj;
 | 
			
		||||
 | 
			
		||||
  GLuint lastTimeUsed;
 | 
			
		||||
 | 
			
		||||
  FxU32 whichTMU;
 | 
			
		||||
 | 
			
		||||
  tfxTMAllocNode *tm[FX_NUM_TMU];
 | 
			
		||||
  GLboolean isInTM;
 | 
			
		||||
 | 
			
		||||
  tfxMipMapLevel mipmapLevel[MAX_TEXTURE_LEVELS];
 | 
			
		||||
  GLboolean isInTM;
 | 
			
		||||
} tfxTMInfo;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
  tfxTMInfo tmi;
 | 
			
		||||
  MemRange *tm[FX_NUM_TMU];
 | 
			
		||||
 | 
			
		||||
  GLint minLevel, maxLevel;
 | 
			
		||||
  GLint baseLevelInternalFormat;
 | 
			
		||||
@@ -384,14 +404,27 @@ struct tfxMesaVertexBuffer {
 | 
			
		||||
 | 
			
		||||
#define FX_DRIVER_DATA(vb) ((struct tfxMesaVertexBuffer *)((vb)->driver_data))
 | 
			
		||||
#define FX_CONTEXT(ctx) ((fxMesaContext)((ctx)->DriverCtx))
 | 
			
		||||
#define FX_TEXTURE_DATA(t) ((tfxTexInfo *) ((t)->Current->DriverData))
 | 
			
		||||
#define FX_TEXTURE_DATA(t) fxTMGetTexInfo((t)->Current)
 | 
			
		||||
 | 
			
		||||
#if defined(XFree86Server) || defined(GLX_DIRECT_RENDERING)
 | 
			
		||||
#include "tdfx_init.h"
 | 
			
		||||
#else
 | 
			
		||||
#define DRI_FX_CONTEXT
 | 
			
		||||
#define BEGIN_BOARD_LOCK()
 | 
			
		||||
#define END_BOARD_LOCK()
 | 
			
		||||
#define BEGIN_CLIP_LOOP()
 | 
			
		||||
#define END_CLIP_LOOP()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* These lookup table are used to extract RGB values in [0,255] from
 | 
			
		||||
 * 16-bit pixel values.
 | 
			
		||||
 */
 | 
			
		||||
extern GLubyte FX_PixelToR[0x10000];
 | 
			
		||||
extern GLubyte FX_PixelToG[0x10000];
 | 
			
		||||
extern GLubyte FX_PixelToB[0x10000];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct tfxMesaContext {
 | 
			
		||||
  GuTexPalette glbPalette;
 | 
			
		||||
 | 
			
		||||
@@ -404,6 +437,7 @@ struct tfxMesaContext {
 | 
			
		||||
 | 
			
		||||
  GrBuffer_t currentFB;
 | 
			
		||||
 | 
			
		||||
  GLboolean bgrOrder;
 | 
			
		||||
  GrColor_t color;
 | 
			
		||||
  GrColor_t clearC;
 | 
			
		||||
  GrAlpha_t clearA;
 | 
			
		||||
@@ -412,7 +446,6 @@ struct tfxMesaContext {
 | 
			
		||||
  tfxUnitsState unitsState;
 | 
			
		||||
  tfxUnitsState restoreUnitsState; /* saved during multipass */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  GLuint tmu_source[FX_NUM_TMU];
 | 
			
		||||
  GLuint tex_dest[MAX_TEXTURE_UNITS];
 | 
			
		||||
  GLuint setupindex;
 | 
			
		||||
@@ -438,11 +471,12 @@ struct tfxMesaContext {
 | 
			
		||||
  GLint tmuSrc;
 | 
			
		||||
  GLuint lastUnitsMode;
 | 
			
		||||
  GLuint freeTexMem[FX_NUM_TMU];
 | 
			
		||||
  tfxTMFreeNode *tmFree[FX_NUM_TMU];
 | 
			
		||||
  tfxTMAllocNode *tmAlloc[FX_NUM_TMU];
 | 
			
		||||
  MemRange *tmPool;
 | 
			
		||||
  MemRange *tmFree[FX_NUM_TMU];
 | 
			
		||||
 | 
			
		||||
  GLenum fogTableMode;
 | 
			
		||||
  GLfloat fogDensity;
 | 
			
		||||
  GLfloat fogStart, fogEnd;
 | 
			
		||||
  GrFog_t *fogTable;
 | 
			
		||||
 | 
			
		||||
  /* Acc. functions */
 | 
			
		||||
@@ -477,10 +511,19 @@ struct tfxMesaContext {
 | 
			
		||||
  
 | 
			
		||||
  FX_GrContext_t glideContext;
 | 
			
		||||
 | 
			
		||||
  GLfloat wscale;
 | 
			
		||||
  int x_offset;
 | 
			
		||||
  int y_offset;
 | 
			
		||||
  int y_delta;
 | 
			
		||||
  int screen_width;
 | 
			
		||||
  int screen_height;
 | 
			
		||||
  int initDone;
 | 
			
		||||
  int clipMinX;
 | 
			
		||||
  int clipMaxX;
 | 
			
		||||
  int clipMinY;
 | 
			
		||||
  int clipMaxY;
 | 
			
		||||
  int needClip;
 | 
			
		||||
 | 
			
		||||
  DRI_FX_CONTEXT
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef void (*tfxSetupFunc)(struct vertex_buffer *, GLuint, GLuint);
 | 
			
		||||
@@ -522,6 +565,7 @@ extern void fxSetupDDSpanPointers(GLcontext *);
 | 
			
		||||
 | 
			
		||||
extern void fxDDBufferSize(GLcontext *, GLuint *, GLuint *);
 | 
			
		||||
 | 
			
		||||
extern void fxPrintTextureData(tfxTexInfo *ti);
 | 
			
		||||
extern void fxDDTexEnv(GLcontext *, GLenum, const GLfloat *);
 | 
			
		||||
extern void fxDDTexImg(GLcontext *, GLenum, struct gl_texture_object *,
 | 
			
		||||
		       GLint, GLint, const struct gl_texture_image *);
 | 
			
		||||
@@ -571,10 +615,12 @@ extern void fxDDRenderVBIndirectDirect( struct vertex_buffer *VB );
 | 
			
		||||
 | 
			
		||||
extern void fxDDInitExtensions( GLcontext *ctx );
 | 
			
		||||
 | 
			
		||||
#define fxTMGetTexInfo(o) ((tfxTexInfo*)((o)->DriverData))
 | 
			
		||||
extern void fxTMInit(fxMesaContext ctx);
 | 
			
		||||
extern void fxTMClose(fxMesaContext ctx);
 | 
			
		||||
extern void fxTMMoveInTM(fxMesaContext, struct gl_texture_object *, GLint);
 | 
			
		||||
extern void fxTMMoveOutTM(fxMesaContext, struct gl_texture_object *);
 | 
			
		||||
#define fxTMMoveOutTM_NoLock fxTMMoveOutTM
 | 
			
		||||
extern void fxTMFreeTexture(fxMesaContext, struct gl_texture_object *);
 | 
			
		||||
extern void fxTMReloadMipMapLevel(fxMesaContext, struct gl_texture_object *, GLint);
 | 
			
		||||
extern void fxTMReloadSubMipMapLevel(fxMesaContext, struct gl_texture_object *,
 | 
			
		||||
@@ -622,4 +668,11 @@ extern void fxDDDoRenderVB( struct vertex_buffer *VB );
 | 
			
		||||
 | 
			
		||||
extern int fxDDInitFxMesaContext( fxMesaContext fxMesa );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern void fxSetScissorValues(GLcontext *ctx);
 | 
			
		||||
extern void fxTMMoveInTM_NoLock(fxMesaContext fxMesa, 
 | 
			
		||||
				struct gl_texture_object *tObj, 
 | 
			
		||||
				GLint where);
 | 
			
		||||
extern void fxInitPixelTables(fxMesaContext fxMesa, GLboolean bgrOrder);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +1,47 @@
 | 
			
		||||
/* $Id: fxglidew.c,v 1.3 1999/10/05 19:26:54 miklos Exp $ */
 | 
			
		||||
/* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
@@ -36,8 +55,7 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FxI32 FX_grGetInteger(FxU32 pname)
 | 
			
		||||
static FxI32 FX_grGetInteger_NoLock(FxU32 pname)
 | 
			
		||||
{
 | 
			
		||||
#if !defined(FX_GLIDE3)
 | 
			
		||||
  switch (pname) 
 | 
			
		||||
@@ -49,7 +67,7 @@ FxI32 FX_grGetInteger(FxU32 pname)
 | 
			
		||||
    case FX_LFB_PIXEL_PIPE:
 | 
			
		||||
       return FXFALSE;
 | 
			
		||||
    case FX_PENDING_BUFFERSWAPS:
 | 
			
		||||
       return grBufferNumPending();
 | 
			
		||||
	return grBufferNumPending();
 | 
			
		||||
    default:
 | 
			
		||||
       if (MESA_VERBOSE&VERBOSE_DRIVER) {
 | 
			
		||||
          fprintf(stderr,"Wrong parameter in FX_grGetInteger!\n");
 | 
			
		||||
@@ -74,12 +92,74 @@ FxI32 FX_grGetInteger(FxU32 pname)
 | 
			
		||||
       }
 | 
			
		||||
       return -1;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  grGet(grname,4,&result);
 | 
			
		||||
  return result;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FxI32 FX_grGetInteger(FxU32 pname)
 | 
			
		||||
{
 | 
			
		||||
  int result;
 | 
			
		||||
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  result=FX_grGetInteger_NoLock(pname);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FxBool FX_grLfbLock(GrLock_t type, GrBuffer_t buffer, 
 | 
			
		||||
		    GrLfbWriteMode_t writeMode, GrOriginLocation_t origin, 
 | 
			
		||||
		    FxBool pixelPipeline, GrLfbInfo_t *info ) {
 | 
			
		||||
  FxBool result;
 | 
			
		||||
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  result=grLfbLock(type, buffer, writeMode, origin, pixelPipeline, info);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FxU32 FX_grTexTextureMemRequired(FxU32 evenOdd, GrTexInfo *info) {
 | 
			
		||||
  FxU32 result;
 | 
			
		||||
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  result=grTexTextureMemRequired(evenOdd, info);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FxU32 FX_grTexMinAddress(GrChipID_t tmu) {
 | 
			
		||||
  FxU32 result;
 | 
			
		||||
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  result=grTexMinAddress(tmu);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern FxU32 FX_grTexMaxAddress(GrChipID_t tmu) {
 | 
			
		||||
  FxU32 result;
 | 
			
		||||
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  result=grTexMaxAddress(tmu);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FxBool FX_grSstControl(FxU32 code)
 | 
			
		||||
{
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
  (void) code;
 | 
			
		||||
  return 1;  /* OK? */
 | 
			
		||||
#else
 | 
			
		||||
  FxU32 result;
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  result = grSstControl(code);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
  return result;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
@@ -90,39 +170,33 @@ void FX_grGammaCorrectionValue(float val)
 | 
			
		||||
/* ToDo */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FX_grSstControl(int par)
 | 
			
		||||
{
 | 
			
		||||
  (void)par;
 | 
			
		||||
  /* ToDo */
 | 
			
		||||
}
 | 
			
		||||
int FX_getFogTableSize(void)
 | 
			
		||||
{
 | 
			
		||||
   int result;
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   grGet(GR_FOG_TABLE_ENTRIES,sizeof(int),(void*)&result);
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   return result; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FX_getGrStateSize(void)
 | 
			
		||||
{
 | 
			
		||||
   int result;
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   grGet(GR_GLIDE_STATE_SIZE,sizeof(int),(void*)&result);
 | 
			
		||||
   
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
 | 
			
		||||
   return result;
 | 
			
		||||
   
 | 
			
		||||
}
 | 
			
		||||
int FX_grBufferNumPending()
 | 
			
		||||
{
 | 
			
		||||
   int result;
 | 
			
		||||
   grGet(GR_PENDING_BUFFERSWAPS,sizeof(int),(void*)&result);
 | 
			
		||||
   
 | 
			
		||||
   return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FX_grSstScreenWidth()
 | 
			
		||||
{
 | 
			
		||||
   FxI32 result[4];
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   grGet(GR_VIEWPORT,sizeof(FxI32)*4,result);
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   
 | 
			
		||||
   return result[2];
 | 
			
		||||
}
 | 
			
		||||
@@ -130,15 +204,19 @@ int FX_grSstScreenWidth()
 | 
			
		||||
int FX_grSstScreenHeight()
 | 
			
		||||
{
 | 
			
		||||
   FxI32 result[4];
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   grGet(GR_VIEWPORT,sizeof(FxI32)*4,result);
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   
 | 
			
		||||
   return result[3];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FX_grGlideGetVersion(char *buf)
 | 
			
		||||
{
 | 
			
		||||
   strcpy(buf,grGetString(GR_VERSION));
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  strcpy(buf,grGetString(GR_VERSION));
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FX_grSstPerfStats(GrSstPerfStats_t *st)
 | 
			
		||||
@@ -154,74 +232,91 @@ void FX_grSstPerfStats(GrSstPerfStats_t *st)
 | 
			
		||||
void FX_grAADrawLine(GrVertex *a,GrVertex *b)
 | 
			
		||||
{
 | 
			
		||||
   /* ToDo */
 | 
			
		||||
   BEGIN_CLIP_LOOP();
 | 
			
		||||
   grDrawLine(a,b);
 | 
			
		||||
   END_CLIP_LOOP();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FX_grAADrawPoint(GrVertex *a)
 | 
			
		||||
{
 | 
			
		||||
  BEGIN_CLIP_LOOP();
 | 
			
		||||
  grDrawPoint(a);
 | 
			
		||||
  END_CLIP_LOOP();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if FX_USE_PARGB
 | 
			
		||||
void FX_setupGrVertexLayout(void)
 | 
			
		||||
{
 | 
			
		||||
   grReset(GR_VERTEX_PARAMETER);
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  grReset(GR_VERTEX_PARAMETER);
 | 
			
		||||
   
 | 
			
		||||
   grCoordinateSpace(GR_WINDOW_COORDS);
 | 
			
		||||
   grVertexLayout(GR_PARAM_XY,  	GR_VERTEX_X_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_PARGB, 	GR_VERTEX_PARGB_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_Q,		GR_VERTEX_OOW_OFFSET << 2,	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_Z,           GR_VERTEX_OOZ_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_ST0, 	GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	
 | 
			
		||||
   grVertexLayout(GR_PARAM_Q0,  	GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE); 
 | 
			
		||||
   grVertexLayout(GR_PARAM_ST1, 	GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	
 | 
			
		||||
   grVertexLayout(GR_PARAM_Q1,  	GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	
 | 
			
		||||
  grCoordinateSpace(GR_WINDOW_COORDS);
 | 
			
		||||
  grVertexLayout(GR_PARAM_XY, GR_VERTEX_X_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_PARGB, GR_VERTEX_PARGB_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_Q, GR_VERTEX_OOW_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_Z, GR_VERTEX_OOZ_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_ST0, GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	
 | 
			
		||||
  grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE); 
 | 
			
		||||
  grVertexLayout(GR_PARAM_ST1, GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	
 | 
			
		||||
  grVertexLayout(GR_PARAM_Q1, GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
}
 | 
			
		||||
#else /* FX_USE_PARGB */
 | 
			
		||||
void FX_setupGrVertexLayout(void)
 | 
			
		||||
{
 | 
			
		||||
   grReset(GR_VERTEX_PARAMETER);
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  grReset(GR_VERTEX_PARAMETER);
 | 
			
		||||
   
 | 
			
		||||
   grCoordinateSpace(GR_WINDOW_COORDS);
 | 
			
		||||
   grVertexLayout(GR_PARAM_XY,  	GR_VERTEX_X_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_RGB, 	GR_VERTEX_R_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
 /*  grVertexLayout(GR_PARAM_Z,   	GR_VERTEX_Z_OFFSET << 2, 	GR_PARAM_ENABLE); */
 | 
			
		||||
   grVertexLayout(GR_PARAM_A,   	GR_VERTEX_A_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_Q,		GR_VERTEX_OOW_OFFSET << 2,	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_Z,           GR_VERTEX_OOZ_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
   grVertexLayout(GR_PARAM_ST0, 	GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	
 | 
			
		||||
   grVertexLayout(GR_PARAM_Q0,  	GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE); 
 | 
			
		||||
   grVertexLayout(GR_PARAM_ST1, 	GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	
 | 
			
		||||
   grVertexLayout(GR_PARAM_Q1,  	GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	
 | 
			
		||||
  grCoordinateSpace(GR_WINDOW_COORDS);
 | 
			
		||||
  grVertexLayout(GR_PARAM_XY, GR_VERTEX_X_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_RGB, GR_VERTEX_R_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_A, GR_VERTEX_A_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_Q, GR_VERTEX_OOW_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_Z, GR_VERTEX_OOZ_OFFSET << 2,	GR_PARAM_ENABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_ST0, GR_VERTEX_SOW_TMU0_OFFSET << 2, GR_PARAM_ENABLE);	
 | 
			
		||||
  grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, GR_PARAM_DISABLE);
 | 
			
		||||
  grVertexLayout(GR_PARAM_ST1, GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);	
 | 
			
		||||
  grVertexLayout(GR_PARAM_Q1, GR_VERTEX_OOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void FX_grHints(GrHint_t hintType, FxU32 hintMask)
 | 
			
		||||
void FX_grHints_NoLock(GrHint_t hintType, FxU32 hintMask)
 | 
			
		||||
{
 | 
			
		||||
   switch(hintType) {
 | 
			
		||||
      case GR_HINT_STWHINT:
 | 
			
		||||
      {
 | 
			
		||||
        if (hintMask & GR_STWHINT_W_DIFF_TMU0)
 | 
			
		||||
           grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
        else
 | 
			
		||||
           grVertexLayout(GR_PARAM_Q0,GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_DISABLE);
 | 
			
		||||
           
 | 
			
		||||
        if (hintMask & GR_STWHINT_ST_DIFF_TMU1)
 | 
			
		||||
            grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
        else
 | 
			
		||||
            grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);
 | 
			
		||||
  switch(hintType) {
 | 
			
		||||
  case GR_HINT_STWHINT:
 | 
			
		||||
    {
 | 
			
		||||
      if (hintMask & GR_STWHINT_W_DIFF_TMU0)
 | 
			
		||||
	grVertexLayout(GR_PARAM_Q0, GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_ENABLE);
 | 
			
		||||
      else
 | 
			
		||||
	grVertexLayout(GR_PARAM_Q0,GR_VERTEX_OOW_TMU0_OFFSET << 2, 	GR_PARAM_DISABLE);
 | 
			
		||||
      
 | 
			
		||||
      if (hintMask & GR_STWHINT_ST_DIFF_TMU1)
 | 
			
		||||
	grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_ENABLE);
 | 
			
		||||
      else
 | 
			
		||||
	grVertexLayout(GR_PARAM_ST1,GR_VERTEX_SOW_TMU1_OFFSET << 2, GR_PARAM_DISABLE);
 | 
			
		||||
        
 | 
			
		||||
        if (hintMask & GR_STWHINT_W_DIFF_TMU1)
 | 
			
		||||
            grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_ENABLE);
 | 
			
		||||
        else
 | 
			
		||||
            grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_DISABLE);
 | 
			
		||||
      	
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
      if (hintMask & GR_STWHINT_W_DIFF_TMU1)
 | 
			
		||||
	grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_ENABLE);
 | 
			
		||||
      else
 | 
			
		||||
	grVertexLayout(GR_PARAM_Q1,GR_VERTEX_OOW_TMU1_OFFSET << 2,	GR_PARAM_DISABLE);
 | 
			
		||||
      
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FX_grHints(GrHint_t hintType, FxU32 hintMask) {
 | 
			
		||||
  BEGIN_BOARD_LOCK();
 | 
			
		||||
  FX_grHints_NoLock(hintType, hintMask);
 | 
			
		||||
  END_BOARD_LOCK();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FX_grSstQueryHardware(GrHwConfiguration *config)
 | 
			
		||||
{
 | 
			
		||||
   int i,j;
 | 
			
		||||
   int numFB;
 | 
			
		||||
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   grGet(GR_NUM_BOARDS,4,(void*)&(config->num_sst));
 | 
			
		||||
   if (config->num_sst == 0)
 | 
			
		||||
   	return 0;
 | 
			
		||||
@@ -246,9 +341,76 @@ int FX_grSstQueryHardware(GrHwConfiguration *config)
 | 
			
		||||
      	 config->SSTs[i].sstBoard.VoodooConfig.tmuConfig[j].tmuRam /= 1024*1024;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
int FX_grSstScreenWidth()
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   i = grSstScreenWidth();
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   return i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FX_grSstScreenHeight()
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   i = grSstScreenHeight();
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   return i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FX_grSstQueryHardware(GrHwConfiguration *c)	
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   i = grSstQueryHardware(c);
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   return i;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
FX_GrContext_t FX_grSstWinOpen( FxU32                hWnd,
 | 
			
		||||
                                GrScreenResolution_t screen_resolution,
 | 
			
		||||
                                GrScreenRefresh_t    refresh_rate,
 | 
			
		||||
                                GrColorFormat_t      color_format,
 | 
			
		||||
                                GrOriginLocation_t   origin_location,
 | 
			
		||||
                                int                  nColBuffers,
 | 
			
		||||
                                int                  nAuxBuffers)
 | 
			
		||||
{
 | 
			
		||||
   FX_GrContext_t i;
 | 
			
		||||
   BEGIN_BOARD_LOCK();
 | 
			
		||||
   i = grSstWinOpen( hWnd,
 | 
			
		||||
                     screen_resolution,
 | 
			
		||||
                     refresh_rate,
 | 
			
		||||
                     color_format,
 | 
			
		||||
                     origin_location,
 | 
			
		||||
                     nColBuffers,
 | 
			
		||||
                     nAuxBuffers );
 | 
			
		||||
   
 | 
			
		||||
   /*
 | 
			
		||||
   fprintf(stderr, 
 | 
			
		||||
           "grSstWinOpen( win %d res %d ref %d fmt %d\n"
 | 
			
		||||
           "              org %d ncol %d naux %d )\n"
 | 
			
		||||
           " ==> %d\n",
 | 
			
		||||
           hWnd,
 | 
			
		||||
           screen_resolution,
 | 
			
		||||
           refresh_rate,
 | 
			
		||||
           color_format,
 | 
			
		||||
           origin_location,
 | 
			
		||||
           nColBuffers,
 | 
			
		||||
           nAuxBuffers,
 | 
			
		||||
           i);
 | 
			
		||||
   */
 | 
			
		||||
   END_BOARD_LOCK();
 | 
			
		||||
   return i;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif 
 | 
			
		||||
#else
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +1,48 @@
 | 
			
		||||
/* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef __FX_GLIDE_WARPER__
 | 
			
		||||
#define __FX_GLIDE_WARPER__
 | 
			
		||||
 | 
			
		||||
@@ -201,23 +223,23 @@ typedef struct
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  float x, y;         /* X and Y in screen space */
 | 
			
		||||
  float ooz;          /* 65535/Z (used for Z-buffering) */
 | 
			
		||||
  float oow;          /* 1/W (used for W-buffering, texturing) */
 | 
			
		||||
  float r, g, b, a;   /* R, G, B, A [0..255.0] */
 | 
			
		||||
  float z;            /* Z is ignored */
 | 
			
		||||
  float x, y, z;                /* X, Y, and Z of scrn space -- Z is ignored */
 | 
			
		||||
  float r, g, b;                /* R, G, B, ([0..255.0]) */
 | 
			
		||||
  float ooz;                    /* 65535/Z (used for Z-buffering) */
 | 
			
		||||
  float a;                      /* Alpha [0..255.0] */
 | 
			
		||||
  float oow;                    /* 1/W (used for W-buffering, texturing) */
 | 
			
		||||
  GrTmuVertex  tmuvtx[GLIDE_NUM_TMU];
 | 
			
		||||
} GrVertex;
 | 
			
		||||
 | 
			
		||||
#define GR_VERTEX_X_OFFSET              0
 | 
			
		||||
#define GR_VERTEX_Y_OFFSET              1
 | 
			
		||||
#define GR_VERTEX_OOZ_OFFSET            2
 | 
			
		||||
#define GR_VERTEX_OOW_OFFSET            3
 | 
			
		||||
#define GR_VERTEX_R_OFFSET              4
 | 
			
		||||
#define GR_VERTEX_G_OFFSET              5
 | 
			
		||||
#define GR_VERTEX_B_OFFSET              6
 | 
			
		||||
#define GR_VERTEX_Z_OFFSET              2
 | 
			
		||||
#define GR_VERTEX_R_OFFSET              3
 | 
			
		||||
#define GR_VERTEX_G_OFFSET              4
 | 
			
		||||
#define GR_VERTEX_B_OFFSET              5
 | 
			
		||||
#define GR_VERTEX_OOZ_OFFSET            6
 | 
			
		||||
#define GR_VERTEX_A_OFFSET              7
 | 
			
		||||
#define GR_VERTEX_Z_OFFSET              8
 | 
			
		||||
#define GR_VERTEX_OOW_OFFSET            8
 | 
			
		||||
#define GR_VERTEX_SOW_TMU0_OFFSET       9
 | 
			
		||||
#define GR_VERTEX_TOW_TMU0_OFFSET       10
 | 
			
		||||
#define GR_VERTEX_OOW_TMU0_OFFSET       11
 | 
			
		||||
@@ -233,29 +255,89 @@ typedef struct
 | 
			
		||||
 * Glide2 functions for Glide3
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
#define FX_grTexDownloadTable(TMU,type,data)		grTexDownloadTable(type,data)
 | 
			
		||||
#define FX_grTexDownloadTable(TMU,type,data)	\
 | 
			
		||||
  do { 						\
 | 
			
		||||
    BEGIN_BOARD_LOCK(); 			\
 | 
			
		||||
    grTexDownloadTable(type,data); 		\
 | 
			
		||||
    END_BOARD_LOCK(); 				\
 | 
			
		||||
  } while (0);
 | 
			
		||||
#define FX_grTexDownloadTable_NoLock(TMU,type,data) \
 | 
			
		||||
  grTexDownloadTable(type, data)
 | 
			
		||||
#else
 | 
			
		||||
#define FX_grTexDownloadTable(TMU,type,data) 		grTexDownloadTable(TMU,type,data)
 | 
			
		||||
#define FX_grTexDownloadTable(TMU,type,data) 	\
 | 
			
		||||
  do {						\
 | 
			
		||||
    BEGIN_BOARD_LOCK();				\
 | 
			
		||||
    grTexDownloadTable(TMU,type,data);		\
 | 
			
		||||
    END_BOARD_LOCK();				\
 | 
			
		||||
  } while (0);
 | 
			
		||||
#define FX_grTexDownloadTable_NoLock grTexDownloadTable
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Flush
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
#define FX_grFlush		grFlush
 | 
			
		||||
#define FX_grFlush()	\
 | 
			
		||||
  do {			\
 | 
			
		||||
    BEGIN_BOARD_LOCK(); \
 | 
			
		||||
    grFlush();		\
 | 
			
		||||
    END_BOARD_LOCK();	\
 | 
			
		||||
  } while (0)
 | 
			
		||||
#else
 | 
			
		||||
#define FX_grFlush		grSstIdle
 | 
			
		||||
#define FX_grFlush()	\
 | 
			
		||||
  do {			\
 | 
			
		||||
    BEGIN_BOARD_LOCK(); \
 | 
			
		||||
    grSstIdle();	\
 | 
			
		||||
    END_BOARD_LOCK();	\
 | 
			
		||||
  } while (0)
 | 
			
		||||
#endif	
 | 
			
		||||
 | 
			
		||||
#define FX_grFinish()	\
 | 
			
		||||
  do {			\
 | 
			
		||||
    BEGIN_BOARD_LOCK(); \
 | 
			
		||||
    grFinish();		\
 | 
			
		||||
    END_BOARD_LOCK();	\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Write region: ToDo possible exploit the PixelPipe parameter.
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
#define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)	\
 | 
			
		||||
	grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,FXFALSE,src_stride,src_data)
 | 
			
		||||
#define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,FXFALSE,src_stride,src_data);	\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while(0)
 | 
			
		||||
#else
 | 
			
		||||
#define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)	\
 | 
			
		||||
	grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)
 | 
			
		||||
#define FX_grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data)		\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grLfbWriteRegion(dst_buffer,dst_x,dst_y,src_format,src_width,src_height,src_stride,src_data);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Read region
 | 
			
		||||
 */
 | 
			
		||||
#define FX_grLfbReadRegion(src_buffer,src_x,src_y,src_width,src_height,dst_stride,dst_data)			\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grLfbReadRegion(src_buffer,src_x,src_y,src_width,src_height,dst_stride,dst_data);				\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Draw triangle
 | 
			
		||||
 */
 | 
			
		||||
#define FX_grDrawTriangle(a,b,c)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_CLIP_LOOP();			\
 | 
			
		||||
    grDrawTriangle(a,b,c);		\
 | 
			
		||||
    END_CLIP_LOOP();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * For Lod/LodLog2 conversion.
 | 
			
		||||
 */
 | 
			
		||||
@@ -288,12 +370,14 @@ typedef struct
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_largeLodValue(info)		((int)(info).largeLod)
 | 
			
		||||
#endif
 | 
			
		||||
#define FX_largeLodValue_NoLock FX_largeLodValue
 | 
			
		||||
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
	#define FX_smallLodValue(info)		((int)(GR_LOD_256-(info).smallLodLog2))
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_smallLodValue(info)		((int)(info).smallLod)
 | 
			
		||||
#endif
 | 
			
		||||
#define FX_smallLodValue_NoLock FX_smallLodValue
 | 
			
		||||
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
	#define FX_valueToLod(val)		((GrLOD_t)(GR_LOD_256-val))
 | 
			
		||||
@@ -304,13 +388,9 @@ typedef struct
 | 
			
		||||
/*
 | 
			
		||||
 * ScreenWidth/Height stuff.
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
	extern int FX_grSstScreenWidth();
 | 
			
		||||
	extern int FX_grSstScreenHeight();
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_grSstScreenWidth()		grSstScreenWidth()
 | 
			
		||||
	#define FX_grSstScreenHeight()		grSstScreenHeight()
 | 
			
		||||
#endif
 | 
			
		||||
	extern int FX_grSstScreenWidth(void);
 | 
			
		||||
	extern int FX_grSstScreenHeight(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -319,7 +399,12 @@ typedef struct
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
	extern void FX_grGlideGetVersion(char *buf);
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_grGlideGetVersion		grGlideGetVersion	
 | 
			
		||||
	#define FX_grGlideGetVersion(b)	\
 | 
			
		||||
	do {				\
 | 
			
		||||
	  BEGIN_BOARD_LOCK();		\
 | 
			
		||||
	  grGlideGetVersion(b);		\
 | 
			
		||||
	  END_BOARD_LOCK();		\
 | 
			
		||||
	} while (0)
 | 
			
		||||
#endif
 | 
			
		||||
/*
 | 
			
		||||
 * Performance statistics
 | 
			
		||||
@@ -327,25 +412,33 @@ typedef struct
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
        extern void FX_grSstPerfStats(GrSstPerfStats_t *st);
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_grSstPerfStats		grSstPerfStats
 | 
			
		||||
	#define FX_grSstPerfStats(s)	\
 | 
			
		||||
	do {				\
 | 
			
		||||
	  BEGIN_BOARD_LOCK();		\
 | 
			
		||||
	  grSstPerfStats(s);		\
 | 
			
		||||
	  END_BOARD_LOCK();		\
 | 
			
		||||
	} while (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Hardware Query
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
       extern int FX_grSstQueryHardware(GrHwConfiguration *config);
 | 
			
		||||
#else
 | 
			
		||||
       #define FX_grSstQueryHardware		grSstQueryHardware		
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * GrHints
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
        extern void FX_grHints_NoLock(GrHint_t hintType, FxU32 hintMask);
 | 
			
		||||
	extern void FX_grHints(GrHint_t hintType, FxU32 hintMask);
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_grHints			grHints
 | 
			
		||||
	#define FX_grHints(t,m)		\
 | 
			
		||||
	do {				\
 | 
			
		||||
	  BEGIN_BOARD_LOCK();		\
 | 
			
		||||
	  grHints(t, m);		\
 | 
			
		||||
	  END_BOARD_LOCK();		\
 | 
			
		||||
	} while(0)
 | 
			
		||||
        #define FX_grHints_NoLock grHints
 | 
			
		||||
#endif
 | 
			
		||||
/*
 | 
			
		||||
 * Antialiashed line+point drawing.
 | 
			
		||||
@@ -353,13 +446,23 @@ typedef struct
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
	extern void FX_grAADrawLine(GrVertex *a,GrVertex *b);
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_grAADrawLine			grAADrawLine
 | 
			
		||||
	#define FX_grAADrawLine(a,b)	\
 | 
			
		||||
	do {				\
 | 
			
		||||
	  BEGIN_CLIP_LOOP();		\
 | 
			
		||||
	  grAADrawLine(a,b);		\
 | 
			
		||||
	  END_CLIP_LOOP();		\
 | 
			
		||||
	} while (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
	extern void FX_grAADrawPoint(GrVertex *a);
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_grAADrawPoint		grAADrawPoint
 | 
			
		||||
	#define FX_grAADrawPoint(a)	\
 | 
			
		||||
	do {				\
 | 
			
		||||
	  BEGIN_CLIP_LOOP();		\
 | 
			
		||||
	  grAADrawPoint(a);		\
 | 
			
		||||
	  END_CLIP_LOOP();		\
 | 
			
		||||
	} while (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -373,31 +476,345 @@ typedef struct
 | 
			
		||||
/*
 | 
			
		||||
 * grSstControl stuff
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
	extern void FX_grSstControl(int par);
 | 
			
		||||
#else
 | 
			
		||||
	#define FX_grSstControl				grSstControl
 | 
			
		||||
#endif
 | 
			
		||||
extern FxBool FX_grSstControl(FxU32 code);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * grGammaCorrectionValue
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
      extern void FX_grGammaCorrectionValue(float val);
 | 
			
		||||
#else
 | 
			
		||||
      #define FX_grGammaCorrectionValue			grGammaCorrectionValue
 | 
			
		||||
      #define FX_grGammaCorrectionValue(v)	\
 | 
			
		||||
      do {					\
 | 
			
		||||
        BEGIN_BOARD_LOCK();			\
 | 
			
		||||
	grGammaCorrectionValue(v)		\
 | 
			
		||||
        END_BOARD_LOCK();			\
 | 
			
		||||
      } while (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * WinOpen/Close.
 | 
			
		||||
 */
 | 
			
		||||
#if defined(FX_GLIDE3)
 | 
			
		||||
       #define FX_grSstWinOpen(hWnd,screen_resolution,refresh_rate,color_format,origin_location,nColBuffers,nAuxBuffers) \
 | 
			
		||||
      		  grSstWinOpen(-1,screen_resolution,refresh_rate,color_format,origin_location,nColBuffers,nAuxBuffers)
 | 
			
		||||
       #define FX_grSstWinClose		grSstWinClose
 | 
			
		||||
#define FX_grSstWinClose(w)	\
 | 
			
		||||
  do { 				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grSstWinClose(w);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
#else
 | 
			
		||||
       #define FX_grSstWinOpen		grSstWinOpen
 | 
			
		||||
       #define FX_grSstWinClose(win)	grSstWinClose()
 | 
			
		||||
#define FX_grSstWinClose(w)	\
 | 
			
		||||
  do { 				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grSstWinClose();		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern FX_GrContext_t FX_grSstWinOpen( FxU32                hWnd,
 | 
			
		||||
                                       GrScreenResolution_t screen_resolution,
 | 
			
		||||
                                       GrScreenRefresh_t    refresh_rate,
 | 
			
		||||
                                       GrColorFormat_t      color_format,
 | 
			
		||||
                                       GrOriginLocation_t   origin_location,
 | 
			
		||||
                                       int                  nColBuffers,
 | 
			
		||||
                                       int                  nAuxBuffers);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FX_grDrawLine(v1, v2)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_CLIP_LOOP();		\
 | 
			
		||||
    grDrawLine(v1, v2);		\
 | 
			
		||||
    END_CLIP_LOOP();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDrawPoint(p)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_CLIP_LOOP();		\
 | 
			
		||||
    grDrawPoint(p);		\
 | 
			
		||||
    END_CLIP_LOOP();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDitherMode(m)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grDitherMode(m);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grRenderBuffer(b)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grRenderBuffer(b);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grBufferClear(c, a, d)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_CLIP_LOOP();			\
 | 
			
		||||
    grBufferClear(c, a, d);		\
 | 
			
		||||
    END_CLIP_LOOP();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDepthMask(m)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grDepthMask(m);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grColorMask(c, a)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grColorMask(c, a);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
extern FxBool FX_grLfbLock(GrLock_t type, GrBuffer_t buffer, 
 | 
			
		||||
			   GrLfbWriteMode_t writeMode, 
 | 
			
		||||
			   GrOriginLocation_t origin, FxBool pixelPipeline, 
 | 
			
		||||
			   GrLfbInfo_t *info );
 | 
			
		||||
 | 
			
		||||
#define FX_grLfbUnlock(t, b)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grLfbUnlock(t, b);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grConstantColorValue(v)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grConstantColorValue(v);		\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grConstantColorValue_NoLock grConstantColorValue
 | 
			
		||||
 | 
			
		||||
#define FX_grAADrawTriangle(a, b, c, ab, bc, ca)	\
 | 
			
		||||
  do {							\
 | 
			
		||||
    BEGIN_CLIP_LOOP();					\
 | 
			
		||||
    grAADrawTriangle(a, b, c, ab, bc, ca);		\
 | 
			
		||||
    END_CLIP_LOOP();					\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grAlphaBlendFunction(rs, rd, as, ad)	\
 | 
			
		||||
  do {						\
 | 
			
		||||
    BEGIN_BOARD_LOCK();				\
 | 
			
		||||
    grAlphaBlendFunction(rs, rd, as, ad);	\
 | 
			
		||||
    END_BOARD_LOCK();				\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grAlphaCombine(func, fact, loc, oth, inv)	\
 | 
			
		||||
  do {							\
 | 
			
		||||
    BEGIN_BOARD_LOCK();					\
 | 
			
		||||
    grAlphaCombine(func, fact, loc, oth, inv);		\
 | 
			
		||||
    END_BOARD_LOCK();					\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grAlphaCombine_NoLock grAlphaCombine
 | 
			
		||||
 | 
			
		||||
#define FX_grAlphaTestFunction(f)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grAlphaTestFunction(f);		\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grAlphaTestReferenceValue(v)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grAlphaTestReferenceValue(v);	\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grClipWindow(minx, miny, maxx, maxy)	\
 | 
			
		||||
  do {						\
 | 
			
		||||
    BEGIN_BOARD_LOCK();				\
 | 
			
		||||
    grClipWindow(minx, miny, maxx, maxy);	\
 | 
			
		||||
    END_BOARD_LOCK();				\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grClipWindow_NoLock grClipWindow
 | 
			
		||||
 | 
			
		||||
#define FX_grColorCombine(func, fact, loc, oth, inv)	\
 | 
			
		||||
  do {							\
 | 
			
		||||
    BEGIN_BOARD_LOCK();					\
 | 
			
		||||
    grColorCombine(func, fact, loc, oth, inv);		\
 | 
			
		||||
    END_BOARD_LOCK();					\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grColorCombine_NoLock grColorCombine
 | 
			
		||||
 | 
			
		||||
#define FX_grCullMode(m)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grCullMode(m);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDepthBiasLevel(lev)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grDepthBiasLevel(lev);		\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDepthBufferFunction(func)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grDepthBufferFunction(func);	\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grFogColorValue(c)		\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grFogColorValue(c);			\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grFogMode(m)	\
 | 
			
		||||
  do {			\
 | 
			
		||||
    BEGIN_BOARD_LOCK(); \
 | 
			
		||||
    grFogMode(m);	\
 | 
			
		||||
    END_BOARD_LOCK();	\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grFogTable(t)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grFogTable(t);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexClampMode(t, sc, tc)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grTexClampMode(t, sc, tc);		\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexClampMode_NoLock grTexClampMode
 | 
			
		||||
 | 
			
		||||
#define FX_grTexCombine(t, rfunc, rfact, afunc, afact, rinv, ainv)	\
 | 
			
		||||
  do {									\
 | 
			
		||||
    BEGIN_BOARD_LOCK();							\
 | 
			
		||||
    grTexCombine(t, rfunc, rfact, afunc, afact, rinv, ainv);		\
 | 
			
		||||
    END_BOARD_LOCK();							\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexCombine_NoLock grTexCombine
 | 
			
		||||
 | 
			
		||||
#define FX_grTexDownloadMipMapLevel(t, sa, tlod, llod, ar, f, eo, d)	\
 | 
			
		||||
  do {									\
 | 
			
		||||
    BEGIN_BOARD_LOCK();							\
 | 
			
		||||
    grTexDownloadMipMapLevel(t, sa, tlod, llod, ar, f, eo, d);		\
 | 
			
		||||
    END_BOARD_LOCK();							\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexDownloadMipMapLevel_NoLock grTexDownloadMipMapLevel
 | 
			
		||||
 | 
			
		||||
#define FX_grTexDownloadMipMapLevelPartial(t, sa, tlod, llod, ar, f, eo, d, s, e);	\
 | 
			
		||||
  do {									    \
 | 
			
		||||
    BEGIN_BOARD_LOCK();							    \
 | 
			
		||||
    grTexDownloadMipMapLevelPartial(t, sa, tlod, llod, ar, f, eo, d, s, e); \
 | 
			
		||||
    END_BOARD_LOCK();							    \
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexFilterMode(t, minf, magf)	\
 | 
			
		||||
  do {						\
 | 
			
		||||
    BEGIN_BOARD_LOCK();				\
 | 
			
		||||
    grTexFilterMode(t, minf, magf);		\
 | 
			
		||||
    END_BOARD_LOCK();				\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexFilterMode_NoLock grTexFilterMode
 | 
			
		||||
 | 
			
		||||
extern FxU32 FX_grTexMinAddress(GrChipID_t tmu);
 | 
			
		||||
extern FxU32 FX_grTexMaxAddress(GrChipID_t tmu);
 | 
			
		||||
 | 
			
		||||
#define FX_grTexMipMapMode(t, m, lod)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grTexMipMapMode(t, m, lod);		\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexMipMapMode_NoLock grTexMipMapMode
 | 
			
		||||
 | 
			
		||||
#define FX_grTexSource(t, sa, eo, i)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grTexSource(t, sa, eo, i);		\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grTexSource_NoLock grTexSource
 | 
			
		||||
 | 
			
		||||
extern FxU32 FX_grTexTextureMemRequired(FxU32 evenOdd, GrTexInfo *info);
 | 
			
		||||
#define FX_grTexTextureMemRequired_NoLock grTexTextureMemRequired
 | 
			
		||||
 | 
			
		||||
#define FX_grGlideGetState(s)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grGlideGetState(s);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDRIBufferSwap(i)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grDRIBufferSwap(i);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grSstSelect(b)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grSstSelect(b);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grSstSelect_NoLock grSstSelect
 | 
			
		||||
 | 
			
		||||
#define FX_grGlideSetState(s)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grGlideSetState(s);		\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDepthBufferMode(m)	\
 | 
			
		||||
  do {				\
 | 
			
		||||
    BEGIN_BOARD_LOCK();		\
 | 
			
		||||
    grDepthBufferMode(m);	\
 | 
			
		||||
    END_BOARD_LOCK();		\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grLfbWriteColorFormat(f)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_BOARD_LOCK();			\
 | 
			
		||||
    grLfbWriteColorFormat(f);		\
 | 
			
		||||
    END_BOARD_LOCK();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grDrawVertexArray(m, c, p)	\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_CLIP_LOOP();			\
 | 
			
		||||
    grDrawVertexArray(m, c, p);		\
 | 
			
		||||
    END_CLIP_LOOP();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grGlideShutdown()		\
 | 
			
		||||
  do {					\
 | 
			
		||||
    BEGIN_CLIP_LOOP();			\
 | 
			
		||||
    grGlideShutdown();			\
 | 
			
		||||
    END_CLIP_LOOP();			\
 | 
			
		||||
  } while (0)
 | 
			
		||||
 | 
			
		||||
#define FX_grGlideInit_NoLock grGlideInit
 | 
			
		||||
#define FX_grSstWinOpen_NoLock grSstWinOpen
 | 
			
		||||
 | 
			
		||||
extern int FX_getFogTableSize(void);
 | 
			
		||||
extern int FX_getGrStateSize(void);
 | 
			
		||||
 | 
			
		||||
#endif /* __FX_GLIDE_WARPER__ */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,25 +1,53 @@
 | 
			
		||||
/* -*- mode: C; tab-width:8; c-basic-offset:2 -*- */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included
 | 
			
		||||
 * in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
 | 
			
		||||
 * terms stated above.
 | 
			
		||||
 *
 | 
			
		||||
 * Thank you for your contribution, David!
 | 
			
		||||
 *
 | 
			
		||||
 * Please make note of the above copyright/license statement.  If you
 | 
			
		||||
 * contributed code or bug fixes to this code under the previous (GNU
 | 
			
		||||
 * Library) license and object to the new license, your code will be
 | 
			
		||||
 * removed at your request.  Please see the Mesa docs/COPYRIGHT file
 | 
			
		||||
 * for more information.
 | 
			
		||||
 *
 | 
			
		||||
 * Additional Mesa/3Dfx driver developers:
 | 
			
		||||
 *   Daryll Strauss <daryll@precisioninsight.com>
 | 
			
		||||
 *   Keith Whitwell <keith@precisioninsight.com>
 | 
			
		||||
 *
 | 
			
		||||
 * See fxapi.h for more revision/author details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* fxwgl.c - Microsoft wgl functions emulation for
 | 
			
		||||
 *           3Dfx VooDoo/Mesa interface
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 *
 | 
			
		||||
 * See the file fxapi.c for more informations about authors
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef __WIN32__
 | 
			
		||||
 | 
			
		||||
@@ -243,11 +271,11 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam)
 | 
			
		||||
        static int moving = 0;
 | 
			
		||||
        if (!moving) {
 | 
			
		||||
          if(fxQueryHardware()!=GR_SSTTYPE_VOODOO) {
 | 
			
		||||
            if(!grSstControl(GR_CONTROL_RESIZE)) {
 | 
			
		||||
            if(!FX_grSstControl(GR_CONTROL_RESIZE)) {
 | 
			
		||||
              moving = 1;
 | 
			
		||||
              SetWindowPos(hwnd, 0, 0, 0, 300, 300, SWP_NOMOVE|SWP_NOZORDER);
 | 
			
		||||
              moving = 0;
 | 
			
		||||
              if(!grSstControl(GR_CONTROL_RESIZE)) {
 | 
			
		||||
              if(!FX_grSstControl(GR_CONTROL_RESIZE)) {
 | 
			
		||||
                /*MessageBox(0,_T("Error changing windowsize"),_T("fxMESA"),MB_OK);*/
 | 
			
		||||
                PostMessage(hWND,WM_CLOSE,0,0);
 | 
			
		||||
              }
 | 
			
		||||
@@ -255,7 +283,7 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam)
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          /* Do the clipping in the glide library */
 | 
			
		||||
          grClipWindow(0,0,grSstScreenWidth(),grSstScreenHeight());
 | 
			
		||||
          FX_grClipWindow(0,0,FX_grSstScreenWidth(),FX_grSstScreenHeight());
 | 
			
		||||
          /* And let the new size set in the context */
 | 
			
		||||
          fxMesaUpdateScreenSize(ctx);
 | 
			
		||||
        }
 | 
			
		||||
@@ -269,21 +297,22 @@ LONG GLAPIENTRY __wglMonitor(HWND hwnd,UINT message,UINT wParam,LONG lParam)
 | 
			
		||||
        BOOL fMinimized = (BOOL) HIWORD(wParam);
 | 
			
		||||
 | 
			
		||||
        if((fActive == WA_INACTIVE) || fMinimized)
 | 
			
		||||
          grSstControl(GR_CONTROL_DEACTIVATE);
 | 
			
		||||
          FX_grSstControl(GR_CONTROL_DEACTIVATE);
 | 
			
		||||
        else
 | 
			
		||||
          grSstControl(GR_CONTROL_ACTIVATE);
 | 
			
		||||
          FX_grSstControl(GR_CONTROL_ACTIVATE);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case WM_SHOWWINDOW:
 | 
			
		||||
      break;
 | 
			
		||||
    case WM_SYSKEYDOWN:
 | 
			
		||||
    case WM_SYSCHAR:
 | 
			
		||||
      if(gdiWindowHackEna && (VK_RETURN == wParam)) {
 | 
			
		||||
        if(gdiWindowHack) {
 | 
			
		||||
          gdiWindowHack = GL_FALSE;
 | 
			
		||||
          grSstControl(GR_CONTROL_ACTIVATE);
 | 
			
		||||
          FX_grSstControl(GR_CONTROL_ACTIVATE);
 | 
			
		||||
        } else {
 | 
			
		||||
          gdiWindowHack = GL_TRUE;
 | 
			
		||||
          grSstControl(GR_CONTROL_DEACTIVATE);
 | 
			
		||||
          FX_grSstControl(GR_CONTROL_DEACTIVATE);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
@@ -382,7 +411,7 @@ HGLRC GLAPIENTRY wglCreateContext(HDC hdc)
 | 
			
		||||
        gdiWindowHack = GL_FALSE;
 | 
			
		||||
      else {
 | 
			
		||||
        gdiWindowHack = GL_TRUE;
 | 
			
		||||
        grSstControl(GR_CONTROL_DEACTIVATE);
 | 
			
		||||
        FX_grSstControl(GR_CONTROL_DEACTIVATE);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
@@ -779,7 +808,7 @@ BOOL GLAPIENTRY wglSwapBuffers(HDC hdc)
 | 
			
		||||
    HDC hdcDIBSection  = CreateCompatibleDC(hdcScreen);
 | 
			
		||||
    HBITMAP holdBitmap = (HBITMAP) SelectObject(hdcDIBSection, dibHBM);
 | 
			
		||||
 | 
			
		||||
    grLfbReadRegion(GR_BUFFER_FRONTBUFFER, 0, 0,
 | 
			
		||||
    FX_grLfbReadRegion(GR_BUFFER_FRONTBUFFER, 0, 0,
 | 
			
		||||
                    width, height,
 | 
			
		||||
                    width * 2,
 | 
			
		||||
                    dibSurfacePtr);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
/* $Id: svgamesa.c,v 1.1 1999/08/19 00:55:42 jtg Exp $ */
 | 
			
		||||
/* $Id: svgamesa.c,v 1.1.1.1.2.3 2000/01/22 20:06:20 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.0
 | 
			
		||||
 * Copyright (C) 1995-1998  Brian Paul
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
@@ -21,23 +21,19 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Linux SVGA/Mesa interface.
 | 
			
		||||
 *
 | 
			
		||||
 * This interface is not finished!  Still have to implement pixel
 | 
			
		||||
 * reading functions and double buffering.  Then, look into accelerated
 | 
			
		||||
 * line and polygon rendering.  And, clean up a bunch of other stuff.
 | 
			
		||||
 * Any volunteers?
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
@@ -48,35 +44,164 @@
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "matrix.h"
 | 
			
		||||
#include "types.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "svgapix.h"
 | 
			
		||||
#include "svgamesa8.h"
 | 
			
		||||
#include "svgamesa15.h"
 | 
			
		||||
#include "svgamesa16.h"
 | 
			
		||||
#include "svgamesa24.h"
 | 
			
		||||
#include "svgamesa32.h"
 | 
			
		||||
 | 
			
		||||
struct svgamesa_context {
 | 
			
		||||
   GLcontext *gl_ctx;		/* the core Mesa context */
 | 
			
		||||
   GLvisual *gl_vis;		/* describes the color buffer */
 | 
			
		||||
   GLframebuffer *gl_buffer;	/* the ancillary buffers */
 | 
			
		||||
   GLuint index;		/* current color index */
 | 
			
		||||
   GLint red, green, blue;	/* current rgb color */
 | 
			
		||||
   GLint width, height;		/* size of color buffer */
 | 
			
		||||
   GLint depth;			/* bits per pixel (8,16,24 or 32) */
 | 
			
		||||
};
 | 
			
		||||
struct svga_buffer SVGABuffer;
 | 
			
		||||
vga_modeinfo * SVGAInfo;
 | 
			
		||||
SVGAMesaContext SVGAMesa;    /* the current context */
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
 | 
			
		||||
static SVGAMesaContext SVGAMesa = NULL;    /* the current context */
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
 | 
			
		||||
FILE * logfile;
 | 
			
		||||
char cbuf[1024]={0};
 | 
			
		||||
 | 
			
		||||
void SVGAlog(char * what)
 | 
			
		||||
{
 | 
			
		||||
 logfile=fopen("svgamesa.log","a");
 | 
			
		||||
 if (!logfile) return;
 | 
			
		||||
 fprintf(logfile,"%s\n",what);
 | 
			
		||||
 fclose(logfile);
 | 
			
		||||
} 
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Convert Mesa window Y coordinate to VGA screen Y coordinate:
 | 
			
		||||
 */
 | 
			
		||||
#define FLIP(Y)  (SVGAMesa->height-(Y)-1)
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                       Init stuff...                        *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
 | 
			
		||||
int SVGAMesaInit( int GraphMode )
 | 
			
		||||
{  
 | 
			
		||||
   vga_init();
 | 
			
		||||
   if (!vga_hasmode(GraphMode))
 | 
			
		||||
   {
 | 
			
		||||
    fprintf(stderr,"GraphMode %d unavailable...",GraphMode);
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
    SVGAlog("SVGAMesaInit: invalid GraphMode (doesn't exist)");
 | 
			
		||||
#endif    
 | 
			
		||||
    return(1);
 | 
			
		||||
   }
 | 
			
		||||
   SVGAInfo=vga_getmodeinfo(GraphMode);           
 | 
			
		||||
   if (SVGAInfo->flags & IS_MODEX)
 | 
			
		||||
   {
 | 
			
		||||
    fprintf(stderr,"ModeX not implemented...");
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
    SVGAlog("SVGAMesaInit: invalid GraphMode (ModeX)");
 | 
			
		||||
#endif    
 | 
			
		||||
    return(2);
 | 
			
		||||
   }
 | 
			
		||||
   if (!SVGAInfo->bytesperpixel)
 | 
			
		||||
   {
 | 
			
		||||
    fprintf(stderr,"1 / 4 bit color not implemented...");
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
    SVGAlog("SVGAMesaInit: invalid GraphMode (1 or 4 bit)");
 | 
			
		||||
#endif    
 | 
			
		||||
    return(3);
 | 
			
		||||
   }
 | 
			
		||||
   switch (SVGAInfo->colors) {
 | 
			
		||||
    case   256: SVGABuffer.Depth = 8;  break;
 | 
			
		||||
    case 32768: SVGABuffer.Depth = 15; break;
 | 
			
		||||
    case 65536: SVGABuffer.Depth = 16; break;
 | 
			
		||||
    default: SVGABuffer.Depth = SVGAInfo->bytesperpixel<<3; break;
 | 
			
		||||
   }
 | 
			
		||||
   SVGABuffer.BufferSize=SVGAInfo->linewidth*SVGAInfo->height;
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
   sprintf(cbuf,"SVGAMesaInit: double buffer info.\n" \
 | 
			
		||||
                 "              depth  : %d\n" \
 | 
			
		||||
                 "              mode   : %d\n" \
 | 
			
		||||
		 "              width  : %d\n" \
 | 
			
		||||
		 "              height : %d\n" \
 | 
			
		||||
		 "              bufsize: %d\n", \
 | 
			
		||||
		 SVGABuffer.Depth,GraphMode,SVGAInfo->linewidth, \
 | 
			
		||||
		 SVGAInfo->height,SVGABuffer.BufferSize);
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
#endif    
 | 
			
		||||
   SVGABuffer.FrontBuffer=(void*)malloc(SVGABuffer.BufferSize + 4);
 | 
			
		||||
   if (!SVGABuffer.FrontBuffer) {
 | 
			
		||||
    {
 | 
			
		||||
     fprintf(stderr,"Not enough RAM for FRONT_LEFT_BUFFER...");
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
     SVGAlog("SVGAMesaInit: Not enough RAM (front buffer)");
 | 
			
		||||
#endif    
 | 
			
		||||
     return(4);
 | 
			
		||||
    }
 | 
			
		||||
   }       
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
   sprintf(cbuf,"SVGAMesaInit: FrontBuffer - %p",SVGABuffer.FrontBuffer);
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
#endif    
 | 
			
		||||
   SVGABuffer.BackBuffer=(void*)malloc(SVGABuffer.BufferSize + 4);
 | 
			
		||||
   if (!SVGABuffer.BackBuffer) {
 | 
			
		||||
    {
 | 
			
		||||
     free(SVGABuffer.FrontBuffer);
 | 
			
		||||
     fprintf(stderr,"Not enough RAM for BACK_LEFT_BUFFER...");
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
     SVGAlog("SVGAMesaInit: Not enough RAM (back buffer)");
 | 
			
		||||
#endif    
 | 
			
		||||
     return(5);
 | 
			
		||||
    }
 | 
			
		||||
   }       
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
   sprintf(cbuf,"SVGAMesaInit: BackBuffer - %p",SVGABuffer.BackBuffer);
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
#endif    
 | 
			
		||||
 | 
			
		||||
   vga_setmode(GraphMode);
 | 
			
		||||
   SVGABuffer.VideoRam=vga_getgraphmem();
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
   sprintf(cbuf,"SVGAMesaInit: VRAM - %p",SVGABuffer.VideoRam);
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
   sprintf(cbuf,"SVGAMesaInit: done. (Mode %d)",GraphMode);
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
#endif    
 | 
			
		||||
   return 0;
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
int SVGAMesaClose( void )
 | 
			
		||||
{  
 | 
			
		||||
 vga_setmode(TEXT); 
 | 
			
		||||
 free(SVGABuffer.FrontBuffer);
 | 
			
		||||
 free(SVGABuffer.BackBuffer);
 | 
			
		||||
 return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SVGAMesaSetCI(int ndx, GLubyte red, GLubyte green, GLubyte blue)
 | 
			
		||||
{
 | 
			
		||||
 if (ndx<256) vga_setpalette(ndx, red>>2, green>>2, blue>>2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                 Miscellaneous functions                    *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
 | 
			
		||||
static void copy_buffer( GLubyte * buffer) {
 | 
			
		||||
 int size = SVGABuffer.BufferSize, page = 0;
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
   sprintf(cbuf,"copy_buffer: copy %p to %p",buffer,SVGABuffer.VideoRam);
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
#endif    
 | 
			
		||||
 | 
			
		||||
 while(size>0) {
 | 
			
		||||
 vga_setpage(page++);
 | 
			
		||||
  if (size>>16) { 
 | 
			
		||||
   memcpy(SVGABuffer.VideoRam,buffer,0x10000);
 | 
			
		||||
   buffer+=0x10000;
 | 
			
		||||
  }else{    
 | 
			
		||||
   memcpy(SVGABuffer.VideoRam,buffer,size & 0xffff);
 | 
			
		||||
  }
 | 
			
		||||
  size-=0xffff; 
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void get_buffer_size( GLcontext *ctx, GLuint *width, GLuint *height )
 | 
			
		||||
{
 | 
			
		||||
@@ -84,279 +209,33 @@ static void get_buffer_size( GLcontext *ctx, GLuint *width, GLuint *height )
 | 
			
		||||
   *height = SVGAMesa->height = vga_getydim();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Set current color index */
 | 
			
		||||
static void set_index( GLcontext *ctx, GLuint index )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->index = index;
 | 
			
		||||
   vga_setcolor( index );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Set current drawing color */
 | 
			
		||||
static void set_color( GLcontext *ctx,
 | 
			
		||||
                       GLubyte red, GLubyte green,
 | 
			
		||||
                       GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->red = red;
 | 
			
		||||
   SVGAMesa->green = green;
 | 
			
		||||
   SVGAMesa->blue = blue;
 | 
			
		||||
   vga_setrgbcolor( red, green, blue );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void clear_index( GLcontext *ctx, GLuint index )
 | 
			
		||||
{
 | 
			
		||||
   /* TODO: Implements glClearIndex() */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void clear_color( GLcontext *ctx,
 | 
			
		||||
                         GLubyte red, GLubyte green,
 | 
			
		||||
                         GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   /* TODO: Implements glClearColor() */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static GLbitfield clear( GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
                         GLint x, GLint y, GLint width, GLint height )
 | 
			
		||||
{
 | 
			
		||||
   if (mask & GL_COLOR_BUFFER_BIT) {
 | 
			
		||||
      vga_clear();
 | 
			
		||||
   }
 | 
			
		||||
   return mask & (~GL_COLOR_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static GLboolean set_buffer( GLcontext *ctx, GLenum buffer )
 | 
			
		||||
{
 | 
			
		||||
   /* TODO: implement double buffering and use this function to select */
 | 
			
		||||
   /* between front and back buffers. */
 | 
			
		||||
 void * tmpptr;
 | 
			
		||||
 
 | 
			
		||||
   if (buffer == GL_FRONT_LEFT)
 | 
			
		||||
      return GL_TRUE;
 | 
			
		||||
   {
 | 
			
		||||
/*    vga_waitretrace(); */
 | 
			
		||||
    copy_buffer(SVGABuffer.FrontBuffer);
 | 
			
		||||
    tmpptr=SVGABuffer.BackBuffer;
 | 
			
		||||
    SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer;
 | 
			
		||||
    SVGABuffer.FrontBuffer=tmpptr;
 | 
			
		||||
    return GL_TRUE;
 | 
			
		||||
   }    
 | 
			
		||||
   else if (buffer == GL_BACK_LEFT)
 | 
			
		||||
      return GL_TRUE;
 | 
			
		||||
   {
 | 
			
		||||
/*    vga_waitretrace(); */
 | 
			
		||||
    copy_buffer(SVGABuffer.BackBuffer);
 | 
			
		||||
    return GL_TRUE;
 | 
			
		||||
   }    
 | 
			
		||||
   else
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****            Write spans of pixels                           *****/
 | 
			
		||||
/*****                                                            *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_ci32_span( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                             const GLuint index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   y = FLIP(y);
 | 
			
		||||
   for (i=0;i<n;i++,x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_setcolor( index[i] );
 | 
			
		||||
         vga_drawpixel( x, y );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void write_ci8_span( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                            const GLubyte index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   y = FLIP(y);
 | 
			
		||||
   for (i=0;i<n;i++,x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_setcolor( index[i] );
 | 
			
		||||
         vga_drawpixel( x, y );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_mono_ci_span( const GLcontext *ctx, GLuint n,
 | 
			
		||||
                                GLint x, GLint y, const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   y = FLIP(y);
 | 
			
		||||
   /* use current color index */
 | 
			
		||||
   vga_setcolor( SVGAMesa->index );
 | 
			
		||||
   for (i=0;i<n;i++,x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_drawpixel( x, y );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_rgba_span( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                             const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   y=FLIP(y);
 | 
			
		||||
   if (mask) {
 | 
			
		||||
      /* draw some pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         if (mask[i]) {
 | 
			
		||||
            vga_setrgbcolor( rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] );
 | 
			
		||||
            vga_drawpixel( x, y );
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* draw all pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         vga_setrgbcolor( rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] );
 | 
			
		||||
         vga_drawpixel( x, y );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_mono_rgba_span( const GLcontext *ctx,
 | 
			
		||||
                                  GLuint n, GLint x, GLint y,
 | 
			
		||||
                                  const GLubyte mask[])
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   y=FLIP(y);
 | 
			
		||||
   /* use current rgb color */
 | 
			
		||||
   vga_setrgbcolor( SVGAMesa->red, SVGAMesa->green, SVGAMesa->blue );
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_drawpixel( x, y );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                 Read spans of pixels                       *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void read_ci32_span( const GLcontext *ctx,
 | 
			
		||||
                            GLuint n, GLint x, GLint y, GLuint index[])
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   y = FLIP(y);
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
      index[i] = vga_getpixel( x, y );
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void read_rgba_span( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                            GLubyte rgba[][4] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
      /* TODO */
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                  Write arrays of pixels                    *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_ci32_pixels( const GLcontext *ctx,
 | 
			
		||||
                               GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                               const GLuint index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_setcolor( index[i] );
 | 
			
		||||
         vga_drawpixel( x[i], FLIP(y[i]) );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_mono_ci_pixels( const GLcontext *ctx, GLuint n,
 | 
			
		||||
                                  const GLint x[], const GLint y[],
 | 
			
		||||
                                  const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   /* use current color index */
 | 
			
		||||
   vga_setcolor( SVGAMesa->index );
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_drawpixel( x[i], FLIP(y[i]) );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_rgba_pixels( const GLcontext *ctx,
 | 
			
		||||
                               GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                               const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_setrgbcolor( rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] );
 | 
			
		||||
         vga_drawpixel( x[i], FLIP(y[i]) );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void write_mono_rgba_pixels( const GLcontext *ctx,
 | 
			
		||||
                                    GLuint n,
 | 
			
		||||
                                    const GLint x[], const GLint y[],
 | 
			
		||||
                                    const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   /* use current rgb color */
 | 
			
		||||
   vga_setrgbcolor( SVGAMesa->red, SVGAMesa->green, SVGAMesa->blue );
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         vga_drawpixel( x[i], FLIP(y[i]) );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                   Read arrays of pixels                    *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
 | 
			
		||||
/* Read an array of color index pixels. */
 | 
			
		||||
static void read_ci32_pixels( const GLcontext *ctx,
 | 
			
		||||
                              GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                              GLuint index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
      index[i] = vga_getpixel( x[i], FLIP(y[i]) );
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void read_rgba_pixels( const GLcontext *ctx,
 | 
			
		||||
                              GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                              GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   /* TODO */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void svgamesa_update_state( GLcontext *ctx )
 | 
			
		||||
{
 | 
			
		||||
   /* Initialize all the pointers in the DD struct.  Do this whenever */
 | 
			
		||||
@@ -364,13 +243,6 @@ static void svgamesa_update_state( GLcontext *ctx )
 | 
			
		||||
 | 
			
		||||
   ctx->Driver.UpdateState = svgamesa_update_state;
 | 
			
		||||
 | 
			
		||||
   ctx->Driver.ClearIndex = clear_index;
 | 
			
		||||
   ctx->Driver.ClearColor = clear_color;
 | 
			
		||||
   ctx->Driver.Clear = clear;
 | 
			
		||||
 | 
			
		||||
   ctx->Driver.Index = set_index;
 | 
			
		||||
   ctx->Driver.Color = set_color;
 | 
			
		||||
 | 
			
		||||
   ctx->Driver.SetBuffer = set_buffer;
 | 
			
		||||
   ctx->Driver.GetBufferSize = get_buffer_size;
 | 
			
		||||
 | 
			
		||||
@@ -378,59 +250,119 @@ static void svgamesa_update_state( GLcontext *ctx )
 | 
			
		||||
   ctx->Driver.LineFunc = NULL;
 | 
			
		||||
   ctx->Driver.TriangleFunc = NULL;
 | 
			
		||||
 | 
			
		||||
   /* Pixel/span writing functions: */
 | 
			
		||||
   /* TODO: use different funcs for 8, 16, 32-bit depths */
 | 
			
		||||
   ctx->Driver.WriteRGBASpan        = write_rgba_span;
 | 
			
		||||
   ctx->Driver.WriteMonoRGBASpan    = write_mono_rgba_span;
 | 
			
		||||
   ctx->Driver.WriteRGBAPixels      = write_rgba_pixels;
 | 
			
		||||
   ctx->Driver.WriteMonoRGBAPixels  = write_mono_rgba_pixels;
 | 
			
		||||
   ctx->Driver.WriteCI32Span        = write_ci32_span;
 | 
			
		||||
   ctx->Driver.WriteCI8Span         = write_ci8_span;
 | 
			
		||||
   ctx->Driver.WriteMonoCISpan      = write_mono_ci_span;
 | 
			
		||||
   ctx->Driver.WriteCI32Pixels      = write_ci32_pixels;
 | 
			
		||||
   ctx->Driver.WriteMonoCIPixels    = write_mono_ci_pixels;
 | 
			
		||||
   switch (SVGABuffer.Depth) {
 | 
			
		||||
    case  8: ctx->Driver.ClearIndex = __clear_index8;
 | 
			
		||||
             ctx->Driver.Clear 	    = __clear8;
 | 
			
		||||
             ctx->Driver.Index 	    = __set_index8; 
 | 
			
		||||
 | 
			
		||||
   /* Pixel/span reading functions: */
 | 
			
		||||
   /* TODO: use different funcs for 8, 16, 32-bit depths */
 | 
			
		||||
   ctx->Driver.ReadCI32Span   = read_ci32_span;
 | 
			
		||||
   ctx->Driver.ReadRGBASpan   = read_rgba_span;
 | 
			
		||||
   ctx->Driver.ReadCI32Pixels = read_ci32_pixels;
 | 
			
		||||
   ctx->Driver.ReadRGBAPixels = read_rgba_pixels;
 | 
			
		||||
             ctx->Driver.ReadCI32Span         = __read_ci32_span8;
 | 
			
		||||
             ctx->Driver.ReadCI32Pixels       = __read_ci32_pixels8;
 | 
			
		||||
             ctx->Driver.WriteCI8Span         = __write_ci8_span8;
 | 
			
		||||
             ctx->Driver.WriteCI32Span        = __write_ci32_span8;
 | 
			
		||||
             ctx->Driver.WriteCI32Pixels      = __write_ci32_pixels8;
 | 
			
		||||
             ctx->Driver.WriteMonoCISpan      = __write_mono_ci_span8;
 | 
			
		||||
             ctx->Driver.WriteMonoCIPixels    = __write_mono_ci_pixels8;
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
    SVGAlog("SVGAUpdateState: 8 bit mode.");
 | 
			
		||||
#endif    
 | 
			
		||||
 | 
			
		||||
	     break;
 | 
			
		||||
    case 15: ctx->Driver.ClearColor = __clear_color15;
 | 
			
		||||
             ctx->Driver.Clear 	    = __clear15;
 | 
			
		||||
             ctx->Driver.Color 	    = __set_color15;
 | 
			
		||||
 | 
			
		||||
             ctx->Driver.ReadRGBASpan         = __read_rgba_span15;
 | 
			
		||||
             ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels15;
 | 
			
		||||
             ctx->Driver.WriteRGBASpan        = __write_rgba_span15;
 | 
			
		||||
             ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels15;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span15;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels15;
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
    SVGAlog("SVGAUpdateState: 15 bit mode.");
 | 
			
		||||
#endif    
 | 
			
		||||
	     break;
 | 
			
		||||
    case 16: ctx->Driver.ClearColor = __clear_color16;
 | 
			
		||||
             ctx->Driver.Clear 	    = __clear16;
 | 
			
		||||
             ctx->Driver.Color 	    = __set_color16;
 | 
			
		||||
 | 
			
		||||
             ctx->Driver.ReadRGBASpan         = __read_rgba_span16;
 | 
			
		||||
             ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels16;
 | 
			
		||||
             ctx->Driver.WriteRGBASpan        = __write_rgba_span16;
 | 
			
		||||
             ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels16;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span16;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels16;
 | 
			
		||||
	     break;
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
    SVGAlog("SVGAUpdateState: 16 bit mode.");
 | 
			
		||||
#endif    
 | 
			
		||||
    case 24: ctx->Driver.ClearColor = __clear_color24;
 | 
			
		||||
             ctx->Driver.Clear 	    = __clear24;
 | 
			
		||||
             ctx->Driver.Color 	    = __set_color24;
 | 
			
		||||
 | 
			
		||||
             ctx->Driver.ReadRGBASpan         = __read_rgba_span24;
 | 
			
		||||
             ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels24;
 | 
			
		||||
             ctx->Driver.WriteRGBASpan        = __write_rgba_span24;
 | 
			
		||||
             ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels24;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span24;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels24;
 | 
			
		||||
	     break;
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
    SVGAlog("SVGAUpdateState: 32 bit mode.");
 | 
			
		||||
#endif    
 | 
			
		||||
    case 32: ctx->Driver.ClearColor = __clear_color32;
 | 
			
		||||
             ctx->Driver.Clear 	    = __clear32;
 | 
			
		||||
             ctx->Driver.Color 	    = __set_color32;
 | 
			
		||||
 | 
			
		||||
             ctx->Driver.ReadRGBASpan         = __read_rgba_span32;
 | 
			
		||||
             ctx->Driver.ReadRGBAPixels       = __read_rgba_pixels32;
 | 
			
		||||
             ctx->Driver.WriteRGBASpan        = __write_rgba_span32;
 | 
			
		||||
             ctx->Driver.WriteRGBAPixels      = __write_rgba_pixels32;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBASpan    = __write_mono_rgba_span32;
 | 
			
		||||
             ctx->Driver.WriteMonoRGBAPixels  = __write_mono_rgba_pixels32;
 | 
			
		||||
   }	     
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Create a new VGA/Mesa context and return a handle to it.
 | 
			
		||||
 */
 | 
			
		||||
SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesaContext ctx;
 | 
			
		||||
#ifndef DEV
 | 
			
		||||
   GLboolean rgb_flag;
 | 
			
		||||
   GLfloat redscale, greenscale, bluescale, alphascale;
 | 
			
		||||
   GLboolean alpha_flag = GL_FALSE;
 | 
			
		||||
   int colors;
 | 
			
		||||
   GLint index_bits;
 | 
			
		||||
   GLint redbits, greenbits, bluebits, alphabits;
 | 
			
		||||
 | 
			
		||||
   /* determine if we're in RGB or color index mode */
 | 
			
		||||
   colors = vga_getcolors();
 | 
			
		||||
   if (colors==32768) {
 | 
			
		||||
   if ((SVGABuffer.Depth==32) || (SVGABuffer.Depth==24)) {
 | 
			
		||||
      rgb_flag = GL_TRUE;
 | 
			
		||||
      redscale = greenscale = bluescale = alphascale = 255.0;
 | 
			
		||||
      redbits = greenbits = bluebits = 8;
 | 
			
		||||
      alphabits = 0;
 | 
			
		||||
      index_bits = 0;
 | 
			
		||||
   }
 | 
			
		||||
   else if (colors==256) {
 | 
			
		||||
   else if (SVGABuffer.Depth==8) {
 | 
			
		||||
      rgb_flag = GL_FALSE;
 | 
			
		||||
      redscale = greenscale = bluescale = alphascale = 0.0;
 | 
			
		||||
      redbits = greenbits = bluebits = alphabits = 0;
 | 
			
		||||
      index_bits = 8;
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      printf(">16 bit color not implemented yet!\n");
 | 
			
		||||
      return NULL;
 | 
			
		||||
   else if (SVGABuffer.Depth==15) {
 | 
			
		||||
      rgb_flag = GL_TRUE;
 | 
			
		||||
      redscale = greenscale = bluescale = alphascale = 31.0;
 | 
			
		||||
      redbits = greenbits = bluebits = 5;
 | 
			
		||||
      alphabits = 0;
 | 
			
		||||
      index_bits = 0;
 | 
			
		||||
   }
 | 
			
		||||
   else if (SVGABuffer.Depth==16) {
 | 
			
		||||
      rgb_flag = GL_TRUE;
 | 
			
		||||
      redscale = bluescale = alphascale = 31.0;
 | 
			
		||||
      greenscale = 63.0;
 | 
			
		||||
      redbits = bluebits = 5;
 | 
			
		||||
      greenbits = 6;
 | 
			
		||||
      alphabits = 0;
 | 
			
		||||
      index_bits = 0;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   ctx = (SVGAMesaContext) calloc( 1, sizeof(struct svgamesa_context) );
 | 
			
		||||
@@ -459,18 +391,16 @@ SVGAMesaContext SVGAMesaCreateContext( GLboolean doubleBuffer )
 | 
			
		||||
   ctx->red = ctx->green = ctx->blue = 255;
 | 
			
		||||
 | 
			
		||||
   ctx->width = ctx->height = 0;  /* temporary until first "make-current" */
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
   return ctx;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Destroy the given VGA/Mesa context.
 | 
			
		||||
 */
 | 
			
		||||
void SVGAMesaDestroyContext( SVGAMesaContext ctx )
 | 
			
		||||
{
 | 
			
		||||
#ifndef DEV
 | 
			
		||||
   if (ctx) {
 | 
			
		||||
      gl_destroy_visual( ctx->gl_vis );
 | 
			
		||||
      gl_destroy_context( ctx->gl_ctx );
 | 
			
		||||
@@ -480,15 +410,15 @@ void SVGAMesaDestroyContext( SVGAMesaContext ctx )
 | 
			
		||||
         SVGAMesa = NULL;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Make the specified VGA/Mesa context the current one.
 | 
			
		||||
 */
 | 
			
		||||
void SVGAMesaMakeCurrent( SVGAMesaContext ctx )
 | 
			
		||||
{
 | 
			
		||||
#ifndef DEV
 | 
			
		||||
   SVGAMesa = ctx;
 | 
			
		||||
   svgamesa_update_state( ctx->gl_ctx );
 | 
			
		||||
   gl_make_current( ctx->gl_ctx, ctx->gl_buffer );
 | 
			
		||||
@@ -499,10 +429,9 @@ void SVGAMesaMakeCurrent( SVGAMesaContext ctx )
 | 
			
		||||
      ctx->height = vga_getydim();
 | 
			
		||||
      gl_Viewport( ctx->gl_ctx, 0, 0, ctx->width, ctx->height );
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Return a handle to the current VGA/Mesa context.
 | 
			
		||||
 */
 | 
			
		||||
@@ -511,20 +440,38 @@ SVGAMesaContext SVGAMesaGetCurrentContext( void )
 | 
			
		||||
   return SVGAMesa;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Swap front/back buffers for current context if double buffered.
 | 
			
		||||
 */
 | 
			
		||||
void SVGAMesaSwapBuffers( void )
 | 
			
		||||
{
 | 
			
		||||
 void * tmpptr;
 | 
			
		||||
 
 | 
			
		||||
/* vga_waitretrace(); */
 | 
			
		||||
 copy_buffer(SVGABuffer.BackBuffer);
 | 
			
		||||
 | 
			
		||||
#ifndef DEV
 | 
			
		||||
   FLUSH_VB( SVGAMesa->gl_ctx, "swap buffers" );
 | 
			
		||||
   if (SVGAMesa->gl_vis->DBflag) {
 | 
			
		||||
      vga_flip();
 | 
			
		||||
   }
 | 
			
		||||
   if (SVGAMesa->gl_vis->DBflag) 
 | 
			
		||||
#endif /* DEV */   
 | 
			
		||||
   {
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
   sprintf(cbuf,"SVGAMesaSwapBuffers : Swapping...");
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
#endif /* SVGA_DEBUG */
 | 
			
		||||
   tmpptr=SVGABuffer.BackBuffer;
 | 
			
		||||
   SVGABuffer.BackBuffer=SVGABuffer.FrontBuffer;
 | 
			
		||||
   SVGABuffer.FrontBuffer=tmpptr;
 | 
			
		||||
#ifdef SVGA_DEBUG
 | 
			
		||||
   sprintf(cbuf,"SVGAMesaSwapBuffers : WriteBuffer : %p\n"
 | 
			
		||||
                "                      Readbuffer  : %p", \
 | 
			
		||||
		SVGABuffer.BackBuffer, SVGABuffer.FrontBuffer );
 | 
			
		||||
   SVGAlog(cbuf);
 | 
			
		||||
#endif /* SVGA_DEBUG */
 | 
			
		||||
   }       
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#else /*SVGA*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Need this to provide at least one external definition when SVGA is
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										185
									
								
								src/mesa/drivers/svga/svgamesa15.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								src/mesa/drivers/svga/svgamesa15.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
			
		||||
/* $Id: svgamesa15.c,v 1.1.2.4 2000/01/31 22:10:39 tanner Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA
 | 
			
		||||
 | 
			
		||||
#include "svgapix.h"
 | 
			
		||||
 | 
			
		||||
GLshort * shortBuffer;
 | 
			
		||||
 | 
			
		||||
int __svga_drawpixel15(int x, int y, unsigned long c)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
    
 | 
			
		||||
    shortBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
    shortBuffer[offset]=c;
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned long __svga_getpixel15(int x, int y)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    shortBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
    return shortBuffer[offset];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __set_color15( GLcontext *ctx,
 | 
			
		||||
                    GLubyte red, GLubyte green,
 | 
			
		||||
                    GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->hicolor=(red>>3)<<10 | (green>>3)<<5 | (blue>>3); 
 | 
			
		||||
/*   SVGAMesa->hicolor=(red)<<10 | (green)<<5 | (blue); */
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
void __clear_color15( GLcontext *ctx,
 | 
			
		||||
                      GLubyte red, GLubyte green,
 | 
			
		||||
                      GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->clear_hicolor=(red>>3)<<10 | (green>>3)<<5 | (blue>>3);  
 | 
			
		||||
/*   SVGAMesa->clear_hicolor=(red)<<10 | (green)<<5 | (blue);*/
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
GLbitfield __clear15( GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
                      GLint x, GLint y, GLint width, GLint height )
 | 
			
		||||
{
 | 
			
		||||
   int i,j;
 | 
			
		||||
   
 | 
			
		||||
   if (mask & GL_COLOR_BUFFER_BIT) {
 | 
			
		||||
    shortBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    if (all) {
 | 
			
		||||
     for (i=0;i<SVGABuffer.BufferSize / 2;i++) shortBuffer[i]=SVGAMesa->clear_hicolor;
 | 
			
		||||
    } else {
 | 
			
		||||
    for (i=x;i<width;i++)    
 | 
			
		||||
     for (j=y;j<height;j++)    
 | 
			
		||||
      __svga_drawpixel15(i,j,SVGAMesa->clear_hicolor);
 | 
			
		||||
    }	
 | 
			
		||||
   }    
 | 
			
		||||
   return mask & (~GL_COLOR_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                          const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   if (mask) {
 | 
			
		||||
      /* draw some pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel15( x, y, (rgba[i][RCOMP]>>3)<<10 | \
 | 
			
		||||
			           (rgba[i][GCOMP]>>3)<<5 |  \
 | 
			
		||||
			           (rgba[i][BCOMP]>>3));
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* draw all pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         __svga_drawpixel15( x, y, (rgba[i][RCOMP]>>3)<<10 | \
 | 
			
		||||
			           (rgba[i][GCOMP]>>3)<<5  | \
 | 
			
		||||
			           (rgba[i][BCOMP]>>3));
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_span15( const GLcontext *ctx,
 | 
			
		||||
                               GLuint n, GLint x, GLint y,
 | 
			
		||||
                               const GLubyte mask[])
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel15( x, y, SVGAMesa->hicolor);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                         GLubyte rgba[][4] )
 | 
			
		||||
{
 | 
			
		||||
   int i,pix;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
    pix = __svga_getpixel15( x, y);
 | 
			
		||||
    rgba[i][RCOMP] = ((pix>>10)<<3) & 0xff;
 | 
			
		||||
    rgba[i][GCOMP] = ((pix>> 5)<<3) & 0xff;
 | 
			
		||||
    rgba[i][BCOMP] = ((pix    )<<3) & 0xff;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_pixels15( const GLcontext *ctx,
 | 
			
		||||
                            GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                            const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel15( x[i], y[i], (rgba[i][RCOMP]>>3)<<10 | \
 | 
			
		||||
			                 (rgba[i][GCOMP]>>3)<<5  | \
 | 
			
		||||
			                 (rgba[i][BCOMP]>>3));
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_pixels15( const GLcontext *ctx,
 | 
			
		||||
                                 GLuint n,
 | 
			
		||||
                                 const GLint x[], const GLint y[],
 | 
			
		||||
                                 const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   /* use current rgb color */
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel15( x[i], y[i], SVGAMesa->hicolor );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_pixels15( const GLcontext *ctx,
 | 
			
		||||
                           GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                           GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i,pix;
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
    pix = __svga_getpixel15( x[i], y[i] );
 | 
			
		||||
    rgba[i][RCOMP] = ((pix>>10)<<3) & 0xff;
 | 
			
		||||
    rgba[i][GCOMP] = ((pix>> 5)<<3) & 0xff;
 | 
			
		||||
    rgba[i][BCOMP] = ((pix    )<<3) & 0xff;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										44
									
								
								src/mesa/drivers/svga/svgamesa15.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/mesa/drivers/svga/svgamesa15.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
/* $Id: svgamesa15.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef SVGA_MESA_15_H
 | 
			
		||||
#define SVGA_MESA_15_H
 | 
			
		||||
 | 
			
		||||
extern void __set_color15( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern void __clear_color15( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern GLbitfield __clear15( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
 | 
			
		||||
extern void __write_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]);
 | 
			
		||||
extern void __read_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] );
 | 
			
		||||
extern void __write_rgba_pixels15( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_pixels15( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] );
 | 
			
		||||
extern void __read_rgba_pixels15( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
 | 
			
		||||
#endif /* SVGA_MESA_15_H */
 | 
			
		||||
							
								
								
									
										185
									
								
								src/mesa/drivers/svga/svgamesa16.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								src/mesa/drivers/svga/svgamesa16.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
			
		||||
/* $Id: svgamesa16.c,v 1.1.2.4 2000/01/31 22:10:39 tanner Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA
 | 
			
		||||
 | 
			
		||||
#include "svgapix.h"
 | 
			
		||||
 | 
			
		||||
GLshort * shortBuffer;
 | 
			
		||||
 | 
			
		||||
int __svga_drawpixel16(int x, int y, unsigned long c)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    shortBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
    shortBuffer[offset]=c;
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned long __svga_getpixel16(int x, int y)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    shortBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
    return shortBuffer[offset];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __set_color16( GLcontext *ctx,
 | 
			
		||||
                    GLubyte red, GLubyte green,
 | 
			
		||||
                    GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
    SVGAMesa->hicolor=(red>>3)<<11 | (green>>2)<<5 | (blue>>3); 
 | 
			
		||||
/*    SVGAMesa->hicolor=(red)<<11 | (green)<<5 | (blue); */
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
void __clear_color16( GLcontext *ctx,
 | 
			
		||||
                      GLubyte red, GLubyte green,
 | 
			
		||||
                      GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
    SVGAMesa->clear_hicolor=(red>>3)<<11 | (green>>2)<<5 | (blue>>3); 
 | 
			
		||||
/*    SVGAMesa->clear_hicolor=(red)<<11 | (green)<<5 | (blue); */
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
GLbitfield __clear16( GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
                      GLint x, GLint y, GLint width, GLint height )
 | 
			
		||||
{
 | 
			
		||||
   int i,j;
 | 
			
		||||
   
 | 
			
		||||
   if (mask & GL_COLOR_BUFFER_BIT) {
 | 
			
		||||
    if (all) {
 | 
			
		||||
     shortBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
     for (i=0;i<SVGABuffer.BufferSize / 2;i++) shortBuffer[i]=SVGAMesa->clear_hicolor;
 | 
			
		||||
    } else {
 | 
			
		||||
    for (i=x;i<width;i++)    
 | 
			
		||||
     for (j=y;j<height;j++)    
 | 
			
		||||
      __svga_drawpixel16(i,j,SVGAMesa->clear_hicolor);
 | 
			
		||||
    }	
 | 
			
		||||
   }        
 | 
			
		||||
   return mask & (~GL_COLOR_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                          const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   if (mask) {
 | 
			
		||||
      /* draw some pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel16( x, y, (rgba[i][RCOMP]>>3)<<11 | \
 | 
			
		||||
			           (rgba[i][GCOMP]>>2)<<5  | \
 | 
			
		||||
			           (rgba[i][BCOMP]>>3));
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* draw all pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         __svga_drawpixel16( x, y, (rgba[i][RCOMP]>>3)<<11 | \
 | 
			
		||||
			           (rgba[i][GCOMP]>>2)<<5  | \
 | 
			
		||||
			           (rgba[i][BCOMP]>>3));
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_span16( const GLcontext *ctx,
 | 
			
		||||
                               GLuint n, GLint x, GLint y,
 | 
			
		||||
                               const GLubyte mask[])
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel16( x, y, SVGAMesa->hicolor);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                         GLubyte rgba[][4] )
 | 
			
		||||
{
 | 
			
		||||
   int i,pix;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
    pix = __svga_getpixel16( x, y );
 | 
			
		||||
    rgba[i][RCOMP] = ((pix>>11)<<3) & 0xff;
 | 
			
		||||
    rgba[i][GCOMP] = ((pix>> 5)<<2) & 0xff;
 | 
			
		||||
    rgba[i][BCOMP] = ((pix    )<<3) & 0xff;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_pixels16( const GLcontext *ctx,
 | 
			
		||||
                            GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                            const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel16( x[i], y[i], (rgba[i][RCOMP]>>3)<<11 | \
 | 
			
		||||
			                 (rgba[i][GCOMP]>>2)<<5  | \
 | 
			
		||||
			                 (rgba[i][BCOMP]>>3));
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_pixels16( const GLcontext *ctx,
 | 
			
		||||
                                 GLuint n,
 | 
			
		||||
                                 const GLint x[], const GLint y[],
 | 
			
		||||
                                 const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   /* use current rgb color */
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel16( x[i], y[i], SVGAMesa->hicolor );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_pixels16( const GLcontext *ctx,
 | 
			
		||||
                           GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                           GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i,pix;
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
    pix = __svga_getpixel16( x[i], y[i] );
 | 
			
		||||
    rgba[i][RCOMP] = ((pix>>11)<<3) & 0xff;
 | 
			
		||||
    rgba[i][GCOMP] = ((pix>> 5)<<2) & 0xff;
 | 
			
		||||
    rgba[i][BCOMP] = ((pix    )<<3) & 0xff;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa16.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa16.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
/* $Id: svgamesa16.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef SVGA_MESA_16_H
 | 
			
		||||
#define SVGA_MESA_16_H
 | 
			
		||||
 | 
			
		||||
extern void __set_color16( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern void __clear_color16( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern GLbitfield __clear16( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
 | 
			
		||||
extern void __write_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]);
 | 
			
		||||
extern void __read_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] );
 | 
			
		||||
extern void __write_rgba_pixels16( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_pixels16( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] );
 | 
			
		||||
extern void __read_rgba_pixels16( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
 | 
			
		||||
#endif /* SVGA_MESA_16_H */
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										215
									
								
								src/mesa/drivers/svga/svgamesa24.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								src/mesa/drivers/svga/svgamesa24.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,215 @@
 | 
			
		||||
/* $Id: svgamesa24.c,v 1.1.2.5 2000/01/31 22:10:39 tanner Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA
 | 
			
		||||
 | 
			
		||||
#include "svgapix.h"
 | 
			
		||||
 | 
			
		||||
_RGB * rgbBuffer;
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
/* this doesn't compile with GCC on RedHat 6.1 */
 | 
			
		||||
inline int RGB2BGR24(int c)
 | 
			
		||||
{
 | 
			
		||||
	asm("rorw  $8, %0\n"	 
 | 
			
		||||
	    "rorl $16, %0\n"	 
 | 
			
		||||
	    "rorw  $8, %0\n"	 
 | 
			
		||||
	    "shrl  $8, %0\n"	 
 | 
			
		||||
      : "=q"(c):"0"(c));
 | 
			
		||||
    return c;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
static unsigned long RGB2BGR24(unsigned long color)
 | 
			
		||||
{
 | 
			
		||||
   return (color & 0xff00)|(color>>16)|((color & 0xff)<<16);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int __svga_drawpixel24(int x, int y, GLubyte r, GLubyte g, GLubyte b)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    rgbBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
 | 
			
		||||
    rgbBuffer[offset].r=r;
 | 
			
		||||
    rgbBuffer[offset].g=g;
 | 
			
		||||
    rgbBuffer[offset].b=b;
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned long __svga_getpixel24(int x, int y)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    rgbBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
    return rgbBuffer[offset].r<<16 | rgbBuffer[offset].g<<8 | rgbBuffer[offset].b;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __set_color24( GLcontext *ctx,
 | 
			
		||||
                    GLubyte red, GLubyte green,
 | 
			
		||||
                    GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->red = red;
 | 
			
		||||
   SVGAMesa->green = green;
 | 
			
		||||
   SVGAMesa->blue = blue;
 | 
			
		||||
/*   SVGAMesa->truecolor = red<<16 | green<<8 | blue; */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __clear_color24( GLcontext *ctx,
 | 
			
		||||
                      GLubyte red, GLubyte green,
 | 
			
		||||
                      GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->clear_red = red;
 | 
			
		||||
   SVGAMesa->clear_green = green;
 | 
			
		||||
   SVGAMesa->clear_blue = blue;
 | 
			
		||||
/*   SVGAMesa->clear_truecolor = red<<16 | green<<8 | blue; */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GLbitfield __clear24( GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
                      GLint x, GLint y, GLint width, GLint height )
 | 
			
		||||
{
 | 
			
		||||
   int i,j;
 | 
			
		||||
   
 | 
			
		||||
   if (mask & GL_COLOR_BUFFER_BIT) {
 | 
			
		||||
    if (all) {
 | 
			
		||||
     rgbBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
     for (i=0;i<SVGABuffer.BufferSize / 3;i++)
 | 
			
		||||
      {
 | 
			
		||||
       rgbBuffer[i].r=SVGAMesa->clear_red;
 | 
			
		||||
       rgbBuffer[i].g=SVGAMesa->clear_green;
 | 
			
		||||
       rgbBuffer[i].b=SVGAMesa->clear_blue;
 | 
			
		||||
      } 
 | 
			
		||||
    } else {
 | 
			
		||||
    for (i=x;i<width;i++)    
 | 
			
		||||
     for (j=y;j<height;j++)    
 | 
			
		||||
      __svga_drawpixel24( i, j, SVGAMesa->clear_red,
 | 
			
		||||
                                SVGAMesa->clear_green,
 | 
			
		||||
				SVGAMesa->clear_blue);
 | 
			
		||||
    }	
 | 
			
		||||
   }
 | 
			
		||||
   return mask & (~GL_COLOR_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                          const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   if (mask) {
 | 
			
		||||
      /* draw some pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel24( x, y, rgba[i][RCOMP],
 | 
			
		||||
	                           rgba[i][GCOMP],
 | 
			
		||||
				   rgba[i][BCOMP]);
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* draw all pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         __svga_drawpixel24( x, y, rgba[i][RCOMP],
 | 
			
		||||
	                           rgba[i][GCOMP],
 | 
			
		||||
				   rgba[i][BCOMP]);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_span24( const GLcontext *ctx,
 | 
			
		||||
                               GLuint n, GLint x, GLint y,
 | 
			
		||||
                               const GLubyte mask[])
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel24( x, y, SVGAMesa->red,
 | 
			
		||||
                                   SVGAMesa->green,
 | 
			
		||||
				   SVGAMesa->blue);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                         GLubyte rgba[][4] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
    *((GLint*)rgba[i]) = RGB2BGR24(__svga_getpixel24( x, y));
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_pixels24( const GLcontext *ctx,
 | 
			
		||||
                            GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                            const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel24( x[i], y[i], rgba[i][RCOMP],
 | 
			
		||||
	                                 rgba[i][GCOMP],
 | 
			
		||||
				         rgba[i][BCOMP]);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_pixels24( const GLcontext *ctx,
 | 
			
		||||
                                 GLuint n,
 | 
			
		||||
                                 const GLint x[], const GLint y[],
 | 
			
		||||
                                 const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   /* use current rgb color */
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel24( x[i], y[i], SVGAMesa->red,
 | 
			
		||||
                                         SVGAMesa->green,
 | 
			
		||||
				         SVGAMesa->blue);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_pixels24( const GLcontext *ctx,
 | 
			
		||||
                           GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                           GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
    *((GLint*)rgba[i]) = RGB2BGR24(__svga_getpixel24( x[i], y[i]));    
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa24.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa24.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
/* $Id: svgamesa24.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef SVGA_MESA_24_H
 | 
			
		||||
#define SVGA_MESA_24_H
 | 
			
		||||
 | 
			
		||||
extern void __set_color24( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern void __clear_color24( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern GLbitfield __clear24( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
 | 
			
		||||
extern void __write_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]);
 | 
			
		||||
extern void __read_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] );
 | 
			
		||||
extern void __write_rgba_pixels24( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_pixels24( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] );
 | 
			
		||||
extern void __read_rgba_pixels24( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
 | 
			
		||||
#endif /* SVGA_MESA_24_H */
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										192
									
								
								src/mesa/drivers/svga/svgamesa32.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								src/mesa/drivers/svga/svgamesa32.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,192 @@
 | 
			
		||||
/* $Id: svgamesa32.c,v 1.1.2.5 2000/01/31 22:10:39 tanner Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA
 | 
			
		||||
 | 
			
		||||
#include "svgapix.h"
 | 
			
		||||
 | 
			
		||||
GLint * intBuffer;
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
/* this doesn't compile with GCC on RedHat 6.1 */
 | 
			
		||||
inline int RGB2BGR32(int c)
 | 
			
		||||
{
 | 
			
		||||
	asm("rorw  $8, %0\n"	 
 | 
			
		||||
	    "rorl $16, %0\n"	 
 | 
			
		||||
	    "rorw  $8, %0\n"	 
 | 
			
		||||
	    "shrl  $8, %0\n"	 
 | 
			
		||||
      : "=q"(c):"0"(c));
 | 
			
		||||
    return c;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
static unsigned long RGB2BGR32(unsigned long color)
 | 
			
		||||
{
 | 
			
		||||
   return (color & 0xff00)|(color>>16)|((color & 0xff)<<16);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int __svga_drawpixel32(int x, int y, unsigned long c)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    intBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
    intBuffer[offset]=c;
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned long __svga_getpixel32(int x, int y)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    intBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->width + x;
 | 
			
		||||
    return intBuffer[offset];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __set_color32( GLcontext *ctx,
 | 
			
		||||
                    GLubyte red, GLubyte green,
 | 
			
		||||
                    GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->red = red;
 | 
			
		||||
   SVGAMesa->green = green;
 | 
			
		||||
   SVGAMesa->blue = blue;
 | 
			
		||||
   SVGAMesa->truecolor = red<<16 | green<<8 | blue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __clear_color32( GLcontext *ctx,
 | 
			
		||||
                      GLubyte red, GLubyte green,
 | 
			
		||||
                      GLubyte blue, GLubyte alpha )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->clear_truecolor = red<<16 | green<<8 | blue;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GLbitfield __clear32( GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
                        GLint x, GLint y, GLint width, GLint height )
 | 
			
		||||
{
 | 
			
		||||
   int i,j;
 | 
			
		||||
   
 | 
			
		||||
   if (mask & GL_COLOR_BUFFER_BIT) {
 | 
			
		||||
    if (all) {
 | 
			
		||||
     intBuffer=(void *)SVGABuffer.BackBuffer;
 | 
			
		||||
     for (i=0;i<SVGABuffer.BufferSize / 4;i++) intBuffer[i]=SVGAMesa->clear_truecolor;
 | 
			
		||||
    } else {
 | 
			
		||||
    for (i=x;i<width;i++)    
 | 
			
		||||
     for (j=y;j<height;j++)    
 | 
			
		||||
      __svga_drawpixel32(i,j,SVGAMesa->clear_truecolor);
 | 
			
		||||
    }	
 | 
			
		||||
   }
 | 
			
		||||
   return mask & (~GL_COLOR_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                          const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   if (mask) {
 | 
			
		||||
      /* draw some pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel32( x, y, RGB2BGR32(*((GLint*)rgba[i])));
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* draw all pixels */
 | 
			
		||||
      for (i=0; i<n; i++, x++) {
 | 
			
		||||
         __svga_drawpixel32( x, y, RGB2BGR32(*((GLint*)rgba[i])));
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_span32( const GLcontext *ctx,
 | 
			
		||||
                               GLuint n, GLint x, GLint y,
 | 
			
		||||
                               const GLubyte mask[])
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel32( x, y, SVGAMesa->truecolor);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                         GLubyte rgba[][4] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++, x++) {
 | 
			
		||||
     *((GLint*)rgba[i]) = RGB2BGR32(__svga_getpixel32( x, y ));
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_rgba_pixels32( const GLcontext *ctx,
 | 
			
		||||
                            GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                            const GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel32( x[i], y[i], RGB2BGR32(*((GLint*)rgba[i])));
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_mono_rgba_pixels32( const GLcontext *ctx,
 | 
			
		||||
                                 GLuint n,
 | 
			
		||||
                                 const GLint x[], const GLint y[],
 | 
			
		||||
                                 const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   /* use current rgb color */
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel32( x[i], y[i], SVGAMesa->truecolor );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_rgba_pixels32( const GLcontext *ctx,
 | 
			
		||||
                           GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                           GLubyte rgba[][4], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
    *((GLint*)rgba[i]) = RGB2BGR32(__svga_getpixel32( x[i], y[i] ));
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa32.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa32.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
/* $Id: svgamesa32.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef SVGA_MESA_32_H
 | 
			
		||||
#define SVGA_MESA_32_H
 | 
			
		||||
 | 
			
		||||
extern void __set_color32( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern void __clear_color32( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
 | 
			
		||||
extern GLbitfield __clear32( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
 | 
			
		||||
extern void __write_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[]);
 | 
			
		||||
extern void __read_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] );
 | 
			
		||||
extern void __write_rgba_pixels32( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_rgba_pixels32( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] );
 | 
			
		||||
extern void __read_rgba_pixels32( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] );
 | 
			
		||||
 | 
			
		||||
#endif /* SVGA_MESA_32_H */
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										167
									
								
								src/mesa/drivers/svga/svgamesa8.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								src/mesa/drivers/svga/svgamesa8.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,167 @@
 | 
			
		||||
/* $Id: svgamesa8.c,v 1.1.2.3 2000/01/31 22:10:39 tanner Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SVGA
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "svgapix.h"
 | 
			
		||||
 | 
			
		||||
int __svga_drawpixel8(int x, int y, unsigned long c)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->linewidth + x;
 | 
			
		||||
    SVGABuffer.BackBuffer[offset]=c;
 | 
			
		||||
    
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned long __svga_getpixel8(int x, int y)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long offset;
 | 
			
		||||
 | 
			
		||||
    y = SVGAInfo->height-y-1;
 | 
			
		||||
    offset = y * SVGAInfo->linewidth + x;
 | 
			
		||||
    return SVGABuffer.BackBuffer[offset];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __set_index8( GLcontext *ctx, GLuint index )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->index = index;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __clear_index8( GLcontext *ctx, GLuint index )
 | 
			
		||||
{
 | 
			
		||||
   SVGAMesa->clear_index = index;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GLbitfield __clear8( GLcontext *ctx, GLbitfield mask, GLboolean all,
 | 
			
		||||
                     GLint x, GLint y, GLint width, GLint height )
 | 
			
		||||
{
 | 
			
		||||
   int i,j;
 | 
			
		||||
   
 | 
			
		||||
   if (mask & GL_COLOR_BUFFER_BIT) {
 | 
			
		||||
   
 | 
			
		||||
    if (all) 
 | 
			
		||||
    { 
 | 
			
		||||
     memset(SVGABuffer.BackBuffer,SVGAMesa->clear_index,SVGABuffer.BufferSize);
 | 
			
		||||
    } else {
 | 
			
		||||
    for (i=x;i<width;i++)    
 | 
			
		||||
     for (j=y;j<height;j++)    
 | 
			
		||||
      __svga_drawpixel8(i,j,SVGAMesa->clear_index);
 | 
			
		||||
    }
 | 
			
		||||
   }    
 | 
			
		||||
   return mask & (~GL_COLOR_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_ci32_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                         const GLuint index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0;i<n;i++,x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel8( x, y, index[i]);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_ci8_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y,
 | 
			
		||||
                        const GLubyte index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
 | 
			
		||||
   for (i=0;i<n;i++,x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel8( x, y, index[i]);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_mono_ci_span8( const GLcontext *ctx, GLuint n,
 | 
			
		||||
                            GLint x, GLint y, const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0;i<n;i++,x++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel8( x, y, SVGAMesa->index);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_ci32_span8( const GLcontext *ctx,
 | 
			
		||||
                        GLuint n, GLint x, GLint y, GLuint index[])
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
      index[i] = __svga_getpixel8( x, y);
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __write_ci32_pixels8( const GLcontext *ctx,
 | 
			
		||||
                           GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                           const GLuint index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel8( x[i], y[i], index[i]);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void __write_mono_ci_pixels8( const GLcontext *ctx, GLuint n,
 | 
			
		||||
                              const GLint x[], const GLint y[],
 | 
			
		||||
                              const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++) {
 | 
			
		||||
      if (mask[i]) {
 | 
			
		||||
         __svga_drawpixel8( x[i], y[i], SVGAMesa->index);
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __read_ci32_pixels8( const GLcontext *ctx,
 | 
			
		||||
                          GLuint n, const GLint x[], const GLint y[],
 | 
			
		||||
                          GLuint index[], const GLubyte mask[] )
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i=0; i<n; i++,x++) {
 | 
			
		||||
      index[i] = __svga_getpixel8( x[i], y[i]);
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										45
									
								
								src/mesa/drivers/svga/svgamesa8.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/mesa/drivers/svga/svgamesa8.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
/* $Id: svgamesa8.h,v 1.1.2.1 2000/01/22 20:05:09 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef SVGA_MESA_8_H
 | 
			
		||||
#define SVGA_MESA_8_H
 | 
			
		||||
 | 
			
		||||
extern void __set_index8( GLcontext *ctx, GLuint index );
 | 
			
		||||
extern void __clear_index8( GLcontext *ctx, GLuint index );
 | 
			
		||||
extern GLbitfield __clear8( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
 | 
			
		||||
extern void __write_ci32_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLuint index[], const GLubyte mask[] );
 | 
			
		||||
extern void __write_ci8_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte index[], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_ci_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte mask[] );
 | 
			
		||||
extern void __read_ci32_span8( const GLcontext *ctx, GLuint n, GLint x, GLint y, GLuint index[]);
 | 
			
		||||
extern void __write_ci32_pixels8( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLuint index[], const GLubyte mask[] );
 | 
			
		||||
extern void __write_mono_ci_pixels8( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] );
 | 
			
		||||
extern void __read_ci32_pixels8( const GLcontext *ctx, GLuint n, const GLint x[], const GLint y[], GLuint index[], const GLubyte mask[] );
 | 
			
		||||
 | 
			
		||||
#endif /* SVGA_MESA_15_H */
 | 
			
		||||
							
								
								
									
										71
									
								
								src/mesa/drivers/svga/svgapix.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								src/mesa/drivers/svga/svgapix.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
/* $Id: svgapix.h,v 1.1.2.2 2000/01/22 20:05:28 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * Copyright (C) 1995-2000  Brian Paul
 | 
			
		||||
 *
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU Library General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 * Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free
 | 
			
		||||
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * SVGA driver for Mesa.
 | 
			
		||||
 * Original author:  Brian Paul
 | 
			
		||||
 * Additional authors:  Slawomir Szczyrba <steev@hot.pl>  (Mesa 3.2)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef SVGAPIX_H
 | 
			
		||||
#define SVGAPIX_H
 | 
			
		||||
 | 
			
		||||
#include "GL/gl.h"
 | 
			
		||||
#include "GL/svgamesa.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "vga.h"
 | 
			
		||||
 | 
			
		||||
struct svgamesa_context {
 | 
			
		||||
   GLcontext *gl_ctx;		/* the core Mesa context */
 | 
			
		||||
   GLvisual *gl_vis;		/* describes the color buffer */
 | 
			
		||||
   GLframebuffer *gl_buffer;	/* the ancillary buffers */
 | 
			
		||||
   GLuint index;		/* current color index */
 | 
			
		||||
   GLuint clear_index;		/* current clear index */
 | 
			
		||||
   GLint red, green, blue;	/* current rgb color */
 | 
			
		||||
   GLuint truecolor;		/* current rgb color */
 | 
			
		||||
   GLint clear_red, 
 | 
			
		||||
         clear_green, 
 | 
			
		||||
	 clear_blue;		/* current clear rgb color */
 | 
			
		||||
   GLuint clear_truecolor;	/* current clear rgb color */
 | 
			
		||||
   GLushort hicolor;		/* current hicolor */
 | 
			
		||||
   GLushort clear_hicolor;	/* current clear hicolor */
 | 
			
		||||
   GLint width, height;		/* size of color buffer */
 | 
			
		||||
   GLint depth;			/* bits per pixel (8,16,24 or 32) */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct { GLubyte b,g,r; } _RGB;
 | 
			
		||||
 | 
			
		||||
struct svga_buffer {   
 | 
			
		||||
   GLint     Depth;
 | 
			
		||||
   GLint     BufferSize;
 | 
			
		||||
   GLubyte   * FrontBuffer;
 | 
			
		||||
   GLubyte   * BackBuffer;
 | 
			
		||||
   GLubyte   * VideoRam;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
extern struct svga_buffer SVGABuffer;
 | 
			
		||||
extern vga_modeinfo * SVGAInfo;
 | 
			
		||||
extern SVGAMesaContext SVGAMesa;    /* the current context */
 | 
			
		||||
 | 
			
		||||
#endif /* SVGAPIX_H */
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
/* $Id: fakeglx.c,v 1.13 1999/11/11 01:29:28 brianp Exp $ */
 | 
			
		||||
/* $Id: fakeglx.c,v 1.12.2.7 2000/03/23 00:13:22 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -45,7 +45,16 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "glxheader.h"
 | 
			
		||||
#ifdef HAVE_CONFIG_H
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <X11/Xlib.h>
 | 
			
		||||
#include <X11/Xutil.h>
 | 
			
		||||
#include "GL/gl.h"
 | 
			
		||||
#include "GL/xmesa.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "config.h"
 | 
			
		||||
@@ -258,7 +267,7 @@ save_glx_visual( Display *dpy, XVisualInfo *vinfo,
 | 
			
		||||
          && (v->gl_visual->StencilBits >= stencil_size || stencil_size == 0)
 | 
			
		||||
          && (v->gl_visual->AccumBits >= accum_size || accum_size == 0)) {
 | 
			
		||||
         /* now either compare XVisualInfo pointers or visual IDs */
 | 
			
		||||
         if ((!comparePointers && v->vishandle->visualid == vinfo->visualid)
 | 
			
		||||
         if ((!comparePointers && v->visinfo->visualid == vinfo->visualid)
 | 
			
		||||
             || (comparePointers && v->vishandle == vinfo)) {
 | 
			
		||||
            return v;
 | 
			
		||||
         }
 | 
			
		||||
@@ -1047,7 +1056,6 @@ Bool Fake_glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx )
 | 
			
		||||
{
 | 
			
		||||
   if (ctx && drawable) {
 | 
			
		||||
      XMesaBuffer buffer;
 | 
			
		||||
      XMesaContext xmctx = (XMesaContext) ctx;
 | 
			
		||||
 | 
			
		||||
      if (drawable==MakeCurrent_PrevDrawable && ctx==MakeCurrent_PrevContext) {
 | 
			
		||||
         buffer = MakeCurrent_PrevBuffer;
 | 
			
		||||
@@ -1057,7 +1065,7 @@ Bool Fake_glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx )
 | 
			
		||||
      }
 | 
			
		||||
      if (!buffer) {
 | 
			
		||||
         /* drawable must be a new window! */
 | 
			
		||||
         buffer = XMesaCreateWindowBuffer2( xmctx->xm_visual, drawable, ctx );
 | 
			
		||||
         buffer = XMesaCreateWindowBuffer2( ctx->xm_visual, drawable, ctx );
 | 
			
		||||
         if (!buffer) {
 | 
			
		||||
            /* Out of memory, or context/drawable depth mismatch */
 | 
			
		||||
            return False;
 | 
			
		||||
@@ -1149,12 +1157,12 @@ void Fake_glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Fake_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
 | 
			
		||||
                          GLuint mask )
 | 
			
		||||
                          unsigned long mask )
 | 
			
		||||
{
 | 
			
		||||
   XMesaContext xm_src = (XMesaContext) src;
 | 
			
		||||
   XMesaContext xm_dst = (XMesaContext) dst;
 | 
			
		||||
   (void) dpy;
 | 
			
		||||
   gl_copy_context( xm_src->gl_ctx, xm_dst->gl_ctx, mask );
 | 
			
		||||
   gl_copy_context( xm_src->gl_ctx, xm_dst->gl_ctx, (GLuint) mask );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1422,10 +1430,10 @@ static const char *get_extensions( void )
 | 
			
		||||
#ifdef FX
 | 
			
		||||
   const char *fx = getenv("MESA_GLX_FX");
 | 
			
		||||
   if (fx && fx[0] != 'd') {
 | 
			
		||||
      return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GLX_EXT_get_proc_address GLX_MESA_set_3dfx_mode";
 | 
			
		||||
      return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GLX_MESA_set_3dfx_mode GLX_ARB_get_proc_address";
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
   return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GL_EXT_get_proc_address";
 | 
			
		||||
   return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GLX_ARB_get_proc_address";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1444,7 +1452,7 @@ const char *Fake_glXQueryExtensionsString( Display *dpy, int screen )
 | 
			
		||||
const char *Fake_glXQueryServerString( Display *dpy, int screen, int name )
 | 
			
		||||
{
 | 
			
		||||
   static char *vendor = "Brian Paul";
 | 
			
		||||
   static char *version = "1.1 Mesa 3.1";
 | 
			
		||||
   static char *version = "1.1 Mesa 3.2 beta 1";
 | 
			
		||||
 | 
			
		||||
   (void) dpy;
 | 
			
		||||
   (void) screen;
 | 
			
		||||
@@ -1467,7 +1475,7 @@ const char *Fake_glXQueryServerString( Display *dpy, int screen, int name )
 | 
			
		||||
const char *Fake_glXGetClientString( Display *dpy, int name )
 | 
			
		||||
{
 | 
			
		||||
   static char *vendor = "Brian Paul";
 | 
			
		||||
   static char *version = "1.1 Mesa 3.1";
 | 
			
		||||
   static char *version = "1.1 Mesa 3.2 beta 1";
 | 
			
		||||
 | 
			
		||||
   (void) dpy;
 | 
			
		||||
 | 
			
		||||
@@ -1510,37 +1518,62 @@ GLboolean Fake_glXSet3DfxModeMESA( GLint mode )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
/*GLfunction Fake_glXGetProcAddress( const GLubyte *procName )*/
 | 
			
		||||
void (*Fake_glXGetProcAddress( const GLubyte *procName ))()
 | 
			
		||||
{
 | 
			
		||||
   typedef void (*GLfunction)();
 | 
			
		||||
   typedef void (*gl_function)();
 | 
			
		||||
   struct proc {
 | 
			
		||||
      const char *name;
 | 
			
		||||
      GLfunction address;
 | 
			
		||||
      gl_function address;
 | 
			
		||||
   };
 | 
			
		||||
   static struct proc procTable[] = {
 | 
			
		||||
      { "glXGetProcAddressEXT", (GLfunction) glXGetProcAddressEXT },
 | 
			
		||||
      { "glXCreateGLXPixmapMESA", (GLfunction) glXCreateGLXPixmapMESA },
 | 
			
		||||
      { "glXReleaseBuffersMESA", (GLfunction) glXReleaseBuffersMESA },
 | 
			
		||||
      { "glXCopySubBufferMESA", (GLfunction) glXCopySubBufferMESA },
 | 
			
		||||
      { "glXSet3DfxModeMESA", (GLfunction) glXSet3DfxModeMESA },
 | 
			
		||||
      /* NOTE: GLX_SGI_video_sync not implemented in Mesa */
 | 
			
		||||
      /* GLX 1.0 functions */
 | 
			
		||||
      { "glXChooseVisual", (gl_function) glXChooseVisual },
 | 
			
		||||
      { "glXCopyContext", (gl_function) glXCopyContext },
 | 
			
		||||
      { "glXCreateContext", (gl_function) glXCreateContext },
 | 
			
		||||
      { "glXCreateGLXPixmap", (gl_function) glXCreateGLXPixmap },
 | 
			
		||||
      { "glXDestroyContext", (gl_function) glXDestroyContext },
 | 
			
		||||
      { "glXDestroyGLXPixmap", (gl_function) glXDestroyGLXPixmap },
 | 
			
		||||
      { "glXGetConfig", (gl_function) glXGetConfig },
 | 
			
		||||
      { "glXGetCurrentContext", (gl_function) glXGetCurrentContext },
 | 
			
		||||
      { "glXGetCurrentDrawable", (gl_function) glXGetCurrentDrawable },
 | 
			
		||||
      { "glXIsDirect", (gl_function) glXIsDirect },
 | 
			
		||||
      { "glXMakeCurrent", (gl_function) glXMakeCurrent },
 | 
			
		||||
      { "glXQueryExtension", (gl_function) glXQueryExtension },
 | 
			
		||||
      { "glXQueryVersion", (gl_function) glXQueryVersion },
 | 
			
		||||
      { "glXSwapBuffers", (gl_function) glXSwapBuffers },
 | 
			
		||||
      { "glXUseXFont", (gl_function) glXUseXFont },
 | 
			
		||||
      { "glXWaitGL", (gl_function) glXWaitGL },
 | 
			
		||||
      { "glXWaitX", (gl_function) glXWaitX },
 | 
			
		||||
 | 
			
		||||
      /* GLX 1.1 functions */
 | 
			
		||||
      { "glXGetClientString", (gl_function) glXGetClientString },
 | 
			
		||||
      { "glXQueryExtensionsString", (gl_function) glXQueryExtensionsString },
 | 
			
		||||
      { "glXQueryServerString", (gl_function) glXQueryServerString },
 | 
			
		||||
 | 
			
		||||
      /* Extensions */
 | 
			
		||||
      { "glXGetProcAddressARB", (gl_function) glXGetProcAddressARB },
 | 
			
		||||
      { "glXCreateGLXPixmapMESA", (gl_function) glXCreateGLXPixmapMESA },
 | 
			
		||||
      { "glXReleaseBuffersMESA", (gl_function) glXReleaseBuffersMESA },
 | 
			
		||||
      { "glXCopySubBufferMESA", (gl_function) glXCopySubBufferMESA },
 | 
			
		||||
      { "glXSet3DfxModeMESA", (gl_function) glXSet3DfxModeMESA },
 | 
			
		||||
      { "glXGetVideoSyncSGI", (gl_function) glXGetVideoSyncSGI },
 | 
			
		||||
      { "glXWaitVideoSyncSGI", (gl_function) glXWaitVideoSyncSGI },
 | 
			
		||||
 | 
			
		||||
      { NULL, NULL }  /* end of list token */
 | 
			
		||||
   };
 | 
			
		||||
   GLuint i;
 | 
			
		||||
 | 
			
		||||
   /* First, look for core library functions */
 | 
			
		||||
   GLfunction f = (GLfunction) gl_get_proc_address(procName);
 | 
			
		||||
   gl_function f = (gl_function) gl_get_proc_address(procName);
 | 
			
		||||
   if (f)
 | 
			
		||||
      return f;
 | 
			
		||||
 | 
			
		||||
   /* Second, look for GLX funtion */
 | 
			
		||||
   for (i = 0; procTable[i].address; i++) {
 | 
			
		||||
      if (strcmp((const char *) procName, procTable[i].name) == 0)
 | 
			
		||||
	  return (GLfunction) procTable[i].address;
 | 
			
		||||
	  return procTable[i].address;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   return NULL;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: glxapi.c,v 1.4 1999/10/27 09:50:10 brianp Exp $ */
 | 
			
		||||
/* $Id: glxapi.c,v 1.4.2.2 2000/02/23 23:06:55 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -126,7 +126,7 @@ void glXDestroyContext( Display *dpy, GLXContext ctx )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
 | 
			
		||||
		     GLuint mask )
 | 
			
		||||
		     unsigned long mask )
 | 
			
		||||
{
 | 
			
		||||
#ifdef REALGLX
 | 
			
		||||
   if (display_has_glx(dpy))
 | 
			
		||||
@@ -419,8 +419,7 @@ GLboolean glXSet3DfxModeMESA( GLint mode )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if 0  /* spec for this not finalized yet */
 | 
			
		||||
void (*glXGetProcAddressEXT( const GLubyte *procName ))()
 | 
			
		||||
void (*glXGetProcAddressARB( const GLubyte *procName ))()
 | 
			
		||||
{
 | 
			
		||||
#ifdef REALGLX
 | 
			
		||||
   return NULL;
 | 
			
		||||
@@ -428,4 +427,4 @@ void (*glXGetProcAddressEXT( const GLubyte *procName ))()
 | 
			
		||||
   return Fake_glXGetProcAddress( procName );
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: realglx.c,v 1.1 1999/08/19 00:55:42 jtg Exp $ */
 | 
			
		||||
/* $Id: realglx.c,v 1.1.1.1.2.1 2000/02/23 23:06:55 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -89,7 +89,7 @@ void Real_glXDestroyContext( Display *dpy, GLXContext ctx )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Real_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
 | 
			
		||||
                          GLuint mask )
 | 
			
		||||
                          unsigned long mask )
 | 
			
		||||
{
 | 
			
		||||
   (void) dpy;
 | 
			
		||||
   (void) src;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: realglx.h,v 1.1 1999/08/19 00:55:42 jtg Exp $ */
 | 
			
		||||
/* $Id: realglx.h,v 1.1.1.1.2.1 2000/02/23 23:06:55 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -54,7 +54,7 @@ extern void Real_glXDestroyContext( Display *dpy, GLXContext ctx );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern void Real_glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
 | 
			
		||||
                                 GLuint mask );
 | 
			
		||||
                                 unsigned long mask );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern Bool Real_glXMakeCurrent( Display *dpy, GLXDrawable drawable,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: xfonts.c,v 1.3 1999/11/11 01:29:28 brianp Exp $ */
 | 
			
		||||
/* $Id: xfonts.c,v 1.2.2.1 1999/12/12 17:03:07 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.3
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
#include "GL/xmesa.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "fakeglx.h"
 | 
			
		||||
#include "mem.h"
 | 
			
		||||
#include "macros.h"
 | 
			
		||||
#include "xmesaP.h"
 | 
			
		||||
 | 
			
		||||
/* Some debugging info.  */
 | 
			
		||||
@@ -338,7 +338,8 @@ void Fake_glXUseXFont( Font font, int first, int count, int listbase )
 | 
			
		||||
      width = ch->rbearing - ch->lbearing;
 | 
			
		||||
      height = ch->ascent + ch->descent;
 | 
			
		||||
      x0 = - ch->lbearing;
 | 
			
		||||
      y0 = ch->descent - 1;
 | 
			
		||||
      y0 = ch->descent - 0;  /* XXX used to subtract 1 here */
 | 
			
		||||
                             /* but that caused a conformace failure */
 | 
			
		||||
      dx = ch->width;
 | 
			
		||||
      dy = 0;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: xmesaP.h,v 1.2 1999/10/08 09:27:12 keithw Exp $ */
 | 
			
		||||
/* $Id: xmesaP.h,v 1.2.2.1 2000/02/22 17:22:42 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -193,7 +193,7 @@ struct xmesa_buffer {
 | 
			
		||||
   GLint ximage_width1;
 | 
			
		||||
   GLushort *ximage_origin2;	/* used for PIXELADDR2 macro */
 | 
			
		||||
   GLint ximage_width2;
 | 
			
		||||
   bgr_t *ximage_origin3;	/* used for PIXELADDR3 macro */
 | 
			
		||||
   GLubyte *ximage_origin3;	/* used for PIXELADDR3 macro */
 | 
			
		||||
   GLint ximage_width3;
 | 
			
		||||
   GLuint *ximage_origin4;	/* used for PIXELADDR4 macro */
 | 
			
		||||
   GLint ximage_width4;
 | 
			
		||||
@@ -492,7 +492,7 @@ static int const kernel1[16] = {
 | 
			
		||||
      ( xmesa->xm_buffer->ximage_origin2 - (Y) * xmesa->xm_buffer->ximage_width2 + (X) )
 | 
			
		||||
 | 
			
		||||
#define PIXELADDR3( X, Y )  \
 | 
			
		||||
      ( xmesa->xm_buffer->ximage_origin3 - (Y) * xmesa->xm_buffer->ximage_width3 + (X) )
 | 
			
		||||
      ((bgr_t *) ( xmesa->xm_buffer->ximage_origin3 - (Y) * xmesa->xm_buffer->ximage_width3 + 3 * (X) ))
 | 
			
		||||
 | 
			
		||||
#define PIXELADDR4( X, Y )  \
 | 
			
		||||
      ( xmesa->xm_buffer->ximage_origin4 - (Y) * xmesa->xm_buffer->ximage_width4 + (X) )
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
# $Id: Makefile.X11,v 1.7 1999/11/11 01:22:28 brianp Exp $
 | 
			
		||||
# $Id: Makefile.X11,v 1.6.2.2 2000/01/23 17:47:00 brianp Exp $
 | 
			
		||||
 | 
			
		||||
# Mesa 3-D graphics library
 | 
			
		||||
# Version:  3.3
 | 
			
		||||
# Version:  3.1
 | 
			
		||||
# Copyright (C) 1995-1999  Brian Paul
 | 
			
		||||
 | 
			
		||||
# Makefile for core library
 | 
			
		||||
@@ -18,13 +18,13 @@ VPATH = RCS
 | 
			
		||||
INCDIR = ../include
 | 
			
		||||
LIBDIR = ../lib
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CORE_SOURCES = \
 | 
			
		||||
	glapi.c \
 | 
			
		||||
	glapinoop.c \
 | 
			
		||||
	accum.c \
 | 
			
		||||
	alpha.c \
 | 
			
		||||
	alphabuf.c \
 | 
			
		||||
	api1.c \
 | 
			
		||||
	api2.c \
 | 
			
		||||
	apiext.c \
 | 
			
		||||
	attrib.c \
 | 
			
		||||
	bbox.c \
 | 
			
		||||
	bitmap.c \
 | 
			
		||||
@@ -37,7 +37,6 @@ CORE_SOURCES = \
 | 
			
		||||
	cva.c \
 | 
			
		||||
	debug_xform.c \
 | 
			
		||||
	depth.c \
 | 
			
		||||
	dispatch.c \
 | 
			
		||||
	dlist.c \
 | 
			
		||||
	drawpix.c \
 | 
			
		||||
	enable.c \
 | 
			
		||||
@@ -50,19 +49,18 @@ CORE_SOURCES = \
 | 
			
		||||
	glmisc.c \
 | 
			
		||||
	hash.c \
 | 
			
		||||
	image.c \
 | 
			
		||||
	imaging.c \
 | 
			
		||||
	light.c \
 | 
			
		||||
	lines.c \
 | 
			
		||||
	logic.c \
 | 
			
		||||
	masking.c \
 | 
			
		||||
	matrix.c \
 | 
			
		||||
	mem.c \
 | 
			
		||||
	mmath.c \
 | 
			
		||||
	mthreads.c \
 | 
			
		||||
	pb.c \
 | 
			
		||||
	pixel.c \
 | 
			
		||||
	pipeline.c \
 | 
			
		||||
	points.c \
 | 
			
		||||
	pointers.c \
 | 
			
		||||
	polygon.c \
 | 
			
		||||
	quads.c \
 | 
			
		||||
	rastpos.c \
 | 
			
		||||
@@ -106,6 +104,11 @@ DRIVER_SOURCES = \
 | 
			
		||||
	X/xmesa4.c \
 | 
			
		||||
	OSmesa/osmesa.c \
 | 
			
		||||
	SVGA/svgamesa.c \
 | 
			
		||||
	SVGA/svgamesa8.c \
 | 
			
		||||
	SVGA/svgamesa15.c \
 | 
			
		||||
	SVGA/svgamesa16.c \
 | 
			
		||||
	SVGA/svgamesa24.c \
 | 
			
		||||
	SVGA/svgamesa32.c \
 | 
			
		||||
	FX/fxapi.c \
 | 
			
		||||
	FX/fxclip.c \
 | 
			
		||||
	FX/fxcva.c \
 | 
			
		||||
@@ -222,7 +225,8 @@ X86/3dnow.o: X86/3dnow.c
 | 
			
		||||
#	@echo "Specify a target configuration"
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	-rm *.o *~ */*.o */*~
 | 
			
		||||
	-rm *.o *~ */*.o */*~ *.lo *.la
 | 
			
		||||
	-rm -rf .libs
 | 
			
		||||
 | 
			
		||||
targets: $(LIBDIR)/$(GL_LIB)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: accum.c,v 1.11 1999/11/11 01:22:25 brianp Exp $ */
 | 
			
		||||
/* $Id: accum.c,v 1.10.2.2 2000/02/02 21:53:59 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -25,13 +25,22 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* $XFree86: xc/lib/GL/mesa/src/accum.c,v 1.3 1999/04/04 00:20:17 dawes Exp $ */
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "accum.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "mem.h"
 | 
			
		||||
#include "macros.h"
 | 
			
		||||
#include "masking.h"
 | 
			
		||||
#include "span.h"
 | 
			
		||||
#include "types.h"
 | 
			
		||||
@@ -92,10 +101,9 @@ void gl_alloc_accum_buffer( GLcontext *ctx )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )
 | 
			
		||||
void gl_ClearAccum( GLcontext *ctx,
 | 
			
		||||
                    GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glAccum");
 | 
			
		||||
 | 
			
		||||
   ctx->Accum.ClearColor[0] = CLAMP( red, -1.0, 1.0 );
 | 
			
		||||
@@ -131,10 +139,8 @@ static void rescale_accum( GLcontext *ctx )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_Accum( GLenum op, GLfloat value )
 | 
			
		||||
void gl_Accum( GLcontext *ctx, GLenum op, GLfloat value )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   GLuint xpos, ypos, width, height, width4;
 | 
			
		||||
   GLfloat acc_scale;
 | 
			
		||||
   GLubyte rgba[MAX_WIDTH][4];
 | 
			
		||||
@@ -332,13 +338,13 @@ _mesa_Accum( GLenum op, GLfloat value )
 | 
			
		||||
         if (ctx->IntegerAccumMode && value != 1.0)
 | 
			
		||||
            rescale_accum(ctx);
 | 
			
		||||
 | 
			
		||||
         if (ctx->IntegerAccumMode) {
 | 
			
		||||
         if (ctx->IntegerAccumMode && ctx->IntegerAccumScaler > 0) {
 | 
			
		||||
            /* build lookup table to avoid many floating point multiplies */
 | 
			
		||||
            const GLfloat mult = ctx->IntegerAccumScaler;
 | 
			
		||||
            static GLchan multTable[32768];
 | 
			
		||||
            static GLfloat prevMult = 0.0;
 | 
			
		||||
            GLuint j;
 | 
			
		||||
            const GLint max = 256 / mult;
 | 
			
		||||
            const GLint max = (GLint) (256 / mult);
 | 
			
		||||
            if (mult != prevMult) {
 | 
			
		||||
               assert(max <= 32768);
 | 
			
		||||
               for (j = 0; j < max; j++)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: attrib.c,v 1.11 1999/11/11 01:22:25 brianp Exp $ */
 | 
			
		||||
/* $Id: attrib.c,v 1.10.2.4 2000/03/10 22:11:15 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -25,16 +25,23 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "attrib.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "glmisc.h"
 | 
			
		||||
#include "enable.h"
 | 
			
		||||
#include "enums.h"
 | 
			
		||||
#include "mem.h"
 | 
			
		||||
#include "macros.h"
 | 
			
		||||
#include "simple_list.h"
 | 
			
		||||
#include "texstate.h"
 | 
			
		||||
#include "types.h"
 | 
			
		||||
@@ -85,7 +92,11 @@ static void copy_texobj_state( struct gl_texture_object *dest,
 | 
			
		||||
   dest->P = src->P;
 | 
			
		||||
   dest->M = src->M;
 | 
			
		||||
   dest->MinMagThresh = src->MinMagThresh;
 | 
			
		||||
   dest->Palette = src->Palette;
 | 
			
		||||
   memcpy( dest->Palette, src->Palette,
 | 
			
		||||
           sizeof(GLubyte) * MAX_TEXTURE_PALETTE_SIZE * 4 );
 | 
			
		||||
   dest->PaletteSize = src->PaletteSize;
 | 
			
		||||
   dest->PaletteIntFormat = src->PaletteIntFormat;
 | 
			
		||||
   dest->PaletteFormat = src->PaletteFormat;
 | 
			
		||||
   dest->Complete = src->Complete;
 | 
			
		||||
   dest->SampleFunc = src->SampleFunc;
 | 
			
		||||
}
 | 
			
		||||
@@ -417,21 +428,43 @@ void gl_PopAttrib( GLcontext* ctx )
 | 
			
		||||
               GLubyte oldAlphaRef = ctx->Color.AlphaRef;
 | 
			
		||||
               GLenum oldBlendSrc = ctx->Color.BlendSrcRGB;
 | 
			
		||||
               GLenum oldBlendDst = ctx->Color.BlendDstRGB;
 | 
			
		||||
	       GLenum oldLogicOp = ctx->Color.LogicOp;
 | 
			
		||||
               MEMCPY( &ctx->Color, attr->data,
 | 
			
		||||
                       sizeof(struct gl_colorbuffer_attrib) );
 | 
			
		||||
               if (ctx->Color.DrawBuffer != oldDrawBuffer) {
 | 
			
		||||
                  _mesa_DrawBuffer( ctx->Color.DrawBuffer);
 | 
			
		||||
                  gl_DrawBuffer(ctx, ctx->Color.DrawBuffer);
 | 
			
		||||
               }
 | 
			
		||||
               if ((ctx->Color.AlphaFunc != oldAlphaFunc ||
 | 
			
		||||
                    ctx->Color.AlphaRef != oldAlphaRef) &&
 | 
			
		||||
                   ctx->Driver.AlphaFunc)
 | 
			
		||||
                  (*ctx->Driver.AlphaFunc)( ctx, ctx->Color.AlphaFunc,
 | 
			
		||||
                                            ctx->Color.AlphaRef / 255.0F);
 | 
			
		||||
               if ((ctx->Color.BlendSrcRGB != oldBlendSrc ||
 | 
			
		||||
                    ctx->Color.BlendSrcRGB != oldBlendDst) &&
 | 
			
		||||
                    ctx->Color.BlendDstRGB != oldBlendDst) &&
 | 
			
		||||
                   ctx->Driver.BlendFunc)
 | 
			
		||||
                  (*ctx->Driver.BlendFunc)( ctx, ctx->Color.BlendSrcRGB,
 | 
			
		||||
                                            ctx->Color.BlendDstRGB);
 | 
			
		||||
	       if (ctx->Color.LogicOp != oldLogicOp &&
 | 
			
		||||
		   ctx->Driver.LogicOpcode) {
 | 
			
		||||
		  ctx->Driver.LogicOpcode( ctx, ctx->Color.LogicOp );
 | 
			
		||||
               }
 | 
			
		||||
               if (ctx->Visual->RGBAflag) {
 | 
			
		||||
                  GLubyte r = (GLint) (ctx->Color.ClearColor[0] * 255.0F);
 | 
			
		||||
                  GLubyte g = (GLint) (ctx->Color.ClearColor[1] * 255.0F);
 | 
			
		||||
                  GLubyte b = (GLint) (ctx->Color.ClearColor[2] * 255.0F);
 | 
			
		||||
                  GLubyte a = (GLint) (ctx->Color.ClearColor[3] * 255.0F);
 | 
			
		||||
                  (*ctx->Driver.ClearColor)( ctx, r, g, b, a );
 | 
			
		||||
                  if ((ctx->Color.AlphaFunc != oldAlphaFunc ||
 | 
			
		||||
                       ctx->Color.AlphaRef != oldAlphaRef) &&
 | 
			
		||||
                      ctx->Driver.AlphaFunc)
 | 
			
		||||
                     (*ctx->Driver.AlphaFunc)( ctx, ctx->Color.AlphaFunc,
 | 
			
		||||
                                               ctx->Color.AlphaRef / 255.0F);
 | 
			
		||||
                  if (ctx->Driver.ColorMask) {
 | 
			
		||||
                     (*ctx->Driver.ColorMask)(ctx,
 | 
			
		||||
                                              ctx->Color.ColorMask[0],
 | 
			
		||||
                                              ctx->Color.ColorMask[1],
 | 
			
		||||
                                              ctx->Color.ColorMask[2],
 | 
			
		||||
                                              ctx->Color.ColorMask[3]);
 | 
			
		||||
                  }
 | 
			
		||||
               }
 | 
			
		||||
               else {
 | 
			
		||||
                  (*ctx->Driver.ClearIndex)( ctx, ctx->Color.ClearIndex);
 | 
			
		||||
               }
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
         case GL_CURRENT_BIT:
 | 
			
		||||
@@ -460,7 +493,7 @@ void gl_PopAttrib( GLcontext* ctx )
 | 
			
		||||
 | 
			
		||||
#define TEST_AND_UPDATE(VALUE, NEWVALUE, ENUM)		\
 | 
			
		||||
	if ((VALUE) != (NEWVALUE)) {			\
 | 
			
		||||
	   _mesa_set_enable( ctx, ENUM, (NEWVALUE) );	\
 | 
			
		||||
	   gl_set_enable( ctx, ENUM, (NEWVALUE) );	\
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
               TEST_AND_UPDATE(ctx->Color.AlphaEnabled, enable->AlphaTest, GL_ALPHA_TEST);
 | 
			
		||||
@@ -470,7 +503,7 @@ void gl_PopAttrib( GLcontext* ctx )
 | 
			
		||||
                  GLuint i;
 | 
			
		||||
                  for (i=0;i<MAX_CLIP_PLANES;i++) {
 | 
			
		||||
                     if (ctx->Transform.ClipEnabled[i] != enable->ClipPlane[i])
 | 
			
		||||
                        _mesa_set_enable( ctx, (GLenum) (GL_CLIP_PLANE0 + i), enable->ClipPlane[i] );
 | 
			
		||||
                        gl_set_enable( ctx, (GLenum) (GL_CLIP_PLANE0 + i), enable->ClipPlane[i] );
 | 
			
		||||
                  }
 | 
			
		||||
               }
 | 
			
		||||
               TEST_AND_UPDATE(ctx->Light.ColorMaterialEnabled, enable->ColorMaterial, GL_COLOR_MATERIAL);
 | 
			
		||||
@@ -585,7 +618,7 @@ void gl_PopAttrib( GLcontext* ctx )
 | 
			
		||||
                  (*ctx->Driver.Fogfv)( ctx, GL_FOG_INDEX, &index );
 | 
			
		||||
                  (*ctx->Driver.Fogfv)( ctx, GL_FOG_COLOR, ctx->Fog.Color );
 | 
			
		||||
               }
 | 
			
		||||
	       ctx->Enabled &= ENABLE_FOG;
 | 
			
		||||
	       ctx->Enabled &= ~ENABLE_FOG;
 | 
			
		||||
	       if (ctx->Fog.Enabled) ctx->Enabled |= ENABLE_FOG;
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
@@ -613,7 +646,13 @@ void gl_PopAttrib( GLcontext* ctx )
 | 
			
		||||
               }
 | 
			
		||||
               (*ctx->Driver.Enable)( ctx, GL_LIGHTING, ctx->Light.Enabled );
 | 
			
		||||
            }
 | 
			
		||||
	    ctx->Enabled &= ENABLE_LIGHT;
 | 
			
		||||
            if (ctx->Light.ShadeModel == GL_FLAT)
 | 
			
		||||
               ctx->TriangleCaps |= DD_FLATSHADE;
 | 
			
		||||
            else
 | 
			
		||||
               ctx->TriangleCaps &= ~DD_FLATSHADE;
 | 
			
		||||
            if (ctx->Driver.ShadeModel)
 | 
			
		||||
               (*ctx->Driver.ShadeModel)(ctx, ctx->Light.ShadeModel);
 | 
			
		||||
	    ctx->Enabled &= ~ENABLE_LIGHT;
 | 
			
		||||
	    if (ctx->Light.Enabled && !is_empty_list(&ctx->Light.EnabledList))
 | 
			
		||||
	       ctx->Enabled |= ENABLE_LIGHT;
 | 
			
		||||
            break;
 | 
			
		||||
@@ -731,8 +770,8 @@ void gl_PopAttrib( GLcontext* ctx )
 | 
			
		||||
	    struct gl_viewport_attrib *v = 
 | 
			
		||||
	       (struct gl_viewport_attrib *)attr->data;
 | 
			
		||||
	    
 | 
			
		||||
	    _mesa_Viewport( v->X, v->Y, v->Width, v->Height );
 | 
			
		||||
	    _mesa_DepthRange( v->Near, v->Far );
 | 
			
		||||
	    gl_Viewport( ctx, v->X, v->Y, v->Width, v->Height );
 | 
			
		||||
	    gl_DepthRange( ctx, v->Near, v->Far );
 | 
			
		||||
	    break;
 | 
			
		||||
	 }
 | 
			
		||||
         default:
 | 
			
		||||
@@ -846,37 +885,3 @@ void gl_PopClientAttrib( GLcontext *ctx )
 | 
			
		||||
   ctx->NewState = NEW_ALL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_PushAttrib( GLbitfield mask )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   gl_PushAttrib(ctx, mask);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_PopAttrib( void )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   gl_PopAttrib(ctx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_PushClientAttrib( GLbitfield mask )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   gl_PushClientAttrib(ctx, mask);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_PopClientAttrib( void )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   gl_PopClientAttrib(ctx);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
/* $Id: blend.c,v 1.8 1999/11/11 01:22:25 brianp Exp $ */
 | 
			
		||||
/* $Id: blend.c,v 1.7.2.1 2000/02/21 14:59:41 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * Version:  3.2
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
@@ -29,7 +29,13 @@
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "alphabuf.h"
 | 
			
		||||
#include "blend.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
@@ -41,9 +47,8 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void _mesa_BlendFunc( GLenum sfactor, GLenum dfactor )
 | 
			
		||||
void gl_BlendFunc( GLcontext *ctx, GLenum sfactor, GLenum dfactor )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFunc");
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE))
 | 
			
		||||
@@ -103,10 +108,9 @@ void _mesa_BlendFunc( GLenum sfactor, GLenum dfactor )
 | 
			
		||||
 | 
			
		||||
/* GL_INGR_blend_func_separate */
 | 
			
		||||
void
 | 
			
		||||
_mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB,
 | 
			
		||||
                             GLenum sfactorA, GLenum dfactorA )
 | 
			
		||||
gl_BlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, GLenum dfactorRGB,
 | 
			
		||||
                      GLenum sfactorA, GLenum dfactorA )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendFuncSeparate");
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE))
 | 
			
		||||
@@ -210,10 +214,8 @@ _mesa_BlendFuncSeparateINGR( GLenum sfactorRGB, GLenum dfactorRGB,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* This is really an extension function! */
 | 
			
		||||
void
 | 
			
		||||
_mesa_BlendEquationEXT( GLenum mode )
 | 
			
		||||
void gl_BlendEquation( GLcontext *ctx, GLenum mode )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBlendEquation");
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE))
 | 
			
		||||
@@ -254,10 +256,9 @@ _mesa_BlendEquationEXT( GLenum mode )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_BlendColorEXT( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
 | 
			
		||||
void gl_BlendColor( GLcontext *ctx, GLclampf red, GLclampf green,
 | 
			
		||||
		    GLclampf blue, GLclampf alpha )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   ctx->Color.BlendColor[0] = CLAMP( red,   0.0F, 1.0F );
 | 
			
		||||
   ctx->Color.BlendColor[1] = CLAMP( green, 0.0F, 1.0F );
 | 
			
		||||
   ctx->Color.BlendColor[2] = CLAMP( blue,  0.0F, 1.0F );
 | 
			
		||||
@@ -475,7 +476,7 @@ static void blend_general( GLcontext *ctx, GLuint n, const GLubyte mask[],
 | 
			
		||||
               sR = sG = sB = 1.0F - (GLfloat) Ad * ascale;
 | 
			
		||||
               break;
 | 
			
		||||
            case GL_SRC_ALPHA_SATURATE:
 | 
			
		||||
               if (As < 1.0F - (GLfloat) Ad * ascale) {
 | 
			
		||||
               if (As * ascale < 1.0F - (GLfloat) Ad * ascale) {
 | 
			
		||||
                  sR = sG = sB = (GLfloat) As * ascale;
 | 
			
		||||
               }
 | 
			
		||||
               else {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: clip.c,v 1.5 1999/11/11 01:22:25 brianp Exp $ */
 | 
			
		||||
/* $Id: clip.c,v 1.4.2.1 1999/11/25 16:51:24 keithw Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.3
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
@@ -25,10 +25,19 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "clip.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "macros.h"
 | 
			
		||||
@@ -42,6 +51,15 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CLIP_RGBA0    0x1
 | 
			
		||||
#define CLIP_RGBA1    0x2
 | 
			
		||||
#define CLIP_TEX0     0x4
 | 
			
		||||
#define CLIP_TEX1     0x8
 | 
			
		||||
#define CLIP_INDEX0   0x10
 | 
			
		||||
#define CLIP_INDEX1   0x20
 | 
			
		||||
#define CLIP_FOG_COORD 0x40
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Linear interpolation between A and B: */
 | 
			
		||||
#define LINTERP( T, A, B )   ( (A) + (T) * ( (B) - (A) ) )
 | 
			
		||||
 | 
			
		||||
@@ -58,16 +76,7 @@ do {								\
 | 
			
		||||
} while(0)
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CLIP_RGBA0    0x1
 | 
			
		||||
#define CLIP_RGBA1    0x2
 | 
			
		||||
#define CLIP_TEX0     0x4
 | 
			
		||||
#define CLIP_TEX1     0x8
 | 
			
		||||
#define CLIP_INDEX0   0x10
 | 
			
		||||
#define CLIP_INDEX1   0x20
 | 
			
		||||
 | 
			
		||||
static clip_interp_func clip_interp_tab[0x40]; 
 | 
			
		||||
static clip_interp_func clip_interp_tab[0x80]; 
 | 
			
		||||
 | 
			
		||||
#define IND 0
 | 
			
		||||
#define NAME clip_nil
 | 
			
		||||
@@ -113,6 +122,50 @@ static clip_interp_func clip_interp_tab[0x40];
 | 
			
		||||
#define NAME clipINDEX0_INDEX1
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clip_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_RGBA0|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipRGBA0_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipRGBA0_RGBA1_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipTEX0_RGBA0_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipTEX0_RGBA0_RGBA1_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipTEX1_TEX0_RGBA0_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_TEX0|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipTEX0_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_TEX1|CLIP_TEX0|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipTEX1_TEX0_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipTEX1_TEX0_RGBA0_RGBA1_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_INDEX0|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipINDEX0_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
#define IND (CLIP_INDEX0|CLIP_INDEX1|CLIP_FOG_COORD)
 | 
			
		||||
#define NAME clipINDEX0_INDEX1_FOG
 | 
			
		||||
#include "interp_tmp.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -122,17 +175,9 @@ static clip_interp_func clip_interp_tab[0x40];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_ClipPlane( GLenum plane, const GLdouble *eq )
 | 
			
		||||
void gl_ClipPlane( GLcontext* ctx, GLenum plane, const GLfloat *equation )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   GLint p;
 | 
			
		||||
   GLfloat equation[4];
 | 
			
		||||
 | 
			
		||||
   equation[0] = eq[0];
 | 
			
		||||
   equation[1] = eq[1];
 | 
			
		||||
   equation[2] = eq[2];
 | 
			
		||||
   equation[3] = eq[3];
 | 
			
		||||
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glClipPlane");
 | 
			
		||||
 | 
			
		||||
@@ -183,10 +228,8 @@ void gl_update_userclip( GLcontext *ctx )
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_GetClipPlane( GLenum plane, GLdouble *equation )
 | 
			
		||||
void gl_GetClipPlane( GLcontext* ctx, GLenum plane, GLdouble *equation )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   GLint p;
 | 
			
		||||
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetClipPlane");
 | 
			
		||||
@@ -353,6 +396,8 @@ void gl_update_clipmask( GLcontext *ctx )
 | 
			
		||||
	 mask |= CLIP_INDEX1;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (ctx->FogMode == FOG_FRAGMENT && (ctx->TriangleCaps & DD_CLIP_FOG_COORD))
 | 
			
		||||
      mask |= CLIP_FOG_COORD;
 | 
			
		||||
   
 | 
			
		||||
   ctx->ClipInterpFunc = clip_interp_tab[mask];
 | 
			
		||||
   ctx->poly_clip_tab = gl_poly_clip_tab[0];
 | 
			
		||||
@@ -448,11 +493,22 @@ void gl_init_clip(void)
 | 
			
		||||
   clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0] = clipTEX1_TEX0_RGBA0;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1] = 
 | 
			
		||||
      clipTEX1_TEX0_RGBA0_RGBA1;
 | 
			
		||||
 | 
			
		||||
   clip_interp_tab[CLIP_TEX0] = clipTEX0;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX1|CLIP_TEX0] = clipTEX1_TEX0;
 | 
			
		||||
 | 
			
		||||
   clip_interp_tab[CLIP_INDEX0] = clipINDEX0;
 | 
			
		||||
   clip_interp_tab[CLIP_INDEX0|CLIP_INDEX1] = clipINDEX0_INDEX1;
 | 
			
		||||
 | 
			
		||||
   clip_interp_tab[CLIP_FOG_COORD] = clip_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_RGBA0|CLIP_FOG_COORD] = clipRGBA0_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD] = clipRGBA0_RGBA1_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD] = clipTEX0_RGBA0_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD] = clipTEX0_RGBA0_RGBA1_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_FOG_COORD] = clipTEX1_TEX0_RGBA0_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_RGBA0|CLIP_RGBA1|CLIP_FOG_COORD] = 
 | 
			
		||||
      clipTEX1_TEX0_RGBA0_RGBA1_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX0|CLIP_FOG_COORD] = clipTEX0_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_TEX1|CLIP_TEX0|CLIP_FOG_COORD] = clipTEX1_TEX0_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_INDEX0|CLIP_FOG_COORD] = clipINDEX0_FOG;
 | 
			
		||||
   clip_interp_tab[CLIP_INDEX0|CLIP_INDEX1|CLIP_FOG_COORD] = clipINDEX0_INDEX1_FOG;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: colortab.c,v 1.4 1999/11/11 01:22:25 brianp Exp $ */
 | 
			
		||||
/* $Id: colortab.c,v 1.3.2.1 2000/02/28 20:40:18 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -23,15 +23,20 @@
 | 
			
		||||
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
/* $XFree86: xc/lib/GL/mesa/src/colortab.c,v 1.2 1999/04/04 00:20:21 dawes Exp $ */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#ifdef XFree86Server
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "colortab.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "image.h"
 | 
			
		||||
#include "macros.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -40,8 +45,7 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Return GL_TRUE if k is a power of two, else return GL_FALSE.
 | 
			
		||||
 */
 | 
			
		||||
static GLboolean
 | 
			
		||||
power_of_two( GLint k )
 | 
			
		||||
static GLboolean power_of_two( GLint k )
 | 
			
		||||
{
 | 
			
		||||
   GLint i, m = 1;
 | 
			
		||||
   for (i=0; i<32; i++) {
 | 
			
		||||
@@ -53,8 +57,7 @@ power_of_two( GLint k )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static GLint
 | 
			
		||||
decode_internal_format( GLint format )
 | 
			
		||||
static GLint decode_internal_format( GLint format )
 | 
			
		||||
{
 | 
			
		||||
   switch (format) {
 | 
			
		||||
      case GL_ALPHA:
 | 
			
		||||
@@ -111,171 +114,81 @@ decode_internal_format( GLint format )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void 
 | 
			
		||||
_mesa_ColorTable( GLenum target, GLenum internalFormat,
 | 
			
		||||
                  GLsizei width, GLenum format, GLenum type,
 | 
			
		||||
                  const GLvoid *table )
 | 
			
		||||
void gl_ColorTable( GLcontext *ctx, GLenum target,
 | 
			
		||||
                    GLenum internalFormat, struct gl_image *table )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
 | 
			
		||||
   struct gl_texture_object *texObj;
 | 
			
		||||
   struct gl_palette *palette;
 | 
			
		||||
   GLboolean proxy = GL_FALSE;
 | 
			
		||||
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorTable");
 | 
			
		||||
 | 
			
		||||
   switch (target) {
 | 
			
		||||
      case GL_TEXTURE_1D:
 | 
			
		||||
         texObj = texUnit->CurrentD[1];
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_2D:
 | 
			
		||||
         texObj = texUnit->CurrentD[2];
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_3D:
 | 
			
		||||
         texObj = texUnit->CurrentD[3];
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_1D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy1D;
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         proxy = GL_TRUE;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_2D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy2D;
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         proxy = GL_TRUE;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_3D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy3D;
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         proxy = GL_TRUE;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_SHARED_TEXTURE_PALETTE_EXT:
 | 
			
		||||
         texObj = NULL;
 | 
			
		||||
         palette = &ctx->Texture.Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      default:
 | 
			
		||||
         gl_error(ctx, GL_INVALID_ENUM, "glColorTable(target)");
 | 
			
		||||
         return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   assert(palette);
 | 
			
		||||
 | 
			
		||||
   if (!gl_is_legal_format_and_type(format, type)) {
 | 
			
		||||
      gl_error(ctx, GL_INVALID_ENUM, "glColorTable(format or type)");
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (decode_internal_format(internalFormat) < 0) {
 | 
			
		||||
      gl_error( ctx, GL_INVALID_ENUM, "glColorTable(internalFormat)" );
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (width < 1 || width > MAX_TEXTURE_PALETTE_SIZE || !power_of_two(width)) {
 | 
			
		||||
      gl_error(ctx, GL_INVALID_VALUE, "glColorTable(width)");
 | 
			
		||||
      if (proxy) {
 | 
			
		||||
         palette->Size = 0;
 | 
			
		||||
         palette->IntFormat = (GLenum) 0;
 | 
			
		||||
         palette->Format = (GLenum) 0;
 | 
			
		||||
      }
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   palette->Size = width;
 | 
			
		||||
   palette->IntFormat = internalFormat;
 | 
			
		||||
   palette->Format = (GLenum) decode_internal_format(internalFormat);
 | 
			
		||||
   if (!proxy) {
 | 
			
		||||
      _mesa_unpack_ubyte_color_span(ctx, width, palette->Format,
 | 
			
		||||
                                    palette->Table,  /* dest */
 | 
			
		||||
                                    format, type, table,
 | 
			
		||||
                                    &ctx->Unpack, GL_FALSE);
 | 
			
		||||
   }
 | 
			
		||||
   if (texObj) {
 | 
			
		||||
      /* per-texture object palette */
 | 
			
		||||
      if (ctx->Driver.UpdateTexturePalette) {
 | 
			
		||||
         (*ctx->Driver.UpdateTexturePalette)( ctx, texObj );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* shared texture palette */
 | 
			
		||||
      if (ctx->Driver.UpdateTexturePalette) {
 | 
			
		||||
         (*ctx->Driver.UpdateTexturePalette)( ctx, NULL );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_ColorSubTable( GLenum target, GLsizei start,
 | 
			
		||||
                     GLsizei count, GLenum format, GLenum type,
 | 
			
		||||
                     const GLvoid *table )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
 | 
			
		||||
   struct gl_texture_object *texObj;
 | 
			
		||||
   struct gl_palette *palette;
 | 
			
		||||
   GLint comps;
 | 
			
		||||
   GLubyte *dest;
 | 
			
		||||
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glColorSubTable");
 | 
			
		||||
 | 
			
		||||
   switch (target) {
 | 
			
		||||
      case GL_TEXTURE_1D:
 | 
			
		||||
         texObj = texUnit->CurrentD[1];
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_2D:
 | 
			
		||||
         texObj = texUnit->CurrentD[2];
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_3D:
 | 
			
		||||
      case GL_TEXTURE_3D_EXT:
 | 
			
		||||
         texObj = texUnit->CurrentD[3];
 | 
			
		||||
         palette = &texObj->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_1D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy1D;
 | 
			
		||||
         proxy = GL_TRUE;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_2D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy2D;
 | 
			
		||||
         proxy = GL_TRUE;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_3D_EXT:
 | 
			
		||||
         texObj = ctx->Texture.Proxy3D;
 | 
			
		||||
         proxy = GL_TRUE;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_SHARED_TEXTURE_PALETTE_EXT:
 | 
			
		||||
         texObj = NULL;
 | 
			
		||||
         palette = &ctx->Texture.Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      default:
 | 
			
		||||
         gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(target)");
 | 
			
		||||
         gl_error(ctx, GL_INVALID_ENUM, "glColorTableEXT(target)");
 | 
			
		||||
         return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   assert(palette);
 | 
			
		||||
   /* internalformat = just like glTexImage */
 | 
			
		||||
 | 
			
		||||
   if (!gl_is_legal_format_and_type(format, type)) {
 | 
			
		||||
      gl_error(ctx, GL_INVALID_ENUM, "glColorSubTable(format or type)");
 | 
			
		||||
   if (table->Width < 1 || table->Width > MAX_TEXTURE_PALETTE_SIZE
 | 
			
		||||
       || !power_of_two(table->Width)) {
 | 
			
		||||
      gl_error(ctx, GL_INVALID_VALUE, "glColorTableEXT(width)");
 | 
			
		||||
      if (proxy) {
 | 
			
		||||
         texObj->PaletteSize = 0;
 | 
			
		||||
         texObj->PaletteIntFormat = (GLenum) 0;
 | 
			
		||||
         texObj->PaletteFormat = (GLenum) 0;
 | 
			
		||||
      }
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (count < 1) {
 | 
			
		||||
      gl_error(ctx, GL_INVALID_VALUE, "glColorSubTable(count)");
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   comps = gl_components_in_format(format);
 | 
			
		||||
   assert(comps > 0);  /* error should be caught sooner */
 | 
			
		||||
 | 
			
		||||
   if (start + count > palette->Size) {
 | 
			
		||||
      gl_error(ctx, GL_INVALID_VALUE, "glColorSubTable(count)");
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
   dest = palette->Table + start * comps * sizeof(GLubyte);
 | 
			
		||||
   _mesa_unpack_ubyte_color_span(ctx, count, palette->Format, dest,
 | 
			
		||||
                                 format, type, table,
 | 
			
		||||
                                 &ctx->Unpack, GL_FALSE);
 | 
			
		||||
 | 
			
		||||
   if (texObj) {
 | 
			
		||||
      /* per-texture object palette */
 | 
			
		||||
      if (ctx->Driver.UpdateTexturePalette) {
 | 
			
		||||
         (*ctx->Driver.UpdateTexturePalette)( ctx, texObj );
 | 
			
		||||
      texObj->PaletteSize = table->Width;
 | 
			
		||||
      texObj->PaletteIntFormat = internalFormat;
 | 
			
		||||
      texObj->PaletteFormat = (GLenum) decode_internal_format(internalFormat);
 | 
			
		||||
      if (!proxy) {
 | 
			
		||||
         MEMCPY(texObj->Palette, table->Data, table->Width*table->Components);
 | 
			
		||||
         if (ctx->Driver.UpdateTexturePalette) {
 | 
			
		||||
            (*ctx->Driver.UpdateTexturePalette)( ctx, texObj );
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* shared texture palette */
 | 
			
		||||
      ctx->Texture.PaletteSize = table->Width;
 | 
			
		||||
      ctx->Texture.PaletteIntFormat = internalFormat;
 | 
			
		||||
      ctx->Texture.PaletteFormat = (GLenum) decode_internal_format(internalFormat);
 | 
			
		||||
      MEMCPY(ctx->Texture.Palette, table->Data, table->Width*table->Components);
 | 
			
		||||
      if (ctx->Driver.UpdateTexturePalette) {
 | 
			
		||||
         (*ctx->Driver.UpdateTexturePalette)( ctx, NULL );
 | 
			
		||||
      }
 | 
			
		||||
@@ -284,96 +197,38 @@ _mesa_ColorSubTable( GLenum target, GLsizei start,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_GetColorTable( GLenum target, GLenum format,
 | 
			
		||||
                     GLenum type, GLvoid *table )
 | 
			
		||||
void gl_ColorSubTable( GLcontext *ctx, GLenum target,
 | 
			
		||||
                       GLsizei start, struct gl_image *data )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
 | 
			
		||||
   struct gl_palette *palette;
 | 
			
		||||
   GLubyte rgba[MAX_TEXTURE_PALETTE_SIZE][4];
 | 
			
		||||
   GLint i;
 | 
			
		||||
   /* XXX TODO */
 | 
			
		||||
   gl_problem(ctx, "glColorSubTableEXT not implemented");
 | 
			
		||||
   (void) target;
 | 
			
		||||
   (void) start;
 | 
			
		||||
   (void) data;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gl_GetColorTable( GLcontext *ctx, GLenum target, GLenum format,
 | 
			
		||||
                       GLenum type, GLvoid *table )
 | 
			
		||||
{
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetBooleanv");
 | 
			
		||||
 | 
			
		||||
   switch (target) {
 | 
			
		||||
      case GL_TEXTURE_1D:
 | 
			
		||||
         palette = &texUnit->CurrentD[1]->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_2D:
 | 
			
		||||
         palette = &texUnit->CurrentD[2]->Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_3D:
 | 
			
		||||
         palette = &texUnit->CurrentD[3]->Palette;
 | 
			
		||||
      case GL_TEXTURE_3D_EXT:
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_SHARED_TEXTURE_PALETTE_EXT:
 | 
			
		||||
         palette = &ctx->Texture.Palette;
 | 
			
		||||
         break;
 | 
			
		||||
      default:
 | 
			
		||||
         gl_error(ctx, GL_INVALID_ENUM, "glGetColorTable(target)");
 | 
			
		||||
         gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableEXT(target)");
 | 
			
		||||
         return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   assert(palette);
 | 
			
		||||
 | 
			
		||||
   switch (palette->Format) {
 | 
			
		||||
      case GL_ALPHA:
 | 
			
		||||
         for (i = 0; i < palette->Size; i++) {
 | 
			
		||||
            rgba[i][RCOMP] = 0;
 | 
			
		||||
            rgba[i][GCOMP] = 0;
 | 
			
		||||
            rgba[i][BCOMP] = 0;
 | 
			
		||||
            rgba[i][ACOMP] = palette->Table[i];
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_LUMINANCE:
 | 
			
		||||
         for (i = 0; i < palette->Size; i++) {
 | 
			
		||||
            rgba[i][RCOMP] = palette->Table[i];
 | 
			
		||||
            rgba[i][GCOMP] = palette->Table[i];
 | 
			
		||||
            rgba[i][BCOMP] = palette->Table[i];
 | 
			
		||||
            rgba[i][ACOMP] = 255;
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_LUMINANCE_ALPHA:
 | 
			
		||||
         for (i = 0; i < palette->Size; i++) {
 | 
			
		||||
            rgba[i][RCOMP] = palette->Table[i*2+0];
 | 
			
		||||
            rgba[i][GCOMP] = palette->Table[i*2+0];
 | 
			
		||||
            rgba[i][BCOMP] = palette->Table[i*2+0];
 | 
			
		||||
            rgba[i][ACOMP] = palette->Table[i*2+1];
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_INTENSITY:
 | 
			
		||||
         for (i = 0; i < palette->Size; i++) {
 | 
			
		||||
            rgba[i][RCOMP] = palette->Table[i];
 | 
			
		||||
            rgba[i][GCOMP] = palette->Table[i];
 | 
			
		||||
            rgba[i][BCOMP] = palette->Table[i];
 | 
			
		||||
            rgba[i][ACOMP] = 255;
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_RGB:
 | 
			
		||||
         for (i = 0; i < palette->Size; i++) {
 | 
			
		||||
            rgba[i][RCOMP] = palette->Table[i*3+0];
 | 
			
		||||
            rgba[i][GCOMP] = palette->Table[i*3+1];
 | 
			
		||||
            rgba[i][BCOMP] = palette->Table[i*3+2];
 | 
			
		||||
            rgba[i][ACOMP] = 255;
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_RGBA:
 | 
			
		||||
         for (i = 0; i < palette->Size; i++) {
 | 
			
		||||
            rgba[i][RCOMP] = palette->Table[i*4+0];
 | 
			
		||||
            rgba[i][GCOMP] = palette->Table[i*4+1];
 | 
			
		||||
            rgba[i][BCOMP] = palette->Table[i*4+2];
 | 
			
		||||
            rgba[i][ACOMP] = palette->Table[i*4+3];
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
      default:
 | 
			
		||||
         gl_problem(ctx, "bad palette format in glGetColorTable");
 | 
			
		||||
         return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   gl_pack_rgba_span(ctx, palette->Size, (const GLubyte (*)[]) rgba,
 | 
			
		||||
                     format, type, table, &ctx->Pack, GL_FALSE);
 | 
			
		||||
 | 
			
		||||
   gl_problem(ctx, "glGetColorTable not implemented!");
 | 
			
		||||
   gl_problem(ctx, "glGetColorTableEXT not implemented!");
 | 
			
		||||
   (void) format;
 | 
			
		||||
   (void) type;
 | 
			
		||||
   (void) table;
 | 
			
		||||
@@ -381,37 +236,46 @@ _mesa_GetColorTable( GLenum target, GLenum format,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_GetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params )
 | 
			
		||||
void gl_GetColorTableParameterfv( GLcontext *ctx, GLenum target,
 | 
			
		||||
                                  GLenum pname, GLfloat *params )
 | 
			
		||||
{
 | 
			
		||||
   GLint iparams[10];
 | 
			
		||||
   _mesa_GetColorTableParameteriv( target, pname, iparams );
 | 
			
		||||
 | 
			
		||||
   gl_GetColorTableParameteriv( ctx, target, pname, iparams );
 | 
			
		||||
   *params = (GLfloat) iparams[0];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params )
 | 
			
		||||
void gl_GetColorTableParameteriv( GLcontext *ctx, GLenum target,
 | 
			
		||||
                                  GLenum pname, GLint *params )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
 | 
			
		||||
   struct gl_palette *palette;
 | 
			
		||||
   struct gl_texture_object *texObj;
 | 
			
		||||
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END(ctx, "glGetColorTableParameter");
 | 
			
		||||
 | 
			
		||||
   switch (target) {
 | 
			
		||||
      case GL_TEXTURE_1D:
 | 
			
		||||
         palette = &texUnit->CurrentD[1]->Palette;
 | 
			
		||||
         texObj = texUnit->CurrentD[1];
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_2D:
 | 
			
		||||
         palette = &texUnit->CurrentD[2]->Palette;
 | 
			
		||||
         texObj = texUnit->CurrentD[2];
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_TEXTURE_3D:
 | 
			
		||||
         palette = &texUnit->CurrentD[3]->Palette;
 | 
			
		||||
      case GL_TEXTURE_3D_EXT:
 | 
			
		||||
         texObj = texUnit->CurrentD[3];
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_1D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy1D;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_2D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy2D;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_PROXY_TEXTURE_3D:
 | 
			
		||||
         texObj = ctx->Texture.Proxy3D;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_SHARED_TEXTURE_PALETTE_EXT:
 | 
			
		||||
         palette = &ctx->Texture.Palette;
 | 
			
		||||
         texObj = NULL;
 | 
			
		||||
         break;
 | 
			
		||||
      default:
 | 
			
		||||
         gl_error(ctx, GL_INVALID_ENUM, "glGetColorTableParameter(target)");
 | 
			
		||||
@@ -419,28 +283,34 @@ _mesa_GetColorTableParameteriv( GLenum target, GLenum pname, GLint *params )
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   switch (pname) {
 | 
			
		||||
      case GL_COLOR_TABLE_FORMAT:
 | 
			
		||||
         *params = palette->IntFormat;
 | 
			
		||||
      case GL_COLOR_TABLE_FORMAT_EXT:
 | 
			
		||||
         if (texObj)
 | 
			
		||||
            *params = texObj->PaletteIntFormat;
 | 
			
		||||
         else
 | 
			
		||||
            *params = ctx->Texture.PaletteIntFormat;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_COLOR_TABLE_WIDTH:
 | 
			
		||||
         *params = palette->Size;
 | 
			
		||||
      case GL_COLOR_TABLE_WIDTH_EXT:
 | 
			
		||||
         if (texObj)
 | 
			
		||||
            *params = texObj->PaletteSize;
 | 
			
		||||
         else
 | 
			
		||||
            *params = ctx->Texture.PaletteSize;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_COLOR_TABLE_RED_SIZE:
 | 
			
		||||
      case GL_COLOR_TABLE_RED_SIZE_EXT:
 | 
			
		||||
         *params = 8;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_COLOR_TABLE_GREEN_SIZE:
 | 
			
		||||
      case GL_COLOR_TABLE_GREEN_SIZE_EXT:
 | 
			
		||||
         *params = 8;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_COLOR_TABLE_BLUE_SIZE:
 | 
			
		||||
      case GL_COLOR_TABLE_BLUE_SIZE_EXT:
 | 
			
		||||
         *params = 8;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_COLOR_TABLE_ALPHA_SIZE:
 | 
			
		||||
      case GL_COLOR_TABLE_ALPHA_SIZE_EXT:
 | 
			
		||||
         *params = 8;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_COLOR_TABLE_LUMINANCE_SIZE:
 | 
			
		||||
      case GL_COLOR_TABLE_LUMINANCE_SIZE_EXT:
 | 
			
		||||
         *params = 8;
 | 
			
		||||
         break;
 | 
			
		||||
      case GL_COLOR_TABLE_INTENSITY_SIZE:
 | 
			
		||||
      case GL_COLOR_TABLE_INTENSITY_SIZE_EXT:
 | 
			
		||||
         *params = 8;
 | 
			
		||||
         break;
 | 
			
		||||
      default:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: context.c,v 1.19 1999/11/11 01:22:25 brianp Exp $ */
 | 
			
		||||
/* $Id: context.c,v 1.18.2.8 2000/03/06 16:59:26 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.3
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
@@ -25,6 +25,8 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* $XFree86: xc/lib/GL/mesa/src/context.c,v 1.4 1999/04/04 00:20:21 dawes Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * If multi-threading is enabled (-DTHREADS) then each thread has it's
 | 
			
		||||
 * own rendering context.  A thread obtains the pointer to its GLcontext
 | 
			
		||||
@@ -34,34 +36,43 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "accum.h"
 | 
			
		||||
#include "alphabuf.h"
 | 
			
		||||
#include "api.h"
 | 
			
		||||
#include "clip.h"
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "cva.h"
 | 
			
		||||
#include "depth.h"
 | 
			
		||||
#include "dispatch.h"
 | 
			
		||||
#include "dlist.h"
 | 
			
		||||
#include "eval.h"
 | 
			
		||||
#include "enums.h"
 | 
			
		||||
#include "extensions.h"
 | 
			
		||||
#include "fog.h"
 | 
			
		||||
#include "glapi.h"
 | 
			
		||||
#include "get.h"
 | 
			
		||||
#include "hash.h"
 | 
			
		||||
#include "light.h"
 | 
			
		||||
#include "lines.h"
 | 
			
		||||
#include "dlist.h"
 | 
			
		||||
#include "macros.h"
 | 
			
		||||
#include "matrix.h"
 | 
			
		||||
#include "mem.h"
 | 
			
		||||
#include "mmath.h"
 | 
			
		||||
#include "pb.h"
 | 
			
		||||
#include "pipeline.h"
 | 
			
		||||
#include "points.h"
 | 
			
		||||
#include "pointers.h"
 | 
			
		||||
#include "quads.h"
 | 
			
		||||
#include "shade.h"
 | 
			
		||||
#include "simple_list.h"
 | 
			
		||||
@@ -85,6 +96,40 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Memory allocation functions.  Called via the MALLOC, CALLOC and
 | 
			
		||||
 * FREE macros when DEBUG symbol is defined.
 | 
			
		||||
 * You might want to set breakpoints on these functions or plug in
 | 
			
		||||
 * other memory allocation functions.  The Mesa sources should only
 | 
			
		||||
 * use the MALLOC and FREE macros (which could also be overriden).
 | 
			
		||||
 *
 | 
			
		||||
 * XXX these functions should probably go into a new glmemory.c file.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Allocate memory (uninitialized)
 | 
			
		||||
 */
 | 
			
		||||
void *gl_malloc(size_t bytes)
 | 
			
		||||
{
 | 
			
		||||
   return malloc(bytes);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Allocate memory and initialize to zero.
 | 
			
		||||
 */
 | 
			
		||||
void *gl_calloc(size_t bytes)
 | 
			
		||||
{
 | 
			
		||||
   return calloc(1, bytes);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Free memory
 | 
			
		||||
 */
 | 
			
		||||
void gl_free(void *ptr)
 | 
			
		||||
{
 | 
			
		||||
   free(ptr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                  Context and Thread management             *****/
 | 
			
		||||
@@ -113,7 +158,7 @@ static void set_thread_context( GLcontext *ctx ) {
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
/* One Current Context pointer for all threads in the address space */
 | 
			
		||||
GLcontext *_mesa_current_context = NULL;
 | 
			
		||||
GLcontext *CC = NULL;
 | 
			
		||||
struct immediate *CURRENT_INPUT = NULL;
 | 
			
		||||
 | 
			
		||||
#endif /*THREADS*/
 | 
			
		||||
@@ -322,9 +367,9 @@ static struct gl_shared_state *alloc_shared_state( void )
 | 
			
		||||
   if (!ss)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   ss->DisplayList = NewHashTable();
 | 
			
		||||
   ss->DisplayList = _mesa_NewHashTable();
 | 
			
		||||
 | 
			
		||||
   ss->TexObjects = NewHashTable();
 | 
			
		||||
   ss->TexObjects = _mesa_NewHashTable();
 | 
			
		||||
 | 
			
		||||
   /* Default Texture objects */
 | 
			
		||||
   outOfMemory = GL_FALSE;
 | 
			
		||||
@@ -340,9 +385,9 @@ static struct gl_shared_state *alloc_shared_state( void )
 | 
			
		||||
   if (!ss->DisplayList || !ss->TexObjects || outOfMemory) {
 | 
			
		||||
      /* Ran out of memory at some point.  Free everything and return NULL */
 | 
			
		||||
      if (ss->DisplayList)
 | 
			
		||||
         DeleteHashTable(ss->DisplayList);
 | 
			
		||||
         _mesa_DeleteHashTable(ss->DisplayList);
 | 
			
		||||
      if (ss->TexObjects)
 | 
			
		||||
         DeleteHashTable(ss->TexObjects);
 | 
			
		||||
         _mesa_DeleteHashTable(ss->TexObjects);
 | 
			
		||||
      if (ss->DefaultD[1])
 | 
			
		||||
         gl_free_texture_object(ss, ss->DefaultD[1]);
 | 
			
		||||
      if (ss->DefaultD[2])
 | 
			
		||||
@@ -365,7 +410,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )
 | 
			
		||||
{
 | 
			
		||||
   /* Free display lists */
 | 
			
		||||
   while (1) {
 | 
			
		||||
      GLuint list = HashFirstEntry(ss->DisplayList);
 | 
			
		||||
      GLuint list = _mesa_HashFirstEntry(ss->DisplayList);
 | 
			
		||||
      if (list) {
 | 
			
		||||
         gl_destroy_list(ctx, list);
 | 
			
		||||
      }
 | 
			
		||||
@@ -373,7 +418,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )
 | 
			
		||||
         break;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   DeleteHashTable(ss->DisplayList);
 | 
			
		||||
   _mesa_DeleteHashTable(ss->DisplayList);
 | 
			
		||||
 | 
			
		||||
   /* Free texture objects */
 | 
			
		||||
   while (ss->TexObjectList)
 | 
			
		||||
@@ -383,7 +428,7 @@ static void free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )
 | 
			
		||||
      /* this function removes from linked list too! */
 | 
			
		||||
      gl_free_texture_object(ss, ss->TexObjectList);
 | 
			
		||||
   }
 | 
			
		||||
   DeleteHashTable(ss->TexObjects);
 | 
			
		||||
   _mesa_DeleteHashTable(ss->TexObjects);
 | 
			
		||||
 | 
			
		||||
   FREE(ss);
 | 
			
		||||
}
 | 
			
		||||
@@ -534,6 +579,7 @@ static void init_1d_map( struct gl_1d_map *map, int n, const float *initial )
 | 
			
		||||
      for (i=0;i<n;i++)
 | 
			
		||||
         map->Points[i] = initial[i];
 | 
			
		||||
   }
 | 
			
		||||
   map->Retain = GL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -552,20 +598,10 @@ static void init_2d_map( struct gl_2d_map *map, int n, const float *initial )
 | 
			
		||||
      for (i=0;i<n;i++)
 | 
			
		||||
         map->Points[i] = initial[i];
 | 
			
		||||
   }
 | 
			
		||||
   map->Retain = GL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void init_palette( struct gl_palette *p )
 | 
			
		||||
{
 | 
			
		||||
   p->Table[0] = 255;
 | 
			
		||||
   p->Table[1] = 255;
 | 
			
		||||
   p->Table[2] = 255;
 | 
			
		||||
   p->Table[3] = 255;
 | 
			
		||||
   p->Size = 1;
 | 
			
		||||
   p->IntFormat = GL_RGBA;
 | 
			
		||||
   p->Format = GL_RGBA;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Initialize a gl_context structure to default values.
 | 
			
		||||
@@ -586,7 +622,7 @@ static void initialize_context( GLcontext *ctx )
 | 
			
		||||
      gl_matrix_alloc_inv( &ctx->ModelView );
 | 
			
		||||
 | 
			
		||||
      ctx->ModelViewStackDepth = 0;
 | 
			
		||||
      for (i = 0 ; i < MAX_MODELVIEW_STACK_DEPTH ; i++) {
 | 
			
		||||
      for (i = 0; i < MAX_MODELVIEW_STACK_DEPTH - 1; i++) {
 | 
			
		||||
	 gl_matrix_ctr( &ctx->ModelViewStack[i] );
 | 
			
		||||
	 gl_matrix_alloc_inv( &ctx->ModelViewStack[i] );
 | 
			
		||||
      }
 | 
			
		||||
@@ -603,16 +639,16 @@ static void initialize_context( GLcontext *ctx )
 | 
			
		||||
      ctx->NearFarStack[0][0] = 1.0; /* These values seem weird by make */
 | 
			
		||||
      ctx->NearFarStack[0][1] = 0.0; /* sense mathematically. */
 | 
			
		||||
 | 
			
		||||
      for (i = 0 ; i < MAX_PROJECTION_STACK_DEPTH ; i++) {
 | 
			
		||||
      for (i = 0; i < MAX_PROJECTION_STACK_DEPTH - 1; i++) {
 | 
			
		||||
	 gl_matrix_ctr( &ctx->ProjectionStack[i] );
 | 
			
		||||
	 gl_matrix_alloc_inv( &ctx->ProjectionStack[i] );
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      /* Texture matrix */
 | 
			
		||||
      for (i=0; i<MAX_TEXTURE_UNITS; i++) {
 | 
			
		||||
      for (i = 0; i < MAX_TEXTURE_UNITS; i++) {
 | 
			
		||||
	 gl_matrix_ctr( &ctx->TextureMatrix[i] );
 | 
			
		||||
	 ctx->TextureStackDepth[i] = 0;
 | 
			
		||||
	 for (j = 0 ; j < MAX_TEXTURE_STACK_DEPTH ; j++) {
 | 
			
		||||
	 for (j = 0; j < MAX_TEXTURE_STACK_DEPTH - 1; j++) {
 | 
			
		||||
	    ctx->TextureStack[i][j].inv = 0;
 | 
			
		||||
	 }
 | 
			
		||||
      }
 | 
			
		||||
@@ -882,9 +918,9 @@ static void initialize_context( GLcontext *ctx )
 | 
			
		||||
      ctx->Stencil.ZPassFunc = GL_KEEP;
 | 
			
		||||
      ctx->Stencil.ZFailFunc = GL_KEEP;
 | 
			
		||||
      ctx->Stencil.Ref = 0;
 | 
			
		||||
      ctx->Stencil.ValueMask = 0xff;
 | 
			
		||||
      ctx->Stencil.ValueMask = STENCIL_MAX;
 | 
			
		||||
      ctx->Stencil.Clear = 0;
 | 
			
		||||
      ctx->Stencil.WriteMask = 0xff;
 | 
			
		||||
      ctx->Stencil.WriteMask = STENCIL_MAX;
 | 
			
		||||
 | 
			
		||||
      /* Texture group */
 | 
			
		||||
      ctx->Texture.CurrentUnit = 0;      /* multitexture */
 | 
			
		||||
@@ -894,7 +930,14 @@ static void initialize_context( GLcontext *ctx )
 | 
			
		||||
      for (i=0; i<MAX_TEXTURE_UNITS; i++)
 | 
			
		||||
         init_texture_unit( ctx, i );
 | 
			
		||||
 | 
			
		||||
      init_palette(&ctx->Texture.Palette);
 | 
			
		||||
      ctx->Texture.SharedPalette = GL_FALSE;
 | 
			
		||||
      ctx->Texture.Palette[0] = 255;
 | 
			
		||||
      ctx->Texture.Palette[1] = 255;
 | 
			
		||||
      ctx->Texture.Palette[2] = 255;
 | 
			
		||||
      ctx->Texture.Palette[3] = 255;
 | 
			
		||||
      ctx->Texture.PaletteSize = 1;
 | 
			
		||||
      ctx->Texture.PaletteIntFormat = GL_RGBA;
 | 
			
		||||
      ctx->Texture.PaletteFormat = GL_RGBA;
 | 
			
		||||
 | 
			
		||||
      /* Transformation group */
 | 
			
		||||
      ctx->Transform.MatrixMode = GL_MODELVIEW;
 | 
			
		||||
@@ -1028,6 +1071,7 @@ static void initialize_context( GLcontext *ctx )
 | 
			
		||||
 | 
			
		||||
      /* For debug/development only */
 | 
			
		||||
      ctx->NoRaster = getenv("MESA_NO_RASTER") ? GL_TRUE : GL_FALSE;
 | 
			
		||||
      ctx->FirstTimeCurrent = GL_TRUE;
 | 
			
		||||
 | 
			
		||||
      /* Dither disable */
 | 
			
		||||
      ctx->NoDither = getenv("MESA_NO_DITHER") ? GL_TRUE : GL_FALSE;
 | 
			
		||||
@@ -1289,10 +1333,12 @@ GLcontext *gl_create_context( GLvisual *visual,
 | 
			
		||||
   ctx->Driver.ReadDepthSpanFloat = gl_read_depth_span_float;
 | 
			
		||||
   ctx->Driver.ReadDepthSpanInt = gl_read_depth_span_int;
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
#ifdef PROFILE
 | 
			
		||||
   init_timings( ctx );
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef GL_VERSION_1_1
 | 
			
		||||
   if (!alloc_proxy_textures(ctx)) {
 | 
			
		||||
      free_shared_state(ctx, ctx->Shared);
 | 
			
		||||
      FREE(ctx->VB);
 | 
			
		||||
@@ -1300,11 +1346,10 @@ GLcontext *gl_create_context( GLvisual *visual,
 | 
			
		||||
      FREE(ctx);
 | 
			
		||||
      return NULL;
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
   /* setup API dispatch tables */
 | 
			
		||||
   _mesa_init_exec_table( &ctx->Exec );
 | 
			
		||||
   _mesa_init_dlist_table( &ctx->Save );
 | 
			
		||||
   ctx->CurrentDispatch = &ctx->Exec;
 | 
			
		||||
   gl_init_api_function_pointers( ctx );
 | 
			
		||||
   ctx->API = ctx->Exec;   /* GL_EXECUTE is default */
 | 
			
		||||
 | 
			
		||||
   return ctx;
 | 
			
		||||
}
 | 
			
		||||
@@ -1325,9 +1370,8 @@ void gl_context_initialize( GLcontext *ctx )
 | 
			
		||||
void gl_destroy_context( GLcontext *ctx )
 | 
			
		||||
{
 | 
			
		||||
   if (ctx) {
 | 
			
		||||
 | 
			
		||||
      GLuint i;
 | 
			
		||||
      struct gl_shine_tab *s, *tmps;
 | 
			
		||||
      GLuint i, j;
 | 
			
		||||
 | 
			
		||||
#ifdef PROFILE
 | 
			
		||||
      if (getenv("MESA_PROFILE")) {
 | 
			
		||||
@@ -1336,13 +1380,19 @@ void gl_destroy_context( GLcontext *ctx )
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
      gl_matrix_dtr( &ctx->ModelView );
 | 
			
		||||
      for (i = 0 ; i < MAX_MODELVIEW_STACK_DEPTH ; i++) {
 | 
			
		||||
      for (i = 0 ; i < MAX_MODELVIEW_STACK_DEPTH - 1; i++) {
 | 
			
		||||
	 gl_matrix_dtr( &ctx->ModelViewStack[i] );
 | 
			
		||||
      }
 | 
			
		||||
      gl_matrix_dtr( &ctx->ProjectionMatrix );
 | 
			
		||||
      for (i = 0 ; i < MAX_PROJECTION_STACK_DEPTH ; i++) {
 | 
			
		||||
      for (i = 0 ; i < MAX_PROJECTION_STACK_DEPTH - 1; i++) {
 | 
			
		||||
	 gl_matrix_dtr( &ctx->ProjectionStack[i] );
 | 
			
		||||
      }
 | 
			
		||||
      for (i = 0; i < MAX_TEXTURE_UNITS; i++) {
 | 
			
		||||
	 gl_matrix_dtr( &ctx->TextureMatrix[i] );
 | 
			
		||||
	 for (j = 0; j < MAX_TEXTURE_STACK_DEPTH - 1; j++) {
 | 
			
		||||
	    gl_matrix_dtr( &ctx->TextureStack[i][j] );
 | 
			
		||||
	 }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      FREE( ctx->PB );
 | 
			
		||||
 | 
			
		||||
@@ -1418,8 +1468,8 @@ void gl_destroy_context( GLcontext *ctx )
 | 
			
		||||
      FREE( (void *) ctx );
 | 
			
		||||
 | 
			
		||||
#ifndef THREADS
 | 
			
		||||
      if (ctx == _mesa_current_context) {
 | 
			
		||||
         _mesa_current_context = NULL;
 | 
			
		||||
      if (ctx==CC) {
 | 
			
		||||
         CC = NULL;
 | 
			
		||||
	 CURRENT_INPUT = NULL;
 | 
			
		||||
      }
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1488,42 +1538,52 @@ void gl_destroy_framebuffer( GLframebuffer *buffer )
 | 
			
		||||
/*
 | 
			
		||||
 * Set the current context, binding the given frame buffer to the context.
 | 
			
		||||
 */
 | 
			
		||||
void gl_make_current( GLcontext *newCtx, GLframebuffer *buffer )
 | 
			
		||||
void gl_make_current( GLcontext *ctx, GLframebuffer *buffer )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(oldCtx);
 | 
			
		||||
   GET_CONTEXT;
 | 
			
		||||
 | 
			
		||||
   /* Flush the old context
 | 
			
		||||
    */
 | 
			
		||||
   if (oldCtx) {
 | 
			
		||||
      ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(oldCtx, "gl_make_current");
 | 
			
		||||
   if (CC) {
 | 
			
		||||
      ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(CC, "gl_make_current");
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
#ifdef THREADS
 | 
			
		||||
   /* TODO: unbind old buffer from context? */
 | 
			
		||||
   set_thread_context( newCtx );
 | 
			
		||||
   set_thread_context( ctx );
 | 
			
		||||
#else
 | 
			
		||||
   if (oldCtx && oldCtx->Buffer) {
 | 
			
		||||
   if (CC && CC->Buffer) {
 | 
			
		||||
      /* unbind frame buffer from context */
 | 
			
		||||
      oldCtx->Buffer = NULL;
 | 
			
		||||
      CC->Buffer = NULL;
 | 
			
		||||
   }
 | 
			
		||||
   _mesa_current_context = newCtx;
 | 
			
		||||
   if (newCtx) {
 | 
			
		||||
      SET_IMMEDIATE(newCtx, newCtx->input);
 | 
			
		||||
   CC = ctx;
 | 
			
		||||
   if (ctx) {
 | 
			
		||||
      SET_IMMEDIATE(ctx, ctx->input);
 | 
			
		||||
   }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
   if (newCtx)
 | 
			
		||||
      _glapi_set_dispatch(newCtx->CurrentDispatch);
 | 
			
		||||
   else
 | 
			
		||||
      _glapi_set_dispatch(NULL);  /* none current */
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE) fprintf(stderr, "gl_make_current()\n");
 | 
			
		||||
 | 
			
		||||
   if (newCtx && buffer) {
 | 
			
		||||
      /* TODO: check if newCtx and buffer's visual match??? */
 | 
			
		||||
      newCtx->Buffer = buffer;      /* Bind the frame buffer to the context */
 | 
			
		||||
      newCtx->NewState = NEW_ALL;   /* just to be safe */
 | 
			
		||||
      gl_update_state( newCtx );
 | 
			
		||||
   if (ctx && buffer) {
 | 
			
		||||
      /* TODO: check if ctx and buffer's visual match??? */
 | 
			
		||||
      ctx->Buffer = buffer;      /* Bind the frame buffer to the context */
 | 
			
		||||
      ctx->NewState = NEW_ALL;   /* just to be safe */
 | 
			
		||||
      gl_update_state( ctx );
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   /* We can use this to help debug user's problems.  Tell the to set
 | 
			
		||||
    * the MESA_INFO env variable before running their app.  Then the
 | 
			
		||||
    * first time each context is made current we'll print some useful
 | 
			
		||||
    * information.
 | 
			
		||||
    */
 | 
			
		||||
   if (ctx && ctx->FirstTimeCurrent) {
 | 
			
		||||
      if (getenv("MESA_INFO")) {
 | 
			
		||||
         fprintf(stderr, "Mesa GL_VERSION = %s\n", (char *) gl_GetString(ctx, GL_VERSION));
 | 
			
		||||
         fprintf(stderr, "Mesa GL_RENDERER = %s\n", (char *) gl_GetString(ctx, GL_RENDERER));
 | 
			
		||||
         fprintf(stderr, "Mesa GL_VENDOR = %s\n", (char *) gl_GetString(ctx, GL_VENDOR));
 | 
			
		||||
         fprintf(stderr, "Mesa GL_EXTENSIONS = %s\n", (char *) gl_GetString(ctx, GL_EXTENSIONS));
 | 
			
		||||
      }
 | 
			
		||||
      ctx->FirstTimeCurrent = GL_FALSE;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1536,7 +1596,7 @@ GLcontext *gl_get_current_context( void )
 | 
			
		||||
#ifdef THREADS
 | 
			
		||||
   return gl_get_thread_context();
 | 
			
		||||
#else
 | 
			
		||||
   return _mesa_current_context;
 | 
			
		||||
   return CC;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1620,73 +1680,26 @@ void gl_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This should be called by device drivers just before they do a
 | 
			
		||||
 * swapbuffers.  Any pending rendering commands will be executed.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
_mesa_swapbuffers(GLcontext *ctx)
 | 
			
		||||
{
 | 
			
		||||
   FLUSH_VB( ctx, "swap buffers" );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Return pointer to this context's current API dispatch table.
 | 
			
		||||
 * It'll either be the immediate-mode execute dispatcher or the
 | 
			
		||||
 * display list compile dispatcher.
 | 
			
		||||
 * Someday a GLS library or OpenGL-like debugger may call this function
 | 
			
		||||
 * to register it's own set of API entry points.
 | 
			
		||||
 * Input: ctx - the context to set API pointers for
 | 
			
		||||
 *        api - if NULL, restore original API pointers
 | 
			
		||||
 *              else, set API function table to this table.
 | 
			
		||||
 */
 | 
			
		||||
struct _glapi_table *
 | 
			
		||||
_mesa_get_dispatch(GLcontext *ctx)
 | 
			
		||||
void gl_set_api_table( GLcontext *ctx, const struct gl_api_table *api )
 | 
			
		||||
{
 | 
			
		||||
   return ctx->CurrentDispatch;
 | 
			
		||||
   if (api) {
 | 
			
		||||
      MEMCPY( &ctx->API, api, sizeof(struct gl_api_table) );
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      MEMCPY( &ctx->API, &ctx->Exec, sizeof(struct gl_api_table) );
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_mesa_ResizeBuffersMESA( void )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
 | 
			
		||||
   GLuint buf_width, buf_height;
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE & VERBOSE_API)
 | 
			
		||||
      fprintf(stderr, "glResizeBuffersMESA\n");
 | 
			
		||||
 | 
			
		||||
   /* ask device driver for size of output buffer */
 | 
			
		||||
   (*ctx->Driver.GetBufferSize)( ctx, &buf_width, &buf_height );
 | 
			
		||||
 | 
			
		||||
   /* see if size of device driver's color buffer (window) has changed */
 | 
			
		||||
   if (ctx->Buffer->Width == (GLint) buf_width &&
 | 
			
		||||
       ctx->Buffer->Height == (GLint) buf_height)
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
   ctx->NewState |= NEW_RASTER_OPS;  /* to update scissor / window bounds */
 | 
			
		||||
 | 
			
		||||
   /* save buffer size */
 | 
			
		||||
   ctx->Buffer->Width = buf_width;
 | 
			
		||||
   ctx->Buffer->Height = buf_height;
 | 
			
		||||
 | 
			
		||||
   /* Reallocate other buffers if needed. */
 | 
			
		||||
   if (ctx->Visual->DepthBits>0) {
 | 
			
		||||
      /* reallocate depth buffer */
 | 
			
		||||
      (*ctx->Driver.AllocDepthBuffer)( ctx );
 | 
			
		||||
   }
 | 
			
		||||
   if (ctx->Visual->StencilBits>0) {
 | 
			
		||||
      /* reallocate stencil buffer */
 | 
			
		||||
      gl_alloc_stencil_buffer( ctx );
 | 
			
		||||
   }
 | 
			
		||||
   if (ctx->Visual->AccumBits>0) {
 | 
			
		||||
      /* reallocate accum buffer */
 | 
			
		||||
      gl_alloc_accum_buffer( ctx );
 | 
			
		||||
   }
 | 
			
		||||
   if (ctx->Visual->SoftwareAlpha) {
 | 
			
		||||
      gl_alloc_alpha_buffers( ctx );
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                Miscellaneous functions                     *****/
 | 
			
		||||
@@ -1809,6 +1822,66 @@ void gl_error( GLcontext *ctx, GLenum error, const char *s )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Execute a glGetError command
 | 
			
		||||
 */
 | 
			
		||||
GLenum gl_GetError( GLcontext *ctx )
 | 
			
		||||
{
 | 
			
		||||
   GLenum e = ctx->ErrorValue;
 | 
			
		||||
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx, "glGetError", (GLenum) 0);
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE & VERBOSE_API)
 | 
			
		||||
      fprintf(stderr, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e));
 | 
			
		||||
 | 
			
		||||
   ctx->ErrorValue = (GLenum) GL_NO_ERROR;
 | 
			
		||||
   return e;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gl_ResizeBuffersMESA( GLcontext *ctx )
 | 
			
		||||
{
 | 
			
		||||
   GLuint buf_width, buf_height;
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE & VERBOSE_API)
 | 
			
		||||
      fprintf(stderr, "glResizeBuffersMESA\n");
 | 
			
		||||
 | 
			
		||||
   /* ask device driver for size of output buffer */
 | 
			
		||||
   (*ctx->Driver.GetBufferSize)( ctx, &buf_width, &buf_height );
 | 
			
		||||
 | 
			
		||||
   /* see if size of device driver's color buffer (window) has changed */
 | 
			
		||||
   if (ctx->Buffer->Width == (GLint) buf_width &&
 | 
			
		||||
       ctx->Buffer->Height == (GLint) buf_height)
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
   ctx->NewState |= NEW_RASTER_OPS;  /* to update scissor / window bounds */
 | 
			
		||||
 | 
			
		||||
   /* save buffer size */
 | 
			
		||||
   ctx->Buffer->Width = buf_width;
 | 
			
		||||
   ctx->Buffer->Height = buf_height;
 | 
			
		||||
 | 
			
		||||
   /* Reallocate other buffers if needed. */
 | 
			
		||||
   if (ctx->Visual->DepthBits>0) {
 | 
			
		||||
      /* reallocate depth buffer */
 | 
			
		||||
      (*ctx->Driver.AllocDepthBuffer)( ctx );
 | 
			
		||||
   }
 | 
			
		||||
   if (ctx->Visual->StencilBits>0) {
 | 
			
		||||
      /* reallocate stencil buffer */
 | 
			
		||||
      gl_alloc_stencil_buffer( ctx );
 | 
			
		||||
   }
 | 
			
		||||
   if (ctx->Visual->AccumBits>0) {
 | 
			
		||||
      /* reallocate accum buffer */
 | 
			
		||||
      gl_alloc_accum_buffer( ctx );
 | 
			
		||||
   }
 | 
			
		||||
   if (ctx->Visual->SoftwareAlpha) {
 | 
			
		||||
      gl_alloc_alpha_buffers( ctx );
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
/*****                   State update logic                       *****/
 | 
			
		||||
/**********************************************************************/
 | 
			
		||||
@@ -1925,21 +1998,17 @@ static void update_pixel_masking( GLcontext *ctx )
 | 
			
		||||
static void update_fog_mode( GLcontext *ctx )
 | 
			
		||||
{
 | 
			
		||||
   int old_mode = ctx->FogMode;
 | 
			
		||||
   ctx->FogMode = FOG_NONE;
 | 
			
		||||
 | 
			
		||||
   if (ctx->Fog.Enabled) {
 | 
			
		||||
      if (ctx->Texture.Enabled)
 | 
			
		||||
         ctx->FogMode = FOG_FRAGMENT;
 | 
			
		||||
      else if (ctx->Hint.Fog == GL_NICEST)
 | 
			
		||||
         ctx->FogMode = FOG_FRAGMENT;
 | 
			
		||||
      else
 | 
			
		||||
         ctx->FogMode = FOG_VERTEX;
 | 
			
		||||
      ctx->FogMode = FOG_VERTEX;
 | 
			
		||||
 | 
			
		||||
      if (ctx->Driver.GetParameteri)
 | 
			
		||||
         if ((ctx->Driver.GetParameteri)( ctx, DD_HAVE_HARDWARE_FOG ))
 | 
			
		||||
            ctx->FogMode = FOG_FRAGMENT;
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      ctx->FogMode = FOG_NONE;
 | 
			
		||||
      if (ctx->Texture.Enabled || ctx->Hint.Fog == GL_NICEST)
 | 
			
		||||
	 ctx->FogMode = FOG_FRAGMENT;
 | 
			
		||||
 | 
			
		||||
      if ( ctx->Driver.GetParameteri && 
 | 
			
		||||
	   ctx->Driver.GetParameteri( ctx, DD_HAVE_HARDWARE_FOG ) )
 | 
			
		||||
	 ctx->FogMode = FOG_FRAGMENT;
 | 
			
		||||
   }
 | 
			
		||||
   
 | 
			
		||||
   if (old_mode != ctx->FogMode)
 | 
			
		||||
@@ -2078,14 +2147,6 @@ void gl_update_state( GLcontext *ctx )
 | 
			
		||||
      ctx->Texture.Unit[1].LastEnvMode = ctx->Texture.Unit[1].EnvMode;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if ((ctx->NewState & ~(NEW_CLIENT_STATE|NEW_TEXTURE_ENABLE)) == 0) {
 | 
			
		||||
 | 
			
		||||
      if (MESA_VERBOSE&VERBOSE_STATE)
 | 
			
		||||
	 fprintf(stderr, "update_state: goto finished\n");
 | 
			
		||||
 | 
			
		||||
      goto finished;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (ctx->NewState & NEW_TEXTURE_MATRIX) {
 | 
			
		||||
      ctx->Enabled &= ~(ENABLE_TEXMAT0|ENABLE_TEXMAT1);
 | 
			
		||||
 | 
			
		||||
@@ -2102,7 +2163,7 @@ void gl_update_state( GLcontext *ctx )
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (ctx->NewState & NEW_TEXTURING) {
 | 
			
		||||
   if (ctx->NewState & (NEW_TEXTURING | NEW_TEXTURE_ENABLE)) {
 | 
			
		||||
      ctx->Texture.NeedNormals = GL_FALSE;
 | 
			
		||||
      gl_update_dirty_texobjs(ctx);
 | 
			
		||||
      ctx->Enabled &= ~(ENABLE_TEXGEN0|ENABLE_TEXGEN1);
 | 
			
		||||
@@ -2264,7 +2325,7 @@ void gl_update_state( GLcontext *ctx )
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (ctx->NewState & ~(NEW_CLIENT_STATE|NEW_TEXTURE_ENABLE|
 | 
			
		||||
   if (ctx->NewState & ~(NEW_CLIENT_STATE|
 | 
			
		||||
			 NEW_DRIVER_STATE|NEW_USER_CLIP|
 | 
			
		||||
			 NEW_POLYGON))
 | 
			
		||||
      gl_update_clipmask(ctx);
 | 
			
		||||
@@ -2272,6 +2333,7 @@ void gl_update_state( GLcontext *ctx )
 | 
			
		||||
   if (ctx->NewState & (NEW_LIGHTING|
 | 
			
		||||
			NEW_RASTER_OPS|
 | 
			
		||||
			NEW_TEXTURING|
 | 
			
		||||
			NEW_TEXTURE_ENABLE|
 | 
			
		||||
			NEW_TEXTURE_ENV|
 | 
			
		||||
			NEW_POLYGON|
 | 
			
		||||
			NEW_DRVSTATE0|
 | 
			
		||||
@@ -2367,7 +2429,7 @@ void gl_update_state( GLcontext *ctx )
 | 
			
		||||
      oldnorm = ctx->NeedEyeNormals;
 | 
			
		||||
 | 
			
		||||
      ctx->NeedNormals = (ctx->Light.Enabled || ctx->Texture.NeedNormals);
 | 
			
		||||
      ctx->NeedEyeCoords = ((ctx->Fog.Enabled && ctx->Hint.Fog != GL_NICEST) ||
 | 
			
		||||
      ctx->NeedEyeCoords = (ctx->FogMode == FOG_VERTEX ||
 | 
			
		||||
			    ctx->Point.Attenuated);
 | 
			
		||||
      ctx->NeedEyeNormals = GL_FALSE;
 | 
			
		||||
 | 
			
		||||
@@ -2423,7 +2485,6 @@ void gl_update_state( GLcontext *ctx )
 | 
			
		||||
      gl_update_normal_transform( ctx );
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 finished:
 | 
			
		||||
   gl_update_pipelines(ctx);
 | 
			
		||||
   ctx->NewState = 0;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: dd.h,v 1.4 1999/10/21 12:46:27 brianp Exp $ */
 | 
			
		||||
/* $Id: dd.h,v 1.4.2.1 1999/12/12 18:30:47 keithw Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -659,6 +659,7 @@ struct dd_function_table {
 | 
			
		||||
   void (*Lightfv)(GLcontext *ctx, GLenum light,
 | 
			
		||||
		   GLenum pname, const GLfloat *params, GLint nparams );
 | 
			
		||||
   void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params);
 | 
			
		||||
   void (*LogicOpcode)(GLcontext *ctx, GLenum opcode);
 | 
			
		||||
   void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode);
 | 
			
		||||
   void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h);
 | 
			
		||||
   void (*ShadeModel)(GLcontext *ctx, GLenum mode);
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: drawpix.c,v 1.6 1999/11/11 01:22:26 brianp Exp $ */
 | 
			
		||||
/* $Id: drawpix.c,v 1.5.2.2 2000/02/22 18:10:43 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.3
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
@@ -25,10 +25,19 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "drawpix.h"
 | 
			
		||||
#include "feedback.h"
 | 
			
		||||
@@ -44,16 +53,23 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* TODO:  apply texture mapping to fragments */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Try to do a fast and simple RGB(a) glDrawPixels.
 | 
			
		||||
 * Try to do a fast glDrawPixels.  Conditions include:
 | 
			
		||||
 *   not using a display list
 | 
			
		||||
 *   simple pixel unpacking
 | 
			
		||||
 *   no raster ops
 | 
			
		||||
 *   etc....
 | 
			
		||||
 * Return:  GL_TRUE if success, GL_FALSE if slow path must be used instead
 | 
			
		||||
 */
 | 
			
		||||
static GLboolean
 | 
			
		||||
simple_DrawPixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                   GLsizei width, GLsizei height, GLenum format, GLenum type,
 | 
			
		||||
                   const GLvoid *pixels )
 | 
			
		||||
GLboolean gl_direct_DrawPixels( GLcontext *ctx,
 | 
			
		||||
                                const struct gl_pixelstore_attrib *unpack,
 | 
			
		||||
                                GLsizei width, GLsizei height,
 | 
			
		||||
                                GLenum format, GLenum type,
 | 
			
		||||
                                const GLvoid *pixels )
 | 
			
		||||
{
 | 
			
		||||
   const struct gl_pixelstore_attrib *unpack = &ctx->Unpack;
 | 
			
		||||
   GLubyte rgb[MAX_WIDTH][3];
 | 
			
		||||
   GLubyte rgba[MAX_WIDTH][4];
 | 
			
		||||
 | 
			
		||||
@@ -61,6 +77,9 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
						  GL_FALSE);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if (ctx->RenderMode != GL_RENDER)
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
 | 
			
		||||
   if (!ctx->Current.RasterPosValid) {
 | 
			
		||||
      /* no-op */
 | 
			
		||||
      return GL_TRUE;
 | 
			
		||||
@@ -71,10 +90,12 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   /* see if device driver can do the drawpix */
 | 
			
		||||
   if (ctx->Driver.DrawPixels
 | 
			
		||||
       && (*ctx->Driver.DrawPixels)(ctx, x, y, width, height, format, type,
 | 
			
		||||
                                    unpack, pixels)) {
 | 
			
		||||
      return GL_TRUE;
 | 
			
		||||
   if (ctx->Driver.DrawPixels) {
 | 
			
		||||
      GLint x = (GLint) (ctx->Current.RasterPos[0] + 0.5F);
 | 
			
		||||
      GLint y = (GLint) (ctx->Current.RasterPos[1] + 0.5F);
 | 
			
		||||
      if ((*ctx->Driver.DrawPixels)(ctx, x, y, width, height, format, type,
 | 
			
		||||
                                    unpack, pixels))
 | 
			
		||||
         return GL_TRUE;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if ((ctx->RasterMask&(~(SCISSOR_BIT|WINCLIP_BIT)))==0
 | 
			
		||||
@@ -88,8 +109,8 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
       && !unpack->SwapBytes
 | 
			
		||||
       && !unpack->LsbFirst) {
 | 
			
		||||
 | 
			
		||||
      GLint destX = x;
 | 
			
		||||
      GLint destY = y;
 | 
			
		||||
      GLint destX = (GLint) (ctx->Current.RasterPos[0] + 0.5F);
 | 
			
		||||
      GLint destY = (GLint) (ctx->Current.RasterPos[1] + 0.5F);
 | 
			
		||||
      GLint drawWidth = width;           /* actual width drawn */
 | 
			
		||||
      GLint drawHeight = height;         /* actual height drawn */
 | 
			
		||||
      GLint skipPixels = unpack->SkipPixels;
 | 
			
		||||
@@ -346,9 +367,10 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
         return GL_FALSE;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   /* can't do a simple draw, have to use slow path */
 | 
			
		||||
   return GL_FALSE;
 | 
			
		||||
   else {
 | 
			
		||||
      /* can't do direct render, have to use slow path */
 | 
			
		||||
      return GL_FALSE;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -356,43 +378,99 @@ simple_DrawPixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
/*
 | 
			
		||||
 * Do glDrawPixels of index pixels.
 | 
			
		||||
 */
 | 
			
		||||
static void
 | 
			
		||||
draw_index_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                   GLsizei width, GLsizei height,
 | 
			
		||||
                   GLenum type, const GLvoid *pixels )
 | 
			
		||||
static void draw_index_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                               const struct gl_image *image )
 | 
			
		||||
{
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
   GLint width, height, widthInBytes;
 | 
			
		||||
   const GLint desty = y;
 | 
			
		||||
   GLint row, drawWidth;
 | 
			
		||||
   GLint i, j;
 | 
			
		||||
   GLdepth zspan[MAX_WIDTH];
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
 | 
			
		||||
   drawWidth = (width > MAX_WIDTH) ? MAX_WIDTH : width;
 | 
			
		||||
   assert(image);
 | 
			
		||||
   assert(image->Format == GL_COLOR_INDEX);
 | 
			
		||||
 | 
			
		||||
   width = image->Width;
 | 
			
		||||
   height = image->Height;
 | 
			
		||||
   if (image->Type == GL_BITMAP)
 | 
			
		||||
      widthInBytes = (width + 7) / 8;
 | 
			
		||||
   else
 | 
			
		||||
      widthInBytes = width;
 | 
			
		||||
 | 
			
		||||
   /* Fragment depth values */
 | 
			
		||||
   if (ctx->Depth.Test) {
 | 
			
		||||
   if (ctx->Depth.Test || ctx->Fog.Enabled) {
 | 
			
		||||
      GLdepth zval = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE);
 | 
			
		||||
      GLint i;
 | 
			
		||||
      for (i = 0; i < drawWidth; i++) {
 | 
			
		||||
      for (i=0;i<width;i++) {
 | 
			
		||||
	 zspan[i] = zval;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   /*
 | 
			
		||||
    * General solution
 | 
			
		||||
    */
 | 
			
		||||
   for (row = 0; row < height; row++, y++) {
 | 
			
		||||
      GLuint indexes[MAX_WIDTH];
 | 
			
		||||
      const GLvoid *source = gl_pixel_addr_in_image(&ctx->Unpack,
 | 
			
		||||
                    pixels, width, height, GL_COLOR_INDEX, type, 0, row, 0);
 | 
			
		||||
      _mesa_unpack_index_span(ctx, drawWidth, GL_UNSIGNED_INT, indexes,
 | 
			
		||||
                              type, source, &ctx->Unpack, GL_TRUE);
 | 
			
		||||
      if (zoom) {
 | 
			
		||||
         gl_write_zoomed_index_span(ctx, drawWidth, x, y, zspan, indexes, desty);
 | 
			
		||||
   /* process the image row by row */
 | 
			
		||||
   for (i=0;i<height;i++,y++) {
 | 
			
		||||
      GLuint ispan[MAX_WIDTH];
 | 
			
		||||
 | 
			
		||||
      /* convert to uints */
 | 
			
		||||
      switch (image->Type) {
 | 
			
		||||
	 case GL_UNSIGNED_BYTE:
 | 
			
		||||
	    {
 | 
			
		||||
	       GLubyte *src = (GLubyte *) image->Data + i * width;
 | 
			
		||||
	       for (j=0;j<width;j++) {
 | 
			
		||||
		  ispan[j] = (GLuint) *src++;
 | 
			
		||||
	       }
 | 
			
		||||
	    }
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_FLOAT:
 | 
			
		||||
	    {
 | 
			
		||||
	       GLfloat *src = (GLfloat *) image->Data + i * width;
 | 
			
		||||
	       for (j=0;j<width;j++) {
 | 
			
		||||
		  ispan[j] = (GLuint) (GLint) *src++;
 | 
			
		||||
	       }
 | 
			
		||||
	    }
 | 
			
		||||
	    break;
 | 
			
		||||
         case GL_BITMAP:
 | 
			
		||||
            {
 | 
			
		||||
	       GLubyte *src = (GLubyte *) image->Data + i * widthInBytes;
 | 
			
		||||
	       for (j=0;j<width;j++) {
 | 
			
		||||
		  ispan[j] = ( src[j >> 3] >> (7 - (j & 0x7)) ) & 1;
 | 
			
		||||
	       }
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
	 default:
 | 
			
		||||
	    gl_problem( ctx, "draw_index_pixels type" );
 | 
			
		||||
            return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      /* apply shift and offset */
 | 
			
		||||
      if (ctx->Pixel.IndexOffset || ctx->Pixel.IndexShift) {
 | 
			
		||||
         gl_shift_and_offset_ci( ctx, width, ispan );
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (ctx->Visual->RGBAflag) {
 | 
			
		||||
	 /* Convert index to RGBA and write to frame buffer */
 | 
			
		||||
	 GLubyte rgba[MAX_WIDTH][4];
 | 
			
		||||
         gl_map_ci_to_rgba( ctx, width, ispan, rgba );
 | 
			
		||||
         if (zoom) {
 | 
			
		||||
            gl_write_zoomed_rgba_span( ctx, width, x, y, zspan, 
 | 
			
		||||
				       (const GLubyte (*)[4])rgba, desty );
 | 
			
		||||
         }
 | 
			
		||||
         else {
 | 
			
		||||
            gl_write_rgba_span( ctx, width, x, y, zspan, rgba, GL_BITMAP );
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
         gl_write_index_span(ctx, drawWidth, x, y, zspan, indexes, GL_BITMAP);
 | 
			
		||||
	 /* optionally apply index map then write to frame buffer */
 | 
			
		||||
	 if (ctx->Pixel.MapColorFlag) {
 | 
			
		||||
            gl_map_ci(ctx, width, ispan);
 | 
			
		||||
	 }
 | 
			
		||||
         if (zoom) {
 | 
			
		||||
            gl_write_zoomed_index_span( ctx, width, x, y, zspan, ispan, desty );
 | 
			
		||||
         }
 | 
			
		||||
         else {
 | 
			
		||||
            gl_write_index_span( ctx, width, x, y, zspan, ispan, GL_BITMAP );
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -401,44 +479,83 @@ draw_index_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
 * Do glDrawPixels of stencil image.  The image datatype may either
 | 
			
		||||
 * be GLubyte or GLbitmap.
 | 
			
		||||
 */
 | 
			
		||||
static void 
 | 
			
		||||
draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                     GLsizei width, GLsizei height,
 | 
			
		||||
                     GLenum type, const GLvoid *pixels )
 | 
			
		||||
static void draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                                 const struct gl_image *image )
 | 
			
		||||
{
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
   GLint widthInBytes, width, height;
 | 
			
		||||
   const GLint desty = y;
 | 
			
		||||
   GLint row, drawWidth;
 | 
			
		||||
   GLint i;
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
 | 
			
		||||
   if (type != GL_BYTE &&
 | 
			
		||||
       type != GL_UNSIGNED_BYTE &&
 | 
			
		||||
       type != GL_SHORT &&
 | 
			
		||||
       type != GL_UNSIGNED_SHORT &&
 | 
			
		||||
       type != GL_INT &&
 | 
			
		||||
       type != GL_UNSIGNED_INT &&
 | 
			
		||||
       type != GL_FLOAT &&
 | 
			
		||||
       type != GL_BITMAP) {
 | 
			
		||||
      gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels(stencil type)");
 | 
			
		||||
   if (image->Type != GL_BYTE &&
 | 
			
		||||
       image->Type != GL_UNSIGNED_BYTE &&
 | 
			
		||||
       image->Type != GL_SHORT &&
 | 
			
		||||
       image->Type != GL_UNSIGNED_SHORT &&
 | 
			
		||||
       image->Type != GL_INT &&
 | 
			
		||||
       image->Type != GL_UNSIGNED_INT &&
 | 
			
		||||
       image->Type != GL_FLOAT &&
 | 
			
		||||
       image->Type != GL_BITMAP) {
 | 
			
		||||
      gl_error( ctx, GL_INVALID_OPERATION, "glDrawPixels(stencil type)");
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   drawWidth = (width > MAX_WIDTH) ? MAX_WIDTH : width;
 | 
			
		||||
   assert(image);
 | 
			
		||||
   assert(image->Format == GL_STENCIL_INDEX);
 | 
			
		||||
   assert(image->Type == GL_UNSIGNED_BYTE || image->Type == GL_BITMAP);
 | 
			
		||||
 | 
			
		||||
   for (row = 0; row < height; row++, y++) {
 | 
			
		||||
      GLstencil values[MAX_WIDTH];
 | 
			
		||||
      GLenum destType = (sizeof(GLstencil) == sizeof(GLubyte))
 | 
			
		||||
                      ? GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT;
 | 
			
		||||
      const GLvoid *source = gl_pixel_addr_in_image(&ctx->Unpack,
 | 
			
		||||
                    pixels, width, height, GL_COLOR_INDEX, type, 0, row, 0);
 | 
			
		||||
      _mesa_unpack_index_span(ctx, drawWidth, destType, values,
 | 
			
		||||
                              type, source, &ctx->Unpack, GL_TRUE);
 | 
			
		||||
   if (image->Type == GL_UNSIGNED_BYTE)
 | 
			
		||||
      widthInBytes = image->Width;
 | 
			
		||||
   else
 | 
			
		||||
      widthInBytes = (image->Width + 7) / 8;
 | 
			
		||||
   width = image->Width;
 | 
			
		||||
   height = image->Height;
 | 
			
		||||
 | 
			
		||||
      if (zoom) {
 | 
			
		||||
         gl_write_zoomed_stencil_span( ctx, (GLuint) drawWidth, x, y,
 | 
			
		||||
                                       values, desty );
 | 
			
		||||
   /* process the image row by row */
 | 
			
		||||
   for (i=0;i<height;i++,y++) {
 | 
			
		||||
      GLstencil *src = (GLstencil*)image->Data + i * widthInBytes;
 | 
			
		||||
      GLstencil *stencilValues;
 | 
			
		||||
      GLstencil stencilCopy[MAX_WIDTH];
 | 
			
		||||
 | 
			
		||||
      if (image->Type == GL_BITMAP) {
 | 
			
		||||
         /* convert bitmap data to GLubyte (0 or 1) data */
 | 
			
		||||
         GLint j;
 | 
			
		||||
         for (j = 0; j < width; j++) {
 | 
			
		||||
            stencilCopy[j] = ( src[j >> 3] >> (7 - (j & 0x7)) ) & 1;
 | 
			
		||||
         }
 | 
			
		||||
         src = stencilCopy;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (ctx->Pixel.IndexOffset || ctx->Pixel.IndexShift
 | 
			
		||||
          || ctx->Pixel.MapStencilFlag) {
 | 
			
		||||
 | 
			
		||||
         /* make copy of stencil values */
 | 
			
		||||
         if (src != stencilCopy)
 | 
			
		||||
            MEMCPY( stencilCopy, src, width * sizeof(GLstencil));
 | 
			
		||||
 | 
			
		||||
         /* apply shift and offset */
 | 
			
		||||
         if (ctx->Pixel.IndexOffset || ctx->Pixel.IndexShift) {
 | 
			
		||||
            gl_shift_and_offset_stencil( ctx, width, stencilCopy );
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         /* mapping */
 | 
			
		||||
         if (ctx->Pixel.MapStencilFlag) {
 | 
			
		||||
            gl_map_stencil( ctx, width, stencilCopy );
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         stencilValues = stencilCopy;
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
         gl_write_stencil_span( ctx, (GLuint) drawWidth, x, y, values );
 | 
			
		||||
         /* use stencil values in-place */
 | 
			
		||||
         stencilValues = src;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      /* write stencil values to stencil buffer */
 | 
			
		||||
      if (zoom) {
 | 
			
		||||
         gl_write_zoomed_stencil_span( ctx, (GLuint) width, x, y,
 | 
			
		||||
                                       stencilValues, desty );
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
         gl_write_stencil_span( ctx, (GLuint) width, x, y, stencilValues );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
@@ -448,37 +565,30 @@ draw_stencil_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
/*
 | 
			
		||||
 * Do a glDrawPixels of depth values.
 | 
			
		||||
 */
 | 
			
		||||
static void
 | 
			
		||||
draw_depth_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                   GLsizei width, GLsizei height,
 | 
			
		||||
                   GLenum type, const GLvoid *pixels )
 | 
			
		||||
static void draw_depth_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                               const struct gl_image *image )
 | 
			
		||||
{
 | 
			
		||||
   const GLboolean bias_or_scale = ctx->Pixel.DepthBias!=0.0 || ctx->Pixel.DepthScale!=1.0;
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
   GLint width, height;
 | 
			
		||||
   const GLint desty = y;
 | 
			
		||||
   GLubyte rgba[MAX_WIDTH][4];
 | 
			
		||||
   GLuint ispan[MAX_WIDTH];
 | 
			
		||||
   GLint drawWidth = (width > MAX_WIDTH) ? MAX_WIDTH : width;
 | 
			
		||||
   const GLboolean bias_or_scale = ctx->Pixel.DepthBias!=0.0 || ctx->Pixel.DepthScale!=1.0;
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
 | 
			
		||||
   if (type != GL_UNSIGNED_BYTE
 | 
			
		||||
       && type != GL_UNSIGNED_BYTE
 | 
			
		||||
       && type != GL_UNSIGNED_SHORT
 | 
			
		||||
       && type != GL_UNSIGNED_SHORT
 | 
			
		||||
       && type != GL_UNSIGNED_INT
 | 
			
		||||
       && type != GL_UNSIGNED_INT
 | 
			
		||||
       && type != GL_FLOAT) {
 | 
			
		||||
      gl_error(ctx, GL_INVALID_ENUM, "glDrawPixels(type)");
 | 
			
		||||
      return;
 | 
			
		||||
   }
 | 
			
		||||
   assert(image);
 | 
			
		||||
   assert(image->Format == GL_DEPTH_COMPONENT);
 | 
			
		||||
 | 
			
		||||
   /* Colors or indexes */
 | 
			
		||||
   width = image->Width;
 | 
			
		||||
   height = image->Height;
 | 
			
		||||
 | 
			
		||||
   /* Color or index */
 | 
			
		||||
   if (ctx->Visual->RGBAflag) {
 | 
			
		||||
      GLint r = (GLint) (ctx->Current.RasterColor[0] * 255.0F);
 | 
			
		||||
      GLint g = (GLint) (ctx->Current.RasterColor[1] * 255.0F);
 | 
			
		||||
      GLint b = (GLint) (ctx->Current.RasterColor[2] * 255.0F);
 | 
			
		||||
      GLint a = (GLint) (ctx->Current.RasterColor[3] * 255.0F);
 | 
			
		||||
      GLint i;
 | 
			
		||||
      for (i = 0; i < drawWidth; i++) {
 | 
			
		||||
      for (i=0; i<width; i++) {
 | 
			
		||||
         rgba[i][RCOMP] = r;
 | 
			
		||||
         rgba[i][GCOMP] = g;
 | 
			
		||||
         rgba[i][BCOMP] = b;
 | 
			
		||||
@@ -487,36 +597,34 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      GLint i;
 | 
			
		||||
      for (i = 0; i < drawWidth; i++) {
 | 
			
		||||
      for (i=0;i<width;i++) {
 | 
			
		||||
	 ispan[i] = ctx->Current.RasterIndex;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (type==GL_UNSIGNED_SHORT && sizeof(GLdepth)==sizeof(GLushort)
 | 
			
		||||
   if (image->Type==GL_UNSIGNED_SHORT && sizeof(GLdepth)==sizeof(GLushort)
 | 
			
		||||
       && !bias_or_scale && !zoom && ctx->Visual->RGBAflag) {
 | 
			
		||||
      /* Special case: directly write 16-bit depth values */
 | 
			
		||||
      GLint row;
 | 
			
		||||
      for (row = 0; row < height; row++, y++) {
 | 
			
		||||
         const GLdepth *zptr = gl_pixel_addr_in_image(&ctx->Unpack,
 | 
			
		||||
                pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0);
 | 
			
		||||
      GLint j;
 | 
			
		||||
      for (j=0;j<height;j++,y++) {
 | 
			
		||||
         GLdepth *zptr = (GLdepth *) image->Data + j * width;
 | 
			
		||||
         gl_write_rgba_span( ctx, width, x, y, zptr, rgba, GL_BITMAP );
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else if (type==GL_UNSIGNED_INT && sizeof(GLdepth)==sizeof(GLuint)
 | 
			
		||||
   else if (image->Type==GL_UNSIGNED_INT && sizeof(GLdepth)==sizeof(GLuint)
 | 
			
		||||
       && !bias_or_scale && !zoom && ctx->Visual->RGBAflag) {
 | 
			
		||||
      /* Special case: directly write 32-bit depth values */
 | 
			
		||||
      GLint i, row;
 | 
			
		||||
      GLint i, j;
 | 
			
		||||
      /* Compute shift value to scale 32-bit uints down to depth values. */
 | 
			
		||||
      GLuint shift = 0;
 | 
			
		||||
      GLuint max = MAX_DEPTH;
 | 
			
		||||
      while ((max & 0x80000000) == 0) {
 | 
			
		||||
      while ((max&0x80000000)==0) {
 | 
			
		||||
         max = max << 1;
 | 
			
		||||
         shift++;
 | 
			
		||||
      }
 | 
			
		||||
      for (row = 0; row < height; row++, y++) {
 | 
			
		||||
      for (j=0;j<height;j++,y++) {
 | 
			
		||||
         GLdepth zspan[MAX_WIDTH];
 | 
			
		||||
         const GLdepth *zptr = gl_pixel_addr_in_image(&ctx->Unpack,
 | 
			
		||||
                pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0);
 | 
			
		||||
         GLuint *zptr = (GLuint *) image->Data + j * width;
 | 
			
		||||
         for (i=0;i<width;i++) {
 | 
			
		||||
            zspan[i] = zptr[i] >> shift;
 | 
			
		||||
         }
 | 
			
		||||
@@ -524,30 +632,72 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      /* General case */
 | 
			
		||||
      GLint row;
 | 
			
		||||
      for (row = 0; row < height; row++, y++) {
 | 
			
		||||
      /* General case (slower) */
 | 
			
		||||
      GLint i, j;
 | 
			
		||||
 | 
			
		||||
      /* process image row by row */
 | 
			
		||||
      for (i=0;i<height;i++,y++) {
 | 
			
		||||
         GLfloat depth[MAX_WIDTH];
 | 
			
		||||
         GLdepth zspan[MAX_WIDTH];
 | 
			
		||||
         const GLvoid *src = gl_pixel_addr_in_image(&ctx->Unpack,
 | 
			
		||||
                pixels, width, height, GL_DEPTH_COMPONENT, type, 0, row, 0);
 | 
			
		||||
         _mesa_unpack_depth_span( ctx, drawWidth, zspan, type, src,
 | 
			
		||||
                                  &ctx->Unpack, GL_TRUE );
 | 
			
		||||
 | 
			
		||||
         switch (image->Type) {
 | 
			
		||||
            case GL_UNSIGNED_SHORT:
 | 
			
		||||
               {
 | 
			
		||||
                  GLushort *src = (GLushort *) image->Data + i * width;
 | 
			
		||||
                  for (j=0;j<width;j++) {
 | 
			
		||||
                     depth[j] = USHORT_TO_FLOAT( *src++ );
 | 
			
		||||
                  }
 | 
			
		||||
               }
 | 
			
		||||
               break;
 | 
			
		||||
            case GL_UNSIGNED_INT:
 | 
			
		||||
               {
 | 
			
		||||
                  GLuint *src = (GLuint *) image->Data + i * width;
 | 
			
		||||
                  for (j=0;j<width;j++) {
 | 
			
		||||
                     depth[j] = UINT_TO_FLOAT( *src++ );
 | 
			
		||||
                  }
 | 
			
		||||
               }
 | 
			
		||||
               break;
 | 
			
		||||
            case GL_FLOAT:
 | 
			
		||||
               {
 | 
			
		||||
                  GLfloat *src = (GLfloat *) image->Data + i * width;
 | 
			
		||||
                  for (j=0;j<width;j++) {
 | 
			
		||||
                     depth[j] = *src++;
 | 
			
		||||
                  }
 | 
			
		||||
               }
 | 
			
		||||
               break;
 | 
			
		||||
            default:
 | 
			
		||||
               gl_problem(ctx, "Bad type in draw_depth_pixels");
 | 
			
		||||
               return;
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         /* apply depth scale and bias */
 | 
			
		||||
         if (ctx->Pixel.DepthScale!=1.0 || ctx->Pixel.DepthBias!=0.0) {
 | 
			
		||||
            for (j=0;j<width;j++) {
 | 
			
		||||
               depth[j] = depth[j] * ctx->Pixel.DepthScale + ctx->Pixel.DepthBias;
 | 
			
		||||
            }
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         /* clamp depth values to [0,1] and convert from floats to integers */
 | 
			
		||||
         for (j=0;j<width;j++) {
 | 
			
		||||
            zspan[j] = (GLdepth) (CLAMP( depth[j], 0.0F, 1.0F ) * DEPTH_SCALE);
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         if (ctx->Visual->RGBAflag) {
 | 
			
		||||
            if (zoom) {
 | 
			
		||||
               gl_write_zoomed_rgba_span(ctx, width, x, y, zspan,
 | 
			
		||||
                                         (const GLubyte (*)[4])rgba, desty);
 | 
			
		||||
               gl_write_zoomed_rgba_span( ctx, width, x, y, zspan,
 | 
			
		||||
                                          (const GLubyte (*)[4])rgba, desty );
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
               gl_write_rgba_span(ctx, width, x, y, zspan, rgba, GL_BITMAP);
 | 
			
		||||
               gl_write_rgba_span( ctx, width, x, y, zspan, rgba, GL_BITMAP );
 | 
			
		||||
            }
 | 
			
		||||
         }
 | 
			
		||||
         else {
 | 
			
		||||
            if (zoom) {
 | 
			
		||||
               gl_write_zoomed_index_span(ctx, width, x, y, zspan,
 | 
			
		||||
                                          ispan, GL_BITMAP);
 | 
			
		||||
               gl_write_zoomed_index_span( ctx, width, x, y, zspan,
 | 
			
		||||
                                           ispan, GL_BITMAP );
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
               gl_write_index_span(ctx, width, x, y, zspan, ispan, GL_BITMAP);
 | 
			
		||||
               gl_write_index_span( ctx, width, x, y, zspan, ispan, GL_BITMAP );
 | 
			
		||||
            }
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
@@ -556,71 +706,184 @@ draw_depth_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Simple unpacking parameters: */
 | 
			
		||||
static struct gl_pixelstore_attrib NoUnpack = {
 | 
			
		||||
   1,            /* Alignment */
 | 
			
		||||
   0,            /* RowLength */
 | 
			
		||||
   0,            /* SkipPixels */
 | 
			
		||||
   0,            /* SkipRows */
 | 
			
		||||
   0,            /* ImageHeight */
 | 
			
		||||
   0,            /* SkipImages */
 | 
			
		||||
   GL_FALSE,     /* SwapBytes */
 | 
			
		||||
   GL_FALSE      /* LsbFirst */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Do glDrawPixels of RGBA pixels.
 | 
			
		||||
 */
 | 
			
		||||
static void
 | 
			
		||||
draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                  GLsizei width, GLsizei height,
 | 
			
		||||
                  GLenum format, GLenum type, const GLvoid *pixels )
 | 
			
		||||
static void draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
                              const struct gl_image *image )
 | 
			
		||||
{
 | 
			
		||||
   const struct gl_pixelstore_attrib *unpack = &ctx->Unpack;
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
   GLint width, height;
 | 
			
		||||
   GLint i, j;
 | 
			
		||||
   const GLint desty = y;
 | 
			
		||||
   GLdepth zspan[MAX_WIDTH];
 | 
			
		||||
   GLboolean quickDraw;
 | 
			
		||||
   const GLboolean zoom = ctx->Pixel.ZoomX!=1.0 || ctx->Pixel.ZoomY!=1.0;
 | 
			
		||||
 | 
			
		||||
   assert(image);
 | 
			
		||||
 | 
			
		||||
   /* Try an optimized glDrawPixels first */
 | 
			
		||||
   if (simple_DrawPixels(ctx, x, y, width, height, format, type, pixels))
 | 
			
		||||
   if (gl_direct_DrawPixels(ctx, &NoUnpack, image->Width, image->Height,
 | 
			
		||||
                            image->Format, image->Type, image->Data ))
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
   width = image->Width;
 | 
			
		||||
   height = image->Height;
 | 
			
		||||
 | 
			
		||||
   /* Fragment depth values */
 | 
			
		||||
   if (ctx->Depth.Test) {
 | 
			
		||||
   if (ctx->Depth.Test || ctx->Fog.Enabled) {
 | 
			
		||||
      /* fill in array of z values */
 | 
			
		||||
      GLdepth z = (GLdepth) (ctx->Current.RasterPos[2] * DEPTH_SCALE);
 | 
			
		||||
      GLint i;
 | 
			
		||||
      for (i=0;i<width;i++) {
 | 
			
		||||
	 zspan[i] = z;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if (ctx->RasterMask == 0 && !zoom
 | 
			
		||||
       && x >= 0 && y >= 0
 | 
			
		||||
       && x + width <= ctx->Buffer->Width
 | 
			
		||||
       && y + height <= ctx->Buffer->Height) {
 | 
			
		||||
   if (ctx->RasterMask==0 && !zoom && x>=0 && y>=0
 | 
			
		||||
       && x+width<=ctx->Buffer->Width && y+height<=ctx->Buffer->Height) {
 | 
			
		||||
      quickDraw = GL_TRUE;
 | 
			
		||||
   }
 | 
			
		||||
   else {
 | 
			
		||||
      quickDraw = GL_FALSE;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   /*
 | 
			
		||||
    * General solution
 | 
			
		||||
    */
 | 
			
		||||
   {
 | 
			
		||||
      /* General solution */
 | 
			
		||||
      GLboolean r_flag, g_flag, b_flag, a_flag, l_flag;
 | 
			
		||||
      GLuint components;
 | 
			
		||||
      GLubyte rgba[MAX_WIDTH][4];
 | 
			
		||||
      GLint row;
 | 
			
		||||
      if (width > MAX_WIDTH)
 | 
			
		||||
         width = MAX_WIDTH;
 | 
			
		||||
      for (row = 0; row < height; row++, y++) {
 | 
			
		||||
         const GLvoid *source = gl_pixel_addr_in_image(unpack,
 | 
			
		||||
                  pixels, width, height, format, type, 0, row, 0);
 | 
			
		||||
         _mesa_unpack_ubyte_color_span(ctx, width, GL_RGBA, (void*) rgba,
 | 
			
		||||
                   format, type, source, unpack, GL_TRUE);
 | 
			
		||||
      GLfloat  rf[MAX_WIDTH];
 | 
			
		||||
      GLfloat  gf[MAX_WIDTH];
 | 
			
		||||
      GLfloat  bf[MAX_WIDTH];
 | 
			
		||||
      DEFARRAY(GLfloat,af,MAX_WIDTH);
 | 
			
		||||
      CHECKARRAY(af,return);
 | 
			
		||||
 | 
			
		||||
      r_flag = g_flag = b_flag = a_flag = l_flag = GL_FALSE;
 | 
			
		||||
      switch (image->Format) {
 | 
			
		||||
	 case GL_RED:
 | 
			
		||||
	    r_flag = GL_TRUE;
 | 
			
		||||
	    components = 1;
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_GREEN:
 | 
			
		||||
	    g_flag = GL_TRUE;
 | 
			
		||||
	    components = 1;
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_BLUE:
 | 
			
		||||
	    b_flag = GL_TRUE;
 | 
			
		||||
	    components = 1;
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_ALPHA:
 | 
			
		||||
	    a_flag = GL_TRUE;
 | 
			
		||||
	    components = 1;
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_RGB:
 | 
			
		||||
	    r_flag = g_flag = b_flag = GL_TRUE;
 | 
			
		||||
	    components = 3;
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_LUMINANCE:
 | 
			
		||||
	    l_flag = GL_TRUE;
 | 
			
		||||
	    components = 1;
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_LUMINANCE_ALPHA:
 | 
			
		||||
	    l_flag = a_flag = GL_TRUE;
 | 
			
		||||
	    components = 2;
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_RGBA:
 | 
			
		||||
	    r_flag = g_flag = b_flag = a_flag = GL_TRUE;
 | 
			
		||||
	    components = 4;
 | 
			
		||||
	    break;
 | 
			
		||||
         default:
 | 
			
		||||
            gl_problem(ctx, "Bad type in draw_rgba_pixels");
 | 
			
		||||
            goto cleanup;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      /* process the image row by row */
 | 
			
		||||
      for (i=0;i<height;i++,y++) {
 | 
			
		||||
	 /* convert to floats */
 | 
			
		||||
	 switch (image->Type) {
 | 
			
		||||
	    case GL_UNSIGNED_BYTE:
 | 
			
		||||
	       {
 | 
			
		||||
		  GLubyte *src = (GLubyte *) image->Data + i * width * components;
 | 
			
		||||
		  for (j=0;j<width;j++) {
 | 
			
		||||
		     if (l_flag) {
 | 
			
		||||
			rf[j] = gf[j] = bf[j] = UBYTE_TO_FLOAT(*src++);
 | 
			
		||||
		     }
 | 
			
		||||
		     else {
 | 
			
		||||
			rf[j] = r_flag ? UBYTE_TO_FLOAT(*src++) : 0.0;
 | 
			
		||||
			gf[j] = g_flag ? UBYTE_TO_FLOAT(*src++) : 0.0;
 | 
			
		||||
			bf[j] = b_flag ? UBYTE_TO_FLOAT(*src++) : 0.0;
 | 
			
		||||
		     }
 | 
			
		||||
		     af[j] = a_flag ? UBYTE_TO_FLOAT(*src++) : 1.0;
 | 
			
		||||
		  }
 | 
			
		||||
	       }
 | 
			
		||||
	       break;
 | 
			
		||||
	    case GL_FLOAT:
 | 
			
		||||
	       {
 | 
			
		||||
		  GLfloat *src = (GLfloat *) image->Data + i * width * components;
 | 
			
		||||
		  for (j=0;j<width;j++) {
 | 
			
		||||
		     if (l_flag) {
 | 
			
		||||
			rf[j] = gf[j] = bf[j] = *src++;
 | 
			
		||||
		     }
 | 
			
		||||
		     else {
 | 
			
		||||
			rf[j] = r_flag ? *src++ : 0.0;
 | 
			
		||||
			gf[j] = g_flag ? *src++ : 0.0;
 | 
			
		||||
			bf[j] = b_flag ? *src++ : 0.0;
 | 
			
		||||
		     }
 | 
			
		||||
		     af[j] = a_flag ? *src++ : 1.0;
 | 
			
		||||
		  }
 | 
			
		||||
	       }
 | 
			
		||||
	       break;
 | 
			
		||||
	    default:
 | 
			
		||||
	       gl_problem( ctx, "draw_rgba_pixels type" );
 | 
			
		||||
               goto cleanup;
 | 
			
		||||
	 }
 | 
			
		||||
 | 
			
		||||
	 /* apply scale and bias */
 | 
			
		||||
	 if (ctx->Pixel.ScaleOrBiasRGBA) {
 | 
			
		||||
            gl_scale_and_bias_color(ctx, width, rf, gf, bf, af);
 | 
			
		||||
	 }
 | 
			
		||||
 | 
			
		||||
	 /* apply pixel mappings */
 | 
			
		||||
	 if (ctx->Pixel.MapColorFlag) {
 | 
			
		||||
            gl_map_color(ctx, width, rf, gf, bf, af);
 | 
			
		||||
	 }
 | 
			
		||||
 | 
			
		||||
	 /* convert to integers */
 | 
			
		||||
	 for (j=0;j<width;j++) {
 | 
			
		||||
	    rgba[j][RCOMP] = (GLint) (rf[j] * 255.0F);
 | 
			
		||||
	    rgba[j][GCOMP] = (GLint) (gf[j] * 255.0F);
 | 
			
		||||
	    rgba[j][BCOMP] = (GLint) (bf[j] * 255.0F);
 | 
			
		||||
	    rgba[j][ACOMP] = (GLint) (af[j] * 255.0F);
 | 
			
		||||
	 }
 | 
			
		||||
 | 
			
		||||
	 /* write to frame buffer */
 | 
			
		||||
         if (quickDraw) {
 | 
			
		||||
            (*ctx->Driver.WriteRGBASpan)( ctx, width, x, y,
 | 
			
		||||
                                          (CONST GLubyte (*)[]) rgba, NULL);
 | 
			
		||||
            (*ctx->Driver.WriteRGBASpan)( ctx, width, x, y, 
 | 
			
		||||
					  (const GLubyte (*)[4])rgba, NULL);
 | 
			
		||||
         }
 | 
			
		||||
         else if (zoom) {
 | 
			
		||||
            gl_write_zoomed_rgba_span( ctx, width, x, y, zspan, 
 | 
			
		||||
				       (CONST GLubyte (*)[]) rgba, desty );
 | 
			
		||||
				       (const GLubyte (*)[4])rgba, desty );
 | 
			
		||||
         }
 | 
			
		||||
         else {
 | 
			
		||||
            gl_write_rgba_span( ctx, (GLuint) width, x, y, zspan, rgba, GL_BITMAP);
 | 
			
		||||
         }
 | 
			
		||||
      }
 | 
			
		||||
cleanup:
 | 
			
		||||
      UNDEFARRAY(af);
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -629,50 +892,45 @@ draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y,
 | 
			
		||||
/*
 | 
			
		||||
 * Execute glDrawPixels
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
_mesa_DrawPixels( GLsizei width, GLsizei height,
 | 
			
		||||
                  GLenum format, GLenum type, const GLvoid *pixels )
 | 
			
		||||
void gl_DrawPixels( GLcontext* ctx, struct gl_image *image )
 | 
			
		||||
{
 | 
			
		||||
   GET_CURRENT_CONTEXT(ctx);
 | 
			
		||||
   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glDrawPixels");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if (gl_image_error_test( ctx, image, "glDrawPixels" ))
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
   if (ctx->RenderMode==GL_RENDER) {
 | 
			
		||||
      GLint x, y;
 | 
			
		||||
      if (!pixels || !ctx->Current.RasterPosValid) {
 | 
			
		||||
      if (!ctx->Current.RasterPosValid) {
 | 
			
		||||
	 return;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      x = (GLint) (ctx->Current.RasterPos[0] + 0.5F);
 | 
			
		||||
      y = (GLint) (ctx->Current.RasterPos[1] + 0.5F);
 | 
			
		||||
 | 
			
		||||
      switch (format) {
 | 
			
		||||
      switch (image->Format) {
 | 
			
		||||
	 case GL_COLOR_INDEX:
 | 
			
		||||
            draw_index_pixels( ctx, x, y, image );
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_STENCIL_INDEX:
 | 
			
		||||
	    draw_stencil_pixels( ctx, x, y, width, height, type, pixels );
 | 
			
		||||
	    draw_stencil_pixels( ctx, x, y, image );
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_DEPTH_COMPONENT:
 | 
			
		||||
	    draw_depth_pixels( ctx, x, y, width, height, type, pixels );
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_COLOR_INDEX:
 | 
			
		||||
            if (ctx->Visual->RGBAflag)
 | 
			
		||||
               draw_index_pixels(ctx, x, y, width, height, type, pixels);
 | 
			
		||||
            else
 | 
			
		||||
               draw_rgba_pixels(ctx, x,y, width, height, format, type, pixels);
 | 
			
		||||
	    draw_depth_pixels( ctx, x, y, image );
 | 
			
		||||
	    break;
 | 
			
		||||
	 case GL_RED:
 | 
			
		||||
	 case GL_GREEN:
 | 
			
		||||
	 case GL_BLUE:
 | 
			
		||||
	 case GL_ALPHA:
 | 
			
		||||
	 case GL_RGB:
 | 
			
		||||
	 case GL_LUMINANCE:
 | 
			
		||||
	 case GL_LUMINANCE_ALPHA:
 | 
			
		||||
	 case GL_RGB:
 | 
			
		||||
         case GL_BGR:
 | 
			
		||||
	 case GL_RGBA:
 | 
			
		||||
	 case GL_BGRA:
 | 
			
		||||
	 case GL_ABGR_EXT:
 | 
			
		||||
            draw_rgba_pixels(ctx, x, y, width, height, format, type, pixels);
 | 
			
		||||
            draw_rgba_pixels( ctx, x, y, image );
 | 
			
		||||
	    break;
 | 
			
		||||
	 default:
 | 
			
		||||
	    gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels(format)" );
 | 
			
		||||
	    gl_error( ctx, GL_INVALID_ENUM, "glDrawPixels" );
 | 
			
		||||
            return;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: enums.c,v 1.5 1999/11/11 01:22:26 brianp Exp $ */
 | 
			
		||||
/* $Id: enums.c,v 1.4.2.1 2000/02/05 01:52:23 brianp Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.3
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
@@ -24,15 +24,17 @@
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#include "enums.h"
 | 
			
		||||
#include "mem.h"
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "GL/gl.h"
 | 
			
		||||
#include "enums.h"
 | 
			
		||||
#include "macros.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct { 
 | 
			
		||||
   const char *c; 
 | 
			
		||||
@@ -795,8 +797,8 @@ enum_elt all_enums[] =
 | 
			
		||||
   { "GL_NATIVE_GRAPHICS_HANDLE_PGI", 107010 },
 | 
			
		||||
 | 
			
		||||
   /* GL_EXT_compiled_vertex_array */
 | 
			
		||||
   { "GL_ARRAY_ELEMENT_LOCK_FIRST_SGI", 0x81A8},
 | 
			
		||||
   { "GL_ARRAY_ELEMENT_LOCK_COUNT_SGI", 0x81A9},
 | 
			
		||||
   { "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", 0x81A8},
 | 
			
		||||
   { "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9},
 | 
			
		||||
 | 
			
		||||
   /* GL_EXT_clip_volume_hint */
 | 
			
		||||
   { "GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
/* $Id: extensions.c,v 1.11 1999/11/11 01:22:26 brianp Exp $ */
 | 
			
		||||
/* $Id: extensions.c,v 1.10.2.4 1999/12/21 17:22:39 keithw Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
 * Version:  3.3
 | 
			
		||||
 * Version:  3.1
 | 
			
		||||
 * 
 | 
			
		||||
 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
 | 
			
		||||
 * 
 | 
			
		||||
@@ -25,16 +25,16 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef PC_HEADER
 | 
			
		||||
#include "all.h"
 | 
			
		||||
#ifndef XFree86Server
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#else
 | 
			
		||||
#include "glheader.h"
 | 
			
		||||
#include "GL/xf86glx.h"
 | 
			
		||||
#endif
 | 
			
		||||
#include "context.h"
 | 
			
		||||
#include "extensions.h"
 | 
			
		||||
#include "mem.h"
 | 
			
		||||
#include "simple_list.h"
 | 
			
		||||
#include "types.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define MAX_EXT_NAMELEN 80
 | 
			
		||||
@@ -62,7 +62,7 @@ static struct { int enabled; const char *name; } default_extensions[] = {
 | 
			
		||||
   { DEFAULT_ON,     "GL_EXT_texture3D" },
 | 
			
		||||
   { ALWAYS_ENABLED, "GL_MESA_window_pos" },
 | 
			
		||||
   { ALWAYS_ENABLED, "GL_MESA_resize_buffers" },
 | 
			
		||||
   { ALWAYS_ENABLED, "GL_EXT_shared_texture_palette" },
 | 
			
		||||
   { DEFAULT_ON,     "GL_EXT_shared_texture_palette" },
 | 
			
		||||
   { ALWAYS_ENABLED, "GL_EXT_rescale_normal" },
 | 
			
		||||
   { ALWAYS_ENABLED, "GL_EXT_abgr" },
 | 
			
		||||
   { ALWAYS_ENABLED, "GL_SGIS_texture_edge_clamp" },
 | 
			
		||||
@@ -72,8 +72,15 @@ static struct { int enabled; const char *name; } default_extensions[] = {
 | 
			
		||||
   { ALWAYS_ENABLED, "GL_NV_texgen_reflection" },
 | 
			
		||||
   { DEFAULT_ON,     "GL_PGI_misc_hints" },
 | 
			
		||||
   { DEFAULT_ON,     "GL_EXT_compiled_vertex_array" },
 | 
			
		||||
   { DEFAULT_OFF,    "GL_EXT_vertex_array_set" },
 | 
			
		||||
   { DEFAULT_ON,     "GL_EXT_clip_volume_hint" },
 | 
			
		||||
   
 | 
			
		||||
   { DEFAULT_OFF,    "GL_EXT_texture_env_add" },
 | 
			
		||||
 | 
			
		||||
   /* These obviously won't make it before 3.3:
 | 
			
		||||
    */
 | 
			
		||||
   { DEFAULT_OFF,    "GL_EXT_vertex_array_set" },
 | 
			
		||||
   { DEFAULT_OFF,    "GL_EXT_texture_env" },
 | 
			
		||||
   { DEFAULT_OFF,    "GL_EXT_fog_coord" },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -105,14 +112,21 @@ static int set_extension( GLcontext *ctx, const char *name, GLuint state )
 | 
			
		||||
      if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0) 
 | 
			
		||||
	 break;
 | 
			
		||||
 | 
			
		||||
   if (i == ctx->Extensions.ext_list) return 1;
 | 
			
		||||
   if (i == ctx->Extensions.ext_list) {
 | 
			
		||||
      if (MESA_VERBOSE&VERBOSE_EXTENSIONS)
 | 
			
		||||
	 fprintf(stderr, "extension %s -- not found\n", name);
 | 
			
		||||
      return 1;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (i->enabled && !(i->enabled & ALWAYS_ENABLED))
 | 
			
		||||
   if (i->enabled != state && !(i->enabled & ALWAYS_ENABLED))
 | 
			
		||||
   {
 | 
			
		||||
      if (i->notify) i->notify( ctx, state );      
 | 
			
		||||
      i->enabled = state;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   if (MESA_VERBOSE&VERBOSE_EXTENSIONS)
 | 
			
		||||
      fprintf(stderr, "extension %s, state %d\n", name, i->enabled);
 | 
			
		||||
 | 
			
		||||
   return 0;
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
@@ -133,6 +147,24 @@ int gl_extensions_disable( GLcontext *ctx, const char *name )
 | 
			
		||||
}
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Test if the named extension is enabled in this context.
 | 
			
		||||
 */
 | 
			
		||||
GLboolean gl_extension_is_enabled( GLcontext *ctx, const char *name)
 | 
			
		||||
{
 | 
			
		||||
   struct extension *i;
 | 
			
		||||
   foreach( i, ctx->Extensions.ext_list )
 | 
			
		||||
      if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0) {
 | 
			
		||||
         if (i->enabled)
 | 
			
		||||
            return GL_TRUE;
 | 
			
		||||
         else
 | 
			
		||||
            return GL_FALSE;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
   return GL_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gl_extensions_dtr( GLcontext *ctx )
 | 
			
		||||
{
 | 
			
		||||
   struct extension *i, *nexti;
 | 
			
		||||
@@ -218,43 +250,409 @@ void (*gl_get_proc_address( const GLubyte *procName ))()
 | 
			
		||||
      gl_function address;
 | 
			
		||||
   };
 | 
			
		||||
   static struct proc procTable[] = {
 | 
			
		||||
      /* OpenGL 1.0 functions */
 | 
			
		||||
      { "glAccum", (gl_function) glAccum },
 | 
			
		||||
      { "glAlphaFunc", (gl_function) glAlphaFunc },
 | 
			
		||||
      { "glBegin", (gl_function) glBegin },
 | 
			
		||||
      { "glBitmap", (gl_function) glBitmap },
 | 
			
		||||
      { "glAccum", (gl_function) glAccum },
 | 
			
		||||
      { "glAlphaFunc", (gl_function) glAlphaFunc },
 | 
			
		||||
      { "glBegin", (gl_function) glBegin },
 | 
			
		||||
      { "glBitmap", (gl_function) glBitmap },
 | 
			
		||||
      { "glBlendFunc", (gl_function) glBlendFunc },
 | 
			
		||||
      { "glCallList", (gl_function) glCallList },
 | 
			
		||||
      { "glCallLists", (gl_function) glCallLists },
 | 
			
		||||
      { "glClear", (gl_function) glClear },
 | 
			
		||||
      { "glClearAccum", (gl_function) glClearAccum },
 | 
			
		||||
      { "glClearColor", (gl_function) glClearColor },
 | 
			
		||||
      { "glClearDepth", (gl_function) glClearDepth },
 | 
			
		||||
      { "glClearIndex", (gl_function) glClearIndex },
 | 
			
		||||
      { "glClearStencil", (gl_function) glClearStencil },
 | 
			
		||||
      { "glClipPlane", (gl_function) glClipPlane },
 | 
			
		||||
      { "glColor3b", (gl_function) glColor3b },
 | 
			
		||||
      { "glColor3bv", (gl_function) glColor3bv },
 | 
			
		||||
      { "glColor3d", (gl_function) glColor3d },
 | 
			
		||||
      { "glColor3dv", (gl_function) glColor3dv },
 | 
			
		||||
      { "glColor3f", (gl_function) glColor3f },
 | 
			
		||||
      { "glColor3fv", (gl_function) glColor3fv },
 | 
			
		||||
      { "glColor3i", (gl_function) glColor3i },
 | 
			
		||||
      { "glColor3iv", (gl_function) glColor3iv },
 | 
			
		||||
      { "glColor3s", (gl_function) glColor3s },
 | 
			
		||||
      { "glColor3sv", (gl_function) glColor3sv },
 | 
			
		||||
      { "glColor3ub", (gl_function) glColor3ub },
 | 
			
		||||
      { "glColor3ubv", (gl_function) glColor3ubv },
 | 
			
		||||
      { "glColor3ui", (gl_function) glColor3ui },
 | 
			
		||||
      { "glColor3uiv", (gl_function) glColor3uiv },
 | 
			
		||||
      { "glColor3us", (gl_function) glColor3us },
 | 
			
		||||
      { "glColor3usv", (gl_function) glColor3usv },
 | 
			
		||||
      { "glColor4b", (gl_function) glColor4b },
 | 
			
		||||
      { "glColor4bv", (gl_function) glColor4bv },
 | 
			
		||||
      { "glColor4d", (gl_function) glColor4d },
 | 
			
		||||
      { "glColor4dv", (gl_function) glColor4dv },
 | 
			
		||||
      { "glColor4f", (gl_function) glColor4f },
 | 
			
		||||
      { "glColor4fv", (gl_function) glColor4fv },
 | 
			
		||||
      { "glColor4i", (gl_function) glColor4i },
 | 
			
		||||
      { "glColor4iv", (gl_function) glColor4iv },
 | 
			
		||||
      { "glColor4s", (gl_function) glColor4s },
 | 
			
		||||
      { "glColor4sv", (gl_function) glColor4sv },
 | 
			
		||||
      { "glColor4ub", (gl_function) glColor4ub },
 | 
			
		||||
      { "glColor4ubv", (gl_function) glColor4ubv },
 | 
			
		||||
      { "glColor4ui", (gl_function) glColor4ui },
 | 
			
		||||
      { "glColor4uiv", (gl_function) glColor4uiv },
 | 
			
		||||
      { "glColor4us", (gl_function) glColor4us },
 | 
			
		||||
      { "glColor4usv", (gl_function) glColor4usv },
 | 
			
		||||
      { "glColorMask", (gl_function) glColorMask },
 | 
			
		||||
      { "glColorMaterial", (gl_function) glColorMaterial },
 | 
			
		||||
      { "glCopyPixels", (gl_function) glCopyPixels },
 | 
			
		||||
      { "glCullFace", (gl_function) glCullFace },
 | 
			
		||||
      { "glDeleteLists", (gl_function) glDeleteLists },
 | 
			
		||||
      { "glDepthFunc", (gl_function) glDepthFunc },
 | 
			
		||||
      { "glDepthMask", (gl_function) glDepthMask },
 | 
			
		||||
      { "glDepthRange", (gl_function) glDepthRange },
 | 
			
		||||
      { "glDisable", (gl_function) glDisable },
 | 
			
		||||
      { "glDrawBuffer", (gl_function) glDrawBuffer },
 | 
			
		||||
      { "glDrawPixels", (gl_function) glDrawPixels },
 | 
			
		||||
      { "glEdgeFlag", (gl_function) glEdgeFlag },
 | 
			
		||||
      { "glEdgeFlagv", (gl_function) glEdgeFlagv },
 | 
			
		||||
      { "glEnable", (gl_function) glEnable },
 | 
			
		||||
      { "glEnd", (gl_function) glEnd },
 | 
			
		||||
      { "glEndList", (gl_function) glEndList },
 | 
			
		||||
      { "glEvalCoord1d", (gl_function) glEvalCoord1d },
 | 
			
		||||
      { "glEvalCoord1dv", (gl_function) glEvalCoord1dv },
 | 
			
		||||
      { "glEvalCoord1f", (gl_function) glEvalCoord1f },
 | 
			
		||||
      { "glEvalCoord1fv", (gl_function) glEvalCoord1fv },
 | 
			
		||||
      { "glEvalCoord2d", (gl_function) glEvalCoord2d },
 | 
			
		||||
      { "glEvalCoord2dv", (gl_function) glEvalCoord2dv },
 | 
			
		||||
      { "glEvalCoord2f", (gl_function) glEvalCoord2f },
 | 
			
		||||
      { "glEvalCoord2fv", (gl_function) glEvalCoord2fv },
 | 
			
		||||
      { "glEvalMesh1", (gl_function) glEvalMesh1 },
 | 
			
		||||
      { "glEvalMesh2", (gl_function) glEvalMesh2 },
 | 
			
		||||
      { "glEvalPoint1", (gl_function) glEvalPoint1 },
 | 
			
		||||
      { "glEvalPoint2", (gl_function) glEvalPoint2 },
 | 
			
		||||
      { "glFeedbackBuffer", (gl_function) glFeedbackBuffer },
 | 
			
		||||
      { "glFinish", (gl_function) glFinish },
 | 
			
		||||
      { "glFlush", (gl_function) glFlush },
 | 
			
		||||
      { "glFogf", (gl_function) glFogf },
 | 
			
		||||
      { "glFogfv", (gl_function) glFogfv },
 | 
			
		||||
      { "glFogi", (gl_function) glFogi },
 | 
			
		||||
      { "glFogiv", (gl_function) glFogiv },
 | 
			
		||||
      { "glFrontFace", (gl_function) glFrontFace },
 | 
			
		||||
      { "glFrustum", (gl_function) glFrustum },
 | 
			
		||||
      { "glGenLists", (gl_function) glGenLists },
 | 
			
		||||
      { "glGetBooleanv", (gl_function) glGetBooleanv },
 | 
			
		||||
      { "glGetClipPlane", (gl_function) glGetClipPlane },
 | 
			
		||||
      { "glGetDoublev", (gl_function) glGetDoublev },
 | 
			
		||||
      { "glGetError", (gl_function) glGetError },
 | 
			
		||||
      { "glGetFloatv", (gl_function) glGetFloatv },
 | 
			
		||||
      { "glGetIntegerv", (gl_function) glGetIntegerv },
 | 
			
		||||
      { "glGetLightfv", (gl_function) glGetLightfv },
 | 
			
		||||
      { "glGetLightiv", (gl_function) glGetLightiv },
 | 
			
		||||
      { "glGetMapdv", (gl_function) glGetMapdv },
 | 
			
		||||
      { "glGetMapfv", (gl_function) glGetMapfv },
 | 
			
		||||
      { "glGetMapiv", (gl_function) glGetMapiv },
 | 
			
		||||
      { "glGetMaterialfv", (gl_function) glGetMaterialfv },
 | 
			
		||||
      { "glGetMaterialiv", (gl_function) glGetMaterialiv },
 | 
			
		||||
      { "glGetPixelMapfv", (gl_function) glGetPixelMapfv },
 | 
			
		||||
      { "glGetPixelMapuiv", (gl_function) glGetPixelMapuiv },
 | 
			
		||||
      { "glGetPixelMapusv", (gl_function) glGetPixelMapusv },
 | 
			
		||||
      { "glGetPolygonStipple", (gl_function) glGetPolygonStipple },
 | 
			
		||||
      { "glGetString", (gl_function) glGetString },
 | 
			
		||||
      { "glGetTexEnvfv", (gl_function) glGetTexEnvfv },
 | 
			
		||||
      { "glGetTexEnviv", (gl_function) glGetTexEnviv },
 | 
			
		||||
      { "glGetTexGendv", (gl_function) glGetTexGendv },
 | 
			
		||||
      { "glGetTexGenfv", (gl_function) glGetTexGenfv },
 | 
			
		||||
      { "glGetTexGeniv", (gl_function) glGetTexGeniv },
 | 
			
		||||
      { "glGetTexImage", (gl_function) glGetTexImage },
 | 
			
		||||
      { "glGetTexLevelParameterfv", (gl_function) glGetTexLevelParameterfv },
 | 
			
		||||
      { "glGetTexLevelParameteriv", (gl_function) glGetTexLevelParameteriv },
 | 
			
		||||
      { "glGetTexParameterfv", (gl_function) glGetTexParameterfv },
 | 
			
		||||
      { "glGetTexParameteriv", (gl_function) glGetTexParameteriv },
 | 
			
		||||
      { "glHint", (gl_function) glHint },
 | 
			
		||||
      { "glIndexMask", (gl_function) glIndexMask },
 | 
			
		||||
      { "glIndexd", (gl_function) glIndexd },
 | 
			
		||||
      { "glIndexdv", (gl_function) glIndexdv },
 | 
			
		||||
      { "glIndexf", (gl_function) glIndexf },
 | 
			
		||||
      { "glIndexfv", (gl_function) glIndexfv },
 | 
			
		||||
      { "glIndexi", (gl_function) glIndexi },
 | 
			
		||||
      { "glIndexiv", (gl_function) glIndexiv },
 | 
			
		||||
      { "glIndexs", (gl_function) glIndexs },
 | 
			
		||||
      { "glIndexsv", (gl_function) glIndexsv },
 | 
			
		||||
      { "glInitNames", (gl_function) glInitNames },
 | 
			
		||||
      { "glIsEnabled", (gl_function) glIsEnabled },
 | 
			
		||||
      { "glIsList", (gl_function) glIsList },
 | 
			
		||||
      { "glLightModelf", (gl_function) glLightModelf },
 | 
			
		||||
      { "glLightModelfv", (gl_function) glLightModelfv },
 | 
			
		||||
      { "glLightModeli", (gl_function) glLightModeli },
 | 
			
		||||
      { "glLightModeliv", (gl_function) glLightModeliv },
 | 
			
		||||
      { "glLightf", (gl_function) glLightf },
 | 
			
		||||
      { "glLightfv", (gl_function) glLightfv },
 | 
			
		||||
      { "glLighti", (gl_function) glLighti },
 | 
			
		||||
      { "glLightiv", (gl_function) glLightiv },
 | 
			
		||||
      { "glLineStipple", (gl_function) glLineStipple },
 | 
			
		||||
      { "glLineWidth", (gl_function) glLineWidth },
 | 
			
		||||
      { "glListBase", (gl_function) glListBase },
 | 
			
		||||
      { "glLoadIdentity", (gl_function) glLoadIdentity },
 | 
			
		||||
      { "glLoadMatrixd", (gl_function) glLoadMatrixd },
 | 
			
		||||
      { "glLoadMatrixf", (gl_function) glLoadMatrixf },
 | 
			
		||||
      { "glLoadName", (gl_function) glLoadName },
 | 
			
		||||
      { "glLogicOp", (gl_function) glLogicOp },
 | 
			
		||||
      { "glMap1d", (gl_function) glMap1d },
 | 
			
		||||
      { "glMap1f", (gl_function) glMap1f },
 | 
			
		||||
      { "glMap2d", (gl_function) glMap2d },
 | 
			
		||||
      { "glMap2f", (gl_function) glMap2f },
 | 
			
		||||
      { "glMapGrid1d", (gl_function) glMapGrid1d },
 | 
			
		||||
      { "glMapGrid1f", (gl_function) glMapGrid1f },
 | 
			
		||||
      { "glMapGrid2d", (gl_function) glMapGrid2d },
 | 
			
		||||
      { "glMapGrid2f", (gl_function) glMapGrid2f },
 | 
			
		||||
      { "glMaterialf", (gl_function) glMaterialf },
 | 
			
		||||
      { "glMaterialfv", (gl_function) glMaterialfv },
 | 
			
		||||
      { "glMateriali", (gl_function) glMateriali },
 | 
			
		||||
      { "glMaterialiv", (gl_function) glMaterialiv },
 | 
			
		||||
      { "glMatrixMode", (gl_function) glMatrixMode },
 | 
			
		||||
      { "glMultMatrixd", (gl_function) glMultMatrixd },
 | 
			
		||||
      { "glMultMatrixf", (gl_function) glMultMatrixf },
 | 
			
		||||
      { "glNewList", (gl_function) glNewList },
 | 
			
		||||
      { "glNormal3b", (gl_function) glNormal3b },
 | 
			
		||||
      { "glNormal3bv", (gl_function) glNormal3bv },
 | 
			
		||||
      { "glNormal3d", (gl_function) glNormal3d },
 | 
			
		||||
      { "glNormal3dv", (gl_function) glNormal3dv },
 | 
			
		||||
      { "glNormal3f", (gl_function) glNormal3f },
 | 
			
		||||
      { "glNormal3fv", (gl_function) glNormal3fv },
 | 
			
		||||
      { "glNormal3i", (gl_function) glNormal3i },
 | 
			
		||||
      { "glNormal3iv", (gl_function) glNormal3iv },
 | 
			
		||||
      { "glNormal3s", (gl_function) glNormal3s },
 | 
			
		||||
      { "glNormal3sv", (gl_function) glNormal3sv },
 | 
			
		||||
      { "glOrtho", (gl_function) glOrtho },
 | 
			
		||||
      { "glPassThrough", (gl_function) glPassThrough },
 | 
			
		||||
      { "glPixelMapfv", (gl_function) glPixelMapfv },
 | 
			
		||||
      { "glPixelMapuiv", (gl_function) glPixelMapuiv },
 | 
			
		||||
      { "glPixelMapusv", (gl_function) glPixelMapusv },
 | 
			
		||||
      { "glPixelStoref", (gl_function) glPixelStoref },
 | 
			
		||||
      { "glPixelStorei", (gl_function) glPixelStorei },
 | 
			
		||||
      { "glPixelTransferf", (gl_function) glPixelTransferf },
 | 
			
		||||
      { "glPixelTransferi", (gl_function) glPixelTransferi },
 | 
			
		||||
      { "glPixelZoom", (gl_function) glPixelZoom },
 | 
			
		||||
      { "glPointSize", (gl_function) glPointSize },
 | 
			
		||||
      { "glPolygonMode", (gl_function) glPolygonMode },
 | 
			
		||||
      { "glPolygonOffset", (gl_function) glPolygonOffset },
 | 
			
		||||
      { "glPolygonStipple", (gl_function) glPolygonStipple },
 | 
			
		||||
      { "glPopAttrib", (gl_function) glPopAttrib },
 | 
			
		||||
      { "glPopMatrix", (gl_function) glPopMatrix },
 | 
			
		||||
      { "glPopName", (gl_function) glPopName },
 | 
			
		||||
      { "glPushAttrib", (gl_function) glPushAttrib },
 | 
			
		||||
      { "glPushMatrix", (gl_function) glPushMatrix },
 | 
			
		||||
      { "glPushName", (gl_function) glPushName },
 | 
			
		||||
      { "glRasterPos2d", (gl_function) glRasterPos2d },
 | 
			
		||||
      { "glRasterPos2dv", (gl_function) glRasterPos2dv },
 | 
			
		||||
      { "glRasterPos2f", (gl_function) glRasterPos2f },
 | 
			
		||||
      { "glRasterPos2fv", (gl_function) glRasterPos2fv },
 | 
			
		||||
      { "glRasterPos2i", (gl_function) glRasterPos2i },
 | 
			
		||||
      { "glRasterPos2iv", (gl_function) glRasterPos2iv },
 | 
			
		||||
      { "glRasterPos2s", (gl_function) glRasterPos2s },
 | 
			
		||||
      { "glRasterPos2sv", (gl_function) glRasterPos2sv },
 | 
			
		||||
      { "glRasterPos3d", (gl_function) glRasterPos3d },
 | 
			
		||||
      { "glRasterPos3dv", (gl_function) glRasterPos3dv },
 | 
			
		||||
      { "glRasterPos3f", (gl_function) glRasterPos3f },
 | 
			
		||||
      { "glRasterPos3fv", (gl_function) glRasterPos3fv },
 | 
			
		||||
      { "glRasterPos3i", (gl_function) glRasterPos3i },
 | 
			
		||||
      { "glRasterPos3iv", (gl_function) glRasterPos3iv },
 | 
			
		||||
      { "glRasterPos3s", (gl_function) glRasterPos3s },
 | 
			
		||||
      { "glRasterPos3sv", (gl_function) glRasterPos3sv },
 | 
			
		||||
      { "glRasterPos4d", (gl_function) glRasterPos4d },
 | 
			
		||||
      { "glRasterPos4dv", (gl_function) glRasterPos4dv },
 | 
			
		||||
      { "glRasterPos4f", (gl_function) glRasterPos4f },
 | 
			
		||||
      { "glRasterPos4fv", (gl_function) glRasterPos4fv },
 | 
			
		||||
      { "glRasterPos4i", (gl_function) glRasterPos4i },
 | 
			
		||||
      { "glRasterPos4iv", (gl_function) glRasterPos4iv },
 | 
			
		||||
      { "glRasterPos4s", (gl_function) glRasterPos4s },
 | 
			
		||||
      { "glRasterPos4sv", (gl_function) glRasterPos4sv },
 | 
			
		||||
      { "glReadBuffer", (gl_function) glReadBuffer },
 | 
			
		||||
      { "glReadPixels", (gl_function) glReadPixels },
 | 
			
		||||
      { "glRectd", (gl_function) glRectd },
 | 
			
		||||
      { "glRectdv", (gl_function) glRectdv },
 | 
			
		||||
      { "glRectf", (gl_function) glRectf },
 | 
			
		||||
      { "glRectfv", (gl_function) glRectfv },
 | 
			
		||||
      { "glRecti", (gl_function) glRecti },
 | 
			
		||||
      { "glRectiv", (gl_function) glRectiv },
 | 
			
		||||
      { "glRects", (gl_function) glRects },
 | 
			
		||||
      { "glRectsv", (gl_function) glRectsv },
 | 
			
		||||
      { "glRenderMode", (gl_function) glRenderMode },
 | 
			
		||||
      { "glRotated", (gl_function) glRotated },
 | 
			
		||||
      { "glRotatef", (gl_function) glRotatef },
 | 
			
		||||
      { "glScaled", (gl_function) glScaled },
 | 
			
		||||
      { "glScalef", (gl_function) glScalef },
 | 
			
		||||
      { "glScissor", (gl_function) glScissor },
 | 
			
		||||
      { "glSelectBuffer", (gl_function) glSelectBuffer },
 | 
			
		||||
      { "glShadeModel", (gl_function) glShadeModel },
 | 
			
		||||
      { "glStencilFunc", (gl_function) glStencilFunc },
 | 
			
		||||
      { "glStencilMask", (gl_function) glStencilMask },
 | 
			
		||||
      { "glStencilOp", (gl_function) glStencilOp },
 | 
			
		||||
      { "glTexCoord1d", (gl_function) glTexCoord1d },
 | 
			
		||||
      { "glTexCoord1dv", (gl_function) glTexCoord1dv },
 | 
			
		||||
      { "glTexCoord1f", (gl_function) glTexCoord1f },
 | 
			
		||||
      { "glTexCoord1fv", (gl_function) glTexCoord1fv },
 | 
			
		||||
      { "glTexCoord1i", (gl_function) glTexCoord1i },
 | 
			
		||||
      { "glTexCoord1iv", (gl_function) glTexCoord1iv },
 | 
			
		||||
      { "glTexCoord1s", (gl_function) glTexCoord1s },
 | 
			
		||||
      { "glTexCoord1sv", (gl_function) glTexCoord1sv },
 | 
			
		||||
      { "glTexCoord2d", (gl_function) glTexCoord2d },
 | 
			
		||||
      { "glTexCoord2dv", (gl_function) glTexCoord2dv },
 | 
			
		||||
      { "glTexCoord2f", (gl_function) glTexCoord2f },
 | 
			
		||||
      { "glTexCoord2fv", (gl_function) glTexCoord2fv },
 | 
			
		||||
      { "glTexCoord2i", (gl_function) glTexCoord2i },
 | 
			
		||||
      { "glTexCoord2iv", (gl_function) glTexCoord2iv },
 | 
			
		||||
      { "glTexCoord2s", (gl_function) glTexCoord2s },
 | 
			
		||||
      { "glTexCoord2sv", (gl_function) glTexCoord2sv },
 | 
			
		||||
      { "glTexCoord3d", (gl_function) glTexCoord3d },
 | 
			
		||||
      { "glTexCoord3dv", (gl_function) glTexCoord3dv },
 | 
			
		||||
      { "glTexCoord3f", (gl_function) glTexCoord3f },
 | 
			
		||||
      { "glTexCoord3fv", (gl_function) glTexCoord3fv },
 | 
			
		||||
      { "glTexCoord3i", (gl_function) glTexCoord3i },
 | 
			
		||||
      { "glTexCoord3iv", (gl_function) glTexCoord3iv },
 | 
			
		||||
      { "glTexCoord3s", (gl_function) glTexCoord3s },
 | 
			
		||||
      { "glTexCoord3sv", (gl_function) glTexCoord3sv },
 | 
			
		||||
      { "glTexCoord4d", (gl_function) glTexCoord4d },
 | 
			
		||||
      { "glTexCoord4dv", (gl_function) glTexCoord4dv },
 | 
			
		||||
      { "glTexCoord4f", (gl_function) glTexCoord4f },
 | 
			
		||||
      { "glTexCoord4fv", (gl_function) glTexCoord4fv },
 | 
			
		||||
      { "glTexCoord4i", (gl_function) glTexCoord4i },
 | 
			
		||||
      { "glTexCoord4iv", (gl_function) glTexCoord4iv },
 | 
			
		||||
      { "glTexCoord4s", (gl_function) glTexCoord4s },
 | 
			
		||||
      { "glTexCoord4sv", (gl_function) glTexCoord4sv },
 | 
			
		||||
      { "glTexEnvf", (gl_function) glTexEnvf },
 | 
			
		||||
      { "glTexEnvfv", (gl_function) glTexEnvfv },
 | 
			
		||||
      { "glTexEnvi", (gl_function) glTexEnvi },
 | 
			
		||||
      { "glTexEnviv", (gl_function) glTexEnviv },
 | 
			
		||||
      { "glTexGend", (gl_function) glTexGend },
 | 
			
		||||
      { "glTexGendv", (gl_function) glTexGendv },
 | 
			
		||||
      { "glTexGenf", (gl_function) glTexGenf },
 | 
			
		||||
      { "glTexGenfv", (gl_function) glTexGenfv },
 | 
			
		||||
      { "glTexGeni", (gl_function) glTexGeni },
 | 
			
		||||
      { "glTexGeniv", (gl_function) glTexGeniv },
 | 
			
		||||
      { "glTexImage1D", (gl_function) glTexImage1D },
 | 
			
		||||
      { "glTexImage2D", (gl_function) glTexImage2D },
 | 
			
		||||
      { "glTexParameterf", (gl_function) glTexParameterf },
 | 
			
		||||
      { "glTexParameterfv", (gl_function) glTexParameterfv },
 | 
			
		||||
      { "glTexParameteri", (gl_function) glTexParameteri },
 | 
			
		||||
      { "glTexParameteriv", (gl_function) glTexParameteriv },
 | 
			
		||||
      { "glTranslated", (gl_function) glTranslated },
 | 
			
		||||
      { "glTranslatef", (gl_function) glTranslatef },
 | 
			
		||||
      { "glVertex2d", (gl_function) glVertex2d },
 | 
			
		||||
      { "glVertex2dv", (gl_function) glVertex2dv },
 | 
			
		||||
      { "glVertex2f", (gl_function) glVertex2f },
 | 
			
		||||
      { "glVertex2fv", (gl_function) glVertex2fv },
 | 
			
		||||
      { "glVertex2i", (gl_function) glVertex2i },
 | 
			
		||||
      { "glVertex2iv", (gl_function) glVertex2iv },
 | 
			
		||||
      { "glVertex2s", (gl_function) glVertex2s },
 | 
			
		||||
      { "glVertex2sv", (gl_function) glVertex2sv },
 | 
			
		||||
      { "glVertex3d", (gl_function) glVertex3d },
 | 
			
		||||
      { "glVertex3dv", (gl_function) glVertex3dv },
 | 
			
		||||
      { "glVertex3f", (gl_function) glVertex3f },
 | 
			
		||||
      { "glVertex3fv", (gl_function) glVertex3fv },
 | 
			
		||||
      { "glVertex3i", (gl_function) glVertex3i },
 | 
			
		||||
      { "glVertex3iv", (gl_function) glVertex3iv },
 | 
			
		||||
      { "glVertex3s", (gl_function) glVertex3s },
 | 
			
		||||
      { "glVertex3sv", (gl_function) glVertex3sv },
 | 
			
		||||
      { "glVertex4d", (gl_function) glVertex4d },
 | 
			
		||||
      { "glVertex4dv", (gl_function) glVertex4dv },
 | 
			
		||||
      { "glVertex4f", (gl_function) glVertex4f },
 | 
			
		||||
      { "glVertex4fv", (gl_function) glVertex4fv },
 | 
			
		||||
      { "glVertex4i", (gl_function) glVertex4i },
 | 
			
		||||
      { "glVertex4iv", (gl_function) glVertex4iv },
 | 
			
		||||
      { "glVertex4s", (gl_function) glVertex4s },
 | 
			
		||||
      { "glVertex4sv", (gl_function) glVertex4sv },
 | 
			
		||||
      { "glViewport", (gl_function) glViewport },
 | 
			
		||||
 | 
			
		||||
      /* OpenGL 1.1 functions */
 | 
			
		||||
      { "glEnableClientState", (gl_function) glEnableClientState },
 | 
			
		||||
      { "glDisableClientState", (gl_function) glDisableClientState },
 | 
			
		||||
      { "glPushClientAttrib", (gl_function) glPushClientAttrib },
 | 
			
		||||
      { "glPopClientAttrib", (gl_function) glPopClientAttrib },
 | 
			
		||||
      { "glIndexub", (gl_function) glIndexub },
 | 
			
		||||
      { "glIndexubv", (gl_function) glIndexubv },
 | 
			
		||||
      { "glVertexPointer", (gl_function) glVertexPointer },
 | 
			
		||||
      { "glNormalPointer", (gl_function) glNormalPointer },
 | 
			
		||||
      { "glColorPointer", (gl_function) glColorPointer },
 | 
			
		||||
      { "glIndexPointer", (gl_function) glIndexPointer },
 | 
			
		||||
      { "glTexCoordPointer", (gl_function) glTexCoordPointer },
 | 
			
		||||
      { "glEdgeFlagPointer", (gl_function) glEdgeFlagPointer },
 | 
			
		||||
      { "glGetPointerv", (gl_function) glGetPointerv },
 | 
			
		||||
      { "glArrayElement", (gl_function) glArrayElement },
 | 
			
		||||
      { "glDrawArrays", (gl_function) glDrawArrays },
 | 
			
		||||
      { "glDrawElements", (gl_function) glDrawElements },
 | 
			
		||||
      { "glInterleavedArrays", (gl_function) glInterleavedArrays },
 | 
			
		||||
      { "glGenTextures", (gl_function) glGenTextures },
 | 
			
		||||
      { "glDeleteTextures", (gl_function) glDeleteTextures },
 | 
			
		||||
      { "glBindTexture", (gl_function) glBindTexture },
 | 
			
		||||
      { "glPrioritizeTextures", (gl_function) glPrioritizeTextures },
 | 
			
		||||
      { "glAreTexturesResident", (gl_function) glAreTexturesResident },
 | 
			
		||||
      { "glIsTexture", (gl_function) glIsTexture },
 | 
			
		||||
      { "glTexSubImage1D", (gl_function) glTexSubImage1D },
 | 
			
		||||
      { "glTexSubImage2D", (gl_function) glTexSubImage2D },
 | 
			
		||||
      { "glArrayElement", (gl_function) glArrayElement },
 | 
			
		||||
      { "glBindTexture", (gl_function) glBindTexture },
 | 
			
		||||
      { "glColorPointer", (gl_function) glColorPointer },
 | 
			
		||||
      { "glCopyTexImage1D", (gl_function) glCopyTexImage1D },
 | 
			
		||||
      { "glCopyTexImage2D", (gl_function) glCopyTexImage2D },
 | 
			
		||||
      { "glCopyTexSubImage1D", (gl_function) glCopyTexSubImage1D },
 | 
			
		||||
      { "glCopyTexSubImage2D", (gl_function) glCopyTexSubImage2D },
 | 
			
		||||
      { "glDeleteTextures", (gl_function) glDeleteTextures },
 | 
			
		||||
      { "glDisableClientState", (gl_function) glDisableClientState },
 | 
			
		||||
      { "glDrawArrays", (gl_function) glDrawArrays },
 | 
			
		||||
      { "glDrawElements", (gl_function) glDrawElements },
 | 
			
		||||
      { "glEdgeFlagPointer", (gl_function) glEdgeFlagPointer },
 | 
			
		||||
      { "glEnableClientState", (gl_function) glEnableClientState },
 | 
			
		||||
      { "glGenTextures", (gl_function) glGenTextures },
 | 
			
		||||
      { "glGetPointerv", (gl_function) glGetPointerv },
 | 
			
		||||
      { "glIndexPointer", (gl_function) glIndexPointer },
 | 
			
		||||
      { "glIndexub", (gl_function) glIndexub },
 | 
			
		||||
      { "glIndexubv", (gl_function) glIndexubv },
 | 
			
		||||
      { "glInterleavedArrays", (gl_function) glInterleavedArrays },
 | 
			
		||||
      { "glIsTexture", (gl_function) glIsTexture },
 | 
			
		||||
      { "glNormalPointer", (gl_function) glNormalPointer },
 | 
			
		||||
      { "glPopClientAttrib", (gl_function) glPopClientAttrib },
 | 
			
		||||
      { "glPrioritizeTextures", (gl_function) glPrioritizeTextures },
 | 
			
		||||
      { "glPushClientAttrib", (gl_function) glPushClientAttrib },
 | 
			
		||||
      { "glTexCoordPointer", (gl_function) glTexCoordPointer },
 | 
			
		||||
      { "glTexSubImage1D", (gl_function) glTexSubImage1D },
 | 
			
		||||
      { "glTexSubImage2D", (gl_function) glTexSubImage2D },
 | 
			
		||||
      { "glVertexPointer", (gl_function) glVertexPointer },
 | 
			
		||||
 | 
			
		||||
      /* OpenGL 1.2 functions */
 | 
			
		||||
      { "glCopyTexSubImage3D", (gl_function) glCopyTexSubImage3D },
 | 
			
		||||
      { "glDrawRangeElements", (gl_function) glDrawRangeElements },
 | 
			
		||||
      { "glTexImage3D", (gl_function) glTexImage3D },
 | 
			
		||||
      { "glTexSubImage3D", (gl_function) glTexSubImage3D },
 | 
			
		||||
      { "glCopyTexSubImage3D", (gl_function) glCopyTexSubImage3D },
 | 
			
		||||
      /* NOTE: 1.2 imaging subset functions not implemented in Mesa */
 | 
			
		||||
 | 
			
		||||
      /* ARB_imaging functions */
 | 
			
		||||
      { "glBlendColor", (gl_function) glBlendColor },
 | 
			
		||||
      { "glBlendEquation", (gl_function) glBlendEquation },
 | 
			
		||||
      { "glColorSubTable", (gl_function) glColorSubTable },
 | 
			
		||||
      { "glColorTable", (gl_function) glColorTable },
 | 
			
		||||
      { "glColorTableParameterfv", (gl_function) glColorTableParameterfv },
 | 
			
		||||
      { "glColorTableParameteriv", (gl_function) glColorTableParameteriv },
 | 
			
		||||
      { "glConvolutionFilter1D", (gl_function) glConvolutionFilter1D },
 | 
			
		||||
      { "glConvolutionFilter2D", (gl_function) glConvolutionFilter2D },
 | 
			
		||||
      { "glConvolutionParameterf", (gl_function) glConvolutionParameterf },
 | 
			
		||||
      { "glConvolutionParameterfv", (gl_function) glConvolutionParameterfv },
 | 
			
		||||
      { "glConvolutionParameteri", (gl_function) glConvolutionParameteri },
 | 
			
		||||
      { "glConvolutionParameteriv", (gl_function) glConvolutionParameteriv },
 | 
			
		||||
      { "glCopyColorSubTable", (gl_function) glCopyColorSubTable },
 | 
			
		||||
      { "glCopyColorTable", (gl_function) glCopyColorTable },
 | 
			
		||||
      { "glCopyConvolutionFilter1D", (gl_function) glCopyConvolutionFilter1D },
 | 
			
		||||
      { "glCopyConvolutionFilter2D", (gl_function) glCopyConvolutionFilter2D },
 | 
			
		||||
      { "glGetColorTable", (gl_function) glGetColorTable },
 | 
			
		||||
      { "glGetColorTableParameterfv", (gl_function) glGetColorTableParameterfv },
 | 
			
		||||
      { "glGetColorTableParameteriv", (gl_function) glGetColorTableParameteriv },
 | 
			
		||||
      { "glGetConvolutionFilter", (gl_function) glGetConvolutionFilter },
 | 
			
		||||
      { "glGetConvolutionParameterfv", (gl_function) glGetConvolutionParameterfv },
 | 
			
		||||
      { "glGetConvolutionParameteriv", (gl_function) glGetConvolutionParameteriv },
 | 
			
		||||
      { "glGetHistogram", (gl_function) glGetHistogram },
 | 
			
		||||
      { "glGetHistogramParameterfv", (gl_function) glGetHistogramParameterfv },
 | 
			
		||||
      { "glGetHistogramParameteriv", (gl_function) glGetHistogramParameteriv },
 | 
			
		||||
      { "glGetMinmax", (gl_function) glGetMinmax },
 | 
			
		||||
      { "glGetMinmaxParameterfv", (gl_function) glGetMinmaxParameterfv },
 | 
			
		||||
      { "glGetMinmaxParameteriv", (gl_function) glGetMinmaxParameteriv },
 | 
			
		||||
      { "glGetSeparableFilter", (gl_function) glGetSeparableFilter },
 | 
			
		||||
      { "glHistogram", (gl_function) glHistogram },
 | 
			
		||||
      { "glMinmax", (gl_function) glMinmax },
 | 
			
		||||
      { "glResetHistogram", (gl_function) glResetHistogram },
 | 
			
		||||
      { "glResetMinmax", (gl_function) glResetMinmax },
 | 
			
		||||
      { "glSeparableFilter2D", (gl_function) glSeparableFilter2D },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_paletted_texture */
 | 
			
		||||
      { "glColorTableEXT", (gl_function) glColorTableEXT },
 | 
			
		||||
      { "glColorSubTableEXT", (gl_function) glColorSubTableEXT },
 | 
			
		||||
      { "glGetColorTableEXT", (gl_function) glGetColorTableEXT },
 | 
			
		||||
      { "glGetColorTableParameterfvEXT", (gl_function) glGetColorTableParameterfvEXT },
 | 
			
		||||
      { "glGetColorTableParameterivEXT", (gl_function) glGetColorTableParameterivEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_compiled_vertex_array */
 | 
			
		||||
      { "glLockArraysEXT", (gl_function) glLockArraysEXT },
 | 
			
		||||
      { "glUnlockArraysEXT", (gl_function) glUnlockArraysEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_point_parameters */
 | 
			
		||||
      { "glPointParameterfEXT", (gl_function) glPointParameterfEXT },
 | 
			
		||||
      { "glPointParameterfvEXT", (gl_function) glPointParameterfvEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_polygon_offset */
 | 
			
		||||
      { "glPolygonOffsetEXT", (gl_function) glPolygonOffsetEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_blend_minmax */
 | 
			
		||||
      { "glBlendEquationEXT", (gl_function) glBlendEquationEXT },
 | 
			
		||||
@@ -262,9 +660,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))()
 | 
			
		||||
      /* GL_EXT_blend_color */
 | 
			
		||||
      { "glBlendColorEXT", (gl_function) glBlendColorEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_polygon_offset */
 | 
			
		||||
      { "glPolygonOffsetEXT", (gl_function) glPolygonOffsetEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_vertex_arrays */
 | 
			
		||||
      { "glVertexPointerEXT", (gl_function) glVertexPointerEXT },
 | 
			
		||||
      { "glNormalPointerEXT", (gl_function) glNormalPointerEXT },
 | 
			
		||||
@@ -289,13 +684,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))()
 | 
			
		||||
      { "glTexSubImage3DEXT", (gl_function) glTexSubImage3DEXT },
 | 
			
		||||
      { "glCopyTexSubImage3DEXT", (gl_function) glCopyTexSubImage3DEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_color_table */
 | 
			
		||||
      { "glColorTableEXT", (gl_function) glColorTableEXT },
 | 
			
		||||
      { "glColorSubTableEXT", (gl_function) glColorSubTableEXT },
 | 
			
		||||
      { "glGetColorTableEXT", (gl_function) glGetColorTableEXT },
 | 
			
		||||
      { "glGetColorTableParameterfvEXT", (gl_function) glGetColorTableParameterfvEXT },
 | 
			
		||||
      { "glGetColorTableParameterivEXT", (gl_function) glGetColorTableParameterivEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_ARB_multitexture */
 | 
			
		||||
      { "glActiveTextureARB", (gl_function) glActiveTextureARB },
 | 
			
		||||
      { "glClientActiveTextureARB", (gl_function) glClientActiveTextureARB },
 | 
			
		||||
@@ -332,10 +720,6 @@ void (*gl_get_proc_address( const GLubyte *procName ))()
 | 
			
		||||
      { "glMultiTexCoord4sARB", (gl_function) glMultiTexCoord4sARB },
 | 
			
		||||
      { "glMultiTexCoord4svARB", (gl_function) glMultiTexCoord4svARB },
 | 
			
		||||
 | 
			
		||||
      /* GL_EXT_point_parameters */
 | 
			
		||||
      { "glPointParameterfEXT", (gl_function) glPointParameterfEXT },
 | 
			
		||||
      { "glPointParameterfvEXT", (gl_function) glPointParameterfvEXT },
 | 
			
		||||
 | 
			
		||||
      /* GL_INGR_blend_func_separate */
 | 
			
		||||
      { "glBlendFuncSeparateINGR", (gl_function) glBlendFuncSeparateINGR },
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: extensions.h,v 1.5 1999/10/16 11:30:27 brianp Exp $ */
 | 
			
		||||
/* $Id: extensions.h,v 1.5.2.1 1999/11/20 13:13:50 miklos Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Mesa 3-D graphics library
 | 
			
		||||
@@ -39,7 +39,7 @@
 | 
			
		||||
 */
 | 
			
		||||
extern int gl_extensions_add( struct gl_context *ctx, int state, 
 | 
			
		||||
			      const char *name, void (*notify)( void ) );
 | 
			
		||||
 | 
			
		||||
extern GLboolean gl_extension_is_enabled( GLcontext *ctx, const char *name);
 | 
			
		||||
extern int gl_extensions_enable( struct gl_context *ctx, const char *name );
 | 
			
		||||
extern int gl_extensions_disable( struct gl_context *ctx, const char *name );
 | 
			
		||||
extern void gl_extensions_dtr( struct gl_context *ctx );
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user