Compare commits

..

1 Commits

Author SHA1 Message Date
jtg
fd624c0601 Imported sources 1999-08-19 00:55:39 +00:00
1648 changed files with 66757 additions and 607181 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,108 +0,0 @@
# Mesa 3-D graphics library
# Version: 4.0
#
# 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.
# DOS/DJGPP makefile v1.4 for Mesa
#
# Copyright (C) 2002 - Borca Daniel
# Email : dborca@users.sourceforge.net
# Web : http://www.geocities.com/dborca
#
# Available options:
#
# Environment variables:
# CPU optimize for the given processor.
# default = pentium
# GLU=[mesa|sgi] specify GLU directory; can be `sgi' (requires GNU/C++)
# or `mesa'.
# default = mesa
# GLIDE path to Glide3 SDK; used with FX.
# default = $(TOP)/glide3
# FX=1 build for 3dfx Glide3. Note that this disables
# compilation of most DMesa code and requires fxMesa.
# As a consequence, you'll need the DJGPP Glide3
# library to build any application.
# default = no
# MATROX=1 build for Matrox Millennium I (MGA2064W) cards.
# This is experimental and not intensively tested.
# default = no
# HAVE_X86=1 optimize for i386.
# default = no
# HAVE_MMX=1 allow MMX specializations, provided your assembler
# supports MMX instruction set. However, the true CPU
# capabilities are checked at run-time to avoid crashes.
# default = no
# HAVE_SSE=1 (see HAVE_MMX)
# default = no
# HAVE_3DNOW=1 (see HAVE_MMX)
# default = no
#
# Targets:
# all: build everything
# libgl: build GL
# libglu: build GLU
# libglut: build GLUT
# clean: remove object files
# realclean: remove all generated files
#
.PHONY : all libgl libglu libglut clean realclean
CPU ?= pentium
GLU ?= mesa
CFLAGS = -Wall -W -pedantic
CFLAGS += -O2 -ffast-math -mcpu=$(CPU)
export CFLAGS
ifeq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
UNLINK = del $(subst /,\,$(1))
else
UNLINK = $(RM) $(1)
endif
all: libgl libglu libglut
libgl: lib
$(MAKE) -f Makefile.DJ -C src/mesa
libglu: lib
$(MAKE) -f Makefile.DJ -C src/glu/$(GLU)
libglut: lib
$(MAKE) -f Makefile.DJ -C src/glut/dos
lib:
mkdir lib
clean:
$(MAKE) -f Makefile.DJ clean -C src/mesa
$(MAKE) -f Makefile.DJ clean -C src/glu/mesa
$(MAKE) -f Makefile.DJ clean -C src/glu/sgi
$(MAKE) -f Makefile.DJ clean -C src/glut/dos
realclean: clean
-$(call UNLINK,lib/*.a)
-$(call UNLINK,lib/*.dxe)

File diff suppressed because it is too large Load Diff

View File

@@ -1,91 +0,0 @@
# Mesa 3-D graphics library
# Version: 4.0
#
# 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.
# MinGW makefile v1.0 for Mesa
#
# Copyright (C) 2002 - Borca Daniel
# Email : dborca@users.sourceforge.net
# Web : http://www.geocities.com/dborca
#
# Available options:
#
# Environment variables:
# CPU optimize for the given processor.
# default = pentium
# GLIDE path to Glide3 SDK; used with FX.
# default = $(TOP)/glide3
# FX=1 build for 3dfx Glide3. Note that this disables
# compilation of most WMesa code and requires fxMesa.
# As a consequence, you'll need the Win32 Glide3
# library to build any application.
# default = no
# HAVE_X86=1 optimize for i386.
# default = no
# HAVE_MMX=1 allow MMX specializations, provided your assembler
# supports MMX instruction set. However, the true CPU
# capabilities are checked at run-time to avoid crashes.
# default = no
# HAVE_SSE=1 (see HAVE_MMX)
# default = no
# HAVE_3DNOW=1 (see HAVE_MMX)
# default = no
#
# Targets:
# all: build everything
# libgl: build GL
# clean: remove object files
# realclean: remove all generated files
#
.PHONY : all libgl clean realclean
CPU ?= pentium
CFLAGS = -Wall -W -pedantic
CFLAGS += -O2 -ffast-math -mcpu=$(CPU)
export CFLAGS
ifeq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
UNLINK = del $(subst /,\,$(1))
else
UNLINK = $(RM) $(1)
endif
all: libgl
libgl: lib
$(MAKE) -f Makefile.mgw -C src/mesa
lib:
mkdir lib
clean:
$(MAKE) -f Makefile.mgw clean -C src/mesa
realclean: clean
-$(call UNLINK,lib/*.a)
-$(call UNLINK,lib/*.dll)

179
Mesa.dsw
View File

@@ -1,179 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "array_cache"=".\SRC\MESA\array_cache\array_cache.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "gdi"=".\src\mesa\drivers\windows\gdi\gdi.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name array_cache
End Project Dependency
Begin Project Dependency
Project_Dep_Name main
End Project Dependency
Begin Project Dependency
Project_Dep_Name math
End Project Dependency
Begin Project Dependency
Project_Dep_Name swrast_setup
End Project Dependency
Begin Project Dependency
Project_Dep_Name swrast
End Project Dependency
Begin Project Dependency
Project_Dep_Name tnl
End Project Dependency
Begin Project Dependency
Project_Dep_Name glapi
End Project Dependency
}}}
###############################################################################
Project: "glapi"=".\SRC\MESA\glapi\glapi.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "glu"=".\src\glu\sgi\glu.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name gdi
End Project Dependency
}}}
###############################################################################
Project: "glut"=".\src\glut\glx\glut.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name glu
End Project Dependency
}}}
###############################################################################
Project: "main"=".\SRC\MESA\main\main.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "math"=".\SRC\MESA\math\math.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "osmesa"=".\SRC\MESA\DRIVERS\osmesa\osmesa.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name gdi
End Project Dependency
}}}
###############################################################################
Project: "swrast"=".\SRC\MESA\swrast\swrast.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "swrast_setup"=".\SRC\MESA\swrast_setup\swrast_setup.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "tnl"=".\SRC\MESA\tnl\tnl.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

331
bin/mklib
View File

@@ -1,331 +0,0 @@
#!/bin/sh
# Make a shared library.
# Basically do a switch/case depending on the OS and make a shared
# lib conforming to that OS.
# Usage:
# mklib [options] objects ...
# Options:
# -o LIBRARY specifies the name of resulting library ("GL" for example)
# -major N specifies major version number (default is 1)
# -minor N specifies minor version number (default is 0)
# -patch N specifies patch version number (default is 0)
# -lLIBRARY specifies a dependency on LIBRARY
# -LDIR search in DIR for library dependencies
# -cplusplus link with C++ runtime
# -static make a static library (default is dynamic/shared)
# -install DIR move resulting library files to DIR
# -arch ARCH override using `uname` to determine architecture
# -archopt OPT specify an extra achitecture-specific option OPT
#
# The library name should just be "GL" or "GLU", etc. The 'lib' prefix
# will be added here if needed, as well as the ".so" or ".a" suffix, etc.
#
# objects should be: foo.o bar.o etc.o
#
# Environment variables recognized:
# CC C compiler command
# CXX C++ compiler command
#
#
# Option defaults
#
LIBNAME=""
MAJOR=1
MINOR=0
PATCH=0
DEPS=""
CPLUSPLUS=0
STATIC=0
INSTALLDIR="."
ARCH="auto"
ARCHOPT=""
#
# Parse arguments
#
while true
do
case $1 in
'-o') shift 1; LIBNAME=$1;;
'-major') shift 1; MAJOR=$1;;
'-minor') shift 1; MINOR=$1;;
'-patch') shift 1; PATCH=$1;;
-l*) DEPS="$DEPS $1";;
-L*) DEPS="$DEPS $1";;
'-cplusplus') CPLUSPLUS=1;;
'-static') STATIC=1;;
'-install') shift 1; INSTALLDIR=$1;;
'-arch') shift 1; ARCH=$1;;
'-archopt') shift 1; ARCHOPT=$1;;
-*) echo "mklib: Unknown option: " $1 ; exit 1;;
*) break
esac
shift 1
done
OBJECTS=$@
if [ ${ARCH} = "auto" ] ; then
ARCH=`uname`
fi
#
# Error checking
#
if [ "x${LIBNAME}" = "x" ] ; then
echo "mklib: Error: no library name specified"
exit 1
fi
if [ "x${OBJECTS}" = "x" ] ; then
echo "mklib: Error: no object files specified"
exit 1
fi
#
# Debugging info
#
if [ ] ; then
echo "-----------------"
echo ARCH is $ARCH
echo LIBNAME is $LIBNAME
echo MAJOR is $MAJOR
echo MINOR is $MINOR
echo PATCH is $PATCH
echo DEPS are $DEPS
echo "-----------------"
fi
#
# OK, make the library now
#
case $ARCH in
'Linux')
LIBNAME="lib${LIBNAME}" # prefix with "lib"
OPTS="-Xlinker -Bsymbolic -shared -Wl,-soname,${LIBNAME}.so.${MAJOR}"
VERSION="${MAJOR}.${MINOR}.${PATCH}"
echo "mklib: Making Linux shared library: " ${LIBNAME}.so.${VERSION}
if [ $CPLUSPLUS = 1 ] ; then
LINK="g++"
else
LINK="gcc"
fi
# rm any old libs
rm -f ${LIBNAME}.so.${VERSION}
rm -f ${LIBNAME}.so.${MAJOR}
rm -f ${LIBNAME}.so
# make lib
${LINK} ${OPTS} -o ${LIBNAME}.so.${VERSION} ${OBJECTS} ${DEPS}
# make usual symlinks
ln -s ${LIBNAME}.so.${VERSION} ${LIBNAME}.so.${MAJOR}
ln -s ${LIBNAME}.so.${MAJOR} ${LIBNAME}.so
# finish up
FINAL_LIBS="${LIBNAME}.so.${VERSION} ${LIBNAME}.so.${MAJOR} ${LIBNAME}.so"
;;
'SunOS')
LIBNAME="lib${LIBNAME}.so"
echo "mklib: Making SunOS shared library: " ${LIBNAME}
OPTS="-G"
if [ $CPLUSPLUS = 1 ] ; then
# link for C++
if [ "x${CXX}" = "xg++" ] ; then
LINK="g++"
elif [ "x${CXX}" = "xCC" ] ; then
LINK="CC"
elif [ `which c++` ] ; then
LINK="c++"
elif [ `type g++` ] ; then
LINK="g++"
else
echo "mklib: warning: can't find C++ comiler, trying CC."
LINK="CC"
fi
elif [ "x${CC}" = "xgcc" ] ; then
# use gcc for linking
LINK="gcc"
else
# use native Sun linker
LINK="ld"
fi
echo "mklib: linker is " ${LINK}
rm -f ${LIBNAME}
${LINK} ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
FINAL_LIBS=${LIBNAME}
;;
'FreeBSD')
SHLIB="lib${LIBNAME}.so.${MAJOR}.${MINOR}"
STLIB="lib${LIBNAME}.a"
echo "mklib: Making FreeBSD shared library: " ${SHLIB}
rm -f ${SHLIB} ${STLIB}
ar cq ${STLIB} ${OBJECTS}
ranlib ${STLIB}
ld -Bshareable -o ${SHLIB} ${OBJECTS}
# XXX make lib${LIBNAME}.so.${MAJOR} symlink?
FINAL_LIBS="${SHLIB} ${STLIB}"
;;
'OpenBSD')
LIBNAME="lib${LIBNAME}"
VERSION="${MAJOR}.${MINOR}"
echo "Building OpenBSD PIC library: " ${LIBNAME}
rm -f ${LIBNAME}_pic.a ${LIBNAME}.so.${VERSION}
ar cq ${LIBNAME}_pic.a ${OBJECTS}
ranlib ${LIBNAME}_pic.a
ld -x -Bshareable -Bforcearchive -o ${LIBNAME}.so.${VERSION} ${LIBNAME}_pic.a
ln -s ${LIBNAME}.so.${VERSION} ${LIBNAME}.so
FINAL_LIBS="${LIBNAME}_pic.a ${LIBNAME}.so.${VERSION} ${LIBNAME}.so"
;;
'NetBSD')
LIBNAME="lib${LIBNAME}"
echo "mklib: Making NetBSD PIC shared library: " ${LIBNAME}
VERSION="${MAJOR}.${MINOR}"
rm -f ${LIBNAME}_pic.a ${LIBNAME}.so.${VERSION}
ar cq ${LIBNAME}_pic.a ${OBJECTS}
ranlib ${LIBNAME}_pic.a
ld -x -Bshareable -Bforcearchive -o ${LIBNAME}.so.${VERSION} ${LIBNAME}_pic.a
FINAL_LIBS="${LIBNAME}_pic.a ${LIBNAME}.so.${VERSION}"
;;
'IRIX')
LIBNAME="lib${LIBNAME}.so" # prefix with "lib", suffix with ".so"
if [ $ARCHOPTS = "64" ] ; then
# 64-bit ABI
OPTS="-64 -shared -all"
echo "mklib: Making IRIX 64-bit shared library: " ${LIBNAME}
elif [ $ARCHOPTS = "o32" ] ; then
# old 32-bit ABI
OPTS="-32 -shared -all"
echo "mklib: Making IRIX o32-bit shared library: " ${LIBNAME}
else
# new 32-bit ABI
OPTS="-n32 -shared -all"
echo "mklib: Making IRIX n32-bit shared library: " ${LIBNAME}
fi
ld ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
FINAL_LIBS="${LIBNAME}"
;;
'IRIX64')
LIBNAME="lib${LIBNAME}.so" # prefix with "lib", suffix with ".so"
echo "mklib: Making IRIX64 library: " ${LIBNAME}
# 64-bit ABI
OPTS="-64 -shared -all"
ld ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
FINAL_LIBS="${LIBNAME}"
;;
'linux-cygwin')
LIBNAME="lib${LIBNAME}.a"
echo "mklib: Making linux-cygwin library: " ${LIBNAME}
gnuwin32ar ruv ${LIBNAME} ${OBJECTS}
FINAL_LIBS=${LIBNAME}
;;
'HPUX')
RUNLIB="lib${LIBNAME}.${MAJOR}"
DEVLIB="lib${LIBNAME}.sl"
echo "mklib: Making HPUX library: " ${RUNLIB} ${DEVLIB}
ld -b -o ${RUNLIB} +b ${RUNLIB} ${OBJECTS} ${DEPS}
ln -s ${RUNLIB} ${DEVLIB}
FINAL_LIBS="{RUNLIB} ${DEVLIB}"
;;
'OpenSTEP')
LIBNAME="lib${LIBNAME}.a"
echo "mklib: Making OpenSTEP static library: " ${LIBNAME}
libtool -static -o ${LIBNAME} - ${OBJECTS}
FINAL_LIBS=${LIBNAME}
;;
'OSF1')
VERSION="${MAJOR}.${MINOR}"
LIBNAME="lib${LIBNAME}.so"
ARNAME="lib${LIBNAME}.a"
echo "mklib: Making OSF/1 library: " ${LIBNAME}
rm -f ${LIBNAME}.${VERSION}
ld -o ${LIBNAME}.${VERSION} -shared -no_archive -set_version ${VERSION} -soname ${LIBNAME}.${VERSION} -expect_unresolved \* -all ${OBJECTS} ${DEPS}
ln -sf ${LIBNAME}.${VERSION} ${LIBNAME}
# also make static lib
rm -f ${ARNAME}
ar clqz ${ARNAME} ${OBJECTS}
FINAL_LIBS="${ARNAME} ${LIBNAME} ${LIBNAME}.${VERSION}"
;;
'Darwin')
VERSION="${MAJOR}.${MINOR}.${TINY}"
LIBNAME="lib${LIBNAME}.dylib"
ARNAME="lib${LIBNAME}.dylib.a"
echo "mklib: Making Darwin libraries: " ${LIBNAME} ${ARNAME}
FLAGS="-dynamiclib -multiply_defined suppress"
cc ${FLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
# also make regular .a files,
# provided by Danek Duvall (duvall@dhduvall.student.princeton.edu)
ar ruv ${ARNAME} ${OBJECTS}
ranlib ${ARNAME}
FINAL_LIBS="${ARNAME} ${LIBNAME}"
;;
'LynxOS')
LIBNAME="lib${LIBNAME}.a"
echo "mklib: Making LynxOS library: " ${LIBNAME}
ar ru ${LIBNAME} ${OBJECTS}
FINAL_LIBS=${LIBNAME}
;;
'BeOS')
LIBNAME="lib${LIBNAME}.so"
echo "mklib: Making BeOS shared library: " ${LIBNAME}
gcc -nostart -Xlinker -soname=${LIBNAME} -L/Be/develop/lib/x86 ${OBJECTS} -lbe -o ${LIBNAME}
FINAL_LIBS=${LIBNAME}
;;
'QNX')
LIBNAME="lib${LIBNAME}.a"
echo "mklib: Making QNX library: " ${LIBNAME}
wlib ${LIBNAME} ${OBJECTS}
FINAL_LIBS=${LIBNAME}
;;
'example')
# If you're adding support for a new architecture, you can
# start with this:
LIBNAME="lib${LIBNAME}.so" # prefix with "lib"
echo "mklib: Making library for example arch: " ${LIBNAME}
ld -o ${LIBNAME} ${OBJECTS} ${DEPS}
FINAL_LIBS="${LIBNAME}"
;;
*)
echo "mklib: WARNING: making library for unknown platform!"
echo "mklib: WARNING: this may not work!"
echo "mklib: WARNING: please update the bin/mklib script!"
# XXX this is a total hack for Mesa - remove someday
# fall-back to an old mklib.* script
${MAKELIB} "lib${LIBNAME}.a" ${MAJOR} ${MINOR} ${PATCH} ${OBJECTS}
;;
esac
#
# Put library files into installation directory if specified.
#
if [ ${INSTALLDIR} != "." ] ; then
echo "mklib: Installing" ${FINAL_LIBS} "in" ${INSTALLDIR}
mv ${FINAL_LIBS} ${INSTALLDIR}/
fi

View File

@@ -1,153 +0,0 @@
#!/bin/ksh
# Make an AIX shared library (tricky!!!)
# Based on a script from Athanasios G. Gaitatzes (gaitat@vnet.ibm.com)
# Improved by Greg Thompson <gregt@visix.com> -gt
#--identification------------------------------------------------------
# $Id: mklib.aix,v 1.2 1999/09/15 15:10:20 brianp Exp $
# $Log: mklib.aix,v $
# Revision 1.2 1999/09/15 15:10:20 brianp
# added third, tiny version number to arguments
#
# Revision 1.1 1999/08/19 13:52:56 brianp
# initial check-in (post-crash)
#
#--common--------------------------------------------------------------
LIBRARY=$1
shift 1
MAJOR=$1
shift 1
MINOR=$1
shift 1
TINY=$1
shift 1
OBJECTS=$*
#--platform------------------------------------------------------------
# BASENAME = LIBRARY without .a suffix
BASENAME=`echo ${LIBRARY} | sed "s/\.a//g"`
# Name of exports file
EXPFILE=${BASENAME}.exp
# Name of temporary shared lib file
OFILE=shr.o
####OFILE=${BASENAME}.o
# Remove any old files from previous make
rm -f ${LIBRARY} ${EXPFILE} ${OFILE}
# Pick a way to use nm -gt
NM=${NM-/bin/nm -eC}
# Determine which version of AIX this is
AIXVERSION=`uname -v`
# Pick a way to tell the linker there's no entrypoint -gt
case ${AIXVERSION}
{
3*)
ENTRY='-e _nostart'
;;
4*)
ENTRY=-bnoentry
;;
*)
echo "Error in mklib.aix!"
exit 1
;;
}
# Other libraries which we may be dependent on. Since we make the libraries
# in the order libGL.a, libaGLU.a, libglut.a just depends on its predecessor.
# modified to make otherlibs in the form of -lfoo -gt
OTHERLIBS=`ls ../lib/*.a | sed "s/..\/lib\/lib/-l/g" | sed "s/\.a//g"`
##echo OTHERLIBS are ${OTHERLIBS}
# Make exports (.exp) file header
echo "#! ${LIBRARY}" > ${EXPFILE}
# Append list of exported symbols to exports file -gt
case ${AIXVERSION}
{
3*)
${NM} ${OBJECTS} | awk -F'|' '{
if ($3 != "extern" || substr($7,1,1) == " ") continue
sub (" *", "", $1); sub (" *", "", $7)
if ( (($7 == ".text") || ($7 == ".data") || ($7 == ".bss")) \
&& ( substr($1,1,1) != ".")) {
if (substr ($1, 1, 7) != "__sinit" &&
substr ($1, 1, 7) != "__sterm") {
if (substr ($1, 1, 5) == "__tf1")
print (substr ($1, 7))
else if (substr ($1, 1, 5) == "__tf9")
print (substr ($1, 15))
else
print $1
}
}
}' | sort -u >> ${EXPFILE}
;;
4*)
${NM} ${OBJECTS} | awk '{
if ((($2 == "T") || ($2 == "D") || ($2 == "B")) \
&& ( substr($1,1,1) != ".")) {
if (substr ($1, 1, 7) != "__sinit" &&
substr ($1, 1, 7) != "__sterm") {
if (substr ($1, 1, 5) == "__tf1")
print (substr ($1, 7))
else if (substr ($1, 1, 5) == "__tf9")
print (substr ($1, 15))
else
print $1
}
}
}' | sort -u >> ${EXPFILE}
;;
}
# This next line is a hack to allow full compatibility with IBM's OpenGL
# libraries. IBM mistakenly exports glLoadIdentity from the libGLU.a
# library. We have to do the same thing. Problem reported by Yemi Adesanya
# (adesanya@afsmail.cern.ch) and Patrick Brown (pbrown@austin.ibm.com)
if [ "${BASENAME}" = libGLU ] ; then
echo "glLoadIdentity" >> ${EXPFILE}
fi
# Make the shared lib file
cc -o ${OFILE} ${OBJECTS} -L../lib ${OTHERLIBS} -lX11 -lXext -lXmu -lXi -lm -lc -bE:${EXPFILE} -bM:SRE ${ENTRY}
# Make the .a file
ar ruv ${LIBRARY} ${OFILE}
# Put exports file in Mesa lib directory
mv ${EXPFILE} ../lib
# Remove OFILE
rm -f ${OFILE}
#NOTES
# AIX 4.x /usr/bin/nm -B patch from ssclift@mach.me.queensu.ca (Simon Clift)
# Robustified symbol extraction for AIX 3 and 4
# Greg Thompson <gregt@visix.com>

View File

@@ -1,38 +0,0 @@
#!/bin/sh
# Make a standard Unix .a library file with 'ar ruv'
#--identification------------------------------------------------------
# $Id: mklib.ar-ruv,v 1.2 1999/09/15 15:10:20 brianp Exp $
# $Log: mklib.ar-ruv,v $
# Revision 1.2 1999/09/15 15:10:20 brianp
# added third, tiny version number to arguments
#
# Revision 1.1 1999/08/19 13:52:57 brianp
# initial check-in (post-crash)
#
#--common--------------------------------------------------------------
LIBRARY=$1
shift 1
MAJOR=$1
shift 1
MINOR=$1
shift 1
TINY=$1
shift 1
OBJECTS=$*
#--platform-------------------------------------------------------------
#ar ruv $LIBRARY $OBJECTS
ar ru $LIBRARY $OBJECTS

View File

@@ -1,21 +0,0 @@
# Makefile for Mesa for VMS
# contributed by Jouk Jansen joukj@hrem.stm.tudelft.nl
macro :
@ macro=""
.ifdef NOSHARE
.else
@ if f$getsyi("HW_MODEL") .ge. 1024 then macro= "/MACRO=(SHARE=1)"
.endif
$(MMS)$(MMSQUALIFIERS)'macro' all
all :
if f$search("lib.dir") .eqs. "" then create/directory [.lib]
set default [.src]
$(MMS)$(MMSQUALIFIERS)
set default [-.progs.demos]
$(MMS)$(MMSQUALIFIERS)
set default [-.xdemos]
$(MMS)$(MMSQUALIFIERS)
set default [-.tests]
$(MMS)$(MMSQUALIFIERS)

View File

@@ -1,94 +0,0 @@
Name
MESA_agp_offset
Name Strings
GLX_MESA_agp_offset
Contact
Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
Status
Shipping (Mesa 4.0.4 and later. Only implemented in particular
XFree86/DRI drivers.)
Version
1.0
Number
TBD
Dependencies
OpenGL 1.0 or later is required
GLX_NV_vertex_array_range is required.
This extensions is written against the OpenGL 1.4 Specification.
Overview
This extensions provides a way to convert pointers in an AGP memory
region into byte offsets into the AGP aperture.
Note, this extension depends on GLX_NV_vertex_array_range, for which
no real specification exists. See GL_NV_vertex_array_range for more
information.
IP Status
None
Issues
None
New Procedures and Functions
GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )
New Tokens
None
Additions to the OpenGL 1.4 Specification
None
Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors)
Add a new section, 3.6 as follows:
3.6 AGP Memory Access
On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV
and freed with glXFreeMemoryNV. Sometimes it's useful to know where a
block of AGP memory is located with respect to the start of the AGP
aperature. The function
GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )
Returns the offset of the given memory block from the start of AGP
memory in basic machine units (i.e. bytes). If pointer is invalid
the value ~0 will be returned.
GLX Protocol
None. This is a client side-only extension.
Errors
glXGetAGPOffsetMESA will return ~0 if the pointer does not point to
an AGP memory region.
New State
None
Revision History
20 September 2002 - Initial draft
2 October 2002 - finished GLX chapter 3 additions

View File

@@ -1,88 +0,0 @@
Name
MESA_copy_sub_buffer
Name Strings
GLX_MESA_copy_sub_buffer
Contact
Brian Paul (brian 'at' mesa3d.org)
Status
Shipping since Mesa 2.6 in February, 1998.
Version
Last Modified Date: 8 June 2000
Number
215
Dependencies
OpenGL 1.0 or later is required.
GLX 1.0 or later is required.
Overview
The glxCopySubBufferMESA() function copies a rectangular region
of the back color buffer to the front color buffer. This can be
used to quickly repaint 3D windows in response to expose events
when the back color buffer cannot be damaged by other windows.
IP Status
Open-source; freely implementable.
Issues
None.
New Procedures and Functions
void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
int x, int y, int width, int height );
New Tokens
None.
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
Add to section 3.3.10 Double Buffering:
The function
void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
int x, int y, int width, int height );
may be used to copy a rectangular region of the back color buffer to
the front color buffer. This can be used to quickly repaint 3D windows
in response to expose events when the back color buffer cannot be
damaged by other windows.
<x> and <y> indicates the lower-left corner of the region to copy and
<width> and <height> indicate the size in pixels. Coordinate (0,0)
corresponds to the lower-left pixel of the window, like glReadPixels.
GLX Protocol
None at this time. The extension is implemented in terms of ordinary
Xlib protocol inside of Mesa.
Errors
None.
New State
None.
Revision History
8 June 2000 - initial specification

View File

@@ -1,138 +0,0 @@
Name
MESA_pack_invert
Name Strings
GL_MESA_pack_invert
Contact
Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
Status
Shipping (Mesa 4.0.4 and later)
Version
1.0
Number
TBD
Dependencies
OpenGL 1.0 or later is required
This extensions is written against the OpenGL 1.4 Specification.
Overview
This extension adds a new pixel storage parameter to indicate that
images are to be packed in top-to-bottom order instead of OpenGL's
conventional bottom-to-top order. Only pixel packing can be
inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter,
etc).
Almost all known image file formats store images in top-to-bottom
order. As it is, OpenGL reads images from the frame buffer in
bottom-to-top order. Thus, images usually have to be inverted before
writing them to a file with image I/O libraries. This extension
allows images to be read such that inverting isn't needed.
IP Status
None
Issues
1. Should we also defined UNPACK_INVERT_MESA for glDrawPixels, etc?
Resolved: No, we're only concerned with pixel packing. There are other
solutions for inverting images when using glDrawPixels (negative Y pixel
zoom) or glTexImage (invert the vertex T coordinates). It would be easy
enough to define a complementary extension for pixel packing in the
future if needed.
New Procedures and Functions
None
New Tokens
Accepted by the <pname> parameter of PixelStorei and PixelStoref
and the <pname> parameter of GetIntegerv, GetFloatv, GetDoublev
and GetBooleanv:
PACK_INVERT_MESA 0x8758
Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
None
Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
Operations and the Frame Buffer)
Add the following entry to table 4.4 (PixelStore parameters) on page 182:
Parameter Name Type Initial Value Valid Range
---------------------------------------------------------
PACK_INVERT_MESA boolean FALSE TRUE/FALSE
In the section labeled "Placement in Client Memory" on page 184
insert the following text into the paragraph before the sentence
that starts with "If the format is RED, GREEN, BLUE...":
"The parameter PACK_INVERT_MESA controls whether the image is packed
in bottom-to-top order (the default) or top-to-bottom order. Equation
3.8 is modified as follows:
... the first element of the Nth row is indicated by
p + Nk, if PACK_INVERT_MESA is false
p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the
image height
"
Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
None
Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
State Requests)
None
Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
None
Additions to the AGL/GLX/WGL Specifications
None
GLX Protocol
None
Errors
None
New State
Add the following entry to table 6.20 (Pixels) on page 235:
Get Value Type Get Cmd Initial Value Description Sec Attribute
--------------------------------------------------------------------------------------------------
PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store
Revision History
21 September 2002 - Initial draft

View File

@@ -1,231 +0,0 @@
Name
MESA_packed_depth_stencil
Name Strings
GL_MESA_packed_depth_stencil
Contact
Keith Whitwell, VA Linux Systems Inc. (keithw 'at' valinux.com)
Brian Paul, VA Linux Systems Inc. (brianp 'at' valinux.com)
Status
Obsolete.
Version
$Id: MESA_packed_depth_stencil.spec,v 1.2 2003/09/19 14:58:21 brianp Exp $
Number
???
Dependencies
EXT_abgr affects the definition of this extension
SGIS_texture4D affects the definition of this extension
EXT_cmyka affects the definition of this extension
ARB_packed_pixels affects the definition of this extension
Overview
Provides a mechanism for DrawPixels and ReadPixels to efficiently
transfer depth and stencil image data. Specifically, we defined new
packed pixel formats and types which pack both stencil and depth
into one value.
Issues:
1. Is this the right way to distinguish between 24/8 and 8/24
pixel formats? Should we instead provide both:
GL_DEPTH_STENCIL_MESA
GL_STENCIL_DEPTH_MESA
And perhaps just use GL_UNSIGNED_INT, GL_UNSIGNED_SHORT ?
2. If not, is it correct to use _REV to indicate that stencil
preceeds depth in the 1_15 and 8_24 formats?
3. Do we really want the GL_UNSIGNED_SHORT formats?
New Procedures and Functions
None.
New Tokens
Accepted by the <format> parameter of ReadPixels and DrawPixels:
GL_DEPTH_STENCIL_MESA 0x8750
Accepted by the <type> parameter of ReadPixels and DrawPixels:
GL_UNSIGNED_INT_24_8_MESA 0x8751
GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
GL_UNSIGNED_SHORT_15_1_MESA 0x8753
GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.1 Specification (Rasterization)
One entry is added to table 3.5 (DrawPixels and ReadPixels formats).
The new table is:
Target
Format Name Buffer Element Meaning and Order
----------- ------ -------------------------
COLOR_INDEX Color Color index
STENCIL_INDEX Stencil Stencil index
DEPTH_COMPONENT Depth Depth component
RED Color R component
GREEN Color G component
BLUE Color B component
ALPHA Color A component
RGB Color R, G, B components
RGBA Color R, G, B, A components
BGRA Color B, G, R, A components
ABGR_EXT Color A, B, G, R components
CMYK_EXT Color Cyan, Magenta, Yellow, Black components
CMYKA_EXT Color Cyan, Magenta, Yellow, Black, A components
LUMINANCE Color Luminance component
LUMINANCE_ALPHA Color Luminance, A components
DEPTH_STENCIL Depth, Depth component, stencil index.
Stencil
Table 3.5: DrawPixels and ReadPixels formats. The third column
gives a description of and the number and order of elements in a
group.
Add to the description of packed pixel formats:
<type> Parameter Data of Matching
Token Name Type Elements Pixel Formats
---------------- ---- -------- -------------
UNSIGNED_BYTE_3_3_2 ubyte 3 RGB
UNSIGNED_BYTE_2_3_3_REV ubyte 3 RGB
UNSIGNED_SHORT_5_6_5 ushort 3 RGB
UNSIGNED_SHORT_5_6_5_REV ushort 3 RGB
UNSIGNED_SHORT_4_4_4_4 ushort 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
UNSIGNED_SHORT_4_4_4_4_REV ushort 4 RGBA,BGRA
UNSIGNED_SHORT_5_5_5_1 ushort 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
UNSIGNED_SHORT_1_5_5_5_REV ushort 4 RGBA,BGRA
UNSIGNED_INT_8_8_8_8 uint 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
UNSIGNED_INT_8_8_8_8_REV uint 4 RGBA,BGRA
UNSIGNED_INT_10_10_10_2 uint 4 RGBA,BGRA,ABGR_EXT,CMYK_EXT
UNSIGNED_INT_2_10_10_10_REV uint 4 RGBA,BGRA
UNSIGNED_SHORT_15_1_MESA ushort 2 DEPTH_STENCIL_MESA
UNSIGNED_SHORT_1_15_REV_MESA ushort 2 DEPTH_STENCIL_MESA
UNSIGNED_SHORT_24_8_MESA ushort 2 DEPTH_STENCIL_MESA
UNSIGNED_SHORT_8_24_REV_MESA ushort 2 DEPTH_STENCIL_MESA
UNSIGNED_INT_8_24:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-----------------------+-----------------------------------------------------------------------+
| | |
+-----------------------+-----------------------------------------------------------------------+
first second
element element
UNSIGNED_INT_24_8:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+----------------------------------------------------------------------+------------------------+
| | |
+----------------------------------------------------------------------+------------------------+
first second
element element
UNSIGNED_SHORT_15_1:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-----------------------------------------------------------+---+
| | |
+-----------------------------------------------------------+---+
first second
element element
UNSIGNED_SHORT_1_15_REV:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+---+-----------------------------------------------------------+
| | |
+---+-----------------------------------------------------------+
second first
element element
The assignment of elements to fields in the packed pixel is as
described in the table below:
First Second Third Fourth
Format Element Element Element Element
------ ------- ------- ------- -------
RGB red green blue
RGBA red green blue alpha
BGRA blue green red alpha
ABGR_EXT alpha blue green red
CMYK_EXT cyan magenta yellow black
DEPTH_STENCIL_MESA depth stencil
Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
and the Frame Buffer)
The new format is added to the discussion of Obtaining Pixels from the
Framebuffer. It should read " If the <format> is one of RED, GREEN,
BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA, and
the GL is in color index mode, then the color index is obtained."
The new format is added to the discussion of Index Lookup. It should
read "If <format> is one of RED, GREEN, BLUE, ALPHA, RGB, RGBA,
ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA, then the index is used to
reference 4 tables of color components: PIXEL_MAP_I_TO_R,
PIXEL_MAP_I_TO_G, PIXEL_MAP_I_TO_B, and PIXEL_MAP_I_TO_A."
Additions to Chapter 5 of the 1.1 Specification (Special Functions)
None
Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
None
Additions to the GLX Specification
None
GLX Protocol
TBD
Errors
None
New State
None
Revision History
Version 1.0 - 23 Sep 2000
Keith's original version.
Version 1.1 - 3 Nov 2000
Brian's edits, assigned values to new enums.

View File

@@ -1,90 +0,0 @@
Name
MESA_pixmap_colormap
Name Strings
GLX_MESA_pixmap_colormap
Contact
Brian Paul (brian 'at' mesa3d.org)
Status
Shipping since Mesa 1.2.8 in May, 1996.
Version
Last Modified Date: 8 June 2000
Number
216
Dependencies
OpenGL 1.0 or later is required.
GLX 1.0 or later is required.
Overview
Since Mesa allows RGB rendering into drawables with PseudoColor,
StaticColor, GrayScale and StaticGray visuals, Mesa needs a colormap
in order to compute pixel values during rendering.
The colormap associated with a window can be queried with normal
Xlib functions but there is no colormap associated with pixmaps.
The glXCreateGLXPixmapMESA function is an alternative to glXCreateGLXPixmap
which allows specification of a colormap.
IP Status
Open-source; freely implementable.
Issues
None.
New Procedures and Functions
GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
Pixmap pixmap, Colormap cmap );
New Tokens
None.
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
Add to section 3.4.2 Off Screen Rendering
The Mesa implementation of GLX allows RGB rendering into X windows and
pixmaps of any visual class, not just TrueColor or DirectColor. In order
to compute pixel values from RGB values Mesa requires a colormap.
The function
GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
Pixmap pixmap, Colormap cmap );
allows one to create a GLXPixmap with a specific colormap. The image
rendered into the pixmap may then be copied to a window (which uses the
same colormap and visual) with the expected results.
GLX Protocol
None since this is a client-side extension.
Errors
None.
New State
None.
Revision History
8 June 2000 - initial specification

View File

@@ -1,357 +0,0 @@
Name
MESA_program_debug
Name Strings
GL_MESA_program_debug
Contact
Brian Paul (brian @ tungstengraphics.com)
Status
XXX - Not complete yet!!!
Version
Last Modified Date: July 20, 2003
Author Revision: 1.0
$Date: 2003/09/23 14:46:11 $ $Revision: 1.3 $
Number
TBD
Dependencies
OpenGL 1.4 is required
The extension is written against the OpenGL 1.4 specification.
ARB_vertex_program or ARB_fragment_program or NV_vertex_program
or NV_fragment_program is required.
Overview
The extension provides facilities for implementing debuggers for
vertex and fragment programs.
The concept is that vertex and fragment program debuggers will be
implemented outside of the GL as a utility package. This extension
only provides the minimal hooks required to implement a debugger.
There are facilities to do the following:
1. Have the GL call a user-specified function prior to executing
each vertex or fragment instruction.
2. Query the current program string's execution position.
3. Query the current values of intermediate program values.
The main feature is the ProgramCallbackMESA function. It allows the
user to register a callback function with the GL. The callback will
be called prior to executing each vertex or fragment program instruction.
From within the callback, the user may issue Get* commands to
query current GL state. The GetProgramRegisterfvMESA function allows
current program values to be queried (such as temporaries, input
attributes, and result registers).
There are flags for enabling/disabling the program callbacks.
The current execution position (as an offset from the start of the
program string) can be queried with
GetIntegerv(GL_FRAGMENT_PROGRAM_POSITION_MESA, &pos) or
GetIntegerv(GL_VERTEX_PROGRAM_POSITION_MESA, &pos).
IP Status
None
Issues
1. Is this the right model for a debugger?
It seems prudent to minimize the scope of this extension and leave
it up to the developer (or developer community) to write debuggers
that layer on top of this extension.
If the debugger were fully implemented within the GL it's not
clear how terminal and GUI-based interfaces would work, for
example.
2. There aren't any other extensions that register callbacks with
the GL. Isn't there another solution?
If we want to be able to single-step through vertex/fragment
programs I don't see another way to do it.
3. How do we prevent the user from doing something crazy in the
callback function, like trying to call glBegin (leading to
recursion)?
The rule is that the callback function can only issue glGet*()
functions and no other GL commands. It could be difficult to
enforce this, however. Therefore, calling any non-get GL
command from within the callback will result in undefined
results.
4. Is this extension amenable to hardware implementation?
Hopefully, but if not, the GL implementation will have to fall
back to a software path when debugging. This may be acceptable
for debugging.
5. What's the <data> parameter to ProgramCallbackMESA for?
It's a common programming practice to associate a user-supplied
value with callback functions.
6. Debuggers often allow one to modify intermediate program values,
then continue. Does this extension support that?
No.
New Procedures and Functions (and datatypes)
typedef void (*programcallbackMESA)(enum target, void *data)
void ProgramCallbackMESA(enum target, programcallbackMESA callback,
void *data)
void GetProgramRegisterfvMESA(enum target, sizei len,
const ubyte *registerName, float *v)
New Tokens
Accepted by the <cap> parameter of Enable, Disable, IsEnabled,
GetBooleanv, GetDoublev, GetFloatv and GetIntegerv:
FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1
VERTEX_PROGRAM_CALLBACK_MESA 0x8bb4
Accepted by the <pname> parameter GetBooleanv, GetDoublev,
GetFloatv and GetIntegerv:
FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0
VERTEX_PROGRAM_POSITION_MESA 0x8bb4
Accepted by the <pname> parameter of GetPointerv:
FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2
FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3
VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6
VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7
Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
None.
Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
None.
Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
Operations and the Frame Buffer)
None.
Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
In section 5.4 "Display Lists", page 202, add the following command
to the list of those that are not compiled into display lists:
ProgramCallbackMESA.
Add a new section 5.7 "Callback Functions"
The function
void ProgramCallbackMESA(enum target, programcallbackMESA callback,
void *data)
registers a user-defined callback function with the GL. <target>
may be FRAGMENT_PROGRAM_ARB or VERTEX_PROGRAM_ARB. The enabled
callback functions registered with these targets will be called
prior to executing each instruction in the current fragment or
vertex program, respectively. The callbacks are enabled and
disabled by calling Enable or Disable with <cap>
FRAGMENT_PROGRAM_ARB or VERTEX_PROGRAM_ARB.
The callback function's signature must match the typedef
typedef void (*programcallbackMESA)(enum target, void *data)
When the callback function is called, <target> will either be
FRAGMENT_PROGRAM_ARB or VERTEX_PROGRAM_ARB to indicate which
program is currently executing and <data> will be the value
specified when ProgramCallbackMESA was called.
From within the callback function, only the following GL commands
may be called:
GetBooleanv
GetDoublev
GetFloatv
GetIntegerv
GetProgramLocalParameter
GetProgramEnvParameter
GetProgramRegisterfvMESA
GetProgramivARB
GetProgramStringARB
GetError
Calling any other command from within the callback results in
undefined behaviour.
Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
State Requests)
Add a new section 6.1.3 "Program Value Queries":
The command
void GetProgramRegisterfvMESA(enum target, sizei len,
const ubyte *registerName,
float *v)
Is used to query the value of program variables and registers
during program execution. GetProgramRegisterfvMESA may only be
called from within a callback function registered with
ProgramCallbackMESA.
<registerName> and <len> specify the name a variable, input
attribute, temporary, or result register in the program string.
The current value of the named variable is returned as four
values in <v>. If <name> doesn't exist in the program string,
the error INVALID_OPERATION is generated.
Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
None.
Additions to the AGL/GLX/WGL Specifications
None.
GLX Protocol
XXX TBD
Dependencies on NV_vertex_program and NV_fragment_program
If NV_vertex_program and/or NV_fragment_program are supported,
vertex and/or fragment programs defined by those extensions may
be debugged as well. Register queries will use the syntax used
by those extensions (i.e. "v[X]" to query vertex attributes,
"o[X]" for vertex outputs, etc.)
Errors
INVALID_OPERATION is generated if ProgramCallbackMESA is called
between Begin and End.
INVALID_ENUM is generated by ProgramCallbackMESA if <target> is not
a supported vertex or fragment program type.
Note: INVALID_OPERAION IS NOT generated by GetProgramRegisterfvMESA,
GetBooleanv, GetDoublev, GetFloatv, or GetIntegerv if called between
Begin and End when a vertex or fragment program is currently executing.
INVALID_ENUM is generated by ProgramCallbackMESA,
GetProgramRegisterfvMESA if <target> is not a program target supported
by ARB_vertex_program, ARB_fragment_program (or NV_vertex_program or
NV_fragment_program).
INVALID_VALUE is generated by GetProgramRegisterfvMESA if <registerName>
does not name a known program register or variable.
INVALID_OPERATION is generated by GetProgramRegisterfvMESA when a
register query is attempted for a program target that's not currently
being executed.
New State
XXX finish
(table 6.N, p. ###)
Initial
Get Value Type Get Command Value Description Sec. Attribute
--------- ---- ----------- ----- ----------- ---- ---------
FRAGMENT_PROGRAM_CALLBACK_MESA B IsEnabled FALSE XXX XXX enable
VERTEX_PROGRAM_CALLBACK_MESA B IsEnabled FALSE XXX XXX enable
FRAGMENT_PROGRAM_POSITION_MESA Z+ GetIntegerv -1 XXX XXX -
VERTEX_PROGRAM_POSITION_MESA Z+ GetIntegerv -1 XXX XXX -
FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA P GetPointerv NULL XXX XXX -
VERTEX_PROGRAM_CALLBACK_FUNC_MESA P GetPointerv NULL XXX XXX -
FRAGMENT_PROGRAM_CALLBACK_DATA_MESA P GetPointerv NULL XXX XXX -
VERTEX_PROGRAM_CALLBACK_DATA_MESA P GetPointerv NULL XXX XXX -
XXX more?
New Implementation Dependent State
None.
Revision History
8 July 2003
Initial draft. (Brian Paul)
11 July 2003
Second draft. (Brian Paul)
20 July 2003
Third draft. Lots of fundamental changes. (Brian Paul)
23 July 2003
Added chapter 5 and 6 spec language. (Brian Paul)
Example Usage
The following is a very simple example of how this extension may
be used to print the values of R0, R1, R2 and R3 while executing
vertex programs.
/* This is called by the GL when the vertex program is executing.
* We can only make glGet* calls from within this function!
*/
void DebugCallback(GLenum target, GLvoid *data)
{
GLint pos;
GLuint i;
/* Get PC and current instruction string */
glGetIntegerv(GL_VERTEX_PROGRAM_POSITION_ARB, &pos);
printf("Current position: %d\n", pos);
printf("Current temporary registers:\n");
for (i = 0; i < 4; i++) {
GLfloat v[4];
char s[10];
sprintf(s, "R%d", i);
glGetProgramRegisterfvMESA(GL_VERTEX_PROGRAM_ARB, strlen(s), s, v);
printf("R%d = %g, %g, %g, %g\n", i, v[0], v[1], v[2], v[3]);
}
}
/*
* elsewhere...
*/
/* Register our debugger callback function */
glProgramCallbackMESA(GL_VERTEX_PROGRAM_ARB, DebugCallback, NULL);
glEnable(GL_VERTEX_PROGRAM_CALLBACK_MESA);
/* define/bind a vertex program */
glEnable(GL_VERTEX_PROGRAM);
/* render something */
glBegin(GL_POINTS);
glVertex2f(0, 0);
glEnd();

View File

@@ -1,85 +0,0 @@
Name
MESA_release_buffers
Name Strings
GLX_MESA_release_buffers
Contact
Brian Paul (brian 'at' mesa3d.org)
Status
Shipping since Mesa 2.0 in October, 1996.
Version
Last Modified Date: 8 June 2000
Number
217
Dependencies
OpenGL 1.0 or later is required.
GLX 1.0 or later is required.
Overview
Mesa's implementation of GLX is entirely implemented on the client side.
Therefore, Mesa cannot immediately detect when an X window or pixmap is
destroyed in order to free any ancilliary data associated with the window
or pixmap.
The glxMesaReleaseBuffers() function can be used to explicitly indicate
when the back color buffer, depth buffer, stencil buffer, and/or accum-
ulation buffer associated with a drawable can be freed.
IP Status
Open-source; freely implementable.
Issues
None.
New Procedures and Functions
Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
New Tokens
None.
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
The function
Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
causes all software ancilliary buffers (back buffer, depth, stencil,
accum, etc) associated with the named drawable to be immediately
deallocated. True is returned if <d> is a valid Mesa GLX drawable,
else False is returned. After calling glXReleaseBuffersMESA, the
drawable should no longer be used for GL rendering. Results of
attempting to do so are undefined.
GLX Protocol
None, since this is a client-side operation.
Errors
None.
New State
None.
Revision History
8 June 2000 - initial specification

View File

@@ -16,11 +16,11 @@ Status
Version
$Id: MESA_resize_buffers.spec,v 1.2 2000/04/04 23:29:32 brianp Exp $
$Id: MESA_resize_buffers.spec,v 1.1 1999/07/20 00:30:41 brianp Exp $
Number
196
XXX none assigned
Dependencies

View File

@@ -1,85 +0,0 @@
Name
MESA_set_3dfx_mode
Name Strings
GLX_MESA_set_3dfx_mode
Contact
Brian Paul (brian 'at' mesa3d.org)
Status
Shipping since Mesa 2.6 in February, 1998.
Version
Last Modified Date: 8 June 2000
Number
218
Dependencies
OpenGL 1.0 or later is required.
GLX 1.0 or later is required.
Overview
The Mesa Glide driver allows full-screen rendering or rendering into
an X window. The glXSet3DfxModeMESA() function allows an application
to switch between full-screen and windowed rendering.
IP Status
Open-source; freely implementable.
Issues
None.
New Procedures and Functions
GLboolean glXSet3DfxModeMESA( GLint mode );
New Tokens
GLX_3DFX_WINDOW_MODE_MESA 0x1
GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
The Mesa Glide device driver allows either rendering in full-screen
mode or rendering into an X window. An application can switch between
full-screen and window rendering with the command:
GLboolean glXSet3DfxModeMESA( GLint mode );
<mode> may either be GLX_3DFX_WINDOW_MODE_MESA to indicate window
rendering or GLX_3DFX_FULLSCREEN_MODE_MESA to indicate full-screen mode.
GL_TRUE is returned if <mode> is valid and the operation completed
normally. GL_FALSE is returned if <mode> is invalid or if the Glide
driver is not being used.
Note that only one drawable and context can be created at any given
time with the Mesa Glide driver.
GLX Protocol
None since this is a client-side extension.
Errors
None.
New State
None.
Revision History
8 June 2000 - initial specification

View File

@@ -1,191 +0,0 @@
Name
MESA_sprite_point
Name Strings
GL_MESA_sprite_point
Contact
Brian Paul, VA Linux Systems Inc. (brianp 'at' valinux.com)
Status
Obsolete - see GL_ARB_point_sprite.
Version
$Id: MESA_sprite_point.spec,v 1.2 2003/09/19 14:58:21 brianp Exp $
Number
???
Dependencies
GL_EXT_point_parameters effects the definition of this extension
GL_ARB_multitexture effects the definition of this extension
Overview
This extension modifies the way in which points are rendered,
specifically when they're textured. When SPRITE_POINT_MESA is enabled
a point is rendered as if it were a quadrilateral with unique texture
coordinates at each vertex. This extension effectively turns points
into sprites which may be rendered more easily and quickly than using
conventional textured quadrilaterals.
When using point size > 1 or attenuated points this extension is an
effective way to render many small sprite images for particle systems
or other effects.
Issues:
1. How are the texture coordinates computed?
The lower-left corner has texture coordinate (0,0,r,q).
The lower-right, (1,0,r,q). The upper-right, (1,1,r,q).
The upper-left, (0,1,r,q).
2. What about texgen and texture matrices?
Texgen and the texture matrix have no effect on the point's s and t
texture coordinates. The r and q coordinates may have been computed
by texgen or the texture matrix. Note that with a 3D texture and/or
texgen that the r coordinate could be used to select a slice in the
3D texture.
3. What about point smoothing?
When point smoothing is enabled, a triangle fan could be rendered
to approximate a circular point. This could be problematic to
define and implement so POINT_SMOOTH is ignored when drawing sprite
points.
Smoothed points can be approximated by using an appropriate texture
images, alpha testing and blending.
POLYGON_SMOOTH does effect the rendering of the quadrilateral, however.
4. What about sprite rotation?
There is none. Sprite points are always rendered as window-aligned
squares. One could define rotated texture images if desired. A 3D
texture and appropriate texture r coordinates could be used to
effectively specify image rotation per point.
5. What about POLYGON_MODE?
POLYGON_MODE does not effect the rasterization of the quadrilateral.
6. What about POLYGON_CULL?
TBD. Polygon culling is normally specified and implemented in the
transformation stage of OpenGL. However, some rasterization hardware
implements it later during triangle setup.
Polygon culling wouldn't be useful for sprite points since the
quadrilaterals are always defined in counter-clockwise order in
window space. For that reason, polygon culling should probably be
ignored.
7. Should sprite points be alpha-attenuated if their size is below the
point parameter's threshold size?
8. Should there be an advertisized maximum sprite point size?
No. Since we're rendering the point as a quadrilateral there's no
need to limit the size.
New Procedures and Functions
None.
New Tokens
Accepted by the <pname> parameter of Enable, Disable, IsEnabled,
GetIntegerv, GetBooleanv, GetFloatv and GetDoublev:
SPRITE_POINT_MESA 0x????
MAX_SPRITE_POINT_SIZE_MESA 0x???? (need this?)
Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.1 Specification (Rasterization)
Section ???.
When SPRITE_POINT_MESA is enabled points are rasterized as screen-
aligned quadrilaterals. If the four vertices of the quadrilateral
are labeled A, B, C, and D, starting at the lower-left corner and moving
counter-clockwise around the quadrilateral, then the vertex and
texture coordinates are computed as follows:
vertex window coordinate texture coordinate
A (x-r, y-r, z, w) (0, 0, r, q)
B (x+r, y-r, z, w) (1, 0, r, q)
C (x+r, y+r, z, w) (1, 1, r, q)
D (x-r, y+r, z, w) (0, 1, r, q)
where x, y, z, w are the point's window coordinates, r and q are the
point's 3rd and 4th texture coordinates and r is half the point's
size. The other vertex attributes (such as the color and fog coordinate)
are simply duplicated from the original point vertex.
Point size may either be specified with PointSize or computed
according to the EXT_point_parameters extension.
The new texture coordinates are not effected by texgen or the texture
matrix. Note, however, that the texture r and q coordinates are passed
unchanged and may have been computed with texgen and/or the texture
matrix.
If multiple texture units are present the same texture coordinate is
used for all texture units.
The point is then rendered as if it were a quadrilateral using the
normal point sampling rules. POLYGON_MODE does not effect the
rasterization of the quadrilateral but POLYGON_SMOOTH does.
POINT_SMOOTH has no effect when SPRITE_POINT_MESA is enabled.
Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
and the Frame Buffer)
None.
Additions to Chapter 5 of the 1.1 Specification (Special Functions)
None
Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
None
Additions to the GLX Specification
None
GLX Protocol
TBD
Errors
None
New State
Add boolean variable SPRITE_POINT_MESA to the point attribute group.
Revision History
Version 1.0 - 4 Dec 2000
Original draft.

View File

@@ -1,132 +0,0 @@
Name
MESA_swap_control
Name Strings
GLX_MESA_swap_control
Contact
Ian Romanick, IBM, idr at us.ibm.com
Status
Deployed in DRI drivers post-XFree86 4.3.
Version
Date: 5/1/2003 Revision: 1.1
Number
???
Dependencies
None
Based on GLX_SGI_swap_control version 1.9 and WGL_EXT_swap_control
version 1.5.
Overview
This extension allows an application to specify a minimum periodicity
of color buffer swaps, measured in video frame periods.
Issues
* Should implementations that export GLX_MESA_swap_control also export
GL_EXT_swap_control for compatibility with WGL_EXT_swap_control?
UNRESOLVED.
New Procedures and Functions
int glXSwapIntervalMESA(int interval)
int glXGetSwapIntervalMESA(void)
New Tokens
None
Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.4 GL Specification (Rasterization)
None
Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations
and the Framebuffer)
None
Additions to Chapter 5 of the 1.4 GL Specification (Special Functions)
None
Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests)
None
Additions to the GLX 1.3 Specification
[Add the following to Section 3.3.10 of the GLX Specification (Double
Buffering)]
glXSwapIntervalMESA specifies the minimum number of video frame periods
per buffer swap. (e.g. a value of two means that the color buffers
will be swapped at most every other video frame.) A return value
of zero indicates success; otherwise an error occurred. The interval
takes effect when glXSwapBuffers is first called subsequent to the
glXSwapIntervalMESA call.
A video frame period is the time required by the monitor to display a
full frame of video data. In the case of an interlaced monitor,
this is typically the time required to display both the even and odd
fields of a frame of video data.
If <interval> is set to a value of 0, buffer swaps are not synchron-
ized to a video frame. The <interval> value is silently clamped to
the maximum implementation-dependent value supported before being
stored.
The swap interval is not part of the render context state. It cannot
be pushed or popped. The current swap interval for the window
associated with the current context can be obtained by calling
glXGetSwapIntervalMESA. The default swap interval is 0.
On XFree86, setting the environment variable LIBGL_THROTTLE_REFRESH sets
the swap interval to 1.
Errors
glXSwapIntervalMESA returns GLX_BAD_VALUE if parameter <interval> is
less than zero.
glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current
GLXContext.
GLX Protocol
None. This extension only extends to direct rendering contexts.
New State
Get Value Get Command Type Initial Value
--------- ----------- ---- -------------
[swap interval] GetSwapInterval Z+ 0
New Implementation Dependent State
None
Revision History
1.1, 5/1/03 Added the issues section and contact information.
Changed the default swap interval to 0.
1.0, 3/17/03 Initial version based on GLX_SGI_swap_control and
WGL_EXT_swap_control.

View File

@@ -1,201 +0,0 @@
Name
MESA_swap_frame_usage
Name Strings
GLX_MESA_swap_frame_usage
Contact
Ian Romanick, IBM, idr at us.ibm.com
Status
Deployed in DRI drivers post-XFree86 4.3.
Version
Date: 5/1/2003 Revision: 1.1
Number
???
Dependencies
GLX_SGI_swap_control affects the definition of this extension.
GLX_MESA_swap_control affects the definition of this extension.
GLX_OML_sync_control affects the definition of this extension.
Based on WGL_I3D_swap_frame_usage version 1.3.
Overview
This extension allows an application to deterine what portion of the
swap period has elapsed since the last swap operation completed. The
"usage" value is a floating point value on the range [0,max] which is
calculated as follows:
td
percent = ----
tf
where td is the time measured from the last completed buffer swap (or
call to enable the statistic) to when the next buffer swap completes, tf
is the entire time for a frame which may be multiple screen refreshes
depending on the swap interval as set by the GLX_SGI_swap_control or
GLX_OML_sync_control extensions.
The value, percent, indicates the amount of time spent between the
completion of the two swaps. If the value is in the range [0,1], the
buffer swap occurred within the time period required to maintain a
constant frame rate. If the value is in the range (1,max], a constant
frame rate was not achieved. The value indicates the number of frames
required to draw.
This definition of "percent" differs slightly from
WGL_I3D_swap_frame_usage. In WGL_I3D_swap_frame_usage, the measurement
is taken from the completion of one swap to the issuance of the next.
This representation may not be as useful as measuring between
completions, as a significant amount of time may pass between the
issuance of a swap and the swap actually occuring.
There is also a mechanism to determine whether a frame swap was
missed.
New Procedures and Functions
int glXGetFrameUsageMESA(Display *dpy,
GLXDrawable drawable,
float *usage)
int glXBeginFrameTrackingMESA(Display *dpy,
GLXDrawable drawable)
int glXEndFrameTrackingMESA(Display *dpy,
GLXDrawable drawable)
int glXQueryFrameTrackingMESA(Display *dpy,
GLXDrawable drawable,
int64_t *swapCount,
int64_t *missedFrames,
float *lastMissedUsage)
New Tokens
None
Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.4 GL Specification (Rasterization)
None
Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations
and the Framebuffer)
None
Additions to Chapter 5 of the 1.4 GL Specification (Special Functions)
None
Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests)
None
Additions to the GLX 1.3 Specification
The frame usage is measured as the percentage of the swap period elapsed
between two buffer-swap operations being commited. In unextened GLX the
swap period is the vertical refresh time. If SGI_swap_control or
MESA_swap_control are supported, the swap period is the vertical refresh
time multiplied by the swap interval (or one if the swap interval is set
to zero).
If OML_sync_control is supported, the swap period is the vertical
refresh time multiplied by the divisor parameter to
glXSwapBuffersMscOML. The frame usage in this case is less than 1.0 if
the swap is commited before target_msc, and is greater than or equal to
1.0 otherwise. The actual usage value is based on the divisor and is
never less than 0.0.
int glXBeginFrameTrackingMESA(Display *dpy,
GLXDrawable drawable,
float *usage)
glXGetFrameUsageMESA returns a floating-point value in <usage>
that represents the current swap usage, as defined above.
Missed frame swaps can be tracked by calling the following function:
int glXBeginFrameTrackingMESA(Display *dpy,
GLXDrawable drawable)
glXBeginFrameTrackingMESA resets a "missed frame" count and
synchronizes with the next frame vertical sync before it returns.
If a swap is missed based in the rate control specified by the
<interval> set by glXSwapIntervalSGI or the default swap of once
per frame, the missed frame count is incremented.
The current missed frame count and total number of swaps since
the last call to glXBeginFrameTrackingMESA can be obtained by
callling the following function:
int glXQueryFrameTrackingMESA(Display *dpy,
GLXDrawable drawable,
int64_t *swapCount,
int64_t *missedFrames,
float *lastMissedUsage)
The location pointed to by <swapCount> will be updated with the
number of swaps that have been commited. This value may not match the
number of swaps that have been requested since swaps may be
queued by the implementation. This function can be called at any
time and does not synchronize to vertical blank.
The location pointed to by <missedFrames> will contain the number
swaps that missed the specified frame. The frame usage for the
last missed frame is returned in the location pointed to by
<lastMissedUsage>.
Frame tracking is disabled by calling the function
int glXEndFrameTrackingMESA(Display *dpy,
GLXDrawable drawable)
This function will not return until all swaps have occurred. The
application can call glXQueryFrameTrackingMESA for a final swap and
missed frame count.
If these functions are succesful, zero is returned. If the context
associated with dpy and drawable is not a direct context,
GLX_BAD_CONTEXT is returned.
Errors
If the function succeeds, zero is returned. If the function
fails, one of the following error codes is returned:
GLX_BAD_CONTEXT The current rendering context is not a direct
context.
GLX Protocol
None. This extension only extends to direct rendering contexts.
New State
None
New Implementation Dependent State
None
Revision History
1.1, 5/1/03 Added contact information.
1.0, 3/17/03 Initial version based on WGL_I3D_swap_frame_usage.

View File

@@ -1,360 +0,0 @@
Name
MESA_trace
Name Strings
GL_MESA_TRACE
Contact
Bernd Kreimeier, Loki Entertainment, bk 'at' lokigames.com
Brian Paul, VA Linux Systems, Inc., brianp 'at' valinux.com
Status
Obsolete.
Version
$Id: MESA_trace.spec,v 1.3 2003/09/19 14:58:21 brianp Exp $
Number
none yet
Dependencies
OpenGL 1.2 is required.
The extension is written against the OpenGL 1.2 Specification
Overview
Provides the application with means to enable and disable logging
of GL calls including parameters as readable text. The verbosity
of the generated log can be controlled. The resulting logs are
valid (but possibly incomplete) C code and can be compiled and
linked for standalone test programs. The set of calls and the
amount of static data that is logged can be controlled at runtime.
The application can add comments and enable or disable tracing of GL
operations at any time. The data flow from the application to GL
and back is unaffected except for timing.
Application-side implementation of these features raises namespace
and linkage issues. In the driver dispatch table a simple
"chain of responsibility" pattern (aka "composable piepline")
can be added.
IP Status
The extension spec is in the public domain. The current implementation
in Mesa is covered by Mesa's XFree86-style copyright by the authors above.
This extension is partially inspired by the Quake2 QGL wrapper.
Issues
(1) Is this Extension obsolete because it can
be implemented as a wrapper DLL?
RESOLVED: No. While certain operating systems (Win32) provide linkers
that facilitate this kind of solution, other operating systems
(Linux) do not support hierarchical linking, so a wrapper solution
would result in symbol collisions.
Further, IHV's might have builtin support for tracing GL execution
that enjoys privileged access, or that they do not wish to separate
the tracing code from their driver code base.
(2) Should the Trace API explicitely support the notion of "frames?
This would require hooking into glXSwapBuffers calls as well.
RESOLVED: No. The application can use NewTraceMESA/EndTraceMESA
and TraceComment along with external parsing tools to split the
trace into frames, in whatever way considered adequate.
(2a) Should GLX calls be traced?
PBuffers and other render-to-texture solutions demonstrate that
context level commands beyond SwapBuffers might have to be
traced. The GL DLL exports the entry points, so this would not
be out of the question.
(3) Should the specification mandate the actual output format?
RESOLVED: No. It is sufficient to guarantee that all data and commands
will be traced as requested by Enable/DisableTraceMESA, in the order
encountered. Whether the resulting trace is available as a readable
text file, binary metafile, compilable source code, much less which
indentation and formatting has been used, is up to the implementation.
For the same reason this specification does not enforce or prohibit
additional information added to the trace (statistics, profiling/timing,
warnings on possible error conditions).
(4) Should the comment strings associated with names and pointer (ranges)
be considered persistent state?
RESOLVED: No. The implementation is not forced to use this information
on subsequent occurences of name/pointer, and is free to consider it
transient state.
(5) Should comment commands be prohibited between Begin/End?
RESOLVED: Yes, with the exception of TraceCommentMESA. TraceCommentMESA
is transient, the other commands might cause storage of persistent
data in the context. There is no need to have the ability mark names
or pointers between Begin and End.
New Procedures and Functions
void NewTraceMESA( bitfield mask, const ubyte * traceName )
void EndTraceMESA( void )
void EnableTraceMESA( bitfield mask )
void DisableTraceMESA( bitfield mask )
void TraceAssertAttribMESA( bitfield attribMask )
void TraceCommentMESA( const ubyte* comment )
void TraceTextureMESA( uint name, const ubyte* comment )
void TraceListMESA( uint name, const ubyte* comment )
void TracePointerMESA( void* pointer, const ubyte* comment )
void TracePointerRangeMESA( const void* first,
const void* last,
const ubyte* comment )
New Tokens
Accepted by the <mask> parameter of EnableTrace and DisableTrace:
TRACE_ALL_BITS_MESA 0xFFFF
TRACE_OPERATIONS_BIT_MESA 0x0001
TRACE_PRIMITIVES_BIT_MESA 0x0002
TRACE_ARRAYS_BIT_MESA 0x0004
TRACE_TEXTURES_BIT_MESA 0x0008
TRACE_PIXELS_BIT_MESA 0x0010
TRACE_ERRORS_BIT_MESA 0x0020
Accepted by the <pname> parameter of GetIntegerv, GetBooleanv,
GetFloatv, and GetDoublev:
TRACE_MASK_MESA 0x8755
Accepted by the <pname> parameter to GetString:
TRACE_NAME_MESA 0x8756
Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation)
None.
Additions to Chapter 3 of the OpenGL 1.2.1 Specification (OpenGL Operation)
None.
Additions to Chapter 4 of the OpenGL 1.2.1 Specification (OpenGL Operation)
None.
Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions)
Add a new section:
5.7 Tracing
The tracing facility is used to record the execution of a GL program
to a human-readable log. The log appears as a sequence of GL commands
using C syntax. The primary intention of tracing is to aid in program
debugging.
A trace is started with the command
void NewTraceMESA( bitfield mask, const GLubyte * traceName )
<mask> may be any value accepted by PushAttrib and specifies a set of
attribute groups. The state values included in those attribute groups
is written to the trace as a sequence of GL commands.
<traceName> specifies a name or label for the trace. It is expected
that <traceName> will be interpreted as a filename in most implementations.
A trace is ended by calling the command
void EndTraceMESA( void )
It is illegal to call NewTraceMESA or EndTraceMESA between Begin and End.
The commands
void EnableTraceMESA( bitfield mask )
void DisableTraceMESA( bitfield mask )
enable or disable tracing of different classes of GL commands.
<mask> may be the union of any of TRACE_OPERATIONS_BIT_MESA,
TRACE_PRIMITIVES_BIT_MESA, TRACE_ARRAYS_BIT_MESA, TRACE_TEXTURES_BIT_MESA,
and TRACE_PIXELS_BIT_MESA. The special token TRACE_ALL_BITS_MESA
indicates all classes of commands are to be logged.
TRACE_OPERATIONS_BIT_MESA controls logging of all commands outside of
Begin/End, including Begin/End.
TRACE_PRIMITIVES_BIT_MESA controls logging of all commands inside of
Begin/End, including Begin/End.
TRACE_ARRAYS_BIT_MESA controls logging of VertexPointer, NormalPointer,
ColorPointer, IndexPointer, TexCoordPointer and EdgeFlagPointer commands.
TRACE_TEXTURES_BIT_MESA controls logging of texture data dereferenced by
TexImage1D, TexImage2D, TexImage3D, TexSubImage1D, TexSubImage2D, and
TexSubImage3D commands.
TRACE_PIXELS_BIT_MESA controls logging of image data dereferenced by
Bitmap and DrawPixels commands.
TRACE_ERRORS_BIT_MESA controls logging of all errors. If this bit is
set, GetError will be executed whereever applicable, and the result will
be added to the trace as a comment. The error returns are cached and
returned to the application on its GetError calls. If the user does not
wish the additional GetError calls to be performed, this bit should not
be set.
The command
void TraceCommentMESA( const ubyte* comment )
immediately adds the <comment> string to the trace output, surrounded
by C-style comment delimiters.
The commands
void TraceTextureMESA( uint name, const ubyte* comment )
void TraceListMESA( uint name, const ubyte* comment )
associates <comment> with the texture object or display list specified
by <name>. Logged commands which reference the named texture object or
display list will be annotated with <comment>. If IsTexture(name) or
IsList(name) fail (respectively) the command is quietly ignored.
The commands
void TracePointerMESA( void* pointer, const ubyte* comment )
void TracePointerRangeMESA( const void* first,
const void* last,
const ubyte* comment )
associate <comment> with the address specified by <pointer> or with
a range of addresses specified by <first> through <last>.
Any logged commands which reference <pointer> or an address between
<first> and <last> will be annotated with <comment>.
The command
void TraceAssertAttribMESA( bitfield attribMask )
will add GL state queries and assertion statements to the log to
confirm that the current state at the time TraceAssertAttrib is
executed matches the current state when the trace log is executed
in the future.
<attribMask> is any value accepted by PushAttrib and specifies
the groups of state variables which are to be asserted.
The commands NewTraceMESA, EndTraceMESA, EnableTraceMESA, DisableTraceMESA,
TraceAssertAttribMESA, TraceCommentMESA, TraceTextureMESA, TraceListMESA,
TracePointerMESA and TracePointerRangeMESA are not compiled into display lists.
Examples:
The command NewTraceMESA(DEPTH_BUFFER_BIT, "log") will query the state
variables DEPTH_TEST, DEPTH_FUNC, DEPTH_WRITEMASK, and DEPTH_CLEAR_VALUE
to get the values <test>, <func>, <mask>, and <clear> respectively.
Statements equivalent to the following will then be logged:
glEnable(GL_DEPTH_TEST); (if <test> is true)
glDisable(GL_DEPTH_TEST); (if <test> is false)
glDepthFunc(<func>);
glDepthMask(<mask>);
glClearDepth(<clear>);
The command TraceAssertAttribMESA(DEPTH_BUFFER_BIT) will query the state
variables DEPTH_TEST, DEPTH_FUNC, DEPTH_WRITEMASK, and DEPTH_CLEAR_VALUE
to get the values <test>, <func>, <mask>, and <clear> respectively.
The resulting trace might then look will like this:
{
GLboolean b;
GLint i;
GLfloat f;
b = glIsEnabled(GL_DEPTH_TEST);
assert(b == <test>);
glGetIntegerv(GL_DEPTH_FUNC, &i);
assert(i == <func>);
glGetIntegerv(GL_DEPTH_MASK, &i);
assert(i == <mask>);
glGetFloatv(GL_DEPTH_CLEAR_VALUE, &f);
assert(f == <clear>);
}
Additions to Chapter 6 of the OpenGL 1.2.1 Specification
(State and State Requests)
Querying TRACE_MASK_MESA with GetIntegerv, GetFloatv, GetBooleanv or
GetDoublev returns the current command class trace mask.
Querying TRACE_NAME_MESA with GetString returns the current trace name.
Additions to Appendix A of the OpenGL 1.2.1 Specification (Invariance)
The MESA_trace extension can be used in a way that does not affect data
flow from application to OpenGL, as well as data flow from OpenGL to
application, except for timing, possible print I/O. TRACE_ERRORS_BIT_MESA
will add additional GetError queries. Setting a trace mask with NewTraceMESA
as well as use of TraceAssertAttribMESA might cause additional state queries.
With the possible exception of performance, OpenGL rendering should not be
affected at all by a properly chosen logging operation.
Additions to the AGL/GLX/WGL Specifications
None.
GLX Protocol
None. The logging operation is carried out client-side, by exporting
entry points to the wrapper functions that execute the logging operation.
Errors
INVALID_OPERATION is generated if any trace command except TraceCommentMESA
is called between Begin and End.
New State
The current trace name and current command class mask are stored
per-context.
New Implementation Dependent State
None.
Revision History
* Revision 0.1 - Initial draft from template (bk000415)
* Revision 0.2 - Draft (bk000906)
* Revision 0.3 - Draft (bk000913)
* Revision 0.4 - Reworked text, fixed typos (bp000914)
* Revision 0.5 - Assigned final GLenum values (bp001103)
* Revision 0.6 - TRACE_ERRORS_BIT_MESA (bk000916)
* Revision 0.7 - Added MESA postfix (bk010126)

View File

@@ -16,11 +16,11 @@ Status
Version
$Id: MESA_window_pos.spec,v 1.3 2000/04/04 23:29:32 brianp Exp $
$Id: MESA_window_pos.spec,v 1.1 1999/07/20 00:30:41 brianp Exp $
Number
197
XXX non assigned
Dependencies
@@ -33,7 +33,7 @@ Overview
coordinate with the RasterPos command, the modelview matrix, projection
matrix and viewport must be set very carefully. Furthermore, if the
desired window coordinate is outside of the window's bounds one must
rely on a subtle side-effect of the Bitmap command in order to circumvent
rely a subtle side-effect of the Bitmap command in order to circumvent
frustum clipping.
This extension provides a set of functions to directly set the
@@ -51,26 +51,6 @@ New Procedures and Functions
void WindowPos2fMESA(float x, float y)
void WindowPos2iMESA(int x, int y)
void WindowPos2sMESA(short x, short y)
void WindowPos2ivMESA(const int *p)
void WindowPos2svMESA(const short *p)
void WindowPos2fvMESA(const float *p)
void WindowPos2dvMESA(const double *p)
void WindowPos3iMESA(int x, int y, int z)
void WindowPos3sMESA(short x, short y, short z)
void WindowPos3fMESA(float x, float y, float z)
void WindowPos3dMESA(double x, double y, double z)
void WindowPos3ivMESA(const int *p)
void WindowPos3svMESA(const short *p)
void WindowPos3fvMESA(const float *p)
void WindowPos3dvMESA(const double *p)
void WindowPos4iMESA(int x, int y, int z, int w)
void WindowPos4sMESA(short x, short y, short z, short w)
void WindowPos4fMESA(float x, float y, float z, float w)
void WindowPos4dMESA(double x, double y, double z, double )
void WindowPos4ivMESA(const int *p)
void WindowPos4svMESA(const short *p)
void WindowPos4fvMESA(const float *p)
void WindowPos4dvMESA(const double *p)
New Tokens
@@ -84,7 +64,7 @@ Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
WindowPosMESA commands:
void WindowPos{234}{sidf}MESA( T coords );
void WindowPos{234}{sidf}vMESA( T coords );
void Window Pos{234}{sidf}vMESA( T coords );
WindosPos4MESA takes four values indicating x, y, z, and w.
WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
@@ -98,6 +78,14 @@ Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
color, color index and texture coordinate update the current raster
position's associated data.
The current raster distance ??? XXX ???
Additions to the AGL/GLX/WGL Specifications
None
@@ -112,6 +100,7 @@ Errors
INVALID_OPERATION is generated if WindowPosMESA is called betweeen
Begin and End.
New State
None.
@@ -123,5 +112,3 @@ New Implementation Dependent State
Revision History
* Revision 1.0 - Initial specification
* Revision 1.1 - Minor clean-up (7 Jan 2000, Brian Paul)

View File

@@ -1,203 +0,0 @@
Name
MESA_ycbcr_texture
Name Strings
GL_MESA_ycbcr_texture
Contact
Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
Status
Shipping (Mesa 4.0.4 and later)
Version
1.0
Number
TBD
Dependencies
OpenGL 1.0 or later is required
This extensions is written against the OpenGL 1.4 Specification.
NV_texture_rectangle effects the definition of this extension.
Overview
This extension supports texture images stored in the YCbCr format.
There is no support for converting YCbCr images to RGB or vice versa
during pixel transfer. The texture's YCbCr colors are converted to
RGB during texture sampling, after-which, all the usual per-fragment
operations take place. Only 2D texture images are supported (not
glDrawPixels, glReadPixels, etc).
A YCbCr pixel (texel) is a 16-bit unsigned short with two components.
The first component is luminance (Y). For pixels in even-numbered
image columns, the second component is Cb. For pixels in odd-numbered
image columns, the second component is Cr. If one were to convert the
data to RGB one would need to examine two pixels from columns N and N+1
(where N is even) to deduce the RGB color.
IP Status
None
Issues
None
New Procedures and Functions
None
New Tokens
Accepted by the <internalFormat> and <format> parameters of
TexImage2D and TexSubImage2D:
YCBCR_MESA 0x8757
Accepted by the <type> parameter of TexImage2D and TexSubImage2D:
UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
add the following to Table 3.8 (Packed pixel formats):
type Parameter GL Data Number of Matching
Token Name Type Components Pixel Formats
-------------- ------- ---------- -------------
UNSIGNED_SHORT_8_8_MESA ushort 3 YCBCR_422_MESA
UNSIGNED_SHORT_8_8_REV_MESA ushort 3 YCBCR_422_MESA
In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
add the following to Table 3.10 (UNSIGNED_SHORT formats):
UNSIGNED_SHORT_8_8_MESA:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-------------------------------+-------------------------------+
| 1st | 2nd |
+-------------------------------+-------------------------------+
UNSIGNED_SHORT_8_8_REV_MESA:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-------------------------------+-------------------------------+
| 2nd | 1st |
+-------------------------------+-------------------------------+
In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
add the following to Table 3.12 (Packed pixel fiedl assignments):
First Second Third Fourth
Format Element Element Element Element
------ ------- ------- ------- -------
YCBCR_422_MESA luminance chroma
In section 3.8.1, Texture Image Specification, on page 125, add
another item to the list of TexImage2D and TexImage3D equivalence
exceptions:
* The value of internalformat and format may be YCBCR_MESA to
indicate that the image data is in YCbCr format. type must
be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping
between Y and Cb/Cr to the components.
If NV_texture_rectangle is supported target may also be
TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
All pixel transfer operations are bypassed. The texture is stored as
YCbCr, not RGB. Queries of the texture's red, green and blue component
sizes will return zero. The YCbCr colors are converted to RGB during
texture sampling using an implementation dependent conversion.
In section 3.8.1, Texture Image Specification, on page 126, add
another item to the list of TexImage1D and TexImage2D equivalence
exceptions:
* The value of internalformat and format can not be YCBCR_MESA.
In section 3.8.2, Alternate Texture Image Specification Commands, on
page 129, insert this paragraph after the first full paragraph on the
page:
"If the internal storage format of the image being updated by
TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA.
The error INVALID_OPERATION will be generated otherwise."
Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
Operations and the Frame Buffer)
None
Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
None
Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
State Requests)
None
Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
None
Additions to the AGL/GLX/WGL Specifications
None
GLX Protocol
None
Errors
INVALID_ENUM is generated by TexImage2D if <internalFormat> is
MESA_YCBCR but <format> is not MESA_YCBCR.
INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but
<internalFormat> is not MESA_YCBCR.
INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and
<internalFormat> is MESA_YCBCR and <border> is not zero.
INVALID_OPERATION is generated by TexSubImage2D if the internal image
format is YCBCR_MESA and <format> is not YCBCR_MESA.
INVALID_OPERATION is generated by CopyTexSubImage2D if the internal
image is YCBCR_MESA.
New State
Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT
from n x Z42 to n x Z43 to indicate that internal format may also be
YCBCR_MESA.
Revision History
20 September 2002 - Initial draft
29 April 2003 - minor updates
3 September 2003 - further clarify when YCbCr->RGB conversion takes place
19 September 2003 - a few more updates prior to submitting to extension
registry.

View File

@@ -1,547 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Mini GLX Specification</title>
</head>
<body>
<h1>
<center>Mini GLX Specification</center>
</h1>
<h2>
<center>Tungsten Graphics, Inc.<br>
<br>
January 20, 2003<br>
<br>
</center>
</h2>
<p> Copyright &copy; 2002-2003 by Tungsten Graphics, Inc., Cedar Park,
Texas. All Rights Reserved. <br>
<br>
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
preserved on all copies.<br>
<br>
</p>
<h1>1. Introduction</h1>
<p>The Mini GLX interface facilitates OpenGL rendering on embedded
devices. The interface is a subset of the GLX interface, plus a minimal
set of Xlib-like functions.</p>
<p>Programs written to the Mini GLX specification should run unchanged
on systems with the X Window System and the GLX extension. The intention
is to allow flexibility for prototyping and testing.</p>
<p>This document serves as both the reference guide and programming
guide for Mini GLX.<br>
<br>
</p>
<h1>2. Mini GLX Concepts</h1>
<p>The OpenGL specification does not describe how OpenGL rendering
contexts and drawing surfaces (i.e. the frame buffer) are created and
managed. Rather, this is handled by an OpenGL window system interface,
such as Mini GLX.</p>
<p>There are three main datatypes or resources managed by Mini GLX. The
resources and their corresponding GLX or Xlib data types are:</p>
<table cellspacing="10" align="center">
<tbody>
<tr>
<td><u>Resource</u></td>
<td><u>Data type</u></td>
</tr>
<tr>
<td>pixel formats</td>
<td>X Visual and XVisualInfo</td>
</tr>
<tr>
<td>drawing surfaces</td>
<td>X Window or GLXDrawable</td>
</tr>
<tr>
<td>rendering contexts</td>
<td>GLXContext</td>
</tr>
</tbody>
</table>
<p>Pixel formats or X Visuals describe the per-pixel attributes of the
frame buffer. For example, bits per color component, Z buffer size,
stencil size, TrueColor vs PseudoColor, etc.</p>
<p>Drawing surfaces or X Windows typically describe a spatial
allocation of the frame buffer (i.e. the position and size of a
rectangular region of pixels). Since MiniGLX doesn't really support a
window system, the window is effectively the entire frame buffer.</p>
<p>A rendering context represents the current OpenGL state such as
current drawing color, line width, blending mode, texture parameters,
etc. Several rendering contexts can be created but only one can be in
use at any given time.</p>
<p>The Mini GLX interface provides all the functions needed for
choosing pixel formats, create drawing surfaces, creating rendering
contexts and binding rendering contexts to drawing surfaces.<br>
<br>
</p>
<h1>3. Using Mini GLX</h1>
<p>To use the Mini GLX interface in your application, include the
GL/miniglx.h header file at compile time:</p>
<blockquote><code> #include &lt;GL/miniglx.h&gt;<br>
</code></blockquote>
<code></code>Applications should link with libGL.so (i.e. <code>gcc
myprogram.o -lGL -o myprogram</code>). &nbsp;libGL.so implements the
MiniGLX API functions and, in turn, loads a hardware-specific device
driver (such as <code>radeon_dri.so</code>) at runtime. &nbsp;The
environment variable <code>LIBGL_DRIVERS_PATH</code> should name the
directory where these modules are located.<br>
<br>
Prior to running a MiniGXL application, the following kernel modules
must be installed:<br>
<br>
<div style="margin-left: 40px;"> agpgart.o<br>
radeonfb.o &nbsp;(assuming Radeon hardware)<br>
radeon.o &nbsp;(assuming Radeon hardware)<br>
</div>
<code></code> <br>
Finally, MiniGLX reads a configuration file (by default,<code>
/etc/miniglx.conf</code>) to determine basic configuration information.
&nbsp;The configuration file may also be located in the directory
specified by the <code>MINIGLX_CONF</code> environment variable).<br>
<br>
The remainder of this section describes the MiniGLX API functions.<br>
<br>
<h2>3.1 Initialization</h2>
<p>The XOpenDisplay function is used to initialize the graphics system:</p>
<blockquote>
<pre>Display *XOpenDisplay(const char *displayname)<br></pre>
</blockquote>
<p>The <code>displayName</code> parameter is currently ignored in Mini
GLX. It is recommended that <code>NULL</code> be passed as the<code>displayName</code>
parameter.</p>
<p>If XOpenDisplay is able to initialize the graphics system a pointer
to a Display will be returned. Otherwise, NULL will be returned.</p>
<h2>3.2 Choosing a Visual</h2>
<p>A visual (i.e. pixel format) must be chosen before a drawing surface
or rendering context can be created. This is done with the
glXChooseVisual function:</p>
<blockquote>
<pre>XVisualInfo *glXChooseVisual(Display *dpy, int screen, const int *attribList)<br></pre>
</blockquote>
<p><code>dpy</code> is a pointer to the display returned by
XOpenDisplay. </p>
<p><code>screen</code> is currently ignored by Mini GLX and should be
zero. </p>
<p><code>attribList</code> is a list of GLX attributes which describe
the desired pixel format. It is terminated by the token <code>None</code>.
The attributes are as follows:</p>
<blockquote>
<dl>
<dt><code>GLX_USE_GL</code></dt>
<dd>This attribute should always be present in order to maintain
compatibility with GLX.</dd>
<dt><code>GLX_RGBA</code></dt>
<dd>If present, only RGBA pixel formats will be considered.
Otherwise, only color index formats are considered.</dd>
<dt><code>GLX_DOUBLEBUFFER</code></dt>
<dd>if present, only double-buffered pixel formats will be chosen.</dd>
<dt><code>GLX_RED_SIZE n</code></dt>
<dd>Must be followed by a non-negative integer indicating the
minimum number of bits per red pixel component that is acceptable.</dd>
<dt><code>GLX_GREEN_SIZE n</code></dt>
<dd>Must be followed by a non-negative integer indicating the
minimum number of bits per green pixel component that is acceptable.</dd>
<dt><code>GLX_BLUE_SIZE n</code></dt>
<dd>Must be followed by a non-negative integer indicating the
minimum number of bits per blue pixel component that is acceptable.</dd>
<dt><code>GLX_ALPHA_SIZE n</code></dt>
<dd>Must be followed by a non-negative integer indicating the
minimum number of bits per alpha pixel component that is acceptable.</dd>
<dt><code>GLX_STENCIL_SIZE n</code></dt>
<dd>Must be followed by a non-negative integer indicating the
minimum number of bits per stencil value that is acceptable.</dd>
<dt><code>None</code></dt>
<dd>This token is used to terminate the attribute list.</dd>
</dl>
</blockquote>
<p>glXChooseVisual will return a pointer to an XVisualInfo object which
most closely matches the requirements of the attribute list. If there
is no visual which matches the request, NULL will be returned.</p>
<p>Note that visuals with accumulation buffers and depth buffers are
not available.<br>
<br>
</p>
<h2>3.3 Creating a Drawing Surface</h2>
<p>Drawing surfaces are created as X windows. &nbsp;For Mini GLX,
windows are <i>full-screen</i>; they cover the entire frame buffer.
&nbsp;Also, Mini GLX imposes a limit of one window. A second window
cannot be created until the first one is destroyed.</p>
<h3>3.3.1 Window Creation</h3>
<p>The XCreateWindow function is used to create a drawing surface:</p>
<blockquote>
<pre>Window XCreateWindow( Display *display,<br> Window parent,<br> int x, int y,<br> unsigned int width, unsigned int height,<br> unsigned int borderWidth,<br> int depth,<br> unsigned int class,<br> Visual *visual,<br> unsigned long valuemask,<br> XSetWindowAttributes *attributes )<br></pre>
</blockquote>
<p>The parameters are as follows:</p>
<blockquote>
<dl>
<dt><code>display</code></dt>
<dd>A Display pointer, as returned by XOpenDisplay.</dd>
<dt><code>parent</code></dt>
<dd>The parent window for the new window. For Mini GLX, this
should be<code>RootWindow(dpy, 0)</code>.</dd>
<dt><code>x, y</code></dt>
<dd>The position of the window. For Mini GLX, both values should
be zero.</dd>
<dt><code>width, height</code></dt>
<dd>The size of the window. For Mini GLX, this specifies the
desired screen size such as 1024, 768 or 1280, 1024.</dd>
<dt><code>borderWidth</code></dt>
<dd>This parameter should be zero.</dd>
<dt><code>depth</code></dt>
<dd>The pixel depth for the window. For Mini GLX this should be
the depth found in the XVisualInfo object returned by <code>glxChooseVisual</code>.</dd>
<dt><code>class</code></dt>
<dd>The window class. For Mini GLX this value should be <code>InputOutput</code>.</dd>
<dt><code>visual</code></dt>
<dd>This parameter should be the <code>visual</code> field of the <code>XVisualInfo</code>
object returned by <code>glxChooseVisual</code>.</dd>
<dt><code>valuemask</code></dt>
<dd>This parameter indicates which fields of the <code>XSetWindowAttributes</code>
are to be used. For Mini GLX this is typically the bitmask<code>CWBackPixel
| CWBorderPixel | CWColormap</code>.</dd>
<dt><code>attributes</code></dt>
<dd>Initial window attributes. Of the fields in the <code>XSetWindowAttributes</code>
structure, the<code>background_pixel</code>, <code>border_pixel</code>
and <code>colormap</code> fields should be set. &nbsp;See the discussion
below regarding colormaps.</dd>
</dl>
</blockquote>
<p><code>XCreateWindow</code> will return a window handle if it succeeds
or zero if it fails.</p>
<h3>3.3.2 Window Mapping</h3>
<p>To display the window the XMapWindow function must be called:</p>
<blockquote>
<pre>void XMapWindow(Display *dpy, Window w)</pre>
</blockquote>
<p>This function does nothing in Mini GLX but is required for Xlib/GLX
compatibility</p>
<h3>3.3.3 Colormaps<br>
</h3>
<p>Xlib requires specification of a colormap when creating a window.
&nbsp;For purposes of interoperability, Mini GLX requires this as well,
though the colormap is not actually used. &nbsp;The XCreateColormap
function is used to create a colormap:</p>
<blockquote><code>Colormap XCreateColormap(Display *dpy, Window window,
Visual *visual, int alloc)</code><br>
<code></code></blockquote>
<p>The parameters are as follows:<br>
</p>
<blockquote>
<dl>
<dt><code>dpy</code></dt>
<dd>The display handle as returned by XOpenDisplay.</dd>
<dt><code>window</code></dt>
<dd> This parameter is ignored by Mini GLX but should be the value
returned by the <code>RootWindow(dpy, 0)</code> macro.<br>
</dd>
<dt><code>visual</code></dt>
<dd>This parameter is ignored by Mini GLX but should be the visual
field of the XVisualInfo object returned by glXChooseVisual. </dd>
<dt><code>alloc</code></dt>
<dd>This parameter is ignored by Mini GLX but should be set to <code>AllocNone</code>.</dd>
</dl>
</blockquote>
<br>
<h2>3.4 Creating a Rendering Context</h2>
<p>An OpenGL rendering context is created with the <code>glXCreateContext</code>
function:</p>
<blockquote>
<pre>GLXContext glXCreateContext(Display *dpy, XVisualInfo *visInfo, GLXContext shareList, Bool direct)<br></pre>
</blockquote>
<p>The parameters are as follows:</p>
<blockquote>
<dl>
<dt><code>dpy</code></dt>
<dd>The display handle as returned by XOpenDisplay.</dd>
<dt><code>visInfo</code></dt>
<dd>The visual as returned by glXChooseVisual.</dd>
<dt><code>shareList</code></dt>
<dd>If non-zero, texture objects and display lists are shared with
the named rendering context. If zero, texture objects and display lists
will (initially) be private to this context. They may be shared when a
subsequent context is created.</dd>
<dt><code>direct</code></dt>
<dd>Specifies whether direct or indirect rendering is desired. For
Mini GLX this value is ignored but it should be set to <code>True</code>.</dd>
</dl>
</blockquote>
<p><code>glXCreateContext</code> will return a GLXContext handle if it
succeeds or zero if it fails due to invalid parameter or insufficient
resources.<br>
<br>
</p>
<h2>3.5 Binding a Rendering Context</h2>
<p>The final step before beginning OpenGL rendering is to bind (i.e.
activate) a rendering context and drawing surface with the
glXMakeCurrent function:</p>
<blockquote>
<pre>Bool glXMakeCurrent(Display *dpy, GLXDrawable drawable, GLXContext ctx)<br></pre>
</blockquote>
<p>The parameters are as follows:</p>
<blockquote>
<dl>
<dt><code>dpy</code></dt>
<dd>The display handle, as returned by XOpenDisplay.</dd>
<dt><code>drawable</code></dt>
<dd>The window or drawable to bind to the rendering context. This
should be the value returned by XCreateWindow.</dd>
<dt><code>ctx</code></dt>
<dd>The rendering context to bind, as returned by glXCreateContext.</dd>
</dl>
</blockquote>
<p>If glXMakeCurrent succeeds True is returned. Otherwise False is
returned to indicate an invalid display, window or context parameter.</p>
<p>After the rendering context has been bound to the drawing surface
OpenGL rendering can begin.</p>
<p>The current rendering context may be unbound by calling
glXMakeCurrent with the window and context parameters set to zero.</p>
<p>An application may create any number of rendering contexts and bind
them as needed. Note that binding a rendering context is generally not a
light-weight operation. &nbsp;Most simple OpenGL applications create
only one rendering context.<br>
<br>
</p>
<h2>3.6 Color Buffer Swapping</h2>
<p>A double buffered window has two color buffers: a front buffer and a
back buffer. Normally, rendering is directed to the back buffer while
the front buffer is displayed. When rendering of a frame is finished
the front and back buffers are swapped to provide the illusion of
instanteous screen updates.</p>
<p>The color buffers for a particular window (i.e. drawable) may be
swapped with the glXSwapBuffers command:</p>
<blockquote>
<pre>void glXSwapBuffers(Display *dpy, GLXDrawable drawable)<br></pre>
</blockquote>
Any pending rendering commands will be completed before the buffer swap
takes place.<br>
<br>
Calling glXSwapBuffers on a window which is single-buffered has no
effect.<br>
<br>
<h2>3.7 Releasing Resources</h2>
<h3>3.7.1 Releasing Rendering Contexts</h3>
<p>A rendering context may be destroyed by calling glXDestroyContext:</p>
<blockquote>
<pre>void glXDestroyContext(Display *dpy, GLXContext ctx)<br></pre>
</blockquote>
<h3>3.7.2 Releasing Windows</h3>
<p>A window may be destroyed by calling XDestroyWindow:</p>
<blockquote>
<pre>void XDestroyWindow(Display *dpy, Window window)<br></pre>
</blockquote>
<h3>3.7.3 Releasing Visuals</h3>
<p>An XVisualInfo object may be freed by calling XFree:</p>
<blockquote>
<pre>void XFree(void *data)<br></pre>
</blockquote>
<h3>3.7.4 Releasing Colormaps</h3>
<p>A colormap may be freed by calling XFreeColormap:</p>
<blockquote>
<pre>void XFreeColormap(Display *dpy, Colormap colormap)<br></pre>
</blockquote>
<h3>3.7.4 Releasing Display Resources</h3>
<p>When the application is about to exit, the resources associated with
the graphics system can be released by calling XCloseDisplay:</p>
<blockquote>
<pre>void XCloseDisplay(Display *dpy)<br></pre>
</blockquote>
<p>The display handle becomes invalid at this point.<br>
<br>
</p>
<h2>3.8 Query Functions</h2>
<h3>3.8.1 Querying Available Visuals</h3>
A list of all available visuals can be obtained with the XGetVisualInfo
function:<br>
<br>
<div style="margin-left: 40px;"><code>XVisualInfo
*XGetVisualInfo(Display *dpy, long vinfo_mask, XVisualInfo
*vinfo_template, int *nitems_return)<br>
</code></div>
<br>
The parameters are as follows:<br>
<blockquote>
<dl>
<dt><code>dpy</code></dt>
<dd>The display handle, as returned by XOpenDisplay.</dd>
<dt><code>vinfo_mask</code></dt>
<dd>A bitmask indicating which fields of the vinfo_template are to
be matched. &nbsp;The value must be VisualScreenMask.</dd>
<dt><code>vinfo_template</code></dt>
<dd>A template whose fields indicate which visual attributes must
be matched by the results. &nbsp;The screen field of this structure must
be zero.</dd>
<dt><code>nitems_return</code></dt>
<dd>Returns the number of visuals returned. </dd>
</dl>
</blockquote>
The return value is the address of an array of all available visuals.<br>
<br>
An example of using XGetVisualInfo to get all available visuals follows:<br>
<br>
<div style="margin-left: 40px;"><code>XVisualInfo visTemplate, *results;</code><br>
<code>int numVisuals;</code><br>
<code>Display *dpy = XOpenDisplay(NULL);</code><br>
<code>visTemplate.screen = 0;</code><br>
<code>results = XGetVisualInfo(dpy, VisualScreenMask, &amp;visTemplate,
&amp;numVisuals);</code><br>
<code></code></div>
<br>
<h3>3.8.2 Querying Visual Attributes</h3>
<p>The GLX attributes of an X visual may be queried with the
glXGetConfig function:</p>
<blockquote>
<pre>int glXGetConfig(Display *dpy, XVisualInfo *vis, int attribute, int *value)<br></pre>
</blockquote>
<p>The parameters are as follows:</p>
<blockquote>
<dl>
<dt><code>dpy</code></dt>
<dd>The display handle, as returned by XOpenDisplay.</dd>
<dt><code>vis</code></dt>
<dd>The visual, as returned by glXChooseVisual.</dd>
<dt><code>attribute</code></dt>
<dd>The attribute to query. The attributes are listed below.</dd>
<dt><code>value</code></dt>
<dd>Pointer to an integer in which the result of the query will be
stored. </dd>
</dl>
</blockquote>
<p>The return value will be zero if no error occurs.<code>
&nbsp;GLX_INVALID_ATTRIBUTE</code> will be returned if the attribute
parameter is invalid.<code> &nbsp;GLX_BAD_VISUAL</code> will be returned
if the XVisualInfo parameter is invalid.</p>
<p>The following attributes may be queried:</p>
<blockquote>
<dl>
<dt><code>GLX_USE_GL</code></dt>
<dd>The result will be <code>True</code> or <code>False</code> to
indicate if OpenGL rendering is supported with the visual. Mini GLX
always return <code>True</code>.</dd>
<dt><code>GLX_RGBA</code></dt>
<dd>The result will be <code>True</code> for RGBA visuals or <code>False</code>
for color index visuals.</dd>
<dt><code>GLX_DOUBLEBUFFER</code></dt>
<dd>The result will be <code>True</code> if the visual has two
color buffers or <code>False</code> if the visual has one color buffer.</dd>
<dt><code>GLX_RED_SIZE</code></dt>
<dd>The result will be the number of red bits per pixel.</dd>
<dt><code>GLX_GREEN_SIZE</code></dt>
<dd>The result will be the number of green bits per pixel.</dd>
<dt><code>GLX_BLUE_SIZE</code></dt>
<dd>The result will be the number of blue bits per pixel.</dd>
<dt><code>GLX_ALPHA_SIZE</code></dt>
<dd>The result will be the number of alpha bits per pixel.</dd>
<dt><code>GLX_DEPTH_SIZE</code></dt>
<dd>The result will be the number of bits per Z value.</dd>
<dt><code>GLX_STENCIL_SIZE</code></dt>
<dd>The result will be the number of bits per stencil value.<br>
<br>
</dd>
</dl>
</blockquote>
<h3>3.8.3 Querying the Current Rendering Context</h3>
<p>The current rendering context can be queried with
glXGetCurrentContext: </p>
<blockquote>
<pre>GLXContext glXGetCurrentContext(void)<br></pre>
</blockquote>
<p>Zero will be returned if no context is currently bound.<br>
<br>
</p>
<h3>3.8.4 Querying the Current Drawable</h3>
<p>The current drawable (i.e. window or drawing surface) can be queried
with glXGetCurrentDrawable:</p>
<blockquote>
<pre>GLXDrawable glXGetCurrentDrawable(void)<br></pre>
</blockquote>
<p>Zero will be returned if no drawable is currently bound.<br>
<br>
</p>
<h3>3.8.5 Function Address Queries</h3>
<p>The glXGetProcAddress function will return the address of any
available OpenGL or Mini GLX function:</p>
<blockquote>
<pre>void *glXGetProcAddress(const GLubyte *procName)<br></pre>
</blockquote>
<p>If <code>procName</code> is a valid function name, a pointer to that
function will be returned. &nbsp;Otherwise, NULL will be returned.</p>
<p>The purpose of glXGetProcAddress is to facilitate using future
extensions to OpenGL or Mini GLX. If a future version of the library
adds new extension functions they'll be accessible via
glXGetProcAddress. The alternative is to hard-code calls to the new
functions in the application but doing so will prevent linking the
application with older versions of the library.<br>
<br>
</p>
<h2>3.9 Versioning</h2>
The Mini GLX version can be queried at run time with glXQueryVersion:
<blockquote>
<pre>Bool glXQueryVersion(Display *dpy, int *major, int *minor)<br></pre>
</blockquote>
<p><code>major</code> will be set to the major version number and<code>minor</code>
will be set to the minor version number.<code>True</code> will be
returned if the function succeeds. <code>False</code> will be returned
if the function fails due to invalid parameters. The <code>dpy</code>
argument is currently ignored, but should be the value returned by
XOpenDisplay.</p>
<p>At compile time, the Mini GLX interface version can be tested with
the MINI_GLX_VERSION_1_<i>x</i> preprocessor tokens. For example, if
version 1.0 of Mini GLX is supported, then<code> MINI_GLX_VERSION_1_0</code>
will be defined. If version 1.1 of Mini GLX is supported, then<code>
MINI_GLX_VERSION_1_1</code> will be defined.</p>
<p>At the time of writing the current Mini GLX version is 1.0.<br>
<br>
</p>
<h1>4.0 Interoperability with GLX and Xlib</h1>
While Mini GLX strives to be compatible with GLX and Xlib there are
some unavoidable differences which must be taken into consideration.<br>
<h2>4.1 Public vs Private Structures</h2>
The structure of many X data types is public. &nbsp;For example, the <code>Display</code>
data type is defined as a structure in /usr/include/X11/Xlib.h and
programmers may access any fields of that structure at will. &nbsp;Mini
GLX also defines a Display data type but its fields are hidden and not
visiblein <code>miniglx.h</code>. &nbsp;Duplicating the Xlib
declaration for the <code>Display</code> data type in minigl.h would
require defining a large number of other superfluous Xlib datatypes.<br>
<br>
Mini GLX users are discouraged from directly accessing the fields of
Xlib data types to maximize portability - though this is unavoidable to
some extent. &nbsp;For example, the <code>XVisualInfo</code> and <code>XSetWindowAtttributes</code>
data types must be completely public.
<h2>4.2 Macros</h2>
In some cases, Xlib defines macros which are meant to be used instead
of direct structure accesses. &nbsp;For example, the <code>RootWindow(dpy,
screen)</code> macro returns the root window for a given screen on a
given display. &nbsp;Unfortunately, macros do nothing to aid in ABI
compatibility since they are resolved at compile time instead of at
link/run time.<br>
<br>
Mini GLX also defines a <code>RootWindow</code> macro since it's
essential for creating windows. &nbsp;But the implementation of this
macro by Xlib and Mini GLX is completely different.<br>
<h2>4.3 Summary</h2>
Because Xlib and Mini GLX define data types and macros differently,
Mini GLX applications must be recompiled when retargeting Mini GLX or
native Xlib/GLX. &nbsp;That is, applications can't simply be re-linked
because of ABI incompatibilities.<br>
<br>
Nevertheless, the fact that Mini GLX programs can be recompiled for
Xlib and GLX increases portability and flexibility for testing and
prototyping.<br>
<br>
<h1>5.0 Example Program</h1>
<p>This section shows an example program which uses the Mini GLX
interface. The program simply draws several frames of a rotating square.<br>
</p>
<p>The program may be compiled for use with Xlib/GLX or Mini GLX by
setting the <code>USE_MINIGLX</code> token to 0 or 1, respectively.
&nbsp;Note that the only difference is the header files which are
included.<br>
</p>
<p> </p>
<pre><code><br></code>#define USE_MINIGLX 1 /* 1 = use Mini GLX, 0 = use Xlib/GLX */<br><br>#include &lt;stdio.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;GL/gl.h&gt;<br><br>#if USE_MINIGLX<br>#include &lt;GL/miniglx.h&gt;<br>#else<br>#include &lt;GL/glx.h&gt;<br>#include &lt;X11/Xlib.h&gt;<br>#endif<br><br><code>/*<br> * Create a simple double-buffered RGBA window.<br> */<br>static Window<br>MakeWindow(Display * dpy, unsigned int width, unsigned int height)<br>{<br> int visAttributes[] = {<br> GLX_RGBA,<br> GLX_RED_SIZE, 1,<br> GLX_GREEN_SIZE, 1,<br> GLX_BLUE_SIZE, 1,<br> GLX_DOUBLEBUFFER,<br> None<br> };<br> XSetWindowAttributes attr;<br> unsigned long attrMask;<br> Window root;<br> Window win;<br> GLXContext ctx;<br> XVisualInfo *visinfo;<br><br> root = RootWindow(dpy, 0);<br><br> /* Choose GLX visual / pixel format */<br> visinfo = glXChooseVisual(dpy, 0, visAttributes);<br> if (!visinfo) {<br> printf("Error: couldn't get an RGB, Double-buffered visual\n");<br> exit(1);<br> }<br><br> /* Create the window */<br> attr.background_pixel = 0;<br> attr.border_pixel = 0;<br> attr.colormap = XCreateColormap(dpy, root, visinfo-&gt;visual, AllocNone);<br> attrMask = CWBackPixel | CWBorderPixel | CWColormap;<br> win = XCreateWindow(dpy, root, 0, 0, width, height,<br> 0, visinfo-&gt;depth, InputOutput,<br> visinfo-&gt;visual, attrMask, &amp;attr);<br> if (!win) {<br> printf("Error: XCreateWindow failed\n");<br> exit(1);<br> }<br><br> /* Display the window */<br> XMapWindow(dpy, win);<br><br> /* Create GLX rendering context */<br> ctx = glXCreateContext(dpy, visinfo, NULL, True);<br> if (!ctx) {<br> printf("Error: glXCreateContext failed\n");<br> exit(1);<br> }<br><br> /* Bind the rendering context and window */<br> glXMakeCurrent(dpy, win, ctx);<br><br> return win;<br>}<br><br><br>/*<br> * Draw a few frames of a rotating square.<br> */<br>static void<br>DrawFrames(Display * dpy, Window win)<br>{<br> int angle;<br> glShadeModel(GL_FLAT);<br> glClearColor(0.5, 0.5, 0.5, 1.0);<br> for (angle = 0; angle &lt; 360; angle += 10) {<br> glClear(GL_COLOR_BUFFER_BIT);<br> glColor3f(1.0, 1.0, 0.0);<br> glPushMatrix();<br> glRotatef(angle, 0, 0, 1);<br> glRectf(-0.8, -0.8, 0.8, 0.8);<br> glPopMatrix();<br> glXSwapBuffers(dpy, win);<br> }<br>}<br><br><br>int<br>main(int argc, char *argv[])<br>{<br> Display *dpy;<br> Window win;<br><br> dpy = XOpenDisplay(NULL);<br> if (!dpy) {<br> printf("Error: XOpenDisplay failed\n");<br> return 1;<br> }<br><br> win = MakeWindow(dpy, 300, 300);<br><br> DrawFrames(dpy, win);<br><br> return 0;<br>}<br></code></pre>
<br>
</body>
</html>

View File

@@ -1,25 +1,10 @@
3Dfx Glide device driver
3Dfx Glide device driver for Mesa 3.1
(see below for FAQ)
Info for Mesa 4.1
-----------------
The 3dfx Glide driver in Mesa is disabled by default. Not too many people
use this driver anymore and at some point down the road it will be dropped.
To use/enable the Glide driver either do this:
'./configure --with-glide=DIR' Where DIR is the location of Glide, like
/usr/ or /usr/local
OR
'make linux-x86-glide' If using the old-style Makefile system.
The rest of this file hasn't changed since Mesa 3.3. Some of it's out of
date, but some is still valid.
This software is distributed under the terms of the GNU Library
General Public License, see the LICENSE file for details.
@@ -32,6 +17,8 @@ What do you need ?
under Linux (more information in the "Useful Glide Environment
Variables");
- Mesa 3.1;
- The 3Dfx Glide library 2.3 or later for your OS (the 2.4 works fine).
The Voodoo2 requires the Glide library 2.51. The Glide 3.1 is not
compatible with the Glide 2.x so it doesn't work with the current
@@ -40,6 +27,8 @@ What do you need ?
- A compiler supported by the Glide library (Micro$oft VC++ (tested),
Watcom (tested), GCC for Linux (tested), etc.);
- A lot of patience, this is an alpha release.
- It's nice to have two monitors - one for your normal graphics
card and one for your 3Dfx card. If something goes wrong with
an application using the 3Dfx hardware you can still see your
@@ -200,9 +189,9 @@ Doing more with Mesa & Linux Glide:
quality. However you can use any visual depth supported by X.
2. Set the following environment variables:
export MESA_GLX_FX="window" # to enable window rendering
export SST_VGA_PASS=1 # to stop video signal switching
export SST_NOSHUTDOWN=1 # to stop video signal switching
export MESA_GLX_FX="window" // to enable window rendering
export SST_VGA_PASS=1 // to stop video signal switching
export SST_NOSHUTDOWN=1 // to stop video signal switching
OR
setenv MESA_GLX_FX window
setenv SST_VGA_PASS 1
@@ -220,9 +209,6 @@ Doing more with Mesa & Linux Glide:
visual depth doesn't match the Voodoo framebufffer bit per pixel, it
is required also a pixel format translation).
NOTE: the in-window rendering feature only works with double-buffering.
On the fly switching between in window rendering and full screen rendering
--------------------------------------------------------------------------
@@ -341,11 +327,6 @@ 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:
-----------------------
@@ -560,7 +541,9 @@ 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.
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).
11. Which is the best make target for compiling the Mesa for

View File

@@ -3,71 +3,61 @@
* Introduction
Introduction
Mesa 4.1 features a driver for the BeOS. The driver implements
Mesa 3.1 features a new driver for the BeOS. The new driver implements
a clone of the BGLView class. This class, derived from BView, allows
OpenGL rendering into a BeOS window.
The 4.1 BeOS driver is an update of Brian Paul's BeOS driver released in Mesa 3.1.
Any application which uses the BGLView should be able to use Mesa
instead of Be's OpenGL without changing any code.
Since Be's OpenGL implementation (as of R5) is basically just the
Since Be's OpenGL implementation (as of R4) is basically just the
SGI sample implementation, it's pretty slow. You'll see that Mesa
is considerably faster.
* Source Code
Source Code
The source code for the driver is in Mesa-4.1/src/BeOS/ directory.
The source code for the driver is in Mesa-3.1/src/BeOS/GLView.cpp
It's not 100% finished at this time but many GLUT-based demos are
working. No optimizations have been made at this time.
* Compiling
Compiling
Requirements:
- gcc version 2.95.3 for BeOS
You can find it here: http://www.bebits.com/app/2157
Move to the Mesa-4.x src sub-directory and then type "make -f Makefile.BeOS-R5".
When it finishes the Mesa based libGL.so library for
BeOS will be in the Mesa-4.x/src/obj.{x86|ppc}/ directory.
To install it as Be's default libGL.so replacement, put it in your
/boot/home/config/lib/ directory. All your GL/GLUTapps will use
the Mesa based then.
By default, it build a non-debug version library.
The x86 (MMX, SSE and 3DNOW) optimizations are also supported for x86 target.
Sorry, Mesa don't have ppc (Altivec) optimizations yet.
Simply cd to the Mesa-3.x directory and type "make beos-r4".
When it finishes the libMesaGL.so and libMesaGLU.so libraries for
BeOS will be in the Mesa-3.x/lib/ directory.
* Example Programs
Look in the Mesa-4.x/BeOS/ directory for one or two BGLView demo
Example Programs
Look in the Mesa-3.x/BeOS/ directory for one or two BGLView demo
programs. They should have been compiled along with the Mesa
library.
* GLUT
A beta version of GLUT 3.7 port for BeOS can be found at
http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
There's is a 2.5 version in src-glut.beos/, too.
GLUT
A version of GLUT 2.5 for BeOS can be found in src-glut.beos/.
The original distribution can be obtained from
http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip
They are special version of GLUT adapted for the BeOS. I don't
This is a special version of GLUT adapted for the BeOS. I don't
believe Mark Kilgard's normal GLUT distribution includes BeOS
support.
It seems that you have to recompile GLUT with libMesaGL.so instead
of libGL.so in order for everything to work. I'm not sure why.
* Special Features
Special Features
Mesa's implementation of the BGLView class has an extra member
function: CopySubBufferMESA(). It basically works like SwapBuffers()
@@ -79,9 +69,7 @@ cause a fatal error when running with Be's OpenGL.
* Work Left To Do
BDirectWindow single buffering support is not implemented yet.
Work Left To Do
Color index mode is not implemented yet.
@@ -92,7 +80,7 @@ rendering. This should also be implemented for Mesa.
* Old BeOS Driver
Old BeOS Driver
Mesa 2.6 had an earlier BeOS driver. It was based on Mesa's Off-screen
rendering interface, not BGLView. If you're interested in the older
@@ -100,7 +88,7 @@ driver you should get Mesa 2.6.
* BeOS and Glide
BeOS and Glide
Mesa 3.0 supported the 3Dfx/Glide library on Beos. Download Mesa 3.0
if interested. Ideally, the 3Dfx/Glide support should be updated to
@@ -111,4 +99,4 @@ of February, 1999.
----------------------------------------------------------------------
$Id: README.BEOS,v 1.7 2002/09/19 16:19:44 brianp Exp $
$Id: README.BEOS,v 1.5 1999/03/03 02:34:04 brianp Exp $

View File

@@ -1,226 +0,0 @@
Mesa 5.1 DOS/DJGPP Port v1.4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Description:
~~~~~~~~~~~~
Well, guess what... this is the DOS port of Mesa 5.1, for DJGPP fans... Whoa!
The driver has its origins in ddsample.c, written by Brian Paul and found by me
in Mesa 3.4.2.
Legal:
~~~~~~
Mesa copyright applies, provided this package is used within Mesa. For anything
else, see GPL.
Installation:
~~~~~~~~~~~~~
Unzip and type:
make -f Makefile.DJ [OPTIONS...]
Available options:
Environment variables:
CPU optimize for the given processor.
default = pentium
GLU=[mesa|sgi] specify GLU directory; can be `sgi' (requires GNU/C++)
or `mesa'.
default = mesa
GLIDE path to Glide3 SDK; used with FX.
default = $(TOP)/glide3
FX=1 build for 3dfx Glide3. Note that this disables
compilation of most DMesa code and requires fxMesa.
As a consequence, you'll need the DJGPP Glide3
library to build any application.
default = no
MATROX=1 build for Matrox Millennium I (MGA2064W) cards.
This is experimental and not intensively tested.
default = no
HAVE_X86=1 optimize for i386.
default = no
HAVE_MMX=1 allow MMX specializations, provided your assembler
supports MMX instruction set. However, the true CPU
capabilities are checked at run-time to avoid lockups.
default = no
HAVE_SSE=1 (see HAVE_MMX)
default = no
HAVE_3DNOW=1 (see HAVE_MMX)
default = no
Targets:
all: build everything
libgl: build GL
libglu: build GLU
libglut: build GLUT
clean: remove object files
realclean: remove all generated files
Tested on:
CPU: AMD Athlon XP 1800+
Mainboard: EP-8KTA3 w/ 128 MB SDRAM
Video card: Voodoo5 5500 AGP w/ 64 MB SDRAM
DJGPP: djdev 2.04 + gcc v3.2.2 + make v3.80
OS: DOS and Win98SE
FAQ:
~~~~
1. Compilation
Q) `make' barfs and exits because it cannot find some stupid file.
A) You need LFN support.
A) When compiling for Glide (FX=1), pay attention to Glide path.
Q) Libraries built OK, but linker complains about `vsnprintf' every time I
compile some demo.
A) Upgrade to DJGPP 2.04.
A) Add `vsnprintf.c' to the CORE_SOURCES in `src/Makefile.DJ' (untested!).
A) Patch `src/mesa/main/imports.c' with the following line:
#define vsnprintf(buf, max, fmt, arg) vsprintf(buf, fmt, arg)
This hack should be safe in 90% of the cases, but if anything goes wrong,
don't come back to me crying.
Q) `make' complains about DXE3 or something, yet it builds the libraries.
A) DXE3 refers to the DJGPP dynamic modules. You'll need either the latest
DJGPP distro, or download the separate package from my web page. Read the
DXE3 documentation on how to use them.
A) When compiling for Glide (FX=1), make sure `glide3x.dxe' can be found in
LD_LIBRARY_PATH (or top `lib' directory).
2. Using Mesa for DJGPP
Q) DMesa is so SLOOOW! The Win32 OpenGL performs so much better...
A) Is that a question? If you have a 3dfx Voodoo Banshee or higher card,
you're lucky (check http://sourceforge.net/projects/glide for the DJGPP
port). If you have a Matrox Millennium I card, you just MIGHT be lucky...
If you haven't, sorry; everything is done in software. Suggestions?
Q) I tried to set refresh rate w/ DMesa, but without success.
A) Refresh rate control works only for VESA 3.0. If you were compiling for
Glide, see Glide info. If not, sorry!
Q) I made a simple application and it does nothing. It exits right away. Not
even a blank screen.
A) The pure software drivers (VESA/VGA) support only double-buffered modes.
A) Another weird "feature" is that buffer width must be multiple of 8 (I'm a
lazy programmer and I found that the easiest way to keep buffer handling
at peak performance ;-).
Q) The GLUT is incomplete.
A) See below.
libGLUT (the toolkit):
~~~~~~~~~~~~~~~~~~~~~~
Well, this "skeletal" GLUT implementation was taken from AllegGL project and
heavily changed. Thanks should go to Bernhard Tschirren, Mark Kilgard, Brian
Paul and probably others (or probably not ;-). GLUT functionality will be
extended only on an "as needed" basis.
GLUT talks to hardware via PC_HW package which was put together from various
pieces I wrote long time ago. It consists from the keyboard, mouse and timer
drivers.
My keyboard driver used only scancodes; as GLUT requires ASCII values for keys,
I borrowed the translation tables (and maybe more) from Allegro -- many thanks
to Shawn Hargreaves et co. Ctrl-Alt-Del (plus Ctrl-Alt-End, for Windows users)
will shut down the GLUT engine unconditionally: it will raise SIGINT, which in
turn will (hopefully) call the destructors, thus cleaning up your/my mess ;-)
NB: since the DJGPP guys ensured signal handlers won't go beyond program's
space (and since dynamic modules shall) the SIGINT can't be hooked (well, it
can, but it is useless), therefore you must live with the 'Exiting due to
signal SIGINT' message...
The mouse driver is far from complete (lack of drawing, etc), but is enough to
make almost all the demos work. Supports the CuteMouse WheelAPI.
The timer is pretty versatile for it supports multiple timers with different
frequencies. While not being the most accurate timer in the known universe, I
think it's OK. Take this example: you have timer A with a very high rate, and
then you have timer B with very low rate compared to A; now, A ticks OK, but
timer B will probably loose precision!
As an addition, stdout and stderr are redirected and dumped upon exit. This
means that `printf' can be safely called during graphics. A bit of a hack, I
know, because all messages come in bulk, but I think it's better than nothing.
"Borrowed" from LIBRHUTI (Robert Hoehne).
Window creating defaults: (0, 0, 300, 300), 16bpp. However, the video mode is
chosen in such a way that first window will fit. If you need high resolution
with small windows, set initial position far to the right (or way down); then
you can move them back to any position right before the main loop.
The following environment variables can customize GLUT behaviour:
GLUT_FPS - print frames/second statistics to stderr
DMESA_GLUT_REFRESH - set vertical screen refresh rate (VESA3)
DMESA_GLUT_BPP - set default bits per pixel (VGA needs 8)
DMESA_GLUT_ALPHA - set default alpha bits (8)
DMESA_GLUT_DEPTH - set default depth bits (16)
DMESA_GLUT_STENCIL - set default stencil bits (8)
DMESA_GLUT_ACCUM - set default accum bits (16)
History:
~~~~~~~~
v1.0 (mar-2002)
initial release
v1.1 (sep-2002)
+ added 3dfx Glide3 support
+ added refresh rate control
+ added fonts in GLUT
* lots of minor changes
v1.2 (nov-2002)
* synced w/ Mesa-4.1
- removed dmesadxe.h
v1.3 (mar-2003)
+ enabled OpenGL 1.4 support
+ added MMX clear/blit routines
+ enabled SGI's GLU compilation
+ added samples makefile
+ added new GLUT functions
+ added color-index modes
+ added Matrox Millennium MGA2064W driver
+ added 8bit FakeColor (thanks to Neil Funk)
+ added VGA support (to keep Ben Decker happy)
! fixed some compilation errors (reported by Chan Kar Heng)
* optimized driver for faster callback access... yeah, right :)
* overhauled virtual buffer and internal video drivers
* better fxMesa integration
* revamped GLUT
* switched to DXE3
v1.4 (oct-2003)
+ enabled GLUT fonts with DXE
+ truly added multi-window support in GLUT (for Adrian Woodward)
* accomodated makefiles with the new sourcetree
* fixed some ALPHA issues
x hacked and slashed the 3dfx driver (w/ help from Hiroshi Morii)
Contact:
~~~~~~~~
Name: Borca Daniel
E-mail: dborca@users.sourceforge.net
WWW: http://www.geocities.com/dborca/

View File

@@ -1,26 +1,172 @@
GGIMesa for LibGGI 2.x
LibGGI driver for Mesa-3.0
by Uwe Maurer (uwe_maurer@t-online.de)
Requirements:
-------------
LibGGI 2.0 or greater
Installation:
-------------
To install GGIMesa, follow the instructions in INSTALL.GNU. If you
wish to install GGIGLUT as well, first install GGIMesa and then run
Introduction
============
[from libggi.txt by Steve Cheng and Hartmut Niemann]
make
make install (must be root)
"LibGGI, the dynamic GGI (General Graphics Interface) library is a
flexible drawing library.
in ggi/ggiglut.
It provides an opaque interface to the display's acceleration
functions. It was originally intended to allow user programs to
interface with KGI, the kernel side of the GGI code, but other display
types can be easily used by loading the appropriate "display target"
(e.g. X, memory).
Notes:
------
LibGGI consists of a main library (libggi.so) and a multitude of
dynamic drivers. The library then loads the necessary "drivers" for
the requested mode, taking hints from the graphics device if
necessary. LibGGI can also load extension libraries, e.g. to provide
enhanced 2D and 3D functions.
* Set the environment variables GGIMESA_DEBUG and/or GGIGLUT_DEBUG
to 255 to see lots of debugging output.
It has been designed after having a look at several existing
libraries, and so far we have found porting to be quite simple from
and to most of them."
* GGIGLUT contains support for all of the GLUT 3.6 API except for the
high-level primitive drawing functions, but many of the functions (in
particular the menu drawing functions) are just stubs.
----------------------------------------------------------------------------
More information about the GGI project and LibGGI can be
obtained from the GGI website:
www.ggi-project.org
----------------------------------------------------------------------------
Installation
============
- Install LibGGI
- Unpack the Mesa archives
- In the Mesa directory type:
make linux-ggi
su
make linux-ggi-install
exit
- Now you can try some demos.
If they don't work, you can set the GGIMESA_DEBUG
variable to 255 and you will see some information from the
LibGGI-driver.
export GGIMESA_DEBUG=255
GLUT
====
You can change these default values in ggi/ggiglut.c:
#define WIDTH 640
#define HEIGHT 400
#define GRAPHTYPE_RGB GT_16BIT
#define GRAPHTYPE_INDEX GT_8BIT
Options:
-bpp x Set graphic mode with x bits per pixel
-size x y Screen (or window) is x*y pixels
Example:
demos/gears -size 320 200 -bpp 24
Updates
=======
You can find the latest LibGGI-driver and ggiglut on my
homepage:
http://home.t-online.de/home/uwe_maurer/ggimesa.htm
Uwe Maurer - uwe_maurer@t-online.de
LibGGI driver for Mesa-3.0
by Uwe Maurer (uwe_maurer@t-online.de)
Introduction
============
[from libggi.txt by Steve Cheng and Hartmut Niemann]
"LibGGI, the dynamic GGI (General Graphics Interface) library is a
flexible drawing library.
It provides an opaque interface to the display's acceleration
functions. It was originally intended to allow user programs to
interface with KGI, the kernel side of the GGI code, but other display
types can be easily used by loading the appropriate "display target"
(e.g. X, memory).
LibGGI consists of a main library (libggi.so) and a multitude of
dynamic drivers. The library then loads the necessary "drivers" for
the requested mode, taking hints from the graphics device if
necessary. LibGGI can also load extension libraries, e.g. to provide
enhanced 2D and 3D functions.
It has been designed after having a look at several existing
libraries, and so far we have found porting to be quite simple from
and to most of them."
----------------------------------------------------------------------------
More information about the GGI project and LibGGI can be
obtained from the GGI website:
www.ggi-project.org
----------------------------------------------------------------------------
Installation
============
- Install LibGGI
- Unpack the Mesa archives
- In the Mesa directory type:
make linux-ggi
su
make linux-ggi-install
exit
- Now you can try some demos.
If they don't work, you can set the GGIMESA_DEBUG
variable to 255 and you will see some information from the
LibGGI-driver.
export GGIMESA_DEBUG=255
GLUT
====
You can change these default values in ggi/ggiglut.c:
#define WIDTH 640
#define HEIGHT 400
#define GRAPHTYPE_RGB GT_16BIT
#define GRAPHTYPE_INDEX GT_8BIT
Options:
-bpp x Set graphic mode with x bits per pixel
-size x y Screen (or window) is x*y pixels
Example:
demos/gears -size 320 200 -bpp 24
Updates
=======
You can find the latest LibGGI-driver and ggiglut on my
homepage:
http://home.t-online.de/home/uwe_maurer/ggimesa.htm
Uwe Maurer - uwe_maurer@t-online.de

View File

@@ -1,50 +1,120 @@
August 30, 1998 -- Paul Garceau
Updated January 13, 2000 -- Paul Garceau (pgarceau@teleport.com)
August 30, 1998 -- Paul Garceau (pgarceau@teleport.com)
DISCLAIMER: I make this port of the Mesa 3-D Graphics Library as a service
DISCLAIMER: I make this extension to 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
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.
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.
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:
(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/)
EGCS-Mingw32 Beta 3.08 Archive Manifest:
mingw32.bat
src/makefile.nt4
src/wmesa.c
src-glu/makefile.nt4
This build has been tested under WinNT4/SP6. Win9x and WinNT5 remain untested by me. I have not tested any of the demos included with Mesa3d.
###############
I recommend using the GCC-2.95.2/Mingw32.
Greetings,
ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95.2
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
Much thanks to the combined efforts of Mumit Khan, Jan-Jaap Vanderhagen
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.
and Colin Peters for making it possible for the EGCS-Mingw32 toolchain to exist.
Installing GCC-2.95.2/Mingw32 Build:
Installing EGCS-Mingw32 Build Revisions:
a) Open the file archive (either tar.gz or .zip extensions)
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.
b) Decide the directory you want to move the archived files to.
a) Move the mingw32.zip file to the top level of the hard drive on your
system.
d) Extract the files from the archive.
e) Edit the mingw32.bat file to accomodate your choice of directory structure.
b) Copy all of the Beta 3.08 src/windows files to the src/ directory.
%mesaroot%: This is your root directory (Mesa-3.3)
%mesasrc%: This is the Mesa-3.3 src directory (Mesa-3.3\src)
%mesalib%: This is where the build will put libGL.a and libGLU.a
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
Running the Build:
Open your Command Prompt or MS-DOS prompt.
Go to your Mesa-3.3 'root' directory
At the command line type: mingw32
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:
That's all there is to it.
Open your Command Prompt/Dos prompt.
Go to your Mesa-3.0 beta 'root' directory.
This is the same directory that the Mesa mingw32.zip file was
originally stored in if you've installed the Mesa-3.0 beta 3-D
Graphics Library source as outlined in the "readme" file included
with the Mesa-3.0 beta distribution.
At the command line type: mingw32
mingw32 is the .bat file that actually does the build.
Enjoy!

View File

@@ -1,33 +1,45 @@
NOTE: this information is obsolete for Mesa 3.1. Due to the big
changes in the Mesa code, the threads support is out of date.
Someone will have to review/update it.
Mesa Threads README
-------------------
Thread safety was introduced in Mesa 2.6 by John Stone and
Christoph Poliwoda.
It was redesigned in Mesa 3.3 so that thread safety is
supported by default (on systems which support threads,
that is). There is no measurable penalty on single
threaded applications.
NOTE that the only _driver_ which is thread safe at this time
is the OS/Mesa driver!
At present the mthreads code supports three thread APIS:
Mesa 2.6 is the starting point for an effort to make Mesa
safe in multithreaded applications. The files src/mthreads.c and
src/mthreads.h provide a platform independent threads API which Mesa
uses internally to provide thread-safe operation. At present the mthreads
code supports three thread APIS:
1) POSIX threads (aka pthreads).
2) Solaris / Unix International threads.
3) Win32 threads (Win 95/NT).
Support for other thread libraries can be added src/glthread.[ch]
Here's the current list of targets which enable multithreaded handling
in Mesa:
linux-386-pthread for Linux w/ Intel assembly and linuxthreads
sunos5-thread for Suns with SunOS 5.x, using Solaris threads
sunos5-pthread for Suns with SunOS 5.[56] using POSIX threads
sunos5-gcc-thread for Suns with SunOS 5.x and GCC, using Solaris threads
sunos5-gcc-pthread for Suns with SunOS 5.[56] and GCC, using POSIX threads
In order to guarantee proper operation, it is
In order to use Mesa with a multithreaded application, Mesa must be compiled
using one of the thread-enabled configurations. In cases where a platform
supports multiple APIs which are acceptable to Mesa, Mesa must be built
with the same threads API as the application in order for things to work
properly. For example, Solaris >= 2.5 support both POSIX threads and
Sun's own threads API. In order to guarantee proper operation, it is
necessary for both Mesa and application code to use the same threads API.
So, if your application uses Sun's thread API, then you should build Mesa
using one of the targets for Sun threads.
Since this effort is still very much a work in progress, not all
aspects of Mesa are thread safe. As of this release (Mesa 2.6) only the
osmesa drivers have been made MT-safe. As work continues, other drivers
such as the X11 drivers will also incorporate MT-safe features.
The mtdemos directory contains some example programs which use
multiple threads to render to osmesa rendering context(s).
@@ -38,15 +50,17 @@ only one that really supports multiprocessor machines (AFAIK). See
http://pauillac.inria.fr/~xleroy/linuxthreads/README for further
information about the usage of linuxthreads.
If you are interested in helping with thread safety work in Mesa
join the Mesa developers mailing list and post your proposal.
If you are interested in helping develop MT-safe Mesa, please send email
to j.stone@acm.org and poliwoda@volumegraphics.com who are the two most
directly involved in this effort currently. Similarly, if you have problems
using the MT-safe builds of Mesa, please send us comments/bugs etc.
Future versions of Mesa will include more extensive documentation related
to multithreading. This is the first release of our work, so please bear
with us.
Regards,
John Stone -- j.stone@acm.org johns@cs.umr.edu
Christoph Poliwoda -- poliwoda@volumegraphics.com
Version info:
Mesa 2.6 - initial thread support.
Mesa 3.3 - thread support mostly rewritten (Brian Paul)

View File

@@ -1,85 +1,606 @@
File: docs/README.WIN32
Last updated: Sep 18, 2003 - Karl Schultz - kschultz@users.sourceforge.net
Quick Start
Unzip both ZIP files (MesaLib and MesaDemos) into the same directory.
The libs and demos build separately, so if you do not care about the
demos, you do not have to unzip that zip file. But if you do, it does
need to be unzipped into the same directory as the lib zip file because
the demos depend on the libs.
The build system has been changed to use Microsoft Visual Studio project
workspaces and projects. Makefiles are no longer shipped or supported, but
can be generated from the projects using Visual Studio.
Details and Notes
- To build the Mesa libraries, open the Mesa.dsw workspace file
in the top directory. You can build each project one-by-one,
or build the glut project to build everything except osmesa,
which needs to be built separately. The build process will
create a lib directory in the top directory and will put the
following files there:
OPENGL32.LIB, GLU32.LIB, GLUT32.LIB, OSMESA32.LIB
OPENGL32.DLL, GLU32.DLL, GLUT32.DLL, OSMESA32.DLL
- After building, you can copy the above DLL files to a place in your PATH
such as $SystemRoot/SYSTEM32. If you don't like putting things in a
system directory, place them in the same directory as the executable(s).
Be careful about accidentially overwriting files of the same name in
the SYSTEM32 directory.
- Build the demos by opening the appropriate *.dsw file in the
progs directory tree. For example, to build the demos, use
progs/demos/Windows/demos.dsw. The Windows directory contains
the workspace and all the projects for each demo program. Each
project places the executable in the same directory as its source
code, which is required for some demos.
- The demo projects also copy the Mesa library DLL files from the lib
directory into the same directory as the demo executables, so that
the demos use the Mesa libs you just built.
- The DLL files are built so that the external entry points use the
stdcall calling convention.
- Static LIB files are not built. The LIB files that are built with
are the linker import files associated with the DLL files.
- The si-glu sources are used to build the GLU libs. This was done
mainly to get the better tessellator code.
- The osmesa driver builds and should work on Windows as well as
any other platform.
- The Windows driver (in src/Windows) builds and runs at least at
a minimal level. I modified this driver to work with the new
Mesa 4.0 code and driver architecture, but I did not do a great
deal of optimization and testing. There are many opportunities
for optimization, many of which can be done by coding more specific
paths for the rasterizers. See src/osmesa/osmesa.c for some good
examples.
- There is DirectDraw support in the Windows driver, updated by
Daniel Slater. You'll need to uncomment the #define DDRAW line
in src/Windows/wmesadef.h and add ddraw.lib to the list of libraries.
On some systems, you will acheive significantly higher framerates
with DirectDraw.
- Some of the more specialized code like FX drivers, stereo, and
parallel support isn't compiled or tested. I left much of this
code alone, but it may need some work to get it 'turned on' again.
- No assembly code is compiled or assembled. Again, this may need
some work to turn it back on or use it again.
If you have a Windows-related build problem or question, it is
probably better to direct it to me (kschultz@users.sourceforge.net),
rather than directly to the other Mesa developers. I will help you
as much as I can. I also monitor the Mesa mailing lists and will
answer questions in this area there as well.
Karl Schultz
Mesa/Readme.win32
Last Updated: Friday, July 9th, 1999 - tjump@tertius.com
*** What's New
- Updated for Mesa 3.1beta2/CVS.
- DevStudio projects suspended for compatability reasons: projects modified
by DevStudio 6 are not compatible with DevStudio 5.
- Build environment change: The Glide SDK is no longer assumed to be in
the global INCLUDE/LIB environment vars, it is required that you set the
value 'GLIDE2X' as either an environment variable pointing to your Glide
SDK install directory or that you configure that as a build option to
nmake.exe when building fxmesagl32. Examples:
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x fxmesagl32
<or>
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x allfx
<or>
nmake /f nmake.mak GLIDE2X=g:\sdk\glide2x progs.3dfx.demos
The DevStudio workspace files for 3Dfx OpenGL require the definition of
GLIDE2SDK as an environment variable pointing to where your copy of the
Glide SDK has been installed. Adding this to your AUTOEXEC.BAT would do
so (change the directories to match):
SET GLIDE2SDK=G:\SDK\GLIDE2X
*** Legalese
These build files are provided as-is and are submitted to be included with
the "Mesa 3-D Graphics Library" package as (currently) maintained by Brian
Paul. These project build files are 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.
These project files are distributed in the hope that they 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.
*** Maintenance Responsiblity and Technical Support
While these files are now part of the Mesa core distribution please do NOT
contact Mr. Paul for help with them if you encounter problems as he can't
help you (currently). I will, however, attempt my straightforward best in
assisting anyone with using these files on their system. I can NOT
guarantee instant responses owing to other responsiblities, but I do try
dang hard to answer any mail w/in 24 hours. I may be contacted at the
above email address for the forseeable future.
-Ted
mailto://tjump@tertius.com
http://www.tertius.com/tjump
*** General Information
These build files facilitate convenient building of many variants of Mesa,
both as static link libraries (including mesaglu) and as dynamic link
libraries that in some cases may be used as "drop-in" replacements for
OpenGL32.DLL on both Windows95 and Windows NT.
The construction of the Win32 command-line build files and projects has
been something of a pet project of mine, and is based upon my own
"standard" Win32 build environment as supplied by the "nmake.mif" file.
They have been tested under Windows95 OSR2, Windows NT 4.0SP3, and Windows
NT 5.0 beta 1. The libraries that they generated have been tested (via the
demo programs) in a *limited* fashion on the above three systems, including
the 3Dfx versions.
The reason I went with command-line build environment instead of the more
convenient IDE-based project files is for two reasons: 1. These appear to
have some amount of portability between versions (the nmake syntax hasn't
changed much since Microsoft C 7.0) while the IDE project files seem to
change drastically each version. and 2. These are readable with any ascii
editor and such are better self-documentation of the file relationships for
more people such that it will facilitate supporting other Win32 compilers.
While these files only deal with building for x86 targeted code it *should*
be possible to add the necessary logic to them to build for the other MSVC
supported CPU targets, I simply have no hardware to test them on nor the
alternative compilers to build with.
*** Prerequisites for use
1. You must have a 32-bit Microsoft compiler installed. I have tested
this with Visual C 5.0 (SP3) and Visual C 4.2, but with minor
(possibly no) modification to the nmake.mak and nmake.mif files this
sequence should work on Visual C 2.0 also. The workspace files
(mesalib.dsw and mesademos-*.dsw) and their included project files
(*.dsp) are specific to the DevStudio IDE - I have made no attempt at
building a VC4 IDE project set as I do not use that any more. Note
that the VC workspace files NO LONGER use NORE are dependant upon the
nmake.mak and nmake.mif files for construction of definition (*.DEF)
and resource (*.RC) files.
*** Visual C 4.x Users Warning ****
Note that early editions of VC4 do NOT have header files current enough
for use building this code base. If you are using VC4 you will either need
to get an update to version 4.2 *or* you may download the Platform SDK
directly from Microsoft's web site (www.microsoft.com) and update your
build environment that way.
*** Visual C 4.x Users Warning ****
2. You must have the PATH, INCLUDE, and LIB environment variables set
properly. With VC5 you can easily get this by executing the VCVARS32.BAT
file that was created for you upon installation. It is found in the
DevStudio\VC\BIN directory, wherever you installed DevStudio. VC4 provides
a similar batch file in it's BIN directory also.
3. (optional) If you're going to build for 3Dfx/Voodoo you will need to
have previously installed the Glide SDK version 2.3 or later, if I
recall. This may be retrieved from www.3dfx.com for no money and some
download time. ;-) These build files assume that you have the Glide SDK
added to the respective environment variables (LIB and INCLUDE).
4. (optional) If you're going to build for S3/Virge you will need the S3
Developers Toolkit which may be downloaded from www.s3.com for the price of
registering on-line and some time. NOTE: I can build the s3mesa.dll file to
completion, however the compilation of s3mesa.c currently generates a large
amount of compiler warnings and between that and the fact that I can not at
all test it I can make no claims to it's ability to execute. Again, like
the 3Dfx version before this, these build files assume you have the S3Dtk H
and LIB files in the path of their respective environment variables.
Note 2: As of Mesa3.0beta6 I have build files, both command-line and IDE,
which should be able to build the s3mesa code base if it weren't for updates
being required in the S3 DD code support (Mesa-3.0/src/s3 directory).
I advise putting any include and lib files for secondary toolkits (Glide,
S3Tk, whatever) in their respective environment variables *before* the
Microsoft-assigned default values.
*** FAQ: Frequenty Asked Questions and Other Important Information ***
- When running the 3Dfx demos under Windows NT, they crash on exit, what's
up?
This is apparently a problem in Glide itself. The workaround is to go to
your C:\WINNT\SYSTEM32 directory and rename the file FXOEM2X.DLL to
FXOEM2X.DL_ to prevent Glide from loading and initializing it upon
startup. This is known to be an issue with cards that do not have "TV
out" and is known to cause crashes on Diamond Monster II 8M and 3Dfx
Reference boards, all using 3Dfx Reference Drivers version 2.53. Other
hardware/driver combinations will also likely exhibit this behavior.
- I'm having a problem building Mesa for static library linking.
This was caused by some incomplete testing on my part, and a fix is now
available in the form of an add-on to the base Mesa 3.0 release. The
file to get is:
via FTP download from: iris.ssec.wisc.edu
you want to go here: /pub/Mesa/patches_to_3.0/
you want to get file: Mesa-3.0-w32-static-fixes.tar.gz
This required a minor addition to INCLUDE/GL for a clean solution, the
file "include/gl/mesa_wgl.h" is automatically included by
"include/gl/gl.h" when a Win32 non-DLL build is in progress to provide
prototypes for the various wgl functions.
The only remaining hitch in this setup is that the 3Dfx build is not yet
running as a static build, because of problems with conflicts in
existance of the various GDI functions like ChoosePixelFormat,
etc. *sigh*
Anyway, the "allstatic" target now works as expected and builds all
book/sample/demos programs to boot. ;^)
- How do I get fxMesa to render in a window on the desktop instead of only
full-screen?
Use the Microsoft Windows fxMesa-in-a-window hack!
Seriously, if you want fxMesaGL to render using the 3Dfx Voodoo1 or
Voodoo2 hardware into a window on the desktop then all you need to do is
set the MESA_WGL_FX environment variable to anything other than
"fullscreen" and it will render into a window. If you wish to go
fullscreen then you only need to NOT have the environment variable, or
have it set to "fullscreen". You may also switch at runtime between
fullscreen-mode and windowed by pressing ALT-ENTER on the keyboard
(unless the application using Mesa does something with those keystrokes,
of course).
As of 8/13/98 this should be running a LOT better for more people as a
low-compatability item was cleaned up which prevented it from working on
many (most?) display drivers under Windows 9x.
- I have my 3Dfx card hooked to it's own monitor and I want the output to
stay on even if I switch to another program, is this possible?
If the Glide environment variable SST_DUALHEAD is set to '1' then fxMesa
will never disable the Voodoo output on a Voodoo1 or Voodoo2 display
regardless of whether the fxMesa application is "current" or not. This
works regardless of whether it's rendering using the window hack
mentioned above or not.
- I want to run the Mesa demos on my Intel740 card using it's own OpenGL
acceleration, how do I do this?
Build GLUT standalone for use with system OpenGL and GLU drivers!
The Command-line project supports building all test/demo programs against
these drivers also! This allows you full use of GLUT on Windows using
hardware accelerated OpenGL. Wheee! This includes the "3dfx/demos"
directory of which only two programs will not run on "standard"
opengl. Note that there are a few of the sample programs which will NOT
work without Mesa as they directly call into Mesa instead of using the
extension mechanism.
*** Included programs that exhibit unfortunate or bad behavior
- demos/bounce - doesn't run on high-colors screens? It's requesting an
INDEX display from GLUT and that fails on my true-color desktop. Changing
this to _RGB let's the program work, but it doesn't display
properly. This is probably just an idiosyncracy of my machine though, as
if I test the program using GLUT for System OpenGL on my Intel740 OpenGL
accelerated machine it's just hunky-dory.
- demos/glutfx - runs, but crashes on exit (but not on my Intel740 machine)
- demos/texobj - runs, but crashes on exit if ESC is pressed. Exits cleanly
if the Close box on the window frame is pressed with the mouse. Go figure.
- book/aaindex - doesn't run, can't get pixel format, because it wants an
INDEX display maybe (but is okay on my Intel740 machine)?
- most of the book/* demos don't respond to ESC being pressed.
- 3dfx/demos/* - all demos run, however they all crash on exit. I've traced
this so far as to determine the call it's happening with. The crash comes
from within Glide during the processing of the grGlideShutdown() call, as
in invalid memory reference exception. I'm wondering if this is because
of some state or processing not being completed before the call. Dunno,
but putting grSstIdle() in just before grGlideShutdown() does NOT fix the
problem.
- 3dfx/demos/tunnel2 - does not run on my system even with SLI mode
disabled. Hmmmm, maybe I need to disconnect my Voodoo2 cards?
*** Important Notes and Changing Default values
- The optimizer settings have been manually reworked in both command line
and DevStudio IDE files to hopefully prevent possible irrational code on
the part of the code generator. Formerly, it was configured for "/Ox",
now it is configured for safer handling at a slight potential performance
cost. This may not be required for Visual Studio 6 but I can't test that
(yet).
- These files build with the code targeted for Pentium processors and
8-byte structure padding.
- The IDE-built programs seem to be "happier" in that the command line
build of the 3Dfx demo "fire" will grenade on exit (?). Otherwise pretty
much everything may be built with either interface.
- The currently configured Mesa version is 3.1, and MesaDemos version is
the same. To change this permanently you will need to edit NMAKE.MAK and
change the lines that look like this (they start o/a line 116):
# Currently, Mesa is at rev 3.1 ...
#
!IF "$(MESAVER)" == ""
MESAVER=3.1
!ENDIF
# used in building all of the resource files for the Mesa DLLs
#
!IF "$(MESAFILEVER)" == ""
MESAFILEVER=3,1,0,0
!ENDIF
- Currently the build files are configured to be used from a Win32
directory that is included inside the main Mesa-3.1 heirarchy.
- The build files are smart enough to find the files for the core lib, glu,
glut, and the various demo programs if they are unpacked in the current
Mesa-3.1 heirarchy, like this:
\Mesa-3.1
\Mesa-3.1\src
\Mesa-3.1\src-glu
\Mesa-3.1\src-glut
\Mesa-3.1\Win32
\Mesa-3.1\samples
\Mesa-3.1\demos
\Mesa-3.1\book
\Mesa-3.1\3Dfx\demos
... should work. This arose because my initial build tests for the
demo files were done before MesaDemos 2.6 had been released.
- With the exception of the static link libraries generated by this file
set (mesagl.lib, mesaglu.lib, mesaglut.lib) all DLLs and executables are
built against the "Multithreaded DLL" runtime - this means that they
require MSVCRT.DLL or MSVCRTD.DLL in the path to execute.
** CHANGED 8/11/98 ***
Note also that the demos are all built aginst the "OpenGL32, GLU32, and
GLUT32" and as such they are fairly agnostic wrt: building against Mesa
for CPU-rendering, Mesa-for-3Dfx, Mesa-for-S3, or System OpenGL.
If you want to build them for use on your system and your display card
provides full OpenGL acceleration (Permedia, Intel740, Intergraph,
whatever) then you only need to build GLUT prior to building any of the
demo programs. For convenience, the GLUT project is included in each of
the demo projects Workspace files for the DevStudio IDE builds BUT it is
not automatically built - you still need to build it first manually.
Note that if you have GLUT already installed on your system (gl/glut.h in
yoru INCLUDE path, glut32.lib/glut32d.lib in your LIB path, and the DLL
in your PATH) then you do NOT need to build GLUT prior to the test
programs.
- The 3Dfx build of Mesa has primarily been tested with Quake 2 and it runs
(mostly) fine on my PC (take that for what you want it)...
** CHANGED 8/11/98 ***
There is still something going on that causes Glide to crash on shutdown,
when I run fxMesa under Windows NT, however it does not appear to occur
under Windows 9x on either Voodoo1 or Voodoo2 cards. *sigh*
- I can not test the S3 build as I have no machines available with Virge
based display cards.
- The multithreaded test code is *not* built as it requires pthreads and I
have as of yet spent not time trying to get that running. The latest word
that I saw WRT threading support on win32 was that they are intending to
support it natively within Win32 - so I'm waiting it out until they get
it done.
- Similarly, the 'xdemos' are not currently built because I haven't gotten
around to building the client libs for native win32 and getting it all
setup for use.
*** Output Files
All final output files (DLL/LIB) are placed in the Mesa-3.1/lib directory,
with the exception of the fxMesaGL32 build which is placed in
Mesa-3./lib/FX and the executable images which are placed in their source
directories.
To be able to execute the various test programs, you will need to copy the
requisite DLL files into the same directory as the EXE files. Note that
most of the 3Dfx/demos/* programs WILL run with the non-FX build of Mesa -
just very slowly. The two programs which are hard-linked with the FX build
and will not run without it are "glbpaltx" which uses "gl3DfxSetPaletteEXT"
directly instead of via the extensions mechanism and "tunnel2" which uses
"fxMesaSelectCurrentBoard" API for selecting between multiple 3Dfx cards
installed in one system. Likewise, "paltex" directly uses the
"glColorTableEXT" extension and thus may not run on anything except
Mesa. If these applications used the proper extension mechanism they could
then be used on more than "just" fxMesa to good effect (for example, the
rest of the "3Dfx/demos" run just peachy on the Intel740 card in my test
machine) under WinNT.
Because I'm anal about my computer and it's organization, and I like to
prevent collision between builds, each of the subprojects has their own
intermediate file directory inside .\win32\release (for example, when
building mesagl.lib all of it's intermediate files will be found in
.\win32\release\lib.mesagl). This makes it very easy to cleanup as you
only need to remove .\win32\release.
*** Okay, Enough, how do I build with this stuff already Ted!
Okay, no major calamity here. The basic way to use the project file is to
call it via NMAKE from the command line. The format is:
nmake[.exe] /f nmake.mak [options] [target]
The most likely [options] values you will use may be any combination of the
following:
DEBUG=1 or DEBUG=0
USE_CRTDLL=1 or USE_CRTDLL=0
Note that all three of these options are OFF by default.
The [target] includes but is not limited to the following (for full details
please peruse the NMAKE.MAK and NMAKE.MIF files - but be warned that
NMAKE.MIF is rather large and sometimes hard to follow):
--- convenience targets ---
all - builds everything
libfiles - builds all linking library files
progs - builds all executable images
--- library files, static and dynamic ---
mesagl - static lib build of Mesa core.
mesaglu - static lib build of MesaGLU core.
mesaglut - static lib build of Mesa GLUT core.
mesagl32 - dynamic lib build of Mesa core.
mesaglu32 - dynamic lib build of GLU core, generates
GLU32.DLL and/or GLU32d.DLL.
mesaglut32 - dynamic lib build of GLUT core, generates
GLUT32.DLL and/or GLUT32d.dll.
--- hardware accelerated mesa builds ---
fxmesagl32 - builds Mesa for use on top of the 3Dfx
Glide runtime libs
s3mesagl32 - builds mesa for use on top of the S3
'S3Tk' runtime libs.
--- executable images ---
progs.book - builds all programs in \book directory
progs.demos - builds all programs in \demos directory
progs.samples - builds all programs in \samples directory
These targets generate all of the programs in their respective
directories and link the executables against OpenGL32.DLL,
GLU32.DLL, and GLUT32.DLL (or their debug equivalents).
progs.3dfx.demos - builds all programs in \3dfx\demos directory
This target generates the 3Dfx/Demo executables, linking them
against GLUT32.DLL, GLU32.DLL, OPENGL32.DLL and are thus NOT
hard-bound to using Mesa per-se as you can simply NOT build the
Mesa core and GLU libraries.
--- Microsoft/SGI OpenGL-based GLUT and Demo program builds ----
*** IMPORTANT SAFETY TIP: If you're going to build these variants of
GLUT then DO NOT build any other target libraries in this package
first, OR from the command line run the "nmake /f nmake.mak clean"
command first! This is because generation of the GLUT for SGI
OpenGL target libraries conflicts in naming with the static build
libraries of Mesa and it's supporting GLUT build.
Currently, you may build GLUT as either GLUT32.DLL or GLUT.DLL for
use running against either Microsoft or SGI OpenGL for Window,
respectively. This allows for the general use of GLUT 3.7 on Windows
systems with fully compliant OpenGL.
You can build the GLUT DLL files either with the command line by
issuing either of these commands:
nmake /f nmake.mak glut.sysgl
<or>
nmake /f nmake.mak glut.sgigl
OR by using the DevStudio MesaLib Worksapce build the GLUT_SGIGL or
GLUT_SYSGL projects within the DevStudio IDE.
Unfortunately, the only way to build the test programs against this
build of GLUT is via the command line, and I will NOT be making
duplicate demo program projects for the IDE as it's just not worth it,
sorry.
To build the test programs against either MS or SGI OpenGL, you do so
via either of these two commands:
nmake /f nmake.mak progs.sysgl
<or>
nmake /f nmake.mak progs.sgigl
To use the GLUT-for-system-OpenGL in your own programs, you need to do
three things by way of preparation, after building GLUT of course:
1. Copy include\gl\glut.h to somewhere in your %INCLUDE% path, one
likely candidate location would be in your
"DevStudio\VC\INCLUDE\GL" directory.
2. Copy the linking libraries to somewhere in your %LIB% path, one
likely candidate location would be in your "DevStudio\VC\LIB"
directory. The linking libraries you need to copy are as
follows:
.\Release\GLUT32.LIB
.\Release\GLUT.LIB
.\Debug\GLUT32.LIB
.\Debug\GLUT.LIB
3. Copy the runtime libraries to somewhere in your %PATH%, one
likely candidate location would be in WINDOWS\SYSTEM. the files
that you should copy are as follows:
.\Release\GLUT32.DLL
.\Release\GLUT32.PDB
.\Release\GLUT.DLL
.\Release\GLUT.PDB
.\Debug\GLUT32d.DLL
.\Debug\GLUT32d.PDB
.\Debug\GLUTd.DLL
.\Debug\GLUTd.PDB
Some examples are in order ...
... build all dynamic-link libs using MSVCRT.DLL for C runtime:
nmake /f nmake.mak USE_CRTDLL=1 alldynamic
... To build all library variants and all test and demonstration
programs with the default settings you do this:
nmake /f nmake.mak all
... to build all static link libs and nothing else you do this:
nmake /f nmake.mak allstatic
... to build all non-accelerated dynamic link libs you do this:
nmake /f nmake.mak alldynamic
... to build all 3Dfx targeted dynamic link libs you do this:
nmake /f nmake.mak allaccel
... to build all S3 Virge targetd dynamic link libs you do this:
nmake /f nmake.mak alls3
... to build all libraries, static and dynamic, in all versions
you do this:
nmake /f nmake.mak libfiles
... to subsequently build all demo and test programs you do this:
nmake /f nmake.mak progs
... to cleanup all intermediate files you do this:
nmake /f clean
You get the picture. (I hope) ;^) You may also specify specify
single targets in a convenient fashion. The rule is simple, any of the
above named lib files, static or dynamic, may be built by providing it's
name on the command line as the target. Examples:
... to build only Mesa as OpenGL32.DLL ...
nmake /f nmake.mak opengl32
... to build only Mesa on top of the 3Dfx Glide API ...
nmake /f nmake.mak fxMesaGL32
<or>
nmake /f nmake.mak fxMesaGL
... to build only Mesa on top of the S3 Toolkit ...
nmake /f nmake.mak s3MesaGL32
<or>
nmake /f nmake.mak s3mesaGL
*** Revision history for ./win32 project files
1/18/98 - initial cut submitted and included with core mesa
2/5/98 - fixed internal dependency within nmake.mif upon there being
a $(DEVDIR) variable to make some temporary batch files
dependant upon (thanks to Keven T. McDonnell for finding
that there was this particular bug). I also updated the
build files for 2.6beta6.
2/8/98 - added DevStudio workspace and project files for all lib
files and some test programs. Updated readme.win32.
6/25/98 - initial revision for Mesa 3.0, does not include IDE files,
not everything is running. *sigh*
7/20/98 - Mesa 3.0beta6 rev of all build files, all libs built and
minimally tested, all demo programs built and minimally
tested to within limits of my PC. ;^) Eveything looks
MUCH better now ...
7/30/98 - Minor updates/edits based upon feedback from
Eero Pajarre <epajarre@koti.tpo.fi>. These updates include a fix
to the Mesa-on-3Dfx build such that Quake-II now runs almost
properly on my system. It runs, just *very* slowly and with *no*
textures. Hmmm. Doesn't make any difference whether Quake is set
to use 8-bit textures or not.
8/13/98 - Lots of build cleanups, minor bug fixes in fxwgl.c, and
compatability fix in fxapi.c for in-window rendering using 3Dfx
hardware.
8/26/98 - Final revisions for Mesa 3 release checked
9/22/98 - Fixed static builds for all but fxMesaGL32 and s3MesaGL32 targets
9/29/98 - Reorganized FAQ information and added Added faq entry about Glide
bug under NT (crash on exit) and a workaround.
11/21/98 - Updated files for Mesa 3.1 beta 1
Updated fxMesa window-hack code
Updated fxMesa resolution support to handle 1600x1200 & 1280x1024
7/9/99 - Rev'd for Mesa 3.1 beta 2

View File

@@ -1,146 +0,0 @@
WindML Driver for Mesa 4.0
Requirements
------------
Tornado 2 + WindML, Cumulative Patchs are recommended.
I suppose you have a valid WindML installation. Double buffer hardware
gives better performance than double buffer software so if you can
compile your WindML driver with this option, just do it. I/O
redirection is adviced in target server.
Tested on
---------
During the development, my main target was a CoolMonster:
- Video card: CT69000
- CPU: PENTIUM 266MHz
and my host a Windows NT + Tornado 2.
Installation
------------
1. Mesa sources must be in root directory (C:\)
2. Add the following line to your torVars.bat:
set MESA_BASE=C:\Mesa
OR copy the new torVars.bat in your bin path:
c:/Mesa/src/ugl/tornado/torVars.sample ->
/mnt/nt/Tornado/host/x86-win32/bin/torVars (for example)
3. In a command prompt:
$ torVars
$ cd c:\Mesa
$ make -f Makefile.ugl CPU=PENTIUM
Take a long while...
5. Include all the files from ugldemos folder to build some downloadable
application modules
4. Download UGL/Mesa object files on target
For example via the WindShell:
ld < c:\Tornado\target\lib\objMesaGL.o
ld < c:\Tornado\target\lib\objMesaUGL.o
ld < c:\Tornado\target\lib\objMesaGLU.o
ld < c:\Tornado\target\lib\objGLUTshapes.o
ld < c:\Tornado\target\lib\objMesaOS.o
You can put the previous lines in a file and use:
< filename
6. Download the application modules.
7. In WindShell, run:
-> uglalldemos
During the show some messages will appear, it provides some useful
information on key management.
Coding
------
Sample Usage:
In addition to the usual ugl calls to initialize UGL, (may be find an
input driver), you must do the following to use the UGL/Mesa interface:
1. Call uglMesaCreateContext() to create a UGL/Mesa rendering context,
given the display format.
2. Call uglMesaMakeCurrent() to bind the UGL/Mesa buffers to an
UGL/Mesa Context and to make the context the current one.
3. Make gl* calls to render your graphics.
4. Use uglMesaSwapBuffers() when double buffering to swap front/back buffers.
5. Before the UGL is destroyed, call MesaDestroyContext().
6. Before exiting, call if required uglEventQDestroy and then
uglDeinitialize();
Limitations
-----------
I found the following limitations in my driver :
- Color Indexed management is only in 8 bits
- It's possible to mix UGL/OpenGL application with a software
double buffer
Modifications
------------
New files in Mesa:
- Makefile.ugl
- rules.windmlmesa
- docs/README.UGL
- include/GL/uglmesa.h
- si-glu/Makefile.ugl
- src/Makefile.ugl
- src/ugl/torGLUTShapesInit.c
- src/ugl/torMesaUGLInit.c
- src/ugl/ugl_api.c
- src/ugl/ugl_dd.c
- src/ugl/ugl_glutshapes.c
- src/ugl/ugl_line.c
- src/ugl/ugl_span.c
- src/ugl/ugl_tri.c
- src/ugl/uglmesaP.h
- ugldemos/*
Modified files in Tornado 2.0:
- c:\Tornado\host\x86-win32\bin\torVars.bat
rem Command line build environments
set WIND_HOST_TYPE=x86-win32
set WIND_BASE=C:\Tornado
set MESA_BASE=C:\Mesa
set PATH=%WIND_BASE%\host\%WIND_HOST_TYPE%\bin;%PATH%
- c:\Tornado\target\config\comps\VxWorks\01uglmesa.cdf
- c:\Tornado\target\h\GL\*
Todo
----
- GCC 2.96, ASM compilation
Thanks to:
----------
Precision Insight team for their great job around Mesa, XFree, and DRI.
Wind River Systems to take me as an intern.
Stephane Raimbault
<stephane.raimbault@windriver.com>
<stephane.raimbault@deesse.univ-lemans.fr>
July 24, 2001

View File

@@ -1,46 +1,31 @@
Mesa Unix/X11 Information
Mesa 3.0 Unix/X11 Information
Installation
============
There are two ways to compile Mesa on Unix/X11 systems:
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.
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.
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/
directory. A few GLUT demos in the demos/ directory should be ready to run.
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 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.
When finished, the Mesa libraries will be in the Mesa-x.y/lib/ directory.
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.
Run 'make check' to build the demos.
See docs/INSTALL for more details.
When finished, the Mesa libraries will be in the Mesa-x.y/src/.libs/,
Mesa-x.y/si-glu/.libs, etc directories.
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.
If you have compilation problems you should try to fix them and return the
patches to the author.
Header and library files:
@@ -55,6 +40,16 @@ Header and library files:
(actually, use "cp -d" on Linux to preserve symbolic links)
Create a few symbolic links so that compiling OpenGL applications is easy:
cd /usr/local/lib
IF USING STATIC (lib*.a) FILES THEN
ln -s libMesaGL.a libGL.a
ln -s libMesaGLU.a libGLU.a
ELSE
ln -s libMesaGL.so libGL.so
ln -s libMesaGLU.so libGLU.so
ENDIF
Xt/Motif widgets:
If you want to use Mesa or OpenGL in your Xt/Motif program you can build
@@ -113,6 +108,8 @@ Remote display of OpenGL/GLX programs:
in /usr/local/Mesa and using the C-shell:
% cd /usr/local/Mesa
% make irix5-dso
% cd lib
% ln -s libMesaGL.so libGL.so
% setenv _RLD_LIST "/usr/local/Mesa/lib/libGL.so:DEFAULT"
% /usr/demos/bin/ideas_ogl // this is a test
@@ -135,7 +132,7 @@ Xt/Motif Widgets:
Togl:
Togl is an OpenGL/Mesa widget for Tcl/Tk.
See http://togl.sourceforge.net for more information.
See http://www.ssec.wisc.edu/~brianp/Togl.html for more information.
@@ -250,9 +247,14 @@ HPCR glClear(GL_COLOR_BUFFER_BIT) dithering
to HP systems with the HPCR (Color Recovery) system.
Extensions
==========
There are three Mesa-specific GLX extensions at this time.
Extensions:
The following OpenGL GLX extensions are currently implemented:
GLX_EXT_visual_info - GLX visual and transparent pixel extension
For detailed information about the extensions see www.opengl.org
There are four Mesa-specific GL/GLX extensions at this time.
GLX_MESA_pixmap_colormap
@@ -311,4 +313,4 @@ Summary of X-related environment variables:
----------------------------------------------------------------------
$Id: README.X11,v 3.10 2003/03/08 17:38:57 brianp Exp $
$Id: README.X11,v 3.2 1998/10/03 12:48:50 brianp Exp $

View File

@@ -1,146 +0,0 @@
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.2 2000/04/07 17:08:06 brianp Exp $

View File

@@ -1,12 +0,0 @@
Mesa 3.2 release notes
PLEASE READ!!!!
Mesa 3.2 is a stabilization of the Mesa 3.1 release. No new features
have been added. For a list of bug fixes please read the VERSIONS file.
----------------------------------------------------------------------
$Id: RELNOTES-3.2,v 1.2 2000/04/07 17:08:06 brianp Exp $

View File

@@ -1,32 +0,0 @@
Mesa 3.2.1 release notes
PLEASE READ!!!!
The Mesa 3.2.1 release mainly just fixes bugs since the 3.2 release.
See the VERSIONS file for the exact list.
GLU Polygon Tessellator
-----------------------
The GLU tessellator has been reverted back to the version included
with Mesa 3.0 since it's more stable. The Mesa 3.1/3.2 tessellator
implemented the GLU 1.3 specification but suffered from a number of
bugs.
Mesa implements GLU 1.1.
Ideally, people should use the GLU 1.3 library included in SGI's
OpenGL Sample Implementation (SI) available from
http://oss.sgi.com/projects/ogl-sample/
People are working to make easy-to-install Linux RPMs of the
GLU library.
----------------------------------------------------------------------
$Id: RELNOTES-3.2.1,v 1.2 2000/07/21 16:32:33 brianp Exp $

View File

@@ -1,271 +0,0 @@
Mesa 3.3 release notes
July 21, 2000
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.2.1) designate stable releases.
Mesa 3.3 has a undergone many internal changes since version 3.2
and features a lot of new extensions. 3.3 is expected to be pretty
stable, but perhaps not as stable as 3.2 which has been used by
thousands of users over the past months.
Everyone is encouraged to try Mesa 3.3. Bugs should be reported to
the Mesa bug database on www.sourceforge.net.
Header file / GLenum changes
----------------------------
The gl.h and glu.h headers now use #defines to define all GL_* tokens
instead of C-language enums. This change improves Mesa/OpenGL
interoperability.
New API dispatch code
---------------------
The core Mesa gl* functions are now implemented with a new dispatch
(jump table) which will allow simultaneous direct/indirect rendering.
The code is found in the glapi*.[ch] files.
Of interest: the actual "glFooBar" functions are generated with
templatized code defined in glapitemp.h and included by glapi.c
The glapitemp.h template should be reusable for all sorts of OpenGL
projects.
The new dispatch code has also optimized with x86 assembly code.
This optimization eliminates copying the function arguments during
dispatch.
New thread support
------------------
Thread support in Mesa has been rewritten. The glthread.[ch] files
replace mthreads.[ch]. Thread safety is always enabled (on platforms
which support threads, that is). There is virtually no performance
penalty for typical single-thread applications. See the glapi.c
file for details.
The Xlib driver (XMesa) is now thread-safe as well. Be sure to
call XInitThreads() in your app first. See the xdemos/glthreads.c
demo for an example.
Make configuration changes
--------------------------
If you use the old-style (non GNU automake) method to build Mesa note
that several of the configuration names have changed:
Old name New name
------------- ----------------
linux-elf linux
linux linux-static
linux-386-elf linux-386
linux-386 linux-386-static
etc.
New extensions
--------------
GL_ARB_transpose_matrix
Adds glLoadTransposeMatrixARB() and glMultTransposeMatrixARB()
functions.
GL_ARB_texture_cube_map
For cube-based reflection mapping.
GL_EXT_texture_add_env
Adds GL_ADD texture environment mode.
See http://www.berkelium.com/OpenGL/EXT/texture_env_add.txt
GL_EXT_texture_lod_bias
Allows mipmapped texture blurring and sharpening.
GLX_EXT_visual_rating extension
This extension has no effect in stand-alone Mesa (used for DRI).
GL_HP_occlusion_test
Used for bounding box occlusion testing (see demos/occlude.c).
GL_SGIX_pixel_texture / GL_SGIS_pixel_texture
Lets glDraw/CopyPixels draw a texture coordinate image.
GL_SGI_color_matrix
Adds a color matrix and another set of scale and bias parameters
to the glDraw/CopyPixels paths.
GL_SGI_color_table
Adds additional color tables to the glDraw/Read/CopyPixels paths.
GL_EXT_histogram
Compute histograms for glDraw/Read/CopyPixels.
GL_EXT_blend_func_separate
This is the same as GL_INGR_blend_func_separate.
GL_ARB_texture_cube_mapping
6-face cube mapping, nicer than sphere mapping
GL_EXT_texture_env_combine
For advanced texture environment effects.
Documentation for all these functions can be found at
http://oss.sgi.com/projects/ogl-sample/registry/
GLX_SGI_make_current_read functionality
---------------------------------------
The functionality of this extension is needed for GLX 1.3 (and required
for the Linux/OpenGL standards base).
Implementing this function required a **DEVICE DRIVER CHANGE**.
The old SetBuffer() function has been replaced by SetReadBuffer() and
SetDrawBuffer(). All device drivers will have to be updated because
of this change.
The new function, glXMakeContextCurrent(), in GLX 1.3 now works in Mesa.
The xdemos/wincopy.c program demonstrates it.
Image-related code changes
--------------------------
The imaging path code used by glDrawPixels, glTexImage[123]D,
glTexSubImage[123], etc has been rewritten. It's now faster,
uses less memory and has several bug fixes. This work was
actually started in Mesa 3.1 with the glTexImage paths but has now
been carried over to glDrawPixels as well.
Device driver interface changes
-------------------------------
Added new functions for hardware stencil buffer support:
WriteStencilSpan
ReadStencilSpan
WriteStencilPixels
ReadStencilPixels
Removed old depth buffer functions:
AllocDepthBuffer
DepthTestSpan
DepthTestPixels
ReadDepthSpanFloat
ReadDepthSpanInt
Added new depth buffer functions:
WriteDepthSpan
ReadDepthSpan
WriteDepthPixels
ReadDepthPixels
These functions always read/write 32-bit GLuints. This will allow
drivers to have anywhere from 0 to 32-bit Z buffers without
recompiling for 16 vs 32 bits as was previously needed.
New texture image functions
The entire interface for texture image specification has been updated.
With the new functions, it's optional for Mesa to keep an internal copy
of all textures. Texture download should be a lot faster when the extra
copy isn't made.
Misc changes
TexEnv now takes a target argument
Removed UseGlobalTexturePalette (use Enable function instead)
Also added
ReadPixels
CopyPixels
The SetBufffer function has been replaced by SetDrawBuffer and
SetReadBuffer functions. This lets core Mesa independently
specify which buffer is to be used for reading and which for
drawing.
The Clear function's mask parameter has changed. Instead of
mask being the flags specified by the user to glClear, the
mask is now a bitmask of the DD_*_BIT flags in dd.h. Now
multiple color buffers can be specified for clearing (ala
glDrawBuffers). The driver's Clear function must also
check the glColorMask glIndexMask, and glStencilMask settings
and do the right thing. See the X/Mesa, OS/Mesa, or FX/Mesa
drivers for examples.
The depth buffer changes shouldn't be hard to make for existing
drivers. In fact, it should simply the code. Be careful with
the depthBits value passed to gl_create_context(). 1 is a bad
value! It should normally be 0, 16, 24, or 32.
gl_create_framebuffer() takes new arguments which explicitly tell
core Mesa which ancillary buffers (depth, stencil, accum, alpha)
should be implemented in software. Mesa hardware drivers should
carefully set these flags depending on which buffers are in the
graphics card.
Internal constants
------------------
Point and line size range and granularity limits are now stored
in the gl_constants struct, which is the Const member of GLcontext.
The limits are initialized from values in config.h but may be
overridden by device drivers to reflect the limits of that driver's
hardware.
Also added constants for NumAuxBuffers and SubPixelBits.
OpenGL Conformance
------------------
Mesa now passes all the OpenGL 1.1 conformance tests, except for
antialiased lines. AA lines fail on some, but not all, the tests.
In order to fix the remaining failures, a new AA line algorithm will
be needed (which computes coverage values for end-point fragments).
This will be done for Mesa 3.5/3.6.
OpenGL 1.2 GL_ARB_imaging subset
--------------------------------
Mesa 3.3 implements all the features of GL_ARB_imaging except for
image convolution. This will (hopefully) be done for Mesa 3.5/3.6.
----------------------------------------------------------------------
$Id: RELNOTES-3.3,v 1.8 2000/07/21 16:26:41 brianp Exp $

View File

@@ -1,22 +0,0 @@
Mesa 3.4 release notes
November 3, 2000
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
Mesa 3.4 simply fixes bugs found in the Mesa 3.3 release. For details,
see the VERSIONS file.
----------------------------------------------------------------------
$Id: RELNOTES-3.4,v 1.2 2002/03/23 02:37:17 brianp Exp $

View File

@@ -1,22 +0,0 @@
Mesa 3.4.1 release notes
February 9, 2001
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
Mesa 3.4.1 is a maintenance release that simply fixes bugs found since
the Mesa 3.4 release. For details, see the VERSIONS file.
----------------------------------------------------------------------
$Id: RELNOTES-3.4.1,v 1.2 2001/05/23 14:45:01 brianp Exp $

View File

@@ -1,22 +0,0 @@
Mesa 3.4.2 release notes
May 17, 2001
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
Mesa 3.4.2 is a maintenance release that simply fixes bugs found since
the Mesa 3.4.1 release. For details, see the VERSIONS file.
----------------------------------------------------------------------
$Id: RELNOTES-3.4.2,v 1.2 2001/05/23 14:45:01 brianp Exp $

View File

@@ -1,228 +0,0 @@
Mesa 3.5 release notes
June 21, 2001
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.5) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
The biggest change in Mesa 3.5 is a complete overhaul of the source
code in order to make it more modular. This was driven by the DRI
hardware drivers. It simplifies the DRI drivers and opens the door
to hardware transform/clip/lighting (TCL). Keith Whitwell can take
the credit for that.
Driver Support
--------------
The device driver interface in Mesa 3.5 has changed a lot since Mesa 3.4
Not all of the older Mesa drivers have been updated. Here's the status:
Driver Status
---------------------- -----------
XMesa (Xlib) updated
OSMesa (off-screen) updated
FX (3dfx Voodoo1/2) updated
SVGA updated
GGI not updated
Windows/Win32 not updated
DOS/DJGPP not updated
BeOS not updated
Allegro not updated
D3D not updated
DOS not updated
We're looking for volunteers to update the remaining drivers. Please
post to the Mesa3d-dev mailing list if you can help.
GLU 1.3
-------
Mesa 3.5 includes the SGI Sample Implementation (SI) GLU library.
This version of GLU supports the GLU 1.3 specification. The old
Mesa GLU library implemented the 1.1 specification. The SI GLU
library should work much better.
You'll need a C++ compiler to compile the SI GLU library. This may
be a problem on some systems.
New Extensions
--------------
GL_EXT_convolution
Adds image convolution to glRead/Copy/DrawPixels/TexImage.
GL_ARB_imaging
This is the optional imaging subset of OpenGL 1.2.
It's the GL_EXT_convolution, GL_HP_convolution_border_modes,
GL_EXT_histogram, GL_EXT_color_table, GL_EXT_color_subtable
GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_subtract
and GL_SGI_color_matrix extensions all rolled together.
This is supported in all software renderers but not in all
hardware drivers (3dfx for example).
GL_ARB_texture_compression
This is supported in Mesa but only used by the 3dfx DRI drivers
for Voodoo4 and later.
GL_ARB_texture_env_add
This is identical to GL_EXT_texture_env_add.
GL_NV_blend_square
Adds extra blend source and dest factors which allow squaring
of color values.
GL_EXT_fog_coord
Allows specification of a per-vertex fog coordinate instead of
having fog always computed from the eye distance.
GL_EXT_secondary_color
Allows specifying the secondary (specular) color for each vertex
instead of getting it only from lighting in GL_SEPARATE_SPECULAR_COLOR
mode.
GL_ARB_texture_env_combine
Basically the same as GL_EXT_texture_env_combine
GL_ARB_texture_env_add extension
Texture addition mode.
GL_ARB_texture_env_dot3 extension
Dot product texture environment.
GL_ARB_texture_border_clamp
Adds GL_CLAMP_TO_BORDER_ARB texture wrap mode
GL_SGIX_depth_texture, GL_SGIX_shadow and GL_SGIX_shadow_ambient
Implements a shadow casting algorithm based on depth map textures
GL_SGIS_generate_mipmap
Automatically generate lower mipmap images whenever the base mipmap
image is changed with glTexImage, glCopyTexImage, etc.
libOSMesa.so
------------
libOSMesa.so is a new library which contains the OSMesa interface for
off-screen rendering. Apps which need the OSMesa interface should link
with both -lOSMesa and -lGL. This change was made so that stand-alone
Mesa works the same way as XFree86/DRI's libGL.
Device Driver Changes / Core Mesa Changes
-----------------------------------------
The ctx->Driver.LogicOp() function has been removed. It used to
be called during state update in order to determine if the driver
could do glLogicOp() operations, and if not, set the SWLogicOpEnabled
flag. Drivers should instead examine the LogicOp state themselves
and choose specialized point, line, and triangle functions appropriately,
or fall back to software rendering. The Xlib driver was the only driver
to use this function. And since the Xlib driver no longer draws
points, lines or triangles using Xlib, the LogicOp function isn't needed.
The ctx->Driver.Dither() function has been removed. Drivers should
detect dither enable/disable via ctx->Driver.Enable() instead.
The ctx->Driver.IndexMask() and ctx->Driver.ColorMask() functions
are now just called from glIndexMask and glColorMask like the other
GL state-changing functions. They are no longer called from inside
gl_update_state(). Also, they now return void. The change was made
mostly for sake of uniformity.
The NEW_DRVSTATE[0123] flags have been removed. They weren't being used
and are obsolete w.r.t. the way state updates are done in DRI drivers.
Removed obsolete gl_create_visual() and gl_destroy_visual().
Renamed functions (new namespace):
old new
gl_create_framebuffer _mesa_create_framebuffer
gl_destroy_framebuffer _mesa_destroy_framebuffer
gl_create_context _mesa_create_context
gl_destroy_context _mesa_destroy_context
gl_context_initialize _mesa_context_initialize
gl_copy_context _mesa_copy_context
gl_make_current _mesa_make_current
gl_make_current2 _mesa_make_current2
gl_get_current_context _mesa_get_current_context
gl_flush_vb _mesa_flush_vb
gl_warning _mesa_warning
gl_compile_error _mesa_compile_error
All the drivers have been updated, but not all of them have been
tested since I can't test some platforms (DOS, Windows, Allegro, etc).
X/Mesa Driver
-------------
The source files for the X/Mesa driver in src/X have been renamed.
The xmesa[1234].c files are gone. The new files are xm_api.c,
xm_dd.c, xm_line.c, xm_span.c and xm_tri.c.
Multitexture
------------
Eight texture units are now supported by default.
OpenGL SI related changes
-------------------------
In an effort to make Mesa's internal interfaces more like the OpenGL
SI interfaces, a number of changes have been made:
1. Importing the SI's glcore.h file which defines a number of
interface structures like __GLimports and __GLexports.
2. Renamed "struct gl_context" to "struct __GLcontextRec".
3. Added __glCoreCreateContext() and __glCoreNopDispatch() functions.
4. The GLcontext member Visual is no longer a pointer.
5. New file: imports.c to setup default import functions for Mesa.
16-bit color channels
---------------------
There's experimental support for 16-bit color channels (64-bit pixels)
in Mesa 3.5. Only the OSMesa interface can be used for 16-bit rendering.
Type "make linux-osmesa16" in the top-level directory to build the
special libOSMesa16.so library.
This hasn't been tested very thoroughly yet so please file bug reports
if you have trouble.
In the future I hope to implement support for 32-bit, floating point
color channels.
----------------------------------------------------------------------
$Id: RELNOTES-3.5,v 1.14 2001/06/20 19:02:48 brianp Exp $

View File

@@ -1,163 +0,0 @@
Mesa 4.0 release notes
October 18, 2001
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
Mesa version 4.0 signifies two things:
1. A stabilization of the 3.5 development release
2. Implementation of the OpenGL 1.3 specification
Note that the Mesa major version number is incremented with the OpenGL
minor version number:
Mesa 1.x == OpenGL 1.0
Mesa 2.x == OpenGL 1.1
Mesa 3.x == OpenGL 1.2
Mesa 4.x == OpenGL 1.3
New Features
------------
Mesa 3.5 already had all the new features of OpenGL 1.3, implemented as
extensions. These extensions were simply promoted to standard features:
GL_ARB_multisample
GL_ARB_multitexture
GL_ARB_texture_border_clamp
GL_ARB_texture_compression
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_dot3
GL_ARB_transpose_matrix
In Mesa 4.0 the functions defined by these extensions are now available
without the "ARB" suffix. For example, glLoadTransposeMatrixf() is now
a standard API function. The new functions in OpenGL 1.3 and Mesa 4.0 are:
glActiveTexture
glClientActiveTexture
glCompressedTexImage1D
glCompressedTexImage2D
glCompressedTexImage3D
glCompressedTexSubImage1D
glCompressedTexSubImage2D
glCompressedTexSubImage3D
glGetCompressedTexImage
glLoadTransposeMatrixd
glLoadTransposeMatrixf
glMultiTexCoord1d
glMultiTexCoord1dv
glMultiTexCoord1f
glMultiTexCoord1fv
glMultiTexCoord1i
glMultiTexCoord1iv
glMultiTexCoord1s
glMultiTexCoord1sv
glMultiTexCoord2d
glMultiTexCoord2dv
glMultiTexCoord2f
glMultiTexCoord2fv
glMultiTexCoord2i
glMultiTexCoord2iv
glMultiTexCoord2s
glMultiTexCoord2sv
glMultiTexCoord3d
glMultiTexCoord3dv
glMultiTexCoord3f
glMultiTexCoord3fv
glMultiTexCoord3i
glMultiTexCoord3iv
glMultiTexCoord3s
glMultiTexCoord3sv
glMultiTexCoord4d
glMultiTexCoord4dv
glMultiTexCoord4f
glMultiTexCoord4fv
glMultiTexCoord4i
glMultiTexCoord4iv
glMultiTexCoord4s
glMultiTexCoord4sv
glMultTransposeMatrixd
glMultTransposeMatrixf
glSampleCoverage
glSamplePass
GLX 1.4 is the companion to OpenGL 1.3. The only new features in GLX 1.4
are support for multisampling and the GLX_ARB_get_proc_address extension.
glXGetProcAddress() is the only new function in GLX 1.4.
Multisample and Texture Compression
-----------------------------------
The OpenGL 1.3 specification allows the multisample and texture compression
features to essentially be no-ops. For example, if you query for multisample
support you'll find none, but the API functions work.
Similarly, texture compression is not implemented by any of the software
drivers but you can specify a generic compressed texture format (like
GL_COMPRESSED_RGBA) to glTexImage2D and it'll be accepted.
Device Drivers
--------------
Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
device driver. If the driver enables all the ARB extensions which are part
of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise,
it'll return "1.2".
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of the drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.3
OSMesa (off-screen) implements OpenGL 1.3
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.3
GGI needs updating
DOS/DJGPP needs updating
BeOS needs updating
Allegro needs updating
D3D needs updating
DOS needs updating
Special thanks go to Karl Schultz for updating the Windows driver.
The XFree86/DRI drivers have not yet been updated to use Mesa 4.0 as of
September 2001, but that should happen eventually.
Other Changes
-------------
See the VERSIONS file for more details about bug fixes, etc. in Mesa 4.0.
----------------------------------------------------------------------
$Id: RELNOTES-4.0,v 3.2 2001/10/17 14:59:21 brianp Exp $

View File

@@ -1,22 +0,0 @@
Mesa 4.0.1 release notes
December 17, 2001
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
Mesa 4.0.1 only contains bug fixes since version 4.0.
See the docs/VERSIONS file for the list of bug fixes.
----------------------------------------------------------------------
$Id: RELNOTES-4.0.1,v 1.2 2001/12/18 14:08:23 brianp Exp $

View File

@@ -1,50 +0,0 @@
Mesa 4.0.2 release notes
March 25, 2002
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
Mesa 4.0.2 only contains bug fixes and a new DOS driver since version 4.0.1.
See the docs/VERSIONS file for the list of bug fixes.
Device Drivers
--------------
Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
device driver. If the driver enables all the ARB extensions which are part
of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise,
it'll return "1.2".
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of the drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.3
OSMesa (off-screen) implements OpenGL 1.3
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.3
DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2)
GGI needs updating
BeOS needs updating
Allegro needs updating
D3D needs updating
----------------------------------------------------------------------
$Id: RELNOTES-4.0.2,v 1.2 2002/03/23 02:38:39 brianp Exp $

View File

@@ -1,52 +0,0 @@
Mesa 4.0.3 release notes
June 25, 2002
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Odd numbered versions (such as 3.3) designate new developmental releases.
Even numbered versions (such as 3.4) designate stable releases.
Mesa 4.0.3 basically just contains bug fixes version 4.0.2.
See the docs/VERSIONS file for the list of bug fixes.
The GGI driver has been updated, thanks to Filip Spacek.
Device Drivers
--------------
Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
device driver. If the driver enables all the ARB extensions which are part
of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise,
it'll return "1.2".
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of the drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.3
OSMesa (off-screen) implements OpenGL 1.3
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.3
DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2)
GGI implements OpenGL 1.3
BeOS needs updating
Allegro needs updating
D3D needs updating
----------------------------------------------------------------------
$Id: RELNOTES-4.0.3,v 1.2 2002/06/26 02:36:34 brianp Exp $

View File

@@ -1,308 +0,0 @@
Mesa 4.1 release notes
October 29, 2002
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Even numbered versions (such as 4.0) designate stable releases.
Odd numbered versions (such as 4.1) designate new developmental releases.
New Features in Mesa 4.1
------------------------
New extensions. Docs at http://oss.sgi.com/projects/ogl-sample/registry/
GL_NV_vertex_program
NVIDIA's vertex programming extension
GL_NV_vertex_program1_1
A few features built on top of GL_NV_vertex_program
GL_ARB_window_pos
This is the ARB-approved version of GL_MESA_window_pos
GL_ARB_depth_texture
This is the ARB-approved version of GL_SGIX_depth_texture.
It allows depth (Z buffer) data to be stored in textures.
This is used by GL_ARB_shadow
GL_ARB_shadow
Shadow mapping with depth textures.
This is the ARB-approved version of GL_SGIX_shadow.
GL_ARB_shadow_ambient
Allows one to specify the luminance of shadowed pixels.
This is the ARB-approved version of GL_SGIX_shadow_ambient.
GL_EXT_shadow_funcs
Extends the set of GL_ARB_shadow texture comparision functions to
include all eight of standard OpenGL dept-test functions.
GL_ARB_point_parameters
This is basically the same as GL_EXT_point_parameters.
GL_ARB_texture_env_crossbar
Allows any texture combine stage to reference any texture source unit.
GL_NV_point_sprite
For rendering points as textured quads. Useful for particle effects.
GL_NV_texture_rectangle (new in 4.0.4 actually)
Allows one to use textures with sizes that are not powers of two.
Note that mipmapping and several texture wrap modes are not allowed.
GL_EXT_multi_draw_arrays
Allows arrays of vertex arrays to be rendered with one call.
GL_EXT_stencil_two_side
Separate stencil modes for front and back-facing polygons.
GLX_SGIX_fbconfig & GLX_SGIX_pbuffer
Off-screen rendering support.
GL_ATI_texture_mirror_once
Adds two new texture wrap modes: GL_MIRROR_CLAMP_ATI and
GL_MIRROR_CLAMP_TO_EDGE_ATI.
Device Driver Status
--------------------
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of these drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.3
OSMesa (off-screen) implements OpenGL 1.3
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.3
DOS/DJGPP implements OpenGL 1.3
GGI implements OpenGL 1.3
BeOS needs updating (underway)
Allegro needs updating
D3D needs updating
DOS needs updating
New features in GLUT
--------------------
1. Frames per second printing
GLUT now looks for an environment variable called "GLUT_FPS". If it's
set, GLUT will print out a frames/second statistic to stderr when
glutSwapBuffers() is called. By default, frames/second is computed
and displayed once every 5 seconds. You can specify a different
interval (in milliseconds) when you set the env var. For example
'export GLUT_FPS=1000' or 'setenv GLUT_FPS 1000' will set the interval
to one second.
NOTE: the demo or application must call the glutInit() function for
this to work. Otherwise, the env var will be ignored.
Finally, this feature may not be reliable in multi-window programs.
2. glutGetProcAddress() function
The new function:
void *glutGetProcAddress(const char *procName)
is a wrapper for glXGetProcAddressARB() and wglGetProcAddress(). It
lets you dynamically get the address of an OpenGL function at runtime.
The GLUT_API_VERSION has been bumped to 5, but I haven't bumped the
GLUT version number from 3.7 since that's probably Mark Kilgard's role.
This function should probably also be able to return the address of
GLUT functions themselves, but it doesn't do that yet.
XXX Things To Do Yet XXXX
-------------------------
isosurf with vertex program exhibits some missing triangles (probably
when recycling the vertex buffer for long prims).
Porting Info
------------
If you're porting a DRI or other driver from Mesa 4.0.x to Mesa 4.1 here
are some things to change:
1. ctx->Texture._ReallyEnabled is obsolete.
Since there are now 5 texture targets (1D, 2D, 3D, cube and rect) that
left room for only 6 units (6*5 < 32) in this field.
This field is being replaced by ctx->Texture._EnabledUnits which has one
bit per texture unit. If the bit k of _EnabledUnits is set, that means
ctx->Texture.Unit[k]._ReallyEnabled is non-zero. You'll have to look at
ctx->Texture.Unit[k]._ReallyEnabled to learn if the 1D, 2D, 3D, cube or
rect texture is enabled for unit k.
This also means that the constants TEXTURE1_*, TEXTURE2_*, etc are
obsolete.
The tokens TEXTURE0_* have been replaced as well (since there's no
significance to the "0" part:
old token new token
TEXTURE0_1D TEXTURE_1D_BIT
TEXTURE0_2D TEXTURE_2D_BIT
TEXTURE0_3D TEXTURE_3D_BIT
TEXTURE0_CUBE TEXTURE_CUBE_BIT
<none> TEXTURE_RECT_BIT
These tokens are only used for the ctx->Texture.Unit[i].Enabled and
ctx->Texture.Unit[i]._ReallyEnabled fields. Exactly 0 or 1 bits will
be set in _ReallyEnabled at any time!
Q: "What's the purpose of Unit[i].Enabled vs Unit[i]._ReallyEnabled?"
A: The user can enable GL_TEXTURE_1D, GL_TEXTURE_2D, etc for any
texure unit all at once (an unusual thing to do).
OpenGL defines priorities that basically say GL_TEXTURE_2D has
higher priority than GL_TEXTURE_1D, etc. Also, just because a
texture target is enabled by the user doesn't mean we'll actually
use that texture! If a texture object is incomplete (missing mip-
map levels, etc) it's as if texturing is disabled for that target.
The _ReallyEnabled field will have a bit set ONLY if the texture
target is enabled and complete. This spares the driver writer from
examining a _lot_ of GL state to determine which texture target is
to be used.
2. Tnl tokens changes
During the implementation of GL_NV_vertex_program some of the vertex
buffer code was changed. Specifically, the VERT_* bits defined in
tnl/t_context.h have been renamed to better match the conventions of
GL_NV_vertex_program. The old names are still present but obsolete.
Drivers should use the newer names.
For example: VERT_RGBA is now VERT_BIT_COLOR0 and
VERT_SPEC_RGB is now VERT_BIT_COLOR1.
3. Read/Draw Buffer changes
The business of setting the current read/draw buffers in Mesa 4.0.x
was complicated. It's much simpler now in Mesa 4.1.
Here are the changes:
- Renamed ctx->Color.DrawDestMask to ctx->Color._DrawDestMask
- Removed ctx->Color.DriverDrawBuffer
- Removed ctx->Pixel.DriverReadBuffer
- Removed ctx->Color.MultiDrawBuffer
- Removed ctx->Driver.SetDrawBuffer()
- Removed swrast->Driver.SetReadBuffer().
- Added ctx->Color._DrawDestMask - a bitmask of FRONT/BACK_LEFT/RIGHT_BIT
values to indicate the current draw buffers.
- Added ctx->Pixel._ReadSrcMask to indicate the source for pixel reading.
The value is _one_ of the FRONT/BACK_LEFT/RIGHT_BIT values.
- Added ctx->Driver.DrawBuffer() and ctx->Driver.ReadBuffer().
These functions exactly correspond to glDrawBuffer and glReadBuffer calls.
Many drivers will set ctx->Driver.DrawBuffer = _swrast_DrawBuffer and
leave ctx->Draw.ReadBuffer NULL.
DRI drivers should implement their own function for ctx->Driver.DrawBuffer
and use it to set the current hardware drawing buffer. You'll probably
also want to check for GL_FRONT_AND_BACK mode and fall back to software.
Call _swrast_DrawBuffer() too, to update the swrast state.
- Added swrast->Driver.SetBuffer().
This function should be implemented by all device drivers that use swrast.
Mesa will call it to specify the buffer to use for span reading AND
writing and point/line/triangle rendering.
There should be no confusion between current read or draw buffer anymore.
- Added swrast->CurrentBuffer to indicate which color buffer to read/draw.
Will be FRONT_LEFT_BIT, BACK_LEFT_BIT, FRONT_RIGHT_BIT or BACK_RIGHT_BIT.
This value is usually passed to swrast->Driver.SetBuffer().
4. _mesa_create_context() changes. This function now takes a pointer to
a __GLimports object. The __GLimports structure contains function
pointers to system functions like fprintf(), malloc(), etc.
The _mesa_init_default_imports() function can be used to initialize
a __GLimports object. Most device drivers (like the DRI drivers)
should use this.
5. In tnl's struct vertex_buffer, the field "ProjectedClipCoords"
has been replaced by "NdcPtr" to better match the OpenGL spec's
terminology.
6. Since GL_EXT_stencil_two_side has been implemented, many of the
ctx->Stencil fields are now 2-element arrays. For example,
"GLenum Ref" is now "GLenum Ref[2]" The [0] elements are the front-face
values and the [1] elements are the back-face values.
ctx->Stencil.ActiveFace is 0 or 1 to indicate the current face for
the glStencilOp/Func/Mask() functions.
ctx->Stencil.TestTwoSide controls whether or not 1 or 2-sided stenciling
is enabled.
7. Removed ctx->Polygon._OffsetAny. Removed ctx->Polygon.OffsetMRD.
8. GLfloat / GLchan changes:
- Changed ctx->Driver.ClearColor() to take GLfloat[4] instead of GLchan[4].
ctx->Color.ClearColor is now GLfloat[4] too.
- Changed ctx->Driver.AlphaRef() to take GLfloat instead of GLchan.
- ctx->Color.AlphaRef is now GLfloat.
- texObj->BorderColor is now GLfloat[4]. texObj->_BorderChan is GLchan[4].
This is part of an effort to remove all GLchan types from core Mesa so
that someday we can support 8, 16 and 32-bit color channels dynamically
at runtime, instead of at compile-time.
9. GLboolean ctx->Tranform.ClipEnabled[MAX_CLIP_PLANES] has been replaced
by GLuint ctx->Transform.ClipPlanesEnabled. The later is a bitfield.
10. There's a new matrix_stack type in mtypes.h used for the Modelview,
Projection, Color and Texcoord matrix stacks.
11. The ctx->Current.* fields have changed a lot. Now, there's a
ctx->Current.Attrib[] array for all vertex attributes which matches
the NV vertex program conventions.
----------------------------------------------------------------------
$Id: RELNOTES-4.1,v 1.22 2002/10/29 15:06:37 brianp Exp $

View File

@@ -1,85 +0,0 @@
Mesa 5.0 release notes
November 13, 2002
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Even-numbered versions (such as 5.0) designate stable releases.
Odd-numbered versions (such as 4.1) designate new developmental releases.
Mesa 5.0 is basically just a stabilization of Mesa 4.1. To see a list of
bug fixes, etc. see the VERSIONS file.
New Features in Mesa 5.0
------------------------
Mesa 5.0 supports OpenGL 1.4. Note Mesa's versioning convention:
OpenGL Version Mesa Version
------------------------------
1.0 1.x
1.1 2.x
1.2 3.x
1.3 4.x
1.4 5.x
OpenGL 1.4 (and Mesa 5.0) incorporates the following OpenGL extensions as
standard features:
GL_ARB_depth_texture
GL_ARB_shadow
GL_ARB_texture_env_crossbar
GL_ARB_texture_mirror_repeat
GL_ARB_window_pos
GL_EXT_blend_color
GL_EXT_blend_func_separate
GL_EXT_blend_logic_op
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_fog_coord
GL_EXT_multi_draw_arrays
GL_EXT_point_parameters
GL_EXT_secondary_color
GL_EXT_stencil_wrap
GL_SGIS_generate_mipmap
Device Driver Status
--------------------
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of these drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.4
OSMesa (off-screen) implements OpenGL 1.4
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.4
DOS/DJGPP implements OpenGL 1.3
GGI implements OpenGL 1.3
DOS implements OpenGL 1.4
BeOS needs updating (underway)
Allegro needs updating
D3D needs updating
Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
driver call the _mesa_enable_1_4_extensions() function.
----------------------------------------------------------------------
$Id: RELNOTES-5.0,v 3.2 2002/11/13 15:33:51 brianp Exp $

View File

@@ -1,46 +0,0 @@
Mesa 5.0.1 release notes
March 30, 2003
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Even-numbered versions (such as 5.0.x) designate stable releases.
Odd-numbered versions (such as 4.1.x) designate new developmental releases.
Mesa 5.0.1 just fixes bugs found since the 5.0 release. See the VERSIONS
file for details.
Device Driver Status
--------------------
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of these drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.4
OSMesa (off-screen) implements OpenGL 1.4
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.4
DJGPP implements OpenGL 1.4
GGI implements OpenGL 1.3
BeOS implements OpenGL 1.4
Allegro needs updating
D3D needs updating
Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
driver call the _mesa_enable_1_4_extensions() function.
----------------------------------------------------------------------
$Id: RELNOTES-5.0.1,v 3.1 2003/03/30 16:17:54 brianp Exp $

View File

@@ -1,46 +0,0 @@
Mesa 5.0.2 release notes
September 5, 2003
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Even-numbered versions (such as 5.0.x) designate stable releases.
Odd-numbered versions (such as 4.1.x) designate new developmental releases.
Mesa 5.0.2 just fixes bugs found since the 5.0.1 release. See the VERSIONS
file for details.
Device Driver Status
--------------------
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of these drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.4
OSMesa (off-screen) implements OpenGL 1.4
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.4
DJGPP implements OpenGL 1.4
GGI implements OpenGL 1.3
BeOS implements OpenGL 1.4
Allegro needs updating
D3D needs updating
Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
driver call the _mesa_enable_1_4_extensions() function.
----------------------------------------------------------------------
$Id: RELNOTES-5.0.2,v 1.1 2003/09/04 23:10:38 brianp Exp $

View File

@@ -1,228 +0,0 @@
Mesa 5.1 release notes
Month day, 2003
PLEASE READ!!!!
Introduction
------------
Mesa uses an even/odd version number scheme like the Linux kernel.
Even-numbered versions (such as 5.0) designate stable releases.
Odd-numbered versions (such as 5.1) designate new developmental releases.
Bug fixes
---------
See the VERSIONS file for a list of bugs fixed in this release.
New Features in Mesa 5.1
------------------------
GL_ATI_texture_env_combine3 extension
This adds a few new texture combine modes.
Contributed by Ian Romanick.
GL_SGI_texture_color_table
Adds a color table lookup to the RGBA texture path. There's a separate
color table for each texture unit.
Contributed by Eric Plante.
GL_NV_fragment_program
NVIDIA's fragment-level programming feature.
Possible lurking bugs:
- the DDX and DDY commands aren't fully tested
- there may be bugs in the parser
- the TEX and TXP instructions both do perspective correction
- the pack/unpack instructions may not be correct
GL_EXT_depth_bounds_test
This extension adds a scissor-like test for the Z axis. It's used to
optimize stencil-volume shadow algorithms.
GL_NV_light_max_exponent
Lifts the 128 limit for max light exponent.
GL_EXT_texture_rectangle
Identical to GL_NV_texture_rectangle
GL_ARB_occlusion_query
Useful for visibility-based culling.
GL_ARB_texture_non_power_of_two
Removes the restriction that texture dimensions must be powers of two.
GL_ARB_vertex_buffer_object
Allows server-side vertex arrays, optimized host/card data transfers, etc.
GL_ARB_point_sprite
ARB-approved version of GL_NV_point_sprite. Basically allows textures
to be applied to points.
GL_IBM_multimode_draw_arrays
Allows multiple vertex arrays to be drawn with one call, including arrays
of different types of primitives.
GL_SUN_multi_draw_arrays
An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release)
will advertise GL_VERSION = "1.5".
Vertex/Fragment program debugger
--------------------------------
GL_MESA_program_debug is an experimental extension to support
interactive debugging of vertex and fragment programs. See the
docs/MESA_program_debug.spec file for details.
The bulk of the vertex/fragment program debugger is implemented
outside of Mesa. The GL_MESA_program_debug extension just has minimal
hooks for stopping running programs and inspecting programs.
The progs/tests/debugger.c (only in CVS) program is an example of how
the extension can be used. Presently, the debugger code and demo code
is in the same file. Eventually the debugger code should be moved
into a reusable module.
As it is now, the demo lets you set breakpoings in vertex/fragment
programs, single step, and print intermediate register values. It's
basically just a proof of concept.
Directory tree reorganization
-----------------------------
The directory structure for Mesa has been overhauled to improve its layout.
All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
in appropriate subdirectories.
The Mesa source code and drivers has been reorganized under src/mesa/.
All demonstration programs and tests are now in subdirectories under progs/.
Build System Changes
--------------------
The GNU automake/autoconf support has been removed. As it was, it seldom
worked on anything but Linux. The Mesa developers aren't big fans of
automake/autoconf/libtool and didn't have the time to maintain it.
If someone wants to contribute new automake/autoconf support (and is
willing to maintain it), it may be re-incorporated into Mesa, subject
to some requirements.
The "old style" makefile system has been updated:
1. Make-config has been trimmed down to fewer, modern configurations.
2. Most of the bin/mklib.* scripts have been rolled into a new "mklib"
script that works on all sorts of systems. There are probably some
bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5.
Improvements/contributes are greatly appreciated.
3. The Makefile.X11 files have been cleaned up in various ways
Source File Changes
-------------------
The mmath.[ch] files are obsolete. Their contents have been moved
into the imports.[ch] and macros.[ch] files.
The files related to vertex and fragment programming have changed.
Old files:
vpexec.[ch]
vpparse.[ch]
vpstate.[ch]
New files:
program.[ch] - generic ARB/NV program code
arbprogram.[ch] - ARB program API functions
nvprogram.[ch] - NV program API functions
nvvertprog.h - NV vertex program definitions
nvfragprog.h - NV fragment program definitions
nvvertparse.[ch] - NV vertex program parser
nvfragparse.[ch] - NV fragment program parser
nvvertexec.[ch] - NV vertex program execution
swrast/s_nvfragprog.[ch] - NV fragment program execution
Removed files:
swrast/s_histogram.[ch] - moved into src/histogram.c
Other New files:
bufferobj.[ch] - GL_ARB_vertex_buffer_object functions
version.h - defines the Mesa version info
Other Changes
-------------
The ctx->Driver.CreateTexture function has been removed - it wasn't used.
New device driver hook functions:
NewTextureObject - used to allocate struct gl_texture_objects
NewTextureImage - used to allocate struct gl_texture_images
New ctx->Texture._EnabledCoordUnits field:
With the addition of GL_NV_fragment_program we may need to interpolate
various sets of texture coordinates even when the corresponding texture
unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get
called but we still may have to interpolate texture coordinates across
triangles so that the fragment program will get them.
This new field indicates which sets of texture coordinates are needed.
If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the
same bit MUST be set in ctx->Texture._EnabledCoordUnits.
The ctx->_TriangleCaps field is deprecated.
Instead of testing the DD_* bits in _TriangleCaps, you should instead
directly test the relevant state variables, or use one of the helper
functions like NEED_SECONDARY_COLOR() at the bottom of context.h
While testing _TriangleCaps bits was fast, it was kludgey, and setting
the bits in the first place could be error prone.
To Do
-----
Add screen-awareness to fakeglx.c
Device Driver Status
--------------------
A number of Mesa's software drivers haven't been actively maintained for
some time. We rely on volunteers to maintain many of these drivers.
Here's the current status of all included drivers:
Driver Status
---------------------- ---------------------
XMesa (Xlib) implements OpenGL 1.4
OSMesa (off-screen) implements OpenGL 1.4
FX (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA implements OpenGL 1.3
Wind River UGL implements OpenGL 1.3
Windows/Win32 implements OpenGL 1.4
DJGPP implements OpenGL 1.4
GGI implements OpenGL 1.3
BeOS implements OpenGL 1.4
Allegro needs updating
D3D needs updating
Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
driver call the _mesa_enable_1_4_extensions() function.
----------------------------------------------------------------------

View File

@@ -1,3 +1,4 @@
$Id: VERSIONS,v 1.10 1999/07/30 18:58:30 brianp Exp $
Mesa Version History
@@ -643,533 +644,12 @@ Mesa Version History
- new copyright on core Mesa code
3.1 beta 3 September 17, 1999
3.1 beta 3 August ??, 1999
New:
- optimized glAccum function
- optimized 24bpp rendering in XMesa driver
- GLU 1.2 polygon tessellator
Bug Fixes:
- glGetTexLevelParameter wasn't fully implemented
- glXUseXFont now handles multi-byte fonts
- glIsEnabled(GL_TEXTURE_2D / 3D) returned wrong result
- alpha channel of blending points, lines was sometimes incorrect
Changes:
- New library names: "libGL" instead of "libMesaGL"
- New library numbering: libGL.so.1.2.310
- New library names: libGL.so and libGLU.so
- 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
- rewritten glTexImage code paths (faster, less memory, bug fixes)
Bug Fixes:
- several vertex array bug fixes
- overlapping glCopyPixels with pixel zooming now works
- glXUseXFont() bitmaps were vertically shifted by one pixel
- glCopyPixels with pixel zooming now works
3.2 final April 24, 2000
Bug fixes:
- fixed memcpy bugs in span.c
- fixed missing glEnd problem in demos/tessdemo.c
- fixed bug when clearing 24bpp Ximages
- fixed clipping problem found in Unreal Tournament
- fixed Loki's "ice bug" and "crazy triangles" seen in Heretic2
- fixed Loki's 3dfx RGB vs BGR bug
- fixed Loki's 3dfx smooth/flat shading bug in SoF
Changes:
- updated docs/README file
- use bcopy() optimizations on FreeBSD
- re-enabled the optimized persp_textured_triangle() function
3.2.1 July 19, 2000
Bug fixes:
- gluBuild2DMipmaps() didn't accept GL_BGRA
- Fixed compile/makefile problems on IRIX
- fixed segfault in 3dfx driver when using GL selection/feedback
- no longer cull very, very tiny triangles
- blending w/ drawbuffer==GL_FRONT_BACK caused segfault (sw rendering)
- fixed Motif detection code in widgets-mesa/configure.in
- glColorMaterial and glMaterial updates to emissive and ambient
didn't always work right
- Specular highlights weren't always in the right place
- clipped GL_LINE mode polygons had interior lines appear
- blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken
- GL_NICEST fog didn't always work with flat shading
- glRect commands in display lists were sometimes miscolored
- Line Z offset didn't always work
- fixed texgen normal vector problem (gloss's teapot)
- numerous GL conformance bugs fixed
Changes:
- glColorMask(false, false, false, false) handled better/faster
- reverted to old GLU polygon tessellator, GLU 1.1
- updated Win32 build files
3.3 July 21, 2000
New:
- antialiased triangles now implemented
- GL_EXT_texture_env_add texture mode extension
- GLX 1.3 API
- support for separate draw/read buffers (ie GL_SGI_make_current_read)
- thread-safe API dispath
- improved glxinfo program
- demos/texdown program to measure texture download performance
- glext.h header file
- demos/geartrain program
- GL_EXT_texture_lod_bias extension
- demos/lodbias program
- further optimized glRead/DrawPixels for 16-bit TrueColor X visuals
- GLX_EXT_visual_rating extension (a no-op, however)
- GL_HP_occlusion_test extension (for X and OS/Mesa drivers)
- demos/occlude program
- GL_SGIS_pixel_texture and GL_SGIX_pixel_texture extensions
- demos/pixeltex program
- GL_SGI_color_matrix extension
- GL_SGI_color_table extension
- GL_EXT_histogram extension
- GL_ARB_texture_cube_map extension
- added xdemos/glxheads and xdemos/manywin
- demos/texenv.c demo
- GL_EXT_texture_env_combine extension (by Holger Waechtler)
- Xlib driver is now thread-safe (see xdemos/glthreads)
Bug Fixes:
- various GL conformance failures fixed since 3.2.1
Changes:
- gl.h now uses #defines instead of C enums for all tokens
- glu.h now uses #defines instead of C enums for all tokens
- moved programs from 3Dfx/demos/ into demos/ directory
3.4 November 3, 2000
New:
- optimized glDrawPixels for glPixelZoom(1,-1)
Bug Fixes:
- widgets-mesa/src/*.c files were missing from 3.3 distro
- include/GL/mesa_wgl.h file was missing from 3.3 distro
- fixed some Win32 compile problems
- texture object priorities weren't getting initialized to 1.0
- glAreTexturesResident return value was wrong when using hardware
- glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX)
- glReadPixels with GLushort packed types was broken
- fixed a few bugs in the GL_EXT_texture_env_combine texture code
- glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables
- fixed some typos/bugs in the VB code
- glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work
- optimized glDrawPixels paths weren't being used
- per-fragment fog calculation didn't work without a Z buffer
- improved blending accuracy, fixes Glean blendFunc test failures
- glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly
- glXGetProcAddressARB() didn't always return the right address
- gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format
- texture matrix changes weren't always detected (GLUT projtex demo)
- fixed random color problem in vertex fog code
- fixed Glide-related bug that let Quake get a 24-bit Z buffer
Changes:
- finished internal support for compressed textures for DRI
3.4.1 February 14, 2001
New:
- fixed some Linux build problems
- fixed some Windows build problems
- GL_EXT_texture_env_dot3 extension (Gareth Hughes)
Bug fixes:
- added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI
- various state-update code changes needed for DRI bugs
- disabled pixel transfer ops in glColorTable commands, not needed
- fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter
- updated sources and fixed compile problems in widgets-mesa/
- GLX_PBUFFER enum value was wrong in glx.h
- fixed a glColorMaterial lighting bug
- fixed bad args to Read/WriteStencilSpan in h/w stencil clear function
- glXCopySubBufferMESA() Y position was off by one
- Error checking of glTexSubImage3D() was broken (bug 128775)
- glPopAttrib() didn't restore all derived Mesa state correctly
- Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL
conformance problems at 16bpp.
- clearing depth buffer with scissoring was broken, would segfault
- OSMesaGetDepthBuffer() returned bad bytesPerValue value
- fixed a line clipping bug (reported by Craig McDaniel)
- fixed RGB color over/underflow bug for very tiny triangles
Known problems:
- NURBS or evaluator surfaces inside display lists don't always work
3.4.2 May 17, 2001
Bug fixes:
- deleting the currently bound texture could cause bad problems
- using fog could result in random vertex alpha values
- AA triangle rendering could touch pixels outside right window bound
- fixed byteswapping problem in clear_32bit_ximage() function
- fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
- fixed memory leak in glXUseXFont()
- fragment sampling in AA triangle function was off by 1/2 pixel
- Windows: reading pixels from framebuffer didn't always work
- glConvolutionFilter2D could segfault or cause FP exception
- fixed segfaults in FX and X drivers when using tex unit 1 but not 0
- GL_NAND logicop didn't work right in RGBA mode
- fixed a memory corruption bug in vertex buffer reset code
- clearing the softwara alpha buffer with scissoring was broken
- fixed a few color index mode fog bugs
- fixed some bad assertions in color index mode
- fixed FX line 'stipple' bug #420091
- fixed stencil buffer clear width/height typo
- fixed GL error glitches in gl[Client]ActiveTextureARB()
- fixed Windows compilation problem in texutil.c
- fixed 1/8-pixel AA triangle sampling error
Changes:
- optimized writing mono-colored pixel spans to X pixmaps
- increased max viewport size to 2048 x 2048
3.5 June 21, 2001
New:
- internals of Mesa divided into modular pieces (Keith Whitwell)
- 100% OpenGL 1.2 conformance (passes all conformance tests)
- new AA line algorithm
- GL_EXT_convolution extension
- GL_ARB_imaging subset
- OSMesaCreateContextExt() function
- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
- GL_MAX_TEXTURE_UNITS_ARB now defaults to eight
- GL_EXT_fog_coord extension (Keith Whitwell)
- GL_EXT_secondary_color extension (Keith Whitwell)
- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
- GL_SGIX_depth_texture extension
- GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
- demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
- GL_ARB_texture_env_combine extension
- GL_ARB_texture_env_dot3 extension
- GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp)
- OSMesaCreateContextExt() function
- libOSMesa.so library, contains the OSMesa driver interface
- GL/glxext.h header file for GLX extensions
- somewhat faster software texturing, fogging, depth testing
- all color-index conformance tests now pass (only 8bpp tested)
- SPARC assembly language TCL optimizations (David Miller)
- GL_SGIS_generate_mipmap extension
Bug Fixes:
- fbiRev and tmuRev were unitialized when using Glide3
- fixed a few color index mode conformance failures; all pass now
- now appling antialiasing coverage to alpha after texturing
- colors weren't getting clamped to [0,1] before color table lookup
- fixed RISC alignment errors caused by COPY_4UBV macro
- drawing wide, flat-shaded lines could cause a segfault
- vertices now snapped to 1/16 pixel to fix rendering of tiny triangles
Changes:
- SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU
- new libOSMesa.so library, contains the OSMesa driver interface
4.0 October 22, 2001
New:
- Mesa 4.0 implements the OpenGL 1.3 specification
- GL_IBM_rasterpos_clip extension
- GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp)
- GL_ARB_texture_mirrored_repeat extension
- WindML UGL driver (Stephane Raimbault)
- added OSMESA_MAX_WIDTH/HEIGHT queries
- attempted compiliation fixes for Solaris 5, 7 and 8
- updated glext.h and glxext.h files
- updated Windows driver (Karl Schultz)
Bug fixes:
- added some missing GLX 1.3 tokens to include/GL/glx.h
- GL_COLOR_MATRIX changes weren't recognized by teximage functions
- glCopyPixels with scale and bias was broken
- glRasterPos with lighting could segfault
- glDeleteTextures could leave a dangling pointer
- Proxy textures for cube maps didn't work
- fixed a number of 16-bit color channel bugs
- fixed a few minor memory leaks
- GLX context sharing was broken in 3.5
- fixed state-update bugs in glPopClientAttrib()
- fixed glDrawRangeElements() bug
- fixed a glPush/PopAttrib() bug related to texture binding
- flat-shaded, textured lines were broken
- fixed a dangling pointer problem in the XMesa code (Chris Burghart)
- lighting didn't always produce the correct alpha value
- fixed 3DNow! code to not read past end of arrays (Andrew Lewycky)
4.0.1 December 17, 2001
New:
- better sub-pixel sample positions for AA triangles (Ray Tice)
- slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO)
Bug fixes:
- added missing break statements in glGet*() for multisample cases
- fixed uninitialized hash table mutex bug (display lists / texobjs)
- fixed bad teximage error check conditional (bug 476846)
- fixed demos readtex.c compilation problem on Windows (Karl Schultz)
- added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT
- silence some compiler warnings (gcc 2.96)
- enable the #define GL_VERSION_1_3 in GL/gl.h
- added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h
- fixed glu.h typedef problem found with MSDev 6.0
- build libGL.so with -Bsymbolic (fixes bug found with Chromium)
- added missing 'const' to glXGetContextIDEXT() in glxext.h
- fixed a few glXGetProcAddress() errors (texture compression, etc)
- fixed start index bug in compiled vertex arrays (Keith)
- fixed compilation problems in src/SPARC/glapi_sparc.S
- fixed triangle strip "parity" bug found in VTK medical1 demo (Keith)
- use glXGetProcAddressARB in GLUT to avoid extension linking problems
- provoking vertex of flat-shaded, color-index triangles was wrong
- fixed a few display list bugs (GLUT walker, molecule, etc) (Keith)
- glTexParameter didn't flush the vertex buffer (Ray Tice)
- feedback attributes for glDraw/CopyPixels and glBitmap were wrong
- fixed bug in normal length caching (ParaView lighting bug)
- fixed separate_specular color bug found in Chimera (18 Dec 2001)
4.0.2 April 2, 2002
New:
- New DOS (DJGPP) driver written by Daniel Borca
- New driver interface functions for TCL drivers (such as Radeon DRI)
- GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32"
if using deep color channels
- latest GL/glext.h and GL/glxext.h headers from SGI
Bug fixes:
- GL_BLEND with non-black texture env color wasn't always correct
- GL_REPLACE with GL_RGB texture format wasn't always correct (alpha)
- glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken
- glReadPixels was sometimes mistakenly clipped by the scissor box
- glDraw/ReadPixels didn't catch all the errors that they should have
- Fixed 24bpp rendering problem in Windows driver (Karl Schultz)
- 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c)
- Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP)
- glColorMask as sometimes effecting glXSwapBuffers()
- fixed a potential bug in XMesaGarbageCollect()
- N threads rendering into one window didn't work reliably
- glCopyPixels didn't work for deep color channels
- improved 8 -> 16bit/channel texture image conversion (Gerk Huisma)
- glPopAttrib() didn't correctly restore user clip planes
- user clip planes failed for some perspective projections (Chromium)
Known bugs:
- mipmap LOD computation
4.0.3 June 25, 2002
New:
- updated GL/glext.h file (version 15)
- corrected MMX blend code (Jose Fonseca)
- support for software-based alpha planes in Windows driver
- updated GGI driver (Filip Spacek)
Bug fixes:
- glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens
- OSMesaMakeCurrent() didn't recognize buffer size changes
- assorted conformance fixes for 16-bit/channel rendering
- texcombine alpha subtraction mode was broken
- fixed lighting bug with non-uniform scaling and display lists
- fixed bug when deleting shared display lists
- disabled SPARC cliptest assembly code (Mesa bug 544665)
- fixed a couple Solaris compilation/link problems
- blending clipped glDrawPixels didn't always work
- glGetTexImage() didn't accept packed pixel types
- glPixelMapu[is]v() could explode given too large of pixelmap
- glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT
- glXCopyContext() could lead to segfaults
- glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665)
Changes:
- lots of C++ (g++) code clean-ups
- lots of T&L updates for the Radeon DRI driver
Known bugs:
- mipmap LOD computation (fixed for Mesa 4.1)
4.0.4 October 3, 2002
New:
- GL_NV_texture_rectangle extension
- updated glext.h header (version 17)
- updated DOS driver (Daniel Borca)
- updated BeOS R5 driver (Philippe Houdoin)
- added GL_IBM_texture_mirror_repeat
- glxinfo now takes -l option to print interesting OpenGL limits info
- GL_MESA_ycbcr_texture extension
- GL_APPLE_client_storage extension (for some DRI drivers only)
- GL_MESA_pack_invert extension
Bug fixes:
- fixed GL_LINEAR fog bug by adding clamping
- fixed FP exceptions found using Alpha CPU
- 3dfx MESA_GLX_FX=window (render to window) didn't work
- fixed memory leak in wglCreateContest (Karl Schultz)
- define GLAPIENTRY and GLAPI if undefined in glu.h
- wglGetProcAddress didn't handle all API functions
- when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map
- removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc()
- error checking in compressed tex image functions had some glitches
- fixed AIX compile problem in src/config.c
- glGetTexImage was using pixel unpacking instead of packing params
- auto-mipmap generation for cube maps was incorrect
Changes:
- max texture units reduced to six to accomodate texture rectangles
- removed unfinished GL_MESA_sprite_point extension code
4.1 October 29, 2002
New:
- GL_NV_vertex_program extension
- GL_NV_vertex_program1_1 extension
- GL_ARB_window_pos extension
- GL_ARB_depth_texture extension
- GL_ARB_shadow extension
- GL_ARB_shadow_ambient extension
- GL_EXT_shadow_funcs extension
- GL_ARB_point_parameters extension
- GL_ARB_texture_env_crossbar
- GL_NV_point_sprite extension
- GL_NV_texture_rectangle extension
- GL_EXT_multi_draw_arrays extension
- GL_EXT_stencil_two_side extension
- GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions
- GL_ATI_texture_mirror_once extension (Ian Romanick)
- massive overhaul/simplification of software rasterizer module,
many contributions from Klaus Niederkrueger
- faster software texturing in some cases (i.e. trilinear filtering)
- new OSMesaGetProcAddress() function
- more blend modes implemented with MMX code (Jose Fonseca)
- added glutGetProcAddress() to GLUT
- added GLUT_FPS env var to compute frames/second in glutSwapBuffers()
- pbinfo and pbdemo PBuffer programs
- glxinfo -v prints transprent pixel info (Gerd Sussner)
Bug fixes:
- better mipmap LOD computation (prevents excessive blurriness)
- OSMesaMakeCurrent() didn't recognize buffer size changes
- assorted conformance fixes for 16-bit/channel rendering
- texcombine alpha subtraction mode was broken
- fixed some blend problems when GLchan==GLfloat (Gerk Huisma)
- clamp colors to [0,inf] in OSMesa if GLchan==GLfloat (Gerk Huisma)
- fixed divide by zero error in NURBS tessellator (Jon Perry)
- fixed GL_LINEAR fog bug by adding clamping
- fixed FP exceptions found using Alpha CPU
- 3dfx/glide driver render-to-window feature was broken
- added missing GLX_TRANSPARENT_RGB token to glx.h
- fixed error checking related to paletted textures
- fixed reference count error in glDeleteTextures (Randy Fayan)
Changes:
- New spec file and Python code to generate some GL dispatch files
- Glide driver defaults to "no" with autoconf/automake
- updated demos/stex3d with new options
5.0 November 13, 2002
New:
- OpenGL 1.4 support (glGetString(GL_VERSION) returns "1.4")
- removed some overlooked debugging code
- glxinfo updated to support GLX_ARB_multisample
- GLUT now support GLX_ARB_multisample
- updated DOS driver (Daniel Borca)
Bug fixes:
- GL_POINT and GL_LINE-mode polygons didn't obey cull state
- fixed potential bug in _mesa_align_malloc/calloc()
- fixed missing triangle bug when running vertex programs
- fixed a few HPUX compilation problems
- FX (Glide) driver didn't compile
- setting GL_TEXTURE_BORDER_COLOR with glTexParameteriv() didn't work
- a few EXT functions, like glGenTexturesEXT, were no-ops
- a few OpenGL 1.4 functions like glFogCoord*, glBlendFuncSeparate,
glMultiDrawArrays and glMultiDrawElements were missing
- glGet*(GL_ACTIVE_STENCIL_FACE_EXT) was broken
- Pentium 4 Mobile was mistakenly identified as having 3DNow!
- fixed one-bit error in point/line fragment Z calculation
- fixed potential segfault in fakeglx code
- fixed color overflow problem in DOT3 texture env mode
5.0.1 March 30, 2003
New:
- DOS driver updates from Daniel Borca
- updated GL/gl_mangle.h file (Bill Hoffman)
Bug fixes:
- auto mipmap generation for cube maps was broken (bug 641363)
- writing/clearing software alpha channels was unreliable
- minor compilation fixes for OS/2 (Evgeny Kotsuba)
- fixed some bad assertions found with shadowtex demo
- fixed error checking bug in glCopyTexSubImage2D (bug 659020)
- glRotate(angle, -x, 0, 0) was incorrect (bug 659677)
- fixed potential segfault in texture object validation (bug 659012)
- fixed some bogus code in _mesa_test_os_sse_exception_support (Linus)
- fix fog stride bug in tnl code for h/w drivers (Michel Danzer)
- fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080)
- glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3
- fixed compilation problem on Solaris7/x86 (bug 536406)
- fixed prefetch bug in 3DNow! code (Felix Kuhling)
- fixed NeXT build problem (FABSF macro)
- glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811)
- zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964)
- AA line and triangle Z values are now rounded, not truncated
- fixed color interpolation bug when GLchan==GLfloat (bug 694461)
- glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca)
- fixed a minor GL_COLOR_MATERIAL bug
- NV vertex program EXP instruction was broken
- glColorMask misbehaved with X window / pixmap rendering
- fix autoconf/libtool GLU C++ linker problem on Linux (a total hack)
- attempt to fix GGI compilation problem when MesaDemos not present
- NV vertex program ARL-relative fetches didn't work
Changes:
- use glPolygonOffset in gloss demo to avoid z-fighting artifacts
- updated winpos and pointblast demos to use ARB extensions
- disable SPARC normal transformation code (bug 673938)
- GLU fixes for OS/2 (Evgeny Kotsuba)
5.0.2 September 5, 2003
Bug fixes:
- fixed texgen problem causing texcoord's Q to be zero (stex3d)
- default GL_TEXTURE_COMPARE_MODE_ARB was wrong
- GL_CURRENT_MATRIX_NV query was wrong
- GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one
- GL_LIST_MODE query wasn't correct
- GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported
- GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value
- blended, wide lines didn't always work correctly (bug 711595)
- glVertexAttrib4svNV w component was always 1
- fixed bug in GL_IBM_rasterpos_clip (missing return)
- GL_DEPTH_TEXTURE_MODE = GL_ALPHA didn't work correctly
- a few Solaris compilation fixes
- fixed glClear() problem for DRI drivers (non-existant stencil, etc)
- fixed int/REAL mixup in GLU NURBS curve evaluator (Eric Cazeaux)
- fixed delete [] bug in SI GLU (bug 721765) (Diego Santa Cruz)
- glFog() didn't clamp fog colors
- fixed bad float/int conversion for GL_TEXTURE_PRIORITY in the
gl[Get]TexParameteri[v] functions
- fixed invalid memory references in glTexGen functions (bug 781602)
- integer-valued color arrays weren't handled correctly
- glDrawPixels(GL_DEPTH_COMPONENT) with glPixelZoom didn't work
- GL_EXT_texture_lod_bias is part of 1.4, overlooked in 5.0.1
Changes:
- build GLUT with -fexceptions so C++ apps propogate exceptions
5.1 Month day, 2003 (NOT RELEASED YET)
New:
- reorganized directory tree
- GL_ATI_texture_env_combine3 extension (Ian Romanick)
- GL_SGI_texture_color_table extension (Eric Plante)
- GL_NV_fragment_program extension
- GL_NV_light_max_exponent extension
- GL_EXT_texture_rectangle (identical to GL_NV_texture_rectangle)
- GL_ARB_occlusion_query extension
- GL_ARB_point_sprite extension
- GL_ARB_texture_non_power_of_two extension
- GL_IBM_multimode_draw_arrays extension
- GL_EXT_texture_mirror_clamp extension (Ian Romanick)
- GL_ARB_vertex_buffer_object extension
- new X86 feature detection code (Petr Sebor)
- less memory used for display lists and vertex buffers
- demo of per-pixel lighting with a fragment program (demos/fplight.c)
- new version (18) of glext.h header
Bug fixes:
- really enable OpenGL 1.4 features in DOS driver.
- fixed issues in glDrawPixels and glCopyPixels for very wide images
- glPixelMapf/ui/usv()'s size parameter is GLsizei, not GLint
Changes:
- dropped API trace feature (src/Trace/)
- documentation overhaul. merged with website content. more html.
- glxgears.c demo updated to use GLX swap rate extensions
- glTexImage1/2/3D now allows width/height/depth = 0

View File

@@ -1,15 +0,0 @@
<HTML>
<title>Banner</title>
<body text="#ffffff" bgcolor="#aa4444">
<center>
<p>
<font size="5">The Mesa 3D Graphics Library</font>
</p>
</center>
</body>
</html>

View File

@@ -1,35 +0,0 @@
<HTML>
<TITLE>Mesa Bug Reporting</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Bug Database</H1>
<p>
Bug reports can be filed in the <a
href="http://sourceforge.net/bugs/?group_id=3" target="_parent">Bug
Database</a> on sourceforge.net. Please follow these guidelines:
</p>
<ul>
<li>Make sure you're using the most recent version of Mesa
<li>Make sure your bug isn't already reported
<li>Include as much information as possible in the report
<li>Provide a simple GLUT-based test program if possible
<li>Check back for follow-ups to the report
</ul>
<p>
Bug reports will automatically be forwarded to the Mesa developer's list.
</p>
<p>
The easier a bug is to reproduce, the sooner it will be fixed.
Please do everything you can to facilitate quickly fixing bugs.
If your bug report is vague or your test program doesn't compile
easily, the problem may not be fixed very quickly.
</p>
</BODY>
</HTML>

View File

@@ -1,693 +0,0 @@
<HTML>
<TITLE>Conformance</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Conformance</H1>
<p>
The SGI OpenGL conformance tests verify correct operation of OpenGL
implementations. I, Brian Paul, have been given a copy of the tests
for testing Mesa. The tests are not publically available.
</p>
<p>
This file has the latest results of testing Mesa with the OpenGL 1.2
conformance tests. Testing with the preliminary OpenGL 1.3 tests has
also been done. Mesa passes all the 1.3 tests.
</p>
<p>
The tests were run using the software X11 device driver on 24-bpp
and 16-bpp displays.
</p>
<p>
Mesa 4.0 and later pass all conformance tests at all path levels.
Note that this says nothing about the conformance of hardware drivers
based upon Mesa.
</p>
<pre>
COVERAGE TESTS
--------------
Test that all API functions accept the legal parameters and reject
illegal parameters. The result of each test is either pass or fail.
% covgl
OpenGL Coverage Test.
Version 1.2
covgl passed.
covgl passed at 1.1 level.
covgl passed at 1.2 level.
covgl passed for ARB_multitexture.
% covglu
OpenGL GLU Coverage Test.
Version 1.3
covglu passed.
covglu passed at 1.1 level.
% covglx
OpenGL X Coverage Test.
Version 1.1.1
covglx passed.
% primtest -v
Open GL Primitives Test.
Version 1.2
[lots of output deleted]
292159 Combinations.
primtest passed.
GL CONFORMANCE TEST
===================
Render test images, read them back, then test for expected results.
----------------------------------------------------------------------
% conform -v 2
OpenGL Conformance Test
Version 1.2
Setup Report.
Verbose level = 2.
Random number seed = 1.
Path inactive.
Visual Report.
Display ID = 35. Indirect Rendering.
Double Buffered.
RGBA (5, 6, 5, 0).
Stencil (8).
Depth (16).
Accumulation (16, 16, 16, 16).
Epsilon Report.
zero error epsilon = 0.000122.
RGBA error epsilon = 0.0324, 0.016, 0.0324, 0.000122.
Depth buffer error epsilon = 0.000137.
Stencil plane error epsilon = 0.00404.
Accumulation error epsilon = 0.000137, 0.000137, 0.000137, 0.000137.
Default State test passed.
Must Pass test passed.
Divide By Zero test passed.
Viewport Clamp test passed.
Matrix Stack test passed.
Matrix Stack Mixing test passed.
Vertex Order test passed.
Transformations test passed.
Transformation Normal test passed.
Viewport Transformation test passed.
Buffer Clear test passed.
Buffer Corners test passed.
Buffer Color test passed.
Color Ramp test passed.
Mask test passed.
Buffer Invariance test passed.
Accumulation Buffer test passed.
Select test passed.
Feedback test passed.
Scissor test passed.
Alpha Plane Function test passed.
Stencil Plane Clear test passed.
Stencil Plane Corners test passed.
Stencil Plane Operation test passed.
Stencil Plane Function test passed.
Depth Buffer Clear test passed.
Depth Buffer Function test passed.
Blend test passed.
Dither test passed.
LogicOp Function test does not exist for an RGB visual.
DrawPixels test passed.
CopyPixels test passed.
Bitmap Rasterization test passed.
Point Rasterization test passed.
Anti-aliased Point test passed.
Line Rasterization test passed.
Line Stipple test passed.
Anti-aliased Line test passed.
Horizontal and Vertical Line test passed.
Triangle Rasterization test passed.
Triangle Tile test passed.
Triangle Stipple test passed.
Anti-aliased Triangles test passed.
Quad Rasterization test passed.
Polygon Face test passed.
Polygon Cull test passed.
Polygon Stipple test passed.
Polygon Edge test passed.
Ambient Material test passed.
Ambient Scene test passed.
Attenuation Position test passed.
Diffuse Light test passed.
Diffuse Material test passed.
Diffuse Material Normal test passed.
Diffuse Material Positioning test passed.
Emissive Material test passed.
Specular Exponent test passed.
Specular Exponent Normal test passed.
Specular Local Eye Half Angle test passed.
Specular Light test passed.
Specular Material test passed.
Specular Normal test passed.
Spot Positioning test passed.
Spot Exponent and Positioning test passed.
Spot Exponent and Direction test passed.
Fog Exponential test passed.
Fog Linear test passed.
Texture Decal test passed.
Texture Border test passed.
Mipmaps Selection test passed.
Mipmaps Interpolation test passed.
Display Lists test passed.
Evaluator test passed.
Evaluator Color test passed.
Texture Edge Clamp test passed.
Packed Pixels test passed.
Texture LOD test passed.
Rescale Normal test passed.
Color Table test passed.
Convolution test passed.
Convolution Border test passed.
Histogram test passed.
MinMax test passed.
MultiTexture test passed.
Conform passed.
----------------------------------------------------------------------
% conform -v 2 -p 1
OpenGL Conformance Test
Version 1.2
Setup Report.
Verbose level = 2.
Random number seed = 1.
Path level = 1.
Visual Report.
Display ID = 35. Indirect Rendering.
Double Buffered.
RGBA (5, 6, 5, 0).
Stencil (8).
Depth (16).
Accumulation (16, 16, 16, 16).
Epsilon Report.
zero error epsilon = 0.000122.
RGBA error epsilon = 0.0324, 0.016, 0.0324, 0.000122.
Depth buffer error epsilon = 0.000137.
Stencil plane error epsilon = 0.00404.
Accumulation error epsilon = 0.000137, 0.000137, 0.000137, 0.000137.
Default State test passed.
Must Pass test passed.
Divide By Zero test passed.
Viewport Clamp test passed.
Matrix Stack test passed.
Matrix Stack Mixing test passed.
Vertex Order test passed.
Transformations test passed.
Transformation Normal test passed.
Viewport Transformation test passed.
Buffer Clear test passed.
Buffer Corners test passed.
Buffer Color test passed.
Color Ramp test passed.
Mask test passed.
Buffer Invariance test passed.
Accumulation Buffer test passed.
Select test passed.
Feedback test passed.
Scissor test passed.
Alpha Plane Function test passed.
Stencil Plane Clear test passed.
Stencil Plane Corners test passed.
Stencil Plane Operation test passed.
Stencil Plane Function test passed.
Depth Buffer Clear test passed.
Depth Buffer Function test passed.
Blend test passed.
Dither test passed.
LogicOp Function test does not exist for an RGB visual.
DrawPixels test passed.
CopyPixels test passed.
Bitmap Rasterization test passed.
Point Rasterization test passed.
Anti-aliased Point test passed.
Line Rasterization test passed.
Line Stipple test passed.
Anti-aliased Line test passed.
Horizontal and Vertical Line test passed.
Triangle Rasterization test passed.
Triangle Tile test passed.
Triangle Stipple test passed.
Anti-aliased Triangles test passed.
Quad Rasterization test passed.
Polygon Face test passed.
Polygon Cull test passed.
Polygon Stipple test passed.
Polygon Edge test passed.
Ambient Material test passed.
Ambient Scene test passed.
Attenuation Position test passed.
Diffuse Light test passed.
Diffuse Material test passed.
Diffuse Material Normal test passed.
Diffuse Material Positioning test passed.
Emissive Material test passed.
Specular Exponent test passed.
Specular Exponent Normal test passed.
Specular Local Eye Half Angle test passed.
Specular Light test passed.
Specular Material test passed.
Specular Normal test passed.
Spot Positioning test passed.
Spot Exponent and Positioning test passed.
Spot Exponent and Direction test passed.
Fog Exponential test passed.
Fog Linear test passed.
Texture Decal test passed.
Texture Border test passed.
Mipmaps Selection test passed.
Mipmaps Interpolation test passed.
Display Lists test passed.
Evaluator test passed.
Evaluator Color test passed.
Texture Edge Clamp test passed.
Packed Pixels test passed.
Texture LOD test passed.
Rescale Normal test passed.
Color Table test passed.
Convolution test passed.
Convolution Border test passed.
Histogram test passed.
MinMax test passed.
MultiTexture test passed.
Conform passed.
----------------------------------------------------------------------
% conform -v 2 -p 2
OpenGL Conformance Test
Version 1.2
Setup Report.
Verbose level = 2.
Random number seed = 1.
Path level = 2.
Visual Report.
Display ID = 35. Indirect Rendering.
Double Buffered.
RGBA (5, 6, 5, 0).
Stencil (8).
Depth (16).
Accumulation (16, 16, 16, 16).
Epsilon Report.
zero error epsilon = 0.000122.
RGBA error epsilon = 0.0324, 0.016, 0.0324, 0.000122.
Depth buffer error epsilon = 0.000137.
Stencil plane error epsilon = 0.00404.
Accumulation error epsilon = 0.000137, 0.000137, 0.000137, 0.000137.
Default State test passed.
Must Pass test passed.
Divide By Zero test passed.
Viewport Clamp test passed.
Matrix Stack test passed.
Matrix Stack Mixing test passed.
Vertex Order test passed.
Transformations test passed.
Transformation Normal test passed.
Viewport Transformation test passed.
Buffer Clear test passed.
Buffer Corners test passed.
Buffer Color test passed.
Color Ramp test passed.
Mask test passed.
Buffer Invariance test passed.
Accumulation Buffer test passed.
Select test passed.
Feedback test passed.
Scissor test passed.
Alpha Plane Function test passed.
Stencil Plane Clear test passed.
Stencil Plane Corners test passed.
Stencil Plane Operation test passed.
Stencil Plane Function test passed.
Depth Buffer Clear test passed.
Depth Buffer Function test passed.
Blend test passed.
Dither test passed.
LogicOp Function test does not exist for an RGB visual.
DrawPixels test passed.
CopyPixels test passed.
Bitmap Rasterization test passed.
Point Rasterization test passed.
Anti-aliased Point test passed.
Line Rasterization test passed.
Line Stipple test passed.
Anti-aliased Line test passed.
Horizontal and Vertical Line test passed.
Triangle Rasterization test passed.
Triangle Tile test passed.
Triangle Stipple test passed.
Anti-aliased Triangles test passed.
Quad Rasterization test passed.
Polygon Face test passed.
Polygon Cull test passed.
Polygon Stipple test passed.
Polygon Edge test passed.
Ambient Material test passed.
Ambient Scene test passed.
Attenuation Position test passed.
Diffuse Light test passed.
Diffuse Material test passed.
Diffuse Material Normal test passed.
Diffuse Material Positioning test passed.
Emissive Material test passed.
Specular Exponent test passed.
Specular Exponent Normal test passed.
Specular Local Eye Half Angle test passed.
Specular Light test passed.
Specular Material test passed.
Specular Normal test passed.
Spot Positioning test passed.
Spot Exponent and Positioning test passed.
Spot Exponent and Direction test passed.
Fog Exponential test passed.
Fog Linear test passed.
Texture Decal test passed.
Texture Border test passed.
Mipmaps Selection test passed.
Mipmaps Interpolation test passed.
Display Lists test passed.
Evaluator test passed.
Evaluator Color test passed.
Texture Edge Clamp test passed.
Packed Pixels test passed.
Texture LOD test passed.
Rescale Normal test passed.
Color Table test passed.
Convolution test passed.
Convolution Border test passed.
Histogram test passed.
MinMax test passed.
MultiTexture test passed.
Conform passed.
----------------------------------------------------------------------
% conform -v 2 -p 3
OpenGL Conformance Test
Version 1.2
Setup Report.
Verbose level = 2.
Random number seed = 1.
Path level = 3.
Visual Report.
Display ID = 35. Indirect Rendering.
Double Buffered.
RGBA (5, 6, 5, 0).
Stencil (8).
Depth (16).
Accumulation (16, 16, 16, 16).
Epsilon Report.
zero error epsilon = 0.000122.
RGBA error epsilon = 0.0324, 0.016, 0.0324, 0.000122.
Depth buffer error epsilon = 0.000137.
Stencil plane error epsilon = 0.00404.
Accumulation error epsilon = 0.000137, 0.000137, 0.000137, 0.000137.
Default State test passed.
Must Pass test passed.
Divide By Zero test passed.
Viewport Clamp test passed.
Matrix Stack test passed.
Matrix Stack Mixing test passed.
Vertex Order test passed.
Transformations test passed.
Transformation Normal test passed.
Viewport Transformation test passed.
Buffer Clear test passed.
Buffer Corners test passed.
Buffer Color test passed.
Color Ramp test passed.
Mask test passed.
Buffer Invariance test passed.
Accumulation Buffer test passed.
Select test passed.
Feedback test passed.
Scissor test passed.
Alpha Plane Function test passed.
Stencil Plane Clear test passed.
Stencil Plane Corners test passed.
Stencil Plane Operation test passed.
Stencil Plane Function test passed.
Depth Buffer Clear test passed.
Depth Buffer Function test passed.
Blend test passed.
Dither test passed.
LogicOp Function test does not exist for an RGB visual.
DrawPixels test passed.
CopyPixels test passed.
Bitmap Rasterization test passed.
Point Rasterization test passed.
Anti-aliased Point test passed.
Line Rasterization test passed.
Line Stipple test passed.
Anti-aliased Line test passed.
Horizontal and Vertical Line test passed.
Triangle Rasterization test passed.
Triangle Tile test passed.
Triangle Stipple test passed.
Anti-aliased Triangles test passed.
Quad Rasterization test passed.
Polygon Face test passed.
Polygon Cull test passed.
Polygon Stipple test passed.
Polygon Edge test passed.
Ambient Material test passed.
Ambient Scene test passed.
Attenuation Position test passed.
Diffuse Light test passed.
Diffuse Material test passed.
Diffuse Material Normal test passed.
Diffuse Material Positioning test passed.
Emissive Material test passed.
Specular Exponent test passed.
Specular Exponent Normal test passed.
Specular Local Eye Half Angle test passed.
Specular Light test passed.
Specular Material test passed.
Specular Normal test passed.
Spot Positioning test passed.
Spot Exponent and Positioning test passed.
Spot Exponent and Direction test passed.
Fog Exponential test passed.
Fog Linear test passed.
Texture Decal test passed.
Texture Border test passed.
Mipmaps Selection test passed.
Mipmaps Interpolation test passed.
Display Lists test passed.
Evaluator test passed.
Evaluator Color test passed.
Texture Edge Clamp test passed.
Packed Pixels test passed.
Texture LOD test passed.
Rescale Normal test passed.
Color Table test passed.
Convolution test passed.
Convolution Border test passed.
Histogram test passed.
MinMax test passed.
MultiTexture test passed.
Conform passed.
----------------------------------------------------------------------
% conform -v 2 -p 4
OpenGL Conformance Test
Version 1.2
Setup Report.
Verbose level = 2.
Random number seed = 1.
Path level = 4.
Visual Report.
Display ID = 35. Indirect Rendering.
Double Buffered.
RGBA (5, 6, 5, 0).
Stencil (8).
Depth (16).
Accumulation (16, 16, 16, 16).
Epsilon Report.
zero error epsilon = 0.000122.
RGBA error epsilon = 0.0324, 0.016, 0.0324, 0.000122.
Depth buffer error epsilon = 0.000137.
Stencil plane error epsilon = 0.00404.
Accumulation error epsilon = 0.000137, 0.000137, 0.000137, 0.000137.
Default State test passed.
Must Pass test passed.
Divide By Zero test passed.
Viewport Clamp test passed.
Matrix Stack test passed.
Matrix Stack Mixing test passed.
Vertex Order test passed.
Transformations test passed.
Transformation Normal test passed.
Viewport Transformation test passed.
Buffer Clear test passed.
Buffer Corners test passed.
Buffer Color test passed.
Color Ramp test passed.
Mask test passed.
Buffer Invariance test passed.
Accumulation Buffer test passed.
Select test passed.
Feedback test passed.
Scissor test passed.
Alpha Plane Function test passed.
Stencil Plane Clear test passed.
Stencil Plane Corners test passed.
Stencil Plane Operation test passed.
Stencil Plane Function test passed.
Depth Buffer Clear test passed.
Depth Buffer Function test passed.
Blend test passed.
Dither test passed.
LogicOp Function test does not exist for an RGB visual.
DrawPixels test passed.
CopyPixels test passed.
Bitmap Rasterization test passed.
Point Rasterization test passed.
Anti-aliased Point test passed.
Line Rasterization test passed.
Line Stipple test passed.
Anti-aliased Line test passed.
Horizontal and Vertical Line test passed.
Triangle Rasterization test passed.
Triangle Tile test passed.
Triangle Stipple test passed.
Anti-aliased Triangles test passed.
Quad Rasterization test passed.
Polygon Face test passed.
Polygon Cull test passed.
Polygon Stipple test passed.
Polygon Edge test passed.
Ambient Material test passed.
Ambient Scene test passed.
Attenuation Position test passed.
Diffuse Light test passed.
Diffuse Material test passed.
Diffuse Material Normal test passed.
Diffuse Material Positioning test passed.
Emissive Material test passed.
Specular Exponent test passed.
Specular Exponent Normal test passed.
Specular Local Eye Half Angle test passed.
Specular Light test passed.
Specular Material test passed.
Specular Normal test passed.
Spot Positioning test passed.
Spot Exponent and Positioning test passed.
Spot Exponent and Direction test passed.
Fog Exponential test passed.
Fog Linear test passed.
Texture Decal test passed.
Texture Border test passed.
Mipmaps Selection test passed.
Mipmaps Interpolation test passed.
Display Lists test passed.
Evaluator test passed.
Evaluator Color test passed.
Texture Edge Clamp test passed.
Packed Pixels test passed.
Texture LOD test passed.
Rescale Normal test passed.
Color Table test passed.
Convolution test passed.
Convolution Border test passed.
Histogram test passed.
MinMax test passed.
MultiTexture test passed.
Conform passed.
GLX CONFORMANCE TEST
====================
% conformx -v 2
OpenGL X Conformance Test
Version 1.1.1
Setup Report.
Verbose level = 2.
Random number seed = 1.
Path inactive.
Visual Report.
Display ID = 34. Direct Rendering.
Double Buffered.
RGBA (8, 8, 8, 0).
Stencil (8).
Depth (16).
Accumulation (16, 16, 16, 16).
Epsilon Report.
zero error epsilon = 0.000122.
RGBA error epsilon = 0.00404, 0.00404, 0.00404, 0.000122.
Depth buffer error epsilon = 0.000137.
Stencil plane error epsilon = 0.00404.
Accumulation error epsilon = 0.000137, 0.000137, 0.000137, 0.000137.
Default State test passed.
glReadPixels() test passed.
Font test passed.
Conformx passed.
</pre>
NOTE: conformx passes for all machine path levels (-p option).
</body>
</html>

View File

@@ -1,78 +0,0 @@
<html>
<title>Contents</title>
<body text="#ffffff" bgcolor="#119955" link="#ffffff" vlink="#dddddd" alink="#ffffff">
<b>Documentation</b>
<ul>
<li><a href="intro.html" target="MainFrame">Introduction</a>
<li><a href="news.html" target="MainFrame">News</a>
<li><a href="systems.html" target="MainFrame">Platforms and Drivers</a>
<li><a href="license.html" target="MainFrame">License & Copyright</a>
<li><a href="faq.html" target="MainFrame">FAQ</a>
<li><a href="VERSIONS" target="MainFrame">Version History</a>
<li><a href="relnotes.html" target="MainFrame">Release Notes</a>
<li><a href="thanks.html" target="MainFrame">Acknowledgements</a>
<li><a href="conform.html" target="MainFrame">Conformance Testing</a>
<li>more docs below...
</ul>
<b>Download / Install</b>
<ul>
<li><a href="http://www.sourceforge.net/projects/mesa3d" target="_parent">Stable Release (5.0.2)</a>
<li><a href="download.html" target="MainFrame">Downloading/Unpacking</a>
<li><a href="install.html" target="MainFrame">Compilation/Installation</a>
<li><a href="glu.html" target="MainFrame">SGI's GLU</a>
</ul>
<b>Resources</b>
<ul>
<li><a href="lists.html" target="MainFrame">Mailing Lists</a>
<li><a href="bugs.html" target="MainFrame">Bug Database</a>
<li><a href="webmaster.html" target="MainFrame">Webmaster</a>
</ul>
<b>User Topics</b>
<ul>
<LI><A HREF="envvars.html" target="MainFrame">Environment Variables</A>
<LI><A HREF="osmesa.html" target="MainFrame">Off-Screen Rendering</A>
<LI><A HREF="pbuffers.html" target="MainFrame">Pbuffer Rendering</A>
<LI><A HREF="debugging.html" target="MainFrame">Debugging Tips</A>
<LI><A HREF="perf.html" target="MainFrame">Performance Tips</A>
<LI><A HREF="extensions.html" target="MainFrame">Mesa Extensions</A>
<LI><A HREF="mangling.html" target="MainFrame">Function Name Mangling</A>
</ul>
<b>Developer Topics</b>
<ul>
<li><a href="http://sourceforge.net/projects/mesa3d" target="_parent">SourceForge homepage</a>
<li><a href="cvs_branches.html" target="MainFrame">CVS Branch Info</a>
<li><a href="cvs_anonymous.html" target="MainFrame">Anonymous CVS Access</a>
<li><a href="utilities.html" target="MainFrame">Utilities</a>
<li><a href="helpwanted.html" target="MainFrame">Help Wanted</a>
<li><a href="devinfo.html" target="MainFrame">Development Notes</a>
<li><a href="sourcedocs.html" target="MainFrame">Source Documentation</a>
<li><a href="subset.html" target="MainFrame">Subset Information</a>
<li><a href="fbdev-dri.html" target="MainFrame">fbdev/DRI Environment</a>
<LI><A HREF="custom.html" target="MainFrame">Custom Development</A>
</ul>
<b>Links</b>
<ul>
<li><a href="http://www.opengl.org" target="_parent">OpenGL website</a>
<li><a href="http://dri.sourceforge.net" target="_parent">DRI website</a>
<li><a href="games.html" target="MainFrame">Games and Entertainment</a>
<li><a href="libraries.html" target="MainFrame">Libraries and Toolkits</a>
<li><a href="modelers.html" target="MainFrame">Modeling and Rendering</a>
<li><a href="science.html" target="MainFrame">Science and Technical</a>
<li><a href="utility.html" target="MainFrame">Utilities</a>
<li><a href="demos.html" target="MainFrame">Demos / other</a>
</ul>
<A HREF="http://sourceforge.net"
target="_parent"><IMG SRC="http://sourceforge.net/sflogo.php?group_id=3&type=1"
WIDTH="88" HEIGHT="31" ALIGN="BOTTOM" ALT="Sourceforge.net" BORDER="0"></A>
</body>
</html>

View File

@@ -1,25 +0,0 @@
<HTML>
<TITLE>Custom Development</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Custom Development</H1>
<p>
Mesa is primarily developed and maintained on a volunteer basis.
Some Mesa development work has been done in conjuction with contracted
projects, such as the XFree86/DRI drivers.
</p>
<p>
<pre>[Begin shameless plug]</pre>
If you have a need for specific or custom Mesa development work,
<a href="http://www.tungstengraphics.com/" target="_parent">
Tungsten Graphics, Inc.</a> may be able to help you.
<pre>[End shameless plug]</pre>
</p>
</body>
</html>

View File

@@ -1,37 +0,0 @@
<HTML>
<TITLE>Anonymous CVS</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Anonymous CVS</H1>
<p>
Anonymous, public, read-only access to the code in CVS is
available. Here are the basic instructions for Unix systems:
</p>
<ol>
<li>Install CVS client software on your computer. Version 1.9.28 is known to work.
</li><li>Login as an anonymous user: <code>cvs -d:pserver:anonymous@cvs.mesa3d.sourceforge.net:/cvsroot/mesa3d
login</code>
</li><li>Just hit return at the <code>CVS password:</code> prompt.
</li><li>Then checkout mesa: <code>cvs -z3 -d:pserver:anonymous@cvs.mesa3d.sourceforge.net:/cvsroot/mesa3d
co Mesa</code>
</li></ol>
<p>To update your Mesa CVS source to the latest CVS source:
</p><ol>
<li><code>cd Mesa</code>
</li><li><code>cvs -z3 -d:pserver:anonymous@cvs.mesa3d.sourceforge.net:/cvsroot/mesa3d
update</code>
</li></ol>
<p>You can browse the Mesa source code in CVS
<a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/mesa3d/">here.
</a>
</p>
</body>
</html>

View File

@@ -1,59 +0,0 @@
<HTML>
<TITLE>CVS Branches</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>CVS Branch Information</H1>
<p>
The Mesa3d sources are split up into two branches. A branch that is to
remain as stable as possible, and an unstable branch where development
work for new versions will be done. The current stable branch is
tagged <code>mesa_3_4_branch</code> while the unstable branch is just
the default. The goal is to adopt and even/odd stable/unstable
versioning scheme similar to the Linux kernel. Hence releases of Mesa
3.2.X should be more stable than Mesa 3.3.X.<p></p> <p>All versions of
Mesa after 3.0 will also be tagged with a branch id. Mesa 3.1 has the
tag <code>mesa_3_1</code>, Mesa 3.2 will be <code>mesa_3_2</code>,
Mesa 3.3 <code>mesa_3_3</code>, etc..</p>
<p>
To checkout a specific branch of mesa just pass <code>-r</code> and
the branch tag after your cvs command. For example <code>cvs checkout
-r mesa_3_4_branch Mesa</code> will checkout the 3.4 branch and
<code>cvs update -r mesa_3_4_branch</code> will convert your current
branch to the 3.4 dev branch.
Consult <a href="http://www.durak.org/cvswebsites/doc/cvs_5.php3#SEC54"
target="_parent">http://www.durak.org/cvswebsites/doc/cvs_5.php3#SEC54</a>
for more on branching in cvs.
</p>
<p>
To see a list of all the CVS branchs run <code>cvs log README</code> (or any
other file) and look for the section labeled <code>symbolic names</code>.
You'll see something like this:
</p>
<pre> symbolic names:
mesa_4_0: 1.3
mesa_4_0_branch: 1.3.0.6
mesa_3_5: 1.3
mesa_3_4_2: 1.3
mesa_3_4_1: 1.3
mesa_3_4: 1.3
mesa_3_4_branch: 1.3.0.4
mesa_3_3: 1.3
mesa_3_2_1: 1.1.1.1
mesa_3_3_texture_env_combine2: 1.3.0.2
mesa_3_2: 1.1.1.1
mesa_3_2_beta_1: 1.1.1.1
mesa_3_1: 1.1.1.1
mesa_3_2_dev: 1.1.1.1.0.2
mesa_3_1_beta_3: 1.1.1.1
start: 1.1.1.1
mesa: 1.1.1
</pre>
</body>
</html>

View File

@@ -1,36 +0,0 @@
<HTML>
<TITLE>Debugging Tips</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Debugging Tips</H1>
<p>
Normally Mesa (and OpenGL) records but does not notify the user of
errors. It is up to the application to call
<code>glGetError</code> to check for errors. Mesa supports an
environment variable, MESA_DEBUG, to help with debugging. If
MESA_DEBUG is defined, a message will be printed to stdout whenever
an error occurs.
</p>
<p>
More extensive error checking is done when Mesa is compiled with the
DEBUG symbol defined. You'll have to edit the Make-config file and
add -DDEBUG to the CFLAGS line for your system configuration. You may
also want to replace any optimization flags with the -g flag so you can
use your debugger. After you've edited Make-config type 'make clean'
before recompiling.
</p>
<p>
In your debugger you can set a breakpoint in _mesa_error() to trap Mesa
errors.
</p>
<p>
There is a display list printing/debugging facility. See the end of
src/dlist.c for details.
</p>
</BODY>
</HTML>

View File

@@ -1,16 +0,0 @@
<HTML>
<TITLE>Demos</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Demos</H1>
<ul>
<li><a href="http://www.geocities.com/shobhand/homepage.html">Shobhan Dutta's Geartrain and Walkthrough Demos</a>
</li></ul>
</body>
</html>

View File

@@ -1,230 +0,0 @@
<HTML>
<TITLE>Development Notes</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Development Notes</H1>
<H2>Adding Extentions</H2>
<p>
To add a new GL extension to Mesa you have to do the following.
<pre>
If glext.h doesn't define the extension, edit include/GL/gl.h and add:
- new enum tokens
- new API function entry points
- #define GL_EXT_the_extension_name 1
If adding a new API function (call it glNewFunctionEXT):
- insert glNewFunctionEXT()into src/apiext.h
- edit src/types.h and add NewFunction to the gl_api_table struct
- implement gl_NewFunction() in the appropriate src file
- hook gl_NewFunction() into pointers.c
- add display list support in dlist.c for save_NewFunction()
- add glNewFunctionEXT to gl_GetProcAddress() in extensions.c or
in the device driver's GetProcAddress() function if appropriate
</pre>
<p>
If adding new GL state be sure to update get.c and enable.c
</p>
<p>
In general, look for an extension similar to the new one that's already
implemented in Mesa and follow it by example.
</p>
<H2>Coding Style</H2>
<p>
Mesa's code style has changed over the years. Here's the latest.
</p>
<p>
Comment your code! It's extremely important that open-source code be
well documented. Also, strive to write clean, easily understandable code.
</p>
<p>
3-space indentation
</p>
<p>
If you use tabs, set them to 8 columns
</p>
<p>
Brace example:
</p>
<pre>
if (condition) {
foo;
}
else {
bar;
}
</pre>
<p>
Here's the GNU indent command which will best approximate my preferred style:
</p>
<pre>
indent -br -i3 -npcs infile.c -o outfile.c
</pre>
<p>
Local variable name example: localVarName (no underscores)
</p>
<p>
Constants and macros are ALL_UPPERCASE, with _ between words
</p>
<p>
Global vars not allowed.
</p>
<p>
Function name examples:
</p>
<pre>
glFooBar() - a public GL entry point (in dispatch.c)
_mesa_FooBar() - the internal immediate mode function
save_FooBar() - retained mode (display list) function in dlist.c
foo_bar() - a static (private) function
_mesa_foo_bar() - an internal non-static Mesa function
</pre>
<H2>Writing a Device Driver</H2>
<p>
XXX to do
</p>
<H2>Making a New Mesa Release</H2>
<p>
These are the instructions for making a new Mesa release.
</p>
<p>
Prerequisites (later versions may work):
</p>
<ul>
<li> autoconf 2.50
<li> automake 1.4-p2
<li> libtool 1.4
</ul>
<p>
Be sure to do a "cvs update -d ." in the Mesa directory to
get all the latest files.
</p>
<p>
Update the version definitions in src/version.h
</p>
<p>
Create/edit the docs/RELNOTES-X.Y file to document what's new in the release.
Edit the docs/VERSIONS file too.
</p>
<p>
Edit Make-config and change the MESA_MAJOR and/or MESA_MINOR versions.
</p>
<p>
Edit the GNU configure stuff to change versions numbers as needed:
Update the version string (second argument) in the line
"AM_INIT_AUTOMAKE(Mesa, 3.3)" in the configure.in file.
</p>
<p>
Remove the leading `dnl' from the line "dnl AM_MAINTAINER_MODE".
</p>
<p>
Verify the version numbers near the top of configure.in
</p>
<p>
Run "fixam -f" to disable automatic dependency tracking.
</p>
<p>
Run the bootstrap script to generate the configure script.
</p>
<p>
Edit Makefile.X11 and verify DIRECTORY is set correctly. The Mesa
sources must be in that directory (or there must be a symbolic link).
</p>
<p>
Edit Makefile.X11 and verify that LIB_NAME and DEMO_NAME are correct.
If it's a beta release, be sure the bump up the beta release number.
</p>
<p>
cp Makefile.X11 to Makefile so that the old-style Mesa makefiles
still work. ./configure will overwrite it if that's what the user runs.
</p>
<p>
Make a symbolic link from $(DIRECTORY) to Mesa. For example,
ln -s Mesa Mesa-3.3 This is needed in order to make a correct
tar file in the next step.
</p>
<p>
Make the distribution files. From inside the Mesa directory:
<pre>
make -f Makefile.X11 lib_tar
make -f Makefile.X11 demo_tar
make -f Makefile.X11 lib_zip
make -f Makefile.X11 demo_zip
</pre>
<p>
Copy the distribution files to a temporary directory, unpack them,
compile everything, and run some demos to be sure everything works.
</p>
<p>
Upload the *.tar.gz and *.zip files to ftp.mesa3d.org
</p>
<p>
Update the web site.
</p>
<p>
Make an announcement on the mailing lists:
<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</em><em>-</em><em>d</em><em>e</em><em>v</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>,
<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</em><em>-</em><em>u</em><em>s</em><em>e</em><em>r</em><em>s</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>
and
<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</em><em>-</em><em>a</em><em>n</em><em>n</em><em>o</em><em>u</em><em>n</em><em>c</em><em>e</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>
</p>
<H2>Autoconf info</H2>
<p>
In order to run the bootstrap script you'll need:
<p>
<pre>
autoconf 2.50
automake 1.4-p5
libtool 1.4
</pre>
</body>
</html>

View File

@@ -1,104 +0,0 @@
<HTML>
<TITLE>Getting Mesa</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Downloading / Unpacking</H1>
<p>
Mesa can be downloaded from the
<a href="http://www.sourceforge.net/projects/mesa3d" target="_parent">
SourceForge download area</A>.
</p>
<p>
Since version 2.3, Mesa is distributed in two pieces: main library code
and demos. If you're upgrading from a previous version of Mesa or you're not
interested in the demos you can just download the core Mesa archive file.
</p>
<p>
Mesa is available in at least three archive formats:
</p>
<pre>
1. GNU zip/tar
Download MesaLib-X.Y.tar.gz and optionally MesaDemos-X.Y.tar.gz
Unpack with:
gzcat MesaLib-X.Y.tar.gz | tar xf -
gzcat MesaDemos-X.Y.tar.gz | tar xf -
or
gunzip MesaLib-X.Y.tar.gz ; tar xf MesaLib-X.Y.tar
gunzip MesaDemos-X.Y.tar.gz ; tar xf MesaLib-X.Y.tar
or
tar zxf MesaLib-X.Y.tar.gz
tar zxf MesaDemos-X.Y.tar.gz
If you don't have gzcat try zcat instead.
2. Unix compressed/tar
Download MesaLib-X.Y.tar.Z and optionally MesaDemos-X.Y.tar.Z
Unpack with:
zcat MesaLib-X.Y.tar.Z | tar xf -
zcat MesaDemos-X.Y.tar.Z | tar xf -
3. ZIP format
Download MesaLib-X.Y.zip and optionally MesaDemos-X.Y.zip
Unpack with:
unzip MesaLib-X.Y.zip
unzip MesaDemos-X.Y.zip
</pre>
<p>
After unpacking you'll have these directories (and more):
</p>
<pre>
Makefile.X11 - top-level Makefile for X11-based systems
Make-config - system configurations used by the Makefile.X11
include/ - GL header (include) files
bin/ - shell scripts for making shared libraries, etc
lib/ - final client libraries, created during compilation
docs/ - documentation
src/ - source code for libraries
src/mesa - sources for the main Mesa library and device drivers
src/glu - libGLU source code
src/glw - Xt/Motif/OpenGL widget code
and if you downloaded and unpacked the MesaDemos.X.Y archive:
src/glut - GLUT source code
progs/ - OpenGL programs
progs/demos - original Mesa demos
progs/xdemos - GLX OpenGL/Mesa demos
progs/redbook - examples from the OpenGL Programming Guide
progs/samples - examples from SGI
progs/images/ - image files
</pre>
<p>
Proceed to <a href="install.html">compilation and installation
instructions</a>.
</p>
<H1>GLUT</H1>
<p>
Mesa 2.5 and later includes Mark Kilgard's GLUT library (GL Utility Toolkit).
GLUT is built automatically on systems which support it.
</p>
<p>
The GLUT tests, demos, examples, etc are not included, just the main library.
To obtain the latest complete release of GLUT please visit the
<a href="http://www.opengl.org/developers/documentation/glut/index.html"
target ="_parent">GLUT homepage</a>
</p>
</BODY>
</HTML>

View File

@@ -1,42 +0,0 @@
Blocks allocated to Mesa:
0x8750-0x875F
0x8BB0-0x8BBF
GL_MESA_packed_depth_stencil
GL_DEPTH_STENCIL_MESA 0x8750
GL_UNSIGNED_INT_24_8_MESA 0x8751
GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
GL_UNSIGNED_SHORT_15_1_MESA 0x8753
GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
GL_MESA_trace.spec:
GL_TRACE_ALL_BITS_MESA 0xFFFF
GL_TRACE_OPERATIONS_BIT_MESA 0x0001
GL_TRACE_PRIMITIVES_BIT_MESA 0x0002
GL_TRACE_ARRAYS_BIT_MESA 0x0004
GL_TRACE_TEXTURES_BIT_MESA 0x0008
GL_TRACE_PIXELS_BIT_MESA 0x0010
GL_TRACE_ERRORS_BIT_MESA 0x0020
GL_TRACE_MASK_MESA 0x8755
GL_TRACE_NAME_MESA 0x8756
MESA_ycbcr_texture.spec:
GL_YCBCR_MESA 0x8757
GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
GL_MESA_pack_invert.spec
GL_PACK_INVERT_MESA 0x8758
GL_MESA_program_debug.spec:
GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x????
GL_VERTEX_PROGRAM_CALLBACK_MESA 0x????
GL_FRAGMENT_PROGRAM_POSITION_MESA 0x????
GL_VERTEX_PROGRAM_POSITION_MESA 0x????
GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x????
GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x????
GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x????
GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x????

View File

@@ -1,25 +0,0 @@
<HTML>
<TITLE>Environment Variables</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Environment Variables</H1>
<p>
Mesa supports the following environment variables:
</p>
<ul>
<li>MESA_DEBUG - if defined, error messages are printed to stderr
<li>MESA_NO_DITHER - disable dithering, overriding glEnable(GL_DITHER)
<li>MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
<li>MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
<li>MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
<li>MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
<li>MESA_GAMMA - gamma correction coefficients (X only)
<li>MESA_XSYNC - enable synchronous X behavior (for X debugging only)
</ul>
</BODY>
</HTML>

View File

@@ -1,32 +0,0 @@
<HTML>
<TITLE>Mesa Extensions</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Mesa Extensions</H1>
<p>
A number of extensions have been developed especially for Mesa.
The specifications follow.
</p>
<UL>
<LI><A HREF="MESA_agp_offset.spec">MESA_agp_offset.spec</A>
<LI><A HREF="MESA_copy_sub_buffer.spec">MESA_copy_sub_buffer.spec</A>
<LI><A HREF="MESA_packed_depth_stencil.spec">MESA_packed_depth_stencil.spec</A>
<LI><A HREF="MESA_pack_invert.spec">MESA_pack_invert.spec</A>
<LI><A HREF="MESA_pixmap_colormap.spec">MESA_pixmap_colormap.spec</A>
<LI><A HREF="MESA_release_buffers.spec">MESA_release_buffers.spec</A>
<LI><A HREF="MESA_resize_buffers.spec">MESA_resize_buffers.spec</A>
<LI><A HREF="MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</A>
<LI><A HREF="MESA_sprite_point.spec">MESA_sprite_point.spec</A> (obsolete)
<LI><A HREF="MESA_trace.spec">MESA_trace.spec</A> (obsolete)
<LI><A HREF="MESA_window_pos.spec">MESA_window_pos.spec</A>
<LI><A HREF="MESA_ycbcr_texture.spec">MESA_ycbcr_texture.spec</A>
</UL>
</BODY>
</HTML>

View File

@@ -1,343 +0,0 @@
<html>
<head><title>Mesa FAQ</title></head>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<center>
<h1>Mesa Frequently Asked Questions</h1>
Last updated: 6 August 2003
</center>
<br>
<br>
<h2>Index</h2>
<a href="#part1">1. High-level Questions and Answers</a>
<br>
<a href="#part2">2. Compilation and Installation Problems</a>
<br>
<a href="#part3">3. Runtime / Rendering Problems</a>
<br>
<a href="#part4">4. Developer Questions</a>
<br>
<br>
<br>
<a name="part1">
</a><h1><a name="part1">1. High-level Questions and Answers</a></h1>
<h2><a name="part1">1.1 What is Mesa?</a></h2>
<p>
<a name="part1">Mesa is an open-source implementation of the OpenGL specification.
OpenGL is a programming library for writing interactive 3D applications.
See the </a><a href="http://www.opengl.org/">OpenGL website</a> for more
information.
</p>
<p>
Mesa 5.x supports the OpenGL 1.4 specification.
</p>
<h2>1.2 Does Mesa support/use graphics hardware?</h2>
<p>
Yes. Specifically, Mesa serves as the OpenGL core for the open-source
XFree86/DRI OpenGL drivers. See the <a href="http://dri.sf.net/">DRI
website</a> for more information.
</p>
<p>
There have been other hardware drivers for Mesa over the years (such as
the 3Dfx Glide/Voodoo driver, an old S3 driver, etc) but the DRI drivers
are the modern ones.
</p>
<h2>1.3 What purpose does Mesa (software-based rendering) serve today?</h2>
<p>
Hardware-accelerated OpenGL implementations are available for most popular
operating systems today.
Still, Mesa serves at least these purposes:
</p>
<ul>
<li>Mesa is used as the core of the open-source XFree86/DRI hardware drivers.
</li>
<li>Mesa is quite portable and allows OpenGL to be used on systems
that have no other OpenGL solution.
</li>
<li>Software rendering with Mesa serves as a reference for validating the
hardware drivers.
</li>
<li>A software implementation of OpenGL is useful for experimentation,
such as testing new rendering techniques.
</li>
<li>Mesa can render images with deep color channels: 16-bit integer
and 32-bit floating point color channels are supported.
This capability is only now appearing in hardware.
</li>
<li>Mesa's internal limits (max lights, clip planes, texture size, etc) can be
changed for special needs (hardware limits are hard to overcome).
</li>
</ul>
<h2>1.4 How do I upgrade my DRI installation to use a new Mesa release?</h2>
<p>
You don't! A copy of the Mesa source code lives inside the XFree86/DRI source
tree and gets compiled into the individual DRI driver modules.
If you try to install Mesa over an XFree86/DRI installation, you'll lose
hardware rendering (because stand-alone Mesa's libGL.so is different than
the XFree86 libGL.so).
</p>
<p>
The DRI developers will incorporate the latest release of Mesa into the
DRI drivers when the time is right.
</p>
<p>
To upgrade, either look for a new release of <a href="http://www.xfree86.org"
target="_parent">XFree86</a> or visit the
<a href="http://dri.sf.net" target="_parent">DRI website</a> to see
if there's newer drivers.
</p>
<h2>1.5 Are there other open-source implementations of OpenGL?</h2>
<p>
Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html">
OpenGL Sample Implemenation (SI)</a> is available.
The SI was written during the time that OpenGL was originally designed.
Unfortunately, development of the SI has stagnated.
Mesa is much more up to date with modern features and extensions.
</p>
<p>
<a href="http://www.dsbox.com/minigl.html">miniGL</a> is a subset of OpenGL
for PalmOS devices.
<a href="http://fabrice.bellard.free.fr/TinyGL/">TinyGL</a> is another
subset of OpenGL.
</p>
<p>
There may be others but Mesa is the most popular and feature-complete.
</p>
<br>
<br>
<a name="part2">
</a><h1><a name="part2">2. Compilation and Installation Problems</a></h1>
<h2><a name="part2">2.1 What's the easiest way to install Mesa?</a></h2>
<p>
<a name="part2">If you're using a Linux-based system, your distro CD most likely already
has Mesa packages (like RPM or DEB) which you can easily install.
</a></p>
<h2><a name="part2">2.2 Running <code>configure; make</code> Doesn't Work</a></h2>
<p>
<a name="part2">Unfortunately, the GNU autoconf/automake/libtool system doesn't seem to work
too well on non GNU/Linux systems, even after installing gmake, gcc, etc.
For that reason, Mesa's <b>old-style</b> makefile system is still included.
The old-style system uses good old traditional Makefiles. Try the following:
</a></p><pre><a name="part2"> cd Mesa-x.y.z
cp Makefile.X11 Makefile
make
</a></pre>
<a name="part2">You'll see a list of system configurations from which to choose.
For example:
</a><pre><a name="part2"> make linux-x86
</a></pre>
<p>
<a name="part2">If you're experienced with GNU autoconf/automake/libtool and think you can help
with maintence, contact the Mesa developers.
FYI, the Mesa developers generally don't use the autoconf/automake system.
We're especially annoyed with the fact that a +5000-line script (libtool)
is needed to make shared libraries (ugh).
</a></p>
<h2><a name="part2">2.3 Mesa still doesn't compile</a></h2>
<p>
<a name="part2">If the old-style Makefile system doesn't work either, make sure you have
the most recent version of Mesa.
Otherwise, file a bug report or post to the Mesa3d-users mailing list.
Give as much info as possible when describing your problem.
</a></p>
<h2><a name="part2">2.4 I get undefined symbols such as bgnpolygon, v3f, etc...</a></h2>
<p>
<a name="part2">You're application is written in IRIS GL, not OpenGL.
IRIS GL was the predecessor to OpenGL and is a different thing (almost)
entirely.
Mesa's not the solution.
</a></p>
<h2><a name="part2">2.5 Where is the GLUT library?</a></h2>
<p>
<a name="part2">GLUT (OpenGL Utility Toolkit) is in the separate MesaDemos-x.y.z.tar.gz file.
If you don't already have GLUT installed, you should grab the MesaDemos
package and unpack it before compiling Mesa.
</a></p>
<h2><a name="part2">2.6 What's the proper place for the libraries and headers?</a></h2>
<p>
<a name="part2">On Linux-based systems you'll want to follow the
</a><a href="http://oss.sgi.com/projects/ogl-sample/ABI/index.html">Linux ABI</a>
standard.
Basically you'll want the following:
</p>
<ul>
<li>/usr/include/GL/gl.h - the main OpenGL header
</li><li>/usr/include/GL/glu.h - the OpenGL GLU (utility) header
</li><li>/usr/include/GL/glx.h - the OpenGL GLX header
</li><li>/usr/include/GL/glext.h - the OpenGL extensions header
</li><li>/usr/include/GL/glxext.h - the OpenGL GLX extensions header
</li><li>/usr/include/GL/osmesa.h - the Mesa off-screen rendering header
</li><li>/usr/lib/libGL.so - a symlink to libGL.so.1
</li><li>/usr/lib/libGL.so.1 - a symlink to libGL.so.1.xyz
</li><li>/usr/lib/libGL.so.xyz - the actual OpenGL/Mesa library. xyz denotes the
Mesa version number.
</li><li>/usr/lib/libGLU.so - a symlink to libGLU.so.1
</li><li>/usr/lib/libGLU.so.1 - a symlink to libGLU.so.1.3.xyz
</li><li>/usr/lib/libGLU.so.xyz - the OpenGL Utility library. xyz denotes the Mesa
version number.
</li></ul>
<p>
After installing XFree86 and the DRI drivers, some of these files
may be symlinks into the /usr/X11R6/ tree.
</p>
<p>
The old-style Makefile system doesn't install the Mesa libraries; it's
up to you to copy them (and the headers) to the right place.
</p>
<p>
The GLUT header and library should go in the same directories.
</p>
<br>
<br>
<a name="part3">
</a><h1><a name="part3">3. Runtime / Rendering Problems</a></h1>
<h2><a name="part3">3.1 Rendering is slow / why isn't my graphics hardware being used?</a></h2>
<p>
<a name="part3">Stand-alone Mesa (downloaded as MesaLib-x.y.z.tar.gz) doesn't have any
support for hardware acceleration (with the exception of the 3DFX Voodoo
driver).
</a></p>
<p>
<a name="part3">What you really want is a DRI or NVIDIA (or another vendor's OpenGL) driver
for your particular hardware.
</a></p>
<p>
<a name="part3">You can run the <code>glxinfo</code> program to learn about your OpenGL
library.
Look for the GL_VENDOR and GL_RENDERER values.
That will identify who's OpenGL library you're using and what sort of
hardware it has detected.
</a></p>
<p>
<a name="part3">If your DRI-based driver isn't working, go to the
</a><a href="http://dri.sf.net/">DRI website</a> for trouble-shooting information.
</p>
<h2>3.2 I'm seeing errors in depth (Z) buffering. Why?</h2>
<p>
Make sure the ratio of the far to near clipping planes isn't too great.
Look
<a href="http://www.sgi.com/software/opengl/advanced97/notes/node18.html">
here</a> for details.
</p>
<p>
Mesa uses a 16-bit depth buffer by default which is smaller and faster
to clear than a 32-bit buffer but not as accurate.
If you need a deeper you can modify the parameters to
<code> glXChooseVisual</code> in your code.
</p>
<h2>3.3 Why Isn't depth buffering working at all?</h2>
<p>
Be sure you're requesting a depth buffered-visual. If you set the MESA_DEBUG
environment variable it will warn you about trying to enable depth testing
when you don't have a depth buffer.
</p>
<p>Specifically, make sure <code>glutInitDisplayMode</code> is being called
with <code>GLUT_DEPTH</code> or <code>glXChooseVisual</code> is being
called with a non-zero value for GLX_DEPTH_SIZE.
</p>
<p>This discussion applies to stencil buffers, accumulation buffers and
alpha channels too.
</p>
<h2>3.4 Why does glGetString() always return NULL?</h2>
<p>
Be sure you have an active/current OpenGL rendering context before
calling glGetString.
</p>
<h2>3.5 GL_POINTS and GL_LINES don't touch the right pixels</h2>
<p>
If you're trying to draw a filled region by using GL_POINTS or GL_LINES
and seeing holes or gaps it's because of a float-to-int rounding problem.
But this is not a bug.
See Appendix H of the OpenGL Programming Guide - "OpenGL Correctness Tips".
Basically, applying a translation of (0.375, 0.375, 0.0) to your coordinates
will fix the problem.
</p>
<br>
<br>
<a name="part4">
</a><h1><a name="part4">4. Developer Questions</a></h1>
<h2><a name="part4">4.1 How can I contribute?</a></h2>
<p>
<a name="part4">First, join the Mesa3d-dev mailing list. That's where Mesa development
is discussed.
</a></p>
<p>
<a name="part4">The </a><a href="http://www.opengl.org/developers/documentation/specs.html">
OpenGL Specification</a> is the bible for OpenGL implemention work.
You should read it.
</p>
<p>Most of the Mesa development work involves implementing new OpenGL
extensions, writing hardware drivers (for the DRI), and code optimization.
</p>
<h2>4.2 How do I write a new device driver?</h2>
<p>
Unfortunately, writing a device driver isn't easy.
It requires detailed understanding of OpenGL, the Mesa code, and your
target hardware/operating system.
3D graphics are not simple.
</p>
<p>
The best way to get started is to use an existing driver as your starting
point.
For a software driver, the X11 and OSMesa drivers are good examples.
For a hardware driver, the Radeon and R200 DRI drivers are good examples.
</p>
<p>The DRI website has more information about writing hardware drivers.
The process isn't well document because the Mesa driver interface changes
over time, and we seldome have spare time for writing documentation.
That being said, many people have managed to figure out the process.
</p>
<p>
Joining the appropriate mailing lists and asking questions (and searching
the archives) is a good way to get information.
</p>
</body>
</html>

View File

@@ -1,223 +0,0 @@
<HTML>
<TITLE>Mesa fbdev/DRI Environment</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<center><H1>Mesa fbdev/DRI Drivers</H1></center>
<H1>1. Introduction</H1>
<p>
The fbdev/DRI sub-project within Mesa brings hardware accelerated OpenGL
rendering to the Linux fbdev environment.
The X Window System / XFree86 is not needed.
</p>
<p>
Basically, the <a href="http://dri.sf.net/">DRI</a> drivers for hardware
accelerated OpenGL for XFree86 have been ported to fbdev so that X is
not needed.
This means fbdev/DRI works in full-screen mode only.
</p>
<p>
DRI driver writers may find this simplified environment easier to work in,
compared to the full XFree86/DRI environment.
</p>
<p>
Much of the work for this project has been done by Jon Smirl and
Keith Whitwell.
</p>
<p>
To use fbdev/DRI, you'll need a Linux 2.4 or 2.6 kernel.
</p>
<p>
The fbdev/DRI Mesa code is in the Mesa CVS trunk (to be released as Mesa
5.1 in the future).
</p>
<h1>2. Compilation</h1>
<p>
Assuming you're starting with a fresh Mesa CVS checkout, do the following:
</p>
<pre>
cd Mesa-newtree
cp Makefile.X11 Makefile # or use a symlink
make linux-solo
</pre>
<p>
When this is finished, check the <code>Mesa-newtree/lib</code> directory
to verify that the following files were made:
</p>
<ul>
<li><code>libGL.so.1.2</code> - the client-side OpenGL library
(and a few symlinks to it).
<li><code>libGLU.so.1.1</code> - the GLU library (and a few symlinks to it).
<li><code>libglut.so.3.7</code> - the GLUT library (and a few symlinks to it).
<li><code>mga_dri.so</code> - DRI driver for Matrox G200/G400 cards.
<li><code>r128_dri.so</code> - DRI driver for ATI Rage 128 cards.
<li><code>r200_dri.so</code> - DRI driver for ATI R200 Radeon cards.
<li><code>radeon_dri.so</code> - DRI driver for original ATI Radeon cards.
<li><code>fb_dri.so</code> - software-only fbdev driver.
<li><code>miniglx.conf</code> - configuration file for the MiniGLX interface
</ul>
<h1>3. Using fbdev/DRI</h1>
<p>
If XFree86 is currently running, exit/stop the X server so you're
working from the console.
</p>
<h2>3.1 Kernel Modules</h2>
<p>
You'll need to load kernel modules specific to your graphics hardware.
The following kernel modules should be included with your kernel.
</p>
<p>
If you have ATI Radeon/R200 hardware, run as root:
</p>
<pre>
modprobe agpgart # the AGP GART module
modprobe radeonfb # the Radeon fbdev driver
modprobe radeon # the Radeon DRI kernel module
</pre>
<p>
If you have ATI Rage 128 hardware, run as root:
</p>
<pre>
modprobe agpgart # the AGP GART module
modprobe aty128fb # the Rage 128 fbdev driver
modprobe r128 # the Rage 128 DRI kernel module
</pre>
<p>
If you have Matrox G200/G400 hardware, run as root:
</p>
<pre>
modprobe agpgart # the AGP GART module
modprobe mgafb # the Matrox fbdev driver
modprobe mga # the Matrox DRI kernel module
</pre>
<p>
Then run <code>lsmod</code> to be sure the modules are loaded.
For a Radeon card, you should see something like this:
</p>
<pre>
Module Size Used by Not tainted
radeon 110308 0 (unused)
radeonfb 21900 0 (unused)
agpgart 43072 1
</pre>
<h2>3.2 Configuration File</h2>
<p>
The <code>Mesa-newtree/lib/miniglx.conf</code> file should be installed
in <code>/etc/</code>.
</p>
<p>
Edit <code>/etc/miniglx.conf</code> to be sure it's set up correctly
for your hardware.
Comments in the file explain the options.
</p>
<h2>3.3 Running fbdev/DRI Programs</h2>
<p>
Make sure your LD_LIBRARY_PATH environment variable is set to the
<code>Mesa-newtree/lib/</code> directory.
</p>
<p>
Change to the <code>Mesa-newtree/progs/miniglx/</code> directory and
start the sample_server program in the background:
</p>
<pre>
./sample_server &
</pre>
<p>
Then try running the <code>miniglxtest</code> program:
</p>
<pre>
./miniglxtest
</pre>
<p>
You should see a rotating quadrilateral which changes color as it rotates.
It will exit automatically after a bit.
</p>
<p>
If you run other tests in the miniglx/ directory, you may want to run
them from a remote shell so that you can stop them with ctrl-C.
</p>
<h1>4.0 Troubleshooting</h1>
<p>
If you try to run miniglxtest and get the following:
</p>
<pre>
[miniglx] failed to probe chipset
connect: Connection refused
server connection lost
</pre>
<p>
It means that the sample_server process is not running.
</p>
<h1>5.0 Programming Information</h1>
<p>
The full OpenGL API is available with fbdev/DRI.
</p>
<p>
OpenGL/Mesa is interfaced to fbdev via the <a href="MiniGLX.html">MiniGLX</a>
interface.
MiniGLX is a subset of Xlib and GLX API functions which provides just
enough functionality to setup OpenGL rendering and respond to simple
input events.
</p>
<p>
Since MiniGLX is a subset of the usual Xlib and GLX APIs, programs written
to the MiniGLX API can also be run on full Xlib/GLX implementations.
This allows some degree of flexibility for software development and testing.
</p>
<p>
However, the MiniGLX API is not binary-compatible with full Xlib/GLX.
Some of the structures are different and some macros/functions work
differently.
See the <code>GL/miniglx.h</code> header file for details.
</p>
</body>
</html>

View File

@@ -1,62 +0,0 @@
<HTML>
<TITLE>Games</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Games</H1>
<ul>
<li><a href="http://www.psc.edu/%7Esmp/a3d/">Asteroids3D</a> - 3D asteroids game
</li><li><a href="http://evlweb.eecs.uic.edu/aej/AndyBattalion.html" target="_parent">Battalion</a>
- battle game
</li><li><a href="http://bzflag.sourceforge.net/" target="_parent">BZFLAG</a> - 3-D tank
battle game
</li><li><a href="http://www.speakeasy.org/%7Emorse/copter-commander">Copter Commander</a> - 2d multiplayer side scroller
</li><li><a href="http://www.crystalspace.org/" target="_parent">CrystalSpace</a> - Free
3d game engine
</li><li><a href="http://www.afn.org/%7Ecthugha/" target="_parent">Cthugha</a> - music-sync'ed
graphical effects
</li><li><a href="http://www.sics.se/dive/" target="_parent">DIVE</a> - Distributed Interactive
Virtual Environment
</li><li><a href="http://www.newdoom.com/doomlegacy/" target="_parent">Doom Legacy</a>
- an OpenGL port of id software's popular game, Doom
</li><li><a href="http://www.asimov.de/intern_dropit.html" target="_parent">DropIt</a> - 3-D tetris game
</li><li><a href="http://www.flightgear.org/" target="_parent">Flight Gear</a> - Flight
simulator
</li><li><a href="http://freetrek.linuxgames.com/" target="_parent">Free Trek</a> - Star
Trek battle simulator
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">Gepetto</a> - Dance Choreography
</li><li><a href="http://glchess.sourceforge.net/" target="_parent">GLChess</a> - chess game
</li><li><a href="http://heretic.linuxgames.com/" target="_parent">GLHeretic</a> - Heretic
for Linux
</li><li><a href="http://glider3d.free.fr/" target="_parent">Glider3D</a> - flight simulator
</li><li><a href="http://www.gltron.org/" target="_parent">glTron</a> - Tron lightcycles
game
</li><li><a href="http://gracer.sourceforge.net/" target="_parent">GRacer</a> - 3D Motor
Sports Simulator
</li><li><a href="http://jongl.home.pages.de/" target="_parent">JONGL</a> - Juggling simulator
</li><li><a href="http://samba.anu.edu.au/KnightCap/" target="_parent">KnightCap</a> -
chess game
</li><li><a href="http://www.hackcraft.de/games/linwarrior_3d/">LinWarrior 3D</a> - A Battle Mech Simulator
</li><li><a href="http://www.nada.kth.se/%7Ef96-lfo/lunar/" target="_parent">Lunar Lander
2000</a> - 3D version of the classis lunar lander game
</li><li><a href="http://www.majik3d.org/" target="_parent">Majik 3D</a> - an online role-playing
world
</li><li><a href="http://www.pobox.com/%7Eshankel/opentrek.html" target="_parent">OpenTrek</a>
- Super Star Trek
</li><li><a href="http://www.idsoftware.com/" target="_parent">Quake(2,3)</a> - the popular
games from id software
</li><li><a href="http://torcs.free.fr/indexm.html" target="_parent">TORCS</a> - car racing
simulator
</li><li><a href="http://www.woodsoup.org/projs/tux_aqfh" target="_parent">TUX-AQFH</a>
- Tux the Penguin - a Quest for Herring
</li><li><a href="http://mordred.8m.com/voidrunner/" target="_parent">Void Runner</a>
- freeware arcade style game
</li><li><a href="http://xracer.annexia.org/" target="_parent">XRacer</a> - Free spaceship
racing game, similar to Wipeout
</li></ul>
</body></html>

View File

@@ -1,43 +0,0 @@
<HTML>
<TITLE>SGI GLU</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>SGI SI GLU</H1>
(Silicon Graphics, Inc. Sample Implementation of the OpenGL Utility library)
<p>
SGI open-sourced their OpenGL Sample Implementation (SI) in January, 2000.
This includes the GLU library.
</p>
<p>
The SI GLU library implements GLU version 1.3 whereas the original
Mesa GLU library only implemented version 1.2.
We recommend using the SI GLU library instead of Mesa's GLU library
since it's more up-to-date, complete and reliable.
We're no longer developing the original Mesa GLU library.
</p>
<p>
The new SI GLU library code is included in the Mesa package.
You don't have to download it separately.
</p>
<p>
<b>Olivier Michel</b> has made Linux RPMs of GLU for i386 and PowerPC.
You can download them from the
<a href="http://www.sourceforge.net/project/showfiles.php?group_id=3"
target="_parent">download area</a> under <b>Miscellaneous</b>.
</p>
<p>
Visit the <a href="http://oss.sgi.com/projects/ogl-sample/" target="_parent">
OpenGL Sample Implementation home page</a> for more information about the SI.
</p>
</body>
</html>

View File

@@ -1,62 +0,0 @@
<HTML>
<TITLE>Help Wanted</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Help Wanted</H1>
<p>
We can always use more help with the Mesa project. Here are some
specific areas. If you think you can help out, post to the mesa3d-dev
mailing list.
</p>
<ul>
<li>Windows 98/NT build/driver maintenance and testing (Karl Schultz has been
doing a great job of this lately)
<li>DOS/DJGPP build/driver maintenance and testing
<li>GGI driver/build maintenance and testing
<li>GNU autoconfig/libtool maintenance (esp. on non-Linux systems)
<li>x86, SSE, 3DNow! and SPARC assembly language programming
<li>Implement WGL font functions in the WGL interface code
<li>Implement off-screen bitmap rendering support in the WGL interface code
<li>Help with writing/testing the new NV_fragment_program extension code
<li>Implement the ARB_vertex/fragment extensions
<li>Download/compile/test Mesa and report any bugs found
</ul>
<p>
If you want to help with Mesa, first join the Mesa developer's
mailing list. Then post a message explaining what you might like
to help with. The Mesa web page has a list of a few work items
which you may consider.
</p>
</p>
Anyone is welcome to contribute code to the Mesa project, provided you
agree to the copyright terms of the relevant code. See the COPYRIGHT
file.
</p>
<p>
Unfortunately, all the easy work in Mesa was done years ago. Nowadays, the
work is rather complicated and not suited to beginners.
</p>
<p>
If you're contribution code to the Mesa library itself:
<p>
<ol>
<li>Try to write clean code (uniform indentation, comments, meaningful
identifiers, etc). It must be readable and maintainable!
<li>Test your code. On several occations I've incorporated code from
users which later turned out to have bugs. Now, I'm pretty hesitant
to use code which doesn't look good.
</ol>
</BODY>
</HTML>

View File

@@ -1,23 +0,0 @@
<html>
<title>Mesa Home Page</title></head>
<frameset rows="50,100% " border="1" framespacing="1" frameborder="yes">
<frame src="banner.html" name="BannerFrame" scrolling="no" marginwidth="1" marginheight="1" resize="">
<frameset cols="28%,72% " border="1" framespacing="1" frameborder="yes">
<frame src="contents.html" name="ContentsFrame" marginwidth="2" marginheight="1" resize="">
<frame src="news.html" name="MainFrame" marginwidth="3" marginheight="1" resize="">
</frameset>
</frameset>
<noframes>
<BODY>
<P>
</body>
</noframes>
</html>

View File

@@ -1,255 +0,0 @@
<HTML>
<TITLE>Compilation and Installation</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Compilation and Installation</H1>
<ol>
<li><a href="#unix-x11">Unix / X11</a>
<li><a href="#windows">Windows</a>
<li><a href="#vms">VMS</a>
<li><a href="#other">Other</a>
</ol>
<a name="unix-x11">
<H2>1. Unix/X11 Compilation and Installation</H1>
<p>
Mesa uses a rather conventional Makefile system.
A GNU autoconf/automake system used to be included, but was discarded
in Mesa 5.1 because:
</p>
<ul>
<li>It seldom worked on IRIX, Solaris, AIX, etc.
<li>It was very compilicated
<li>Nobody maintained it
<li>libtool was just too weird
</ul>
<p>
If someone strongly feels that Mesa should have a autoconf/automake
system and wants to contribute one and maintain it, we'll consider
adding it again.
</p>
<h3>1.1 Compilation</h3>
<p>
If you've obtained Mesa through CVS, do this to first:
</p>
<pre>
cd Mesa-newtree
cp Makefile.X11 Makefile
</pre>
<p>
Now, just type <b>make</b>.
You'll see a list of supported system configurations.
Choose one from the list (such as linux-x86), and type:
</p>
<pre>
make linux-x86
</pre>
<p>
That's it.
</p>
<h3>1.2 The libraries</h3>
<p>
When compilation has finished, look in the top-level <b>lib/</b> directory.
You'll see a set of library files similar to this:
</p>
<pre>
lrwxrwxrwx 1 brian users 10 Sep 4 17:55 libGL.so -> libGL.so.1*
lrwxrwxrwx 1 brian users 19 Sep 4 17:55 libGL.so.1 -> libGL.so.1.4.050100*
-rwxr-xr-x 1 brian users 13940317 Sep 4 17:55 libGL.so.1.4.050100*
lrwxrwxrwx 1 brian users 11 Sep 4 17:54 libGLU.so -> libGLU.so.1*
lrwxrwxrwx 1 brian users 20 Sep 4 17:54 libGLU.so.1 -> libGLU.so.1.3.050100*
-rwxr-xr-x 1 brian users 324746 Sep 3 13:54 libGLU.so.1.1*
-rwxr-xr-x 1 brian users 2830539 Sep 4 17:54 libGLU.so.1.3.050100*
lrwxrwxrwx 1 brian users 12 Sep 4 17:53 libglut.so -> libglut.so.3*
lrwxrwxrwx 1 brian users 16 Sep 4 17:53 libglut.so.3 -> libglut.so.3.7.1*
-rwxr-xr-x 1 brian users 2426683 Sep 4 17:53 libglut.so.3.7.1*
</pre>
<p>
<b>libGL</b> is the main OpenGL library (i.e. Mesa).
<br>
<b>libGLU</b> is the OpenGL Utility library.
<br>
<b>libglut</b> is the GLUT library.
</p>
<h3>1.3 Running the demos</h3>
<p>
If you downloaded/unpacked the MesaDemos-x.y.z.tar.gz archive or
obtained Mesa from CVS, the <b>progs/</b> directory will contain a
bunch of demonstration programs.
</p>
<p>
Before running a demo, you may have to set an environment variable
(such as <b>LD_LIBRARY_PATH</b> on Linux) to indicate where the
libraries are located. For example:
<p>
<blockquote>
<b>cd</b> into the Mesa <b>lib/</b> directory.
<br>
<b>setenv LD_LIBRARY_PATH ${cwd}</b> (if using csh or tcsh shell)
<br>
or,
<br>
<b>export LD_LIBRARY_PATH=${PWD}</b> (if using bash or sh shell)
</blockquote>
<p>
Next, change to the Mesa/demos/ directory:
</p>
<blockquote>
<b>cd ../progs/demos</b>
</blockquote>
<p>
Run a demo such as gears:
</p>
<blockquote>
<b>./gears</b>
</blockquote>
<p>
If this doesn't work, try the <b>Mesa/progs/xdemos/glxinfo</b> program
and see that it prints the expected Mesa version number.
</p>
<p>
If you're using Linux or a similar OS, verify that the demo program is
being linked with the proper library files:
</p>
<blockquote>
<b>ldd gears</b>
</blockquote>
<p>
You should see something like this:
</p>
<pre>
libglut.so.3 => /home/brian/Mesa/lib/libglut.so.3 (0x40013000)
libGLU.so.1 => /home/brian/Mesa/lib/libGLU.so.1 (0x40051000)
libGL.so.1 => /home/brian/Mesa/lib/libGL.so.1 (0x400e0000)
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
libm.so.6 => /lib/i686/libm.so.6 (0x403da000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x403fc000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x404da000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404f1000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40543000)
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4054b000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x405fd000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40605000)
libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40613000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libdl.so.2 => /lib/libdl.so.2 (0x40644000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40647000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40650000)
</pre>
<p>
Retrace your steps if this doesn't look right.
</p>
<H3>1.4 Installing the header and library files</H3>
<p>
The standard location for the OpenGL header files on Unix-type systems is
in <code>/usr/include/GL/</code>.
The standard location for the libraries is <code>/usr/lib/</code>.
For more information see, the
<a href="http://oss.sgi.com/projects/ogl-sample/ABI/" target="_parent">
Linux/OpenGL ABI specification</a>.
</p>
<p>
If you'd like Mesa to co-exist with another implementation of OpenGL that's
already installed, you'll have to choose different directories, like
<code>/usr/local/include/GL/</code> and <code>/usr/local/lib/</code>.
</p>
<p>
To install the Mesa headers, do this:
<blockquote>
<b>cp -r include/GL /usr/include</b>
</blockquote>
<p>
To install the Mesa libraries, do this:
</p>
<blockquote>
<b>cp -pd lib/* /usr/lib</b>
<br>
(The -pd options preserve symbolic links)
</blockquote>
<p>
If you install the libraries in a non-standard location you can use
LD_LIBRARY_PATH (on Linux) to switch between the Mesa libs and another
vendor libs whenever you want.
This is a handy way to compare multiple OpenGL implementations.
</p>
<a name="windows">
<H2>2. Windows Compilation and Installation</H1>
<p>
Please see the <a href="README.WIN32">README.WIN32</a> file.
</p>
<a name="vms">
<H2>3. VMS Compilation and Installation</H1>
<p>
Please see the <a href="README.VMS">README.VMS</a> file.
</p>
<a name="other">
<H2>4. Other systems</H1>
<p>
Documentation for other environments (some may be very out of date):
</p>
<UL>
<LI><A HREF="README.GGI">README.GGI</A> - GGI
<LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver
<LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin
<LI><A HREF="README.BEOS">README.BEOS</A> - BeOS
<LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver
<LI><A HREF="README.DJ">README.DJ</A> - DJGPP
<LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS
<LI><A HREF="README.MINGW32">README.MINGW32</A> - Mingw32
<LI><A HREF="README.NeXT">README.NeXT</A> - NeXT
<LI><A HREF="README.OpenStep">README.OpenStep</A> - OpenStep
<LI><A HREF="README.OS2">README.OS2</A> - OS/2
<LI><A HREF="README.WINDML">README.WINDML</A> - WindML
</UL>
</body>
</html>

View File

@@ -1,256 +0,0 @@
<HTML>
<TITLE>Mesa Introduction</TITLE>
<BODY text="#000000" bgcolor="#55bbff">
<H1>Introduction</H1>
<p>
Mesa is a 3-D graphics library with an API which is very similar to
that of <a href="http://www.opengl.org/" target="_parent">OpenGL</a>.*
To the extent that Mesa utilizes the OpenGL command syntax or state
machine, it is being used with authorization from <a
href="http://www.sgi.com/" target="_parent">Silicon Graphics,
Inc.</a>(SGI). However, the author does not possess an OpenGL license
from SGI, and makes no claim that Mesa is in any way a compatible
replacement for OpenGL or associated with SGI. Those who want a
licensed implementation of OpenGL should contact a licensed
vendor.
</p>
<p>
Please do not refer to the library as <em>MesaGL</em> (for legal
reasons). It's just <em>Mesa</em> or <em>The Mesa 3-D graphics
library</em>. <br>
</p>
<p>
* OpenGL is a trademark of <a href="http://www.sgi.com/"
target="_parent">Silicon Graphics Incorporated</a>.
</p>
<H1>Project History</H1>
<p>
The Mesa project was founded by me, Brian Paul. Here's a short history
of the project.
</p>
<p>
August, 1993: I begin working on Mesa in my spare time. The project
has no name at that point. I was simply interested in writing a simple
3D graphics library that used the then-new OpenGL API. I was partially
inspired by the <em>VOGL</em> library which emulated a subset of IRIS GL.
I had been programming with IRIS GL since 1991.
</p>
<p>
November 1994: I contact SGI to ask permission to distribute my OpenGL-like
graphics library on the internet. SGI was generally receptive to the
idea and after negotiations with SGI's legal department, I get permission
to release it.
</p>
<p>
February 1995: Mesa 1.0 is released on the internet. I expected that
a few people would be interested in it, but not thousands.
I was soon receiving patches, new features and thank-you notes on a
daily basis. That encouraged me to continue working on Mesa. The
name Mesa just popped into my head one day. SGI had asked me not to use
the terms <em>"Open"</em> or <em>"GL"</em> in the project name and I didn't
want to make up a new acronym. Later, I heard of the Mesa programming
language and the Mesa spreadsheet for NeXTStep.
</p>
<p>
In the early days, OpenGL wasn't available on too many systems.
It even took a while for SGI to support it across their product line.
Mesa filled a big hole during that time.
For a lot of people, Mesa was their first introduction to OpenGL.
I think SGI recognized that Mesa actually helped to promote
the OpenGL API, so they didn't feel threatened by the project.
</p>
<p>
1995-1996: I continue working on Mesa both during my spare time and during
my work hours at the Space Science and Engineering Center at the University
of Wisconsin in Madison. My supervisor, Bill Hibbard, lets me do this because
Mesa is now being using for the <a href="http://www.ssec.wisc.edu/%7Ebillh/vis.html" target="_parent">Vis5D</a> project.
</p><p>
October 1996: Mesa 2.0 is released. It implementes the OpenGL 1.1 specification.
</p>
<p>
March 1997: Mesa 2.2 is released. It supports the new 3dfx Voodoo graphics
card via the Glide library. It's the first really popular hardware OpenGL
implementation for Linux.
</p>
<p>
September 1998: Mesa 3.0 is released. It's the first publicly-available
implementation of the OpenGL 1.2 API.
</p>
<p>
March 1999: I attend my first OpenGL ARB meeting. I contribute to the
development of several official OpenGL extensions over the years.
</p>
<p>
September 1999: I'm hired by Precision Insight, Inc. Mesa is a key
component of 3D hardware acceleration in the new DRI project for XFree86.
Drivers for 3dfx, 3dLabs, Intel, Matrox and ATI hardware soon follow.
</p>
<p>
October 2001: Mesa 4.0 is released.
It implements the OpenGL 1.3 specification.
</p>
<p>
November 2001: I cofound <a href="http://www.tungstengraphics.com" target="_parent">
Tungsten Graphics, Inc.</a> with Keith Whitwell, Jens Owen, David Dawes and
Frank LaMonica.
I continue to develop Mesa as part of my resposibilities with Tungsten
Graphics and as a spare-time project.
</p>
<p>
November 2002: Mesa 5.0 is released.
It implements the OpenGL 1.4 specification.
</p>
<p>
Ongoing: Mesa is used as the core of many hardware OpenGL drivers for XFree86
within the
<A href="http://dri.sourceforge.net/" target="_parent">DRI project</A>.
I continue to enhance Mesa with new extensions and features.
</p>
<H1>Major Versions</H1>
<p>
This is a summary of the major versions of Mesa. Note that Mesa's major
version number tracks OpenGL's minor version number.
</p>
<H2>Version 5.x features</H2>
<p>
Version 5.x of Mesa implements the OpenGL 1.4 API with the following
extensions incorporated as standard features:
</p>
<ul>
<li>GL_ARB_depth_texture
<li>GL_ARB_shadow
<li>GL_ARB_texture_env_crossbar
<li>GL_ARB_texture_mirror_repeat
<li>GL_ARB_window_pos
<li>GL_EXT_blend_color
<li>GL_EXT_blend_func_separate
<li>GL_EXT_blend_logic_op
<li>GL_EXT_blend_minmax
<li>GL_EXT_blend_subtract
<li>GL_EXT_fog_coord
<li>GL_EXT_multi_draw_arrays
<li>GL_EXT_point_parameters
<li>GL_EXT_secondary_color
<li>GL_EXT_stencil_wrap
<li>GL_EXT_texture_lod_bias (plus, a per-texture LOD bias parameter)
<li>GL_SGIS_generate_mipmap
</ul>
<H2>Version 4.x features</H2>
<p>
Version 4.x of Mesa implements the OpenGL 1.3 API with the following
extensions incorporated as standard features:
</p>
<ul>
<li>GL_ARB_multisample
<li>GL_ARB_multitexture
<li>GL_ARB_texture_border_clamp
<li>GL_ARB_texture_compression
<li>GL_ARB_texture_cube_map
<li>GL_ARB_texture_env_add
<li>GL_ARB_texture_env_combine
<li>GL_ARB_texture_env_dot3
<li>GL_ARB_transpose_matrix
</ul>
<H2>Version 3.x features</H2>
<p>
Version 3.x of Mesa implements the OpenGL 1.2 API with the following
features:
</p>
<ul>
<li>BGR, BGRA and packed pixel formats
<li>New texture border clamp mode
<li>glDrawRangeElements()
<li>standard 3-D texturing
<li>advanced MIPMAP control
<li>separate specular color interpolation
</ul>
<H2>Version 2.x features</H2>
<p>
Version 2.x of Mesa implements the OpenGL 1.1 API with the following
features.
</p>
<ul>
<li>Texture mapping:
<ul>
<li>glAreTexturesResident
<li>glBindTexture
<li>glCopyTexImage1D
<li>glCopyTexImage2D
<li>glCopyTexSubImage1D
<li>glCopyTexSubImage2D
<li>glDeleteTextures
<li>glGenTextures
<li>glIsTexture
<li>glPrioritizeTextures
<li>glTexSubImage1D
<li>glTexSubImage2D
</ul>
<li>Vertex Arrays:
<ul>
<li>glArrayElement
<li>glColorPointer
<li>glDrawElements
<li>glEdgeFlagPointer
<li>glIndexPointer
<li>glInterleavedArrays
<li>glNormalPointer
<li>glTexCoordPointer
<li>glVertexPointer
</ul>
<li>Client state management:
<ul>
<li>glDisableClientState
<li>glEnableClientState
<li>glPopClientAttrib
<li>glPushClientAttrib
</ul>
<li>Misc:
<ul>
<li>glGetPointer
<li>glIndexub
<li>glIndexubv
<li>glPolygonOffset
</ul>
</ul>
</body>
</html>

View File

@@ -1,55 +0,0 @@
<HTML>
<TITLE>Libraries and Toolkits</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Libraries and Toolkits</H1>
<ul>
<li><a href="http://mrpowers.com/Apprentice/">Apprentice</a> - free OpenInventor work-alike
<li><a href="http://www.coin3d.org/coin.html" target="_parent">Coin</a> - OSS Open Inventor clone
<li><a href="http://www.softintegration.com/products/toolkit/opengl/" target="_parent">Ch</a> - OpenGL bindings for the Ch C/C++ interpreter
<li><a href="http://www.cfdrc.com/FOX/fox.html" target="_parent">FOX</a> - GUI Library
<li><a href="http://www.jausoft.com/gl4java.html" target="_parent">GL4Java</a> - a Java wrapper for OpenGL
<li><a href="http://www.student.oulu.fi/%7Ejlof/gtkglarea/" target="_parent">GtkGLArea</a> - OpenGL Gtk widget
<li><a href="http://www.ece.ucdavis.edu/%7Ekenelson/gtk-glarea/" target="_parent">GtkGLArea--</a> - OpenGL Gtk-- widget for C++
<li><a href="http://gtkpas.sourceforge.net/" target="_parent">GTKpas</a> - OpenGL Gtk widget for <a href="http://www.freepascal.org/" target="_parent">FreePascal</a>
<li><a href="http://freeglut.sourceforge.net/" target="_parent">FreeGLUT</a> - a GLUT work-alike
<li><a href="http://math.nist.gov/f90gl" target="_parent">Fortran77/90 bindings for OpenGL and Mesa</a> - by William Mitchell
<li><a href="http://glow.sourceforge.net/" target="_parent">GLOW</a> - a GUI toolkit for GLUT and OpenGL
<li><a href="http://www.nigels.com/glt/">Glt</a> - an OpenGL C++ toolkit
<li><a href="http://www.opengl.org/developers/documentation/glut/" target="_parent">GLUT (GL Utility Toolkit)</a> - by Mark Kilgard
<li><a href="http://atrey.karlin.mff.cuni.cz/%7E0rfelyus/guileGL/" target="_parent">GuileGL</a> - OpenGL and GtkGLArea language bindings for Guile
<li><a href="http://www.rsinc.com/" target="_parent">IDL</a> - Interactive Data Language
<li><a href="http://www.newplanetsoftware.com/jx/" target="_parent">JX</a> - C++ application framework and GUI library
<li><a href="http://www.vrs3d.org/" target="_parent">MAM/VRS</a> - object-oriented toolkit for 3D graphics
<li><a href="http://www.jwdt.com/%7Epaysan/bigforth.html" target="_parent">MINOS</a> - GUI library
<li><a href="http://sourceforge.net/project/?group_id=2795" target="_parent">OglCLib</a> - C++ wrapper for OpenGL
<li><a href="http://oss.sgi.com/projects/inventor" target="_parent"> Open Inventor</a> - the Open Inventor toolkit from SGI
<li><a href="http://www.tgs.com/" target="_parent">Open Inventor</a> - the Open Inventor toolkit from Template Graphics Software, Inc.
<li><a href="http://openrm.sourceforge.net/" target="_parent">OpenRM</a>
- Open Source, multithreaded, parallel scene graph API
<li><a href="http://www.opensg.org/OpenSGPLUS/index.EN.html" target="_parent">
Open SG PLUS</a> - a scene-graph library
<li><a href="http://www.openscenegraph.org/" target="_parent">Open Scene Graph
</a> - a scene-graph library
<li><a href="http://www.openvrml.org/" target="_parent">OpenVRML</a>
- a VRML parsing/display library with "lookat" - an example VRML browser
<li><a href="http://www.woodsoup.org/projs/plib" target="_parent">PLIB</a> - A collection of portable games libraries, including an OpenGL GUI and a simple Scene Graph API
<li><a href="ftp://ftp.troll.no/contest/Pryan-1.2.tar.gz" target="_parent">Pryan</a> - an OpenInventor-like toolkit
<li><a href="http://starship.python.net:9673/crew/da/Code/PyOpenGL" target="_parent">PyOpenGL</a> - OpenGL interface for Python
<li><a href="http://www.quesa.org/" target="_parent">Quesa</a> - QuickDraw3D-compatible library based on OpenGL, Mesa or Direct3D
<li><a href="http://www.mesa3d.org/brianp/repgl.txt" target="_parent">repGL</a> - IRIS GL emulated with OpenGL
<li><a href="http://www.scitechsoft.com/dp_mgl.html" target="_parent">SciTech MGL</a> - A multiplatform (Windows, Linux, OS/2, DOS, QNX, SMX, RT-Target &amp; more) graphics library
<li><a href="http://sgl.sourceforge.net/" target="_parent">SGL</a> - a 3D Scene Graph Library
<li><a href="http://www.lal.in2p3.fr/SI/SoFree/" target="_parent">SoFree</a> - a free implementation of Open Inventor
<li><a href="http://togl.sourceforge.net/" target="_parent">Togl</a> - Tcl/Tk widget for OpenGL
<li><a href="http://mesa3d.sourceforge.net/notfound.html">VLE</a> - Virtual Reality Toolkit
<li><a href="http://www.int.com/" target="_parent">View3D Widget</a> - 3-D GUI widget
<li><a href="http://www.kitware.com/vtk.html" target="_parent">VTK</a> - Visualization Toolkit
<li><a href="http://home.earthlink.net/%7Erzeh/YAJOGLB/doc/YAJOGLB.html" target="_parent">YAJOGL</a> - Yet Another Java GL Binding.
</ul>
</body></html>

View File

@@ -1,115 +0,0 @@
<HTML>
<TITLE>License / Cppyright Information</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>License / Copyright Information</H1>
<p>
The Mesa distribution consists of several components. Different copyrights
and licenses apply to different components. For example, GLUT is copyrighted
by Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa
device drivers are copyrighted by their authors. See below for a list of
Mesa's components and the copyright/license for each.
</p>
<p>
The core Mesa library is licensed according to the terms of the XFree86
copyright (an MIT-style license). This allows integration with the
XFree86/DRI project. Unless otherwise stated, the Mesa source code and
documentation is licensed as follows:
</p>
<pre>
Copyright (C) 1999-2003 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.
</pre>
<H1>Attention, Contributors</H1>
<p>
When contributing to the Mesa project you must agree to relinquish your
work to the holder of the copyright for the particular component you're
contributing to. That is, you can't put your own copyright on the code,
unless it's a modular piece that can be omitted from Mesa (like a new
device driver). If for example, you contribute a bug fix to Mesa's
texture mapping code, your code will become a part of the body of work
which is copyrighted by Brian Paul and licensed by the above terms.
</p>
<pre>
Mesa Component Licenses:
Component Files Primary Author License
----------------------------------------------------------------------------
core Mesa code src/*.[ch] Brian Paul Mesa
include/GL/gl.h
GLX driver src/X/* Brian Paul Mesa
include/GL/glx.h
include/GL/xmesa.h
OS/Mesa driver src/OSmesa/* Brian Paul Mesa
include/GL/osmesa.h
3Dfx driver src/FX/* David Bucciarelli Mesa
include/GL/fxmesa.h
BeOS R4 driver src/BeOS/* Brian Paul Mesa
MGL driver src/MGL/* SciTech, Inc SciTech copyright
include/GL/mglmesa.h
Windows driver src/Windows/* Li Wei copyright by Li Wei
include/GL/wmesa.h
SVGA driver src/SVGA/* Brian Paul GNU-LGPL
include/GL/svgamesa.h
DOS driver src/DOS/* Charlie Wallace GNU-LGPL
include/GL/dosmesa.h
GGI driver src/GGI/* Uwe Maurer GNU-LGPL
include/GL/ggimesa.h
S3 driver src/S3/* S3, Inc. S3 copyright
GLUT src-glut/* Mark Kilgard Mark's copyright
include/GL/*glut*.h
GLU library src-glu/* Brian Paul GNU-LGPL
SI GLU library si-glu/* SGI SGI Free B
include/GL/glu.h
Ext registry include/GL/glext.h SGI SGI Free B
include/GL/glxext.h
demo programs demos/* various see source files
X demos xdemos/* Brian Paul see source files
SGI demos samples/* SGI SGI copyright
RedBook demos book/* SGI SGI copyright
</pre>
</body>
</html>

View File

@@ -1,51 +0,0 @@
<HTML>
<TITLE>Mesa Mailing Lists</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Mailing Lists</H1>
<p>There are four Mesa mailing lists:</p>
<ul>
<li><b>mesa3d-users</b> - intended for users of the Mesa library.
Newbie questions are appropriate, but please try reading the Mesa documentation first.
</li><li><b>mesa3d-dev</b> - intended for developers of the Mesa library.
This is not for beginners.
</li><li><b>mesa3d-cvs</b> - CVS check-in messages are sent to this list.
This is useful for tracking ongoing development changes.
</li><li><b>mesa3d-announce</b> - announcements of new Mesa versions are sent to this list.
</li></ul>
<p>
To subscribe or unsubscribe, go to the
<a href="http://www.sourceforge.net/mail/?group_id=3" target="_parent">
SourceForge lists page.</a>
</p>
<p>The mailing lists are managed by SourceForge. If you're having trouble
with the mailing lists please contact the SourceForge administrators for help.</p>
<p>Archives of the old Mesa mailing list which was hosted by unicamp.br
are available <a href="http://groups.yahoo.com/group/mesa/messages/">here</a>.</p>
<p>
Here are some other OpenGL-related forums you might find useful:
</p>
<p>
Usenet newsgroups:
<ul>
<li>comp.graphics.algorithms
<li>comp.graphics.api.opengl
<li>comp.os.linux.x
</ul>
</p>
<p>
<a href="http://www.opengl.org/">OpenGL discussion forums</A> at www.opengl.org
</p>
</HTML>
</BODY>

View File

@@ -1,26 +0,0 @@
<HTML>
<TITLE>Function Name Mangling</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Function Name Mangling</H1>
<p>
If you want to use Mesa and native OpenGL in the same application at
the same time you may find it useful to compile Mesa with
<i>name mangling</i>.
This results in all the Mesa functions being prefixed with
<b>mgl</b> instead of <b>gl</b>.
</p>
<p>
To do this, recompile Mesa with the compiler flag -DUSE_MGL_NAMESPACE.
Add the flag to the other compiler flags in Make-config (if using the
old-style build system) or in src/Makefile if using GNU autoconf/
automake to build Mesa.
</p>
</BODY>
</HTML>

View File

@@ -1,70 +0,0 @@
<HTML>
<TITLE>Modelers, Renderers and Viewers</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Modelers, Renderers and Viewers</H1>
<ul>
<li><a href="http://www.ac3d.org/" target="_parent">AC3D</a> - 3-D modeler
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">ARCAD</a> - CAD program
</li><li><a href="http://www.mediascape.com/" target="_parent">Artstream</a> - provides
functionality like Corel Draw and Illustrator
</li><li><a href="http://www.blender.nl/" target="_parent">Blender</a> - 3-D animation
software
</li><li><a href="http://www.bmrt.org/" target="_parent">BMRT</a> - Blue Moon Rendering
Tools
</li><li><a href="http://www.arq.net/%7Ekasten/demtools/" target="_parent">Demtools</a>
- Map viewer
</li><li><a href="http://www.holometric.de/dimension/" target="_parent">DIMENSION</a>
- freeform surface reconstruction
</li><li><a href="http://www.vectaport.com/vhclmaps/demviewer.html" target="_parent">demviewer</a>
- interactive terrain viewer
</li><li><a href="http://www.crc.ca/FreeWRL" target="_parent">FreeWRL</a> - VRML browser
</li><li><a href="http://www.geomview.org/" target="_parent">Geomview</a> - 3-D geometry
exploration
</li><li><a href="http://innovation3d.sourceforge.net/" target="_parent">Innovation3D</a>
- 3D modeling program
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html" target="_parent">KWRL</a> - VRML browser
</li><li><a href="http://www.vermontel.com/%7Ecmorley/vrml.html" target="_parent">LibVRML97/Lookat</a>
- VRML viewer
</li><li><a href="http://aig.cs.man.ac.uk/systems/Maverik/" target="_parent">Maverik</a>
- VR graphics and interaction system
</li><li><a href="http://www.swissquake.ch/chumb.alum-soft" target="_parent">MD2 Viewer</a>
- View .MD2 files
</li><li><a href="http://www.megacads.dlr.de/" target="_parent">MegaCads</a>
- Multiblock-Elliptic-Grid-Generation-And-CAD-System
</li><li><a href="http://www.swissquake.ch/chumbalum-soft/" target="_parent">MilkShape
3D</a> - 3D modeler/animator
</li><li><a href="http://mindseye.sourceforge.net/" target="_parent">Mindseye</a> - Rendering/Modeling
Package
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">Moonlight Atelier</a> - modeling and rendering package
</li><li><a href="http://www.bittco.com/" target="_parent">NetReality</a> - Virtual Reality
web organizer
</li><li><a href="http://www.sim.no/reducer.html" target="_parent">Rational Reducer</a>
- polygon reduction tool
</li><li><a href="http://www.cs.kuleuven.ac.be/cwis/research/graphics/RENDERPARK/" target="_parent">RenderPark</a>
- photorealistic rendering
</li><li><a href="http://www.hardgeus.com/revolution" target="_parent">Revolution 3D Engine</a>
- .3ds rendering engine
</li><li><a href="http://www.dgp.toronto.edu/%7Emjmcguff/eversion/" target="_parent">sphereEversion</a>
- inside-out sphere visualization
</li><li><a href="http://www.cs.kuleuven.ac.be/cwis/research/graphics/3DOM/" target="_parent">3Dom</a>
- 3-D modeler
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">3D Studio file viewer</a> - by David Farrell
</li><li><a href="http://www.microform.se/" target="_parent">VARKON</a> - product engineering,
design, modeling
</li><li><a href="http://www.sim.no/vrmlview.html" target="_parent">VRMLview</a> - VRML
model viewer
</li><li><a href="http://www.iicm.edu/vrwave/" target="_parent">VRWave</a> - a VRML 2.0
browser
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">VRweb</a> - VRML browser
</li><li><a href="http://www.csv.ica.uni-stuttgart.de/vrml/dune/" target="_parent">white_dune</a>
- graphical VRML97 Editor and animation tool
</li><li><a href="http://www.wings3d.org/" target="_parent">Wings 3D</a> - static 3D modeller
with VRML export. Uses SDL library.
</li></ul>
</body></html>

View File

@@ -1,678 +0,0 @@
<HTML>
<TITLE>Mesa News</TITLE>
<BODY text="#000000" bgcolor="#55bbff">
<H1>News</H1>
<h2>September 5, 2003</h2>
<p>
Mesa 5.0.2 has been released. This is a stable, bug-fix release.
</p>
<pre>
Bug fixes:
- fixed texgen problem causing texcoord's Q to be zero (stex3d)
- default GL_TEXTURE_COMPARE_MODE_ARB was wrong
- GL_CURRENT_MATRIX_NV query was wrong
- GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one
- GL_LIST_MODE query wasn't correct
- GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported
- GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value
- blended, wide lines didn't always work correctly (bug 711595)
- glVertexAttrib4svNV w component was always 1
- fixed bug in GL_IBM_rasterpos_clip (missing return)
- GL_DEPTH_TEXTURE_MODE = GL_ALPHA didn't work correctly
- a few Solaris compilation fixes
- fixed glClear() problem for DRI drivers (non-existant stencil, etc)
- fixed int/REAL mixup in GLU NURBS curve evaluator (Eric Cazeaux)
- fixed delete [] bug in SI GLU (bug 721765) (Diego Santa Cruz)
- glFog() didn't clamp fog colors
- fixed bad float/int conversion for GL_TEXTURE_PRIORITY in the
gl[Get]TexParameteri[v] functions
- fixed invalid memory references in glTexGen functions (bug 781602)
- integer-valued color arrays weren't handled correctly
- glDrawPixels(GL_DEPTH_COMPONENT) with glPixelZoom didn't work
- GL_EXT_texture_lod_bias is part of 1.4, overlooked in 5.0.1
Changes:
- build GLUT with -fexceptions so C++ apps propogate exceptions
</pre>
<p>
MD5 checksums follow:
</p>
<pre>
2deb4176e7a06a0477ae31cadd55444b MesaLib-5.0.2.tar.gz
dc147598ebdff4312260a7f79b3c5c9c MesaLib-5.0.2.tar.bz2
1eb0fa7079131efef574e3bda328b8c8 MesaLib-5.0.2.zip
e0dc86e9417620e794968641403604d4 MesaDemos-5.0.2.tar.gz
a71afaeddd0b567423f88085576850d3 MesaDemos-5.0.2.tar.bz2
32fbf1925cf45f548468ddda96087828 MesaDemos-5.0.2.zip
</pre>
<h2>June 2003</h2>
<p>
Mesa's directory tree has been overhauled.
Things are better organized now with some thought toward future needs.
</p>
<p>
In CVS, the latest Mesa 5.1 development code is now rooted under the
<b>Mesa-newtree/</b> directory. The old top-level <b>Mesa/</b> directory
holds the Mesa 5.0.x code which will be abandoned at some point.
</p>
<h2>March 30, 2003</h2>
<p>
Mesa 5.0.1 has been released. This is a stable, bug-fix release.
</p>
<pre>
New:
- DOS driver updates from Daniel Borca
- updated GL/gl_mangle.h file (Bill Hoffman)
Bug fixes:
- auto mipmap generation for cube maps was broken (bug 641363)
- writing/clearing software alpha channels was unreliable
- minor compilation fixes for OS/2 (Evgeny Kotsuba)
- fixed some bad assertions found with shadowtex demo
- fixed error checking bug in glCopyTexSubImage2D (bug 659020)
- glRotate(angle, -x, 0, 0) was incorrect (bug 659677)
- fixed potential segfault in texture object validation (bug 659012)
- fixed some bogus code in _mesa_test_os_sse_exception_support (Linus)
- fix fog stride bug in tnl code for h/w drivers (Michel Danzer)
- fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080)
- glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3
- fixed compilation problem on Solaris7/x86 (bug 536406)
- fixed prefetch bug in 3DNow! code (Felix Kuhling)
- fixed NeXT build problem (FABSF macro)
- glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811)
- zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964)
- AA line and triangle Z values are now rounded, not truncated
- fixed color interpolation bug when GLchan==GLfloat (bug 694461)
- glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca)
- fixed a minor GL_COLOR_MATERIAL bug
- NV vertex program EXP instruction was broken
- glColorMask misbehaved with X window / pixmap rendering
- fix autoconf/libtool GLU C++ linker problem on Linux (a total hack)
- attempt to fix GGI compilation problem when MesaDemos not present
- NV vertex program ARL-relative fetches didn't work
Changes:
- use glPolygonOffset in gloss demo to avoid z-fighting artifacts
- updated winpos and pointblast demos to use ARB extensions
- disable SPARC normal transformation code (bug 673938)
- GLU fixes for OS/2 (Evgeny Kotsuba)
</pre>
<p>
MD5 checksums follow:
</p>
<pre>
b80f8b5d53a3e9f19b9fde5af0c542f0 MesaLib-5.0.1.tar.gz
513b4bbd7d38951f05027179063d876b MesaLib-5.0.1.tar.bz2
eebd395678f4520d33b267e5d5c22651 MesaLib-5.0.1.zip
49d7feaec6dc1d2091d7c3cc72a9b320 MesaDemos-5.0.1.tar.gz
37190374a98c3c892f0698be9ca3acf0 MesaDemos-5.0.1.tar.bz2
becd8bf17f5791361b4a54ba2a78e5c9 MesaDemos-5.0.1.zip
</pre>
<h2>March 7, 2003</h2>
<p>
Website and documentation overhaul.
</p>
<p>
The website content and Mesa documentation (from the doc/ directory) have
been merged together.
All the documentation files have been entered into the CVS repository.
Many of the old plain-text files have been converted to html and modernized.
</p>
<h2>November 13, 2002</h2>
<p>Mesa 5.0 has been released. This is a stable release which
implements the OpenGL 1.4 specification.
</p><pre>New:
- OpenGL 1.4 support (glGetString(GL_VERSION) returns "1.4")
- removed some overlooked debugging code
- glxinfo updated to support GLX_ARB_multisample
- GLUT now support GLX_ARB_multisample
- updated DOS driver (Daniel Borca)
Bug fixes:
- GL_POINT and GL_LINE-mode polygons didn't obey cull state
- fixed potential bug in _mesa_align_malloc/calloc()
- fixed missing triangle bug when running vertex programs
- fixed a few HPUX compilation problems
- FX (Glide) driver didn't compile
- setting GL_TEXTURE_BORDER_COLOR with glTexParameteriv() didn't work
- a few EXT functions, like glGenTexturesEXT, were no-ops
- a few OpenGL 1.4 functions like glFogCoord*, glBlendFuncSeparate,
glMultiDrawArrays and glMultiDrawElements were missing
- glGet*(GL_ACTIVE_STENCIL_FACE_EXT) was broken
- Pentium 4 Mobile was mistakenly identified as having 3DNow!
- fixed one-bit error in point/line fragment Z calculation
- fixed potential segfault in fakeglx code
- fixed color overflow problem in DOT3 texture env mode
</pre>
<h2>October 29, 2002</h2>
<p>Mesa 4.1 has been released. This is a new development release.
For a stable release, get 4.0.4.
</p><pre>New:
- GL_NV_vertex_program extension
- GL_NV_vertex_program1_1 extension
- GL_ARB_window_pos extension
- GL_ARB_depth_texture extension
- GL_ARB_shadow extension
- GL_ARB_shadow_ambient extension
- GL_EXT_shadow_funcs extension
- GL_ARB_point_parameters extension
- GL_ARB_texture_env_crossbar
- GL_NV_point_sprite extension
- GL_NV_texture_rectangle extension
- GL_EXT_multi_draw_arrays extension
- GL_EXT_stencil_two_side extension
- GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions
- GL_ATI_texture_mirror_once extension (Ian Romanick)
- massive overhaul/simplification of software rasterizer module,
many contributions from Klaus Niederkrueger
- faster software texturing in some cases (i.e. trilinear filtering)
- new OSMesaGetProcAddress() function
- more blend modes implemented with MMX code (Jose Fonseca)
- added glutGetProcAddress() to GLUT
- added GLUT_FPS env var to compute frames/second in glutSwapBuffers()
- pbinfo and pbdemo PBuffer programs
- glxinfo -v prints transprent pixel info (Gerd Sussner)
Bug fixes:
- better mipmap LOD computation (prevents excessive blurriness)
- OSMesaMakeCurrent() didn't recognize buffer size changes
- assorted conformance fixes for 16-bit/channel rendering
- texcombine alpha subtraction mode was broken
- fixed some blend problems when GLchan==GLfloat (Gerk Huisma)
- clamp colors to [0,1] in OSMesa if GLchan==GLfloat (Gerk Huisma)
- fixed divide by zero error in NURBS tessellator (Jon Perry)
- fixed GL_LINEAR fog bug by adding clamping
- fixed FP exceptions found using Alpha CPU
- 3dfx/glide driver render-to-window feature was broken
- added missing GLX_TRANSPARENT_RGB token to glx.h
- fixed error checking related to paletted textures
- fixed reference count error in glDeleteTextures (Randy Fayan)
Changes:
- New spec file and Python code to generate some GL dispatch files
- Glide driver defaults to "no" with autoconf/automake
- floating point color channels now clamped to [0,inf)
- updated demos/stex3d with new options
</pre>
<h2>October 4, 2002</h2>
<p>
The <a href="http://mesa3d.sourceforge.net/docs/MesaFAQ.html">Mesa FAQ</a> has been rewritten.
</p>
<h2>October 3, 2002</h2>
<p>Mesa 4.0.4 has been released. This is a stable bug-fix release.
</p><pre> New:
- GL_NV_texture_rectangle extension
- updated glext.h header (version 17)
- updated DOS driver (Daniel Borca)
- updated BeOS R5 driver (Philippe Houdoin)
- added GL_IBM_texture_mirror_repeat
- glxinfo now takes -l option to print interesting OpenGL limits info
- GL_MESA_ycbcr_texture extension
- GL_APPLE_client_storage extension (for some DRI drivers only)
- GL_MESA_pack_invert extension
Bug fixes:
- fixed GL_LINEAR fog bug by adding clamping
- fixed FP exceptions found using Alpha CPU
- 3dfx MESA_GLX_FX=window (render to window) didn't work
- fixed memory leak in wglCreateContest (Karl Schultz)
- define GLAPIENTRY and GLAPI if undefined in glu.h
- wglGetProcAddress didn't handle all API functions
- when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map
- removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc()
- error checking in compressed tex image functions had some glitches
- fixed AIX compile problem in src/config.c
- glGetTexImage was using pixel unpacking instead of packing params
- auto-mipmap generation for cube maps was incorrect
Changes:
- max texture units reduced to six to accomodate texture rectangles
- removed unfinished GL_MESA_sprite_point extension code
</pre>
<h2>June 25, 2002</h2>
<p>Mesa 4.0.3 has been released. This is a stable bug-fix release.
</p><pre> New:
- updated GL/glext.h file (version 15)
- corrected MMX blend code (Jose Fonseca)
- support for software-based alpha planes in Windows driver
- updated GGI driver (Filip Spacek)
Bug fixes:
- glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens
- OSMesaMakeCurrent() didn't recognize buffer size changes
- assorted conformance fixes for 16-bit/channel rendering
- texcombine alpha subtraction mode was broken
- fixed lighting bug with non-uniform scaling and display lists
- fixed bug when deleting shared display lists
- disabled SPARC cliptest assembly code (Mesa bug 544665)
- fixed a couple Solaris compilation/link problems
- blending clipped glDrawPixels didn't always work
- glGetTexImage() didn't accept packed pixel types
- glPixelMapu[is]v() could explode given too large of pixelmap
- glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT
- glXCopyContext() could lead to segfaults
- glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665)
Changes:
- lots of C++ (g++) code clean-ups
- lots of T&amp;L updates for the Radeon DRI driver
Known bugs:
- mipmap LOD computation (fixed for Mesa 4.1)
</pre>
<h2>April 2, 2002</h2>
<p>Mesa 4.0.2 has been released. This is a stable bug-fix release.
</p><pre> New:
- New DOS (DJGPP) driver written by Daniel Borca
- New driver interface functions for TCL drivers (such as Radeon DRI)
- GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32"
if using deep color channels
- latest GL/glext.h and GL/glxext.h headers from SGI
Bug fixes:
- GL_BLEND with non-black texture env color wasn't always correct
- GL_REPLACE with GL_RGB texture format wasn't always correct (alpha)
- glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken
- glReadPixels was sometimes mistakenly clipped by the scissor box
- glDraw/ReadPixels didn't catch all the errors that they should have
- Fixed 24bpp rendering problem in Windows driver (Karl Schultz)
- 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c)
- Fixed 1-bit float-&gt;int conversion bug in glDrawPixels(GL_DEPTH_COMP)
- glColorMask as sometimes effecting glXSwapBuffers()
- fixed a potential bug in XMesaGarbageCollect()
- N threads rendering into one window didn't work reliably
- glCopyPixels didn't work for deep color channels
- improved 8 -&gt; 16bit/channel texture image conversion (Gerk Huisma)
- glPopAttrib() didn't correctly restore user clip planes
- user clip planes failed for some perspective projections (Chromium)
</pre>
<h2>December 17, 2001</h2>
<p>Mesa 4.0.1 has been released. This is a stable bug-fix release.
</p><pre> New:
- better sub-pixel sample positions for AA triangles (Ray Tice)
- slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO)
Bug fixes:
- added missing break statements in glGet*() for multisample cases
- fixed uninitialized hash table mutex bug (display lists / texobjs)
- fixed bad teximage error check conditional (bug 476846)
- fixed demos readtex.c compilation problem on Windows (Karl Schultz)
- added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT
- silence some compiler warnings (gcc 2.96)
- enable the #define GL_VERSION_1_3 in GL/gl.h
- added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h
- fixed glu.h typedef problem found with MSDev 6.0
- build libGL.so with -Bsymbolic (fixes bug found with Chromium)
- added missing 'const' to glXGetContextIDEXT() in glxext.h
- fixed a few glXGetProcAddress() errors (texture compression, etc)
- fixed start index bug in compiled vertex arrays (Keith)
- fixed compilation problems in src/SPARC/glapi_sparc.S
- fixed triangle strip "parity" bug found in VTK medical1 demo (Keith)
- use glXGetProcAddressARB in GLUT to avoid extension linking problems
- provoking vertex of flat-shaded, color-index triangles was wrong
- fixed a few display list bugs (GLUT walker, molecule, etc) (Keith)
- glTexParameter didn't flush the vertex buffer (Ray Tice)
- feedback attributes for glDraw/CopyPixels and glBitmap were wrong
- fixed bug in normal length caching (ParaView lighting bug)
</pre>
<h2>October 22, 2001</h2>
<p>Mesa 4.0 has been released. This is a stable release.
</p><pre> New:
- Mesa 4.0 implements the OpenGL 1.3 specification
- GL_IBM_rasterpos_clip extension
- GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp)
- GL_ARB_texture_mirrored_repeat extension
- WindML UGL driver (Stephane Raimbault)
- added OSMESA_MAX_WIDTH/HEIGHT queries
- attempted compiliation fixes for Solaris 5, 7 and 8
- updated glext.h and glxext.h files
- updated Windows driver (Karl Schultz)
Bug fixes:
- added some missing GLX 1.3 tokens to include/GL/glx.h
- GL_COLOR_MATRIX changes weren't recognized by teximage functions
- glCopyPixels with scale and bias was broken
- glRasterPos with lighting could segfault
- glDeleteTextures could leave a dangling pointer
- Proxy textures for cube maps didn't work
- fixed a number of 16-bit color channel bugs
- fixed a few minor memory leaks
- GLX context sharing was broken in 3.5
- fixed state-update bugs in glPopClientAttrib()
- fixed glDrawRangeElements() bug
- fixed a glPush/PopAttrib() bug related to texture binding
- flat-shaded, textured lines were broken
- fixed a dangling pointer problem in the XMesa code (Chris Burghart)
- lighting didn't always produce the correct alpha value
- fixed 3DNow! code to not read past end of arrays (Andrew Lewycky)
</pre>
<h2>June 21, 2001</h2>
<p>Mesa 3.5 has been released. This is a new development release.
</p><pre> New:
- internals of Mesa divided into modular pieces (Keith Whitwell)
- 100% OpenGL 1.2 conformance (passes all conformance tests)
- new AA line algorithm
- GL_EXT_convolution extension
- GL_ARB_imaging subset
- OSMesaCreateContextExt() function
- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
- GL_MAX_TEXTURE_UNITS_ARB now defaults to eight
- GL_EXT_fog_coord extension (Keith Whitwell)
- GL_EXT_secondary_color extension (Keith Whitwell)
- GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
- GL_SGIX_depth_texture extension
- GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
- demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
- GL_ARB_texture_env_combine extension
- GL_ARB_texture_env_dot3 extension
- GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp)
- OSMesaCreateContextExt() function
- libOSMesa.so library, contains the OSMesa driver interface
- GL/glxext.h header file for GLX extensions
- somewhat faster software texturing, fogging, depth testing
- all color-index conformance tests now pass (only 8bpp tested)
- SPARC assembly language TCL optimizations (David Miller)
- GL_SGIS_generate_mipmap extension
Bug Fixes:
- fbiRev and tmuRev were unitialized when using Glide3
- fixed a few color index mode conformance failures; all pass now
- now appling antialiasing coverage to alpha after texturing
- colors weren't getting clamped to [0,1] before color table lookup
- fixed RISC alignment errors caused by COPY_4UBV macro
- drawing wide, flat-shaded lines could cause a segfault
- vertices now snapped to 1/16 pixel to fix rendering of tiny triangles
Changes:
- SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU
- new libOSMesa.so library, contains the OSMesa driver interface
</pre>
<h2>May 17, 2001</h2>
<p>Mesa 3.4.2 has been released. This is basically just a bug-fix release.
Here's what's new:</p>
<pre> Bug fixes:
- deleting the currently bound texture could cause bad problems
- using fog could result in random vertex alpha values
- AA triangle rendering could touch pixels outside right window bound
- fixed byteswapping problem in clear_32bit_ximage() function
- fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
- fixed memory leak in glXUseXFont()
- fragment sampling in AA triangle function was off by 1/2 pixel
- Windows: reading pixels from framebuffer didn't always work
- glConvolutionFilter2D could segfault or cause FP exception
- fixed segfaults in FX and X drivers when using tex unit 1 but not 0
- GL_NAND logicop didn't work right in RGBA mode
- fixed a memory corruption bug in vertex buffer reset code
- clearing the softwara alpha buffer with scissoring was broken
- fixed a few color index mode fog bugs
- fixed some bad assertions in color index mode
- fixed FX line 'stipple' bug #420091
Changes:
- optimized writing mono-colored pixel spans to X pixmaps
- increased max viewport size to 2048 x 2048
</pre>
<h2>April 29, 2001</h2>
<p>New Mesa website</p>
<p>Mark Manning produced the new website.<br>Thanks, Mark!</p>
<h2>February 14, 2001</h2>
<p>Mesa 3.4.1 has been released. Here's what's new:</p>
<pre> New:
- fixed some Linux build problems
- fixed some Windows build problems
- GL_EXT_texture_env_dot3 extension (Gareth Hughes)
Bug fixes:
- added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI
- various state-update code changes needed for DRI bugs
- disabled pixel transfer ops in glColorTable commands, not needed
- fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter
- updated sources and fixed compile problems in widgets-mesa/
- GLX_PBUFFER enum value was wrong in glx.h
- fixed a glColorMaterial lighting bug
- fixed bad args to Read/WriteStencilSpan in h/w stencil clear function
- glXCopySubBufferMESA() Y position was off by one
- Error checking of glTexSubImage3D() was broken (bug 128775)
- glPopAttrib() didn't restore all derived Mesa state correctly
- Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL
conformance problems at 16bpp.
- clearing depth buffer with scissoring was broken, would segfault
- OSMesaGetDepthBuffer() returned bad bytesPerValue value
- fixed a line clipping bug (reported by Craig McDaniel)
- fixed RGB color over/underflow bug for very tiny triangles
Known problems:
- NURBS or evaluator surfaces inside display lists don't always work
</pre>
<p>
</p><h2>November 3, 2000</h2>
<p>Mesa 3.4 has been released. Here's what's new since the 3.3 release:</p>
<pre> New:
- optimized glDrawPixels for glPixelZoom(1,-1)
Bug Fixes:
- widgets-mesa/src/*.c files were missing from 3.3 distro
- include/GL/mesa_wgl.h file was missing from 3.3 distro
- fixed some Win32 compile problems
- texture object priorities weren't getting initialized to 1.0
- glAreTexturesResident return value was wrong when using hardware
- glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX)
- glReadPixels with GLushort packed types was broken
- fixed a few bugs in the GL_EXT_texture_env_combine texture code
- glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables
- fixed some typos/bugs in the VB code
- glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work
- optimized glDrawPixels paths weren't being used
- per-fragment fog calculation didn't work without a Z buffer
- improved blending accuracy, fixes Glean blendFunc test failures
- glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly
- glXGetProcAddressARB() didn't always return the right address
- gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format
- texture matrix changes weren't always detected (GLUT projtex demo)
- fixed random color problem in vertex fog code
- fixed Glide-related bug that let Quake get a 24-bit Z buffer
Changes:
- finished internal support for compressed textures for DRI
</pre>
<p>
</p><h2>April 24, 2000</h2>
<p>Mesa 3.2 has been released. Here's what's new since the beta release:</p>
<pre> Bug fixes:
- fixed memcpy bugs in span.c
- fixed missing glEnd problem in demos/tessdemo.c
- fixed bug when clearing 24bpp Ximages
- fixed clipping problem found in Unreal Tournament
- fixed Loki's "ice bug" and "crazy triangles" seen in Heretic2
- fixed Loki's 3dfx RGB vs BGR bug
- fixed Loki's 3dfx smooth/flat shading bug in SoF
Changes:
- updated docs/README file
- use bcopy() optimizations on FreeBSD
- re-enabled the optimized persp_textured_triangle() function
</pre>
<p>
</p><h2>March 23, 2000</h2>
<p>I've just upload the Mesa 3.2 beta 1 files to SourceForge at <a href="http://sourceforge.net/project/showfiles.php?group_id=3" target="_parent">http://sourceforge.net/project/filelist.php?group_id=3</a><a href="http://sourceforge.net/project/showfiles.php?group_id=3"></a></p>
<p>3.2 (note even number) is a stabilization release of Mesa 3.1 meaning it's mainly
just bug fixes.</p>
<p>Here's what's changed:
</p><ul>
Bug fixes:
<ul>
- mixed drawing of lines and bitmaps sometimes had wrong colors<br>
- added missing glHintPGI() function<br>
- fixed a polygon culling bug<br>
- fixed bugs in gluPartialDisk()<br>
- Z values in selection mode were wrong<br>
- added missing tokens:
<ul>
GL_SMOOTH_POINT_SIZE_RANGE<br>
GL_SMOOTH_POINT_SIZE_GRANULARITY<br>
GL_SMOOTH_LINE_WIDTH_RANGE<br>
GL_SMOOTH_LINE_WIDTH_GRANULARITY<br>
GL_ALIASED_POINT_SIZE_RANGE<br>
GL_ALIASED_LINE_WIDTH_RANGE
</ul>
- fixed glCopyPixels when copying from back to front buffer<br>
- GL_EXT_compiled_vertex_array tokens had _SGI suffix instead of _EXT<br>
- glDrawRangeElements(GL_LINES, 0, 1, 2, type, indices) was broken<br>
- glDeleteTextures() didn't decrement reference count correctly<br>
- GL_SRCA_ALPHA_SATURATE blend mode didn't work correctly<br>
- Actual depth of transformation matrix stacks was off by one<br>
- 24bpp visuals didn't address pixels correctly<br>
- mipmap level of detail (lambda) calculation simplified, more accurate<br>
- 101691 - Polygon clipping and GL_LINE<br>
- 101928 - Polygon clipping and GL_LINE (same fix as above)<br>
- 101808 - Non-glVertexArrays tristrip bug<br>
- 101971 - find_last_3f on Dec OSF (worked around)<br>
- 102369 - segv on dec osf (possibly a duplicate of the above)<br>
- 102893 - orientations of modelview cause segfault
</ul>
New:
<ul>
- updated SVGA Linux driver<br>
- added the MESA_FX_NO_SIGNALS env var, see docs/README.3DFX<br>
- build libGLw.a (Xt/OpenGL drawing area widget) library by default<br>
- changed -O2 to -O3 for a number of gcc configs
</ul>
Changes:
<ul>
- glXCopyContext's mask parameter is now unsigned long, per GLX spec
</ul>
</ul>
<p>Please report any problems with this release ASAP. Bugs should be filed on the
Mesa3D website at sourceforge.<br>
After 3.2 is wrapped up I hope to release 3.3 beta 1 soon afterward.</p>
<p>-- Brian</p>
<p>
</p><h2>December 17, 1999</h2>
<p>A Slashdot interview with Brian about Mesa (questions submitted by Slashdot readers)
can be found at <a href="http://slashdot.org/interviews/99/12/17/0927212.shtml" target="_parent">http://slashdot.org/interviews/99/12/17/0927212.shtml</a>.</p>
<p>
</p><h2>December 14, 1999</h2>
<p>Mesa 3.1 is released!</p>
<p>
</p><h2>September 21, 1999</h2>
<p>There appear to be two new files on the ftp site, <a href="ftp://ftp.mesa3d.org/mesa/beta/MesaLib-3.1beta3.tar.gz">MesaLib-3.1beta3.tar.gz</a>
and <a href="ftp://ftp.mesa3d.org/mesa/beta/MesaDemos-3.1beta3.tar.gz">MesaDemos-3.1beta3.tar.gz</a>,
that seem to be... yes, I've just received confirmation from the beta center, they
are indeed the <b>THIRD</b> beta release of Mesa 3.1! Happy Days. Happy Days. Thanks
Keith Whitwell for preparing these for us during Brian's absence.</p>
<p>
</p><h2>August 30, 1999</h2>
<p>I'm pleased to announce that I've accepted a position with Precision Insight,
Inc. effective October, 1999. I'll be leaving Avid Technology in September.</p>
<p>I've been working on Mesa in my spare time for over five years. With Precision
Insight I now have the opportunity to devote my full attention to advancing Mesa
and OpenGL on Linux.</p>
<p>While I'll be focused on Linux, the X Window System, and hardware acceleration,
my work will continue to be open sourced and available to any other programmers who
may want to contribute to it, or use it for other projects or platforms</p>
<p>PS: I'm going to be traveling until Sep 6 and won't be reading email until then.</p>
<p>
</p><h2>August 23, 1999</h2>
<p>Anonymous CVS access is back online so suck up all the bandwidth you can afford.
Note that this is a new archive, so you will need to re-checkout the archive. That
means don't <i>cvs update</i> from a previous download.</p>
<p>
</p><h2>August 17, 1999</h2>
<p>A report from the SIGGRAPH '99 Linux/OpenGL
BOF meeting is now available.</p>
<p>-Brian</p>
<p>
</p><h2>August 14, 1999</h2>
<p>www.mesa3d.org is having technical problems due to hardware failures at VA Linux
systems. The Mac pages, ftp, and CVS services aren't fully restored yet. Please be
patient.</p>
<p>-Brian</p>
<p>
</p><h2>June 7, 1999</h2>
<p>RPMS of the nVidia RIVA server can be found at <a href="ftp://ftp.mesa3d.org/mesa/misc/nVidia/">ftp://ftp.mesa3d.org/mesa/misc/nVidia/</a>.</p>
<p>
</p><h2>June 2, 1999</h2>
<p><a href="http://www.nvidia.com/">nVidia</a> has released some Linux binaries for
xfree86 3.3.3.1, along with the <b>full source</b>, which includes GLX acceleration
based on Mesa 3.0. They can be downloaded from <a href="http://www.nvidia.com/Products.nsf/htmlmedia/software_drivers.html">http://www.nvidia.com/Products.nsf/htmlmedia/software_drivers.html</a>.</p>
<p>
</p><h2>May 24, 1999</h2>
<p>Beta 2 of Mesa 3.1 has been make available at <a href="ftp://ftp.mesa3d.org/mesa/beta/">ftp://ftp.mesa3d.org/mesa/beta/</a>.
If you are into the quake scene, you may want to try this out, as it contains some
optimizations specifically in the Q3A rendering path.
<p>
</p><h2>May 13, 1999</h2>
<p>For those interested in the integration of Mesa into XFree86 4.0, Precision Insight
has posted their lowlevel design documents at http://www.precisioninsight.com.</p>
<p>
</p><h2>May 13, 1999</h2>
<pre>May 1999 - John Carmack of id Software, Inc. has made a donation of
US$10,000 to the Mesa project to support its continuing development.
Mesa is a free implementation of the OpenGL 3D graphics library and id's
newest game, Quake 3 Arena, will use Mesa as the 3D renderer on Linux.
The donation will go to Keith Whitwell, who has been optimizing Mesa to
improve performance on 3d hardware. Thanks to Keith's work, many
applications using Mesa 3.1 will see a dramatic performance increase
over Mesa 3.0. The donation will allow Keith to continue working on
Mesa full time for some time to come.
For more information about Mesa see www.mesa3d.org. For more
information about id Software, Inc. see www.idsoftware.com.
--------------------------------
This donation from John/id is very generous. Keith and I are very
grateful.
</pre>
<p>
</p><h2>May 1, 1999</h2>
<p>John Carmack made an interesting .plan update yesterday:
</p><ul>
<i>"I put together a document on optimizing OpenGL drivers for Q3 that
should be helpful to the various Linux 3D teams. <br>
</i>http://www.quake3arena.com/news/glopt.html</i>"
</ul>
<p>
</p><h2>April 7, 1999</h2>
<p>Updated the Mesa contributors section and added links to RPM Mesa packages.</p>
<p>
</p><h2>March 18, 1999</h2>
<p>The new webpages are now online. Enjoy, and let me know if you find any errors.
For an eye-candy free version you can use <a href="http://www.mesa3d.org/txt/">http://www.mesa3d.org/txt/</a>.</p>
<p>
</p><h2>February 16, 1999</h2>
<p><a href="http://www.sgi.com/">SGI</a> releases its <a href="http://www.sgi.com/software/opensource/glx/">GLX
source code</a>.</p>
<p>
</p><h2>January 22, 1999</h2>
<p>www.mesa3d.org established</p>
</p>
<hr>
$Id: news.html,v 3.7 2003/09/05 13:39:39 brianp Exp $
</body>
</html>

View File

@@ -1,78 +0,0 @@
<HTML>
<TITLE>Off-screen Rendering</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Off-screen Rendering</H1>
<p>
Mesa 1.2.4 introduced off-screen rendering, a facility for generating
3-D imagery without having to open a window on your display. Mesa's
simple off-screen rendering interface is completely operating system
and window system independent so programs which use off-screen
rendering should be very portable. This feature effectively
enables you to use Mesa as an off-line, batch-oriented renderer.
</p>
<p>
The "OSMesa" API provides 3 functions for making off-screen
renderings: OSMesaCreateContext(), OSMesaMakeCurrent(), and
OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for
more information. See the demos/osdemo.c file for an example program.
There is no facility for writing images to files. That's up to you.
</p>
<p>
If you want to generate large images (larger than 1280x1024) you'll
have to edit the src/config.h file to change MAX_WIDTH and MAX_HEIGHT
then recompile Mesa. Image size should only be limited by available
memory.
</p>
<H2>Deep color channels</H2>
<p>
For some applications 8-bit color channels don't have sufficient
accuracy (film and IBR, for example). If you're in this situation
you'll be happy to know that Mesa supports 16-bit and 32-bit color
channels through the OSMesa interface. When using 16-bit channels,
channels are GLushorts and RGBA pixels occupy 8 bytes. When using 32-bit
channels, channels are GLfloats and RGBA pixels occupy 16 bytes.
</p>
<p>
To build Mesa/OSMesa with 16-bit color channels:
<pre>
cd Mesa-5.x/src
make -f Makefile.X11 clean
make -f Makefile.OSMesa16 linux-osmesa16
</pre>
For 32-bit channels:
<pre>
cd Mesa-5.x/src
make -f Makefile.X11 clean
make -f Makefile.OSMesa16 linux-osmesa32
</pre>
<p>
You'll wind up with a library named libOSMesa16.so or libOSMesa32.so.
</p>
<p>
If you're not using Linux, you can easily edit Make-config and add
an appropriate configuration.
</p>
<p>
The Mesa/tests/osdemo16.c file (available via CVS) demonstrates how
to use this feature.
</p>
<p>
BE WARNED: 16 and 32-bit channel support has not been exhaustively
tested and there may be some bugs. However, a number of people have
been using this feature successfully so it can't be too broken.
</p>
</BODY>
</HTML>

View File

@@ -1,51 +0,0 @@
<HTML>
<TITLE>PBuffer Rendering</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>PBuffer Rendering</H1>
<p>
Basically, FBconfigs and PBuffers allow you to do off-screen rendering
with OpenGL. The OSMesa interface does basically the same thing, but
fbconfigs and pbuffers are supported by more vendors.
</p>
<p>
PBuffers are getting more use nowadays, though they've actually been
around for a long time on IRIX systems and other workstations.
</p>
<p>
The
<a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/fbconfig.txt"
target="_parent">GL_SGIX_fbconfig</a>
and
<a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/pbuffer.txt"
target="_parent">
GL_SGIX_pbuffer</a> extensions describe the functionality.
More recently, these extensions have been promoted to ARB extensions (on
Windows at least).
</p>
<p>
The Mesa/progs/xdemos/ directory has some useful code for working
with pbuffers:
</p>
<ul>
<li><b>pbinfo.c</b> - like glxinfo, it prints a list of available
fbconfigs and whether each supports pbuffers.
<li><b>pbutil.c</b> - a few utility functions for dealing with
fbconfigs and pbuffers.
<li><b>pbdemo.c</b> - a demonstration of off-screen rendering with pbuffers.
</ul>
<p>
Mesa 4.1 and later support GL_SGIX_fbconfig and GL_SGIX_pbuffer (software
rendering only).
</p>
</BODY>
</HTML>

View File

@@ -1,66 +0,0 @@
<HTML>
<TITLE>Performance Tips</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Performance Tips</H1>
<p>
Performance tips for software rendering:
</P>
<ol>
<li> Turn off smooth shading when you don't need it (glShadeModel)
<li> Turn off depth buffering when you don't need it.
<li> Turn off dithering when not needed.
<li> Use double buffering as it's often faster than single buffering
<li> Compile in the X Shared Memory extension option if it's supported
on your system by adding -DSHM to CFLAGS and -lXext to XLIBS for
your system in the Make-config file.
<li> Recompile Mesa with more optimization if possible.
<li> Try to maximize the amount of drawing done between glBegin/glEnd pairs.
<li> Use the MESA_BACK_BUFFER variable to find best performance in double
buffered mode. (X users only)
<li> Optimized polygon rasterizers are employed when:
rendering into back buffer which is an XImage
RGB mode, not grayscale, not monochrome
depth buffering is GL_LESS, or disabled
flat or smooth shading
dithered or non-dithered
no other rasterization operations enabled (blending, stencil, etc)
<li> Optimized line drawing is employed when:
rendering into back buffer which is an XImage
RGB mode, not grayscale, not monochrome
depth buffering is GL_LESS or disabled
flat shading
dithered or non-dithered
no other rasterization operations enabled (blending, stencil, etc)
<li> Textured polygons are fastest when:
using a 3-component (RGB), 2-D texture
minification and magnification filters are GL_NEAREST
texture coordinate wrap modes for S and T are GL_REPEAT
GL_DECAL environment mode
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST )
depth buffering is GL_LESS or disabled
<li> Lighting is fastest when:
Two-sided lighting is disabled
GL_LIGHT_MODEL_LOCAL_VIEWER is false
GL_COLOR_MATERIAL is disabled
No spot lights are used (all GL_SPOT_CUTOFFs are 180.0)
No local lights are used (all position W's are 0.0)
All material and light coefficients are >= zero
<li> XFree86 users: if you want to use 24-bit color try starting your
X server in 32-bit per pixel mode for better performance. That is,
start your X server with
startx -- -bpp 32
instead of
startx -- -bpp 24
<li> Try disabling dithering with the MESA_NO_DITHER environment variable.
If this env var is defined Mesa will disable dithering and the
command glEnable(GL_DITHER) will be ignored.
</ol>
</BODY>
</HTML>

View File

@@ -1,34 +0,0 @@
<HTML>
<TITLE>Mesa Release Notes</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Release Notes</H1>
<p>
The release notes summarize what's new or changed in each Mesa release.
</p>
<UL>
<LI><A HREF="RELNOTES-5.0.2">RELNOTES-5.0.2</A>
<LI><A HREF="RELNOTES-5.0.1">RELNOTES-5.0.1</A>
<LI><A HREF="RELNOTES-5.0">RELNOTES-5.0</A>
<LI><A HREF="RELNOTES-4.1">RELNOTES-4.1</A>
<LI><A HREF="RELNOTES-4.0.3">RELNOTES-4.0.3</A>
<LI><A HREF="RELNOTES-4.0.2">RELNOTES-4.0.2</A>
<LI><A HREF="RELNOTES-4.0.1">RELNOTES-4.0.1</A>
<LI><A HREF="RELNOTES-4.0">RELNOTES-4.0</A>
<LI><A HREF="RELNOTES-3.5">RELNOTES-3.5</A>
<LI><A HREF="RELNOTES-3.4.2">RELNOTES-3.4.2</A>
<LI><A HREF="RELNOTES-3.4.1">RELNOTES-3.4.1</A>
<LI><A HREF="RELNOTES-3.4">RELNOTES-3.4</A>
<LI><A HREF="RELNOTES-3.3">RELNOTES-3.3</A>
<LI><A HREF="RELNOTES-3.2.1">RELNOTES-3.2.1</A>
<LI><A HREF="RELNOTES-3.2">RELNOTES-3.2</A>
<LI><A HREF="RELNOTES-3.1">RELNOTES-3.1</A>
</UL>
</BODY>
</HTML>

View File

@@ -1,64 +0,0 @@
<HTML>
<TITLE>Science and Technical</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Science and Technical</H1>
<ul>
<li><a href="http://www.softintegration.com/products/toolkit/opengl/" target="_parent">Ch</a> - OpenGL bindings for the Ch C/C++ interpreter
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">CLEO3D</a> - event displayer for the CLEOIII detector
</li><li><a href="http://www.bioz.unibas.ch/%7Exray/dino/" target="_parent">DINO</a> - Visualizing
Structural Biology
</li><li><a href="http://www-xdiv.lanl.gov/XCM/gmv/GMVHome.html" target="_parent">General
Mesh Viewer (GMV)</a> - scientific vis.
</li><li><a href="http://gid.cimne.upc.es/" target="_parent">GiD</a> - finite element
analysis
</li><li><a href="http://sig.co.za/download.htm" target="_parent">glpoisson</a> - A finite
element analysis program that simulates wave in an arbitrary region.
</li><li><a href="http://glwaves.sourceforge.net/" target="_parent">GLWaves</a> -
Electromagnetic wave visualization
</li><li><a href="http://www.geuz.org/gmsh/" target="_parent">Gmsh</a> -
finite element mesh generator / viewer
</li><li><a href="http://laaksonen.csc.fi/gopenmol/gopenmol.htmls" target="_parent">gOpenMol</a>
- computational chemistry
</li><li><a href="http://www.mgix.com/gps3d/" target="_parent">GPS 3D</a> - GPS-based map visualization
</li><li><a href="http://hirame.hiram.edu/%7Eworleyam/" target="_parent">Hitchhiker</a>
- virtual solar system
</li><li><a href="http://www-xdiv.lanl.gov/XCM/Hydra/" target="_parent">Hydra</a> - physics
and engineering pkg
</li><li><a href="http://fox.mit.edu/skunk/soft/lightspeed/" target="_parent">Light Speed</a>
- a real-time, interactive relativistic simulator
</li><li><a href="http://linkwinds.jpl.nasa.gov/" target="_parent">LinkWinds</a> - scientific
vis
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html" target="_parent">MathGL3d</a> - Mathematica viewer
</li><li><a href="http://www.mathworks.com/products/matlab" target="_parent">Mathworks</a>
- mathematics and visualization
</li><li><a href="http://www-rocq.inria.fr/gamma/medit/medit.html" target="_parent">Medit</a> - 3D surface mesh viewer
</li><li><a href="http://www.mol.biol.ethz.ch/wuthrich/software/molmol/" target="_parent">MOLMOL</a>
- molecular modeling and analysis
</li><li><a href="http://www.avatar.se/molscript/" target="_parent">Molscript</a> - molecular
modeling
</li><li><a href="http://www.opendx.org/" target="_parent">OpenDX</a> - Data visualization
system
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">PHLEX</a> - Finite element vis
</li><li><a href="http://root.cern.ch/" target="_parent">ROOT</a> - Object Oriented Data
Analysis Framework
</li><li><a href="http://www.slffea.com/" target="_parent">SLFFEA</a> - GNU finite element
package
</li><li><a href="http://quorum.tamu.edu/jon/spock" target="_parent">Spock</a> - molecular
modeling
</li><li><a href="http://www1.las.es/%7Eamil/ssystem" target="_parent">Ssystem</a> - solar
system simulation
</li><li><a href="http://mesa3d.sourceforge.net/notfound.html">SPARROW</a> - robot simulation
</li><li><a href="http://www.ssec.wisc.edu/%7Ebillh/vis5d.html" target="_parent">Vis5D</a>
- atmospheric visualization
</li><li><a href="http://www.ks.uiuc.edu/Research/vmd/" target="_parent">VMD</a> - molecular
modeling
</li><li><a href="http://www.cyberbotics.com/" target="_parent">Webots</a> - 3-D mobile
robot simulator
</li></ul>
</body></html>

View File

@@ -1,24 +0,0 @@
<HTML>
<TITLE>Source Code Documentation</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Source Code Documentation</H1>
<p>
<A HREF="http://www.doxygen.org" target="_parent">Doxygen</A>
is used to automatically
produce cross-referenced documentation from the Mesa sources.
This is not included in the normal Mesa distribution.
Download Mesa from CVS if interested.
</P>
<P>
If you're reading this page from your local copy of Mesa, and have
run the doxygen scripts, you can read the documentation
<A HREF="../doxy/core/index.html">here</A>
</P>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -1,31 +0,0 @@
<HTML>
<TITLE>Mesa Subset</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Mesa Subset</H1>
<p>
In 2002/2003 Tungsten Graphics was contracted to develop a subset Mesa/Radeon
driver for an embedded environment. The result is a reduced-size DRI driver
for the ATI R200 chip, for use with Linux fbdev rather than XFree86.
</p>
<p>
The specification for this subset can be found
<a href="subset-A.html">here</a>.
</p>
<p>
The <a href="MiniGLX.html">MiniGLX specification</a> describes the
interface between fbdev and Mesa.
</p>
<p>
More info to come...
</p>
</BODY>
</HTML>

View File

@@ -1,109 +0,0 @@
<HTML>
<TITLE>Supported Systems and Drivers</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Supported Systems and Drivers</H1>
<p>
Mesa was originally designed for Unix/X11 systems and is still best
supported on those systems. All you need is an ANSI C compiler and the
X development environment to use Mesa.
</p>
<p>Others have contributed drivers
for the Amiga, Apple Macintosh, BeOS, NeXT, OS/2, MS-DOS, VMS, Windows
9x/NT, and Direct3D.
</p>
<p>
The following files describe the details for various platforms.
Be warned, some of these files (and drivers) may be very out of date.
</p>
<UL>
<LI><A HREF="README.X11">README.X11</A> - X Window System / Unix / Linux
<LI><A HREF="README.WIN32">README.WIN32</A> - Microsoft Windows
<LI><A HREF="README.VMS">README.VMS</A> - DEC VMS
<LI><A HREF="README.GGI">README.GGI</A> - GGI
<LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver
<LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin
<LI><A HREF="README.BEOS">README.BEOS</A> - BeOS
<LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver
<LI><A HREF="README.DJ">README.DJ</A> - DJGPP
<LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS
<LI><A HREF="README.MINGW32">README.MINGW32</A> - Mingw32
<LI><A HREF="README.NeXT">README.NeXT</A> - NeXT
<LI><A HREF="README.OpenStep">README.OpenStep</A> - OpenStep
<LI><A HREF="README.OS2">README.OS2</A> - OS/2
<LI><A HREF="README.WINDML">README.WINDML</A> - WindML
</UL>
<p>
The standard Mesa distribution only supports software-based rendering, with
the exception of the 3Dfx Glide driver.
Information about other hardware support follows.
</p>
<ul>
<li>DRI-based hardware support for 3dfx, Intel, Matrox, ATI with XFree86
<blockquote>
<p>The <a href="http://dri.sourceforge.net/" target="_parent">DRI architecture</a>,
originally developed by Precision Insight, Inc. uses Mesa and
provides hardware acceleration for a number of popular chipsets.<br>
<br>
The DRI is part of XFree86 4.0 and later.
<br><br>
If you download and install XFree86 4.x you do not need to
install Mesa separately. All the important parts of Mesa
will be installed with the rest of XFree86.
</blockquote>
<li>3dfx Voodoo1, Voodoo2, Voodoo Rush, Voodoo Banshee, Voodoo3
<blockquote>
<p>All cards based on these chipsets should work with Linux and
Windows 95 via 3dfx's Glide library.
The Mesa/Glide driver is included with the Mesa distribution.
You'll need to install the Glide header files and runtime library.
</p>
<p>
David Bucciarelli wrote the original 3dfx driver for Mesa.<br>
Daryll Strauss ported Glide to Linux.
</p>
</blockquote>
<li>Matrox G200/G400, nVidia RIVA, ATI Rage Pro, Intel i810 on Linux
<blockquote>
<p>The <a href="http://utah-glx.sourceforge.net/" target="_parent">
Utah GLX project</a>
(no longer active) developed drivers for these chipsets and others.
</blockquote>
<li>Amiga Warp3D
<blockquote>
<p>Amiga systems can support 3D hardware with the Warp3D API.
See <a href="http://www.haage-partner.com/3dworld" target="_parent">here</a>.
</blockquote>
<li>Also see
<blockquote>
<p><a href="http://www.linux3d.org/" target="_parent">www.linux3d.org</a> for
other 3D hardware info for Linux.
</blockquote>
</ul>
<p>
<b><em>Note:</em></b>
If you have NVIDIA hardware in your computer,
you should download and install NVIDIA's OpenGL library. You may
however, want to download Mesa in order to use its GLU and GLUT
libraries, or assorted demo programs.</p>
</body>
</html>

View File

@@ -1,124 +0,0 @@
<HTML>
<HEAD>
<TITLE>Acknowledgements</TITLE>
</HEAD>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Acknowledgments</H1>
The following individuals and groups are to be acknowledged for their
contributions to Mesa over the years.
<ul>
<li>Early Mesa development was done while Brian was part of the
<A HREF="http://www.ssec.wisc.edu/~billh/vis.html"
target="_parent">SSEC Visualization Project</A> at the University of
Wisconsin. He'd like to thank Bill Hibbard for letting him work on
Mesa as part of that project.
<br>
<br>
<li>John Carmack of id Software, Inc. funded Keith Whitwell in 1999 in
order to optimize Mesa's vertex transformation module. This is a very
substantial piece of work.
<br>
<br>
<li>Precision Insight, Inc., VA Linux Systems, Inc., and most recently,
Tungsten Graphics, Inc. have supported the ongoing development of Mesa.
<br>
<br>
<li>The <A HREF="http://sourceforge.net/projects/mesa3d"
target="_parent">Mesa</A>
project is hosted by<A HREF="http://sourceforge.net"
target="_parent"><IMG SRC="http://sourceforge.net/sflogo.php?group_id=3&type=1"
WIDTH="88" HEIGHT="31" ALIGN="BOTTOM" ALT="Sourceforge.net" BORDER="0"></A>
<br>
<br>
<li><a href="http://www.altsoftware.com/"
target="_parent">alt.software</a> contributed the Direct3D driver.
<li><b>Bernd Barsuhn</b> wrote the evaluator code for (splines,
patches) in Mesa.
<li><b>Bernhard Tschirren</b> wrote the Allegro DJGPP driver.
<li><b>Bogdan Sikorski</b> wrote the GLU NURBS and polygon tessellator
in Mesa.
<li><b>Charlie Wallace</b> wrote the MS-DOS driver.
<li><b>CJ Beyer</b> was the www.mesa3d.org webmaster.
<li><b>Darren Abbott</b> provided the OS/2 driver.
<li><b>David Bucciarelli</b> wrote and maintained the 3Dfx Glide
driver. Thousands of Linux/Quake players thank David!
<li><b>Gareth Hughes</b> wrote new GLU 1.2 Polygon Tessellation code
(now superceded by SGI SI GLU).
<li><b>Holger Waechtler</b> contributed AMD 3DNow! assembly code which
accelerates vertex transformation in Mesa 3.1. Holger also implemented
the GL_EXT_texture_env_combine extension.
<li><b>Jeroen van der Zijp</b> and <b>Thorsten Ohl</b> contributed the
Xt/Motif widget code.
<li><b>John Stone</b> provided the multi-threading support in Mesa 3.0.
<li><b>John Watson</b> assisted with web page design.
<li><b>Josh Vanderhoof</b> contributed Intel x86 assembly code which
accelerates vertex transformation in Mesa 3.x.
<li><b>Jouk Jansen</b> contributed and continues to maintain the VMS
support.
<li><b>Karl Schultz</b> has been maintaining the Windows driver.
<li><b>Keith Whitwell</b> has made extension contributions to Mesa
since 1999.
<li><b>Kendall Bennett</b> wrote the SciTech MGL driver.
<li><b>Klaus Niederkrueger</b> contributed many improvements to Mesa's
software rasterizer.
<li><b>Mark Kilgard</b> contributed antialiased line improvements and
several extensions.
<li><b>Michael Pichler</b> contributed <em>many</em> bug fixes
<li><b>Miklos Fazekas</b> wrote and maintains the Macintosh driver.
<li><b>Pascal Thibaudeau</b> wrote the NeXT driver.
<li><b>Pedro Vazquez</b> setup and maintains the Mesa Mailing list.
<li><b>Randy Frank</b> contributed <em>many</em> bug fixes.
<li><b>Stefan Zivkovic</b> wrote the Amiga driver.
<li><b>Stephane Rehel</b> provided the Cygnus Win32 support
<li><b>Ted Jump</b> maintained the
makefiles and project files for Windows 95/98/NT compilation for some time.
<li><b>Uwe Maurer</b> wrote the LibGGI driver for Mesa-3.0.
<li><b>Victor Ng-Thow-Hing</b> wrote the Amiwin driver for the Amiga.
</ul>
<p>
Apologies to anyone who's been omitted.
Please send corrections and additions to Brian.
</p>
</BODY>
</HTML>

View File

@@ -1,24 +0,0 @@
<HTML>
<TITLE>Development Utilities</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Development Utilities</H1>
<ul>
<li>The Mesa distribution includes several utility routines in the
progs/util/ directory
<li>Allen Akin's <a href="http://glean.sourceforge.net/"
target="_parent">glean</a> is a framework for OpenGL testing.
<li><a href="http://developer.kde.org/~sewardj/"
target="_parent">Valgrind</a> is a very useful tool for tracking down
memory-related problems in your code.
</ul>
</body>
</html>

View File

@@ -1,42 +0,0 @@
<HTML>
<TITLE>Utilities</TITLE>
<BODY text="#000000" bgcolor="#55bbff" link="#111188">
<H1>Utilities</H1>
<ul>
<li><a href="http://fox.mit.edu/skunk/soft/fsv/"
target="_parent">fvs</a> - 3D file system visualizer
<li><a href="http://www.dgp.utoronto.ca/%7Emac/projects/glbiff.html"
target="_parent">glbiff</a> - GL version of xbiff
<li><a href="http://glload.netpedia.net/" target="_parent">glload</a>
- CPU load meter
<li><a href="http://www.scitechsoft.com/gldirect.html"
target="_parent">SciTech GLDirect</a> - Driver to run OpenGL
apps using Direct3D under Windows
<li><a href="http://threedsia.sourceforge.net/"
target="_parent">3Dsia</a> - 3D user interface
<li><a href="http://mesa3d.sourceforge.net/notfound.html">VRML Site
Map</a> - 3D GUI
<li><a href="http://www.vros.com/" target="_parent">VR/OS</a> - VR
user interface
<li><a href="http://wauug.erols.com/%7Ebagleyd/"
target="_parent">xlockmore</a> - an X screen saver
<li><a href="http://www.jwz.org/xscreensaver"
target="_parent">xscreensaver</a> - X screen saver
</ul>
</body>
</html>

View File

@@ -1,22 +0,0 @@
<HTML>
<TITLE>Mesa Introduction</TITLE>
<BODY text="#000000" bgcolor="#55bbff">
<H1>Webmaster</font></H1>
<p>
If you have problems, edits or additions for this website send them
to Brian
(<em>b</em><em>r</em><em>i</em><em>a</em><em>n</em><em>_</em><em>e</em><em>_</em><em>p</em><em>a</em><em>u</em><em>l</em><em>@</em><em>y</em><em>a</em><em>h</em><em>o</em><em>o</em><em>.</em><em>c</em><em>o</em><em>m</em>)</a>.
</p>
<p>
Mark Manning made the frame-based layout for the website.
Brian's modified it a lot since then.
</p>
</body>
</html>

View File

@@ -1,15 +0,0 @@
*.tag
agpgart
array_cache
core
core_subset
math
math_subset
miniglx
radeon_subset
radeondrm
radeonfb
swrast
swrast_setup
tnl
tnl_dd

View File

@@ -1,30 +0,0 @@
default: full
all: full subset
%.tag: %.doxy
doxygen $<
FULL = \
core.doxy \
math.doxy \
array_cache.doxy \
swrast.doxy \
swrast_setup.doxy \
tnl.doxy \
tnl_dd.doxy
full: $(FULL:.doxy=.tag)
$(foreach FILE,$(FULL),doxygen $(FILE);)
SUBSET = \
core.doxy \
math.doxy \
miniglx.doxy
subset: $(SUBSET:.doxy=.tag)
$(foreach FILE,$(SUBSET),doxygen $(FILE);)
clean:
rm -rf $(FULL:.doxy=) $(SUBSET:.doxy=)
rm -rf *.tag

View File

@@ -1,10 +0,0 @@
This directory is for doxygen (a source code documentation system).
See http://www.doxygen.org/ for more info.
Either run 'make' (Unix) or 'doxy.bat' (Windows) to run doxygen
and generate souce code documentation.
Then, load either doxy/core/index.html or doxy/core_subset/index.html into
your web browser.

View File

@@ -1,49 +0,0 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa array_cache"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/array_cache/
FILE_PATTERNS = *.c \
*.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = array_cache
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = core.tag=../core \
tnl.tag=../tnl \
swrast_setup.tag=../swrast_setup \
swrast.tag=../swrast \
math.tag=../math \
tnl_dd.tag=../tnl_dd
GENERATE_TAGFILE = array_cache.tag

File diff suppressed because it is too large Load Diff

View File

@@ -1,48 +0,0 @@
# Doxyfile 0.1
@INCLUDE = common.doxy
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa Core"
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/main/
FILE_PATTERNS = *.c *.h
RECURSIVE = NO
EXCLUDE = ../src/glapitemp.h ../src/glapioffsets.h
EXCLUDE_PATTERNS = subset_*
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
HTML_OUTPUT = core
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED = _HAVE_FULL_GL=1
EXPAND_AS_DEFINED = _glthread_DECLARE_STATIC_MUTEX
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = tnl_dd.tag=../tnl_dd \
array_cache.tag=../array_cache \
math.tag=../math \
swrast.tag=../swrast \
swrast_setup.tag=../swrast_setup \
tnl.tag=../tnl
GENERATE_TAGFILE = core.tag

View File

@@ -1,226 +0,0 @@
# Doxyfile 0.1
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "Mesa Core"
PROJECT_NUMBER =
OUTPUT_DIRECTORY =
OUTPUT_LANGUAGE = English
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = YES
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
ALIASES =
ENABLED_SECTIONS = subset
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO
WARN_FORMAT =
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/mesa/main/
FILE_PATTERNS = \
accum.h \
attrib.h \
blend.[ch] \
buffers.[ch] \
dd.h \
debug.h \
depth.h \
dlist.h \
context.[ch] \
config.h \
colormac.h \
colortab.h \
enable.h \
enums.h \
eval.h \
extensions.h \
feedback.[ch] \
fog.h \
get.h \
glheader.h \
glthread.h \
hash.[ch] \
hint.h \
histogram.h \
image.[ch] \
imports.[ch] \
lines.[ch] \
light.h \
matrix.[ch] \
macros.h \
mmath.h \
mtypes.h \
pixel.h \
points.[ch] \
polygon.[ch] \
rastpos.[ch] \
simple_list.h \
state.[ch] \
stencil.[ch] \
subset_*.c \
texformat.h \
teximage.h \
texstate.h \
texstore.h \
texobj.[ch] \
texutil_tmp.h \
varray.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = core_subset
HTML_HEADER = header_subset.html
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT =
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION =
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES = \
math_subset.tag=../math_subset \
miniglx.tag=../miniglx
GENERATE_TAGFILE = core_subset.tag
ALLEXTERNALS = NO
PERL_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
HIDE_UNDOC_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
CGI_NAME =
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH =
EXT_DOC_PATHS =

Some files were not shown because too many files have changed in this diff Show More