summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAllen Akin <akin@users.sourceforge.net>1999-12-15 01:24:19 +0000
committerAllen Akin <akin@users.sourceforge.net>1999-12-15 01:24:19 +0000
commit402349fd7e464b18882e531f05668125a4a9d73b (patch)
tree0022594e4e0dd82f71b9dcd44c02fe1860f222b7 /doc
Initial revision
Diffstat (limited to 'doc')
-rw-r--r--doc/html/build.html72
-rw-r--r--doc/html/buildgnu.html156
-rw-r--r--doc/html/buildwin.html86
-rw-r--r--doc/html/changes.html141
-rw-r--r--doc/html/cleanup.html59
-rw-r--r--doc/html/index.html35
-rw-r--r--doc/html/newfeat.html107
-rw-r--r--doc/html/newtest.html198
-rw-r--r--doc/html/next.html60
-rw-r--r--doc/html/overview.html247
-rw-r--r--doc/html/port.html57
-rw-r--r--doc/html/repo.html48
-rw-r--r--doc/html/run.html248
-rw-r--r--doc/html/whatis.html102
14 files changed, 1616 insertions, 0 deletions
diff --git a/doc/html/build.html b/doc/html/build.html
new file mode 100644
index 0000000..dbfbbf7
--- /dev/null
+++ b/doc/html/build.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>How to build glean</TITLE>
+ <META NAME="description" CONTENT="building glean">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>How do I build <I>glean</I>?</H1>
+
+<P>
+<I>glean</I> is intended to run on a variety of operating systems.
+It has been tested on Linux-based GNU systems with the XFree86
+X11 server, and on Microsoft Windows.
+
+<P>
+To help port <I>glean</I> to other
+systems, please see <A HREF="next.html">Where do we go from here?</A>.
+
+<H2>Other software you'll need before you can build <I>glean</I></H2>
+
+<P>
+<I>glean</I> stores images in the TIFF format, because it's one of
+the few standard formats that's capable of handling images with 32-bit
+and floating-point color values. The best widely-available library for
+handling TIFF is <A HREF="ftp://ftp.sgi.com/graphics/tiff">Sam Leffler's
+libtiff</A>. Your operating system may include this library already
+(most Linux distributions do); if not, you'll need to obtain a copy of
+the source and compile it according to the instructions contained therein.
+
+<P>
+Some of the tools in the <I>glean</I> suite use <A
+HREF="http://reality.sgi.com/opengl/glut3/glut3.html">Mark
+Kilgard's GLUT library</A>. Again, your OS (or your <A
+HREF="http://www.mesa3d.org/">MESA</A> distribution) may already include
+GLUT, but if not, you'll need to grab a copy and install it.
+
+<P>
+Once you've completed those tasks, choose one of the following:
+
+<UL>
+ <LI><A HREF="buildgnu.html">Building <I>glean</I> for GNU/Linux</A></LI>
+ <LI><A HREF="buildwin.html">Building <I>glean</I> for Windows</A></LI>
+</UL>
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/buildgnu.html b/doc/html/buildgnu.html
new file mode 100644
index 0000000..005e64b
--- /dev/null
+++ b/doc/html/buildgnu.html
@@ -0,0 +1,156 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>Building glean for GNU/Linux</TITLE>
+ <META NAME="description" CONTENT="building glean for GNU/Linux">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>Building <I>glean</I> for GNU/Linux</H1>
+
+<P>
+The present versions of <I>glean</I> Makefiles depend on features of GNU make.
+(In particular, the automatic re-scanning of all dependency files after
+any have changed.) If your version of make is known to be significantly
+incompatible with GNU make, then you will need to acquire a copy of
+GNU make or modify <I>glean</I>'s Makefiles.
+
+<P>
+<I>glean</I> makes extensive use of the C++ Standard Template Library.
+If your C++ compiler fails to compile <I>glean</I>, you may want to try
+<A HREF="http://egcs.cygnus.com/">egcs or the latest version of gcc</A>.
+<I>glean</I> was developed with egcs 1.1.2; earlier versions are missing
+some features that <I>glean</I> uses, such as namespaces.
+
+
+<H2>Obtain the source code</H2>
+
+<P>
+Obtain the gzipped tar file containing <I>glean</I> from
+<A HREF="ftp://ftp.mesa3d.org/mesa/contrib/">
+ftp://ftp.mesa3d.org/mesa/contrib/</A>.
+
+<P>
+Unpack the tar file:
+<PRE>
+ tar xfz glean_1_0.tgz
+ cd glean_1_0
+</PRE>
+This will create a subdirectory named <KBD>glean_1_0</KBD> and
+make it your current directory.
+
+<H2>Set the GLEAN_ROOT environment variable</H2>
+
+<P>
+To compile or run <I>glean</I>, you will need to set the environment
+variable <KBD>GLEAN_ROOT</KBD> to the full pathname of the <I>glean</I>
+source directory.
+If you're following along, this is your current directory, so
+this command should do the trick for users of csh and its descendants:
+<PRE>
+ setenv GLEAN_ROOT `pwd`
+</PRE>
+and this command should work for users of sh and its descendants:
+<PRE>
+ GLEAN_ROOT=`pwd`; export GLEAN_ROOT
+</PRE>
+Be sure to set the environment variable each time you want to compile
+or run <I>glean</I>. Perhaps the easiest way to ensure this is to
+set it in your shell's startup script.
+
+<H2>Set Makefile options</H2>
+
+<P>
+Edit $GLEAN_ROOT/make/common.mak and modify the configuration variables
+according to your preferences. Some of the variables that are most
+likely to need customization are:
+
+<DL>
+ <DT>CONFIG</DT>
+ <DD>
+ This variable selects the operating system and window system for which
+ <I>glean</I> will be compiled. The OS option must be either __UNIX__
+ or __MS__. The window-system option must be either __X11__ or __WIN__.
+ (Yes, there is some ambiguity between the OS and the window system in
+ Microsoft's case. However, there are X11 products that run under
+ Windows, so the combination of __MS__ and __X11__ is possible.)
+ By default, this variable is set to "-D__UNIX__ -D__X11__".
+ </DD>
+
+ <DT>CC</DT>
+ <DD>
+ This variable specifies the location of the C++ compiler.
+ By default it is "g++".
+ </DD>
+
+ <DT>XINC, GLINC, GLUTINC, TIFFINC</DT>
+ <DD>
+ These variables specify the directories containing include files for
+ X, OpenGL, GLUT, and libtiff, respectively.
+ The defaults are /usr/include/X11, /usr/local/include, /usr/local/include,
+ and /usr/include, respectively.
+ </DD>
+
+ <DT>XLIB, GLLIB, GLUTLIB, TIFFLIB</DT>
+ <DD>
+ These variables specify the directories containing libraries
+ (libX11, libGL, libglut, and libtiff, respectively).
+ The defaults are /usr/X11R6/lib, /usr/local/lib, /usr/local/lib, and
+ /usr/lib, respectively.
+ </DD>
+
+ <DT>_INC, _OPT, _DBG, _WARN, _LIBDIR, _LIB, _PROF</DT>
+ <DD>
+ These variables define C++ command-line options for include-file
+ directories, optimization, debugging, warnings, library directories,
+ libraries, and profiling. These apply universally, to all <I>glean</I>
+ compilations. Individual Makefiles can make local additions to
+ these defaults by defining corresponding variables whose names
+ do not have a leading underscore. Note that it is possible to
+ configure your system so that the <I>order</I> of include-file
+ or library-file directories is significant; for example, by having
+ two versions of the same include file, one in /usr/include and one
+ in /usr/local/include. In such cases, you'll need to make sure
+ that the _INC and _LIB variables specify directories in precisely
+ the order you require.
+ </DD>
+</DL>
+
+<H2>Build <I>glean</I></H2>
+
+<P>
+When you've finished editing the Makefile, simply type
+<PRE>
+ cd src
+ make install
+</PRE>
+This will build <I>glean</I> and the other tools in the suite, and install
+them in <KBD>$GLEAN_ROOT/bin</KBD>.
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/buildwin.html b/doc/html/buildwin.html
new file mode 100644
index 0000000..89428fa
--- /dev/null
+++ b/doc/html/buildwin.html
@@ -0,0 +1,86 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Johan Smet">
+ <meta name="GENERATOR" content="Mozilla/4.61 [en] (Win98; I) [Netscape]">
+ <title>Building glean under Windows</title>
+</head>
+<body>
+
+<h1>
+Building <i>glean</i> under Windows</h1>
+Note : this document asumes that you are using Microsoft Visual C++ 6 (VC6).
+<h2>
+Other software you'll need</h2>
+Currently<i> glean</i> doesn't build with the STL included with VC6. <i>glean</i>
+has been verified to build with the <a href="http://www.stlport.org/">STLport</a>
+implementation.
+<br>&nbsp;
+<h2>
+Obtain the source code</h2>
+Obtain the .zip file containing <i>glean</i> from
+<a href="ftp://ftp.mesa3d.org/mesa/contrib/">ftp://ftp.mesa3d.org/mesa/contrib/</a>.
+<p>Unzip the file:
+<pre>&nbsp;&nbsp;&nbsp; pkunzip -d glean_1_0.zip c:\
+&nbsp;&nbsp;&nbsp; cd glean_1_0</pre>
+This will create a subdirectory named <tt>glean_1_0</tt> and make it your
+current directory.
+<h2>
+Set the GLEAN_ROOT environment variable</h2>
+To compile or run <i>glean</i>, you will need to set the environment variable
+<tt>GLEAN_ROOT</tt> to the full pathname of the <i>glean</i> source directory.
+Open a dos prompt and type
+<pre>&nbsp;&nbsp;&nbsp; set GLEAN_ROOT=c:\glean_1_0</pre>
+Be sure to set the environment variable each time you want to compile or
+run <i>glean</i>.
+<br>&nbsp;
+<h2>
+Set the VC6 environment variables</h2>
+To use the command-line tools, you will have to set some environment variables.
+There is a batch file in VC6's bin directory called <i>vcvars32.bat </i>that
+contains the necessary commands. Just execute this in the same dos
+prompt as the previous step and you'll be set to go.
+<br>&nbsp;
+<h2>
+Set Makefile options</h2>
+Edit GLEAN_ROOT\make\common.win and modify the configuration variables
+according to your preferences. Some of the variables that are most likely
+to need customization are:
+<p>STL_DIR
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This variables specifies
+the directory containing include files of the STLport.
+<p>LIBTIFF_INC_DIR
+<br>LIBTIFF_LIB_DIR
+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These variables specify
+the directories that contain the libtiff include files and library resp.
+<br>&nbsp;
+<h2>
+Build <i>glean</i></h2>
+When you've finished editing the Makefile, simply type
+<pre>&nbsp;&nbsp;&nbsp; cd src
+&nbsp;&nbsp;&nbsp; nmake /f makefile.win</pre>
+This will build <i>glean</i> and the other tools in the suite, and install
+them in <tt>$GLEAN_ROOT/bin</tt>.
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/changes.html b/doc/html/changes.html
new file mode 100644
index 0000000..7b60379
--- /dev/null
+++ b/doc/html/changes.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>Recent changes in glean</TITLE>
+ <META NAME="description" CONTENT="glean changes">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>What has changed recently?</H1>
+
+<H2>Changes from Version 0.6 to Version 1.0</H2>
+
+<P>
+Added hints to set window position as well as size, so that users
+of window managers without automatic window placement don't have
+to click to create each test window.
+
+<H2>Changes from Version 0.5 to Version 0.6</H2>
+
+<P>
+Replaced <CODE>*.dsw</CODE> and <CODE>*.dsp</CODE> files with nmake
+makefiles (named <CODE>common.win</CODE> and <CODE>makefile.win</CODE>)
+for building on Windows.
+
+<P>
+Added Johan Smet's documentation for building glean on Windows. This
+necessitated reworking the documentation structure somewhat.
+
+<P>
+Fixed a storage allocation bug in the Windows version of <I>showvis</I>.
+
+<P>
+Fixed a couple of problems in libs/dsurf/dsconfig.cpp related to the
+visual_rating extension that caused compilation errors on some
+systems. Thanks to Brian Paul for catching these.
+
+<P>
+Brian also reported some bizarre link errors. These occurred because
+there were multiple gl.h files installed on his system, and the
+makefiles searched different header file directories for different
+glean components. This has been worked around by changing common.mak
+and the individual makefiles to search for header files and libraries
+in the same order for all components. This is not a universal
+solution; if your system has a very unusual configuration of library
+or header directories, you may need to customize the makefiles.
+
+<H2>Changes from Version 0.4 to Version 0.5</H2>
+
+<P>
+Incorporated the second set of Johan Smet's changes
+to port <I>glean</I> to Microsoft Windows.
+
+<H2>Changes from Version 0.3 to Version 0.4</H2>
+
+<P>
+Added the ability to include or exclude specific tests from a run.
+
+<P>
+
+A recent change in the behavior of the C++ string
+<CODE>getline()</CODE> function in the GNU libraries caused
+<I>glean</I>'s test comparison operation to appear to hang. The new
+behavior appears to be correct, but it was necessary to add a
+workaround to <I>glean</I> so that it would run properly on both old
+and new versions of the library.
+
+<H2>Changes from Version 0.2 to Version 0.3</H2>
+
+<P>
+Incorporated the first set of Johan Smet's changes
+to port <I>glean</I> to Microsoft Windows. These included:
+
+ <UL TYPE=DISC>
+ <LI>
+ VC6 still uses old-style scoping rules for variables declared
+ in the init part of ``for'' statements, so in some cases new
+ blocks or new variables were introduced to avoid collisions.
+
+ <LI>
+ VC6 has trouble with some styles of initialization in
+ declarations; for example,
+ <PRE>
+ WindowSystem& ws(env->winSys);
+ </PRE>
+ had to be changed to
+ <PRE>
+ WindowSystem& ws = env->winSys;
+ </PRE>
+
+ <LI>
+ Several items in the std namespace (notably the stream
+ functions) weren't scoped correctly. These were all fixed
+ with ``using namespace std'' or explicit qualification, as
+ needed.
+
+ <LI>
+ VC6 can't handle the template functions used for image packing
+ and unpacking, so those were replaced.
+ </UL>
+
+<H2>Changes from Version 0.1 to Version 0.2</H2>
+
+<P>
+In lib/dsurf, bit counts for green and blue channels were reversed.
+This caused incorrect drawing-surface configuration reports for normal
+color channels and accumulation buffer channels, and also confused
+code that determined errors in color values.
+
+<P>
+In lib/dsurf, the expression for computing bits-in-error was in error. :-)
+
+<P>
+Switched from egcs to g++ in common.mak.
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/cleanup.html b/doc/html/cleanup.html
new file mode 100644
index 0000000..14f0875
--- /dev/null
+++ b/doc/html/cleanup.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>cleaning up loose ends in glean</TITLE>
+ <META NAME="description" CONTENT="loose ends in glean that need cleanup">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>Cleaning up the loose ends</H1>
+
+<P>
+Many loose-end projects are marked by comments containing "XXX".
+Any of those you'd like to tackle are fair game.
+
+<P>
+Some other things that would be nice:
+<UL TYPE=DISC>
+ <LI>Use <B>const</B> more consistently throughout the code.
+ <LI>Use <B>string</B> in preference to <B>char*</B> where possible.
+ <LI>Add the concept of test categories, assign each test to one or
+ more of them, and add a way to run all the tests in a given
+ category.
+ <LI>Push the <B>Test</B> class hierarchy down one more level of detail.
+ (I actually did this, factoring out everything that's common to
+ classes like BasicTest, but it turned out to be more awkward to
+ use than just cutting and pasting code, so I backed out the changes.
+ After a few more tests are written, it should be more clear how to do
+ this correctly.)
+ <LI>Automated checks for memory leaks.
+ <LI>GLX 1.3 support.
+</UL>
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644
index 0000000..e60ac95
--- /dev/null
+++ b/doc/html/index.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>glean doc</TITLE>
+ <META NAME="description" CONTENT="glean OpenGL test suite documentation">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1><I>glean</I>: An <A HREF="http://www.opengl.org">OpenGL</A> Test and
+ Benchmarking Suite</H1>
+
+<P>
+Welcome! This is the <I>glean</I> documentation home page.
+
+<UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+</UL>
+
+<P>
+<B>Warning:</B> This software is a work in progress.
+Despite the best efforts of the contributors, there may be discrepancies
+between the documentation and the code.
+
+
+</BODY>
+</HTML>
diff --git a/doc/html/newfeat.html b/doc/html/newfeat.html
new file mode 100644
index 0000000..c2a48e7
--- /dev/null
+++ b/doc/html/newfeat.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>adding new infrastructure features to glean</TITLE>
+ <META NAME="description" CONTENT="adding new infrastructure features to glean">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>Adding new infrastructure features to <I>glean</I></H1>
+
+<P>
+(Thanks to Neal Tringham for most of these.)
+
+<H2>On all systems</H2>
+
+It might be useful to add a command-line option that would force
+<I>glean</I> to overwrite an existing database, which is something
+that it refuses to do now. Probably the best way to implement this
+would be to recursively delete the old results directory before
+creating a new one, since the set of tests may have changed in
+unpredictable ways. This code would be system-dependent, so distinct
+versions would be needed for all operating systems.
+
+<H2>On Windows</H2>
+
+<H3>Non-default color depths</H3>
+
+<I>glean</I> and the other tools in the suite run only at the default
+screen color depth. It would be useful to add a command-line option
+that switches to a new depth, because some graphics cards accelerate
+only some color depths. Note that the usual method for doing this
+(<CODE>ChangeDisplaySettings</CODE>) can't be guaranteed to work on
+Windows 95, and using DirectDraw to change the depth causes some
+drivers to crash. However, it would be valuable on Windows 98 and
+perhaps on Windows 2000. Documenting the need to switch color depths
+manually on Windows 95 (and Linux!) would cover the other cases.
+
+<H3>Supporting old standalone 3D cards</H3>
+
+<I>glean</I> uses the normal ICD mechanism to access the OpenGL
+driver. This means that graphics on older standalone cards (such as
+3Dfx Voodoo 1 and Voodoo 2) will never be accelerated, and the test
+results will be valueless on those cards. Probably the best solution
+is to use the upcoming GLSetup API, which allows the proper driver to
+be loaded. If this is done, we'll need to make sure that tests which
+create more than one window are not run on the older cards.
+
+<P>
+A related issue is that GLUT also doesn't support standalone cards,
+so the tools which use it need to be modified to use the
+GLSetup API or some toolkit other than GLUT.
+
+<P>
+Note that there are further issues with supporting old 3Dfx cards.
+Neal Tringham reports:
+
+ <BLOCKQUOTE>
+
+ The problem is that even if the driver's been installed, the 3dfx
+ card might have been taken out later, leaving a driver which
+ faults as soon as you load the 3dfxvgl dll. As far as I know,
+ the only truly safe way to deal with this is to check for the
+ presence of the Glide dlls, load glide if they're present, and
+ then use the Glide API (grGetNumBoards or something with a
+ vaguely similar name) to actually detect the presence of the
+ hardware. If its there, you should be able to load 3dfxvgl.dll
+ safely.
+
+ </BLOCKQUOTE>
+
+<P>
+Perhaps the GLSetup implementation will cover this.
+
+<H3>Supporting multi-card systems</H3>
+
+For systems with multiple graphics cards, it would be nice to have a
+command-line option that specifies the card to be tested. This could
+be similar to the <CODE>display</CODE> option used on X11-based
+systems.
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/newtest.html b/doc/html/newtest.html
new file mode 100644
index 0000000..eafcdda
--- /dev/null
+++ b/doc/html/newtest.html
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>adding new tests to glean</TITLE>
+ <META NAME="description" CONTENT="adding new tests to glean">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>Adding new tests to <I>glean</I></H1>
+
+<P>
+On this page, we'll consider some general testing principles and
+suggest areas in which new tests are needed.
+When you're ready to implement a new test, check out the
+<A HREF="overview.html">overview of <I>glean</I> internals</A>.
+
+<H2>Guidelines for writing <I>glean</I> tests</H2>
+
+<P>
+To define a new test, first create a new test class derived from
+<B>Test</B>. Most of the time you'll want to write tests
+that run on all drawing surface configurations and are portable
+(in the sense that they don't use any OS- or window-system-dependent
+data structures exposed in the <B>Environment</B>, <B>WindowSystem</B>,
+and <B>DrawingSurface</B> classes). Starting from <B>BasicTest</B> may
+be easiest in those cases.
+
+<P>
+Once you've created a new test class, create one or more global
+objects of that class. The constructor for <B>Test</B> ensures that
+all such objects are automatically linked onto the master list of
+tests. (Creating test objects dynamically isn't recommended, but if
+you can make a good argument for it we can figure out the rules needed to
+make it work.) Every test must have a good description; it's very much
+worthwhile to add text that will help the user understand the results
+or debug the problem if something goes wrong.
+
+<P>
+The first workhorse method in any test class is <B>run()</B>.
+Here are some things to remember about it:
+<UL TYPE=DISC>
+ <LI>
+ Every run must produce at least one PASS, FAIL, or NOTE message in the
+ log.
+ <LI>
+ In the case of failure, never just report failure and assume the user
+ will go add debugging code to the source to figure out exactly what failure
+ occurred. Ideally, provide enough information so that a driver
+ developer could start debugging his code without having to look at
+ the <I>glean</I> source first.
+ <LI>
+ Each test is producing two kinds of result: The result that goes into
+ the results database, and the result that remains in memory, accessible
+ through the test object. Eventually there will be tests that refer
+ back to the results of previous tests! (This is the reason for the
+ <B>hasRun</B> mechanism in the <B>Test</B> class; one test may be
+ forced to run another as a prerequisite, but we never need to run a
+ test twice.)
+ <LI>
+ Try to keep most test runs short. Eventually there will be a lot of
+ tests, and some machines will have a lot of drawing surface
+ configurations, and runtime will add up.
+ <LI>
+ Whenever possible, avoid tests that just generate images for the
+ user to check, rather than determining for themselves whether they
+ pass or fail. Even experts find it hard to tell which of two
+ complicated images is correct, and when some subtle part of the
+ OpenGL driver changes (like the precision with which colors are
+ computed) the user might be faced with comparing hundreds or
+ thousands of images for all existing tests.
+ <LI>
+ Prefer statistical summaries of error to simple pass/fail results.
+ They provide a lot more useful information, and in some cases they
+ make writing test comparisons much easier and more effective.
+</UL>
+
+<P>
+The second major method is <B>compare()</B>. Some things to keep in mind:
+<UL TYPE=DISC>
+ <LI>
+ When two test results are the same (whatever that means for the
+ particular test in question), don't report that they are the same
+ unless the user has requested verbose output. Ideally, if two
+ test runs are identical, <I>glean</I> should report nothing.
+ <LI>
+ Subject to the constraint in the previous item, every comparison
+ must yield at least one SAME or DIFF message in the log.
+ <LI>
+ As with <B>run()</B>, statistical summaries are preferable to simple
+ pass/fail assessments.
+</UL>
+
+<H2>New tests</H2>
+
+<P>
+Here are some suggestions for tests that could be added to <I>glean</I>.
+(These are not listed in any particular order; any of them would be
+worthwhile.)
+
+<UL TYPE=DISC>
+ <LI>
+ Quake3 Arena.
+ <BR>
+ We could use a set of tests that check everything John Carmack mentioned
+ in <A HREF="http://www.quake3arena.com/news/glopt.html">
+ http://www.quake3arena.com/news/glopt.html</A>.
+ <LI>
+ Default state check.
+ <BR>
+ The OpenGL spec defines initial values for all state variables, and
+ many programs (including <I>glean</I>!) depend on those initial
+ values being correct. It would be great to have a test that actually
+ verified them.
+ <LI>
+ Enumerant coverage check.
+ <BR>
+ It would be good to verify that each OpenGL command actually accepts
+ all the argument values that it's supposed to accept, without generating
+ an error. Conversely, it would be nice to know that errors are
+ generated appropriately when illegal arguments are used.
+ <LI>
+ Regression tests.
+ <BR>
+ (This is especially relevant to everyone working on Mesa.)
+ Regression tests simply check that a previously-discovered bug or
+ performance problem doesn't reappear after later changes to an OpenGL
+ driver. Regression tests are really valuable, because bugs tend to
+ appear in the parts of the driver that are the most difficult to
+ implement correctly. Therefore, writing tests in response to each bug
+ report tends to cluster tests in precisely the area where they're most
+ needed. As a general principle, whenever you report a bug or fix a bug,
+ you could write a <I>glean</I> test to make sure that bug will never
+ reappear.
+ <LI>
+ Stress tests.
+ <BR>
+ Stress tests assess the robustness of an OpenGL implementation. Some
+ possibilities are: create and download many texture objects, then
+ switch rapidly from one to another; perform many buffer swaps in
+ rapid succession; execute ten thousand glClear() operations and see
+ whether the hardware FIFO times out; and create a large number of windows
+ and rendering contexts and randomly bind arbitrary pairs of them.
+ <LI>
+ Limits tests.
+ <BR>
+ Every OpenGL implementation has limits (sometimes enforced by the graphics
+ hardware) and these often determine how applications must be written.
+ For example, it would be good to know the maximum acceptable texture
+ size for a variety of texture formats; the largest image that can
+ be passed to glDrawPixels(); the maximum number of vertices that can
+ be placed in a triangle strip or vertex array; and the maximum number of
+ windows or rendering contexts that can be created.
+ <LI>
+ Window-system binding tests.
+ <BR>
+ Most tests concentrate on OpenGL itself, but an area that must not be
+ overlooked is the window system binding (GLX or WGL). It would be useful
+ to test the window system binding's extension string and all the basic
+ operations like context creation, copy, and deletion. Sharing texture
+ objects and display lists is important to test.
+ <LI>
+ Core OpenGL correctness tests.
+ <BR>
+ Most OpenGL implementations have been checked with the OpenGL
+ conformance tests. However, the conformance tests are lax in some
+ areas due to historical reasons. One way to address this would be
+ to add some correctness tests to <I>glean</I>. Check the contents
+ page of the OpenGL spec; each heading is a good suggestion for a
+ test.
+</UL>
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/next.html b/doc/html/next.html
new file mode 100644
index 0000000..5849046
--- /dev/null
+++ b/doc/html/next.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>next steps for using and enhancing glean</TITLE>
+ <META NAME="description" CONTENT="using and enhancing glean">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>Where do we go from here?</H1>
+
+<P>
+This release of <I>glean</I> is just a beginning. With a little
+luck, and if the open-source development process works well,
+<I>glean</I> will eventually become a comprehensive tool helping consumers
+to choose the best OpenGL-based products and developers to create
+them. Here's what we need to do next.
+
+<UL TYPE=DISC>
+ <LI><A HREF="newtest.html">Add new tests.</A>
+ <LI><A HREF="newfeat.html">Add new features to the infrastructure.</A>
+ <LI><A HREF="repo.html">Start building a repository of results.</A>
+ <LI><A HREF="port.html">Port <I>glean</I> to other operating systems.</A>
+ <LI><A HREF="cleanup.html">Clean up some loose ends.</A>
+</UL>
+
+<P>
+Please consider volunteering for some part of the jobs above.
+These projects are great candidates for open-source methods: they
+won't take too much of your time, you can work independently, and
+everything you contribute will have great leverage to help make sure 3D
+graphics is Done Right. Contact
+<A HREF="mailto:glean@pobox.com">glean@pobox.com</A> if you can help.
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/overview.html b/doc/html/overview.html
new file mode 100644
index 0000000..c72191c
--- /dev/null
+++ b/doc/html/overview.html
@@ -0,0 +1,247 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>overview of glean internals</TITLE>
+ <META NAME="description" CONTENT="glean internal classes and objects">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>Overview of <I>glean</I> internals</H1>
+
+<H2>Directory structure</H2>
+
+<P>
+Starting at <KBD>$GLEAN_ROOT</KBD>, you'll see <KBD>bin</KBD>,
+<KBD>include</KBD>, and <KBD>lib</KBD> directories.
+These are initially empty, and are filled by the Makefile in
+<KBD>src</KBD>.
+
+<P>
+<KBD>$GLEAN_ROOT</KBD> also contains documentation in <KBD>doc</KBD>,
+common Makefile templates in <KBD>make</KBD>, sample result files in
+<KBD>results</KBD>, and source code in <KBD>src</KBD>.
+The Makefile templates are particularly interesting, since they
+automate nearly all of the process of defining Makefiles.
+
+<P>
+cd into <KBD>src</KBD>, and take a look around.
+The main Makefile resides here. There are also subdirectories for
+<I>glean</I> itself (<KBD>glean</KBD>), a wrapper for OpenGL header
+files that covers up some Windows-specific problems (<KBD>glh</KBD>),
+libraries that are used by multiple tools (<KBD>libs</KBD>), and
+code for tools like <I>showvis</I> (<KBD>tools</KBD>). The Makefile
+ensures that everything in the subdirectories is built in the correct
+order.
+
+<H2>Libraries</H2>
+
+<P>
+There are several libraries providing services that you may want when
+you start writing tests. These particular libraries are of sufficiently
+general usefulness that they're broken out into separate directories.
+(As we'll see later, some other services are local to the <KBD>glean</KBD>
+subdirectory.)
+<UL TYPE=DISC>
+ <LI>
+ <B>dsurf</B>
+ <BR>
+ This library provides a portable interface to drawing surface
+ configuration information (pixel format descriptors under Windows,
+ and extended X11 Visuals under X). It also provides the filtering
+ capability that's used by <I>showvis</I> and <I>glean</I> to
+ select configurations that match particular criteria.
+ <LI>
+ <B>image</B>
+ <BR>
+ The basic abstraction provided by this library is an in-memory
+ image structure that maps almost directly onto the image format
+ used by OpenGL. The library also offers utilities that read and
+ write TIFF files, tools to convert image data to a common format,
+ and convenience routines for invoking OpenGL operations like
+ reading and drawing images. Finally, there is a "registration"
+ utility that compares two images and attempts to align one on top
+ of the other in the position at which the images are most similar.
+ <LI>
+ <B>lex</B>
+ <BR>
+ This is a simple lexical analyzer. <B>libdsurf</B> uses it when
+ parsing drawing surface configuration criteria, and when constructing
+ a drawing surface configuration from a canonical description stored
+ in a results file.
+ <LI>
+ <B>rand</B>
+ <BR>
+ This set of classes provides uniform random values in several different
+ ranges and formats, in an OS-independent fashion. (This allows results
+ generated by <I>glean</I> on one OS to be compared to results on the same
+ hardware running under another OS.) It's based on a linear congruential
+ generator discussed in Knuth Vol. 2 and Numerical Recipes (2nd ed.).
+ <LI>
+ <B>stats</B>
+ <BR>
+ These classes generate simple statistical measures (min, max, mean,
+ standard deviation, etc.).
+ <LI>
+ <B>timer</B>
+ <BR>
+ This class provides timing services for benchmarking. It's capable of
+ calibrating measurement overhead, repeating benchmarks until a target
+ runtime is achieved, etc.
+</UL>
+
+<H2><I>glean</I> itself</H2>
+
+<P>
+<I>glean</I> consists of a relatively simple main program, a set of
+classes providing commonly-needed services, and the tests themselves.
+
+<P>
+The main program essentially just parses command-line options, creates
+the test environment (see below) and invokes each test in turn. The
+list of tests is generated automatically by test class constructors,
+so there's no need to maintain one independently. It should be fairly
+straightforward to replace the current main program with a graphical
+front-end, if anyone cares to do so.
+
+<P>
+The main service classes are as follows:
+
+<UL TYPE=DISC>
+ <LI>
+ <B>Options</B>
+ <BR>
+ This class collects all option information (the verbosity level,
+ names of the test results databases, etc.) in one place. Doing
+ so allows option setting to be separated from option interpretation.
+ <LI>
+ <B>Environment</B>
+ <BR>
+ This class encapsulates information about the test environment:
+ the options, an output stream for the test log, the window system,
+ etc. It is passed as an argument to each test.
+ <LI>
+ <B>WindowSystem</B>
+ <BR>
+ This class abstracts information about the window system, so that
+ most <I>glean</I> tests need not know the system under which they're
+ running. Its main task is to maintain lists of drawing surface
+ configurations, drawing surfaces, and OpenGL rendering contexts.
+ However, it does expose window-system-specific data (such as the
+ X11 Display pointer) so that window-system-specific tests can be
+ written. (Such tests must use conditional compilation to protect
+ references to non-portable function calls and data structures,
+ though.)
+ <LI>
+ <B>DrawingSurface</B> and <B>Window</B>
+ <BR>
+ A drawing surface is a canvas on which OpenGL rendering can take
+ place. Each drawing surface has a configuration that specifies
+ the buffers (color, depth, stencil, etc.) associated with the
+ surface.
+ The prototypical drawing surface is the window, which adds size
+ information and buffer-swap capability that's used by most tests.
+ Eventually we will need to add more drawing surfaces to <I>glean</I>,
+ for example, the PBuffers supported under GLX version 1.3.
+ <LI>
+ <B>RenderingContext</B>
+ <BR>
+ A rendering context encapsulates all OpenGL state information
+ (except for the contents of the drawing surface). In general,
+ in order to render, you must create a drawing surface, create
+ a rendering context, and then bind the two (using a service
+ provided by the <B>WindowSystem</B> class). Then you can use
+ ordinary OpenGL commands freely.
+</UL>
+
+<P>
+A few general utilities are also available:
+<UL TYPE=DISC>
+ <LI>
+ <B>useScreenCoords()</B> (<KBD>glutils.h</KBD>)
+ <BR>
+ Sets up the modelview and projection matrices so that OpenGL
+ object coordinates correspond directly to screen pixel
+ coordinates. (Note: The origin of the coordinate system is
+ at the lower left corner of the window.) This is convenient
+ for most tests of rasterization operations.
+ <LI>
+ <B>RandomMesh2D</B> (<KBD>geomutil.h</KBD>)
+ <BR>
+ Creates a 2D array of points that fit within a given bounding
+ rectangle, but are displaced by random amounts from the lattice
+ points within it. This is especially useful for benchmarking,
+ because it yields randomly sized and oriented triangles whose
+ average area is nevertheless accurately known.
+</UL>
+
+<P>
+To create a new test, you need do little more than create a new
+.cpp file in the <KBD>glean</KBD> subdirectory. (The Makefile
+will handle its dependencies and build it automatically.)
+All tests are derived from the base class <B>Test</B>. For truly
+new types of tests you'll need to derive a new class, but for many
+common types of tests you can start by copying a test that already
+exists. Here are some examples:
+
+<UL TYPE=DISC>
+ <LI>
+ <B>BasicTest</B> (<KBD>tbasic.cpp</KBD>)
+ <BR>
+ This is a good outline for any
+ simple test that runs in one window with one rendering context,
+ generating a result for each drawing surface configuration that
+ meets specified criteria. If your test is of this type, you may
+ be able to copy <KBD>tbasic.cpp</KBD> and modify just the functions
+ <B>runOne()</B>, <B>compareOne()</B>, <B>put()</B>, and <B>get()</B>.
+ It may be instructive to compare <KBD>tbasic.cpp</KBD> with
+ <KBD>tgetstr.cpp</KBD>, which is derived in just that way.
+ <LI>
+ <B>TexBindPerf</B> (<KBD>tchgperf.cpp</KBD>)
+ <BR>
+ This test demonstrates how to measure performance, by benchmarking
+ texture binding time. It's a bit more complicated than
+ <B>BasicTest</B>, but the structure is basically the same, and
+ most of the work is concentrated in the four functions mentioned
+ above.
+ <LI>
+ <B>RGBTriStripTest</B> (<KBD>trgbtris.cpp</KBD>)
+ <BR>
+ This shows how to save and compare TIFF images. While it's not a
+ good idea to make too many tests dependent on image comparisons
+ (because they're not particularly robust), there are cases like
+ regression testing where image comparison may be a good approach.
+</UL>
+
+<P>
+That's pretty much all there is to it. The <I>glean</I> framework
+provides most of the mechanisms needed to develop simple tests.
+Now it's time to create a good set of tests and thereby make a new
+tool that's valuable to the entire OpenGL community.
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/port.html b/doc/html/port.html
new file mode 100644
index 0000000..7252b65
--- /dev/null
+++ b/doc/html/port.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>porting glean to new environments</TITLE>
+ <META NAME="description" CONTENT="porting glean to new environments">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>Porting <I>glean</I> to new environments</H1>
+
+<P>
+Thanks to <A HREF="mailto:johan.smet@glo.be">Johan Smet</A>,
+we have a working version of <I>glean</I> for Microsoft Windows,
+using Visual C++ version 6.
+
+<P>
+Porting <I>glean</I> to BeOS and MacOS would be well worthwhile.
+
+<P>
+Porting <I>glean</I> to other UNIX variants should be straightforward, but I
+haven't looked into it.
+
+<P>
+In all of these cases, most of the work is in the window system
+code (src/libs/dsurf, src/glean/winsys.cpp, src/glean/dsurf.cpp).
+Some other things are needed in src/libs/timer and src/glean/environ.cpp.
+It's always possible that differences in compilers will result in a
+need for more pervasive changes; some problems of this type did arise
+during the port to Windows.
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/repo.html b/doc/html/repo.html
new file mode 100644
index 0000000..a112980
--- /dev/null
+++ b/doc/html/repo.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>repository for glean results</TITLE>
+ <META NAME="description" CONTENT="glean results repository">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>A repository of <I>glean</I> results</H1>
+
+<P>
+After <I>glean</I> becomes a bit more comprehensive, it would be nice
+to accumulate results and make them accessible through a
+website. For example, if you're considering buying a graphics card,
+or you want to survey all cards to see whether you can count on using
+a given feature, this website would be the place to go.
+Creating an index for this database would be an interesting challenge;
+at the least you'd have to deal with <I>glean</I> version, CPU type,
+graphics card type, OS type, OS version, and driver version; maybe
+graphics chip revisions, too.
+
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/run.html b/doc/html/run.html
new file mode 100644
index 0000000..66d76a8
--- /dev/null
+++ b/doc/html/run.html
@@ -0,0 +1,248 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>How to run glean</TITLE>
+ <META NAME="description" CONTENT="How to use the glean test suite">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>How do I run <I>glean</I>?</H1>
+
+<P>
+<I>Note: These instructions assume you're running glean on a
+GNU/Linux system. We hope the translation to running glean on a
+Windows system is straightforward. If not, we're always happy
+to receive additional documentation for the distribution. :-)</I>
+
+<P>
+<I>glean</I> runs in two modes: Gathering information about your
+OpenGL implementation (<I>run mode</I>) and comparing results of two
+previous runs (<I>compare mode</I>). After using <I>glean</I> in
+either mode, you may also find it helpful to evaluate results with
+other tools in the suite.
+
+<H2>Generating test results</H2>
+
+<P>
+To analyze the OpenGL implementation on your machine, first choose
+a directory name and then run <I>glean</I>, instructing it to store
+results in that directory:
+<PRE>
+ $GLEAN_ROOT/bin/glean -r myogl
+</PRE>
+The results directory must not exist prior to running <I>glean</I>;
+<I>glean</I> will not overwrite existing information.
+
+<P>
+As glean runs, it produces a log containing information like
+the following:
+<PRE>
+blendFunc: FAIL rgb8, db, z16, s8, accrgba16, win+pmap, id 34
+ source factor = GL_SRC_ALPHA, dest factor = GL_ONE_MINUS_SRC_ALPHA
+ Readback had 1.00002 bits in error; blending had 1.43898 bits in error.
+
+texBindPerf: PASS rgb8, db, z16, s8, accrgba16, win+pmap, id 34
+ Approximate texture binding time = 10.8911 microseconds.
+ Range of valid measurements = [9.34022, 16.2041]
+
+getString: PASS rgb8, db, z16, s8, accrgba16, win+pmap, id 34
+</PRE>
+Each test produces output including its name, a description of the
+format of the window in which it is run, and a brief summary of its
+results. Each summary always includes one of the words PASS, FAIL,
+or NOTE; the meaning of the first two is obvious, and NOTE simply
+means that something is worthy of the reader's attention. (Some
+tests don't explicitly pass or fail; these generate only NOTEs.)
+
+<P>
+A more verbose log, including descriptions of each test,
+will be generated if you supply the <KBD>-v</KBD> option on the
+<I>glean</I> command line.
+
+<P>
+To run just a particular set of tests, or to exclude some tests from the
+usual run of all tests, you can use the <KBD>-t</KBD>
+option on the command line:
+<PRE>
+ $GLEAN_ROOT/bin/glean -r mysubset -t "basic+getString"
+ $GLEAN_ROOT/bin/glean -r mysubset -t "-blendFunc-texBindPerf"
+</PRE>
+
+<P>
+Some of the tests in <I>glean</I> (such as the texBindPerf test
+shown in the example above) involve benchmarking OpenGL operations.
+To obtain the most accurate, repeatable results for these tests, there
+should be no other processes running on your machine, and you should run
+<I>glean</I> at higher than normal priority. However, <I>glean</I>
+makes multiple sample runs and attempts to stabilize the system before
+taking measurements, in order to get sensible results even if you
+don't take those precautions.
+
+<H2>Comparing test results</H2>
+
+<P>
+To compare two previous runs, invoke <I>glean</I> with the <KBD>-c</KBD>
+(compare) option:
+<PRE>
+ $GLEAN_ROOT/bin/glean -c myogl anotherogl
+
+ texBindPerf: DIFF rgb8, db, z16, s8, accrgba16, win+pmap, id 34
+ myogl appears to have higher performance.
+
+ getString: DIFF rgb8, db, z16, s8, accrgba16, win+pmap, id 34
+ Extensions in anotherogl but not in myogl:
+ GL_ARB_multitexture
+ Extensions in myogl but not in anotherogl:
+ GL_EXT_shared_texture_palette
+ Extensions in both myogl and in anotherogl:
+ GL_EXT_abgr
+ GL_EXT_blend_color
+ GL_EXT_blend_logic_op
+ GL_EXT_blend_minmax
+ GL_EXT_blend_subtract
+ GL_EXT_multitexture
+ GL_EXT_paletted_texture
+ GL_EXT_point_parameters
+ GL_EXT_polygon_offset
+ GL_EXT_rescale_normal
+ GL_EXT_texture3D
+ GL_EXT_texture_object
+ GL_EXT_vertex_array
+ GL_MESA_resize_buffers
+ GL_MESA_window_pos
+ GL_SGIS_multitexture
+ GL_SGIS_texture_edge_clamp
+</PRE>
+<I>glean</I> will note any significant differences between the two
+runs, displaying the test name, the keyword DIFF, the format of the
+window used for the test, and an explanation of the differences.
+Again, you can generate a more extensive log by specifying the
+<KBD>-v</KBD> option on the command line. In addition to extra
+explanatory information, <I>glean</I> will also list tests without
+significant differences, marking them with the notation "SAME".
+
+<P>
+Some sample results files can be found in $GLEAN_ROOT/results.
+
+<H2>Looking at test results in detail</H2>
+
+<P>
+When you run <I>glean</I> with the <KBD>-r</KBD> option, <I>glean</I>
+uses the name of each test to create a subdirectory within the main
+test result directory you specified on the command line.
+
+<P>
+Within these subdirectories you'll find a text file named
+<KBD>results</KBD> containing the machine-readable form of the test
+results. The precise format of the data in the results file varies
+from test to test; you'll need to look at the source code to understand
+it fully.
+
+<P>
+One special case is that of TIFF images generated by a test. These
+also appear in the test's subdirectory, and have names of the form
+<KBD>iNNN.tif</KBD>, where <KBD>NNN</KBD> represents a three-digit
+number. The <I>glean</I> log will explain which test result is
+associated with which image number.
+
+<P>
+You can use the <I>showtiff</I> tool to display an image:
+<PRE>
+ $GLEAN_ROOT/bin/showtiff myogl/rgbTriStrip/i001.tif
+</PRE>
+Use the right-hand mouse button to pop up a menu of available commands.
+
+<P>
+You can also use the <I>difftiff</I> tool to compare two images:
+<PRE>
+ $GLEAN_ROOT/bin/difftiff myogl/rgbTriStrip/i001.tif \
+ anotherogl/rgbTriStrip/i001.tif
+</PRE>
+Again, pressing the right-hand mouse button will pop up a command menu.
+<I>difftiff</I> allows you to display either image, a difference image
+(using selectable difference threshold and color), or a difference image
+overlayed on one of the two base images. This makes it easier to spot
+subtle differences between images generated by two different OpenGL
+implementations.
+
+<H2>Drawing surface configurations and <I>showvis</I></H2>
+
+<P>
+In current OpenGL implementations, one creates a drawing surface
+(usually a window) by selecting a <I>configuration</I> that describes
+the depth of the color buffers, whether a Z buffer is present, etc.
+from those configurations that the implementation supports.
+You can list the drawing surface configurations that are available on
+your system with <I>showvis</I>:
+<PRE>
+$GLEAN_ROOT/bin/showvis
+
+rgb8, db, z16, s8, accrgba16, win+pmap, id 34
+</PRE>
+In this particular case, there is only one supported configuration.
+The color portion of the framebuffer is 24 bits deep (r, g, and b each
+have 8 bits) and it's double-buffered. There is a 16-bit depth (Z) buffer,
+an 8-bit stencil buffer, and an RGBA accumulation buffer with 16 bits per
+color component. The configuration can be used for creating windows and
+pixmaps. It has an X11 Visual ID of 34.
+
+<P>
+By default, <I>showvis</I> lists all the configurations your system supports.
+However, it's possible to ask <I>showvis</I> about configurations with
+specific characteristics. You do this by providing command-line options
+that are logical expressions using C syntax and involving variables that
+are related to attributes of drawing surface configurations. You may
+also request that the configurations be listed in increasing or decreasing
+order of any particular attribute. Some examples:
+<PRE>
+ $GLEAN_ROOT/bin/showvis db
+</PRE>
+Lists all drawing surface configurations that support double buffering.
+<PRE>
+ $GLEAN_ROOT/bin/showvis "window && rgb && r == g && g == b, min z"
+</PRE>
+Lists all drawing surface configurations for RGB windows where the three
+color channels have equal size, sorted with smallest Z first.
+
+<P>
+You may also use these filter expressions to restrict <I>glean</I> to
+a particular set of drawing surface configurations. For example,
+<PRE>
+ $GLEAN_ROOT/bin/glean -r rgbWindows --visuals "rgb && window"
+</PRE>
+would run only those <I>glean</I> tests that can be run on RGB windows.
+Color index windows, tests that only run on pixmaps, etc., would be
+omitted.
+
+<P>
+For more information on filter expressions, try executing:
+<PRE>
+ $GLEAN_ROOT/bin/showvis --help
+</PRE>
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>
diff --git a/doc/html/whatis.html b/doc/html/whatis.html
new file mode 100644
index 0000000..91dd940
--- /dev/null
+++ b/doc/html/whatis.html
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <TITLE>What is glean?</TITLE>
+ <META NAME="description" CONTENT="glean purpose and overview">
+ <META NAME="author" CONTENT="Allen Akin">
+ <LINK REV="made" HREF="mailto:glean@pobox.com">
+</HEAD>
+
+<BODY TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"
+ BGCOLOR="#FFFFFF">
+
+<H1>What is <I>glean</I>?</H1>
+
+<P>
+<I>glean</I> is a suite of tools for evaluating the quality of an
+OpenGL implementation and diagnosing any problems that are discovered.
+<I>glean</I> also has the ability to compare two OpenGL implementations and
+highlight the differences between them.
+
+<P>
+Who should care about <I>glean</I>?
+
+<UL>
+ <LI>Anyone who buys or reviews graphics cards.
+ <BR>
+ <I>glean</I> gives you the ability to compare performance, features,
+ and image quality of different graphics cards. Since the source code
+ is freely available, you can customize <I>glean</I> to add tests for
+ the things that are most important to you.
+
+ <LI>Software developers.
+ <BR>
+ With <I>glean</I> you can learn which features really work for a
+ given combination of hardware and driver. You can also find the
+ timing for basic drawing operations, mode changes, texture
+ downloads, etc. so that you can maximize the performance of your
+ application.
+
+ <LI>OpenGL driver developers.
+ <BR>
+ <I>glean</I> can increase your confidence that your driver software
+ is correct and efficient. It also allows you to compare a new release
+ to a previous release, to make sure that there are no regressions in
+ quality or performance.
+</UL>
+
+<P>
+<I>glean</I> is provided under an "X11-style" copyright, which permits
+it and its derivatives to be used at no cost for both commercial and
+non-commercial projects.
+
+<H2>Acknowledgments</H2>
+
+<P>
+Development of the original <I>glean</I> framework and diagnosis tools
+was supported by
+<A HREF="http://www.precisioninsight.com/">Precision Insight, Inc.</A>
+
+<P>
+<A HREF="mailto:johan.smet@glo.be">Johan Smet</A> took on the Herculean
+job of porting <I>glean</I> to Microsoft Windows. The importance of
+this work cannot be understated! In addition to making <I>glean</I>
+useful to a great many more people, it enlarges the pool of developers
+that can contribute to <I>glean</I>.
+
+<P>
+I'm also grateful to <A HREF="mailto:brian@precisioninsight.com">Brian Paul</A>
+and <A HREF="http://www.valinux.com/">VA Linux</A> for providing
+<I>glean</I>'s first home on the Web.
+
+<P>
+<A HREF="mailto:cass@r3.nu">Cass Everitt</A> suggested several improvements
+in the ways <I>glean</I> uses C++.
+
+<P>
+Currently Allen Akin is coordinating enhancements to <I>glean</I>.
+Please address <I>glean</I>-related correspondence to
+<A HREF="mailto:glean@pobox.com">glean@pobox.com</A>.
+
+<HR>
+<SMALL>
+ <UL TYPE=DISC>
+ <LI> <A HREF="whatis.html">What is <I>glean</I>?</A>
+ <LI> <A HREF="build.html">How do I build <I>glean</I>?</A>
+ <LI> <A HREF="run.html">How do I run <I>glean</I>?</A>
+ <LI> <A HREF="next.html">Where do we go from here?</A>
+ <UL TYPE=CIRCLE>
+ <LI> <A HREF="newtest.html">Adding new tests</A>
+ <LI> <A HREF="newfeat.html">Adding new infrastructure features</A>
+ <LI> <A HREF="overview.html">Overview of <I>glean</I> internals</A>
+ <LI> <A HREF="repo.html">Creating a repository of results</A>
+ <LI> <A HREF="port.html">Porting <I>glean</I></A>
+ <LI> <A HREF="cleanup.html">Cleaning up loose ends</A>
+ </UL>
+ <LI> <A HREF="changes.html">What has changed recently?</A>
+ </UL>
+</SMALL>
+
+</BODY>
+</HTML>