summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/COPYING490
-rw-r--r--docs/MESA_agp_offset.spec95
-rw-r--r--docs/MESA_copy_sub_buffer.spec88
-rw-r--r--docs/MESA_pack_invert.spec138
-rw-r--r--docs/MESA_packed_depth_stencil.spec231
-rw-r--r--docs/MESA_pixmap_colormap.spec90
-rw-r--r--docs/MESA_program_debug.spec357
-rw-r--r--docs/MESA_release_buffers.spec85
-rw-r--r--docs/MESA_resize_buffers.spec82
-rw-r--r--docs/MESA_set_3dfx_mode.spec85
-rw-r--r--docs/MESA_sprite_point.spec191
-rw-r--r--docs/MESA_swap_control.spec132
-rw-r--r--docs/MESA_swap_frame_usage.spec201
-rw-r--r--docs/MESA_trace.spec360
-rw-r--r--docs/MESA_window_pos.spec127
-rw-r--r--docs/MESA_ycbcr_texture.spec204
-rw-r--r--docs/MiniGLX.html547
-rw-r--r--docs/README.3DFX830
-rw-r--r--docs/README.AMIWIN181
-rw-r--r--docs/README.BEOS137
-rw-r--r--docs/README.CYGWIN256
-rw-r--r--docs/README.D3D124
-rw-r--r--docs/README.DJ275
-rw-r--r--docs/README.GGI26
-rw-r--r--docs/README.LYNXOS64
-rw-r--r--docs/README.MINGW3290
-rw-r--r--docs/README.MITS102
-rw-r--r--docs/README.NeXT6
-rw-r--r--docs/README.OS296
-rw-r--r--docs/README.OpenStep35
-rw-r--r--docs/README.QUAKE208
-rw-r--r--docs/README.THREADS52
-rw-r--r--docs/README.VMS38
-rw-r--r--docs/README.WIN32155
-rw-r--r--docs/README.WINDML146
-rw-r--r--docs/README.X11314
-rw-r--r--docs/README.directfb28
-rw-r--r--docs/RELNOTES-3.1146
-rw-r--r--docs/RELNOTES-3.212
-rw-r--r--docs/RELNOTES-3.2.132
-rw-r--r--docs/RELNOTES-3.3271
-rw-r--r--docs/RELNOTES-3.422
-rw-r--r--docs/RELNOTES-3.4.122
-rw-r--r--docs/RELNOTES-3.4.222
-rw-r--r--docs/RELNOTES-3.5228
-rw-r--r--docs/RELNOTES-4.0163
-rw-r--r--docs/RELNOTES-4.0.122
-rw-r--r--docs/RELNOTES-4.0.250
-rw-r--r--docs/RELNOTES-4.0.352
-rw-r--r--docs/RELNOTES-4.1308
-rw-r--r--docs/RELNOTES-5.085
-rw-r--r--docs/RELNOTES-5.0.146
-rw-r--r--docs/RELNOTES-5.0.246
-rw-r--r--docs/RELNOTES-5.1279
-rw-r--r--docs/RELNOTES-6.087
-rw-r--r--docs/RELNOTES-6.0.150
-rw-r--r--docs/RELNOTES-6.1112
-rw-r--r--docs/RELNOTES-6.252
-rw-r--r--docs/RELNOTES-6.2.150
-rw-r--r--docs/RELNOTES-6.3115
-rw-r--r--docs/RELNOTES-6.3.149
-rw-r--r--docs/RELNOTES-6.3.237
-rw-r--r--docs/RELNOTES-6.450
-rw-r--r--docs/RELNOTES-6.4.147
-rw-r--r--docs/RELNOTES-6.4.247
-rw-r--r--docs/RELNOTES-6.597
-rw-r--r--docs/VERSIONS1472
-rw-r--r--docs/banner.html27
-rw-r--r--docs/bugs.html49
-rw-r--r--docs/conform.html695
-rw-r--r--docs/contents.html101
-rw-r--r--docs/custom.html27
-rw-r--r--docs/cvs_access.html106
-rw-r--r--docs/cvs_branches.html80
-rw-r--r--docs/debugging.html38
-rw-r--r--docs/demos.html18
-rw-r--r--docs/devinfo.html206
-rw-r--r--docs/download.html134
-rw-r--r--docs/drivers.html221
-rw-r--r--docs/envvars.html46
-rw-r--r--docs/extensions.html34
-rw-r--r--docs/faq.html394
-rw-r--r--docs/fbdev-dri.html315
-rw-r--r--docs/games.html64
-rw-r--r--docs/glfbdev-driver.html90
-rw-r--r--docs/glu.html45
-rw-r--r--docs/helpwanted.html74
-rw-r--r--docs/index.html29
-rw-r--r--docs/install.html301
-rw-r--r--docs/intro.html306
-rw-r--r--docs/libraries.html57
-rw-r--r--docs/license.html86
-rw-r--r--docs/lists.html55
-rw-r--r--docs/mangling.html28
-rw-r--r--docs/modelers.html68
-rw-r--r--docs/news.html1223
-rw-r--r--docs/osmesa.html77
-rw-r--r--docs/pbuffers.html54
-rw-r--r--docs/perf.html68
-rw-r--r--docs/precompiled.html26
-rw-r--r--docs/relnotes.html47
-rw-r--r--docs/science.html72
-rw-r--r--docs/sourcedocs.html26
-rw-r--r--docs/subset-A.html3579
-rw-r--r--docs/subset.html33
-rw-r--r--docs/systems.html56
-rw-r--r--docs/thanks.html134
-rw-r--r--docs/utilities.html26
-rw-r--r--docs/utility.html44
-rw-r--r--docs/webmaster.html24
110 files changed, 19920 insertions, 0 deletions
diff --git a/docs/COPYING b/docs/COPYING
new file mode 100644
index 00000000000..b88946cc66b
--- /dev/null
+++ b/docs/COPYING
@@ -0,0 +1,490 @@
+
+Some parts of Mesa are copyrighted under the GNU LGPL. See the
+Mesa/docs/COPYRIGHT file for details.
+
+The following is the standard GNU copyright file.
+----------------------------------------------------------------------
+
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
diff --git a/docs/MESA_agp_offset.spec b/docs/MESA_agp_offset.spec
new file mode 100644
index 00000000000..8dcc72379cd
--- /dev/null
+++ b/docs/MESA_agp_offset.spec
@@ -0,0 +1,95 @@
+Name
+
+ MESA_agp_offset
+
+Name Strings
+
+ GLX_MESA_agp_offset
+
+Contact
+
+ Brian Paul, Tungsten Graphics, Inc. (brian.paul '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
+
+ unsigned int glXGetAGPOffsetMESA( const void *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
+ 27 July 2004 - use unsigned int instead of GLuint, void instead of GLvoid
diff --git a/docs/MESA_copy_sub_buffer.spec b/docs/MESA_copy_sub_buffer.spec
new file mode 100644
index 00000000000..43424a5f46b
--- /dev/null
+++ b/docs/MESA_copy_sub_buffer.spec
@@ -0,0 +1,88 @@
+Name
+
+ MESA_copy_sub_buffer
+
+Name Strings
+
+ GLX_MESA_copy_sub_buffer
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+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
+
diff --git a/docs/MESA_pack_invert.spec b/docs/MESA_pack_invert.spec
new file mode 100644
index 00000000000..53d5fca71b0
--- /dev/null
+++ b/docs/MESA_pack_invert.spec
@@ -0,0 +1,138 @@
+Name
+
+ MESA_pack_invert
+
+Name Strings
+
+ GL_MESA_pack_invert
+
+Contact
+
+ Brian Paul, Tungsten Graphics, Inc. (brian.paul '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
diff --git a/docs/MESA_packed_depth_stencil.spec b/docs/MESA_packed_depth_stencil.spec
new file mode 100644
index 00000000000..4f7ab1e28cf
--- /dev/null
+++ b/docs/MESA_packed_depth_stencil.spec
@@ -0,0 +1,231 @@
+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.
+
diff --git a/docs/MESA_pixmap_colormap.spec b/docs/MESA_pixmap_colormap.spec
new file mode 100644
index 00000000000..fb0b441cc58
--- /dev/null
+++ b/docs/MESA_pixmap_colormap.spec
@@ -0,0 +1,90 @@
+Name
+
+ MESA_pixmap_colormap
+
+Name Strings
+
+ GLX_MESA_pixmap_colormap
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+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
diff --git a/docs/MESA_program_debug.spec b/docs/MESA_program_debug.spec
new file mode 100644
index 00000000000..391d39fa70a
--- /dev/null
+++ b/docs/MESA_program_debug.spec
@@ -0,0 +1,357 @@
+Name
+
+ MESA_program_debug
+
+Name Strings
+
+ GL_MESA_program_debug
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+Status
+
+ XXX - Not complete yet!!!
+
+Version
+
+ Last Modified Date: July 20, 2003
+ Author Revision: 1.0
+ $Date: 2004/03/25 01:42:41 $ $Revision: 1.4 $
+
+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();
+
diff --git a/docs/MESA_release_buffers.spec b/docs/MESA_release_buffers.spec
new file mode 100644
index 00000000000..8db9350d831
--- /dev/null
+++ b/docs/MESA_release_buffers.spec
@@ -0,0 +1,85 @@
+Name
+
+ MESA_release_buffers
+
+Name Strings
+
+ GLX_MESA_release_buffers
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+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
diff --git a/docs/MESA_resize_buffers.spec b/docs/MESA_resize_buffers.spec
new file mode 100644
index 00000000000..f79d29c405a
--- /dev/null
+++ b/docs/MESA_resize_buffers.spec
@@ -0,0 +1,82 @@
+Name
+
+ MESA_resize_buffers
+
+Name Strings
+
+ GL_MESA_resize_buffers
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+Status
+
+ Shipping (since Mesa version 2.2)
+
+Version
+
+ $Id: MESA_resize_buffers.spec,v 1.3 2004/03/25 01:42:42 brianp Exp $
+
+Number
+
+ 196
+
+Dependencies
+
+ Mesa 2.2 or later is required.
+
+Overview
+
+ Mesa is often used as a client library with no integration with
+ the computer's window system (an X server, for example). And since
+ Mesa does not have an event loop nor window system callbacks, it
+ cannot properly respond to window system events. In particular,
+ Mesa cannot automatically detect when a window has been resized.
+
+ Mesa's glViewport command queries the current window size and updates
+ its internal data structors accordingly. This normally works fine
+ since most applications call glViewport in responce to window size
+ changes.
+
+ In some situations, however, the application may not call glViewport
+ when a window size changes but would still like Mesa to adjust to
+ the new window size. This extension exports a new function to solve
+ this problem.
+
+New Procedures and Functions
+
+ void glResizeBuffersMESA( void )
+
+New Tokens
+
+ none
+
+Additions to the OpenGL Specification (no particular section)
+
+ The glResizeBuffersMESA command may be called when the client
+ determines that a window has been resized. Calling
+ glResizeBuffersMESA causes Mesa to query the current window size
+ and adjust its internal data structures. This may include
+ reallocating depth, stencil, alpha and accumulation buffers.
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None
+
+Errors
+
+ INVALID_OPERATION is generated if ResizeBuffersMESA is called betweeen
+ Begin and End.
+
+New State
+
+ None.
+
+New Implementation Dependent State
+
+ None.
+
+Revision History
+
+ * Revision 1.0 - Initial specification
diff --git a/docs/MESA_set_3dfx_mode.spec b/docs/MESA_set_3dfx_mode.spec
new file mode 100644
index 00000000000..06d97ca021f
--- /dev/null
+++ b/docs/MESA_set_3dfx_mode.spec
@@ -0,0 +1,85 @@
+Name
+
+ MESA_set_3dfx_mode
+
+Name Strings
+
+ GLX_MESA_set_3dfx_mode
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+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
diff --git a/docs/MESA_sprite_point.spec b/docs/MESA_sprite_point.spec
new file mode 100644
index 00000000000..9422ff57295
--- /dev/null
+++ b/docs/MESA_sprite_point.spec
@@ -0,0 +1,191 @@
+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.
+
+
+
diff --git a/docs/MESA_swap_control.spec b/docs/MESA_swap_control.spec
new file mode 100644
index 00000000000..ecc674649e2
--- /dev/null
+++ b/docs/MESA_swap_control.spec
@@ -0,0 +1,132 @@
+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.
diff --git a/docs/MESA_swap_frame_usage.spec b/docs/MESA_swap_frame_usage.spec
new file mode 100644
index 00000000000..38cf51a2092
--- /dev/null
+++ b/docs/MESA_swap_frame_usage.spec
@@ -0,0 +1,201 @@
+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.
diff --git a/docs/MESA_trace.spec b/docs/MESA_trace.spec
new file mode 100644
index 00000000000..f0a79c7df99
--- /dev/null
+++ b/docs/MESA_trace.spec
@@ -0,0 +1,360 @@
+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.4 2004/03/25 01:42:42 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)
+
diff --git a/docs/MESA_window_pos.spec b/docs/MESA_window_pos.spec
new file mode 100644
index 00000000000..eb1d0d1f068
--- /dev/null
+++ b/docs/MESA_window_pos.spec
@@ -0,0 +1,127 @@
+Name
+
+ MESA_window_pos
+
+Name Strings
+
+ GL_MESA_window_pos
+
+Contact
+
+ Brian Paul, brian.paul 'at' tungstengraphics.com
+
+Status
+
+ Shipping (since Mesa version 1.2.8)
+
+Version
+
+ $Id: MESA_window_pos.spec,v 1.4 2004/03/25 01:42:42 brianp Exp $
+
+Number
+
+ 197
+
+Dependencies
+
+ OpenGL 1.0 is required.
+ The extension is written against the OpenGL 1.2 Specification
+
+Overview
+
+ In order to set the current raster position to a specific window
+ 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
+ frustum clipping.
+
+ This extension provides a set of functions to directly set the
+ current raster position, bypassing the modelview matrix, the
+ projection matrix and the viewport to window mapping. Furthermore,
+ clip testing is not performed.
+
+ This greatly simplifies the process of setting the current raster
+ position to a specific window coordinate prior to calling DrawPixels,
+ CopyPixels or Bitmap.
+
+New Procedures and Functions
+
+ void WindowPos2dMESA(double x, double y)
+ 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
+
+ none
+
+Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
+
+ - (2.12, p. 41) Insert after third paragraph:
+
+ Alternately, the current raster position may be set by one of the
+ WindowPosMESA commands:
+
+ void WindowPos{234}{sidf}MESA( T coords );
+ void WindowPos{234}{sidf}vMESA( T coords );
+
+ WindosPos4MESA takes four values indicating x, y, z, and w.
+ WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
+ x, y, and z with w implicitly set to 1 (or only x and y with z
+ implicititly set to 0 and w implicitly set to 1).
+
+ WindowPosMESA operates like RasterPos except that the current modelview
+ matrix, projection matrix and viewport parameters are ignored and the
+ clip test operation always passes. The current raster position values
+ are directly set to the parameters passed to WindowPosMESA. The current
+ color, color index and texture coordinate update the current raster
+ position's associated data.
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None
+
+GLX Protocol
+
+ Not specified at this time. However, a protocol message very similar
+ to that of RasterPos is expected.
+
+Errors
+
+ INVALID_OPERATION is generated if WindowPosMESA is called betweeen
+ Begin and End.
+
+New State
+
+ None.
+
+New Implementation Dependent State
+
+ None.
+
+Revision History
+
+ * Revision 1.0 - Initial specification
+ * Revision 1.1 - Minor clean-up (7 Jan 2000, Brian Paul)
+
diff --git a/docs/MESA_ycbcr_texture.spec b/docs/MESA_ycbcr_texture.spec
new file mode 100644
index 00000000000..0fa1f7b39dd
--- /dev/null
+++ b/docs/MESA_ycbcr_texture.spec
@@ -0,0 +1,204 @@
+Name
+
+ MESA_ycbcr_texture
+
+Name Strings
+
+ GL_MESA_ycbcr_texture
+
+Contact
+
+ Brian Paul, Tungsten Graphics, Inc. (brian.paul '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 101,
+ 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 2 YCBCR_MESA
+ UNSIGNED_SHORT_8_8_REV_MESA ushort 2 YCBCR_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 104,
+ add the following to Table 3.12 (Packed pixel fiedl assignments):
+
+ First Second Third Fourth
+ Format Element Element Element Element
+ ------ ------- ------- ------- -------
+ YCBCR_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.
+ 3 April 2004 - fix assorted inaccuracies
diff --git a/docs/MiniGLX.html b/docs/MiniGLX.html
new file mode 100644
index 00000000000..3429812993a
--- /dev/null
+++ b/docs/MiniGLX.html
@@ -0,0 +1,547 @@
+<!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>
diff --git a/docs/README.3DFX b/docs/README.3DFX
new file mode 100644
index 00000000000..037e8fa7cc6
--- /dev/null
+++ b/docs/README.3DFX
@@ -0,0 +1,830 @@
+
+ 3Dfx Glide device driver
+
+
+
+Requirements:
+-------------
+
+A Voodoo-based videocard/accelerator
+DOS (with DJGPP), Windows9x/2k (with MinGW), Linux
+Glide3x library for your OS
+
+http://sourceforge.net/projects/glide/
+
+
+
+How to compile:
+---------------
+
+DJGPP:
+ Place the Glide3 SDK in the top Mesa directory:
+ $(MESA)/glide3/include/
+ 3dfx.h, g3ext.h, glide.h, glidesys.h, glideutl.h, sst1vid.h
+ $(MESA)/glide3/lib/
+ libgld3x.a, libgld3i.a, glide3x.dxe
+ Type:
+ make -f Makefile.DJ X86=1 FX=1
+ Look into the makefile for further information.
+
+MinGW:
+ Place the Glide3 SDK in the top Mesa directory:
+ $(MESA)/glide3/include/
+ 3dfx.h, g3ext.h, glide.h, glidesys.h, glideutl.h, sst1vid.h
+ $(MESA)/glide3/lib/
+ libglide3x.a, glide3x.dll
+ Type:
+ make -f Makefile.mgw X86=1 FX=1
+ Look into the makefile for further information.
+
+Linux:
+ Place the Glide3 SDK in /usr/local/glide
+ /usr/local/glide/include/
+ 3dfx.h, g3ext.h, glide.h, glidesys.h, glideutl.h, sst1vid.h
+ /usr/local/glide/lib/
+ libglide3x.a, libglide3x.so
+ Type:
+ make linux-glide
+ or
+ make linux-x86-glide
+
+
+
+Compilation defines:
+--------------------
+
+FX_DEBUG
+ enable driver debug code
+FX_TRAP_GLIDE
+ enable Glide trace code
+FX_PACKEDCOLOR
+ use packed color in vertex structure
+FX_TC_NAPALM
+ map GL_COMPRESSED_RGB[A] to FXT1. Works with VSA100-based cards only.
+FX_COMPRESS_S3TC_AS_FXT1_HACK
+ map S3TC to FXT1
+FX_RESCALE_BIG_TEXURES_HACK
+ fake textures larger than HW can support
+ (see MESA_FX_MAXLOD environment variable)
+
+
+
+Environment variables:
+----------------------
+
+The following environment variables affect MesaFX. Those that affect Glide
+only, are beyond the scope of this section. Entries that don't have a "Value"
+field, can have any value whatsoever
+ ex: set MESA_FX_IGNORE_CMBEXT=y
+
+"Note" (*) means that the environment variable affects Glide, too; also, if
+the var is not found in the environment, it is searched in windoze registry.
+"Note" (!) means that the environment variable is not working as expected;
+may have undefined effects, might have effects only at Glide level or might
+not have any effect whatsoever. Caveat emptor! Those are to be revised soon.
+
+It is recommended to leave the envvars alone, so that Mesa/Glide will run with
+default values. Use them only when you experience crashes or strange behavior.
+
+FX_GLIDE_NUM_TMU
+ OS: all
+ HW: dual-TMU cards (Voodoo2, Avenger, Napalm)
+ Desc: force single-TMU
+ Note: (*)
+ Value: "1"
+FX_GLIDE_SWAPPENDINGCOUNT
+ OS: all
+ HW: all
+ Desc: max # of buffers allowed to build up
+ Note: (*) (!)
+ Value: "0", "1", "2", "3", "4", "5" or "6"
+FX_GLIDE_SWAPINTERVAL
+ OS: all
+ HW: all
+ Desc: number of vertical retraces to wait before swapping
+ Note: (*) (!) works only at Glide-level?
+SSTH3_SLI_AA_CONFIGURATION
+ OS: all
+ HW: VSA100-based cards
+ Desc: SLI/AA setup
+ Note: (*) (!) works only at Glide-level?
+ Value:
+ 1, 2, 4 chip cards
+ "0" - SLI & AA disable
+ "1" - SLI disabled, 2 sample AA enabled
+ 2, 4 chip cards
+ "2" - 2-way SLI enabled, AA disabled
+ "3" - 2-way SLI enabled, 2 sample AA enabled
+ "4" - SLI disabled, 4 sample AA enabled
+ 4 chip cards
+ "5" - 4-way SLI enabled, AA disabled
+ "6" - 4-way SLI enabled, 2 sample AA enabled
+ "7" - 2-way SLI enabled, 4 sample AA enabled
+ "8" - SLI disabled, 8 sample AA enabled
+SST_DUALHEAD
+ OS: win32
+ HW: ?
+ Desc: ?
+ Note: (!) disabled?
+MESA_FX_NO_SIGNALS
+ OS: linux
+ HW: all
+ Desc: avoid installing signals
+ Note: (!) untested!
+MESA_FX_INFO
+ OS: all
+ HW: all
+ Desc: verbose to stderr
+ Value: any; special value "r" to redirect stderr to MESA.LOG
+MESA_FX_NOSNAP
+ OS: all
+ HW: Voodoo1, Rush, Banshee
+ Desc: do not snap vertices inside Mesa
+ Note: to be used with Glide3x that snaps vertices internally
+MESA_FX_POINTCAST
+ OS: all
+ HW: dual-TMU cards (some Voodoo1, Voodoo2, Avenger, Napalm)
+ Desc: try to use pointcast palette
+ Note: may give adverse effects on UMA cards (Avenger, Napalm)
+MESA_FX_IGNORE_PALEXT
+ OS: all
+ HW: all
+ Desc: disable 6666 palette
+MESA_FX_IGNORE_PIXEXT
+ OS: all
+ HW: Napalm
+ Desc: force 565 16bpp mode (traditional Voodoo, no 32/15bpp)
+MESA_FX_IGNORE_TEXFMT
+ OS: all
+ HW: Napalm
+ Desc: disable 32bit textures
+MESA_FX_IGNORE_CMBEXT
+ OS: all
+ HW: Napalm
+ Desc: disable Napalm combiners (color/alpha/texture)
+ Note: this option allows dual-TMU cards perform single-pass
+ trilinear, but some advanced (multi)texturing modes
+ won't work (GL_EXT_texture_env_combine)
+MESA_FX_IGNORE_MIREXT
+ OS: all
+ HW: all
+ Desc: disable mirror extension
+MESA_FX_IGNORE_TEXUMA
+ OS: all
+ HW: all
+ Desc: disable UMA
+MESA_FX_IGNORE_TEXUS2
+ OS: all
+ HW: all
+ Desc: disable Texus2
+MESA_FX_MAXLOD
+ OS: all
+ HW: non VSA-100 cards
+ Desc: enable large texture support using SW rescaling
+ Value:
+ "9" - 512x512 textures
+ "10" - 1024x1024 textures
+ "11" - 2048x2048 textures
+MESA_FX_ALLOW_VP
+ OS: all
+ HW: all
+ Desc: allow vertex program extensions
+MESA_GLX_FX
+ OS: linux
+ HW: Voodoo1, Rush, Voodoo2
+ Desc: display mode
+ Note: (!) experimental
+ Value:
+ "w" - windowed mode
+ "f" - fullscreen mode
+ "d" - disable glide driver
+ OS: win32
+ HW: Rush, Banshee, Avenger, Napalm
+ Desc: display mode
+ Note: (!) experimental
+ Value:
+ "w" - windowed mode
+
+
+
+Contact:
+--------
+
+Daniel Borca <dborca 'at' users 'dot' sourceforge 'dot' net>
+Hiroshi Morii <koolsmoky 'at' users 'dot' sourceforge 'dot' net>
+
+
+
+WARNING! The info below this line is outdated (yet some of it useful). WARNING!
+*******************************************************************************
+
+
+
+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.
+
+
+
+What do you need ?
+------------------
+
+ - A PC with a 3Dfx Voodoo1/2 Graphics or Voodoo Rush based board
+ (Pure3D, Monster 3D, R3D, Obsidian, Stingray 128/3D, etc.).
+ The Quantum3D Obsidian3D-2 X-24 requires some special env. setting
+ under Linux (more information in the "Useful Glide Environment
+ Variables");
+
+ - 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
+ version of the driver;
+
+ - A compiler supported by the Glide library (Micro$oft VC++ (tested),
+ Watcom (tested), GCC for Linux (tested), etc.);
+
+ - 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
+ normal screen in order to recover.
+
+
+
+Tested on:
+----------
+ Windows 95 - David Bucciarelli
+ Windows NT - Henri Fousse
+ MS-DOS
+ Linux - Daryll Strauss, Brian Paul, David Bucciarelli
+ FreeBSD
+ BeOS - Duncan Wilcox
+ MacOS - Fazekas Miklos
+
+
+What is able to do ?
+--------------------
+
+ - It is able accelerate points, lines and polygon with flat
+ shading, gouraud shading, Z-buffer, texture mapping, blending, fog and
+ antialiasing (when possible). There is also the support for rendering
+ in a window with a slow trick for the Voodoo Graphics (available only
+ for Linux) and at full speed with the Voodoo Rush chipset.
+ Under Linux is also possible to switch on-the-fly between the fullscreen
+ and in-window rendering hack.
+ There is also the support for using more than one Voodoo Graphics in the
+ some application/PC (you can create one context for each board and use
+ multiple video outputs for driving monitors, videoprojectors or HMDs).
+ The driver is able to fallback to pure software rendering when afeature
+ isn't supported by the Voodoo hardware (however software rendering is
+ very slow compared to hardware supported rendering)
+
+
+
+How to compile:
+---------------
+
+Linux:
+------
+ Here are the basic steps for using the 3Dfx hardware with Mesa
+ on Linux:
+
+ - You'll need the Glide library and headers. Mesa expects:
+ /usr/local/glide/include/*.h // all the Glide headers
+ /usr/local/glide/lib/libglide2x.so
+
+ If your Glide libraries and headers are in a different directory
+ you'll have to modify the Mesa-config and mklib.glide files.
+
+ - Unpack the MesaLib-3.1.tar.gz and MesaDemos-3.1.tar.gz archives;
+
+ - If you're going to use a newer Mesa/Glide driver than v0.27 then
+ unpack the new driver archive over the Mesa directory.
+
+ - In the Mesa-3.1 directory type "make linux-glide"
+
+ - Compilation _should_ finish without errors;
+
+ - Set your LD_LIBRARY_PATH environment variable so that the
+ libglide2x.so and Mesa library files can be found. For example:
+ setenv LD_LIBRARY_PATH "/usr/local/glide/lib:/SOMEDIR/Mesa-3.1/lib"
+
+ - You'll have to run Glide-based programs as root or set the suid
+ bit on executables;
+
+ - Try a demo:
+ cd gdemos
+ su
+ setenv MESA_GLX_FX f
+ ./gears (hit ESC to exit)
+
+ - You can find the demos especially designed for the Voodoo driver in
+ in the Mesa-3.1/3Dfx/demos directory (type "make" in order to compile
+ everything).
+
+MacOS:
+------
+ Check the WEB page at http://valerie.inf.elte.hu/~boga/Mesa.html
+
+MS Windows:
+-----------
+
+ For the MSVC++:
+ - The glide2x.lib have to be in the default MSVC++ lib directory;
+
+ - The Glide headers have to be in the default MSVC++ include directory;
+
+ - You must have the vcvars32.bat script in your PATH;
+
+ - Go to the directory Mesa-3.1 and run the mesafx.bat;
+
+ - The script will compile everything (Mesa-3.1/lib/OpenGL32.{lib,dll},
+ Mesa-3.1/lib/GLU32.{lib,dll}, Mesa-3.1/lib/GLUT32.{lib,dll} and
+ Voodoo demos);
+
+ - At the end, you will be in the Mesa-3.1/3Dfx/demos directory;
+
+ - Try some demo (fire.exe, teapot.exe, etc.) in order to check if
+ everything is OK (you can use Alt-Tab or Ctrl-F9 to switch between
+ the Voodoo screen and the windows desktop);
+
+ - Remember to copy the Mesa OpenGL32.dll, GLU32.dll and GLUT32.dll in the
+ some directory were you run your Mesa based applications.
+
+ - I think that you can easy change the Makefile.fx files in order
+ to work with other kind of compilers;
+
+ - To discover how open the 3Dfx screen, read the sources under
+ the Mesa-3.1/3Dfx/demos directory. You can use the GLUT library or
+ the Diego Picciani's wgl emulator.
+
+ NOTE: the MSVC++ 5.0 optimizer is really buggy. Also if you install the
+ SP3, you could have some problem (you can disable optimization in order
+ solve these kind of problems).
+
+
+Doing more with Mesa & Linux Glide:
+-----------------------------------
+
+ The MESA_GLX_FX environment variable can be used to coax most
+ GLX-based programs into using Glide (and the __GLUT library
+ is GLX-based__).
+
+ Full-screen 3Dfx rendering:
+ ---------------------------
+
+ 1. Set the MESA_GLX_FX variable to "fullscreen":
+
+ ksh:
+ export MESA_GLX_FX = "fullscreen"
+ csh:
+ setenv MESA_GLX_FX fullscreen
+
+ 2. As root, run a GLX-based program (any GLUT demo on Linux).
+
+ 3. Be careful: once the 3Dfx screen appears you won't be able
+ to see the GLUT windows on your X display. This can make using
+ the mouse tricky! One solution is to hook up your 3Dfx card to
+ a second monitor. If you can do this then set these env vars
+ first:
+
+ setenv SST_VGA_PASS 1
+ setenv SST_NOSHUTDOWN
+
+ or for the Voodoo2:
+
+ setenv SSTV2_VGA_PASS 1
+ setenv SSTV2_NOSHUTDOWN
+
+ Rendering into an X window with the help of the Voodoo hardware:
+ ----------------------------------------------------------------
+
+ 1. Start your X server in 16 bpp mode (XFree86: startx -- -bpp 16)
+ in order to have the best performance and the best visual
+ 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
+ OR
+ setenv MESA_GLX_FX window
+ setenv SST_VGA_PASS 1
+ setenv SST_NOSHUTDOWN 1
+
+ (the Voodoo2 requires to use "SSTV2_" instead "SST_").
+
+ 3. As root, try running a GLX-based program
+
+ How does it work? We use the 3Dfx hardware to do rendering then
+ copy the image from the 3Dfx frame buffer into an X window when
+ the SwapBuffers() function is called. The problem with this
+ idea is it's slow. The image must be copied from the 3Dfx frame
+ buffer to main memory then copied into the X window (and when the X
+ 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
+ --------------------------------------------------------------------------
+
+ The Mesa 2.6 has introduced the capability of switching
+ on-the-fly between the fullscreen/fullspeed rendering and the in-window
+ hack and vice versa. The on-the-fly switching requires a direct support
+ by the application but it is really easy to add. You have to start
+ your X server in 16 bpp mode and to add the following lines to your
+ application:
+
+ #if defined(FX) && define(XMESA)
+ #include <GL/xmesa.h>
+
+ static int fullscreen=1;
+ #endif
+
+ ...
+
+ /* In the GLUT keyboard event callback */
+
+ #if defined(FX) && !define(WIN32)
+ case ' ':
+ fullscreen=(!fullscreen);
+ XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
+ break;
+ #endif
+ ...
+
+ See the 3Dfx/demos/tunnel.c program
+ for an example. You have to set the -DXMESA flag in the Makefile's COPTS
+ to enable it.
+
+ Rendering into an X window with the X11 software driver:
+ --------------------------------------------------------
+
+ Set the MESA_GLX_FX variable to "disable" your GLX-based program will use
+ the X11 software driver (the 3Dfx hardware isn't used at all).
+
+
+
+Useful Glide Environment Variables:
+-----------------------------------
+
+ - To disable the 3Dfx logo, set the FX_GLIDE_NO_SPLASH variable.
+
+ - To disable video signal switching:
+ setenv SST_VGA_PASS 1
+ setenv SST_NOSHUTDOWN
+ or for the Voodoo2:
+ setenv SSTV2_VGA_PASS 1
+ setenv SSTV2_NOSHUTDOWN
+
+ - To set the default screen refresh rate:
+ setenv SST_SCREENREFRESH=75
+
+ the supported values are 60, 70, 72, 75, 80, 85, 90, 100, 120.
+
+ - To force the Mesa library to swap buffers as fast as possible,
+ without any vertical blanking synchronization (useful for benchmarks):
+ setenv FX_GLIDE_SWAPINTERVAL 0
+ setenv SST_SWAP_EN_WAIT_ON_VIDSYNC 0
+
+ - You can slight improve the performances of your Voodoo1 board with
+ the following env. var.:
+ setenv SST_FASTMEM 1
+ setenv SST_PCIRD 1
+ setenv SST_GRXCLK 57
+
+ (don't use this setting with the Quantum3D 100SB or with any other
+ SLI configuration: it will hang everything !).
+ The following setting can be used with the Voodoo2:
+ setenv SSTV2_FASTMEM_RAS_READS=1
+ setenv SSTV2_FASTPCIRD=1
+ setenv SSTV2_GRXCLK=95
+
+ - The Quantum3D Obsidian3D-2 X-24 requires some special env. setting
+ in order to work under Linux:
+
+ export SSTV2_FT_CLKDEL=5
+ export SSTV2_TF0_CLKDEL=7
+ export SSTV2_TF1_CLKDEL=7
+ export SSTV2_TF2_CLKDEL=7
+ export SSTV2_SLIM_VIN_CLKDEL=3
+ export SSTV2_SLIM_VOUT_CLKDEL=2
+ export SSTV2_SLIS_VIN_CLKDEL=3
+ export SSTV2_SLIS_VOUT_CLKDEL=2
+
+ (Thanks to Phil Ross for this trick).
+
+
+
+
+The Mesa/Voodoo Environment Variables:
+--------------------------------------
+
+ - Only for Windows/Voodoo Rush users, if you define the
+ env. var. MESA_WGL_FX:
+ export MESA_WGL_FX=fullscreen
+ you will get fullscreen rendering;
+
+ - Only for Windows/Voodoo Rush users, if you define the
+ env. var. MESA_WGL_FX:
+ export MESA_WGL_FX=window
+ you will get window rendering (default value);
+
+ - Only for Linux users, you can find more informations about
+ the env. var. MESA_GLX_FX in the "Doing more with Mesa & Linux Glide"
+ section;
+
+ - If you define the env. var. MESA_FX_SWAP_PENDING:
+ export MESA_FX_SWAP_PENDING=4
+ you will able to set the maximum number of swapbuffers
+ commands in the Voodoo FIFO after a swapbuffer (default value: 2);
+
+ - If you define the env. var. MESA_FX_INFO:
+ 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:
+-----------------------
+
+ - fog doesn't work in the right way when using the glDepthRange() function;
+
+ - Maximum texture size: 256x256 (this is an hardware limit);
+
+ - Texture border aren't yet supported;
+
+ - A GL_BLEND in a glTexEnv() is not supported (it is an hardware limit);
+
+ - Use the glBindTexture extension (standard in OpenGL 1.1) for texture
+ mapping (the old way: glTexImage inside a display list, download
+ the texture map each time that you call the display list !!!);
+
+ - Stencil buffer and Accumulation buffer are emulated in software (they are not
+ directly supported by the Hardware);
+
+ - Color index mode not implemented (this is an hardware limit);
+
+ - Thre is an know bug in the Linux Glide library so the in-window-rendering hack
+ and any other operations that requires to read the Voodoo frame buffer
+ (like the accumulation buffer support) doesn't work on Voodoo SLI cards.
+
+ - The driver switch to pure software (_slow_) rendering when:
+
+ - Stencil enabled;
+ - Using the Accumulation buffer;
+ - Blend enabled and blend equation != GL_FUNC_ADD_EXT;
+ - Color logic operation enabled and color logic operation != GL_COPY;
+ - Using GL_SEPARATE_SPECULAR_COLOR;
+ - The four values of glColorMask() aren't the some;
+ - Texture 1D or 3D enabled;
+ - Texture function is GL_BLEND;
+ - Using the Multitexture extension with Voodoo cards with only one TMU;
+ - Using the Multitexture extension with Voodoo cards with more than
+ one TMU, and texture function isn't GL_MODULATE;
+ - Point size is != 1.0 or point params vector != (1.0,0.0,0.0);
+ - Line width != 1.0 or using stipple lines.
+ - Using polygon offset or stipple polygons;
+
+ NOTE: this is list is not yet complete.
+
+
+Hints and Special Features:
+---------------------------
+
+ - Under Linux and with a Voodoo Graphics board, you can use
+ XMesaSetFXmode(XMESA_FX_FULLSCREEN or XMESA_FX_WINDOW) in order to
+ switch on the fly between fullscreen rendering and the in-window-rendering
+ hack.
+
+ - The driver is able to use all the texture memory available: 2/4MB on
+ Voodoo1 boards and 8MB (!) on high-end Voodoo1 and Voodoo2 boards.
+
+ - Trilinear filtering is fully supported on Voodoo boards with two TMUs
+ (high-end Voodoo1 boards and Voodoo2 boards). When only one TMU is
+ available the driver fallback to bilinear filter also if you ask
+ for trilinear filtering.
+
+ - The Voodoo driver support multiple Voodoo Graphics boards in the
+ some PC. Using this feature, you can write applications that use
+ multiple monitors, videoprojectors or HMDs for the output. See
+ Mesa-3.1/3Dfx/demos/tunnel2.c for an example of how setup one
+ context for each board.
+
+ - The v0.19 introduces a new powerful texture memory manager: the
+ texture memory is used as a cache of the set of all defined texture
+ maps. You can now define several MBs of texture maps also with a 2MB
+ of texture memory (the texture memory manager will do automatically
+ all the swap out/swap in
+ texture memory work). The new texture memory manager has also
+ solved a lot of other bugs/no specs compliance/problems
+ related to the texture memory usage.
+
+ - Use triangles and quads strip: they are a LOT faster than sparse
+ triangles and quads.
+
+ - The Voodoo driver supports the GL_EXT_paletted_texture. it works
+ only with GL_COLOR_INDEX8_EXT, GL_RGBA palettes and the alpha value
+ is ignored because this is a limitation of the the current Glide
+ version and of the Voodoo hardware. See Mesa-3.1/3Dfx/demos/paltex.c for
+ a demo of this extension.
+
+ - The Voodoo driver directly supports 3Dfx Global Palette extension.
+ It was written for GLQuake and I think that it isn't a good idea
+ to use this extension for any other purpose (it is a trick). See
+ Mesa-3.1/3Dfx/demos/glbpaltex.c for a demo of this extension.
+
+ - The Voodoo driver chooses the screen resolution according to the
+ requested window size. If you open a 640x480 window, you will get
+ a 640x480 screen resolution, if you open a 800x600 window, you
+ will get a 800x600 screen resolution, etc.
+ Most GLUT demos support the '-geometry' option, so you can choose
+ the screen resolution: 'tunnel -geometry 800x600'.
+ Clearly, you Voodoo board must have enough framebuffer RAM (otherwise
+ the window creation will fail).
+
+ - The glGetString(GL_RENDERER) returns more information
+ about the hardware configuration: "Mesa Glide <version>
+ <Voodoo_Graphics|Voodoo_Rush|UNKNOWN> <num> CARD/<num> FB/
+ <num> TM/<num> TMU/<NOSLI|SLI>"
+ where: <num> CARD is the card used for the current context,
+ <num> FB is the number of MB for the framebuffer,
+ <num> TM is the number of MB for the texture memory,
+ <num> TMU is the number of TMU. You can try to run
+ Mesa/demos/glinfo in order to have an example of the output.
+
+Did you find a lot BUGs and problems ? Good, send me an email.
+
+
+
+FAQ:
+----
+
+For a complete FAQ check the Bernd Kreimeier's Linux 3Dfx HOWTO
+available at http://www.gamers.org/dEngine/xf3D (it includes also
+a lot of informations not strictly related to Linux, so it can be
+useful also if you don't use Linux)
+
+1. What is 3Dfx?
+
+3Dfx Interactive, Inc. is the company which builds the VooDoo 3-D graphics
+chipset (and others) used in popular PC cards such as the Diamond Monster 3D
+and the Orchid Righteous 3D (more informations at http://www.3dfx.com).
+
+
+2. What is Glide?
+
+Glide is a "thin" programming interface for the 3Dfx hardware. It was
+originally written for Windows/Intel but has been ported to Linux/Intel
+by Daryll Strauss.
+
+3Dfx, Inc. should be applauded for allowing the Linux version of Glide
+to be written.
+
+You can directly program with the Glide library if you wish. You can
+obtain Glide from the "Developer" section of the 3Dfx website: www.3dfx.com
+There's a Linux/Glide newsgroup at news://news.3dfx.com/3dfx.glide.linux
+
+
+3. What is fxmesa?
+
+"fxmesa" is the name of the Mesa device driver for the 3Dfx Glide library.
+It was written by David Bucciarelli and others. It works on both Linux
+and Windows. Basically, it allows you to write and run OpenGL-style programs
+on the 3Dfx hardware.
+
+
+4. What is GLQuake?
+
+Quake is a very popular game from id software, Inc. See www.idsoftware.com
+GLQuake is a version of Quake written for OpenGL. There is now a Linux
+version of GLQuake with works with the Mesa/3Dfx/Glide combo.
+
+Here's what you need to run GLQuake on Linux:
+ PC with 100MHz Pentium or better
+ a 3Dfx-based card
+ Mesa 3.1 libraries: libMesaGL.so libMesaGLU.so
+ Glide 2.4 libraries: libglide2x.so libtexus.so
+ GLQuake for Linux.
+
+Also, the windows version of GLQuake works fine with the Mesa OpenGL32.dll,
+you have only to copy the Mesa-3.1/lib/OpenGL32.dll in the GLQuake directory
+in order to test 'MesaQuake'.
+
+
+5. What is GLUT?
+
+GLUT is Mark Kilgard's OpenGL Utility Toolkit. It provides an API for
+writing portable OpenGL programs with support for multiple windows, pop-
+up menus, event handling, etc.
+
+Check the Mark's home page for more informations (http://reality.sgi.com/mjk_asd).
+
+Every OpenGL programmer should check out GLUT.
+
+GLUT on Linux uses GLX.
+
+
+6. What is GLX?
+
+GLX is the OpenGL extension to the X Window System. I defines both a
+programming API (glX*() functions) and a network protocol. Mesa implements
+an emulation of GLX on Linux. A real GLX implementation would requires
+hooks into the X server. The 3Dfx hardware can be used with GLX-based
+programs via the MESA_GLX_FX environment variable.
+
+
+7. Is the Voodoo driver able to use the 4Mb texture memory of
+the Pure3D boards ?
+
+Yes, the Voodoo driver v0.20 includes the support for Voodoo
+Graphics boards with more than 2Mb of texture memory.
+
+
+8. Do the Voodoo driver support the Voodoo Rush under Windows ?
+
+Yes, Diego Picciani has developed the support for the Voodoo
+Rush but David Bucciarelli has a Pure3D and a Monster3D and Brian Paul
+has a Monster3D, so the new versions of the Mesa/Voodoo sometime are
+not tested with the Voodoo Rush.
+
+
+9. Do the Voodoo driver support the Voodoo Rush under Linux ?
+
+No because the Linux Glide doesn't (yet) support the Voodoo Rush.
+
+
+10. Can I sell my Mesa/Voodoo based software and include
+a binary copy of the Mesa in order to make the software
+working out of the box ?
+
+Yes.
+
+
+11. Which is the best make target for compiling the Mesa for
+Linux GLQuake ('make linux-glide', 'make linux-386-glide', etc.) ?
+
+'make linux-386-opt-glide' for Voodoo1 and 'make linux-386-opt-V2-glide'
+for Voodoo2 boards because it doesn't include the '-fPIC'
+option (4-5% faster).
+
+
+12. Can I use a Mesa compiled with a 'make linux-386-opt-V2-glide'
+for my applications/programs/demos ?
+
+Yes, there is only one constrain: you can't run two Mesa applications
+at the some time. This isn't a big issue with the today Voodoo Graphics.
+
+
+Thanks to:
+----------
+
+Henri Fousse (he has written several parts of the v0.15 and the old GLUT
+ emulator for Win);
+
+Diego Picciani (he has developed all the Voodoo Rush support and the wgl
+ emulator);
+
+Daryll Strauss (for the Linux Glide and the first Linux support);
+
+Brian Paul (of course);
+
+Dave 'Zoid' Kirsch (for the Linux GLQuake and Linux Quake2test/Q2 ports)
+
+Bernd Kreimeier (for the Linux 3Dfx HOWTO and for pushing companies to offer
+ a better Linux support)
+
+3Dfx and Quantum3D (for actively supporting Linux)
+
+The most update places where find Mesa VooDoo driver related informations are
+the Mesa mailing list and my driver WEB page
+(http://www-hmw.caribel.pisa.it/fxmesa/index.shtml)
+
+
+David Bucciarelli (davibu@tin.it)
+
+Humanware s.r.l.
+Via XXIV Maggio 62
+Pisa, Italy
+Tel./Fax +39-50-554108
+email: info.hmw@plus.it
+www: www-hmw.caribel.pisa.it
diff --git a/docs/README.AMIWIN b/docs/README.AMIWIN
new file mode 100644
index 00000000000..47cf696cc1e
--- /dev/null
+++ b/docs/README.AMIWIN
@@ -0,0 +1,181 @@
+AMIGA AMIWIN PORT of MESA: THE OPENGL SOFTWARE EMULATION
+========================================================
+Port by Victor Ng-Thow-Hing (victorng@dgp.toronto.edu)
+Original Author (Brian Paul (brianp@ssec.wisc.edu)
+
+Dec.1 , 1995: Port of release Mesa 1.2.5
+ - Modifications made to minimize changes to Mesa distribution.
+
+Nov.25, 1995: Port of release Mesa 1.2.4
+
+
+HISTORY
+=======
+As a 3D graphics progammer, I was increasingly frustrated to see OpenGL
+appearing on so many platforms EXCEPT the Amiga. Up to now, the task
+of porting OpenGL directly from native Amiga drawing routines seemed like
+a daunting task. However, two important events made this port possible.
+
+First of all, Brian Paul wrote Mesa, the OpenGL software emulator that
+can be found on many platforms - except the Amiga and Atari (who cares
+about the latter!). This was pretty ironic considering that Mesa was
+originally prototyped on an Amiga! The second great event was when
+Holger Kruse developed AmiWin, the X11R6 server for the Amiga (definitely
+register for this great piece of software) and released a development kit
+so one could compile X programs with SAS/C.
+
+Since Mesa had X routines as its primitive drawing operations, this made
+a marriage of Mesa and Amiwin feasible. I copied over the sources from
+an ftp site, played with the code, wrote some Smakefiles, and voila,
+I had OpenGL programs displaying on my Amiga.
+
+Although the speed is nothing to be impressed about, this port can be
+potentially useful to those who want to quickly test their code in
+wireframe or perhaps learn more about programming with the OpenGL API.
+
+I hope Amiga developers will continue to write excellent software for
+their machine, especially more X clients for Amiwin. If you have any
+solutions so some of my problems in the porting notes, please send me
+some email!
+
+See you around,
+Vic.
+
+HOW TO CREATE THE LIBRARIES AND SAMPLE CODE
+===========================================
+
+Just run the shell script mklib.amiwin in the mesa directory. This will
+make all the libraries and copy them into the mesa/lib directory. If you
+don't want to compile everything, just go to the desired directory and
+type smake in that directory.
+
+Change any of the variables in the smakefiles as necessary. You will REQUIRE
+the Amiwin development kit to compile these libraries since you need X11.LIB
+and the shareable X libraries. Some examples require the AmiTCP4.0
+net.lib static link library and related header files for unix related
+header files and functions like sleep().
+
+HOW TO USE THE MESA LIBRARIES
+=============================
+
+Study the Smakefiles in the demos, samples and book directories for the
+proper SAS/C options and linkable libraries to use. Basically aux calls
+require Mesaaux.LIB, gl calls require MesaGL.LIB, glu calls MesaGLU.LIB,
+tk calls Mesatk.LIB. There is a preliminary port of MesaGLUT.LIB toolkit
+available in the lib directory with the other Mesa libraries. However,
+it seems to cause crashes on some of the sample code. Someone else may want
+to attempt a more stable port.
+
+PORTING NOTES TO AMIWIN
+=======================
+
+My strategy of porting was to leave as much of the code untouched as
+possible. I surrounded any amiga specific changes with
+#ifdef AMIWIN ... #endif or #ifndef AMIWIN ... #endif preprocessor
+symbols. The code was ported on an Amiga 2000, with Fusion 40 accelerator
+and a Picasso II graphics card. The SAS/C 6.56 compiler was used, with
+the AmiWin 2.16 X development kit.
+
+All compilations were done for a 68040 CPU with 68882 math coprocessor for
+maximum speed. Please edit the smakefile for other compilers.
+I wrote smakefiles for the directories I ported. I omitted the Windows
+and Widgets directories. The former is for MS Windows and the latter
+requires Motif, which is not easily available for the Amiga.
+
+Here are the changes I did per directory:
+
+* mesa
+Nov. 25, 1995 v 1.2.4
+ - added a mklib.amiwin shell script that will make all the libraries and
+ sample code for Mesa
+ - created this readme file: readme.AMIGA
+
+* mesa/include
+Dec. 1, 1995 v 1.2.5
+ - added the following to GL/xmesa.h
+ #ifdef AMIWIN
+ #include <pragmas/xlib_pragmas.h>
+ extern struct Library *XLibBase;
+ #endif
+NET CHANGE: xmesa.h
+
+* mesa/src
+Nov. 25, 1995 v 1.2.4
+ - added the necessary pragma calls for X functions to the following:
+ xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c, glx.c
+ This prevents undefined symbols errors during the linking phase for
+ X library calls
+ - created smakefile
+Dec. 1, 1995 v 1.2.5
+ - removed AMIWIN includes from xmesa1.c, xmesa2.c, xmesa3.c, xfonts.c,
+ glx.c since they are now defined in include/GL/xmesa.h
+NET CHANGE: smakefile
+
+* mesa/src-tk
+Nov. 25, 1995 v 1.2.4
+ - added the necessary pragma calls for X functions to the following:
+ private.h
+ - created smakefile
+Dec. 1, 1995 v 1.2.5
+ - removed AMIWIN includes from private.h since it is now defined in
+ include/GL/xmesa.h
+NET CHANGE: smakefile
+
+* mesa/src-glu
+Nov. 25, 1995 v 1.2.4
+ - created smakefile
+NET CHANGE: smakefile
+
+* mesa/src-aux
+Nov. 25, 1995 v 1.2.4
+ - added the necessary pragma calls for X functions to the following:
+ glaux.c
+ - created smakefile
+NET CHANGE: glaux.c, smakefile
+
+* mesa/demos
+Nov. 25, 1995 v 1.2.4
+ - added the necessary pragma calls for X functions to the following:
+ xdemo.c, glxdemo.c, offset.c
+ - created smakefile
+ - put #ifndef AMIWIN ... #endif around sleep() calls in xdemo.c since
+ they are not part of AmigaDOS.
+Dec. 1, 1995 v 1.2.5
+ - removed AMIWIN defines from xdemo.c, glxdemo.c, offset.c since
+ already defined in include/GL/xmesa.h
+ - modified Smakefile to include header and includes from the AmiTCP4.0
+ net.lib linkable library to provide unix-compatible sys/time.h and
+ the sleep() function
+ - removed AMIWIN defines in xdemo.c since sleep() now defined
+NET CHANGE: smakefile
+
+* mesa/samples
+Nov. 25, 1995 v 1.2.4
+ - added the necessary pragma calls for X functions to the following:
+ oglinfo.c
+ - created smakefile
+ - put #ifndef AMIWIN ... #endif around sleep() in blendxor.c
+ - removed olympic from smakefile targets since <sys/time.h> not defined
+Dec. 1, 1995 v 1.2.5
+ - removed AMIWIN defines from oglinfo.c, since already defined in
+ include/GL/xmesa.h
+ - modified Smakefile to include header and includes from the AmiTCP4.0
+ net.lib linkable library to provide unix-compatible sys/time.h and
+ the sleep() function
+ - removed AMIWIN defines in blendxor.c for sleep()
+ - added AMIWIN defines around _MACHTEN_ in olympic.c since xrandom()
+ functions are not defined in any libraries
+ - added olympic back into the Smakefile targets
+NET CHANGE: smakefile, olympic.c
+
+* mesa/book
+Nov. 25, 1995 v 1.2.4
+- created smakefile
+- removed accpersp and dof from smakefile targets since the SAS/C compile seems to
+ confuse the near,far variables with near/far memory models.
+NET CHANGE: smakefile
+
+* mesa/windows
+Dec. 1, 1995 v 1.2.5
+- Removed directory to save space since this is only needed for Windows based
+ machines.
diff --git a/docs/README.BEOS b/docs/README.BEOS
new file mode 100644
index 00000000000..5847730af07
--- /dev/null
+++ b/docs/README.BEOS
@@ -0,0 +1,137 @@
+
+ Mesa / BeOS Information
+
+
+
+* Introduction
+
+Brian Paul added in Mesa 3.1 a driver for BeOS R4.5 operating system.
+This driver implements a clone of the BGLView class. This class,
+derived from BView, allows OpenGL rendering into any BeOS window. His
+driver was updated in Mesa 4.1 and again in version 6.1 by Philippe
+Houdoin, who's maintaining this driver since.
+
+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
+SGI sample implementation, it's pretty slow. You'll see that Mesa
+is considerably faster.
+
+
+* Source Code
+
+The source code for the driver is in src/mesa/drivers/beos/ directory.
+It's not 100% finished at this time but many GLUT-based demos are
+working. No optimizations have been made at this time.
+
+
+* Compiling
+
+Since Mesa 6.x, it can be build under BeOS with both the R5 builtin gcc version
+or more recent gcc versions available for BeOS, like this gcc version 2.95.3 for BeOS
+you can find at http://www.bebits.com/app/2157.
+Anyway, keep in mind that to take full advantage of Mesa x86 optimizations, you better
+want to use gcc 2.95.3 or sooner versions...
+
+To build Mesa-powered BeOS libGL.so version, open an Terminal window,
+move to Mesa root folder and type this command:
+
+$ make beos
+
+Note that the "beos" argument is only needed the first time to setup build config.
+Next times, typing "make" will be enough.
+
+When it finishes the Mesa based libGL.so library for
+BeOS will be in the lib/ directory, along libglut.so library.
+Several demo/test programs should have been build too under progs/* folders.
+If it stop when building one of the progs/* programs, you may want to ignore it
+and force make to move on next target by adding the -k make option:
+
+$ cd progs
+$ make -k
+
+To install it as Be's default libGL.so replacement, put it in your
+/boot/home/config/lib/ directory. All your GL/GLUT apps 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.
+For PowerPC BeOS flavor, sorry, Mesa don't have ppc (Altivec) optimizations
+yet.
+
+To build a DEBUG version, type instead this :
+
+$ DEBUG=1 make
+
+
+* Example Programs
+
+Look under progs/beos/ for some BGLView-based programs.
+You should find under progs/samples and progs/redbook directories GLUT-based programs too.
+They all should have been compiled along with the Mesa library.
+
+
+* GLUT
+
+A beta version of GLUT 3.7 port for BeOS, made by Jake Hamby, can be found at
+http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
+This is the version currently included in Mesa source code, and
+build in lib/libglut.so.
+
+A previous 3.5 version of this GLUT BeOS port used to be available at
+http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip.
+
+They're special versions of GLUT for the BeOS platform. I don't
+believe Mark Kilgard's normal GLUT distribution includes BeOS
+support.
+
+
+* Special Features
+
+Mesa's implementation of the BGLView class has an extra member
+function: CopySubBufferMESA(). It basically works like SwapBuffers()
+but it only copies a sub region from the back buffer to the front
+buffer. This is a useful optimization for some applications.
+If you use this method in your code be sure that you check at runtime
+that you're actually using Mesa (with glGetString) so you don't
+cause a fatal error when running with Be's OpenGL.
+
+
+* Work Left To Do
+
+- BDirectWindow single buffering support is not implemented yet.
+- Color index mode is not implemented yet.
+- Reading pixels from the front buffer not implemented yet.
+- There is also a BGLScreen class in BeOS for full-screen OpenGL rendering.
+ This should also be implemented for Mesa.
+- Multiple renderers add-ons support, first step toward hardware acceleration
+ support.
+
+* Other contributors to this BeOS port
+
+Jake Hamby jhamby <at> anobject <dot> com
+Marcin Konicki ahwayakchih <at> neoni <dot> net
+Francois Revol revol <at> free <dot> fr
+Nathan Whitehorn nathanw <at> uchicago <dot> edu
+
+
+* Older 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
+driver you should get Mesa 2.6.
+
+
+* 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
+work with the new Mesa 3.1 BGLView implementation.
+
+The Glide library hasn't been updated for BeOS R4 and newer, to my knowledge,
+as of February, 1999.
+
+
+----------------------------------------------------------------------
+$Id: README.BEOS,v 1.12 2004/10/13 00:35:55 phoudoin Exp $
diff --git a/docs/README.CYGWIN b/docs/README.CYGWIN
new file mode 100644
index 00000000000..58d5af3e293
--- /dev/null
+++ b/docs/README.CYGWIN
@@ -0,0 +1,256 @@
+
+ Mesa Cygwin/X11 Information
+
+
+WARNING
+=======
+
+If you installed X11 (packages xorg-x11-devel and xorg-x11-bin-dlls ) with the
+latest setup.exe from Cygwin the GL (Mesa) libraries and include are already
+installed in /usr/X11R6.
+
+The following will explain how to "replace" them.
+
+Installation
+============
+
+How to compile Mesa on Cygwin/X11 systems:
+
+1. Shared libs:
+ type 'make cygwin-sl'.
+
+ When finished, the Mesa DLL will be in the Mesa-x.y/lib/ and
+ Mesa-x.y/bin directories.
+
+
+2. Static libs:
+ type 'make cygwin-static'.
+ When finished, the Mesa libraries will be in the Mesa-x.y/lib/ directory.
+
+Header and library files:
+ After you've compiled Mesa and tried the demos I recommend the following
+ procedure for "installing" Mesa.
+
+ Copy the Mesa include/GL directory to /usr/X11R6/include:
+ cp -a include/GL /usr/X11R6/include
+
+ Copy the Mesa library files to /usr/X11R6/lib:
+ cp -a lib/* /usr/X11R6ocal/lib
+
+ Copy the Mesa bin files (used by the DLL stuff) to /usr/X11R6/bin:
+ cp -a lib/cyg* /usr/X11R6/bin
+
+Xt/Motif widgets:
+ If you want to use Mesa or OpenGL in your Xt/Motif program you can build
+ the widgets found in either the widgets-mesa or widgets-sgi directories.
+ The former were written for Mesa and the later are the original SGI
+ widgets. Look in those directories for more information.
+ For the Motif widgets you must have downloaded the lesstif package.
+
+
+Using the library
+=================
+
+Configuration options:
+ The file src/mesa/main/config.h has many parameters which you can adjust
+ such as maximum number of lights, clipping planes, maximum texture size,
+ etc. In particular, you may want to change DEPTH_BITS from 16 to 32
+ if a 16-bit depth buffer isn't precise enough for your application.
+
+
+Shared libraries:
+ If you compile shared libraries (Win32 DLLS) you may have to set an
+ environment variable to specify where the Mesa libraries are located.
+ Set the PATH variable to include /your-dir/Mesa-2.6/bin.
+ Otherwise, when you try to run a demo it may fail with a message saying
+ that one or more DLL couldn't be found.
+
+
+Xt/Motif Widgets:
+ Two versions of the Xt/Motif OpenGL drawing area widgets are included:
+
+ widgets-sgi/ SGI's stock widgets
+ widgets-mesa/ Mesa-tuned widgets
+
+ Look in those directories for details
+
+
+Togl:
+ Togl is an OpenGL/Mesa widget for Tcl/Tk.
+ See http://togl.sourceforge.net for more information.
+
+
+
+X Display Modes:
+ Mesa supports RGB(A) rendering into almost any X visual type and depth.
+
+ The glXChooseVisual function tries its best to pick an appropriate visual
+ for the given attribute list. However, if this doesn't suit your needs
+ you can force Mesa to use any X visual you want (any supported by your
+ X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL
+ environment variables. When an RGB visual is requested, glXChooseVisual
+ will first look if the MESA_RGB_VISUAL variable is defined. If so, it
+ will try to use the specified visual. Similarly, when a color index
+ visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL
+ variable.
+
+ The format of accepted values is: <visual-class> <depth>
+ Here are some examples:
+
+ using the C-shell:
+ % setenv MESA_RGB_VISUAL "TrueColor 8" // 8-bit TrueColor
+ % setenv MESA_CI_VISUAL "PseudoColor 12" // 12-bit PseudoColor
+ % setenv MESA_RGB_VISUAL "PseudoColor 8" // 8-bit PseudoColor
+
+ using the KornShell:
+ $ export MESA_RGB_VISUAL="TrueColor 8"
+ $ export MESA_CI_VISUAL="PseudoColor 12"
+ $ export MESA_RGB_VISUAL="PseudoColor 8"
+
+
+Double buffering:
+ Mesa can use either an X Pixmap or XImage as the backbuffer when in
+ double buffer mode. Using GLX, the default is to use an XImage. The
+ MESA_BACK_BUFFER environment variable can override this. The valid
+ values for MESA_BACK_BUFFER are: Pixmap and XImage (only the first
+ letter is checked, case doesn't matter).
+
+ A pixmap is faster when drawing simple lines and polygons while an
+ XImage is faster when Mesa has to do pixel-by-pixel rendering. If you
+ need depth buffering the XImage will almost surely be faster. Exper-
+ iment with the MESA_BACK_BUFFER variable to see which is faster for
+ your application.
+
+
+Colormaps:
+ When using Mesa directly or with GLX, it's up to the application writer
+ to create a window with an appropriate colormap. The aux, tk, and GLUT
+ toolkits try to minimize colormap "flashing" by sharing colormaps when
+ possible. Specifically, if the visual and depth of the window matches
+ that of the root window, the root window's colormap will be shared by
+ the Mesa window. Otherwise, a new, private colormap will be allocated.
+
+ When sharing the root colormap, Mesa may be unable to allocate the colors
+ it needs, resulting in poor color quality. This can happen when a
+ large number of colorcells in the root colormap are already allocated.
+ To prevent colormap sharing in aux, tk and GLUT, define the environment
+ variable MESA_PRIVATE_CMAP. The value isn't significant.
+
+
+Gamma correction:
+ To compensate for the nonlinear relationship between pixel values
+ and displayed intensities, there is a gamma correction feature in
+ Mesa. Some systems, such as Silicon Graphics, support gamma
+ correction in hardware (man gamma) so you won't need to use Mesa's
+ gamma facility. Other systems, however, may need gamma adjustment
+ to produce images which look correct. If in the past you thought
+ Mesa's images were too dim, read on.
+
+ Gamma correction is controlled with the MESA_GAMMA environment
+ variable. Its value is of the form "Gr Gg Gb" or just "G" where
+ Gr is the red gamma value, Gg is the green gamma value, Gb is the
+ blue gamma value and G is one gamma value to use for all three
+ channels. Each value is a positive real number typically in the
+ range 1.0 to 2.5. The defaults are all 1.0, effectively disabling
+ gamma correction. Examples using csh:
+
+ % setenv MESA_GAMMA "2.3 2.2 2.4" // separate R,G,B values
+ % setenv MESA_GAMMA "2.0" // same gamma for R,G,B
+
+ The demos/gamma.c program may help you to determine reasonable gamma
+ value for your display. With correct gamma values, the color intensities
+ displayed in the top row (drawn by dithering) should nearly match those
+ in the bottom row (drawn as grays).
+
+ Alex De Bruyn reports that gamma values of 1.6, 1.6 and 1.9 work well
+ on HP displays using the HP-ColorRecovery technology.
+
+ Mesa implements gamma correction with a lookup table which translates
+ a "linear" pixel value to a gamma-corrected pixel value. There is a
+ small performance penalty. Gamma correction only works in RGB mode.
+ Also be aware that pixel values read back from the frame buffer will
+ not be "un-corrected" so glReadPixels may not return the same data
+ drawn with glDrawPixels.
+
+ For more information about gamma correction see:
+ http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
+
+
+Overlay Planes
+
+ Overlay planes in the frame buffer are supported by Mesa but require
+ hardware and X server support. To determine if your X server has
+ overlay support you can test for the SERVER_OVERLAY_VISUALS property:
+
+ xprop -root | grep SERVER_OVERLAY_VISUALS
+
+
+HPCR glClear(GL_COLOR_BUFFER_BIT) dithering
+
+ If you set the MESA_HPCR_CLEAR environment variable then dithering
+ will be used when clearing the color buffer. This is only applicable
+ to HP systems with the HPCR (Color Recovery) system.
+
+
+Extensions
+==========
+ There are three Mesa-specific GLX extensions at this time.
+
+ GLX_MESA_pixmap_colormap
+
+ This extension adds the GLX function:
+
+ GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
+ Pixmap pixmap, Colormap cmap )
+
+ It is an alternative to the standard glXCreateGLXPixmap() function.
+ Since Mesa supports RGB rendering into any X visual, not just True-
+ Color or DirectColor, Mesa needs colormap information to convert RGB
+ values into pixel values. An X window carries this information but a
+ pixmap does not. This function associates a colormap to a GLX pixmap.
+ See the xdemos/glxpixmap.c file for an example of how to use this
+ extension.
+
+ GLX_MESA_release_buffers
+
+ Mesa associates a set of ancillary (depth, accumulation, stencil and
+ alpha) buffers with each X window it draws into. These ancillary
+ buffers are allocated for each X window the first time the X window
+ is passed to glXMakeCurrent(). Mesa, however, can't detect when an
+ X window has been destroyed in order to free the ancillary buffers.
+
+ The best it can do is to check for recently destroyed windows whenever
+ the client calls the glXCreateContext() or glXDestroyContext()
+ functions. This may not be sufficient in all situations though.
+
+ The GLX_MESA_release_buffers extension allows a client to explicitly
+ deallocate the ancillary buffers by calling glxReleaseBuffersMESA()
+ just before an X window is destroyed. For example:
+
+ #ifdef GLX_MESA_release_buffers
+ glXReleaseBuffersMESA( dpy, window );
+ #endif
+ XDestroyWindow( dpy, window );
+
+ This extension is new in Mesa 2.0.
+
+ GLX_MESA_copy_sub_buffer
+
+ This extension adds the glXCopySubBufferMESA() function. It works
+ like glXSwapBuffers() but only copies a sub-region of the window
+ instead of the whole window.
+
+ This extension is new in Mesa version 2.6
+
+
+
+Summary of X-related environment variables:
+ MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
+ MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
+ MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
+ MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
+ MESA_GAMMA - gamma correction coefficients (X only)
+
+
+----------------------------------------------------------------------
+README.CYGWIN - lassauge April 2004 - based on README.X11
diff --git a/docs/README.D3D b/docs/README.D3D
new file mode 100644
index 00000000000..b41fcb62085
--- /dev/null
+++ b/docs/README.D3D
@@ -0,0 +1,124 @@
+
+ DirectX 6 Driver for Mesa 3.0
+
+
+This software is distributed under the terms of the GNU Library
+General Public License, see the LICENSE file for details.
+
+
+
+What do you need ?
+------------------
+
+ - A PC with a DirectX 6 video driver installed.
+
+ - Mesa 3.0
+
+ - 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.0 is not
+ compatible with the Glide 2.x so it doesn't work with the current
+ version of the driver;
+
+ - Visual C++ 5.0 is only compiler test but others should be ok with
+ changes to the makefiles (CFLAGS/LFLAGS).
+
+ - DirectX 6 SDK (was a MS download but not sure if still available).
+
+ - SoftIce or another debugger that will get DPF's is nice.
+
+
+Tested on:
+----------
+ Windows 95
+ Windows 98
+ Windows NT 5.0 (beta 2)
+
+
+What is able to do ?
+--------------------
+
+ - the driver will try and use DirectX to rasterize the OpenGL primitives
+ that are sent to the driver. The driver will fall back to SW if the rendering
+ context is too big. The fallback to SW still uses DirectDraw. If the driver
+ fails to support and operation (accum, stencil, etc) then it will try and get
+ Mesa to render it in SW. DirectX 6 features that are unsupported by the
+ installed DirectX 6 driver will be mapped to some other best fit feature.
+
+
+How to compile:
+---------------
+
+ These instructions assume you have Visual C++ installed.
+
+ You might need to increase you enviroment space. You can do this by
+ adding the following statement to you config.sys.
+
+ shell=C:\COMMAND.COM C:\ /p /e:8198
+
+ Next setup you compiler enviroment by running vcvars32.bat in the Visual C++
+ 'bin' directoy.
+
+ c:\DevStudio\VC\bin\vcvars32.bat
+
+ Modify the D3D makefile to point at your SDK install. Example has the SDK
+ installed on my 'f' drive in the root.
+
+ file: \Mesa-3.0\src\makefile.d3d
+
+ SDKROOT=f:\mssdk
+
+ Now you can simply make the project. If you look in the makefile you can see
+ I have some different targets like 'install'.
+
+ nmake /f makefile.d3d
+
+
+FAQ:
+----
+
+ 1) I don't think the driver is using my DirectX driver.
+
+ This maybe true as the current version will only select the Primary D3D driver
+ installed. If you 3D card is the secondary (3dfx) then your out of luck for this
+ release.
+
+ 2) The driver seems like its not HW accelerated.
+
+ If you have a video card with limited memory then you might want to try and
+ change your destop resolution to a low setting (640x480x16) so that the 3D part
+ of the card has more resources. Remeber the driver can't make the card better...
+
+ 3) Nothing works.
+
+ Make sure you have a DirectX '6' driver installed. Check you driver docs for this
+ info or use the SDK info utilities.
+ The final 'dll' is named opengl32.dll and is either in the same directory as the
+ OpenGL program or in your system directory (x:\windows\system or x:\winnt\system32).
+ Check your destop resolution. Most DirectX 6 drivers will only support 16bit and
+ 32bit color depth. To find out for sure you can check the DirectX Info Viewer in
+ the SDK.
+
+
+ 4) Rendering doesn't look right.
+
+ Sometimes this is because the card doesn't support a feature that that is required.
+ This is usually due to unsupported alpha functions (test/blend) or texture mapping.
+ Some cards suffer from too small of an alpha channel. The driver does its best to
+ fallback on unsupported features. This is not to say the driver may not have a bug(s).
+
+ 5) Textures look bad.
+
+ No mipmapping in this release.
+
+
+Thanks to:
+----------
+
+Brian Paul
+
+
+
+
+Leigh McRae (leigh@altsoftware.com)
+February 9, 1999
+
diff --git a/docs/README.DJ b/docs/README.DJ
new file mode 100644
index 00000000000..8038c287642
--- /dev/null
+++ b/docs/README.DJ
@@ -0,0 +1,275 @@
+ Mesa 6.5 DOS/DJGPP Port v1.8
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Description:
+~~~~~~~~~~~~
+
+Well, guess what... this is the DOS port of Mesa 6.3, for DJGPP fans... Whoa!
+The driver uses OSMesa to draw off screen, and then blits the buffer.
+
+
+
+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
+ 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
+ X86=1 optimize for x86 (if possible, use MMX, SSE, 3DNow).
+ 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:
+ Video card: Radeon 9500
+ DJGPP: djdev 2.04 + gcc v4.1.0 + make v3.80
+ OS: DOS, Win98SE, WinXP (using Videoport driver)
+
+
+
+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) Every test I tried crashes badly.
+ A) If you have compiled with SSE and you're running under plain DOS, you
+ have to disable SSE at run-time. See environment variables below.
+
+ Q) DMesa is so SLOOOW! The Win32 OpenGL performs so much better...
+ A) Is that a question? If you have a 3dfx Voodoo (any model), you're
+ lucky (check http://sourceforge.net/projects/glide for the DJGPP port).
+ If you haven't, sorry; everything is done in software.
+
+ Q) I tried to set refresh rate w/ DMesa, but without success.
+ A) Refresh rate control works only for VESA 3.0 and the 3dfx driver (in
+ which case FX_GLIDE_REFRESH will be overwritten if it is defined and
+ is not 0).
+
+ Q) I made a simple application and it does nothing. It exits right away. Not
+ even a blank screen.
+ A) Software drivers (VESA/VGA/NUL) must to be constructed as single-buffered
+ visuals. However, DMesaSwapBuffers must be called to get any output.
+ 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) I'm getting a "bad font!" fatal error.
+ A) Always use GLUT_STROKE_* and GLUT_BITMAP_* constants when dealing with
+ GLUT fonts. If you're using `glut.dxe', then make sure GLUT_STROKE_* and
+ GLUT_BITMAP_* are mapped to integer constants, not to the actual font
+ address (same mechanism used for Win32 _DLL).
+
+ Q) What is NUL driver good for, if I don't get any output at all?
+ A) For debugging. The NUL driver is very much like OSMesa. Everything is
+ done just the same as VESA/VGA drivers, only it doesn't touch your video
+ hardware. You can query the actual buffer by issuing:
+ DMesaGetIntegerv(DMESA_GET_BUFFER_ADDR, &buffer);
+ and dump it to a file.
+
+ Q) How do I query for a list of available video modes to choose as a visual?
+ A) This is an ugly hack, for which I'm sure I'll burn in hell.
+ First, query for a list of modes:
+ n = DMesaGetIntegerv(DMESA_GET_VIDEO_MODES, NULL);
+ If `n' is strictly positive, you allocate an array of pointers to a given
+ struct (which is guaranteed to be extended only - not changed in future):
+ struct {
+ int xres, yres;
+ int bpp;
+ } **l = malloc(n * sizeof(void *));
+ Now pass the newly allocated buffer to fill in:
+ DMesaGetIntegerv(DMESA_GET_VIDEO_MODES, (GLint *)l);
+ And collect the info:
+ for (i = 0; i < n; i++) {
+ printf("%dx%d:%d\n", l[i]->xres, l[i]->yres, l[i]->bpp);
+ }
+
+ 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.
+
+
+
+Environment variables:
+~~~~~~~~~~~~~~~~~~~~~~
+ DMESA_NULDRV - (any value) force NUL driver
+ GLUT_FPS - print frames/second statistics to stderr
+ MESA_NO_SSE - (any value) safe option under pure DOS
+ 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 (dec-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
+ * minor changes to PC_HW/timer interface
+ x hacked and slashed the 3dfx driver (w/ help from Hiroshi Morii)
+
+v1.5 (jan-2004)
+ + added interface to query available "visuals" (GLFW - Marcus Geelnard)
+ + added GLUT timer callback
+ - removed Matrox Millennium MGA2064W driver
+ x more changes to the 3dfx driver
+
+v1.6 (aug-2004)
+ + implemented NUL driver
+ + added DMesaGetProcAddress and glutGetProcAddress
+ * reorganized fxMesa wrapper to handle multiple contexts
+ ! fixed a horrible bug in VGA initialization routine
+ ! fixed partial clears
+
+v1.7 (???-2005)
+ + enabled OpenGL 2.0 support
+ + added support for sw texture compression
+ + added FreeGLUT specific functions
+ * no more GLX sources in DOS GLUT
+ * made GLUT timer callbacks less accurate but safer
+
+v1.8 (apr-2006)
+ * killed lots of code, the driver is now a front-end to OSMesa
+ * fixed problem with WinNT (http://www.volny.cz/martin.sulak/)
+ - removed 3dfx Glide3 support (temporarily?)
+
+
+
+Contact:
+~~~~~~~~
+
+Name: Daniel Borca
+E-mail: dborca@users.sourceforge.net
+WWW: http://www.geocities.com/dborca/
diff --git a/docs/README.GGI b/docs/README.GGI
new file mode 100644
index 00000000000..ddb67725f1a
--- /dev/null
+++ b/docs/README.GGI
@@ -0,0 +1,26 @@
+GGIMesa for LibGGI 2.x
+
+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
+
+make
+make install (must be root)
+
+in ggi/ggiglut.
+
+Notes:
+------
+
+* Set the environment variables GGIMESA_DEBUG and/or GGIGLUT_DEBUG
+to 255 to see lots of debugging output.
+
+* 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.
+
diff --git a/docs/README.LYNXOS b/docs/README.LYNXOS
new file mode 100644
index 00000000000..e3ab9804bd5
--- /dev/null
+++ b/docs/README.LYNXOS
@@ -0,0 +1,64 @@
+
+Mesa 3.0 for LynxOS builds in the following way:
+
+make lynxos
+
+This will build all the libraries and demo applications. You should have
+around 400 megabytes free for everything since everything is done with
+static
+libraries.
+
+Before using this make file however, you should perform the following
+actions:
+0) cd to the Mesa-3.0 directory
+1) Copy the GL directory under the include directory to /usr/include.
+2) Copy the files in the lib directory to /lib.
+3) Make links so that the Mesa libraries look like ordinary OpenGL
+libraries
+in /lib. This is important for compatibility with other OpenGL apps. This
+is done as follows:
+
+cd /lib
+ln -s libMesaGL.a libGL.a
+ln -s libMesaGLU.a libGLU.a
+
+Mesa 3.0 includes the GLUT (GL Utility Toolkit) by default.
+The demo applications are done using this toolkit.
+
+Mesa makefiles for building their apps could be used as well, but the
+following one is much more concise. Note that the order of the X libraries
+is important to the linker so that all symbols get resolved correctly.
+Changing the order may result in having to list a library twice to make
+sure all linkages are made correctly.
+
+----cut here for Makefile -----
+
+FILES = your_app.x
+
+SPECIAL_INCLUDES = -I/usr/include/GL
+
+SPECIAL_CFLAGS = -g -ansi -pedantic -funroll-loops -ffast-math -DSHM
+
+SPECIAL_LIBS = -lglut -lGLU -lGL -lm -L/usr/X11/lib -lXext -lXmu -lXi \
+-lX11 -lbsd -g
+
+STANDARD_OFILES = $(FILES:.x=.o)
+
+%.o: %.c
+ gcc -c $(SPECIAL_CFLAGS) $(SPECIAL_INCLUDES) $< -o $@
+
+all: $(STANDARD_OFILES)
+ gcc -o your_app $(STANDARD_OFILES) $(SPECIAL_LIBS)
+
+
+----cut here for Makefile-----
+
+I have tested Mesa under LynxOS 3.0 and 3.01. It should build fine under
+other
+versions as well. Note, however, that LynxOS versions prior to 3.0 are not
+binary compatible, so you will have to rebuild from source.
+
+
+Vik Sohal
+vik@lynx.com
+January 13, 1999
diff --git a/docs/README.MINGW32 b/docs/README.MINGW32
new file mode 100644
index 00000000000..2b39f120908
--- /dev/null
+++ b/docs/README.MINGW32
@@ -0,0 +1,90 @@
+ Mesa 6.1 for MinGW32
+ ~~~~~~~~~~~~~~~~~~~~
+
+
+
+Quick & dirty start:
+--------------------
+
+ mingw32-make -f Makefile.mgw [OPTIONS...]
+
+ Look into the corresponding makefiles for further information.
+ Check README.3DFX to find out how to compile Mesa Glide3 driver
+ with MinGW32!
+
+
+
+*******************************************************************************
+The Mingw port for Mesa 3-D Graphics Library was created August 30, 1998 by Paul Garceau.
+
+Updated January 13, 2000; June 3, 2005 -- Paul Garceau <pgarceau@users.sourceforge.net>
+
+DISCLAIMER: I make this port of the Mesa 3-D Graphics Library as a service
+to the general public. I can, in no way support or make any guarantee that the
+build will work for your system.
+
+Acknowledgements:
+
+ Daniel Borca, whose work and commitment to maintaining the Mingw port of the Mesa 3-D Graphics Library has been, and will continue to be greatly appreciated by an overworked and underpaid developer such as myself.
+ Without the creative inspiration and personal commitment provided by Mumit Khan, Jan-Jaap Vanderhagen and Colin Peters, Mingw would never have existed. Acknowledgements also need to be given to all of the developers who have worked on Mingw, Mesa and Msys over the years.
+ Last, but certainly far from the least, Brian Paul, who has dedicated at least the last seven or eight years of his life to making Mesa 3-D Graphics Library what it is today and managing the development for all of those years.
+*********************************************************************************
+
+Greetings,
+
+ Feel free to modify or change things related to the Mingw build as you see fit, just remember that, the author of the current build may not be able to support any modifications you might want to make to the files which have been included for the build.
+
+Mesa core components are licensed under XFree-86 (for more on licensing of Mesa 3-D Graphics Library, check out the Mesa homepage (http://www.mesa3d.org).
+
+The Mingw generated libraries themselves are licensed under the GNU-LGPL license. Source code for Mingw can be found at http://www.mingw.org. For licensing terms on Mingw, please visit http://www.mingw.org.
+
+ It is recommended that you use the latest "stable" release of Mingw. "Candidates" are beta testing distributions for Mingw. Mingw is available at http://www.mingw.org.
+
+ 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.
+
+Installation:
+
+ This readme assumes that you already have extracted the necessary files to a working directory/folder that Mingw can use to build the Mesa3D libraries and that you know where that directory/folder is located on your Windows system. If you have any questions about how to set things up properly which is specific to Mesa3D, the folks on the Mesa3D mailing lists (http://www.mesa3d.org) would probably be happy to assist you. Also you can probably ask anyone on the Mingw mailing lists for any questions specific to Mingw (http://www.mingw.org)
+
+Targets and Environment variables used for Mingw build:
+
+ Before going into the actual build of the libraries, here is a list of available targets for the make process:
+
+ "all" or "libgl" -- this target will build libopengl.a, a static library. It will not build the demos, etc.
+
+ clean -- this target will clean up most of the Mesa 3-D Graphics Library/object code from your hard drive.
+
+ realclean -- this target will clean up all of the Mesa 3D Graphics Library and the Mesa object code that it can find.
+
+ Environment Variables:
+
+ The environment variables are used to determine what sort of graphics driver support needs to be included in the finished Mesa 3-D Graphics Library.
+
+ 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
+ ICD=1 build the installable client driver interface
+ (windows opengl driver interface)
+ default = no
+ X86=1 optimize for x86 (if possible, use MMX, SSE, 3DNow).
+ default = no
+
+
+Running the Build:
+
+ Launch Mingw.
+ From the Windows Command Prompt:
+ Set Environment Variables (as needed).
+ "cd" to your Mesa3D 'root' directory.
+ Enter "mingw32-make -f makefile.mgw <target>
+
+ That's all there is to it.
+
+ Enjoy!
+
+ Paul G. <pgarceau@users.sourceforge.net>
+ Daniel Borca <dborca@users.sourceforge.net>
diff --git a/docs/README.MITS b/docs/README.MITS
new file mode 100644
index 00000000000..a89176a62e6
--- /dev/null
+++ b/docs/README.MITS
@@ -0,0 +1,102 @@
+
+ Mesa 3.0 MITS Information
+
+
+This software is distributed under the terms of the GNU Library
+General Public License, see the LICENSE file for details.
+
+
+This document is a preliminary introduction to help you get
+started. For more detaile information consult the web page.
+
+http://10-dencies.zkm.de/~mesa/
+
+
+
+Version 0.1 (Yes it's very alpha code so be warned!)
+Contributors:
+ Emil Briggs (briggs@bucky.physics.ncsu.edu)
+ David Bucciarelli (tech.hmw@plus.it)
+ Andreas Schiffler (schiffler@zkm.de)
+
+
+
+1. Requirements:
+ Mesa 3.0.
+ An SMP capable machine running Linux 2.x
+ libpthread installed on your machine.
+
+
+2. What does MITS stand for?
+ MITS stands for Mesa Internal Threading System. By adding
+ internal threading to Mesa it should be possible to improve
+ performance of OpenGL applications on SMP machines.
+
+
+3. Do applications have to be recoded to take advantage of MITS?
+ No. The threading is internal to Mesa and transparent to
+ applications.
+
+
+4. Will all applications benefit from the current implementation of MITS?
+ No. This implementation splits the processing of the vertex buffer
+ over two threads. There is a certain amount of overhead involved
+ with the thread synchronization and if there is not enough work
+ to be done the extra overhead outweighs any speedup from using
+ dual processors. You will not for example see any speedup when
+ running Quake because it uses GL_POLYGON and there is only one
+ polygon for each vertex buffer processed. Test results on a
+ dual 200 Mhz. Pentium Pro system show that one needs around
+ 100-200 vertices in the vertex buffer before any there is any
+ appreciable benefit from the threading.
+
+
+5. Are there any parameters that I can tune to try to improve performance.
+ Yes. You can try to vary the size of the vertex buffer which is
+ define in VB_MAX located in the file src/vb.h from your top level
+ Mesa distribution. The number needs to be a multiple of 12 and
+ the optimum value will probably depend on the capabilities of
+ your machine and the particular application you are running.
+
+
+6. Are there any ways I can modify the application to improve its
+ performance with the MITS?
+ Yes. Try to use as many vertices between each Begin/End pair
+ as possbile. This will reduce the thread synchronization
+ overhead.
+
+
+7. What sort of speedups can I expect?
+ On some benchmarks performance gains of up to 30% have been
+ observerd. Others may see no gain at all and in a few rare
+ cases even some degradation.
+
+
+8. What still needs to be done?
+ Lots of testing and benchmarking.
+ A portable implementation that works within the Mesa thread API.
+ Threading of additional areas of Mesa to improve performance
+ even more.
+
+
+
+Installation:
+
+ 1. This assumes that you already have a working Mesa 3.0 installation
+ from source.
+ 2. Place the tarball MITS.tar.gz in your top level Mesa directory.
+ 3. Unzip it and untar it. It will replace the following files in
+ your Mesa source tree so back them up if you want to save them.
+
+
+ README.MITS
+ Make-config
+ Makefile
+ mklib.glide
+ src/vbxform.c
+ src/vb.h
+
+ 4. Rebuild Mesa using the command
+
+ make linux-386-glide-mits
+
diff --git a/docs/README.NeXT b/docs/README.NeXT
new file mode 100644
index 00000000000..1ad9a9e5c23
--- /dev/null
+++ b/docs/README.NeXT
@@ -0,0 +1,6 @@
+The NeXT support has now been incorporated into the OpenStep support.
+You can build NeXT libraries simply by typing "make next", though before
+linking they will need to be ranlib'd by hand. For more information see
+the README.OpenStep file, together with the README files in OpenStep/Old_Demos.
+
+-Pete French. (pete@ohm.york.ac.uk) 28/5/1998
diff --git a/docs/README.OS2 b/docs/README.OS2
new file mode 100644
index 00000000000..b3374ea2326
--- /dev/null
+++ b/docs/README.OS2
@@ -0,0 +1,96 @@
+ README for port of Mesa 3.x to XFree86 on OS/2 (X/2)
+ (as of 19990514)
+
+
+ Contents:
+
+ 1) Binary release
+ 2) Building from sources
+ 3) History
+ 4) Todo
+ 5) Mesa Home Page
+
+
+1) Binary release
+
+ Though the Mesa sources should build in a quite reasonable time even on
+ a 585 class machine a binary relase is available (check topic 4) for an URL)
+ This package includes:
+
+ - lib/MesaGL.dll, MesaGL.a
+ - lib/MesaGLU.dll, MesaGLU.a
+ - lib/glut.dll, glut.a
+ - include/GL/*.h
+
+ Installing this in your XFree86 tree will enable you to build and
+ run all applications compatible with Mesa (and the current DLL
+ interface, of course ;-)
+ As usual the OMF-style libraries can be created using emxomf.
+ (e.g. "emxomf foo.a" creates the foo.lib omf-style library).
+ The static libraries are rarely used and you have to rebuild
+ Mesa to get them. They're a supported target, so you get
+ them in a straightforward way (see below).
+
+ The testing of these libraries was limited to the supplied
+ demos/examples and a quite small number of third-party apps.
+ No warranty ... as usual ... ;-)
+
+
+2) Instructions to build Mesa 3.x for XFree86/OS2 from sources:
+
+ Except the official Mesa source distribution you need:
+ - a recent version of XFree86 (3.3.x or above) including
+ the programming libraries
+ - EMX 0.9c (0.9d might work, never checked)
+ - GNU make
+ - REXX (!)
+
+ The creation of the DLLs as well as of the static libraries
+ (if you want to have them) is handled in "mklib-emx.cmd",
+ a small REXX script. Perhaps not the best idea, but this
+ way it fits best in the scheme used to build libraries
+ on all platforms in Mesa 3.x.
+
+ To actually build the libraries and demos, check mklib-emx.cmd
+ and modify it as desired. Then type
+ make os2-x11
+ and wait for completion ;-)
+
+
+3) History
+
+ Initially Darren Abbott (abbott@hiwaay.net) ported Mesa versions 2.x
+ to XFree86 OS/2. This port might still be available from
+ http://fly.HiWAAY.net/~abbott/xfree86-os2/xfree86.html
+
+ The current port picked up things during the beta test for 3.0.
+ No major changes in the source were done. The build mechanism under OS/2
+ has been made very similar to other platforms (if you treat mklib-emx.cmd
+ as a "black box").
+ Advantage is that X/2 is now a valid target and all files are
+ integrated in the official source distribution.
+ Disadvantage is that this port (i.e. the DLLs' interface itself) is
+ definitly NOT COMPATIBLE to those of version 2.x.
+ It's uncertain whether this would be at all possible but since there
+ a _very_ few those apps it's not worth to find out anyway.
+ Also some libs (MesaTK, MesaAUX) are withdrawn from the Mesa distribution,
+ and accordingly from the OS/2 port.
+
+4) Todo
+
+ By now binary compatiblity is ensured by using the function names
+ as entry points instead of ordinals. This might cost performance and
+ is subject to change in future. In addition the supplied X86 assembler
+ source is not used yet.
+
+5) Mesa Home Page
+
+ You can get the source code and more information about Mesa from
+ http://www.mesa3d.org/
+
+ The OS/2 ports should be available from
+ http://r350.ee.ntu.edu.tw/~hcchu/os2/ports
+
+--
+Alexander Mai
+st002279@hrzpub.tu-darmstadt.de
diff --git a/docs/README.OpenStep b/docs/README.OpenStep
new file mode 100644
index 00000000000..a566eca676f
--- /dev/null
+++ b/docs/README.OpenStep
@@ -0,0 +1,35 @@
+This is a port of the GL and GLU libraries to NeXT/Apple object
+orientated systems. As these systems have their own window handling
+systems we simply use the offscreen rendering capability of Mesa
+to generate bitmaps which may then be displayed by the application
+with a View as required. Example pieces of code may be found in the
+OpenStep directory.
+
+Sadly there are now a proliferation of different system that we need to
+support compilation for: The original NextStep system, The OpenStep
+system, the Rhapsody/Mac OS X system and also the windows implementations
+of the latter two systems. This version of the code has been compiled and
+tested under the following architectures:
+
+ NextStep 3.3
+ OpenStep 4.2
+ Rhapsody DR2
+ WebObjects for NT 3.5
+ WebObjects for NT 4.0
+
+All tests were done with Intel processors. Feedback on other systems would,
+however, be appreciated !
+
+On UNIX systems simply type "make openstep". Under Windows systems
+with WebObjects run the "win32-openstep.sh" script from within the Bourne
+shell provided with the development environment. In both cases this will
+build the libraries and place them into the "lib" directory. Some examples
+may be found in the OpenStep directory showing how to use the code in an
+actual application (MesaView) as well as some command line demos.
+
+The CC variable may be specified on the command line for doing such things
+as building FFAT libraries or using alternative compilers to the standard 'cc'
+e.g. make CC='cc -arch m68k -arch i386' openstep" will build the libraries
+with both intel and motorola architectures.
+
+-Pete French. (pete@ohm.york.ac.uk) 7/6/1999
diff --git a/docs/README.QUAKE b/docs/README.QUAKE
new file mode 100644
index 00000000000..5a13b7a4981
--- /dev/null
+++ b/docs/README.QUAKE
@@ -0,0 +1,208 @@
+
+ Info on using Mesa 3.0 with Linux Quake I and Quake II
+
+
+
+Disclaimer
+----------
+
+I am _not_ a Quake expert by any means. I pretty much only run it to
+test Mesa. There have been a lot of questions about Linux Quake and
+Mesa so I'm trying to provide some useful info here. If this file
+doesn't help you then you should look elsewhere for help. The Mesa
+mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup
+might be good.
+
+Again, all the information I have is in this file. Please don't email
+me with questions.
+
+If you have information to contribute to this file please send it to
+me at brianp@elastic.avid.com
+
+
+
+Linux Quake
+-----------
+
+You can get Linux Quake from http://www.idsoftware.com/
+
+Quake I and II for Linux were tested with, and include, Mesa 2.6. You
+shouldn't have too many problems if you simply follow the instructions
+in the Quake distribution.
+
+
+
+RedHat 5.0 Linux problems
+-------------------------
+
+RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas
+previous RedHat and other Linux distributions use "libc5" for its
+runtime C library.
+
+Linux Quake I and II were compiled for libc5. If you compile Mesa
+on a RedHat 5.x system the resulting libMesaGL.so file will not work
+with Linux Quake because of the different C runtime libraries.
+The symptom of this is a segmentation fault soon after starting Quake.
+
+If you want to use a newer version of Mesa (like 3.x) with Quake on
+RedHat 5.x then read on.
+
+The solution to the C library problem is to force Mesa to use libc5.
+libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems.
+
+Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following
+info:
+
+> I only know what works on a RedHat 5.0 distribution. RH5 includes
+> a full set of libraries for both libc5 and glibc. The loader ld.so
+> uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs
+> linked against libc5 while it uses the glibc libraries in /lib and
+> /usr/lib for programs linked against glibc.
+>
+> Anyway I changed line 41 of mklib.glide to
+> GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib"
+>
+> And I started quake2 up with a script like this
+> #!/bin/csh
+> setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib
+> setenv MESA_GLX_FX f
+> ./quake2 +set vid_ref gl
+> kbd_mode -a
+> reset
+
+
+I've already patched the mklib.glide file. You'll have to start Quake
+with the script shown above though.
+
+
+
+**********************
+
+Daryll Strauss writes:
+
+Here's my thoughts on the problem. On a RH 5.x system, you can NOT build
+a libc5 executable or library. Red Hat just doesn't include the right
+stuff to do it.
+
+Since Quake is a libc5 based application, you are in trouble. You need
+libc5 libraries.
+
+What can you do about it? Well there's a package called gcc5 that does
+MOST of the right stuff to compile with libc5. (It brings back older
+header files, makes appropriate symbolic links for libraries, and sets
+up the compiler to use the correct directories) You can find gcc5 here:
+ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm
+
+No, this isn't quite enough. There are still a few tricks to getting
+Mesa to compile as a libc5 application. First you have to make sure that
+every compile uses gcc5 instead of gcc. Second, in some cases the link
+line actually lists -L/usr/lib which breaks gcc5 (because it forces you
+to use the glibc version of things)
+
+If you get all the stuff correctly compiled with gcc5 it should work.
+I've run Mesa 3.0B6 and its demos in a window with my Rush on a Red Hat
+5.1 system. It is a big hassle, but it can be done. I've only made Quake
+segfault, but I think that's from my libRush using the wrong libc.
+
+Yes, mixing libc5 and glibc is a major pain. I've been working to get
+all my libraries compiling correctly with this setup. Someone should
+make an RPM out of it and feed changes back to Brian once they get it
+all working. If no one else has done so by the time I get the rest of my
+stuff straightened out, I'll try to do it myself.
+
+ - |Daryll
+
+
+
+*********************
+
+David Bucciarelli (tech.hmw@plus.it) writes:
+
+I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is
+working fine for me. I had only to make a small change to the
+Mesa-3.0/mklib.glide file, from:
+
+
+ GLIDELIBS="-L/usr/local/glide/lib -lglide2x
+-L/usr/i486-linux-libc5/lib -lm"
+
+to:
+
+ GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x"
+
+and to make two symbolic links:
+
+[david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2
+[david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2
+
+I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it
+includes also the Glide for the libc5). I'm not using the /dev/3Dfx and
+running QuakeII as root with the following env. var:
+
+export
+LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib
+
+I think that all problems are related to the glibc, Quake will never
+work if you get the following output:
+
+[david@localhost Mesa]$ ldd lib/libMesaGL.so
+ libglide2x.so => /usr/lib/libglide2x.so (0x400f8000)
+ libm.so.6 => /lib/libm.so.6 (0x40244000)
+ libc.so.6 => /lib/libc.so.6 (0x4025d000)
+ /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
+
+You must get the following outputs:
+
+[david@localhost Mesa]# ldd lib/libMesaGL.so
+ libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
+(0x400f3000)
+
+[root@localhost quake2]# ldd quake2
+ libdl.so.1 => /lib/libdl.so.1 (0x40005000)
+ libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000)
+ libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000)
+
+[root@localhost quake2]# ldd ref_gl.so
+ libMesaGL.so.2 =>
+/dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000)
+ libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
+(0x401d9000)
+ libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6
+(0x40324000)
+ libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6
+(0x403b7000)
+ libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1
+(0x403c1000)
+ libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000)
+ libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000)
+
+
+***********************
+
+Steve Davies (steve@one47.demon.co.uk) writes:
+
+
+Try using:
+
+ export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib
+ ./quake2 +set vid_ref gl
+
+to start the game... Works for me, but assumes that you have the
+compatability libc5 RPMs installed.
+
+
+***************************
+
+WWW resources - you may find additional Linux Quake help at these URLs:
+
+
+http://quake.medina.net/howto
+
+http://webpages.mr.net/bobz
+
+http://www.linuxgames.com/quake2/
+
+
+
+----------------------------------------------------------------------
+$Id: README.QUAKE,v 1.3 1998/08/23 15:26:26 brianp Exp $
diff --git a/docs/README.THREADS b/docs/README.THREADS
new file mode 100644
index 00000000000..fb6e0ff3d1a
--- /dev/null
+++ b/docs/README.THREADS
@@ -0,0 +1,52 @@
+
+
+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:
+ 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]
+
+
+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.
+
+The mtdemos directory contains some example programs which use
+multiple threads to render to osmesa rendering context(s).
+
+Linux users should be aware that there exist many different POSIX
+threads packages. The best solution is the linuxthreads package
+(http://pauillac.inria.fr/~xleroy/linuxthreads/) as this package is the
+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.
+
+
+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)
diff --git a/docs/README.VMS b/docs/README.VMS
new file mode 100644
index 00000000000..6b02909d5b2
--- /dev/null
+++ b/docs/README.VMS
@@ -0,0 +1,38 @@
+
+VMS support contributed by Jouk Jansen (joukj@hrem.stm.tudelft.nl)
+
+
+The latest version was tested on a VMSAlpha7.2 system using DECC6.0, but
+probably also works for other versions.
+
+At the moment only the libraries LIBMESGL.EXE/LIBMESGL.OLB,
+LIBMESAGLU.EXE/LIBMESAGLU.OLB and LIBGLUT.EXE/LIBGLUT.OLB and the demos of the
+directory [.DEMOS] can be build.
+However, feel free to create the missing "decrip.mms-files" in the other
+directories.
+
+ The make files were tested
+using the DIGITAL make utility called MMS. There is also a public domain
+clone available (MMK) and I think, but it is not tested, that this
+utility will give (hardly) any problem.
+
+To make everything just type MMS (or MMK) in the main directory of
+mesagl. For MMS the deafult makefile is called descrip.mms, and
+that is what I have called it. I included alse some config files,
+all having mms somewhere in the name which all the makefiles need
+(just as your unix makefiles).
+
+On Alpha platforms at default a sharable images for the libraries are created.
+To get a static library make it by typing MMS/MACRO=(NOSHARE=1).
+On VAX platforms only static libraries can be build.
+
+23-sep-2005
+changed default compilation to use /float=ieee/ieee=denorm. The reason for
+this is that it makes Mesa on OpenVMS better compatible with other platforms
+and other packages for VMS that I maintain.
+For more information see
+ http://nchrem.tnw.tudelft.nl/openvms
+ https://bugs.freedesktop.org/show_bug.cgi?id=4270
+You may want to compile Mesa to use VAX-floating point arithmetic, instead
+of IEEE floating point by removing the /float=IEEE/denorm flag from the
+compiler options in the descrip.mms files.
diff --git a/docs/README.WIN32 b/docs/README.WIN32
new file mode 100644
index 00000000000..8dc59b00fd4
--- /dev/null
+++ b/docs/README.WIN32
@@ -0,0 +1,155 @@
+File: docs/README.WIN32
+
+Last updated: Mar 31, 2006 - Karl Schultz - kschultz@users.sourceforge.net
+
+Quick Start
+----- -----
+
+Unzip the MesaLib, MesaGLUT, and MesaDemos ZIP files into the same
+directory. The libs and demos build separately, so if you do not care
+about the demos or GLUT, you only need to unzip MesaLib. If you unzip
+more than one ZIP file, they all need to be unzipped into the same
+directory. Don't worry, you will not overwrite anything.
+
+The Windows build system uses Microsoft Visual Studio. Project files
+for a specific version of Visual Studio are in their own directory in
+the top-level "windows" directory. For example, Visual Studio 6 files
+are in windows/VC6. If a directory does not exist for your version of
+Visual Studio, you can try importing the project files from an earlier
+version of Visual Studio. At this time, project files exist for
+Version 6 and Version 7. The code has been built with a beta version
+of Version 8 and it runs on 64-bit Windows. If you want to try this,
+start by importing the VC7 files and create the 64-bit targets in the
+configuration manager.
+
+It is likely that the new and free Visual Studio Express can be used
+to build Mesa, but it hasn't been tried yet. Start with the VC7
+project files.
+
+The project files to build the core Mesa library, Windows Mesa
+drivers, OSMesa, and GLU are in the mesa directory. The project files
+to build GLUT and some demo programs are in the progs directory.
+
+Makefiles are no longer shipped or supported, but can be generated
+from the projects using Visual Studio.
+
+
+Windows Drivers
+------- -------
+
+At this time, only the GDI driver is known to work. Most of the demos
+in progs/demos should work with this driver.
+
+Source code also exists in the tree for other drivers in
+src/mesa/drivers/windows, but the status of this code is unknown.
+
+The GDI driver operates basically by writing pixel spans into a DIB
+section and then blitting the DIB to the window. The driver was
+recently cleaned up and rewitten and so may have bugs or may be
+missing some functionality. The older versions of the CVS source may
+be useful in figuring out any problems, or report them to me.
+
+To build Mesa with the GDI driver, build the mesa, gdi, and glu
+projects in the Visual Studio workspace found at
+
+ windows/VC6/mesa/mesa.dsw
+or
+ windows/VC7/mesa/mesa.sln
+
+The osmesa DLL can also be built with the osmesa project.
+
+The build system creates a lib top-level directory and copies
+resulting LIB and DLL files to this lib directory. The files are:
+
+ OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB
+ OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL
+
+If the MesaDemos ZIP file was extracted, the DLL files are also copied
+to the demos directory. This facilitates running the demos as described
+below.
+
+
+GLUT and Demos
+---- --- -----
+
+A Visual Studio workspace can be found at
+
+ windows/VC6/progs/progs.dsw
+or
+ windows/VC7/progs/progs.sln
+
+It can be used to build GLUT and a few demos. The GLUT lib and DLL
+are copied to the top-level lib directory, along with the Mesa libs.
+
+The demo build system expects to find the LIB files in the top level
+lib directory, so you must build the Mesa libs first. The demo
+executables are placed in the demos directory, because some of them
+rely on data files found there. Also, the Mesa lib DLL's were copied
+there by the Mesa lib build process. Therefore, you should be able to
+simply run the demo executables from the demo directory.
+
+If you want to run the demos from the Visual Studio, you may have to
+change the startup directory and explicitly state where the executables are.
+
+You may also build all the demo programs by using a makefile. Go to
+the progs/demos directory and make sure you have executed VCVARS32.BAT
+or whatever setup script is appropriate for your compiler. Then,
+
+ nmake -f Makefile.win
+
+should build all the demos.
+
+
+Build System Notes
+----- ------ -----
+
+VC6
+---
+
+Visual Studio 6 does not recognize files with the .cc extension as C++
+language files, without a lot of unnatural tweaking. So, the VC6
+build process uses custom build steps to compile these files in the
+GLU library.
+
+Two additional configurations are provided, Debug x86 and Release x86
+that activate the shader code compilation by defining SLANG_86. It is
+unknown if and how this works.
+
+VC7
+---
+
+The above-mentioned .cc problem does not exist in this version.
+
+
+General
+-------
+
+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.
+
+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.
+
+To build "mangled" Mesa, add the preprocessor define USE_MGL_NAMESPACE
+to the project settings. You will also need to edit src/mesa.def to
+change all the gl* symbols to mgl*. Because this is easy to do with a
+global replace operation in a text editor, no additional mangled
+version of mesa.def is maintained or shipped.
+
+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
diff --git a/docs/README.WINDML b/docs/README.WINDML
new file mode 100644
index 00000000000..448db71f8b4
--- /dev/null
+++ b/docs/README.WINDML
@@ -0,0 +1,146 @@
+
+ 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
diff --git a/docs/README.X11 b/docs/README.X11
new file mode 100644
index 00000000000..4cbd1261817
--- /dev/null
+++ b/docs/README.X11
@@ -0,0 +1,314 @@
+
+ Mesa Unix/X11 Information
+
+
+
+Installation
+============
+
+There are two ways to compile Mesa on Unix/X11 systems:
+
+1. The old way:
+ First type 'make' alone to see the list of system
+ configurations currently supported. If you see your configuration on the
+ list, type 'make <config>'. Most popular Unix/X workstations are currently
+ supported.
+
+ If your system configuration is not listed by 'make', you'll have to modify
+ the top-level Makefile and Make-config files. There are instructions in
+ each file.
+
+ When finished, the Mesa libraries will be in the Mesa-x.y/lib/ directory.
+
+
+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.
+
+
+Header and library files:
+ After you've compiled Mesa and tried the demos I recommend the following
+ procedure for "installing" Mesa.
+
+ Copy the Mesa include/GL directory to /usr/local/include:
+ cp -r include/GL /usr/local/include
+
+ Copy the Mesa library files to /usr/local/lib:
+ cp lib/* /usr/local/lib
+
+ (actually, use "cp -d" on Linux to preserve symbolic links)
+
+
+Xt/Motif widgets:
+ If you want to use Mesa or OpenGL in your Xt/Motif program you can build
+ the widgets found in either the widgets-mesa or widgets-sgi directories.
+ The former were written for Mesa and the later are the original SGI
+ widgets. Look in those directories for more information.
+
+
+Notes:
+ HP users: a Mesa user reports that the HP-UX 10.01 C compiler has
+ a bug which effects glReadPixels. A patch for the compiler (PHSS_5743) is
+ available. Otherwise be sure your compiler is version 10.13 or later.
+
+ QNX users: if you have problems running the demos try setting the
+ stack size to 200K or larger with -N200K, for example.
+
+ SunOS 5.x users: The X shared memory extension may not work
+ correctly. If Mesa prints an error message to the effect of "Shared memory
+ error" then you'll have to append the following three lines to the end of
+ your /etc/system file then reboot:
+ set shmsys:shminfo_shmmax = 0x2000000
+ set shmsys:shminfo_shmmni = 0x1000
+ set shmsys:shminfo_shmseg = 0x100
+
+
+
+Using the library
+=================
+
+Configuration options:
+ The file src/mesa/main/config.h has many parameters which you can adjust
+ such as maximum number of lights, clipping planes, maximum texture size,
+ etc. In particular, you may want to change DEPTH_BITS from 16 to 32
+ if a 16-bit depth buffer isn't precise enough for your application.
+
+
+Shared libraries:
+ If you compile shared libraries you may have to set an environment
+ variable to specify where the Mesa libraries are located. On Linux and
+ Sun systems for example, set the LD_LIBRARY_PATH variable to include
+ /your-dir/Mesa-2.6/lib. Otherwise, when you try to run a demo it
+ may fail with a message saying that one or more libraries couldn't be
+ found.
+
+
+Remote display of OpenGL/GLX programs:
+ As of version 1.2.3, Mesa's header files use the same GLenum and GLUenum
+ values as SGI's (and most/all other vendor's) OpenGL headers. This means
+ you can freely mix object files compiled with OpenGL or Mesa headers.
+ In fact, on systems with dynamic runtime linkers it's possible to dynam-
+ ically link with Mesa or OpenGL shared libraries at runtime, without
+ recompiling or relinking anything!
+
+ Using IRIX 5.x as an example, you can run SGI's OpenGL demos with the
+ Mesa shared libraries as follows. Let's assume you're installing Mesa
+ in /usr/local/Mesa and using the C-shell:
+ % cd /usr/local/Mesa
+ % make irix5-dso
+ % setenv _RLD_LIST "/usr/local/Mesa/lib/libGL.so:DEFAULT"
+ % /usr/demos/bin/ideas_ogl // this is a test
+
+ You can now run OpenGL executables on almost any X display! There may
+ be some problems from the fact that Mesa supports many X visual types
+ that an OpenGL client may not expect (grayscale for example). In this
+ case the application may abort, print error messages, or just behave
+ strangely. You may have to experiment with the MESA_RGB_VISUAL envi-
+ ronment variable.
+
+
+Xt/Motif Widgets:
+ Two versions of the Xt/Motif OpenGL drawing area widgets are included:
+
+ widgets-sgi/ SGI's stock widgets
+ widgets-mesa/ Mesa-tuned widgets
+
+ Look in those directories for details
+
+
+Togl:
+ Togl is an OpenGL/Mesa widget for Tcl/Tk.
+ See http://togl.sourceforge.net for more information.
+
+
+
+X Display Modes:
+ Mesa supports RGB(A) rendering into almost any X visual type and depth.
+
+ The glXChooseVisual function tries its best to pick an appropriate visual
+ for the given attribute list. However, if this doesn't suit your needs
+ you can force Mesa to use any X visual you want (any supported by your
+ X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL
+ environment variables. When an RGB visual is requested, glXChooseVisual
+ will first look if the MESA_RGB_VISUAL variable is defined. If so, it
+ will try to use the specified visual. Similarly, when a color index
+ visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL
+ variable.
+
+ The format of accepted values is: <visual-class> <depth>
+ Here are some examples:
+
+ using the C-shell:
+ % setenv MESA_RGB_VISUAL "TrueColor 8" // 8-bit TrueColor
+ % setenv MESA_CI_VISUAL "PseudoColor 12" // 12-bit PseudoColor
+ % setenv MESA_RGB_VISUAL "PseudoColor 8" // 8-bit PseudoColor
+
+ using the KornShell:
+ $ export MESA_RGB_VISUAL="TrueColor 8"
+ $ export MESA_CI_VISUAL="PseudoColor 12"
+ $ export MESA_RGB_VISUAL="PseudoColor 8"
+
+
+Double buffering:
+ Mesa can use either an X Pixmap or XImage as the backbuffer when in
+ double buffer mode. Using GLX, the default is to use an XImage. The
+ MESA_BACK_BUFFER environment variable can override this. The valid
+ values for MESA_BACK_BUFFER are: Pixmap and XImage (only the first
+ letter is checked, case doesn't matter).
+
+ A pixmap is faster when drawing simple lines and polygons while an
+ XImage is faster when Mesa has to do pixel-by-pixel rendering. If you
+ need depth buffering the XImage will almost surely be faster. Exper-
+ iment with the MESA_BACK_BUFFER variable to see which is faster for
+ your application.
+
+
+Colormaps:
+ When using Mesa directly or with GLX, it's up to the application writer
+ to create a window with an appropriate colormap. The aux, tk, and GLUT
+ toolkits try to minimize colormap "flashing" by sharing colormaps when
+ possible. Specifically, if the visual and depth of the window matches
+ that of the root window, the root window's colormap will be shared by
+ the Mesa window. Otherwise, a new, private colormap will be allocated.
+
+ When sharing the root colormap, Mesa may be unable to allocate the colors
+ it needs, resulting in poor color quality. This can happen when a
+ large number of colorcells in the root colormap are already allocated.
+ To prevent colormap sharing in aux, tk and GLUT, define the environment
+ variable MESA_PRIVATE_CMAP. The value isn't significant.
+
+
+Gamma correction:
+ To compensate for the nonlinear relationship between pixel values
+ and displayed intensities, there is a gamma correction feature in
+ Mesa. Some systems, such as Silicon Graphics, support gamma
+ correction in hardware (man gamma) so you won't need to use Mesa's
+ gamma facility. Other systems, however, may need gamma adjustment
+ to produce images which look correct. If in the past you thought
+ Mesa's images were too dim, read on.
+
+ Gamma correction is controlled with the MESA_GAMMA environment
+ variable. Its value is of the form "Gr Gg Gb" or just "G" where
+ Gr is the red gamma value, Gg is the green gamma value, Gb is the
+ blue gamma value and G is one gamma value to use for all three
+ channels. Each value is a positive real number typically in the
+ range 1.0 to 2.5. The defaults are all 1.0, effectively disabling
+ gamma correction. Examples using csh:
+
+ % setenv MESA_GAMMA "2.3 2.2 2.4" // separate R,G,B values
+ % setenv MESA_GAMMA "2.0" // same gamma for R,G,B
+
+ The demos/gamma.c program may help you to determine reasonable gamma
+ value for your display. With correct gamma values, the color intensities
+ displayed in the top row (drawn by dithering) should nearly match those
+ in the bottom row (drawn as grays).
+
+ Alex De Bruyn reports that gamma values of 1.6, 1.6 and 1.9 work well
+ on HP displays using the HP-ColorRecovery technology.
+
+ Mesa implements gamma correction with a lookup table which translates
+ a "linear" pixel value to a gamma-corrected pixel value. There is a
+ small performance penalty. Gamma correction only works in RGB mode.
+ Also be aware that pixel values read back from the frame buffer will
+ not be "un-corrected" so glReadPixels may not return the same data
+ drawn with glDrawPixels.
+
+ For more information about gamma correction see:
+ http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
+
+
+Overlay Planes
+
+ Overlay planes in the frame buffer are supported by Mesa but require
+ hardware and X server support. To determine if your X server has
+ overlay support you can test for the SERVER_OVERLAY_VISUALS property:
+
+ xprop -root | grep SERVER_OVERLAY_VISUALS
+
+
+HPCR glClear(GL_COLOR_BUFFER_BIT) dithering
+
+ If you set the MESA_HPCR_CLEAR environment variable then dithering
+ will be used when clearing the color buffer. This is only applicable
+ to HP systems with the HPCR (Color Recovery) system.
+
+
+Extensions
+==========
+ There are three Mesa-specific GLX extensions at this time.
+
+ GLX_MESA_pixmap_colormap
+
+ This extension adds the GLX function:
+
+ GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
+ Pixmap pixmap, Colormap cmap )
+
+ It is an alternative to the standard glXCreateGLXPixmap() function.
+ Since Mesa supports RGB rendering into any X visual, not just True-
+ Color or DirectColor, Mesa needs colormap information to convert RGB
+ values into pixel values. An X window carries this information but a
+ pixmap does not. This function associates a colormap to a GLX pixmap.
+ See the xdemos/glxpixmap.c file for an example of how to use this
+ extension.
+
+ GLX_MESA_release_buffers
+
+ Mesa associates a set of ancillary (depth, accumulation, stencil and
+ alpha) buffers with each X window it draws into. These ancillary
+ buffers are allocated for each X window the first time the X window
+ is passed to glXMakeCurrent(). Mesa, however, can't detect when an
+ X window has been destroyed in order to free the ancillary buffers.
+
+ The best it can do is to check for recently destroyed windows whenever
+ the client calls the glXCreateContext() or glXDestroyContext()
+ functions. This may not be sufficient in all situations though.
+
+ The GLX_MESA_release_buffers extension allows a client to explicitly
+ deallocate the ancillary buffers by calling glxReleaseBuffersMESA()
+ just before an X window is destroyed. For example:
+
+ #ifdef GLX_MESA_release_buffers
+ glXReleaseBuffersMESA( dpy, window );
+ #endif
+ XDestroyWindow( dpy, window );
+
+ This extension is new in Mesa 2.0.
+
+ GLX_MESA_copy_sub_buffer
+
+ This extension adds the glXCopySubBufferMESA() function. It works
+ like glXSwapBuffers() but only copies a sub-region of the window
+ instead of the whole window.
+
+ This extension is new in Mesa version 2.6
+
+
+
+Summary of X-related environment variables:
+ MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
+ MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
+ MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
+ MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
+ MESA_GAMMA - gamma correction coefficients (X only)
+
+
+----------------------------------------------------------------------
+$Id: README.X11,v 3.11 2003/12/17 15:14:31 brianp Exp $
diff --git a/docs/README.directfb b/docs/README.directfb
new file mode 100644
index 00000000000..169ebe486ee
--- /dev/null
+++ b/docs/README.directfb
@@ -0,0 +1,28 @@
+
+ Mesa DirectFB Information
+
+
+Requirements
+============
+
+ To build Mesa with DirectFB (DirectFBGL) support you need:
+ - DirectFB at least 0.9.21 (http://directfb.org)
+ - pkg-config at least 0.9 (http://pkgconfig.sf.net)
+
+
+Installation
+============
+ Run
+
+ make linux-directfb
+
+ to build Mesa and DirectFBGL module,
+
+ make install
+
+ to install OpenGL libraries and
+
+ make linux-directfb-install
+
+ to install DirectFBGL module in the proper location.
+
diff --git a/docs/RELNOTES-3.1 b/docs/RELNOTES-3.1
new file mode 100644
index 00000000000..4d6e3c2f44b
--- /dev/null
+++ b/docs/RELNOTES-3.1
@@ -0,0 +1,146 @@
+
+ Mesa 3.1 release notes
+
+ PLEASE READ!!!!
+
+
+New copyright
+-------------
+
+Mesa 3.1 will be distributed under an XFree86-style copyright instead
+of the GNU LGPL.
+
+
+New directories
+---------------
+
+All documentation files are now in the docs/ directory.
+All shell scripts are now in the bin/ directory.
+
+
+New library names
+-----------------
+
+Formerly, the main Mesa library was named libMesaGL.so (or libMesaGL.a)
+and the GLU library was named libMesaGLU.so (or libMesaGLU.a).
+
+Now, the main library is named libGL.so (or libGL.a) and the GLU library
+is named libGLU.so (or libGLU.a).
+
+The change allows Mesa to be more easily substituted for OpenGL.
+Specifically, the linker/loader on some Unix-like systems won't
+allow libMesaGL.so to be used instead of libGL.so if the application
+was linked with the former.
+
+Warning: if you have another OpenGL implementation installed on your
+system (i.e. you have another OpenGL libGL.so) you'll have to be
+carefull about which library (OpenGL or Mesa) you link against. Be
+aware of -L linker flags and the value of the LD_LIBRARY_PATH environment
+variable.
+
+
+New library versioning
+----------------------
+
+Previously, the Mesa GL library was named libMesaGL.so.3.0
+To better support Linux/OpenGL standards, the Mesa GL library is now
+named libGL.so.1.2.030100 This indicates version 1.2 of the OpenGL spec
+and Mesa implementation 3.1.0
+
+In the long term this will allow better interoperability with other
+OpenGL implementations, especially on Linux. In the short term,
+OpenGL apps may have to be relinked to use the new library naming.
+
+
+
+New makefiles
+-------------
+
+The old Makefiles found in the various directories have been renamed
+to Makefile.X11 in order to prevent filename collisions with autoconfig-
+generated Makefiles.
+
+The top-level Makefile simply includes Makefile.X11
+If your top-level Makefile get's overwritten/destroyed you can restore
+it by copying Makefile.X11 to Makefile
+
+
+New extensions
+--------------
+
+GL_EXT_stencil_wrap
+ Implements two new stencil operations: GL_INCR_WRAP_EXT and
+ GL_DECR_WRAP_EXT which allow stencil increment and decrement
+ without clamping.
+
+GL_INGR_blend_func_separate
+ Allows specification of blend factors for RGB and Alpha independently.
+ (INGR = Intergraph)
+
+GL_ARB_multitexture
+ Multiple simultaneous textures. (ARB = Architecture Review Board)
+
+GL_NV_texgen_reflection
+ nVidia texgen extension for better reflection mapping.
+
+GL_PGI_misc_hints
+ Assorted transformation hints.
+
+GL_EXT_compiled_vertex_array
+ Compiled vertex arrays.
+
+GL_EXT_clip_volume_hint
+ Allows one to disable clip volume (frustum) testing.
+
+
+
+Extensions removed
+------------------
+
+GL_EXT_multitexture - obsolete in favor of GL_ARB_multitexture
+
+
+
+Config file
+-----------
+
+By default, /etc/mesa.conf will be read when Mesa starts. This
+file controls default hints, enable/disable of extensions, and
+more. See the CONFIG file for documentation.
+
+
+
+Optimizations
+-------------
+
+Keith Whitwell has contributed significant optimizations to Mesa's
+vertex transformation code. Basically, the whole transformation
+stage of Mesa has been rewritten.
+
+It's impossible to give a speedup factor. You'll just have to
+try your app and see how it performs.
+
+
+
+Device Driver changes
+---------------------
+
+A bunch of new device driver functions have been added. See src/dd.h
+Keith Harrison contributed many of them. I've been planning on adding
+a bunch of functions like these to make writing hardware drivers easier.
+More such function will probably be added in the near future.
+
+
+
+Miscellaneous
+-------------
+
+util/glstate.c has some handy functions for debugging. Basically, it
+offers a simple function for printing GL state variables. It's not
+finished yet. There's a LOT more GLenum records to be added (see the
+code). Anyone want to help?
+
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-3.1,v 1.2 2000/04/07 17:08:06 brianp Exp $
diff --git a/docs/RELNOTES-3.2 b/docs/RELNOTES-3.2
new file mode 100644
index 00000000000..7737c28e80f
--- /dev/null
+++ b/docs/RELNOTES-3.2
@@ -0,0 +1,12 @@
+
+ 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 $
diff --git a/docs/RELNOTES-3.2.1 b/docs/RELNOTES-3.2.1
new file mode 100644
index 00000000000..2ad5b9046a1
--- /dev/null
+++ b/docs/RELNOTES-3.2.1
@@ -0,0 +1,32 @@
+
+ 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 $
diff --git a/docs/RELNOTES-3.3 b/docs/RELNOTES-3.3
new file mode 100644
index 00000000000..362a74ee31d
--- /dev/null
+++ b/docs/RELNOTES-3.3
@@ -0,0 +1,271 @@
+
+ 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 $
diff --git a/docs/RELNOTES-3.4 b/docs/RELNOTES-3.4
new file mode 100644
index 00000000000..4aa607a37cc
--- /dev/null
+++ b/docs/RELNOTES-3.4
@@ -0,0 +1,22 @@
+
+ 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 $
diff --git a/docs/RELNOTES-3.4.1 b/docs/RELNOTES-3.4.1
new file mode 100644
index 00000000000..18443507c28
--- /dev/null
+++ b/docs/RELNOTES-3.4.1
@@ -0,0 +1,22 @@
+
+ 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 $
diff --git a/docs/RELNOTES-3.4.2 b/docs/RELNOTES-3.4.2
new file mode 100644
index 00000000000..894ed199ff7
--- /dev/null
+++ b/docs/RELNOTES-3.4.2
@@ -0,0 +1,22 @@
+
+ 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 $
diff --git a/docs/RELNOTES-3.5 b/docs/RELNOTES-3.5
new file mode 100644
index 00000000000..52097a1cd6e
--- /dev/null
+++ b/docs/RELNOTES-3.5
@@ -0,0 +1,228 @@
+
+ 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 $
diff --git a/docs/RELNOTES-4.0 b/docs/RELNOTES-4.0
new file mode 100644
index 00000000000..e4249cfa175
--- /dev/null
+++ b/docs/RELNOTES-4.0
@@ -0,0 +1,163 @@
+
+ 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 $
diff --git a/docs/RELNOTES-4.0.1 b/docs/RELNOTES-4.0.1
new file mode 100644
index 00000000000..b4d7efca812
--- /dev/null
+++ b/docs/RELNOTES-4.0.1
@@ -0,0 +1,22 @@
+
+ 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 $
diff --git a/docs/RELNOTES-4.0.2 b/docs/RELNOTES-4.0.2
new file mode 100644
index 00000000000..1b7eaaa8fed
--- /dev/null
+++ b/docs/RELNOTES-4.0.2
@@ -0,0 +1,50 @@
+
+ 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 $
diff --git a/docs/RELNOTES-4.0.3 b/docs/RELNOTES-4.0.3
new file mode 100644
index 00000000000..c69b6a279ec
--- /dev/null
+++ b/docs/RELNOTES-4.0.3
@@ -0,0 +1,52 @@
+
+ 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 $
diff --git a/docs/RELNOTES-4.1 b/docs/RELNOTES-4.1
new file mode 100644
index 00000000000..92cf9196f06
--- /dev/null
+++ b/docs/RELNOTES-4.1
@@ -0,0 +1,308 @@
+
+ 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 $
diff --git a/docs/RELNOTES-5.0 b/docs/RELNOTES-5.0
new file mode 100644
index 00000000000..565e4ad78e4
--- /dev/null
+++ b/docs/RELNOTES-5.0
@@ -0,0 +1,85 @@
+
+ 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 $
diff --git a/docs/RELNOTES-5.0.1 b/docs/RELNOTES-5.0.1
new file mode 100644
index 00000000000..8d72cc44c11
--- /dev/null
+++ b/docs/RELNOTES-5.0.1
@@ -0,0 +1,46 @@
+
+ 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 $
diff --git a/docs/RELNOTES-5.0.2 b/docs/RELNOTES-5.0.2
new file mode 100644
index 00000000000..cfc9ad04fd6
--- /dev/null
+++ b/docs/RELNOTES-5.0.2
@@ -0,0 +1,46 @@
+
+ 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 $
diff --git a/docs/RELNOTES-5.1 b/docs/RELNOTES-5.1
new file mode 100644
index 00000000000..aed6e102b09
--- /dev/null
+++ b/docs/RELNOTES-5.1
@@ -0,0 +1,279 @@
+
+ Mesa 5.1 release notes
+
+ December 17, 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_ARB_vertex_program / GL_ARB_fragment_program
+ Michal Krol and Karl Rasche implemented these extensions. Thanks!
+ Be aware that there may be some rough edges and lurking bugs.
+
+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.
+
+Faster glDrawPixels / glCopyPixels in X11 driver
+ If your X screen is 32bpp, glDrawPixels to the front color buffer will
+ be accelerated (via XPutImage()) if the image format is GL_BGRA and the
+ type is GL_UNSIGNED_BYTE. No raster operations, such as depth test,
+ blend, fog, etc. can be enabled.
+
+ If your X screen is 16bpp, glDrawPixels to the front color buffer will
+ be accelerated (via XPutImage()) if the image format is GL_RGB and the
+ type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth
+ test, blend, fog, etc. can be enabled.
+
+ glCopyPixels() calls for the front color buffer will be accelerated
+ (via XCopyArea()) if no raster operations, such as depth test, blend,
+ fog, pixel zoom, etc. are enabled.
+
+ The speed-up over typical software rendering is a factor of 10 for
+ glDrawPixels and 100 for glCopyPixels.
+
+
+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
+ arbfragparse.[ch] - ARB fragment program parsing
+ arbvertparse.[ch] - ARB vertex program parsing
+ arbparse.[ch] - ARB vertex/fragment parsing
+ arbparse_syn.h - vertex/fragment program syntax
+ 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
+
+The files related to per-vertex handling have changed.
+Old files:
+ tnl/t_eval_api.c - old per-vertex code
+ tnl/t_imm_alloc.c - old per-vertex code
+ tnl/t_imm_api.c - old per-vertex code
+ tnl/t_imm_debug.c - old per-vertex code
+ tnl/t_imm_dlist.c - old per-vertex code
+ tnl/t_imm_elt.c - old per-vertex code
+ tnl/t_imm_eval.c - old per-vertex code
+ tnl/t_imm_exec.c - old per-vertex code
+ tnl/t_imm_fixup.c - old per-vertex code
+ tnl/t_vtx_sse.c - old per-vertex code
+ tnl/t_vtx_x86.c - old per-vertex code
+New files:
+ tnl/t_save_api.c - new per-vertex code
+ tnl/t_save_loopback.c - new per-vertex code
+ tnl/t_save_playback.c - new per-vertex code
+ tnl/t_vtx_eval.c - old per-vertex code
+
+Other new files:
+ bufferobj.[ch] - GL_ARB_vertex_buffer_object functions
+ version.h - defines the Mesa version info
+
+Other removed files:
+ swrast/s_histogram.[ch] - moved into src/histogram.c
+
+
+
+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.
+
+New vertex processing code.
+ The code behind glBegin, glEnd, glVertex, glNormal, etc. has been
+ totally rewritten. It's a cleaner implementation now and should use
+ less memory. (Keith)
+
+
+
+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.
+
+
+----------------------------------------------------------------------
diff --git a/docs/RELNOTES-6.0 b/docs/RELNOTES-6.0
new file mode 100644
index 00000000000..de01a879a4c
--- /dev/null
+++ b/docs/RELNOTES-6.0
@@ -0,0 +1,87 @@
+
+ Mesa 6.0 release notes
+
+ January 16, 2004
+
+ PLEASE READ!!!!
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 5.1) designate new developmental releases.
+Even numbered versions (such as 6.0) designate stable releases.
+
+Mesa version 6.0 signifies two things:
+
+ 1. A stabilization of the 5.1 development release
+ 2. Implementation of the OpenGL 1.5 specification. When you query
+ glGetString(GL_VERSION) "1.5" will be returned (as long as the
+ driver supports all the required features).
+
+
+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
+ Mesa 5.x == OpenGL 1.4
+ Mesa 6.x == OpenGL 1.5
+
+
+
+New Features
+------------
+
+Mesa 5.1 already had all the new features of OpenGL 1.5, implemented as
+extensions. These extensions were simply promoted to standard features:
+
+ GL_ARB_occlusion_query extension
+ GL_ARB_texture_non_power_of_two extension
+ GL_ARB_vertex_buffer_object extension
+ GL_EXT_shadow_funcs
+
+
+
+Device Drivers
+--------------
+
+Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on
+the device driver. For example, 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.5
+OSMesa (off-screen) implements OpenGL 1.5
+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.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+
+
+Other Changes
+-------------
+
+See the VERSIONS file for more details about bug fixes, etc. in Mesa 6.0.
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.0,v 1.3 2004/01/15 15:47:57 brianp Exp $
diff --git a/docs/RELNOTES-6.0.1 b/docs/RELNOTES-6.0.1
new file mode 100644
index 00000000000..e72d9fe891c
--- /dev/null
+++ b/docs/RELNOTES-6.0.1
@@ -0,0 +1,50 @@
+
+ Mesa 6.0.1 release notes
+
+ April 2, 2003
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Even-numbered versions (such as 6.0.x) designate stable releases.
+Odd-numbered versions (such as 6.1.x) designate new developmental releases.
+
+Mesa 6.0.1 just fixes bugs found since the 6.0 release. See the VERSIONS
+file for details.
+
+
+
+Device Drivers
+--------------
+
+Mesa advertises itself as supporting OpenGL 1.2, 1.3, 1.4 or 1.5
+depending on the device driver's capabilities. For example, if the
+driver enables all the ARB extensions which are part of OpenGL 1.5
+then glGetString(GL_VERSION) will return "1.5". Otherwise, it'll
+return "1.4" or the next lower version that implements all required
+functionality.
+
+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.5
+OSMesa (off-screen) implements OpenGL 1.5
+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.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.0.1,v 3.1 2004/04/02 23:37:02 brianp Exp $
diff --git a/docs/RELNOTES-6.1 b/docs/RELNOTES-6.1
new file mode 100644
index 00000000000..830f1e47e72
--- /dev/null
+++ b/docs/RELNOTES-6.1
@@ -0,0 +1,112 @@
+
+ Mesa 6.1 release notes
+
+ August 18, 2004
+
+ PLEASE READ!!!!
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.1) designate new developmental releases.
+Even numbered versions (such as 6.0) designate stable releases.
+
+
+New Features
+------------
+
+Half-precision floating point (GLhalf) pixel formats are supported
+in Mesa, but the feature isn't exposed yet since the ARB extension
+hasn't been finalized yet.
+
+
+Texture image handling
+----------------------
+
+The code which implements image conversion, pixel transfer ops, etc
+for glTexImage commands has been rewritten.
+
+Now the gl_texture_format struct has a new StoreImage function
+pointer. Each texture format must implement this function. The
+function is totally responsible for converting the user's texture
+image into the specific format. A few helper functions makes this
+relatively simple.
+
+Overall, the code is much simpler, cleaner and easier to work with
+now. Adding new texture formats is straight-forward and there's no
+longer any distinction between "hardware" and "software" formats.
+
+Finally, the code for compressed texture images has been reorganized
+as well.
+
+Removed files:
+ texutil.c
+ texutil.h
+ texutil_tmp.h
+
+New files:
+ texcompress_s3tc.c
+ texcompress_fxt1.c
+
+
+
+Driver / context changes
+------------------------
+
+The _mesa_create_context() and _mesa_initialize_context() function
+parameters have changed. They now take a pointer to a struct
+dd_function_table. Drivers can initialize this table by calling
+_mesa_init_driver_functions(). Drivers should then plug in the special
+functions they implement. In particular, the ctx->Driver.NewTextureObject
+pointer _must_ be set so that the default texture objects created in
+_mesa_create/initialize_context() are correctly built.
+
+The _mesa_init_driver_functions() function allows a lot of redundant code
+to be removed from the device drivers (such as initializing
+ctx->Driver.Accum to point to _swrast_Accum). Adding new functions to
+the dd_function_table can be done with less hassle since the pointer can
+be initialized in _mesa_init_driver_functions() rather than in _all_ the
+drivers.
+
+
+Device Drivers
+--------------
+
+Mesa advertises itself as supporting OpenGL 1.2, 1.3, 1.4 or 1.5
+depending on the device driver's capabilities. For example, if the
+driver enables all the ARB extensions which are part of OpenGL 1.5
+then glGetString(GL_VERSION) will return "1.5". Otherwise, it'll
+return "1.4" or the next lower version that implements all required
+functionality.
+
+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.5
+OSMesa (off-screen) implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+
+Other Changes
+-------------
+
+See the VERSIONS file for more details about bug fixes, etc. in Mesa 6.1.
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.1,v 3.5 2004/08/17 22:58:23 brianp Exp $
diff --git a/docs/RELNOTES-6.2 b/docs/RELNOTES-6.2
new file mode 100644
index 00000000000..4043a5655e3
--- /dev/null
+++ b/docs/RELNOTES-6.2
@@ -0,0 +1,52 @@
+
+ Mesa 6.2 release notes
+
+ October 2, 2004
+
+ PLEASE READ!!!!
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.1) designate new developmental releases.
+Even numbered versions (such as 6.2) designate stable releases.
+
+
+This release primarily just fixes bugs found in the Mesa 6.1 release.
+See the VERSIONS file for details.
+
+
+ToDo: PBO for polygon stipple, convolution filter, etc.
+
+
+
+Known Issues
+------------
+
+The GL_EXT_pixel_buffer_object extension isn't fully implemented for
+functions like glPolygonStipple, glConvolutionFilter, glColorTable,
+etc. The important functions like glRead/DrawPixels, glTex[Sub]Image,
+and glBitmap work with PBOs.
+
+
+
+Driver Status
+---------------------- ---------------------
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.2,v 3.4 2004/10/02 15:43:14 brianp Exp $
diff --git a/docs/RELNOTES-6.2.1 b/docs/RELNOTES-6.2.1
new file mode 100644
index 00000000000..d72560e5af2
--- /dev/null
+++ b/docs/RELNOTES-6.2.1
@@ -0,0 +1,50 @@
+
+ Mesa 6.2.1 release notes
+
+ December 9, 2004
+
+ PLEASE READ!!!!
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.1) designate new developmental releases.
+Even numbered versions (such as 6.2.x) designate stable releases.
+
+
+This release primarily just fixes bugs found in the Mesa 6.2 release.
+See the VERSIONS file for details.
+
+
+
+Known Issues
+------------
+
+The GL_EXT_pixel_buffer_object extension isn't fully implemented for
+functions like glPolygonStipple, glConvolutionFilter, glColorTable,
+etc. The important functions like glRead/DrawPixels, glTex[Sub]Image,
+and glBitmap work with PBOs. This has been fixed for Mesa 6.3.
+
+
+
+
+Driver Status
+---------------------- ---------------------
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.2.1,v 3.1 2004/12/09 23:21:36 brianp Exp $
diff --git a/docs/RELNOTES-6.3 b/docs/RELNOTES-6.3
new file mode 100644
index 00000000000..dde335eec11
--- /dev/null
+++ b/docs/RELNOTES-6.3
@@ -0,0 +1,115 @@
+
+ Mesa 6.3 release notes
+
+ July 20, 2005
+
+ PLEASE READ!!!!
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.3) designate new developmental releases.
+Even numbered versions (such as 6.2) designate stable releases.
+
+
+
+New Features
+------------
+
+GL_ARB_draw_buffers - allows a fragment program to write to a number of
+ separate color buffers, instead of just one.
+
+GL_OES_read_format - allows one to query the fastest glReadPixels format
+ and datatype.
+
+GL_ARB_pixel_buffer_object - buffer objects for pixel read/write functions.
+
+GL_EXT_framebuffer_object - allows render-to-texture and provides a
+ window-system indepedent Pbuffer facility.
+ The Mesa CVS tree contains a couple tests of this extension.
+
+DirectFB driver, contributed by Claudio Ciccani. See docs/README.directfb
+for details.
+
+
+
+Vertex/Fragment Program PRINT Instruction
+-----------------------------------------
+
+The GL_NV_vertex_program and GL_NV_fragment_program languages have been
+extended with a PRINT instruction.
+
+
+
+glDeleteTextures(), glDeletePrograms() and glDeleteBuffers() Changed
+--------------------------------------------------------------------
+
+To match the behaviour of other OpenGL implementations, glDeleteTextures,
+glDeletePrograms and glDeleteBuffers have been modified so that:
+
+ * The named texture/program/buffer ID is immediately freed for re-use.
+
+ * The actual texture object, program or buffers isn't really deleted until
+ it is no longer bound in any rendering context (the reference count
+ is zero).
+
+Previously, the texture/program/buffer ID wasn't freed until the object
+was really deleted.
+
+Note that textures, programs and buffers can be shared by several rendering
+contexts so they can't be deleted until they're unbound in _all_ contexts.
+
+
+
+GL_EXT_framebuffer_object changes
+---------------------------------
+
+Implementing this extension involved changing a lot of code (for the better).
+
+The gl_framebuffer object now a collection of gl_renderbuffer objects.
+Renderbuffers may store colors, stencil indices, or depth values. The
+gl_framebuffer and gl_renderbuffer types are object-oriented in design.
+
+All the old RGB, color index, stencil and depth-related span functions for
+reading/writing pixels from/to buffers has changed. Now, all pixels are
+read/written through a set of common renderbuffer functions (methods).
+
+Most device drivers have been updated for these changes, but some haven't.
+
+
+
+To Do (someday) items
+---------------------
+ Switch to freeglut
+ Increase MAX_DRAWBUFFERS
+ driver hooks for BeginQuery/EndQuery
+
+
+
+Miscellaneous
+-------------
+
+The main/get.c file is now generated with a Python script (get_gen.py).
+
+
+
+Driver Status
+---------------------- ---------------------
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.3,v 3.13 2005/07/21 15:57:29 brianp Exp $
diff --git a/docs/RELNOTES-6.3.1 b/docs/RELNOTES-6.3.1
new file mode 100644
index 00000000000..cc6e8be1b2c
--- /dev/null
+++ b/docs/RELNOTES-6.3.1
@@ -0,0 +1,49 @@
+
+ Mesa 6.3.1 release notes
+
+ July XX, 2005
+
+ PLEASE READ!!!!
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.3) designate new developmental releases.
+Even numbered versions (such as 6.2) designate stable releases.
+
+
+
+DRI drivers
+-----------
+
+This release includes the DRI drivers and GLX code for hardware rendering.
+
+
+
+Bug fixes
+---------
+
+Bugs fixed in 6.3.1 are listed in the VERSIONS file.
+
+
+
+Driver Status
+---------------------- ---------------------
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.3.1,v 3.1 2005/07/21 18:45:54 brianp Exp $
diff --git a/docs/RELNOTES-6.3.2 b/docs/RELNOTES-6.3.2
new file mode 100644
index 00000000000..f2d47bff19a
--- /dev/null
+++ b/docs/RELNOTES-6.3.2
@@ -0,0 +1,37 @@
+
+ Mesa 6.3.2 Release Notes
+
+ August 19, 2005
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.3) designate new developmental releases.
+Even numbered versions (such as 6.2) designate stable releases.
+
+
+6.3.2 is primarily a bug-fix release. See the VERSIONS file for details.
+
+
+
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.3.2,v 3.2 2005/08/19 16:57:50 brianp Exp $
diff --git a/docs/RELNOTES-6.4 b/docs/RELNOTES-6.4
new file mode 100644
index 00000000000..a12600c3c83
--- /dev/null
+++ b/docs/RELNOTES-6.4
@@ -0,0 +1,50 @@
+
+ Mesa 6.4 Release Notes
+
+ October 24, 2005
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.3) designate new developmental releases.
+Even numbered versions (such as 6.4) designate stable releases.
+
+
+6.4 is a bug-fix release. See the VERSIONS file for details.
+
+
+
+GLUT tarball
+------------
+
+Starting with 6.4, the GLUT library sources are distributed in a separate
+tarball. This was done at the request of Linux distro vendors who prefer
+to use freeglut.
+
+
+
+
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Windows/Win32 implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) requires updates
+SVGA requires updates
+DJGPP requires updates
+GGI requires updates
+BeOS requires updates
+Allegro requires updates
+D3D requires updates
+
+The drivers which require updates mostly need to be updated to work
+with the new gl_renderbuffer / gl_framebuffer infrastructure introduced
+in Mesa 6.3.
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.4,v 3.1 2005/10/24 23:33:27 brianp Exp $
diff --git a/docs/RELNOTES-6.4.1 b/docs/RELNOTES-6.4.1
new file mode 100644
index 00000000000..4a867e77825
--- /dev/null
+++ b/docs/RELNOTES-6.4.1
@@ -0,0 +1,47 @@
+
+ Mesa 6.4.1 Release Notes
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.3) designate new developmental releases.
+Even numbered versions (such as 6.4) designate stable releases.
+
+
+6.4.1 is a bug-fix release. See the VERSIONS file for details.
+
+
+
+GLUT tarball
+------------
+
+Starting with 6.4, the GLUT library sources are distributed in a separate
+tarball. This was done at the request of Linux distro vendors who prefer
+to use freeglut.
+
+
+
+
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Windows/Win32 implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) requires updates
+SVGA requires updates
+DJGPP requires updates
+GGI requires updates
+BeOS requires updates
+Allegro requires updates
+D3D requires updates
+
+The drivers which require updates mostly need to be updated to work
+with the new gl_renderbuffer / gl_framebuffer infrastructure introduced
+in Mesa 6.3.
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.4.1,v 3.1 2006/02/03 17:21:54 brianp Exp $
diff --git a/docs/RELNOTES-6.4.2 b/docs/RELNOTES-6.4.2
new file mode 100644
index 00000000000..f9312157b1a
--- /dev/null
+++ b/docs/RELNOTES-6.4.2
@@ -0,0 +1,47 @@
+
+ Mesa 6.4.2 Release Notes
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.3) designate new developmental releases.
+Even numbered versions (such as 6.4) designate stable releases.
+
+
+6.4.2 is a minor bug-fix release. See the VERSIONS file for details.
+
+
+
+GLUT tarball
+------------
+
+Starting with 6.4, the GLUT library sources are distributed in a separate
+tarball. This was done at the request of Linux distro vendors who prefer
+to use freeglut.
+
+
+
+
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa (Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Windows/Win32 implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) requires updates
+SVGA requires updates
+DJGPP requires updates
+GGI requires updates
+BeOS requires updates
+Allegro requires updates
+D3D requires updates
+
+The drivers which require updates mostly need to be updated to work
+with the new gl_renderbuffer / gl_framebuffer infrastructure introduced
+in Mesa 6.3.
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.4.2,v 3.1 2006/02/03 17:21:54 brianp Exp $
diff --git a/docs/RELNOTES-6.5 b/docs/RELNOTES-6.5
new file mode 100644
index 00000000000..f51b1bde386
--- /dev/null
+++ b/docs/RELNOTES-6.5
@@ -0,0 +1,97 @@
+
+ Mesa 6.5 Release Notes
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 6.5) designate new developmental releases.
+Even numbered versions (such as 6.4) designate stable releases.
+
+
+
+New Features
+------------
+
+OpenGL Shading language support
+ This includes the GL_ARB_shader_objects, GL_ARB_shading_language_100,
+ GL_ARB_vertex_shader and GL_ARB_fragment_shader extensions. Most of
+ the work was done by Michal Krol.
+ There's probably a fair number of bugs since this is a pretty large,
+ complicated body of code.
+
+ The OpenGL 2.0 interface to these features will be implemented in a
+ future version of Mesa,
+
+GL_EXT_timer_query
+ Used to measure the time of OpenGL operations at high precision.
+ Only supported in the software/Xlib driver at this time.
+
+GL_EXT_packed_depth_stencil
+ Defines a new GL_DEPTH_STENCIL_EXT pixel format.
+
+GL_EXT_framebuffer_blit
+ A simplified glCopyPixels-like feature for copying pixel rectangles.
+
+GL_ARB_half_float_pixel
+ Adds a new half-precision floating point format for image transfers,
+ such as for glDrawPixels, glReadPixels, glTexImage, etc.
+
+
+
+Removed Extensions
+------------------
+
+The following extensions have been removed:
+
+ GL_HP_occlusion_test - this is superceded by GL_ARB_occlusion_query.
+
+
+
+Known Issues
+------------
+
+Rendering to depth textures will not work. Rendering to GL_DEPTH_STENCIL
+textures should work.
+
+
+
+Driver Interface Changes
+------------------------
+
+Stencil: The Driver.StencilOp/Func/Mask() functions have been replaced by
+the two-sided versions: Driver.Stencil*Separate().
+
+Render-to-texture: The functions for rendering to textures have changed.
+
+
+
+To Do (someday) items
+---------------------
+ Switch to freeglut
+ Increase MAX_DRAWBUFFERS
+ Fix linux-glide target/driver.
+ Fix lambda calculation for frag progs.
+
+
+
+Driver Status
+---------------------- ----------------------
+DRI drivers varies with the driver
+XMesa/GLX (on Xlib) implements OpenGL 1.5
+OSMesa (off-screen) implements OpenGL 1.5
+Glide (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.5
+DJGPP implements OpenGL 1.5
+GGI implements OpenGL 1.3
+BeOS implements OpenGL 1.5
+Allegro needs updating
+D3D needs updating
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-6.5,v 3.4 2006/03/29 04:53:02 brianp Exp $
diff --git a/docs/VERSIONS b/docs/VERSIONS
new file mode 100644
index 00000000000..6e156801126
--- /dev/null
+++ b/docs/VERSIONS
@@ -0,0 +1,1472 @@
+
+
+Mesa Version History
+====================
+
+1.0 beta February 1995
+ Initial release
+
+1.1 beta March 4, 1995
+ Changes:
+ faster point and line drawing (2x faster)
+ more systems supported, better Makefiles
+ Renamed lib*.a files to avoid collisions
+ many small bug fixes
+ New:
+ pseudo-GLX functions added
+ new implementation of evaluators (eval2.c)
+ GLUT support
+
+1.1.1 beta March 7, 1995
+ Changes:
+ Reverted from eval2.c to eval.c due to FPE on Linux
+ more speed improvements
+ more Makefile changes
+
+1.1.2 beta March 14, 1995
+ New:
+ implementation of SGI's blending extensions
+ glXUseXFont implemented
+ added MESA_DEBUG environment variable support
+ Changes:
+ Using eval2.c again
+ more FPE-prevention checks (0-length normals are OK)
+ a few small bug fixes
+ much faster pixel logic ops!
+ faster transformation arithmetic
+
+1.1.3 beta March 31, 1995
+ New:
+ gluScaleImage() and gluBuild2DMipMaps() implemented
+ Mesa widgets for Xt/Motif
+ blendEXT demos
+ added environment variables for selecting visuals
+ Changes:
+ almost all GLUT demos work correctly now
+ faster X device driver functions
+ more bug fixes
+
+1.1.4 beta April 20, 1995
+ Bug fixes:
+ - missing #define SEEK_SET in src-tk/image.c
+ - compile glShadeModel into display lists
+ - fixed pow() domain error in src/light.c
+ - fixed "flickering bitmaps" in double buffer mode
+ - fixed tk.h and aux.h for C++
+ - state of LIGHT_MODEL_LOCAL_VIEWER was inverted
+ New features:
+ - MUCH, MUCH nicer dithering in 8-bit RGB mode
+ - updated widgets and widget demos
+ - Implemented GLXPixmap functions
+ - Added GLU 1.1 and GLX 1.1 functions
+ - Changed the X/Mesa interface API, more versatile
+ - Implemented gluPartialDisk()
+
+1.2 May 22, 1995
+ Bug fixes:
+ - IRIX 4.x makefile problem
+ - modified tk to share root colormap as needed
+ - gluLookAt normalization problem
+ - suppress Expose, NoExpose events in swapbuffers
+ - glBitmap() and glDrawPixels() clipping
+ New features:
+ - GL_BLEND, GL_MODULATE, GL_DECAL, and GL_REPLACE_EXT texture
+ modes implemented
+ - texture maps stored more efficiently
+ - texture maps can be compiled into display lists
+ - Bogdan Sikorski's GLU polygon tesselation code
+ - Linas Vepstas's sweep and extrusion library
+ - glXCreateContext()'s shareList parameter works as it's supposed to.
+ XMesaCreateContext() updated to accept a shareList parameter too.
+ - Mesa can be compiled with real OpenGL .h files
+ - MESA_BACK_BUFFER environment variable
+ - better GLX error checking
+
+1.2.1 June 22, 1995
+ Bug fixes:
+ - X/Mesa double buffer window resize crash
+ - widgets now pass PointerMotion events
+ - X/Mesa incorrect default clear color and drawing color
+ - more robust X MIT-SHM support in X/Mesa
+ - glTexImage( format=GL_LUMINANCE ) didn't work
+ - GL_LINE mode polygons with line width > 1.0 could cause a crash
+ - numerous feedback bugs
+ - glReadPixels() from depth buffer was wrong
+ - error prone depth and stencil buffer allocation
+ New features:
+ - Preliminary Microsoft Windows driver
+ - Implemented a number of missing functions: glEvalCoord[12][df]v(),
+ glGet...(), etc.
+ - Added a few missing symbols to gl.h and glu.h
+ - Faster rendering of smooth-shaded, RGBA, depth-buffered polygons.
+ - Faster rendering of lines when width=2.0
+ - Stencil-related functions now work in display lists
+ Changes:
+ - renamed aux.h as glaux.h (MS-DOS names can't start with aux)
+ - most filenames are in 8.3 format to accomodate MS-DOS
+ - use GLubytes to store arrays of colors instead of GLints
+
+1.2.2 August 2, 1995
+ New features:
+ - texture mapped points and lines
+ - NURBS! (but not 100% complete)
+ - viewports may safely extend beyond window boundaries
+ - MESA_PRIVATE_CMAP environment variable
+ - Grayscale X display support
+ - two new demos: demos/gears.c and demos/shadow.c
+ - MachTen for Macintosh configuration
+ Bug fixes:
+ - glGet*(GL_DEPTH_BITS) returned bytes, not bits
+ - point, line, and bitmap rasterization suffered from roundoff errors
+ - fixed a division by zero error in line clippping
+ - occasional wrong default background color really fixed!
+ - glDepthFunc(GL_ALWAYS) with glDepthMask(GL_FALSE) didn't work
+ - gluBuild2DMipmaps malloc problem fixed
+ - view volume clipping of smooth shaded lines resulted in bad colors
+ Changes:
+ - new visual selection method in glXChooseVisual()
+ - improved GLU quadric functions
+ - call XSync for glFinish and XFlush for glFlush
+ - glVertex() calls now use a function pointer to avoid conditionals
+ - removed contrib directory from Mesa tar file (available on ftp site)
+ - AIX shared library support
+ - Removed GLUenum type as it's not in OpenGL
+
+1.2.3 September 26, 1995
+ New features:
+ - Mesa header files now equivalent to SGI OpenGL headers
+ - Support for HP's Color Recovery dithering displays
+ - Faster vertex transformation
+ - Faster raster operations into X windows under certain conditions
+ - New configurations: HP w/ shared libs, Ultrix w/ GCC, Data General
+ - 4-bit visuals now supported
+ Bug fixes:
+ - glScissor bug fixed
+ - round-off errors in clipping lines against clip planes fixed
+ - byte swapping between hosts and display servers implemented
+ - glGetError() can be called without a current rendering context
+ - problem with accidentally culled polygons is fixed
+ - fixed some widget compilation problems
+
+1.2.4 November 17, 1995
+ New features:
+ - More speed improvements (lighting, fogging, polygon drawing)
+ - Window system and OS-independent off-screen rendering
+ - Preliminary Fortran bindings
+ - glPolygonOffsetEXT implemented
+ - glColorMask and glIndexMask now fully implemented
+ - glPixelZoom implemented
+ - display lists fully implemented
+ - gamma correction
+ - dithering in 8-bit TrueColor/DirectColor visuals
+ Changes:
+ - Improved device driver interface
+ - tk.h renamed to gltk.h to avoid conflicts with Tcl's Tk
+ - Dithering support moved from core into device driver
+ Bug fixes:
+ - glEnable/Disable( GL_LIGHTING ) didn't always take effect
+ - glReadPixels byte swapping was broken
+ - glMaterial with pname==GL_AMBIENT_AND_DIFFUSE was broken
+ - duplicate glColor4b() prototype in GL/gl.h removed
+ - stripes in wave -ci demo fixed
+ - GL_LINEAR_MIPMAP_NEAREST had wrong value
+ - bugs in HP Color Recovery support fixed
+ - fixed bug when blending lines, points, bitmaps outside of window
+
+1.2.5 November 30, 1995
+ New Features:
+ - updated MS Windows driver
+ - new implementation of StaticGray/GrayScale visual support
+ Bug fixes:
+ - pixelzooming with gamma correction or blending didn't work
+ - HP color recovery visual wasn't being picked by glXChooseVisual
+ - glClear didn't always observe glColorMask changes
+ - olympic and offset demos didn't compile on some Suns
+ - texcoord clamping wasn't correct
+ - a polygon optimization introduced an occasional sampling problem
+
+1.2.6 January 26, 1996
+ New Features:
+ - faster line and polygon rendering under certain conditions. See
+ Performance Tips 9 and 10 in README
+ - profiling
+ - lighting is a bit faster
+ - better perspective corrected texture mapping
+ - Amiga AmiWin (X11) support
+ - preliminary Linux SVGA driver
+ Changes:
+ - now using a 16-bit depth buffer, faster, smaller
+ - GL_NORMALIZE is disabled by default
+ Bug fixes:
+ - projective texture mapping
+ - fixed a memory leak in the context destroy function
+ - GL_POLYGON with less than 3 vertices caused a crash
+ - glGet*() returned wrong result for GL_INDEX_MODE
+ - reading pixels from an unmapped X window caused a BadMatch error
+
+1.2.7 March 5, 1996
+ New:
+ - faster lighting
+ - faster 16-bit TrueColor rendering on Linux
+ - faster 32-bit TrueColor rendering on Linux, HP, IBM
+ - non-depth-buffered XImage polygons are faster
+ - vertex array extension
+ - software alpha planes
+ - updated Macintosh driver
+ - new NeXT driver
+ - GLU quadric functions generate texture coordinates
+ - reflect.c demo - reflective, textured surface demo
+ Changes:
+ - gamma correction code moved into the X driver for better performance
+ Bug fixes:
+ - multiple glClipPlane()'s didn't work reliably
+ - glPolygonMode() didn't always work
+ - glCullFace( GL_FRONT_AND_BACK ) didn't work
+ - texture mapping with gamma correction was buggy
+ - floating point exceptions in texture coordinate interpolation
+ - XImage byte swapping didn't always work
+ - polygon edge flags weren't always used correctly
+
+1.2.8 May 22, 1996
+ New:
+ - overlay planes on X servers with the SERVER_OVERLAY_VISUALS property
+ - better monochrome output
+ - more IRIX 6.x configurations
+ - more robust RGB mode color allocation
+ - added MESA_XSYNC environment variable
+ - GLX_MESA_pixmap_colormap and GLX_EXT_visual_info extensions
+ - GL_MESA_window_pos extension
+ - faster glReadPixels/glDrawPixels for GL_DEPTH and GL_UNSIGNED_SHORT
+ and GL_UNSIGNED_INT
+ - driver for prototype Cirrus Mondello 3-D board
+ - updated AmigaDOS driver
+ - a few small speed optimizations in polygon rendering
+ Changes:
+ - internal device driver interface modified to simplify device
+ driver implementations and to support hardware Z buffers
+ - several changes to the X/Mesa interface (xmesa.h)
+ Bug fixes:
+ - fixed pow(0,0) domain error triggered on some systems
+ - glStencilClear() in a display list caused an infinite loop
+ - glRasterPos*() was sometimes off by +/-0.5 in X and Y
+ - color masking and blending were performed in wrong order
+ - auxSolidCylinder() sometimes drew a wire-frame cylinder
+ - fixed file writing bug in osdemo.c
+ - pixel mapping didn't always work
+ - the GL_GEQUAL stencil func didn't work
+ - the GL_INVERT stencil op didn't work
+ - the stencil write mask didn't work
+ - glPush/PopAttrib() didn't do enough error checking
+ - glIsList() didn't always work correctly
+
+2.0 October 10, 1996
+ New:
+ - Implements OpenGL 1.1 API functions
+ - all texture filtering modes supported (mipmapping)
+ - faster texture mapping, see Performance Tip 11 in README
+ - antialiased RGB points
+ - X support for line and polygon stippling
+ - glDrawBuffer( GL_FRONT_AND_BACK ) works
+ - util/ directory of useful stuff
+ - demos/texobj demo of texture objects
+ Changes:
+ - major internal changes for thread-safeness
+ - new device driver interface
+ - MESA_ALPHA env variable removed
+ - triangle rasterizer replaces polygon rasterizer
+ Bug fixes:
+ - glPopAttrib() bug
+ - glDrawBuffer(GL_NONE) works now
+
+2.1 December 14, 1996
+ New:
+ - VMS support
+ - MS-DOS driver
+ - OpenStep support
+ - updated, combined Windows 95/NT driver
+ - implemented glGetLighti() and glGetTexGen*()
+ - GLX does garbage collection of ancillary buffers
+ Bug fixes:
+ - removed unused _EXT constants from gl.h
+ - fixed polygon offset bugs
+ - Z coordinates of clipped lines were incorrect
+ - glEdgeFlag() in display lists didn't always work
+ - glLight*() in display lists didn't work
+ - fixed X line stipple bugs (Michael Pichler)
+ - glXUseXfonts XFreeFont/XFreeFontInfo bug fixed
+ - fixed a feedback bug
+ - glTexGen*() now transforms GL_EYE_PLANE by inverse modelview matrix
+ - polygons were sometimes culled instead of clipped
+ - triangle rasterizer suffered from float/int overflow exceptions
+ - fixed FP underflow exception in lighting (specular exponent)
+ - glEnable/glDisable of GL_EXT_vertex_array enums didn't work
+ - fixed free(NULL) in GLU tesselator code
+ - using 24-bit color on some X servers resulted in garbage rendering
+ - 32-bit per pixel mode for XFree86 now works
+ - glRotate(a,0,0,0) gave unpredictable results
+ - GL_LINE_STRIP with > 480 vertices had occasional clipping problems
+ - 8-bit TrueColor GLXPixmap rendering incorrectly required a colormap
+ - glMaterial() wasn't ignored when GL_COLOR_MATERIAL was enabled
+ - glEnable(GL_COLOR_MATERIAL) followed by glColor() didn't work right
+ - accumulation buffer was limited to positive values
+ - projective textures didn't work
+ - selection buffer overflows weren't handled correctly
+ Changes:
+ - restored the GL_EXT_polygon_offset extension
+ - slightly faster RGB dithering
+ - the SVGA driver works again
+ - Amiga driver now distributed separately
+ - NeXT driver updated for Mesa 2.x
+
+2.2 March 14, 1997
+ New:
+ - better color selection when dithering
+ - added GL_EXT_texture_object extension
+ - updated MS-DOS driver for DJGPP
+ - added openbsd make configuration
+ - faster dithered flat-shaded triangles
+ - various compilation problems with Motif widgets fixed
+ - gl.h, glx.h and glu.h name mangling option
+ - BeOS driver
+ - 3D texture mapping extension
+ - GL_MESA_resize_buffers extension
+ - morph3d, stex3d and spectex demos
+ - 3Dfx support
+ Bug fixes:
+ - glColorMaterial should finally work right in all respects
+ - linear interpolation of mipmap levels was incorrectly weighted
+ - readpix.c didn't compile on Macintosh
+ - GL_INVERT and related logic ops didn't work right
+ - glTexImage[12]D() didn't check its parameters consistantly
+ - fixed a memory leak in glTexImage[12]D()
+ - kludged around a SunOS 5.x/GCC compiler bug in the feedback code
+ - glReadPixels aborted instead of normally catching some errors
+ - a few 1.1 constants were missing or misnamed in gl.h
+ - glBegin(p); glBegin(q); didn't generate an error
+ - fixed a memory leak in GLX code
+ - clipping of concave polygons could cause a core dump
+ - 1-component alpha texture maps didn't work
+ - fixed a GLU polygon tesselator bug
+ - polygons with colinear vertices were sometimes culled
+ - feedback triangle colors were wrong when using smooth shading
+ - textures with borders didn't work correctly
+ - colors returned in feedback mode were wrong when using lighting
+ - spotlights didn't effect ambient lighting correctly
+ - gluPartialDisk() had a few bugs
+ Changes:
+ - device driver interface expanded to support texture mapping
+ - faster matrix inversion subroutine
+ - commented out #include "wmesa_extend.h" from src/wmesa.c
+ - fixed many compiler warnings in the demo programs
+
+2.3 June 30, 1997
+ New:
+ - Mesa distribution divided into two pieces: library code and demos
+ - faster vertex transformation, clip testing, lighting
+ - faster line drawing
+ - TrueColor visuals how have dithering (for depths < 24 bits)
+ - added MESA_NO_DITHER environment variable
+ - new device driver function: NearFar(), RenderVB(), RasterSetup()
+ - added LynxOS configuration
+ - added cygnus Win32 configuration
+ - added texcyl.c GLUT demo
+ - added XMesaDitherColor() to X/Mesa interface
+ - new NURBS code from Bogdan Sikorski
+ - added demos/shape.c (non-rectangular X window!)
+ Bug fixes:
+ - glEnable/DisableClientState() were missing from GL/gl.h
+ - GL_SPHERE_MAP texcoord generation didn't work correctly
+ - glXGetConfig() returned wrong number of depth, stencil, accum bits
+ - glDrawPixels feedback/selection didn't examine RasterPos valid bit
+ - black and white were reversed on some monochrome displays
+ - fixed potential image memory leak (wasn't setting reference counter)
+ - glDrawPixels sometimes didn't recognize some GL state changes
+ - gluProject/UnProject() didn't check for divide by zero
+ - stex3d demo called random() and srandom(), not portable
+ - fixed memory leaks in context.c and drawpix.c
+ - fixed NULL dereferencing problem in gl_update_texture_state()
+ - glReadPixels between glBegin/glEnd didn't generate an error.
+ - fixed memory leak in polygon tesselator (Randy Frank)
+ - fixed seg fault bug drawing flat-shaded, depth-tested lines
+ - clipped GL_TRIANGLE_STRIPs sometimes had wrong color when flat-shaded
+ - glBindTexture sometimes didn't work
+ - fixed a bug deep in glXReleaseBuffersMESA()
+ - fog was mistakenly applied to alpha
+ - glPopMatrix didn't set "dirty matrix" flag
+ - glPolygonStipple pattern was sometimes wrong
+ - glClear wasn't disabled during feedback and selection
+ - fixed memory leak in glTexSubImage[123]D
+ Changes:
+ - many library source files reorganized
+ - faster X color allocation, colors also freed when finished with them
+ - new texture sampling function pointer in texture objects
+ - incorporated 3Dfx VooDoo driver v0.16 into main source tree
+ - many 3Dfx driver updates
+ - cygnus Makefiles now included
+ - updated DOS driver
+ - made a few changes to dosmesa.c and wmesa.c (VB->Unclipped)
+ - internally, colors now stored in GLubytes, not GLfixed
+ - optimized changing of GL_SHININESS parameter
+
+2.4 September 18, 1997
+ New:
+ - updated 3Dfx Glide driver
+ - hacks for 3Dfx rendering into an X window or fullscreen
+ - added depth buffer access functions to X/Mesa and OS/Mesa interfaces
+ Bug fixes:
+ - pixel buffer could overflow with long, wide lines
+ - fixed FP underflow problems in lighting
+ - glTexSubImage1D() had an unitialized variable
+ - incomplete texture objects could cause a segfault
+ - glDrawPixels with GL_COMPILE_AND_EXECUTE caused infinite loop
+ - flat-shaded quads in a strip were miscolored if clipped
+ - mipmapped triangle lod computation now works correctly
+ - fixed a few under/overflow bugs in triangle rasterizer
+ - glArrayElement() assigned bad normal if normal array disabled
+ - changed argument to glXReleaseBuffersMESA()
+ - fixed small triangle underflow bugs in tritemp.h (hopefully)
+ - glBindTexture(target, 0) caused a crash
+ - glTexImage[123]D() with NULL image pointer caused crash
+ - glPixelStore parameters are now ignored during display list execution
+ - fixed a two-sided lighting w/ clipping bug (black vertices)
+ - textures with width!=height were sometimes mis-rendered
+ - "weird" projection matrices could cause div by 0, other fp errors
+ Changes:
+ - changed precompiled header symbol from PCH to PC_HEADER
+ - split api.c into api1.c and api2.c
+ - added hash.c source file (but not used yet)
+ - a few Sun and HP configuration file changes
+ - MESA_GLX_FX env var replaces MESA_FX_WINDOW and MESA_FX_FULLSCREEN
+ - fixed a few cygnus build problems (src/Makefile.cygnus, src/wmesa.c)
+
+2.5 November 20, 1997
+ New:
+ - updated 3Dfx driver (v20) for GLQuake
+ - added GL_EXT_paletted_texture extension
+ - added GL_EXT_shared_texture_palette extension
+ - added GL_EXT_point_parameters extension
+ - now including Mark Kilgard's GLUT library v3.6
+ - new GLUT-based demos in gdemos/
+ - added a few more Unix config targets
+ - added Intel X86 assembly language vertex transformation code
+ - 3Dfx/Glide driver for Mesa now recognizes SST_SCREENREFRESH env var
+ - Windows 95 S3 Virge driver
+ Bug fixes:
+ - glCopyTexImage?D would crash due to uninitialized variable
+ - glColor w/ glColorMaterial in a display list caused a bug
+ - fixed several glDrawPixels() and ReadPixels() bugs in 3Dfx driver
+ - glVertex4*() vertices weren't always projected correctly
+ - trying to use mipmapped textured points or lines caused crash
+ - glColor[34][fd]() values now clamped to [0,1] before int conversion
+ Changes:
+ - new device driver functions for texture mapping
+ - hash tables used for display list and texture object lookup
+ - fixed GLX visual handling code to avoid saving redundant visuals
+ - 3Dfx Glide libraries automatically linked to libMesaGL.so
+ - dropped the Cirrus Logic Mondello code since it's obsolete
+ - updated Cygnus Makefiles (Stephane Rehel)
+ - updated Windows MSVC++ Makefiles (Oleg Letsinsky)
+ - procedure for making library files has changed: scripts now take
+ a major and minor version arguments. Make-config changed a lot.
+ - new implementation of glTexSubImage2D()
+ - updated widgets-mesa directory to create libMesaGLwM.a (Motif widget)
+ - separate linux-glide and linux-386-glide configurations
+
+2.6 February 12, 1998
+ New:
+ - Windows WGL functions
+ - updated VMS, DOS, Windows, Cygnus, BeOS, Amiga compilation support
+ - v0.22 of 3Dfx Glide driver
+ - more X86 assembly language optimizations
+ - faster blending for some modes
+ - XMesaSetFXmode() to switch between 3Dfx window and full-screen mode
+ - added preliminary thread support
+ - added GLX_MESA_copy_sub_buffer extension
+ - some clipping optimizations
+ Bug fixes:
+ - fixed shading/material bug when drawing long primitive strips
+ - fixed clipping problem in long primitive strips
+ - fixed clipping bug when using 3Dfx driver
+ - fixed a problem when trying to use X fonts w/ 3Dfx driver
+ - fixed a texture filter bug in 3Dfx/Glide driver
+ - fixed bug in 3Dfx/Glide driver involving depth mask & clearing
+ - glLoadMatrix to set projection matrix confused the 3Dfx driver
+ - non-identity texture matrices didn't work with linux-386 configs
+ - glGenTextures() didn't reserve the returned texture IDs
+ - NULL proxy image sent to glTexImageXD() caused crash
+ - added texture state validation optimization (Henk Kok)
+ - fixed colormap reuse problem when using both RGB and CI windows
+ - 32bpp True/DirectColor X visuals weren't recognized
+ - fixed potential problem in evaluators memory allocation
+ - fixed assorted demo compilation bugs
+ Changes:
+ - replaced old Mesa/windows/ directory with Mesa/WIN32/ directory
+ - converted a few old glaux/gltk demos to GLUT
+ - renamed directories: demos -> xdemos, gdemos -> demos
+
+
+3.0 September 17, 1998
+ New:
+ - OpenGL 1.2 API
+ - GL_EXT_abgr pixel format extension
+ - GL_SGIS_texture_edge_clamp extension
+ - GL_SGIS_multitexture extension (to be replaced by GL_ARB_multitex)
+ - GL_EXT_multitexture extension (to be replaced by GL_ARB_multitex)
+ - GL_EXT_rescale_normal extension and renormal.c demo
+ - GLX_SGI_video_sync extension (a no-op)
+ - antialiased lines
+ - glGetTexImage() now implemented
+ - glDraw/Copy/ReadPixels() optimizations
+ - optimized textured triangle code (Marten Stromberg)
+ - more optimization of dithered TrueColor triangles in X driver
+ - Linux GGI driver
+ - updated MGL driver
+ Bug fixes:
+ - lots of assorted compilation fixes
+ - glInitNames didn't write initial hit record
+ - glBitmap didn't always check for invalid raster position
+ - switching between GLX and OSMesa contexts caused a crash
+ - fixed uninitialized variable in Mesa widget code
+ - fixed typo in texture code which caused book/texgen to crash
+ - fixed texture sampling bug when filter=GL_LINEAR and wrap=GL_CLAMP
+ - gluDisk() in POINT or LINE mode sometimes failed
+ - fixed texture + fog bug
+ - GL_COMPILE_AND_EXECUTE mode didn't work reliably
+ - glMultMatrix in projection matrix mode w/ 3Dfx driver could fail
+ - glDrawPixels(color index pixels) weren't converted to RGBA
+ - fixed possible getenv() buffer overflow security bug
+ - glBitmap in feedback mode was offset by xOrig, yOrig params
+ - device driver's DrawPixels hook was never used
+ - glDrawPixels with zoomY!=1 and top/bottom clipping didn't work
+ - glDrawPixels optimized for GL_LUMINANCE, GL_LUMINANCE_ALPHA, GLubyte
+ - fixed MakeCurrent bug in GLwRedrawObjects() in MesaWorkstation.c
+ - glCopyTexSubImage2D() didn't work with 3Dfx driver
+ - lines with width = 2 could cause crash
+ - glClear with scissor rect sometimes cleared whole buffer
+ - glTexSubImage2D( .. GL_COLOR_INDEX .. ) didn't work
+ - glTexImageXD( .. GL_ABGR_EXT .. ) didn't work
+ - computation of inverse modelview matrix sometimes failed
+ - fixed GL_CLAMP mode texture sampling bug
+ - textured line interpolation was somewhat broken
+ - textured triangle interpolation was also somewhat broken
+ - glGet(MODELVIEW/PROJECTION/TEXTURE_MATRIX_STACK_DEPTH) off by one
+ - evaluator state wasn't fully initialized
+ - texture coordinate clipping was buggy
+ - evaluator surfaces could be mis-colored
+ - glAccum(GL_RETURN, s) didn't obey glColorMask() settings
+ - zero area polygons shouldn't be culled if polygon mode is point/line
+ - clipped width and height of glReadPixels was sometimes off by one
+ - blending with alpha = 0 or 1.0 wasn't always exact
+ - reading of pixels from clipped region was buggy
+ - minor tweaking of X visual management in GLX emulator
+ - glPolygonStipple now obeys pixel unpacking parameters
+ - glGetPolygonStipple now obeys pixel packing parameters
+ - interleaved vertex array texture coordinates were broken
+ - query of proxy texture internal format was broken
+ - alpha channel wasn't reliably cleared
+ - fixed divide by zero error in gluScaleImage if dest size = 1 x 1
+ Conformance bug fixes:
+ - GL_SELECTION_BUFFER_POINTER and GL_SELECTION_BUFFER_SIZE were missing
+ - GL_TEXTURE_INTERNAL_FORMAT was missing
+ - glGet*(GL_POLYGON_STIPPLE) was broken
+ - glPush/PopAttrib() didn't save/restore all texture state
+ - glBitmap in feedback mode didn't work
+ - feedback of texture coords didn't always work
+ - glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLbyte was broke
+ - glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLubyte was broke
+ - glDrawPixels w/ format=GL_STENCIL_INDEX, type=GL_BITMAP was broke
+ Changes:
+ - upgraded GLUT to version 3.7
+ - only GL and GLU library code included in MesaLib.tar.gz
+ - GLUT and all demos now in MesaDemos.tar.gz
+ - glaux and gltk libraries removed
+ - IRIX -n32 and -64 libs go in lib32/ and lib64/ directories
+
+
+3.1 beta 1 November 19, 1998
+ New:
+ - GL_EXT_stencil_wrap extension
+ - GL_INGR_blend_func_separate extension
+ - GL_ARB_multitexture extension
+ - GL_NV_texgen_reflection extension
+ - newly optimized vertex transformation code
+ - updated GLUT 3.7 code
+ - better precision when using 32-bit Z buffer
+ - Allegro DJGPP driver
+ Bug fixes:
+ - glCopyPixels between front/back buffers didn't copy alpha correctly
+ - fixed out-of-bounds memory access in optimized 2-D texture code
+ - glPixelStorei didn't accept GL_PACK/UNPACK_IMAGE_HEIGHT parameter
+ - glGet*() didn't accept GL_MAX_3D_TEXTURE_SIZE parameter
+ - clipping of texture coordinates sometimes had bad R,Q values
+ - GL_CLAMP_TO_EDGE texture sampling was off by 0.5 texels
+ - glEdgeFlagPointer() now takes a GLvoid * instead of GLboolean *
+ - texture was sometimes applied twice with 3Dfx driver
+ - glPush/PopAttrib() fouled up texture object reference counts
+ - glDeleteLists(0, n) caused assertion failure
+ - bilinear texture sampling wasn't accurate enough
+ - glClear w/ glDepthMask(GL_FALSE) didn't work right on 3Dfx
+ - color components were reversed on big endian 32 bpp X visuals
+ Changes:
+ - removed GL_EXT_multitexture extension
+
+
+3.1 beta 2 May 24, 1999
+ New:
+ - multi-textured points and lines (mjk@nvidia.com)
+ - optimized 24bpp X rendering (bernd.paysan@gmx.de)
+ - added allegro support (bernie-t@geocities.com)
+ - cleaned-up Windows-related stuff (Ted Jump)
+ - minor stereo changes (KendallB@scitechsoft.com)
+ - new BeOS driver which implements BGLView class
+ - new Direct3D driver (see src/D3D)
+ - more efficient filled gluCylinder() function
+ - utilities: util/showbuffer.[ch] and util/glstate.[ch]
+ - fixed some IRIX compiler warnings
+ - added support for building Mesa in XFree86 with
+ SGI's GLX (kevin@precisioninsight.com)
+ Bug fixes:
+ - a variety of Windows/Mesa bug fixes (mjk@nvidia.com)
+ - packed pixel images weren't unpacked correctly
+ - patches some win32 files in GLUT (mjk@nvidia.com)
+ - glTexImage[123]D() didn't accept internalFormat == GL_COLOR_INDEX
+ - fixed lighting bug in Keith's new shading code
+ - fixed texture segfault seen in Lament screensaver
+ - fixed miscellaneous low-memory bugs
+ - glClear(GL_COLOR_BUFFER_BIT) with RGBA or CI masking was broken
+ - GL_LINEAR sampling of 3D textures was broken
+ - fixed SVR4 'cc' compiler macro problem (dawes@xfree86.org)
+ - added GL_TEXTURE_PRIORITY fix (keithh@netcomuk.co.uk)
+ - fixed wide point and wide line conformance bugs (brianp)
+ Changes:
+ - some device driver changes (see src/dd.h)
+ - new copyright on core Mesa code
+
+
+3.1 beta 3 September 17, 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 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 December 17, 2003
+ New:
+ - reorganized directory tree
+ - GL_ARB_vertex/fragment_program extensions (Michal Krol & Karl Rasche)
+ - 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
+ - new spriteblast.c demo of GL_ARB_point_sprite
+ - faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1)
+ - faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1)
+ 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
+ - fixed some texgen bugs reported by Daniel Borca
+ - fixed wglMakeCurrent(NULL, NULL) bug (#835861)
+ - fixed glTexSubImage3D z-offset bug (Cedric Gautier)
+ - fixed RGBA blend enable bug (Ville Syrjala)
+ - glAccum is supposed to be a no-op in selection/feedback mode
+ - fixed texgen bug #597589 (John Popplewell)
+ 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
+ - disable SPARC asm code on Linux (bug 852204)
+
+
+6.0 January 16, 2004
+ New:
+ - full OpenGL 1.5 support
+ - updated GL/glext.h file to version 21
+ Changes:
+ - changed max framebuffer size to 4Kx4K (MAX_WIDTH/HEIGHT in config.h)
+ Bug fixes:
+ - fixed bug in UNCLAMPED_FLOAT_TO_UBYTE macro; solves a color
+ clamping issue
+ - updated suno5-gcc configs
+ - glColor3 functions sometimes resulted in undefined alpha values
+ - fixed FP divide by zero error seen on VMS with xlockmore, others
+ - fixed vertex/fragment program debug problem (bug 873011)
+ - building on AIX with gcc works now
+ - glDeleteProgramsARB failed for ARB fragment programs (bug 876160)
+ - glDrawRangeElements tried to modify potentially read-only storage
+ - updated files for building on Windows
+
+
+6.0.1 April 2, 2004
+ New:
+ - upgraded glext.h to version 22
+ - new build targets (Dan Schikore)
+ - new linux-x86-opteron build target (Heath Feather)
+ Bug fixes:
+ - glBindProgramARB didn't update all necessary state
+ - fixed build problems on OpenBSD
+ - omit CVS directories from tarballs
+ - glGetTexImage(GL_COLOR_INDEX) was broken
+ - fixed an infinite loop in t&l module
+ - silenced some valgrind warnings about using unitialized memory
+ - fixed some compilation/link glitches on IRIX (Mike Stephens)
+ - glBindProgram wasn't getting compiled into display lists
+ - GLX_FBCONFIG_ID wasn't recognized in glXChooseFBConfig() (bug 888079)
+ - two-sided lighting and vertex program didn't work (bug 887330)
+ - stores to program parameter registers in vertex state programs
+ didn't work.
+ - fixed glOrtho bug found with gcc 3.2.2 (RH9)
+ - glXCreateWindow() wasn't fully implemented (bug 890894)
+ - generic vertex attribute arrays didn't work in display lists
+ - vertex buffer objects' default usage and access fields were wrong
+ - glDrawArrays with start!=0 was broken
+ - fragment program PK2H, UP2H, UP4B and UP4UB instructions were broken
+ - linux-osmesa16-static config didn't work
+ - fixed a few color index rendering problems (bug 910687)
+ - glInterleavedArrays didn't respect GL_CLIENT_ACTIVE_TEXTURE
+ - OSMesa RGB and BGR modes were broken
+ - glProgramStringARB mistakenly required a null-terminated string
+ - fragment program XPD instruction was incorrect
+ - glGetMaterial() didn't work reliably
+ - ARB_fragment_program KIL instruction was incorrect
+
+
+6.1 August 18, 2004
+ New:
+ - Revamped Makefile system
+ - glXUseRotatedXFont() utility (see xdemos/xuserotfont.c)
+ - internal driver interface changes related to texture object
+ allocation, vertex/fragment programs, BlendEquationSeparate, etc.
+ - option to walk triangle edges with double-precision floats
+ (Justin Novosad of Discreet) (see config.h file)
+ - support for AUX buffers in software GLX driver
+ - updated glext.h to version 24 and glxext.h to version 6
+ - new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars
+ - updated BeOS support (Philippe Houdoin)
+ Changes:
+ - fragment fog interpolation is perspective corrected now
+ - new glTexImage code, much cleaner, may be a bit faster
+ Bug fixes:
+ - glArrayElement in display lists didn't handle generic vertex attribs
+ - glFogCoord didn't always work properly
+ - ARB_fragment_program fog options didn't work
+ - frag prog TEX instruction no longer incorrectly divides s,t,r by q
+ - ARB frag prog TEX and TEXP instructions now use LOD=0
+ - glTexEnviv in display lists didn't work
+ - glRasterPos didn't do texgen or apply texture matrix
+ - GL_DOUBLE-valued vertex arrays were broken in some cases
+ - fixed texture rectangle edge/border sampling bugs
+ - sampling an incomplete texture in a fragment program would segfault
+ - glTexImage was missing a few error checks
+ - fixed some minor glGetTexParameter glitches
+ - GL_INTENSITY was mistakenly accepted as a <format> to glTexImage
+ - fragment program writes to RC/HC register were broken
+ - fixed a few glitches in GL_HP_occlusion_test extension
+ - glBeginQueryARB and glEndQueryARB didn't work inside display lists
+ - vertex program state references were broken
+ - fixed triangle color interpolation bug on AIX (Shane Blackett)
+ - fixed a number of minor memory leaks (bug #1002030)
+
+
+6.2 October 2, 2004
+ New:
+ - enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle)
+ - updated Doxygen support (Jose Fonseca)
+ Changes:
+ - some GGI driver updates (Christoph Egger, bug 1025977)
+ Bug fixes:
+ - Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features
+ - fixed a few compilation issues on IRIX
+ - fixed a matrix classification bug (reported by Wes Bethel)
+ - we weren't reseting the vertex/fragment program error state
+ before parsing (Dave Reveman)
+ - adjust texcoords for sampling texture rectangles (Dave Reveman)
+ - glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented
+ - repeated calls to glDeleteTexture(t) could lead to a crash
+ - fixed potential ref count bugs in VBOs and vertex/fragment programs
+ - spriteblast demo didn't handle window size changes correctly
+ - glTexSubImage didn't handle pixels=NULL correctly for PBOs
+ - fixed color index mode glDrawPixels bug (Karl Schultz)
+
+
+6.2.1 December 9, 2004
+ Bug fixes:
+ - don't apply regular fog or color sum when using a fragment program
+ - glProgramEnvParameter4fARB always generated an error on
+ GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645)
+ - glVertexAttrib3svNV and glVertexAttrib3svARB were broken
+ - fixed width/height mix-up in glSeparableFilter2D()
+ - fixed regression in glCopyPixels + convolution
+ - glReadPixels from a clipped front color buffer didn't always work
+ - glTexImage didn't accept GL_RED/GREEN/BLUE as the format
+ - Attempting queries/accesses of VBO 0 weren't detected as errors
+ - paletted textures failed if the palette had fewer than 256 entries
+ Changes:
+ - fixed a bunch of compiler warnings found with gcc 3.4
+ - bug reports should to go bugzilla.freedesktop.org
+
+
+6.3 July 20, 2005
+ New:
+ - GL_EXT_framebuffer_object extension
+ - GL_ARB_draw_buffers extension
+ - GL_ARB_pixel_buffer_object extension
+ - GL_OES_read_format extension (Ian Romanick)
+ - DirectFB driver (Claudio Ciccani)
+ - x86_64 vertex transformation code (Mikko T.)
+ - Updated GL/glext.h to version 29
+ Changes:
+ - added -stereo option for glxgears demo (Jacek Rosik)
+ - updated the PBuffer demo code in xdemos/ directory
+ - glDeleteTextures/Programs/Buffers() now makes the object ID
+ available for immediate re-use
+ - assorted 64-bit clean-ups fixes (x86_64 and Win64)
+ - lots of internal changes for GL_EXT_framebuffer_object
+ Bug fixes:
+ - some functions didn't support PBO functionality
+ - glGetTexImage didn't convert color index images to RGBA as required
+ - fragment program texcoords were sometimes wrong for points and lines
+ - fixed problem with negative dot product in arbfplight, fplight demos
+ - fixed bug in perspective correction of antialiased, textured lines
+ - querying GL_POST_CONVOLUTION_ALPHA_BIAS_EXT returned wrong value
+ - fixed a couple per-pixel fog bugs (Soju Matsumoto)
+ - glGetBooleanv(GL_FRAGMENT_PROGRAM_BINDING_NV) was broken
+ - fixed float parsing bug in ARB frag/vert programs (bug 2520)
+ - XMesaGetDepthBuffer() returned incorrect value for bytesPerValue
+ - GL_COLOR_MATERIAL with glColor3 didn't properly set diffuse alpha
+ - glXChooseFBConfig() crashed if attribList pointer was NULL
+ - program state.light[n].spot.direction.w was wrong value (bug 3083)
+ - fragment program fog option required glEnable(GL_FOG) - wrong.
+ - glColorTable() could produce a Mesa implementation error (bug 3135)
+ - RasterPos could get corrupted by color index rendering path
+ - Removed bad XTranslateCoordinates call when rendering to Pixmaps
+ - glPopAttrib() didn't properly restore GL_TEXTURE_GEN enable state
+ - fixed a few Darwin compilation problems
+
+
+6.3.1
+ This was an intermediate release for X.org which wasn't otherwise released.
+
+
+6.3.2 August 19, 2005
+ New:
+ - The distribution now includes the DRI drivers and GLX code
+ Changes:
+ - Made the DRI "new" driver interface standard, remove old code
+ Bug fixes:
+ - GL_ARB_vertex/fragment_shader were mistakenly listed in the
+ extensions string
+ - negative relative addressing in vertex programs was broken
+ - update/fix SPARC assembly code for vertex transformation
+ - fixed memory leak when freeing GLX drawables/renderbuffers
+ - fixed display list memory leak
+ - the GL_PIXEL_MAP_I_TO_I table is now floating point, not integer
+ - wglGetProcAddress() didn't handle wgl-functions
+ - fixed glxext.h cross-compile issue (Colin Harrison)
+ - assorted DRI driver fixes
+
+
+6.4 October 24, 2005
+ New:
+ - Added a fast XOR line drawing function in Xlib driver
+ - Added support for GL_ARB_texture_mirrored_repeat to savage
+ driver (supported only on Savage4 hardware).
+ Changes:
+ - Mesa now packaged in three parts: Library, Demos and GLUT
+ Bug fixes:
+ - GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig
+ - Some files were present multiple times in the 6.3.2 tarballs
+ - r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207)
+ - glxgears_fbconfig demo didn't work (bug 4237)
+ - fixed bug when bilinear sampling 2d textures with borders
+ - glXCreatePbuffer() could segfault instead of returning 0 (bug 4235)
+ - fixed undefined frexp and rand in X.org libGLcore.a (bug 4242)
+ - fixed a few problems with proxy color tables (bug 4270)
+ - fixed precision problem in Z clearing (bug 4395)
+ - glBitmap, glDraw/CopyPixels mistakenly generated selection hits
+ - fixed potential segfault caused by reading pixels outside
+ of renderbuffer bounds
+ - glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB
+ - fixed memory corruption bug involving software alpha buffers
+ - glReadPixels clipped by window bounds was sometimes broken
+ - glDraw/CopyPixels of stencil data ignored the stencil write mask
+ - glReadPixels from a texture bound to a framebuffer object didn't work
+ - glIsRender/FramebufferEXT weren't totally correct
+ - fixed a number of point size attenuation/fade bugs
+ - fixed glFogCoord bug 4729
+ - GLX encoding for transpose matrix functions was broken
+ - fixed broken fragment program KIL and SWZ instructions
+ - fragment programs that wrote result.depth.z didn't work
+
+
+6.4.1 November 30, 2005
+ Bug fixes:
+ - redefining a vertex program string didn't take effect in TNL module
+ - fixed occasional segfault upon vertex/fragment parsing error
+ - vertex program LIT instruction didn't handle 0^0=1 correctly
+ - fragment program fog option didn't work with glDrawPixels, glBitmap
+ - USE_MGL_NAMESPACE didn't work for x86-64
+ - OSMesa demos were missing from previous release tarballs
+ - fixed problem with float->ushort conversion in glClear (bug 4992)
+ - popping of GL_EYE_PLANE texgen state was broken (bug 4996)
+ - popping of GL_SPOT_DIRECTION light state was broken (bug 5005)
+ - fixed occasional triangle color interpolation problem on VMS
+ - work around invalid free() call (bug 5131)
+ - fixed BSD X server compilation problem by including stdint.h
+
+
+6.4.2 February 2, 2006
+ New:
+ - added OSMesaColorClamp() function/feature
+ - added wglGetExtensionStringARB() function
+ Bug fixes:
+ - fixed some problems when building on Windows
+ - GLw header files weren't installed by installmesa script (bug 5396)
+ - GL/glfbdev.h file was missing from tarballs
+ - fixed TNL initialization bug which could lead to crash (bug 5791)
+
+
+6.5 March 31, 2006
+ New:
+ - OpenGL Shading Language support through GL_ARB_shader_objects,
+ GL_ARB_shading_language_100, GL_ARB_vertex_shader and
+ GL_ARB_fragment_shader (done by Michal Krol)
+ - GL_EXT_packed_depth_stencil extension
+ - GL_EXT_timer_query extension
+ - GL_EXT_framebuffer_blit extension
+ - GL_ARB_half_float_pixel
+ - reflect demo improved to support multiple windows
+ - singlebuffer demo (shows no/little-flicker single-buffered rendering)
+ - r200: enable GL_ARB_texture_env_crossbar, separate the texture
+ sampling unit bits from the texture env combine enable bits
+ - r200: add support for GL_ATI_fragment_shader
+ - added fast XOR-mode line drawing optimization
+ - radeon: add support for all 3 tmus, GL_ARB_texture_cube_map
+ and GL_EXT_fog_coord
+ - MESA_GLX_ALPHA_BITS env var for xlib driver
+ - many DRI driver updates (including screen rotation support
+ for the Intel DRI driver)
+ Changes:
+ - removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead)
+ - removed GL_SGIX/SGIS_pixel_texture extensions
+ Bug fixes:
+ - fixed glxcontextmodes.c datatype problem (bug 5835)
+ - fixed aix-gcc build/install bugs (bug 5874)
+ - fixed some bugs in texture env program generation
+ - glXCopyContext() didn't handle texture object bindings properly
+ - glXCopyContext() didn't copy all lighting state
+ - fixed FreeBSD config (Pedro Giffuni)
+ - fixed some minor framebuffer object bugs
+ - replaced dprintf() with _glu_printf() in GLU (bug 6244)
+ - fixed a number of thread safety bugs/regressions
+ - fixed a number of GLU tesselator bugs (John Shell, bug 6339)
+ - paletted texturing was broken w/ floating point palettes (K. Schultz)
+ - lots of assorted framebuffer object bug fixes
diff --git a/docs/banner.html b/docs/banner.html
new file mode 100644
index 00000000000..9cb27bb6d1c
--- /dev/null
+++ b/docs/banner.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Banner</title>
+</head>
+<body bgcolor="#000000" text="#ffffff">
+<center>
+<table style="width: 95%; text-align: left;" border="0" cellpadding="2"
+ cellspacing="2">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">
+ <p><img src="gears.png"> </p>
+ </td>
+ <td style="text-align: center;"><font face="sans-serif" size="5">The
+Mesa 3D Graphics Library</font></td>
+ <td style="vertical-align: top; text-align: right;">
+ <p><img src="gears.png"> </p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<p><font face="sans-serif" size="5"><br>
+</font></p>
+</center>
+</body>
+</html>
diff --git a/docs/bugs.html b/docs/bugs.html
new file mode 100644
index 00000000000..d255f4292c9
--- /dev/null
+++ b/docs/bugs.html
@@ -0,0 +1,49 @@
+<HTML>
+
+<TITLE>Mesa Bug Reporting</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Bug Database</H1>
+
+<p>
+The Mesa bug database is now hosted on
+<a href="http://freedesktop.org" target="_parent">freedesktop.org</a>
+instead of SourceForge.
+</p>
+
+<p>
+To file a Mesa bug, go to
+<a href="https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa"
+target="_parent">
+Bugzilla on freedesktop.org</a>
+</p>
+
+<p>
+Please follow these bug reporting 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 mailing
+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>
diff --git a/docs/conform.html b/docs/conform.html
new file mode 100644
index 00000000000..3611f8c6fb7
--- /dev/null
+++ b/docs/conform.html
@@ -0,0 +1,695 @@
+<HTML>
+
+<TITLE>Conformance</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
diff --git a/docs/contents.html b/docs/contents.html
new file mode 100644
index 00000000000..1f92980d8cc
--- /dev/null
+++ b/docs/contents.html
@@ -0,0 +1,101 @@
+<html>
+
+<title>Contents</title>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<!--Override a few values from the style sheet: -->
+<style>
+<!--
+body {
+ background-color: #cccccc;
+ color: black;
+}
+a:link {
+ color: #000;
+}
+a:visited {
+ color: #000;
+}
+-->
+</style>
+
+
+<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="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>
+<li><a href="precompiled.html" target="MainFrame">Precompiled Libraries</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_access.html" target="MainFrame">CVS Access</a>
+<li><a href="cvs_branches.html" target="MainFrame">CVS Branch Info</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="glfbdev-driver.html" target="MainFrame">glFBDev Driver</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.freedesktop.org" target="_parent">DRI website</a>
+<li><a href="http://www.freedesktop.org" target="_parent">freedesktop.org</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>
+
+<b>Hosted by:</b>
+<br>
+<blockquote>
+<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>
+</blockquote>
+
+</body>
+</html>
diff --git a/docs/custom.html b/docs/custom.html
new file mode 100644
index 00000000000..e9beba6fa98
--- /dev/null
+++ b/docs/custom.html
@@ -0,0 +1,27 @@
+<HTML>
+
+<TITLE>Custom Development</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
diff --git a/docs/cvs_access.html b/docs/cvs_access.html
new file mode 100644
index 00000000000..797bcb693ca
--- /dev/null
+++ b/docs/cvs_access.html
@@ -0,0 +1,106 @@
+<HTML>
+
+<TITLE>CVS Access</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<h1>CVS Access</h1>
+
+<p>
+Mesa's CVS repository (code management system) is hosted on
+<a href="http://www.freedesktop.org" target="_parent">freedesktop.org</a>.
+</p>
+
+<p>
+You may access the repository either as an
+<a href="#anonymous">anonymous user</a> (read-only) or as a
+<a href="#developer">developer</a>
+(read/write).
+</p>
+
+<p>
+You may also
+<a href="http://freedesktop.org/cgi-bin/viewcvs.cgi/mesa/Mesa/"
+target="_parent">browse the CVS repository</a>.
+</p>
+
+
+<a name="anonymous">
+<H2>Anonymous CVS Access</H2>
+
+<p>
+Anonymous, public, read-only access to the CVS repository is available.
+Here are the basic instructions for Unix systems:
+</p>
+
+<ol>
+<li>Install CVS client software on your computer if needed.
+ Version 1.9.28 is known to work.
+<li>Login as an anonymous user:
+ <pre>
+ cvs -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/mesa login
+ </pre>
+ Just press Enter/Return when prompted for a password.
+ <br>
+ <br>
+<li>Check out the code:
+ <pre>
+ cvs -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/mesa co Mesa
+ </pre>
+</ol>
+
+
+<p>To update your Mesa CVS source to the latest CVS source:</p>
+
+<ol>
+<li><code>cd Mesa</code>
+<li><code>cvs -z3 -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/mesa update</code>
+</ol>
+
+
+<a name="developer">
+<H2>Developer CVS Access</H2>
+
+<p>
+Mesa developers working with the Mesa CVS repository need to first
+have an account on <a href="http://www.freedesktop.org" target="_parent">
+freedesktop.org</a>.
+To get an account, please ask Brian or the other Mesa developers for
+permission.
+Then, if there are no objections, follow this
+<a href="http://www.freedesktop.org/wiki/AccountRequests" target="_parent">
+procedure</a>.
+</p>
+
+<p>
+Once your account is established, you can check out the Mesa CVS tree
+with:
+<pre>
+ setenv CVS_RSH ssh (if using a csh-like shell)
+</pre>
+<em>OR</em>
+<pre>
+ export CVS_RSH=rsh (if using a bash-like shell)
+</pre>
+followed by:
+<pre>
+ cvs -d:ext:yourusername@cvs.freedesktop.org:/cvs/mesa co Mesa
+</pre>
+
+<p>
+Of course, replace <em>yourusername</em> with your actual login name.
+</p>
+
+<p>
+Subsequent updates should only require:
+</p>
+<pre>
+ cvs update
+</pre>
+
+
+
+</body>
+</html>
diff --git a/docs/cvs_branches.html b/docs/cvs_branches.html
new file mode 100644
index 00000000000..98df3d0f4f7
--- /dev/null
+++ b/docs/cvs_branches.html
@@ -0,0 +1,80 @@
+<HTML>
+
+<TITLE>CVS Branches</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>CVS Branch Information</H1>
+
+<p>
+At any given time, there may be several active branches in Mesa's
+CVS repository.
+
+Generally, the CVS trunk contains the latest development (unstable)
+code while a CVS branch has the latest stable code.
+</p>
+
+<p>
+Currently (Oct 2004), the trunk is the Mesa 6.3 development code
+while the mesa_6_2_branch branch has the stable Mesa 6.2.x code.
+</p>
+
+<p>
+Mesa releases use an even/odd numbering scheme to represent stable/development
+releases.
+
+For example, Mesa 6.2 (0 is considered even) is a stable release while
+Mesa 6.3 is a development release.
+</p>
+
+<p>
+To checkout a specific CVS branch pass <code>-r</code> and
+the branch tag after your CVS command.
+
+For example <code>cvs checkout -r mesa_6_2_branch Mesa</code> will
+checkout the 6.2 branch and <code>cvs update -r
+mesa_6_2_branch</code> will convert your current CVS tree to the 6.2
+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 branches 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>
+
+<p>
+Most will be obsolete branches. Generally, the newer branches are at
+the top. Ask on the mesa3d-dev mailing list to learn which branches
+are active.
+</p>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/docs/debugging.html b/docs/debugging.html
new file mode 100644
index 00000000000..2df62f56ea3
--- /dev/null
+++ b/docs/debugging.html
@@ -0,0 +1,38 @@
+<HTML>
+
+<TITLE>Debugging Tips</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
diff --git a/docs/demos.html b/docs/demos.html
new file mode 100644
index 00000000000..b4a2cc5e366
--- /dev/null
+++ b/docs/demos.html
@@ -0,0 +1,18 @@
+<HTML>
+
+<TITLE>Demos</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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> \ No newline at end of file
diff --git a/docs/devinfo.html b/docs/devinfo.html
new file mode 100644
index 00000000000..4d4730be757
--- /dev/null
+++ b/docs/devinfo.html
@@ -0,0 +1,206 @@
+<HTML>
+
+<TITLE>Development Notes</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Development Notes</H1>
+
+
+<H2>Adding Extentions</H2>
+
+<p>
+To add a new GL extension to Mesa you have to do at least the following.
+
+<ul>
+<li>
+ If glext.h doesn't define the extension, edit include/GL/gl.h and add
+ code like this:
+ <pre>
+ #ifndef GL_EXT_the_extension_name
+ #define GL_EXT_the_extension_name 1
+ /* declare the new enum tokens */
+ /* prototype the new functions */
+ /* TYPEDEFS for the new functions */
+ #endif
+ </pre>
+</li>
+<li>
+ In the src/mesa/glapi/ directory, add the new extension functions and
+ enums to the gl_API.xml file.
+ Then, a bunch of source files must be regenerated by executing the
+ corresponding Python scripts.
+</li>
+<li>
+ Find an existing extension that's similar to the new one and search
+ the sources for code related to that extension.
+ Implement new code as needed.
+ In general, new state variables will be added to mtypes.h. If the
+ extension is rather large, try to implement it in a new source file.
+</li>
+<li>
+ If the new extension adds new GL state, the functions in get.c, enable.c
+ and attrib.c will most likely require new code.
+</li>
+</ul>
+
+
+
+<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 --no-tabs 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 variables are 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>Making a New Mesa Release</H2>
+
+<p>
+These are the instructions for making a new Mesa release.
+</p>
+
+<H3>Get latest source files</H3>
+<p>
+Use "cvs update -dAP " to get the latest Mesa files from CVS.
+</p>
+
+
+<H3>Verify and update version info</H3>
+<p>
+Create/edit the docs/RELNOTES-X.Y file to document what's new in the release.
+Add the new RELNOTES-X.Y file to <a href="relnotes.html">relnotes.html</a>.
+Update the docs/VERSIONS file too.
+</p>
+
+<p>
+Edit configs/default and change the MESA_MAJOR, MESA_MINOR and MESA_TINY
+version numbers.
+</p>
+
+<p>
+Make sure the values in src/mesa/main/version.h is correct.
+</p>
+
+<p>
+Edit the top-level Makefile and verify that DIRECTORY, LIB_NAME and
+DEMO_NAME are correct.
+</p>
+
+<p>
+Update the docs/news.html file and docs/download.html files.
+</p>
+
+<p>
+Check in all updates to CVS.
+</p>
+
+<p>
+Tag the CVS files with the release name (in the form <b>mesa_X_Y</b>).
+</p>
+
+
+<H3>Make the tarballs</H3>
+<p>
+Make a symbolic link from $(DIRECTORY) to 'Mesa'. For example,
+ln -s Mesa Mesa-6.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 tarballs
+</pre>
+
+<p>
+After the tarballs are created, the md5 checksums for the files will
+be computed.
+Add them to the docs/news.html file.
+</p>
+
+<p>
+Copy the distribution files to a temporary directory, unpack them,
+compile everything, and run some demos to be sure everything works.
+</p>
+
+<H3>Update the website and announce the release</H3>
+<p>
+Follow the directions on SourceForge for creating a new "release" and
+uploading the tarballs.
+</p>
+
+<p>
+Update the web site by copying the docs/ directory's files to
+/home/users/b/br/brianp/mesa-www/htdocs/
+</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>
+
+
+
+</body>
+</html>
diff --git a/docs/download.html b/docs/download.html
new file mode 100644
index 00000000000..19d014f375c
--- /dev/null
+++ b/docs/download.html
@@ -0,0 +1,134 @@
+<HTML>
+
+<TITLE>Getting Mesa</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Downloading</H1>
+
+<p>
+Last development release: <b>6.5</b>
+</p>
+
+<p>
+Last stable release: <b>6.4.2</b>
+</p>
+
+<p>
+Primary download site:
+<a href="http://sourceforge.net/project/showfiles.php?group_id=3"
+target="_parent">SourceForge</a>
+</p>
+
+
+<p>
+Mesa is distributed in several parts:
+</p>
+<ul>
+<li><b>MesaLib-x.y.z</b> - the main Mesa library source code, drivers
+ and documentation.
+</li>
+<li><b>MesaDemos-x.y.z</b> - OpenGL demonstration and test programs.
+ Most of the programs require GLUT (either the
+ <a href="http://www.opengl.org/resources/libraries/glut.html"
+ target="_parent">original GLUT by Mark Kilgard</a> or
+ <a href="http://freeglut.sourceforge.net" target="_parent">freeglut</a> or
+ <a href="http://freeglut.sourceforge.net" target="_parent">OpenGLUT</a>).
+</li>
+<li><b>MesaGLUT-x.y.z</b> - Mark Kilgard's GLUT, easily compiled and used
+ with Mesa. Plus, other implementation of GLUT for DOS, OS/2, BeOS, etc.
+</li>
+</ul>
+
+<p>
+If you're not interested in running the demos, you'll only need the first
+package.
+</p>
+
+<p>
+The packages are available in .tar.gz, .tar.bz2 and .zip formats.
+Other organizations might offer additional package formats.
+</p>
+
+<H1>Unpacking</H1>
+
+<p>
+All the packages should be in the same directory prior to unpacking.
+</p>
+
+<ul>
+<li>To unpack .tar.gz files:
+<pre>
+ tar zxf MesaLib-X.Y.tar.gz
+ tar zxf MesaDemos-X.Y.tar.gz
+ tar zxf MesaGLUT-X.Y.tar.gz
+</pre>
+or
+<pre>
+ gzcat MesaLib-X.Y.tar.gz | tar xf -
+ gzcat MesaDemos-X.Y.tar.gz | tar xf -
+ gzcat MesaGLUT-X.Y.tar.gz | tar xf -
+</pre>
+or
+<pre>
+ gunzip MesaLib-X.Y.tar.gz ; tar xf MesaLib-X.Y.tar
+ gunzip MesaDemos-X.Y.tar.gz ; tar xf MesaDemos-X.Y.tar
+ gunzip MesaGLUT-X.Y.tar.gz ; tar xf MesaGLUT-X.Y.tar
+</pre>
+<li>To unpack .tar.bz2 files:
+<pre>
+ bunzip2 -c MesaLib-X.Y.tar.gz | tar xf -
+ bunzip2 -c MesaDemos-X.Y.tar.gz | tar xf -
+ bunzip2 -c MesaGLUT-X.Y.tar.gz | tar xf -
+</pre>
+<li>To unpack .zip files:
+<pre>
+ unzip MesaLib-X.Y.zip
+ unzip MesaDemos-X.Y.zip
+ unzip MesaGLUT-X.Y.zip
+</pre>
+</ul>
+
+
+<h1>Contents</h1>
+
+<p>
+After unpacking you'll have these directories:
+</p>
+<pre>
+Makefile - top-level Makefile for most systems
+configs/ - makefile parameter files for various systems
+include/ - GL header (include) files
+bin/ - shell scripts for making shared libraries, etc
+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
+</pre>
+
+If you downloaded and unpacked the MesaDemos.X.Y package:
+
+<pre>
+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>
+
+If you downloaded and unpacked the MesaGLUT.X.Y package:
+<pre>
+src/glut - GLUT library source code
+</pre>
+
+<p>
+Proceed to the <a href="install.html">compilation and installation
+instructions</a>.
+</p>
+
+
+</BODY>
+</HTML>
diff --git a/docs/drivers.html b/docs/drivers.html
new file mode 100644
index 00000000000..47a059a57ae
--- /dev/null
+++ b/docs/drivers.html
@@ -0,0 +1,221 @@
+<HTML>
+
+<TITLE>Writing Mesa Device Drivers</TITLE>
+
+<BODY text="#000000" bgcolor="#55bbff" link="#111188">
+
+<center><h1>Writing Mesa Device Drivers</h1></center>
+
+<h2>Introduction</h2>
+
+<p>
+Several different classes of drivers can be identified:
+</p>
+<ul>
+<li><b>100% Software Driver</b> -
+ a software driver that does not utilize accelerated graphics hardware.
+ Such a driver will basically just write (and read) pixel values to the
+ computer's frame buffer or a malloc'd color buffer.
+ Examples include the X11/XMesa driver, the Windows driver and OSMesa.
+</li>
+<br>
+<li><b>Hardware Rasterization Driver</b> -
+ for graphics hardware that implements accelerated point/line/triangle
+ rasterization, but relies on core Mesa for vertex transformation.
+ Examples include the DRI 3Dfx, Matrox, and Rage 128 drivers.
+</li>
+<br>
+<li><b>Hardware Transformation and Rasterization Driver</b> -
+ for graphics hardware that implements accelerated rasterization and vertex
+ transformation.
+ Examples include the DRI Radeon and R200 drivers.
+</li>
+</ul>
+
+<p>
+Each class of driver builds on the functionality of the preceeding one.
+For example, a hardware rasterization driver may need to fall back to
+software rasterization when a particular OpenGL state combination is set
+but not supported by the hardware (perhaps smooth, stippled, textured
+triangles).
+</p>
+
+<p>
+Likewise, a hardware transformation driver might need to fall back to
+software-based transformation when a particular, seldom-used lighting
+mode is enabled.
+</p>
+
+
+<h2>Getting Started</h2>
+
+<p>
+The best way to get started writing a new driver is to find an existing
+driver similar to what you plan to implement, and then study it.
+</p>
+<p>
+It's not feasible for this document to explain every detail of writing
+a driver.
+The minute details can be gleaned by looking at existing drivers.
+This document focuses on the high-level concepts and will perhaps expand
+on the details in the future.
+</p>
+<p>
+For examples of 100% software drivers, the OSMesa and XMesa (fake/stand-alone
+GLX) drivers are the best examples.
+</p>
+<p>
+For examples of hardware drivers, the DRI Radeon and R200 drivers are good
+examples.
+</p>
+
+
+
+<h2>Programming API vs. Drivers</h2>
+
+<p>
+There are two aspects to a Mesa device driver:
+</p>
+
+<ul>
+<li><b>Public programming API</b> -
+ this is the interface which application programmers use.
+ Examples are the GLX, WGL and OSMesa interfaces.
+ If you're developing a device driver for a new operating system or
+ window system you'll have to design and implement an <em>OpenGL glue</em>
+ interface similar to these.
+ This interface will, in turn, communicate with the internal driver code.
+</li>
+<br>
+<li><b>Private/internal driver code</b> -
+ this is the code which (effectively) translates OpenGL API calls into
+ rendering operations.
+ The device driver must manage hardware resources, track OpenGL state
+ and implement or dispatch the fundamental rendering operations such as
+ point, line, triangle and image rendering.
+</li>
+</ul>
+
+<p>
+The remainder of this document will focus on the later part.
+Furthermore, we'll use the GLX interface for examples.
+</p>
+
+<p>
+In the case of the DRI drivers, the public GLX interface is contained in
+the <b>libGL.so</b> library.
+libGL.so, in turn, dynamically loads one of the DRI drivers (such as
+radeon_dri.so).
+Both libGL.so and the driver modules talk to the X window system via the
+DRI extension.
+Furthermore, the driver modules interface to the graphics hardware with
+the help of a kernel module and the conventional 2D X server driver.
+</p>
+
+
+
+
+<h2>Software Driver Overview</h2>
+
+<p>
+A software driver is primarily concerned with writing pixel values to the
+system's color buffer (and reading them back).
+The color buffers might be window canvases (typically the front
+color buffer) and/or off-screen image buffers (typically the back color
+buffer).
+The depth, stencil and accumulation buffers will be implemented within
+core Mesa.
+</p>
+<p>
+The software driver must also be concerned with allocation and deallocation
+of rendering contexts, frame buffers and pixel formats (visuals).
+</p>
+
+
+<h3>Rendering Contexts</h3>
+
+<p>
+The glue interface will always have a function for creating new rendering
+contexts (such as glXCreateContext).
+The device driver must have a function which allocates and initializes
+a device-specific rendering context.
+</p>
+
+
+<h3>Frame Buffers</h3>
+
+<p>
+The <em>frame buffer</em> can either be a screen region defined by a window
+or the entire screen.
+</p>
+<p>
+In either case, the device driver must implement functions for allocating,
+initializing and managing frame buffers.
+<p>
+
+
+<h3>Spans</h3>
+
+<p>
+The fundamental rendering operation is to write (and read)
+<em>spans</em> of pixels to the front / back color buffers.
+A span is a horizontal array of pixel colors with an array of mask
+flags. The span begins at a particular (x,y) screen coordinate,
+extends for N pixels, describes N RGBA colors (or color indexes) and
+has an array of N boolean flags indicating which pixels to write and skip.
+<p>
+
+<h3>Miscellaneous functions</h3>
+
+<p>
+Additionally, a software driver will typically have functions for
+binding rendering contexts to frame buffers (via glXMakeCurrent),
+swapping color buffers (via glXSwapBuffers), synchronization
+(via glFlush/glFinish) and queries (via glGetString).
+</p>
+
+<h3>Optimizations</h3>
+
+<p>
+A software driver might implement optimized routines for drawing lines
+and triangles for common cases (such as smooth shading with depth-testing).
+Then, the span functions can be bypassed for a little extra speed.
+The OSMesa and XMesa drivers have examples of this.
+</p>
+
+
+
+
+
+
+
+<h2>Hardware Driver Overview</h2>
+
+<p>
+To do...
+</p>
+
+
+
+<h2>OOP-Style Inheritance and Specialization</h2>
+
+<p>
+Even though Mesa and most device drivers are written in C, object oriented
+programming principles are used in several places.
+</p>
+
+<h3>Rendering Contexts</h3>
+
+<p>
+Every Mesa device driver will need to define a device-specific rendering
+context structure.
+</p>
+
+
+<h2>State Tracking</h2>
+
+
+
+
+</BODY>
+</HTML>
diff --git a/docs/envvars.html b/docs/envvars.html
new file mode 100644
index 00000000000..6520befaaab
--- /dev/null
+++ b/docs/envvars.html
@@ -0,0 +1,46 @@
+<HTML>
+
+<TITLE>Environment Variables</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Environment Variables</H1>
+
+<p>
+Mesa supports the following environment variables:
+</p>
+<ul>
+<li>MESA_NO_ASM - if set, disables all assembly language optimizations
+<li>MESA_NO_MMX - if set, disables Intel MMX optimizations
+<li>MESA_NO_3DNOW - if set, disables AMD 3DNow! optimizations
+<li>MESA_NO_SSE - if set, disables Intel SSE optimizations
+<li>MESA_DEBUG - if set, error messages are printed to stderr.
+If the value of MESA_DEBUG is "FP" floating point arithmetic errors will
+generate exceptions.
+<li>MESA_NO_DITHER - if set, disables dithering, overriding glEnable(GL_DITHER)
+</ul>
+
+<p>
+The following are only applicable to the Xlib software driver.
+See <A HREF="README.X11">README.X11</A> for details.
+</p>
+<ul>
+<li>MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode
+<li>MESA_CI_VISUAL - specifies the X visual and depth for CI mode
+<li>MESA_BACK_BUFFER - specifies how to implement the back color buffer,
+ either "pixmap" or "ximage"
+<li>MESA_GAMMA - gamma correction coefficients for red, green, blue channels
+<li>MESA_XSYNC - enable synchronous X behavior (for debugging only)
+<li>MESA_GLX_FORCE_CI - if set, force GLX to treat 8bpp visuals as CI visuals
+<li>MESA_GLX_FX - set to either "fullscreen" for full-screen rendering,
+ "window" to render into a window, or "disable" to disable the Glide driver.
+<li>MESA_GLX_FORCE_ALPHA - if set, forces RGB windows to have an alpha channel.
+<li>MESA_GLX_DEPTH_BITS - specifies default number of bits for depth buffer.
+<li>MESA_GLX_ALPHA_BITS - specifies default number of bits for alpha channel.
+</ul>
+
+
+</BODY>
+</HTML>
diff --git a/docs/extensions.html b/docs/extensions.html
new file mode 100644
index 00000000000..dbb8ebadaf2
--- /dev/null
+++ b/docs/extensions.html
@@ -0,0 +1,34 @@
+<HTML>
+
+<TITLE>Mesa Extensions</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
diff --git a/docs/faq.html b/docs/faq.html
new file mode 100644
index 00000000000..b93d5007dc0
--- /dev/null
+++ b/docs/faq.html
@@ -0,0 +1,394 @@
+<html>
+
+<head><title>Mesa FAQ</title></head>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+
+<center>
+<h1>Mesa Frequently Asked Questions</h1>
+Last updated: 21 October 2004
+</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 6.x supports the OpenGL 1.5 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 DRI
+drivers for XFree86/X.org. 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 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/X.org 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 What's the difference between"Stand-Alone" Mesa and the DRI drivers?</h2>
+<p>
+<em>Stand-alone Mesa</em> is the original incarnation of Mesa.
+On systems running the X Window System it does all its rendering through
+the Xlib API:
+<ul>
+<li>The GLX API is supported, but it's really just an emulation of the
+ real thing.
+<li>The GLX wire protocol is not supported and there's no OpenGL extension
+ loaded by the X server.
+<li>There is no hardware acceleration.
+<li>The OpenGL library, libGL.so, contains everything (the programming API,
+ the GLX functions and all the rendering code).
+</ul>
+</p>
+<p>
+Alternately, Mesa acts as the core for a number of OpenGL hardware drivers
+within the DRI (Direct Rendering Infrastructure):
+<ul>
+<li>The libGL.so library provides the GL and GLX API functions, a GLX
+ protocol encoder, and a device driver loader.
+<li>The device driver modules (such as r200_dri.so) contain a built-in
+ copy of the core Mesa code.
+<li>The X server loads the GLX module.
+ The GLX module decodes incoming GLX protocol and dispatches the commands
+ to a rendering module.
+ For the DRI, this module is basically a software Mesa renderer.
+</ul>
+
+
+
+<h2>1.5 How do I upgrade my DRI installation to use a new Mesa release?</h2>
+<p>
+This wasn't easy in the past.
+Now, the DRI drivers are included in the Mesa tree and can be compiled
+separately from the X server.
+Just follow the Mesa <a href="install.html">compilation instructions</a>.
+</p>
+
+
+<h2>1.6 Are there other open-source implementations of OpenGL?</h2>
+<p>
+Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html"
+target="_parent">
+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://ogl-es.sourceforge.net" target="_parent">Vincent</a> is
+an open-source implementation of OpenGL ES for mobile devices.
+
+<p>
+<a href="http://www.dsbox.com/minigl.html" target="_parent">miniGL</a>
+is a subset of OpenGL for PalmOS devices.
+
+<p>
+<a href="http://fabrice.bellard.free.fr/TinyGL/"
+target="_parent">TinyGL</a> is a subset of OpenGL.
+</p>
+
+<p>
+<a href="http://softgl.studierstube.org/" target="_parent">SoftGL</a>
+is an OpenGL subset for mobile devices.
+</p>
+
+<p>
+<a href="http://chromium.sourceforge.net/" target="_parent">Chromium</a>
+isn't a conventional OpenGL implementation (it's layered upon OpenGL),
+but it does export the OpenGL API. It allows tiled rendering, sort-last
+rendering, etc.
+</p>
+
+<p>
+There may be other open OpenGL implementations, 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>
+Mesa no longer supports GNU autoconf/automake. Why?
+<ul>
+<li>It seemed to seldom work on anything but Linux
+<li>The config files were hard to maintain and hard to understand
+<li>libtool caused a lot of grief
+</ul>
+
+<p>
+Now Mesa again uses a conventional Makefile system (as it did originally).
+Basically, each Makefile in the tree includes one of the configuration
+files from the config/ directory.
+The config files specify all the variables for a variety of popular systems.
+</p>
+
+
+<h2><a name="part2">2.3 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.4 Where is the GLUT library?</a></h2>
+<p>
+<a name="part2">GLUT (OpenGL Utility Toolkit) is in the separate MesaGLUT-x.y.z.tar.gz file.
+If you don't already have GLUT installed, you should grab the MesaGLUT
+package and compile it with the rest of Mesa.
+</a></p>
+
+
+
+<h2><a name="part2">2.5 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"
+target="_parent">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/X.org 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/" target="_parent">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"
+target="_parent">
+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" target="_parent">
+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>
+
+
+<h2>4.3 Why isn't GL_EXT_texture_compression_s3tc implemented in Mesa and/or the DRI drivers?</h2>
+<p>
+The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt" target="_parent">specification for the extension</a>
+indicates that there are intellectual property (IP) and/or patent issues
+to be dealt with.
+</p>
+<p>We've been unsucessful in getting a response from S3 (or whoever owns
+the IP nowadays) to indicate whether or not an open source project can
+implement the extension (specifically the compression/decompression
+algorithms).
+</p>
+<p>
+Until we can get official permission to do so, this extension will not
+be implemented in Mesa.
+</p>
+
+
+</body>
+</html>
diff --git a/docs/fbdev-dri.html b/docs/fbdev-dri.html
new file mode 100644
index 00000000000..4af503932be
--- /dev/null
+++ b/docs/fbdev-dri.html
@@ -0,0 +1,315 @@
+<html>
+
+<TITLE>Mesa fbdev/DRI Environment</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
+
+<h3>Background Info</h3>
+
+<p>
+The Mesa-based DRI drivers used to be hosted in the DRI tree (which is
+basically a copy of the XFree86 tree).
+Since the Mesa-based DRI drivers are moreso "Mesa drivers" than "XFree86
+drivers" and the fact that with some work, the drivers could be used
+without X, the driver code was moved into the Mesa tree.
+</p>
+
+<p>
+So now the DRI drivers can be compiled for two different environments:
+fbdev and XFree86.
+To build the drivers for XFree86, one has to download/build the DRI
+source tree.
+Eventually, we'd like to be able to build the drivers for XFree86 outside
+of the XFree86/DRI trees.
+</p>
+
+
+
+
+<h1>2. Compilation</h1>
+
+<h2>2.1 Compiling the DRM modules</h2>
+
+<p>
+First, you'll need the DRM (Direct Rendering Manager) kernel module sources.
+They're found in a module of the DRI CVS tree.
+To obtain the code do the following:
+</p>
+<pre>
+ cvs -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/dri login
+</pre>
+<p>
+Press Enter/Return when prompted for a password. Then,
+</p>
+<pre>
+ cvs -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/dri co drm
+</pre>
+
+<p>
+Compile the DRM kernel modules:
+</p>
+<pre>
+ cd drm/linux
+ make
+</pre>
+
+<p>
+Note: you may need to be root in order to make a few symlinks.
+</p>
+<p>
+When compilation is done, you should have at least the following
+kernel modules:
+</p>
+<pre>
+ gamma.o
+ i810.o
+ i830.o
+ mach64.o
+ mga.o
+ r128.o
+ radeon.o
+ savage.o
+ sis.o
+ tdfx.o
+ via.o
+</pre>
+<p>
+You'll probably want to copy/move them into your kernel module directory
+(for example: <code>/lib/modules/2.4.18-14/kernel/drivers/char/drm/</code>).
+</p>
+
+
+
+<h2>2.2 Compiling the Mesa drivers</h2>
+
+<p>
+Begin by editing the <code>Mesa/configs/default</code> file to set
+the <code>DRM_SOURCE_PATH</code> variable.
+Set it to the location where the DRM module sources are located.
+For example, if your current directory in step 2.1 was <code>/home/fred/</code>
+set DRM_SOURCE_PATH to <code>/home/fred/drm</code>
+</p>
+
+<p>
+Next, assuming you're starting with a fresh Mesa CVS checkout,
+do the following:
+</p>
+<pre>
+ make linux-solo
+</pre>
+
+<p>
+If you previously built the source tree, run <code>make realclean</code>
+first to remove the old object files.
+</p>
+
+<p>
+When this is finished, check the <code>Mesa/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>i810_dri.so</code> - DRI driver for Intel i810/i815 chips.
+<li><code>i830_dri.so</code> - DRI driver for Intel i830/i845 chips.
+<li><code>mga_dri.so</code> - DRI driver for Matrox G200/G400 cards.
+<li><code>sis_dri.so</code> - DRI driver for SIS cards.
+<li><code>tdfx_dri.so</code> - DRI driver for 3dfx Voodoo 3/4/5 cards.
+<li><code>gamma_dri.so</code> - DRI driver for 3Dlabs gamma 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 Load Kernel Modules</h2>
+
+<p>
+You'll need to load the kernel modules specific to your graphics hardware.
+Typically, this consists of the agpgart module, an fbdev driver module
+and the DRM kernel module (from step 2.1).
+</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/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/lib/</code> directory.
+</p>
+
+<p>
+Change to the <code>Mesa/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>
diff --git a/docs/games.html b/docs/games.html
new file mode 100644
index 00000000000..dcf5cf2d018
--- /dev/null
+++ b/docs/games.html
@@ -0,0 +1,64 @@
+<HTML>
+
+<TITLE>Games</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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> \ No newline at end of file
diff --git a/docs/glfbdev-driver.html b/docs/glfbdev-driver.html
new file mode 100644
index 00000000000..b49950eb9e1
--- /dev/null
+++ b/docs/glfbdev-driver.html
@@ -0,0 +1,90 @@
+<HTML>
+
+<TITLE>Mesa glFBDev Driver</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<center><H1>Mesa glFBDev Driver</H1></center>
+
+
+<H1>1. Introduction</H1>
+
+<p>
+The GLFBDev driver interface allows one to do OpenGL rendering into a
+framebuffer managed with the Linux's fbdev interface.
+</p>
+
+<p>
+Basically, the programmer uses the fbdev functions to initialize the
+graphics hardware and setup the framebuffer.
+Then, using a calls to Mesa's glFBDev API functions, one can render
+into the framebuffer with the OpenGL API functions.
+</p>
+
+<p>
+Note, only software rendering is supported; there is no hardware
+acceleration.
+</p>
+
+
+<p>
+The GL/glfbdev.h header file defines the glFBDev interface.
+</p>
+
+<p>
+The progs/fbdev/glfbdevtest.c demonstrates how to use the glFBDev interface.
+</p>
+
+<p>
+For more information about fbdev, see the
+<a href="http://www.tldp.org/HOWTO/Framebuffer-HOWTO.html" target="_parent">
+Framebuffer Howto</a>
+</p>
+
+
+<h1>2. Compilation</h1>
+
+<p>
+To compile Mesa with support for the glFBDev interface:
+<pre>
+ XXX todo
+</pre>
+
+<p>
+When compilation is finished look in progs/glfbdev/ for the glfbdevtest demo.
+</p>
+
+</p>
+xxx todo
+</p>
+
+
+<h1>3. Compiling and linking glFBDev programs</h1>
+
+<p>
+xxx todo
+</p>
+
+
+
+<h1>4. Running glFBDev programs</h1>
+
+<p>
+First, you need to have a working fbdev environment.
+See the
+<a href="http://www.tldp.org/HOWTO/Framebuffer-HOWTO.html" target="_parent">
+Framebuffer Howto</a> for information.
+</p>
+
+<p>
+Programs must be run with root permission.
+</p>
+
+</p>
+
+
+
+</body>
+</html>
diff --git a/docs/glu.html b/docs/glu.html
new file mode 100644
index 00000000000..8adaf42bcb9
--- /dev/null
+++ b/docs/glu.html
@@ -0,0 +1,45 @@
+<HTML>
+
+<TITLE>SGI GLU</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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 SI GLU library code is included in the Mesa distribution.
+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>
diff --git a/docs/helpwanted.html b/docs/helpwanted.html
new file mode 100644
index 00000000000..346f093d643
--- /dev/null
+++ b/docs/helpwanted.html
@@ -0,0 +1,74 @@
+<HTML>
+
+<TITLE>Help Wanted</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Help Wanted</H1>
+
+<p>
+We can always use more help with the Mesa project.
+Here are some specific ideas and areas where help would be appreciated:
+</p>
+
+<ol>
+<li><p>
+ Generate the src/mesa/main/enums.c file with a Python script which
+ uses the gl_API.xml file.
+ </p>
+<li><p>
+ Try to auto-generate the display list "save" functions seen in dlist.c
+ using a Python script and the gl_API.xml file.
+ The gl_API.xml file will probably need a new tag to indicate whether or
+ not each function gets compiled into display lists.
+ </p>
+<li><p>
+ Maintenance of assembly language files on Linux, Windows and SPARC systems.
+ </p>
+<li><p>
+ Help to incorporate the 3Dlabs' shading language compiler for OpenGL 2.0.
+ </p>
+<li><p>
+ Implement assembly language (SSE/MMX) code generation for
+ vertex/fragment programs.
+ </p>
+<li><p>
+ Windows 98/NT driver building, maintenance and testing
+ (Karl Schultz has been doing a great job of this lately).
+ </p>
+<li><p>
+ Maintenance and testing of various drivers, such as DOS/DJGPP, GGI, etc.
+ </p>
+<li><p>
+ Write new tests for Glean.
+ </p>
+</ol>
+
+
+<p>
+If you want to help with Mesa, first join the Mesa developer's
+mailing list.
+Then post a message to propose what you want to do, just to make sure
+there's no issues.
+</p>
+
+</p>
+Anyone is welcome to contribute code to the Mesa project.
+By doing so, it's assumed that you agree to the code's licensing terms.
+</p>
+
+<p>
+Finally:
+<p>
+
+<ol>
+<li>Try to write high-quality code that follows the existing style.
+<li>Use uniform indentation, write comments, use meaningful identifiers, etc.
+<li>Test your code thoroughly. Include test programs if appropriate.
+</ol>
+
+
+</BODY>
+</HTML>
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 00000000000..eec4d725cdc
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+<html>
+
+<head>
+<title>Mesa Home Page</title>
+</head>
+
+<frameset rows="80,*" border="0" frameborder="yes">
+
+ <frame src="banner.html" name="BannerFrame"
+ scrolling="no" marginwidth="1" marginheight="1">
+
+ <frameset cols="28%,72% " border="1" frameborder="yes">
+
+ <frame src="contents.html" name="ContentsFrame"
+ marginwidth="2" marginheight="1" noresize="noresize">
+
+ <frame src="news.html" name="MainFrame"
+ marginwidth="3" marginheight="1" noresize="noresize">
+
+ </frameset>
+
+<noframes>
+<p>Sorry, this site requires frame support</p>
+</noframes>
+
+</frameset>
+
+</html>
diff --git a/docs/install.html b/docs/install.html
new file mode 100644
index 00000000000..4087750a725
--- /dev/null
+++ b/docs/install.html
@@ -0,0 +1,301 @@
+<HTML>
+
+<TITLE>Compilation and Installation</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+
+<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>
+
+<h3>1.1 Compilation</h3>
+
+<p>
+Mesa may be compiled in several different ways:
+</p>
+<ul>
+<li><b><em>Stand-alone/Xlib mode</em></b> - Mesa is compiled as
+a software renderer using Xlib to do all rendering.
+libGL.so is a self-contained rendering library.
+<p>
+To compile stand-alone Mesa type <b>make</b> in the top-level directory.
+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>This will produce libGL.so and several other libraries</p>
+</li>
+
+<li><b><em>DRI/accelerated</em></b> - The DRI hardware drivers (for ATI,
+Intel, Matrox, etc) are built.
+libGL.so implements the GLX extension and dynamically loads the DRI drivers.
+<p>
+To build the DRI drivers you'll first need to have the DRM (Direct
+Rendering Manager) kernel drivers and header files.
+They're available from the <a href="http://dri.sf.net/" target="_parent">DRI</a> project.
+</p>
+<p>
+Your distribution should already have both the kernel modules and support
+library already installed. If not, you can get them from CVS by doing:
+<pre>
+cvs -z3 -d:pserver:anonymous@anoncvs.freedesktop.org:/cvs/dri co drm
+</pre>
+<p>
+See the <a href="http://dri.freedesktop.org/wiki/Building" target="_parent">
+DRI Building Instructions</a> for the steps to build the DRM modules. Mesa
+6.5 requires at least libdrm 2.0.1 or greater.
+</p>
+<p>
+Build Mesa and the DRI drivers by running
+</p>
+<pre>
+make linux-dri
+</pre>
+<p>
+There are also <code>linux-dri-x86</code>, <code>linux-dri-x86-64</code>,
+and <code>linux-ppc</code> configurations, optimized for those architectures.
+</p>
+
+<p>
+Finally, you'll need a DRI-enabled X server from
+<a href="http://freedesktop.org/wiki/Software_2fXserver" target="_parent">
+X.org</a> or <a href="http://www.xfree86.org" target="_parent">XFree86</a>.
+Visit those projects' home pages for more information.
+</p>
+
+</li>
+</ul>
+
+
+<p>
+Later, if you want to rebuild for a different configuration run
+<code>make realclean</code> before rebuilding.
+</p>
+
+
+<h3>1.2 The libraries</h3>
+
+<p>
+When compilation has finished, look in the top-level <code>lib/</code>
+directory.
+You'll see a set of library files similar to this:
+</p>
+<pre>
+lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
+lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
+-rwxr-xr-x 1 brian users 3375861 Mar 26 07:53 libGL.so.1.5.060100*
+lrwxrwxrwx 1 brian users 11 Mar 26 07:53 libGLU.so -> libGLU.so.1*
+lrwxrwxrwx 1 brian users 20 Mar 26 07:53 libGLU.so.1 -> libGLU.so.1.3.060100*
+-rwxr-xr-x 1 brian users 549269 Mar 26 07:53 libGLU.so.1.3.060100*
+lrwxrwxrwx 1 brian users 12 Mar 26 07:53 libglut.so -> libglut.so.3*
+lrwxrwxrwx 1 brian users 16 Mar 26 07:53 libglut.so.3 -> libglut.so.3.7.1*
+-rwxr-xr-x 1 brian users 597754 Mar 26 07:53 libglut.so.3.7.1*
+lrwxrwxrwx 1 brian users 11 Mar 26 08:04 libGLw.so -> libGLw.so.1*
+lrwxrwxrwx 1 brian users 15 Mar 26 08:04 libGLw.so.1 -> libGLw.so.1.0.0*
+-rwxr-xr-x 1 brian users 20750 Mar 26 08:04 libGLw.so.1.0.0*
+lrwxrwxrwx 1 brian users 14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
+lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
+-rwxr-xr-x 1 brian users 23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
+</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.
+<br>
+<b>libGLw</b> is the Xt/Motif OpenGL drawing area widget library.
+<br>
+<b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
+</p>
+
+<p>
+If you built the DRI hardware drivers, you'll also see the DRI drivers:
+</p>
+<pre>
+-rwxr-xr-x 1 brian users 11320803 Jul 21 12:11 mach64_dri.so
+-rwxr-xr-x 1 brian users 11418014 Jul 21 12:12 mga_dri.so
+-rwxr-xr-x 1 brian users 11064426 Jul 21 12:12 r128_dri.so
+-rwxr-xr-x 1 brian users 11849858 Jul 21 12:12 r200_dri.so
+-rwxr-xr-x 1 brian users 11757388 Jul 21 12:12 radeon_dri.so
+-rwxr-xr-x 1 brian users 11232304 Jul 21 12:13 s3v_dri.so
+-rwxr-xr-x 1 brian users 11062970 Jul 21 12:13 savage_dri.so
+-rwxr-xr-x 1 brian users 11214212 Jul 21 12:13 sis_dri.so
+-rwxr-xr-x 1 brian users 11368736 Jul 21 12:13 tdfx_dri.so
+-rwxr-xr-x 1 brian users 10598868 Jul 21 12:13 trident_dri.so
+-rwxr-xr-x 1 brian users 10997120 Jul 21 12:13 unichrome_dri.so
+</pre>
+
+
+<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 Mesa's headers and libraries, run <code>make install</code>
+You'll be prompted to enter alternative directories for the headers
+and libraries.
+</p>
+
+<p>
+Note: at runtime, you can set the 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>
diff --git a/docs/intro.html b/docs/intro.html
new file mode 100644
index 00000000000..a926f08172d
--- /dev/null
+++ b/docs/intro.html
@@ -0,0 +1,306 @@
+<HTML>
+
+<TITLE>Mesa Introduction</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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 implements 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>
+January 2003: Mesa 6.0 is released. It implements the OpenGL 1.5
+specification as well as the GL_ARB_vertex_program and
+GL_ARB_fragment_program extensions.
+</p>
+
+
+<p>
+Ongoing: Mesa is used as the core of many hardware OpenGL drivers for
+the XFree86 X.org X servers within the
+<A href="http://dri.freedesktop.org/" 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 (+1).
+Work is underway to implement the OpenGL 2.0 specification.
+</p>
+
+
+<H2>Version 6.x features</H2>
+<p>
+Version 6.x of Mesa implements the OpenGL 1.5 API with the following
+extensions incorporated as standard features:
+</p>
+<ul>
+<li>GL_ARB_occlusion_query
+<li>GL_ARB_vertex_buffer_object
+<li>GL_EXT_shadow_funcs
+</ul>
+<p>
+Also note that several OpenGL tokens were renamed in OpenGL 1.5
+for the sake of consistency.
+The old tokens are still available.
+</p>
+<pre>
+New Token Old Token
+------------------------------------------------------------
+GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE
+GL_FOG_COORD GL_FOG_COORDINATE
+GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE
+GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE
+GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE
+GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER
+GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY
+GL_SRC0_RGB GL_SOURCE0_RGB
+GL_SRC1_RGB GL_SOURCE1_RGB
+GL_SRC2_RGB GL_SOURCE2_RGB
+GL_SRC0_ALPHA GL_SOURCE0_ALPHA
+GL_SRC1_ALPHA GL_SOURCE1_ALPHA
+GL_SRC2_ALPHA GL_SOURCE2_ALPHA
+</pre>
+<p>
+See the
+<a href="http://www.opengl.org/documentation/spec.html" target="_parent">
+OpenGL specification</a> for more details.
+</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>
diff --git a/docs/libraries.html b/docs/libraries.html
new file mode 100644
index 00000000000..eaeb0451a83
--- /dev/null
+++ b/docs/libraries.html
@@ -0,0 +1,57 @@
+<HTML>
+
+<TITLE>Libraries and Toolkits</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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/resources/libraries/glut.html" 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://plib.sourceforge.net/" 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.vtk.org/" 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> \ No newline at end of file
diff --git a/docs/license.html b/docs/license.html
new file mode 100644
index 00000000000..dd878619bef
--- /dev/null
+++ b/docs/license.html
@@ -0,0 +1,86 @@
+<HTML>
+
+<TITLE>License / Cppyright Information</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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 main components and the license for each.
+</p>
+<p>
+The core Mesa library is licensed according to the terms of the MIT license.
+This allows integration with the XFree86, Xorg and DRI projects.
+</p>
+<p>
+The default Mesa license is as follows:
+</p>
+
+<pre>
+Copyright (C) 1999-2005 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 the licensing terms
+of the component to which you're contributing.
+The following section lists the primary components of the Mesa distribution
+and their respective licenses.
+</p>
+
+
+<H1>Mesa Component Licenses</H1>
+
+<pre>
+Component Location Primary Author License
+----------------------------------------------------------------------------
+Main Mesa code src/mesa/ Brian Paul Mesa (MIT)
+
+Device drivers src/mesa/drivers/* See drivers See drivers
+
+Ext headers include/GL/glext.h SGI SGI Free B
+ include/GL/glxext.h
+
+GLUT src/glut/ Mark Kilgard Mark's copyright
+
+Mesa GLU library src/glu/mesa/ Brian Paul GNU-LGPL
+
+SGI GLU library src/glu/sgi/ SGI SGI Free B
+
+demo programs progs/demos/ various see source files
+
+X demos progs/xdemos/ Brian Paul see source files
+
+SGI demos progs/samples/ SGI SGI copyright
+
+RedBook demos progs/redbook/ SGI SGI copyright
+</pre>
+
+</body>
+</html>
diff --git a/docs/lists.html b/docs/lists.html
new file mode 100644
index 00000000000..76ebf32c3fe
--- /dev/null
+++ b/docs/lists.html
@@ -0,0 +1,55 @@
+<HTML>
+
+<TITLE>Mesa Mailing Lists</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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/"
+target="_parent">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/" target="_parent">OpenGL discussion forums</A>
+at www.opengl.org
+</p>
+
+</HTML>
+</BODY>
diff --git a/docs/mangling.html b/docs/mangling.html
new file mode 100644
index 00000000000..cb19e7568a5
--- /dev/null
+++ b/docs/mangling.html
@@ -0,0 +1,28 @@
+<HTML>
+
+<TITLE>Function Name Mangling</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
diff --git a/docs/modelers.html b/docs/modelers.html
new file mode 100644
index 00000000000..4da4364268d
--- /dev/null
+++ b/docs/modelers.html
@@ -0,0 +1,68 @@
+<HTML>
+
+<TITLE>Modelers, Renderers and Viewers</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Modelers, Renderers and Viewers</H1>
+
+<ul>
+ <li><a href="http://www.aqsis.com/" target="_parent">Aqsis</a> - a RenderMan compatible renderer</li>
+ <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.org/" target="_parent">Blender</a> - 3-D animation
+ software
+ </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/chumbalum-soft/md2v" 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.neuralvr.com/" target="_parent">Pansophica</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></ul>
+
+
+</body></html>
diff --git a/docs/news.html b/docs/news.html
new file mode 100644
index 00000000000..e06cd1c02d6
--- /dev/null
+++ b/docs/news.html
@@ -0,0 +1,1223 @@
+<HTML>
+
+<TITLE>Mesa News</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>News</H1>
+
+
+<h2>March 31, 2006</h2>
+<p>
+Mesa 6.5 has been released. This is a new development release.
+</p>
+<pre>
+ New:
+ - OpenGL Shading Language support through GL_ARB_shader_objects,
+ GL_ARB_shading_language_100, GL_ARB_vertex_shader and
+ GL_ARB_fragment_shader (done by Michal Krol)
+ - GL_EXT_packed_depth_stencil extension
+ - GL_EXT_timer_query extension
+ - GL_EXT_framebuffer_blit extension
+ - GL_ARB_half_float_pixel
+ - GLX_MESA_copy_sub_buffer for DRI drivers (Dave Reveman)
+ - reflect demo improved to support multiple windows
+ - singlebuffer demo (shows no/little-flicker single-buffered rendering)
+ - r200: enable GL_ARB_texture_env_crossbar, separate the texture
+ sampling unit bits from the texture env combine enable bits
+ - r200: add support for GL_ATI_fragment_shader
+ - added fast XOR-mode line drawing optimization
+ - radeon: add support for all 3 tmus, GL_ARB_texture_cube_map
+ and GL_EXT_fog_coord
+ - MESA_GLX_ALPHA_BITS env var for xlib driver
+ - many DRI driver updates (including screen rotation support
+ for the Intel DRI driver)
+ Changes:
+ - removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead)
+ - removed GL_SGIX/SGIS_pixel_texture extensions
+ Bug fixes:
+ - fixed glxcontextmodes.c datatype problem (bug 5835)
+ - fixed aix-gcc build/install bugs (bug 5874)
+ - fixed some bugs in texture env program generation
+ - glXCopyContext() didn't handle texture object bindings properly
+ - glXCopyContext() didn't copy all lighting state
+ - fixed FreeBSD config (Pedro Giffuni)
+ - fixed some minor framebuffer object bugs
+ - replaced dprintf() with _glu_printf() in GLU (bug 6244)
+ - fixed a number of thread safety bugs/regressions
+ - fixed a number of GLU tesselator bugs (John Shell, bug 6339)
+ - paletted texturing was broken w/ floating point palettes (K. Schultz)
+ - lots of assorted framebuffer object bug fixes
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+TBD
+</pre>
+
+
+<h2>February 2, 2006</h2>
+<p>
+Mesa 6.4.2 has been released. This is primarily a bug-fix release.
+</p>
+<pre>
+ New items:
+ - added OSMesaColorClamp() function/feature
+ - added wglGetExtensionStringARB() function
+ Bug fixes:
+ - fixed some problems when building on Windows
+ - GLw header files weren't installed by installmesa script (bug 5396)
+ - GL/glfbdev.h file was missing from tarballs
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+cb0d745d520fa7c2bb9178058b763544 MesaLib-6.4.2.tar.gz
+7674d2c603b5834259e4e5a820cefd5b MesaLib-6.4.2.tar.bz2
+d224e1325b33ff71a0f3893fc6b4d594 MesaLib-6.4.2.zip
+d4b345d4588fc750cd3d34f3ac26673e MesaDemos-6.4.2.tar.gz
+9cae1ab874af533ce356bd7dfe2e0bb0 MesaDemos-6.4.2.tar.bz2
+2da6e1d1245e441d27813595c6ba50de MesaDemos-6.4.2.zip
+84427d18c3453f0ea52388eeba7169b5 MesaGLUT-6.4.2.tar.gz
+b157ba8ad1ea63260cf5339132e7aac6 MesaGLUT-6.4.2.tar.bz2
+fe1523744fc05edc3811dfc6a1bf4181 MesaGLUT-6.4.2.zip
+</pre>
+
+
+<h2>November 29, 2005</h2>
+<p>
+Mesa 6.4.1 has been released. This is a stable, bug-fix release.
+</p>
+<pre>
+ Bug fixes:
+ - redefining a vertex program string didn't take effect in TNL module
+ - fixed occasional segfault upon vertex/fragment parsing error
+ - vertex program LIT instruction didn't handle 0^0=1 correctly
+ - fragment program fog option didn't work with glDrawPixels, glBitmap
+ - USE_MGL_NAMESPACE didn't work for x86-64
+ - OSMesa demos were missing from previous release tarballs
+ - fixed problem with float->ushort conversion in glClear (bug 4992)
+ - popping of GL_EYE_PLANE texgen state was broken (bug 4996)
+ - popping of GL_SPOT_DIRECTION light state was broken (bug 5005)
+ - fixed occasional triangle color interpolation problem on VMS
+ - work around invalid free() call (bug 5131)
+ - fixed BSD X server compilation problem by including stdint.h
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+698ceb574cf882b0226761f5913c0da9 MesaLib-6.4.1.tar.gz
+ea148c828ec6f645526451db1b8556f1 MesaLib-6.4.1.tar.bz2
+42e93279468975ed2bf3111b8721e5d9 MesaLib-6.4.1.zip
+e3b0d50807fd2bdcd1a95aaddd786f13 MesaDemos-6.4.1.tar.gz
+99df1fdcb98d391666b476ca6f1dda8a MesaDemos-6.4.1.tar.bz2
+b999d2c6d92fb4b7740a3dbd889348e3 MesaDemos-6.4.1.zip
+eadfe01fe5ddfb1eb8227dd567b31635 MesaGLUT-6.4.1.tar.gz
+bd003bb4f981a4f91dee4c38644d4f3f MesaGLUT-6.4.1.tar.bz2
+71c401c037088bf688a88afdaeb3420f MesaGLUT-6.4.1.zip
+</pre>
+
+
+
+
+<h2>October 24, 2005</h2>
+<p>
+Mesa 6.4 has been released. This is a stable, bug-fix release.
+</p>
+<pre>
+ New:
+ - Added a fast XOR line drawing function in Xlib driver
+ - Added support for GL_ARB_texture_mirrored_repeat to savage
+ driver (supported only on Savage4 hardware).
+ Changes:
+ - Mesa now packaged in three parts: Library, Demos and GLUT
+ Bug fixes:
+ - GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig
+ - Some files were present multiple times in the 6.3.2 tarballs
+ - r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207)
+ - glxgears_fbconfig demo didn't work (bug 4237)
+ - fixed bug when bilinear sampling 2d textures with borders
+ - glXCreatePbuffer() could segfault instead of returning 0 (bug 4235)
+ - fixed undefined frexp and rand in X.org libGLcore.a (bug 4242)
+ - fixed a few problems with proxy color tables (bug 4270)
+ - fixed precision problem in Z clearing (bug 4395)
+ - glBitmap, glDraw/CopyPixels mistakenly generated selection hits
+ - fixed potential segfault caused by reading pixels outside
+ of renderbuffer bounds
+ - glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB
+ - fixed memory corruption bug involving software alpha buffers
+ - glReadPixels clipped by window bounds was sometimes broken
+ - glDraw/CopyPixels of stencil data ignored the stencil write mask
+ - glReadPixels from a texture bound to a framebuffer object didn't work
+ - glIsRender/FramebufferEXT weren't totally correct
+ - fixed a number of point size attenuation/fade bugs
+ - fixed glFogCoord bug 4729
+ - GLX encoding for transpose matrix functions was broken
+ - fixed broken fragment program KIL and SWZ instructions
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+1cce0c1eb4fd15e9dfe837a1ce0c9812 MesaLib-6.4.tar.gz
+85a84e47a3f718f752f306b9e0954ef6 MesaLib-6.4.tar.bz2
+b976fea4f3ee06354c53f91b6e3f2ffc MesaLib-6.4.zip
+d8734f2c69bcf7ef9f5ae454a85743ba MesaDemos-6.4.tar.gz
+1a8c4d4fc699233f5fdb902b8753099e MesaDemos-6.4.tar.bz2
+607ab7c7a7de0cc5febbdde2bfa03098 MesaDemos-6.4.zip
+3260156f66174322a092be0767962d34 MesaGLUT-6.4.tar.gz
+0465d053f83775f44a12dec4050dfd78 MesaGLUT-6.4.tar.bz2
+02abfcdcdf72ba938ae00f6e3b70fbe0 MesaGLUT-6.4.zip
+</pre>
+
+
+<h2>August 19, 2005</h2>
+<p>
+Mesa 6.3.2 has been released.
+Note: there was no public release of version 6.3.1.
+</p>
+<pre>
+ New:
+ - The distribution now includes the DRI drivers and GLX code
+ Changes:
+ - Made the DRI "new" driver interface standard, remove old code
+ Bug fixes:
+ - GL_ARB_vertex/fragment_shader were mistakenly listed in the
+ extensions string
+ - negative relative addressing in vertex programs was broken
+ - update/fix SPARC assembly code for vertex transformation
+ - fixed memory leak when freeing GLX drawables/renderbuffers
+ - fixed display list memory leak
+ - the GL_PIXEL_MAP_I_TO_I table is now floating point, not integer
+ - wglGetProcAddress() didn't handle wgl-functions
+ - fixed glxext.h cross-compile issue (Colin Harrison)
+ - assorted DRI driver fixes
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+98192e45ed8d69113688f89f90869346 MesaLib-6.3.2.tar.gz
+0df27701df0924d17ddf41185efa8ce1 MesaLib-6.3.2.tar.bz2
+ccb2423aab77fc7e81ce628734586140 MesaLib-6.3.2.zip
+9d0fca0a7d051c34a0b485423fb3e85d MesaDemos-6.3.2.tar.gz
+96708868450c188205e42229b5d813c4 MesaDemos-6.3.2.tar.bz2
+c5102501e609aa8996d832fafacb8ab9 MesaDemos-6.3.2.zip
+</pre>
+
+
+<h2>July 20, 2005</h2>
+<p>
+Mesa 6.3 has been released.
+This is a development release with new features, changes and bug fixes.
+</p>
+<pre>
+ New:
+ - GL_EXT_framebuffer_object extension
+ - GL_ARB_draw_buffers extension
+ - GL_ARB_pixel_buffer_object extension
+ - GL_OES_read_format extension (Ian Romanick)
+ - DirectFB driver (Claudio Ciccani)
+ - x86_64 vertex transformation code (Mikko T.)
+ Changes:
+ - added -stereo option for glxgears demo (Jacek Rosik)
+ - updated the PBuffer demo code in xdemos/ directory
+ - glDeleteTextures/Programs/Buffers() now makes the object ID
+ available for immediate re-use
+ - assorted 64-bit clean-ups fixes (x86_64 and Win64)
+ - lots of internal changes for GL_EXT_framebuffer_object
+ Bug fixes:
+ - some functions didn't support PBO functionality
+ - glGetTexImage didn't convert color index images to RGBA as required
+ - fragment program texcoords were sometimes wrong for points and lines
+ - fixed problem with negative dot product in arbfplight, fplight demos
+ - fixed bug in perspective correction of antialiased, textured lines
+ - querying GL_POST_CONVOLUTION_ALPHA_BIAS_EXT returned wrong value
+ - fixed a couple per-pixel fog bugs (Soju Matsumoto)
+ - glGetBooleanv(GL_FRAGMENT_PROGRAM_BINDING_NV) was broken
+ - fixed float parsing bug in ARB frag/vert programs (bug 2520)
+ - XMesaGetDepthBuffer() returned incorrect value for bytesPerValue
+ - GL_COLOR_MATERIAL with glColor3 didn't properly set diffuse alpha
+ - glXChooseFBConfig() crashed if attribList pointer was NULL
+ - program state.light[n].spot.direction.w was wrong value (bug 3083)
+ - fragment program fog option required glEnable(GL_FOG) - wrong.
+ - glColorTable() could produce a Mesa implementation error (bug 3135)
+ - RasterPos could get corrupted by color index rendering path
+ - Removed bad XTranslateCoordinates call when rendering to Pixmaps
+ - glPopAttrib() didn't properly restore GL_TEXTURE_GEN enable state
+ - fixed a few Darwin compilation problems
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+0236f552d37514776945d5a013e5bb7b MesaLib-6.3.tar.gz
+60e1a8f78c4a8c7750a1e95753190986 MesaLib-6.3.tar.bz2
+ca7c950fbace68c70caa822322db7223 MesaLib-6.3.zip
+25ea801645b376c014051804fe4974b2 MesaDemos-6.3.tar.gz
+9248e74872ea88c57ec25c900c295057 MesaDemos-6.3.tar.bz2
+8537dfa734ef258dcc7272097558d434 MesaDemos-6.3.zip
+</pre>
+
+
+<h2>December 9, 2004</h2>
+<p>
+Mesa 6.2.1 has been released.
+This is a stable release which just fixes bugs since the 6.2 release.
+</p>
+<pre>
+ Bug fixes:
+ - don't apply regular fog or color sum when using a fragment program
+ - glProgramEnvParameter4fARB always generated an error on
+ GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645)
+ - glVertexAttrib3svNV and glVertexAttrib3svARB were broken
+ - fixed width/height mix-up in glSeparableFilter2D()
+ - fixed regression in glCopyPixels + convolution
+ - glReadPixels from a clipped front color buffer didn't always work
+ - glTexImage didn't accept GL_RED/GREEN/BLUE as the format
+ - Attempting queries/accesses of VBO 0 weren't detected as errors
+ - paletted textures failed if the palette had fewer than 256 entries
+ Changes:
+ - fixed a bunch of compiler warnings found with gcc 3.4
+ - bug reports should to go bugzilla.freedesktop.org
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+80008a92f6e055d3bfdde2cf331ec3fa MesaLib-6.2.1.tar.gz
+f43228cd2bf70f583ef3275c1c545421 MesaLib-6.2.1.tar.bz2
+dec26cfd40116ad021020fea2d94f652 MesaLib-6.2.1.zip
+2c7af3c986a7571c8713c8bfee7e49e3 MesaDemos-6.2.1.tar.gz
+3cac74667b50bcbd4f67f594fb4224a2 MesaDemos-6.2.1.tar.bz2
+75b3edd12eb2b370caf05f29b99e508a MesaDemos-6.2.1.zip
+</pre>
+
+
+<h2>October 2, 2004</h2>
+<p>
+Mesa 6.2 has been released.
+This is a stable release which just fixes bugs since the 6.1 release.
+</p>
+<pre>
+ New:
+ - enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle)
+ - updated Doxygen support (Jose Fonseca)
+ Changes:
+ - some GGI driver updates (Christoph Egger, bug 1025977)
+ Bug fixes:
+ - Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features
+ - fixed a few compilation issues on IRIX
+ - fixed a matrix classification bug (reported by Wes Bethel)
+ - we weren't reseting the vertex/fragment program error state
+ before parsing (Dave Reveman)
+ - adjust texcoords for sampling texture rectangles (Dave Reveman)
+ - glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented
+ - repeated calls to glDeleteTexture(t) could lead to a crash
+ - fixed potential ref count bugs in VBOs and vertex/fragment programs
+ - spriteblast demo didn't handle window size changes correctly
+ - glTexSubImage didn't handle pixels=NULL correctly for PBOs
+ - fixed color index mode glDrawPixels bug (Karl Schultz)
+</pre>
+<p>
+The MD5 checksums are:
+</p>
+<pre>
+9e8f34b059272dbb8e1f2c968b33bbf0 MesaLib-6.2.tar.gz
+3d6a6362390b6a37d3cb2e615f3ac7db MesaLib-6.2.tar.bz2
+6cfd7895d28e695c0dbbed9469564091 MesaLib-6.2.zip
+3e06e33b0809f09855cb60883b8bdfef MesaDemos-6.2.tar.gz
+9d160009c3dfdb35fe7e4088c9ba8f85 MesaDemos-6.2.tar.bz2
+856f7ec947122eb3c8985ebc2f654dcd MesaDemos-6.2.zip
+</pre>
+
+
+<h2>August 18, 2004</h2>
+<p>
+Mesa 6.1 has been released.
+This is a new development release (version 6.2 will be a stabilization
+release).
+</p>
+<pre>
+ New:
+ - Revamped Makefile system
+ - glXUseRotatedXFont() utility (see xdemos/xuserotfont.c)
+ - internal driver interface changes related to texture object
+ allocation, vertex/fragment programs, BlendEquationSeparate, etc.
+ - option to walk triangle edges with double-precision floats
+ (Justin Novosad of Discreet) (see config.h file)
+ - support for AUX buffers in software GLX driver
+ - updated glext.h to version 24 and glxext.h to version 6
+ - new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars
+ - updated BeOS support (Philippe Houdoin)
+ Changes:
+ - fragment fog interpolation is perspective corrected now
+ - new glTexImage code, much cleaner, may be a bit faster
+ Bug fixes:
+ - glArrayElement in display lists didn't handle generic vertex attribs
+ - glFogCoord didn't always work properly
+ - ARB_fragment_program fog options didn't work
+ - frag prog TEX instruction no longer incorrectly divides s,t,r by q
+ - ARB frag prog TEX and TEXP instructions now use LOD=0
+ - glTexEnviv in display lists didn't work
+ - glRasterPos didn't do texgen or apply texture matrix
+ - GL_DOUBLE-valued vertex arrays were broken in some cases
+ - fixed texture rectangle edge/border sampling bugs
+ - sampling an incomplete texture in a fragment program would segfault
+ - glTexImage was missing a few error checks
+ - fixed some minor glGetTexParameter glitches
+ - GL_INTENSITY was mistakenly accepted as a <format> to glTexImage
+ - fragment program writes to RC/HC register were broken
+ - fixed a few glitches in GL_HP_occlusion_test extension
+ - glBeginQueryARB and glEndQueryARB didn't work inside display lists
+ - vertex program state references were broken
+ - fixed triangle color interpolation bug on AIX (Shane Blackett)
+ - fixed a number of minor memory leaks (bug #1002030)
+</pre>
+The MD5 checksums are:
+</p>
+<pre>
+c9284d295ebcd2e0486cc3cd54e5863c MesaLib-6.1.tar.gz
+5de1f53ec0709f60fc68fdfed57351f3 MesaLib-6.1.tar.bz2
+483e77cac4789a5d36c42f3c0136d6d8 MesaLib-6.1.zip
+8c46cfa6f9732acc6f6c25724aad0246 MesaDemos-6.1.tar.gz
+89bfe0f6c69b39fd0ebd9fff481a4e9b MesaDemos-6.1.tar.bz2
+161268531fcc6f0c5a056430ee97e0c1 MesaDemos-6.1.zip
+</pre>
+
+
+
+<h2>April 2, 2004</h2>
+
+<p>
+Mesa 6.0.1 has been released.
+This release basically just fixes bugs since the 6.0. release.
+</p>
+<pre>
+ New:
+ - upgraded glext.h to version 22
+ - new build targets (Dan Schikore)
+ - new linux-x86-opteron build target (Heath Feather)
+ Bug fixes:
+ - glBindProgramARB didn't update all necessary state
+ - fixed build problems on OpenBSD
+ - omit CVS directories from tarballs
+ - glGetTexImage(GL_COLOR_INDEX) was broken
+ - fixed an infinite loop in t&l module
+ - silenced some valgrind warnings about using unitialized memory
+ - fixed some compilation/link glitches on IRIX (Mike Stephens)
+ - glBindProgram wasn't getting compiled into display lists
+ - GLX_FBCONFIG_ID wasn't recognized in glXChooseFBConfig() (bug 888079)
+ - two-sided lighting and vertex program didn't work (bug 887330)
+ - stores to program parameter registers in vertex state programs
+ didn't work.
+ - fixed glOrtho bug found with gcc 3.2.2 (RH9)
+ - glXCreateWindow() wasn't fully implemented (bug 890894)
+ - generic vertex attribute arrays didn't work in display lists
+ - vertex buffer objects' default usage and access fields were wrong
+ - glDrawArrays with start!=0 was broken
+ - fragment program PK2H, UP2H, UP4B and UP4UB instructions were broken
+ - linux-osmesa16-static config didn't work
+ - fixed a few color index rendering problems (bug 910687)
+ - glInterleavedArrays didn't respect GL_CLIENT_ACTIVE_TEXTURE
+ - OSMesa RGB and BGR modes were broken
+ - glProgramStringARB mistakenly required a null-terminated string
+ - fragment program XPD instruction was incorrect
+ - glGetMaterial() didn't work reliably
+</pre>
+The MD5 checksums are:
+</p>
+<pre>
+011be0e79666c7a6eb9693fbf9348653 MesaLib-6.0.1.tar.gz
+b7f14088c5c2f14490d2739a91102112 MesaLib-6.0.1.tar.bz2
+bf0510cf0a2b87d64cdd317eca3f1db1 MesaLib-6.0.1.zip
+b7b648599e0aaee1c4ffc554a2a9139e MesaDemos-6.0.1.tar.gz
+dd6aadfd9ca8e1cfa90c6ee492bc6f43 MesaDemos-6.0.1.tar.bz2
+eff71d59c211825e949199852f5a2316 MesaDemos-6.0.1.zip
+</pre>
+
+
+
+<h2>January 16, 2004</h2>
+
+<p>
+Mesa 6.0 has been released. This is a stabilization of the 5.1 release
+and primarily just incorporates bug fixes.
+</p>
+<pre>
+ New:
+ - full OpenGL 1.5 support
+ - updated GL/glext.h file to version 21
+ Changes:
+ - changed max framebuffer size to 4Kx4K (MAX_WIDTH/HEIGHT in config.h)
+ Bug fixes:
+ - fixed bug in UNCLAMPED_FLOAT_TO_UBYTE macro; solves a color
+ clamping issue
+ - updated suno5-gcc configs
+ - glColor3 functions sometimes resulted in undefined alpha values
+ - fixed FP divide by zero error seen on VMS with xlockmore, others
+ - fixed vertex/fragment program debug problem (bug 873011)
+ - building on AIX with gcc works now
+ - glDeleteProgramsARB failed for ARB fragment programs (bug 876160)
+ - glDrawRangeElements tried to modify potentially read-only storage
+ - updated files for building on Windows
+</pre>
+
+
+
+<h2>December 28, 2003</h2>
+
+<p>
+The Mesa CVS server has been moved to <a href="http://www.freedesktop.org"
+target="_parent">
+freedesktop.org</a> because of problems with SourceForge's anonymous
+CVS service.
+</p>
+
+<p>Please see the <a href="cvs_access.html">CVS access page</a> for details.
+</p>
+
+
+<h2>December 17, 2003</h2>
+
+<p>
+Mesa 5.1 has been released. This is a new development release.
+Mesa 6.0 will be the next stable release and will support all
+OpenGL 1.5 features.
+</p>
+<pre>
+ New features:
+ - reorganized directory tree
+ - GL_ARB_vertex/fragment_program extensions (Michal Krol & Karl Rasche)
+ - 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
+ - new spriteblast.c demo of GL_ARB_point_sprite
+ - faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1)
+ - faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1)
+ 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
+ - fixed some texgen bugs reported by Daniel Borca
+ - fixed wglMakeCurrent(NULL, NULL) bug (#835861)
+ - fixed glTexSubImage3D z-offset bug (Cedric Gautier)
+ - fixed RGBA blend enable bug (Ville Syrjala)
+ - glAccum is supposed to be a no-op in selection/feedback mode
+ - fixed texgen bug #597589 (John Popplewell)
+ 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
+ - disable SPARC asm code on Linux (bug 852204)
+</pre>
+
+The MD5 checksums are:
+</p>
+<pre>
+78f452f6c55478471a744f07147612b5 MesaLib-5.1.tar.gz
+67b3b8d3f7f4c8c44904551b851d01af MesaLib-5.1.tar.bz2
+6dd19ffa750ec7f634e370a987505c9d MesaLib-5.1.zip
+e0214d4ebb22409dfa9262f2b52fd828 MesaDemos-5.1.tar.gz
+066c9aff4fd924405de1ae9bad5ec9a7 MesaDemos-5.1.tar.bz2
+d2b5ba32b53e0ad0576c637a4cc1fb41 MesaDemos-5.1.zip
+</pre>
+
+
+<H2>November 12, 2003</H2>
+
+<p>
+New Mesa 5.0.2 tarballs have been uploaded to SourceForge which fix a
+number of automake/libtool problems.
+</p>
+<p>
+The new MD5 checksums are:
+</p>
+<pre>
+a9dcf3ff9ad1b7d6ce73a0df7cff8b5b MesaLib-5.0.2.tar.gz
+7b4bf9261657c2fca03796d4955e6f50 MesaLib-5.0.2.tar.bz2
+79c141bddcbad557647535d02194f346 MesaLib-5.0.2.zip
+952d9dc823dd818981d1a648d7b2668a MesaDemos-5.0.2.tar.gz
+b81fafff90995025d2f25ea02b786642 MesaDemos-5.0.2.tar.bz2
+a21be975589e8a2d1871b6bb7874fffa MesaDemos-5.0.2.zip
+</pre>
+
+
+
+<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>
+
+
+
+<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.27 2006/03/31 23:10:21 brianp Exp $
+</body>
+</html>
diff --git a/docs/osmesa.html b/docs/osmesa.html
new file mode 100644
index 00000000000..6feb8df52a0
--- /dev/null
+++ b/docs/osmesa.html
@@ -0,0 +1,77 @@
+<HTML>
+
+<TITLE>Off-screen Rendering</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
+ make realclean
+ make linux-osmesa16
+</pre>
+
+ For 32-bit channels:
+<pre>
+ make realclean
+ make linux-osmesa32
+</pre>
+
+<p>
+You'll wind up with a library named libOSMesa16.so or libOSMesa32.so.
+</p>
+
+<p>
+If you need to compile on a non-Linux platform, copy Mesa/configs/linux-osmesa16
+to a new config file and edit it as needed. Then, add the new config name to
+the top-level Makefile. Send a patch to the Mesa developers too, if you're
+inclined.
+</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>
diff --git a/docs/pbuffers.html b/docs/pbuffers.html
new file mode 100644
index 00000000000..25991015558
--- /dev/null
+++ b/docs/pbuffers.html
@@ -0,0 +1,54 @@
+<HTML>
+
+<TITLE>PBuffer Rendering</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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.
+PBuffer rendering may also be hardware accelerated.
+</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>
diff --git a/docs/perf.html b/docs/perf.html
new file mode 100644
index 00000000000..ee9c4b117de
--- /dev/null
+++ b/docs/perf.html
@@ -0,0 +1,68 @@
+<HTML>
+
+<TITLE>Performance Tips</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
diff --git a/docs/precompiled.html b/docs/precompiled.html
new file mode 100644
index 00000000000..166d33d8281
--- /dev/null
+++ b/docs/precompiled.html
@@ -0,0 +1,26 @@
+<HTML>
+
+<TITLE>Precompiled libraries</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Precompiled Libraries</H1>
+
+<p>
+In general, precompiled libraries are not available.
+However, people occasionally prepare packages of precompiled libraries
+for some systems.
+</p>
+
+<H2>Mesa-6.0 for Solaris</H2>
+
+<p>
+Steve Christensen has submitted precompiled Mesa-6.0 libraries for
+Solaris at <a href="http://sunfreeware.com/" target="_parent">
+sunfreeware.com</a>.
+</p>
+
+</BODY>
+</HTML>
diff --git a/docs/relnotes.html b/docs/relnotes.html
new file mode 100644
index 00000000000..fc5009945de
--- /dev/null
+++ b/docs/relnotes.html
@@ -0,0 +1,47 @@
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Release Notes</H1>
+
+<p>
+The release notes summarize what's new or changed in each Mesa release.
+</p>
+
+<UL>
+<LI><A HREF="RELNOTES-6.5">RELNOTES-6.5</A>
+<LI><A HREF="RELNOTES-6.4.2">RELNOTES-6.4.2</A>
+<LI><A HREF="RELNOTES-6.4.1">RELNOTES-6.4.1</A>
+<LI><A HREF="RELNOTES-6.4">RELNOTES-6.4</A>
+<LI><A HREF="RELNOTES-6.3.2">RELNOTES-6.3.2</A>
+<LI><A HREF="RELNOTES-6.3">RELNOTES-6.3</A>
+<LI><A HREF="RELNOTES-6.2.1">RELNOTES-6.2.1</A>
+<LI><A HREF="RELNOTES-6.2">RELNOTES-6.2</A>
+<LI><A HREF="RELNOTES-6.1">RELNOTES-6.1</A>
+<LI><A HREF="RELNOTES-6.0">RELNOTES-6.0</A>
+<LI><A HREF="RELNOTES-5.1">RELNOTES-5.1</A>
+<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>
diff --git a/docs/science.html b/docs/science.html
new file mode 100644
index 00000000000..f55cf31241e
--- /dev/null
+++ b/docs/science.html
@@ -0,0 +1,72 @@
+<HTML>
+
+<TITLE>Science and Technical</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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://orsa.sourceforge.net/" target="_parent">ORSA</a> - An interactive tool for Celestial Mechanics
+ </li>
+ <li><a href="http://www.paraview.org/" target="_parent">ParaView</a> - Scientific visualization package
+ </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> \ No newline at end of file
diff --git a/docs/sourcedocs.html b/docs/sourcedocs.html
new file mode 100644
index 00000000000..a5248d988d7
--- /dev/null
+++ b/docs/sourcedocs.html
@@ -0,0 +1,26 @@
+<HTML>
+
+<TITLE>Source Code Documentation</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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="../doxygen/main/index.html" target="_parent">here</A>
+</P>
+
+</BODY>
+</HTML>
diff --git a/docs/subset-A.html b/docs/subset-A.html
new file mode 100644
index 00000000000..dac66a61bae
--- /dev/null
+++ b/docs/subset-A.html
@@ -0,0 +1,3579 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Mini GLX Specification</title>
+</head>
+<body>
+<span style="font-style: italic;"></span><span
+ style="font-weight: bold;"></span>
+<h1>
+<center>Mesa Subset Specification</center>
+</h1>
+<h2>
+<center>
+<h3>Tungsten Graphics, Inc.</h3>
+<h3>February 26, 2003<br>
+</h3>
+</center>
+</h2>
+<p> Copyright &copy; 2002-2003 by <a
+ href="http://www.tungstengraphics.com/">Tungsten Graphics, Inc.</a>,
+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>
+</p>
+<p> OpenGL is a trademark of <a href="http://www.sgi.com">Silicon
+Graphics, Inc.</a>.</p>
+<h1>1. Introduction</h1>
+This document describes a subset of the Mesa implemented by Tungsten
+Graphics, Inc. for embedded devices. &nbsp;Prior to reading this
+document the reader should be familiar with the OpenGL 1.2.1
+specification dated April 1, 1999 (available from <a
+ href="http://www.opengl.org/developers/documentation/specs.html">http://www.opengl.org/developers/documentation/specs.html</a>.)
+&nbsp;Experience with OpenGL programming is highly advisable.<a
+ href="http://www.opengl.org/developers/documentation/specs.html"><br>
+</a><br>
+Tungsten Graphics, Inc. is working with industry standards
+organizations +in an attempt to standardize this Mesa subset and any
+other possible subsets +as a result of this work. <br>
+<br>
+Appendix A contains a list of issues of which some may not be resolved.<br>
+<br>
+To summarize, the following major features of Mesa are omitted from the
+subset:<br>
+<ul>
+ <li>Vertex arrays</li>
+ <li>Texture coordinate generation</li>
+ <li>Lighting</li>
+ <li>Point size</li>
+ <li>Polygon stipple</li>
+ <li>DrawPixels, CopyPixels, PixelZoom</li>
+ <li>1-D and 3-D textures</li>
+ <li>CopyTex[Sub]Image</li>
+ <li>Fog</li>
+ <li>Depth test</li>
+ <li>Color Index mode</li>
+ <li>Accumulation buffer</li>
+ <li>Feedback mode</li>
+ <li>Evaluators</li>
+ <li>Push/Pop attributes</li>
+ <li>Display lists<br>
+ </li>
+</ul>
+<p>Further reductions are made at a lower level of detail.<br>
+</p>
+<p>Mesa function names are printed in <span style="font-weight: bold;">bold
+face</span>. &nbsp;Function parameters are printed in <span
+ style="font-style: italic;">italics</span>.<br>
+</p>
+<p>The Tungsten Graphics, Inc. Mesa subset library is hereafter
+referred to as <span style="font-style: italic;">the subset.</span><br>
+<br>
+</p>
+<h1>2. Primitive Specification</h1>
+<h2>2.1 glBegin, glEnd and glVertex Commands</h2>
+The basic rendering primitives are points, lines and triangles.
+&nbsp;Quadrilaterals and polygons are composed of triangles.
+&nbsp;Primitives are drawn with the <span style="font-weight: bold;">glBegin</span>
+and <span style="font-weight: bold;">glEnd</span> commands and a subset
+of the <span style="font-weight: bold;">glVertex</span> commands:<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glBegin</span>(GLenum<span
+ style="font-style: italic;">mode</span>)<br>
+void <span style="font-weight: bold;">glEnd</span>(void)<br>
+<br>
+void <span style="font-weight: bold;">glVertex2f</span>(GLfloat <span
+ style="font-style: italic;">x</span>, GLfloat <span
+ style="font-style: italic;">y</span>)<br>
+void <span style="font-weight: bold;">glVertex2fv</span>(const GLfloat
+*<span style="font-style: italic;">v</span>)<br>
+void <span style="font-weight: bold;">glVertex3f</span>(GLfloat <span
+ style="font-style: italic;">x</span>, GLfloat <span
+ style="font-style: italic;">y</span>, GLfloat <span
+ style="font-style: italic;">z</span>)<br>
+void <span style="font-weight: bold;">glVertex3fv</span>(const GLfloat
+*<span style="font-style: italic;">v</span>)<br>
+</div>
+<br>
+The <span style="font-style: italic;">mode</span> parameter to <span
+ style="font-weight: bold;">glBegin</span> may be one of the following<br>
+<br>
+<div style="margin-left: 40px;">GL_POINTS - a series of individual
+points<br>
+GL_LINES - a series of disjoint line segments<br>
+GL_LINE_STRIP - series of connected line segments<br>
+GL_LINE_LOOP - a closed loop of line segments<br>
+GL_TRIANGLES - a series of individual triangles<br>
+GL_TRIANGLE_STRIP - a connected strip of triangles<br>
+GL_TRIANGLE_FAN - a sequence of triangles all sharing a common vertex<br>
+GL_QUADS - a sequence of individual quadrilaterals<br>
+GL_QUAD_STRIP - a connected strip of quadrilaterals<br>
+GL_POLYGON - a closed, convex polygon<br>
+<br>
+</div>
+<br>
+The <span style="font-weight: bold;">glVertex</span> commands take two
+or three floating point coordinates, or a pointer to an array of two or
+three floating point coordinates. &nbsp;Vertices are actually 4-element
+homogeneous coordinates. &nbsp;The fourth component, unspecified by the
+subset's <span style="font-weight: bold;">glVertex</span> commands, is
+one.<br>
+<br>
+<span style="font-weight: bold;"></span>
+<h2>2.2 Other Per-vertex Commands<br>
+</h2>
+The <span style="font-weight: bold;">glColor</span> and <span
+ style="font-weight: bold;">glTexCoord</span> commands may be used to
+specify colors and texture coordinates for each vertex:<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glColor3f</span>(GLfloat<span
+ style="font-style: italic;">red</span>, GLfloat <span
+ style="font-style: italic;">green</span>, GLfloat <span
+ style="font-style: italic;">blue</span>)<br>
+void <span style="font-weight: bold;">glColor3fv</span>(const GLfloat *<span
+ style="font-style: italic;">rgb</span>)<br>
+void <span style="font-weight: bold;">glColor4f</span>(GLfloat <span
+ style="font-style: italic;">red,</span> GLfloat <span
+ style="font-style: italic;">green,</span> GLfloat <span
+ style="font-style: italic;">blue,</span> GLfloat <span
+ style="font-style: italic;">alpha</span>)<br>
+void <span style="font-weight: bold;">glColor4fv</span>(const GLfloat *<span
+ style="font-style: italic;">rgba</span>)<br>
+void <span style="font-weight: bold;">glTexCoord2f</span>(GLfloat <span
+ style="font-style: italic;">s</span>, GLfloat<span
+ style="font-style: italic;"> t</span>)<br>
+void <span style="font-weight: bold;">glTexCoord2fv</span>(const
+GLfloat *<span style="font-style: italic;">c</span>)<br>
+<br>
+</div>
+The <span style="font-weight: bold;">glColor</span> commands specify
+the color and optionally, the alpha value, for subsequent vertices.
+&nbsp;For the <span style="font-weight: bold;">glColor3</span> commands,
+alpha is set to one.<br>
+<br>
+The <span style="font-weight: bold;">glTexCoord2</span> commands
+specify the texture coordinate for subsequent vertices. &nbsp;Texture
+coordinates are actually four-component coordinates: (s, t, r, q).
+&nbsp;The <span style="font-weight: bold;">glTexCoord2</span> commands
+set s and t explicitly. &nbsp;The r and q components are zero and one,
+respectively.<br>
+<br>
+<span style="font-weight: bold;"></span>Only <span
+ style="font-weight: bold;">glVertex, glColor</span> and <span
+ style="font-weight: bold;">glTexCoord</span> commands are allowed
+between <span style="font-weight: bold;">glBegin</span> and <span
+ style="font-weight: bold;">glEnd.</span> &nbsp;Calling any other
+command between <span style="font-weight: bold;">glBegin</span> and <span
+ style="font-weight: bold;">glEnd</span> will result in the error
+GL_INVALID_OPERATION.<br>
+<br>
+<h2>2.3 Unsupported Commands</h2>
+None of the following commands related to primitive specification are
+supported by the subset:<br>
+<br>
+<div style="margin-left: 40px;">Per-Vertex commands:<br>
+</div>
+<div style="margin-left: 40px;">
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glVertex2d,
+glVertex2i, glVertex2s, glVertex3d, glVertex3i, glVertex3s, glVertex4d,
+glVertex4i, glVertex4s, glVertex2dv, glVertex2iv, glVertex2sv,
+glVertex3dv, glVertex3iv, glVertex3sv, glVertex4dv, glVertex4iv,
+glVertex4sv,<br>
+glNormal3b, glNormal3d, glNormal3f, glNormal3i, glNormal3s, </span><span
+ style="font-weight: bold;">glNormal3bv, glNormal3dv, glNormal3fv,
+glNormal3iv, glNormal3sv,<br>
+glIndexd, glIndexf, glIndexi, glIndexs, glIndexub, glIndexdv,
+glIndexfv, glIndexiv, glIndexsv, glIndexubv,<br>
+glColor3b, glColor3d, glColor3i, glColor3s, glColor3ub, glColor3ui,
+glColor3us, </span><span style="font-weight: bold;">glColor3bv,
+glColor3dv, glColor3iv, glColor3sv, glColor3ubv, glColor3uiv,
+glColor3usv,</span><span style="font-weight: bold;"> lColor4b,
+glColor4d, glColor4i, glColor4s, glColor4ub, glColor4ui, glColor4us, </span><span
+ style="font-weight: bold;">glColor4bv, glColor4dv, glColor4iv,
+glColor4sv, glColor4ubv, glColor4uiv, glColor4usv,<br>
+</span><span style="font-weight: bold;">glTexCoord1d, glTexCoord1f,
+glTexCoord1i, glTexCoord1s, glTexCoord2d, glTexCoord2i, glTexCoord2s,
+glTexCoord3d, glTexCoord3f, glTexCoord3i, glTexCoord3s, glTexCoord4d,
+glTexCoord4f, glTexCoord4i, glTexCoord4s, glTexCoord1dv, glTexCoord1fv,
+glTexCoord1iv, glTexCoord1sv, glTexCoord2dv, glTexCoord2iv,
+glTexCoord2sv, glTexCoord3dv, glTexCoord3fv, glTexCoord3iv,
+glTexCoord3sv, glTexCoord4dv, glTexCoord4fv, glTexCoord4iv,
+glTexCoord4sv,<br>
+glEdgeFlag, glEdgeFlagv</span><br style="font-weight: bold;">
+<br>
+</div>
+Vertex array commands:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glVertexPointer,
+glColorPointer, glIndexPointer, glTexCoordPointer, glEdgeFlagPointer,
+glNormalPointer, glInterleavedArrays, glArrayElement, glDrawArrays,
+glDrawElements, glDrawRangeElements, glEnableClientState,
+glDisableClientState</span><br>
+</div>
+</div>
+<div style="margin-left: 40px;"><br>
+Rectangle commands:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glRects,
+glRecti, glRectf, glRectd, glRectsv, glRectiv, glRectfv, glRectdv,<br>
+<br>
+</span></div>
+</div>
+<div style="margin-left: 40px;">Lighting commands:<br>
+</div>
+<div style="margin-left: 80px;"><span style="font-weight: bold;">glMaterialf,
+glMateriali, glMaterialfv, glMaterialiv<br>
+</span><br>
+</div>
+<div style="margin-left: 40px;"> Evaluator commands:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glEvalCoord1d,
+glEvalCoord1f, glEvalCoord1dv, glEvalCoord1fv,&nbsp;</span><span
+ style="font-weight: bold;">glEvalCoord2d, glEvalCoord2f,
+glEvalCoord2dv, glEvalCoord2fv,<br>
+</span><span style="font-weight: bold;">glEvalPoint1, glEvalPoint2</span><br>
+<br>
+</div>
+</div>
+<h1>3. Coordinate Transformation</h1>
+<h2>3.1 Vertex Transformation</h2>
+Vertex coordinates are transformed by the current modelview and
+projection matrices then mapped to window coordinates as specified by
+the viewport. &nbsp;The following coordinate transformation commands are
+supported by the subset<br>
+<br>
+<div style="margin-left: 40px; font-weight: bold;">glMatrixMode<span
+ style="font-weight: normal;">(GLenum <span style="font-style: italic;">mode</span>)</span><br>
+glLoadIdentity<span style="font-weight: normal;">(void)</span><br>
+glPushMatrix<span style="font-weight: normal;">(void)</span><br>
+glPopMatrix<span style="font-weight: normal;">(void)</span><br>
+glLoadMatrixf<span style="font-weight: normal;">(const GLfloat *<span
+ style="font-style: italic;">m</span>)</span><br>
+glMultMatrixf<span style="font-weight: normal;">(const GLfloat *<span
+ style="font-style: italic;">m</span>)</span><br>
+glRotatef<span style="font-weight: normal;">(GLfloat <span
+ style="font-style: italic;">angle</span>, GLfloat <span
+ style="font-style: italic;">x</span>, GLfloat <span
+ style="font-style: italic;">y</span>, GLfloat <span
+ style="font-style: italic;">z</span>)</span><br>
+glTranslatef<span style="font-weight: normal;">(GLfloat <span
+ style="font-style: italic;">x</span>, GLfloat <span
+ style="font-style: italic;">y</span>, GLfloat <span
+ style="font-style: italic;">z</span>)</span><br>
+glScalef<span style="font-weight: normal;">(GLfloat <span
+ style="font-style: italic;">x</span>, GLfloat <span
+ style="font-style: italic;">y</span>, GLfloat <span
+ style="font-style: italic;">z</span>)<br>
+<span style="font-weight: bold;">glFrustum(</span>GLdouble <span
+ style="font-style: italic;">left,</span> GLdouble <span
+ style="font-style: italic;">right,</span> GLdouble <span
+ style="font-style: italic;">bottom,</span> GLdouble <span
+ style="font-style: italic;">top,</span> GLdouble <span
+ style="font-style: italic;">near,</span> GLdouble <span
+ style="font-style: italic;">far</span>)</span><br>
+<span style="font-weight: normal;"><span style="font-weight: bold;">glOrtho(</span>GLdouble<span
+ style="font-style: italic;"> left,</span> GLdouble <span
+ style="font-style: italic;">right,</span> GLdouble <span
+ style="font-style: italic;">bottom,</span> GLdouble <span
+ style="font-style: italic;">top,</span> GLdouble <span
+ style="font-style: italic;">near,</span> GLdouble <span
+ style="font-style: italic;">far</span>)</span><br>
+glViewport<span style="font-weight: normal;">(GLint <span
+ style="font-style: italic;">x</span>, GLint <span
+ style="font-style: italic;">y</span>, GLsize <span
+ style="font-style: italic;">width,</span> GLsizei <span
+ style="font-style: italic;">height</span>)</span><br>
+</div>
+<br>
+The <span style="font-weight: bold;">glMatrixMode</span> command
+specifies the <span style="font-style: italic;">current matrix.</span>
+&nbsp;The mode parameter may be GL_MODELVIEW or GL_PROJECTION to specify
+the modelview matrix or projection matrix. &nbsp;Subsequent matrix
+commands will effect the current matrix. &nbsp;Also associated with the
+modelview and projection matrices are a modelview matrix stack and
+projection matrix stack.<br>
+<br>
+The <span style="font-weight: bold;">glLoadIdentity</span> command
+replaces the current matrix with the identity matrix. &nbsp;The matrix
+elements are specified in column-major order.<br>
+<br>
+The <span style="font-weight: bold;">glPushMatrix</span> command pushes
+a copy of the current matrix onto either the modelview matrix stack or
+the projection matrix stack. &nbsp;The <span style="font-weight: bold;">glPopMatrix</span>
+command replaces the current matrix with a copy of the top matrix off
+the modelview matrix stack or projection matrix stack, the pops the
+stack. &nbsp;Matrix stacks are useful for traversing and rendering
+hierarchical models.<br>
+<br>
+The <span style="font-weight: bold;">glMultMatrixf</span> command
+post-multiplies the current matrix by the specified matrix. &nbsp;The
+matrix elements are specified in column-major order.<br>
+<br>
+The <span style="font-weight: bold;">glRotatef</span> command
+post-multiplies the current matrix by a rotation matrix defined by the
+angle and rotation axis defined by x, y and z.<br>
+<br>
+The <span style="font-weight: bold;">glTranslatef</span> command
+post-multiplies the current matrix by a translation matrix defined by
+the <span style="font-style: italic;">x</span>, <span
+ style="font-style: italic;">y</span> and <span
+ style="font-style: italic;">z</span> translation parameters.<br>
+<span style="font-weight: bold;"></span><br>
+The <span style="font-weight: bold;">glScalef</span> command
+post-multiplies the current matrix by a scaling matrix defined by the <span
+ style="font-style: italic;">x</span>, <span
+ style="font-style: italic;">y</span> and <span
+ style="font-style: italic;">z</span> scale factors.<br>
+<span style="font-weight: bold;"></span><br>
+The <span style="font-weight: bold;">glFrustum</span> command
+post-multiplies the current matrix by a perspective projection matrix.
+&nbsp;The <span style="font-style: italic;">near</span> and <span
+ style="font-style: italic;">far</span> values specify the position of
+the hither and yon Z-axis clipping planes. &nbsp;The <span
+ style="font-style: italic;">left, right, bottom</span> and <span
+ style="font-style: italic;">top</span> parameters are the X and Y
+extents at the near clipping plane. &nbsp;<span
+ style="font-weight: bold;">glFrustum</span> is normally used to modify
+the projection matrix.<br>
+<br>
+The <span style="font-weight: bold;">glOrtho</span> command
+post-multiplies the current matrix by an orthographic projection matrix.
+&nbsp;The <span style="font-style: italic;">near</span> and <span
+ style="font-style: italic;">far</span> values specify the position of
+the hither and yon Z-axis clipping planes. &nbsp;The <span
+ style="font-style: italic;">left, right, bottom</span> and <span
+ style="font-style: italic;">top</span> parameters specify the X and
+Y-axis clipping planes. &nbsp;<span style="font-weight: bold;">glOrtho</span>
+is normally used to modify the projection matrix.<br>
+<br>
+The <span style="font-weight: bold;">glViewport</span> command
+specifies the mapping of coordinates from normalized device coordinates
+to window coordinates. &nbsp;The <span style="font-style: italic;">x</span>
+and <span style="font-style: italic;">y</span> parameters specify the
+viewport's lower-left corner in the window and the <span
+ style="font-style: italic;">width</span> and <span
+ style="font-style: italic;">height</span> parameters specify the size
+of the viewport. &nbsp;<span style="font-weight: bold;">glViewport</span>
+does not effect the current matrix.<br>
+<br>
+A coordinate transformed to window coordinates is hereafter known as (x<sub>w</sub>,
+y<sub>w</sub>, z<sub>w</sub>).<br>
+<br>
+<h2>3.2 Clipping</h2>
+View-volume clipping automatically discards or trims primitives which
+lie completely or partially outside of the view volume specified by <span
+ style="font-weight: bold;">glFrustum</span> and <span
+ style="font-weight: bold;">glOrtho</span>. &nbsp;Note that the <span
+ style="font-weight: bold;">glViewport</span> command does not define a
+clipping region.<br>
+<br>
+Clipping occurs in <span style="font-style: italic;">clip coordinate
+space - </span>the coordinates produced after applying the projection
+matrix.<br>
+<br>
+<h2>3.3 Current Raster Position</h2>
+The current raster position specifies the location for drawing images
+with <span style="font-weight: bold;">glBitmap.</span> &nbsp;The current
+raster position is set with the commands:<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glRasterPos2f</span>(GLfloat<span
+ style="font-style: italic;">x</span>, GLfloat <span
+ style="font-style: italic;">y</span>)<br>
+void <span style="font-weight: bold;">glRasterPos2fv</span>(const
+GLfloat *<span style="font-style: italic;">v</span>)<br>
+void <span style="font-weight: bold;">glRasterPos2i</span>(GLint <span
+ style="font-style: italic;">x</span>, GLint <span
+ style="font-style: italic;">y</span>)<br>
+void <span style="font-weight: bold;">glRasterPos2iv</span>(const
+GLint *<span style="font-style: italic;">v</span>)<br>
+</div>
+<br>
+<span style="font-weight: bold;">glRasterPos</span> specifies a
+4-component coordinate (x, y, 0, 1). &nbsp;The coordinate is processed
+like a vertex; it is transformed by the modelview matrix, the projection
+matrix and mapped to the viewport. &nbsp;The resulting window coordinate
+is stored as the current raster position. &nbsp;The coordinate is
+clipped-tested against the frustum like a vertex. &nbsp;If the
+coordinate is clipped, then the current raster position becomes invalid
+and subsequent <span style="font-weight: bold;">glBitmap</span> commands
+have no effect.<br>
+<br>
+<span style="font-weight: bold;">glRasterPos</span> also updates the
+current raster color and current raster texture coordinates. &nbsp;The
+current raster color is updated (copied) from the current color (as
+specified by <span style="font-weight: bold;">glColor</span>).
+&nbsp;The current raster texture coordinate is updated (copied) from the
+current texture coordinate (as specified by <span
+ style="font-weight: bold;">glTexCoord</span>).<br>
+<br>
+<h2>3.4 Unsupported Commands</h2>
+The following commands related to vertex transformation are not
+supported by the subset:<br>
+<br>
+<div style="margin-left: 40px;">User-defined clip plane commands:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glClipPlane</span><br>
+</div>
+<span style="font-weight: bold;"></span></div>
+<br>
+<div style="margin-left: 40px;">Lighting and material commands:</div>
+<div style="margin-left: 80px;"><span style="font-weight: bold;">glLightModeli,
+glLightModelf,&nbsp;</span><span style="font-weight: bold;">glLightModeliv,
+glLightModelfv,</span><span style="font-weight: bold;"> glLightf,
+glLighti, glLightfv, glLightiv, glColorMaterial</span><br>
+</div>
+<br>
+<div style="margin-left: 40px;">Automatic texture coordinate generation
+commands:<br>
+</div>
+<div style="margin-left: 40px;">
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glTexGend,
+glTexGenf, glTexGeni, </span><span style="font-weight: bold;">glTexGendv,
+glTexGenfv, glTexGeniv, </span><br>
+<br style="font-weight: bold;">
+</div>
+Double-valued commands:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glLoadMatrixd,
+glMultMatrixd, glRotated, glTranslated, glScaled</span><br
+ style="font-weight: bold;">
+</div>
+<br>
+Depth Range command:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glDepthRange</span>
+(the near value is always 0.0 and the far value is always 1.0)<br>
+</div>
+<br>
+Extra RasterPos commands:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glRasterPos2d,
+glRasterPos2s, glRasterPos3d, glRasterPos3f, glRasterPos3i,
+glRasterPos3s, glRasterPos4d, glRasterPos4f, glRasterPos4i,
+glRasterPos4s, glRasterPos2dv, glRasterPos2sv, glRasterPos3dv,
+glRasterPos3fv, glRasterPos3iv, glRasterPos3sv, glRasterPos4dv,
+glRasterPos4fv, glRasterPos4iv, glRasterPos4sv</span><br>
+</div>
+<br>
+<br>
+</div>
+<h1>4. Rasterization</h1>
+This section describes the commands and options for drawing points,
+lines, triangles and bitmaps. &nbsp;<span style="font-style: italic;">Rasterization</span>
+is the term for the process which produces fragments from the geometric
+description of a primitive (a point, line, polygon or bitmap). &nbsp;For
+example, given the two coordinates for the end-points of a line segment,
+rasterization determines which pixels in the frame buffer are modified
+to <span style="font-style: italic;">draw</span> the line. &nbsp;A
+fragment is a tuple which consists of a window coordinate, colors and
+texture coordinates. &nbsp;The fragments produced by rasterization are
+subsequently processed by the per-fragment operations described later.<br>
+<br>
+<h2>4.1 Point Rasterization</h2>
+Points are rendered with the command sequence <span
+ style="font-weight: bold;">glBegin</span>(GL_POINTS), <span
+ style="font-weight: bold;">glVertex</span>, ... <span
+ style="font-weight: bold;">glEnd</span>. &nbsp;The window coordinate (x<sub>w</sub>,
+y<sub>w</sub>, z<sub>w</sub>) is truncated to rasterize the point.
+&nbsp;The truncated coordinate with its associated color and texture
+coordinate is sent as a single fragment to the per-fragment processing
+stages.<br>
+<br>
+The <span style="font-weight: bold;">glPointSize</span> command is not
+supported; only 1-pixel points are supported.<br>
+<br>
+Point smoothing (antialiasing) is also not supported.<br>
+<br>
+<h2>4.2 Line Rasterization</h2>
+Lines are rendered with the command sequence <span
+ style="font-weight: bold;">glBegin</span>(<span
+ style="font-style: italic;">mode</span>), <span
+ style="font-weight: bold;">glVertex</span>, <span
+ style="font-weight: bold;">glVertex</span>, ... <span
+ style="font-weight: bold;">glEnd</span> where <span
+ style="font-style: italic;">mode</span> is one of GL_LINES,
+GL_LINE_STRIP or GL_LINE_LOOP. &nbsp;Lines are rasterized as described
+in the OpenGL specification. &nbsp;Note that OpenGL specifies the <span
+ style="font-style: italic;">half-open</span> convention for drawing
+lines: the last fragment in a line segment is omitted so that endpoint
+pixels shared by two line segments will only be drawn once instead of
+twice.<br>
+<br>
+<h3>4.2.1 Line Width</h3>
+The width of lines can be controlled by<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glLineWidth</span>(GLfloat<span
+ style="font-style: italic;">width</span>)<br>
+</div>
+<br>
+where <span style="font-style: italic;">width</span> is the line width
+in pixels. &nbsp;The width defaults to 1.0. &nbsp;Attempting to set the
+width to a value less than or equal to zero will raise the error
+GL_INVALID_VALUE.<br>
+<br>
+<h3>4.2.2 Line Stipple<br>
+</h3>
+Lines may be stippled (i.e. dashed) with the command<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glLineStipple</span>(GLint<span
+ style="font-style: italic;">factor</span>, GLushort <span
+ style="font-style: italic;">pattern</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">pattern</span> describes an on/off
+pattern for the fragments produced by rasterization and <span
+ style="font-style: italic;">factor</span> specifies how many subsequent
+fragments are kept or culled for each pattern bit. &nbsp;Line stippling
+can be enabled or disabled by the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_LINE_STIPPLE) and <span
+ style="font-weight: bold;">glDisable</span>(GL_LINE_STIPPLE).<br>
+<br>
+<h3>4.2.3 Line Antialiasing</h3>
+Lines may be antialiased. &nbsp;For antialiased lines, each fragment
+produced by rasterization is assigned a <span
+ style="font-style: italic;">coverage value</span> which describes how
+much of the fragment's area is considered to be <span
+ style="font-style: italic;">inside</span> the line. &nbsp;Later, the
+alpha value of each fragment is multiplied by the coverage value.
+&nbsp;By blending the fragments into the frame buffer, the edges of
+lines appear smoothed.<br>
+<br>
+Line antialiasing can be enabled or disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_LINE_SMOOTH) and <span
+ style="font-weight: bold;">glDisable</span>(GL_LINE_SMOOTH).<br>
+<br>
+<h2>4.3 Polygon Rasterization</h2>
+Polygons, quadrilaterals and triangles share the same polygon
+rasterization options. <br>
+<br>
+Triangles are rendered by the command sequence <span
+ style="font-weight: bold;">glBegin</span><span
+ style="font-style: italic;"><span style="font-style: italic;">(mode</span></span>),<span
+ style="font-weight: bold;">glVertex</span>, <span
+ style="font-weight: bold;">glVertex</span>, ... <span
+ style="font-weight: bold;">glEnd</span> where <span
+ style="font-style: italic;">mode</span> may be one of GL_TRIANGLES,
+GL_TRIANGLE_STRIP or GL_TRIANGLE_FAN.<span style="font-weight: bold;"></span>
+&nbsp;For GL_TRIANGLES mode, the number of vertices should be a multiple
+of three - extra vertices will be ignored. &nbsp;For GL_TRIANGLE_STRIP
+and GL_TRIANGLE_FAN, at least three vertices should be specified.
+&nbsp;If less than three are specified, nothing is drawn. &nbsp;<br>
+<br>
+Quadrilaterals are <span style="font-weight: bold;"></span>rendered by
+the command sequence <span style="font-weight: bold;">glBegin</span>(<span
+ style="font-style: italic;"><span style="font-style: italic;">mode</span></span>),<span
+ style="font-weight: bold;">glVertex</span>, <span
+ style="font-weight: bold;">glVertex</span>, ... <span
+ style="font-weight: bold;">glEnd</span> where <span
+ style="font-style: italic;">mode</span> may be one of GL_QUADS or
+GL_QUAD_STRIP.<span style="font-weight: bold;"></span> &nbsp; For
+GL_QUADS, the number of vertices should be a multiple of four - extra
+vertices will be ignored. &nbsp;For GL_QUAD_STRIP, the number of
+vertices should be even and at least four. &nbsp;Extra vertices (one)
+will be ignored.<br>
+<br>
+Convex polygons are <span style="font-weight: bold;"></span>rendered
+by the command sequence <span style="font-weight: bold;">glBegin</span><span
+ style="font-style: italic;"><span style="font-style: italic;"></span></span>(GL_POLYGON),<span
+ style="font-weight: bold;">glVertex</span>, <span
+ style="font-weight: bold;">glVertex</span>, ... <span
+ style="font-weight: bold;">glEnd</span>.<span
+ style="font-style: italic;"></span><span style="font-weight: bold;"></span>
+&nbsp;If less than three vertices are specified, nothing is drawn.<br>
+<br>
+<h3>4.3.1 Polygon Orientation</h3>
+The <span style="font-style: italic;">winding order</span> of vertices
+(clockwise or counter-clockwise) is significant. &nbsp;It is used to
+determine the <span style="font-style: italic;">front-facing</span> or <span
+ style="font-style: italic;">back-facing</span> orientation of polygons.
+&nbsp;By default, a front-facing polygon's vertices are in
+counter-clockwise order (in window coordinates). &nbsp;Figures 2.4 and
+2.5 of the OpenGL 1.2.1 specification illustrate the winding order for
+front-facing triangles and quadrilaterals, respectively.<br>
+<br>
+The command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glFrontFace</span>(GLenum<span
+ style="font-style: italic;"> mode</span>)<br>
+</div>
+<br>
+specifies whether clockwise or counter-clockwise winding indicates a
+front-facing polygon. &nbsp;If <span style="font-style: italic;">mode</span>
+is GL_CW then polygons with clockwise winding are front-facing. &nbsp;If <span
+ style="font-style: italic;">mode</span> is GL_CCW then polygons with
+counter-clockwise winding are front-facing. &nbsp;The default value is
+GL_CCW. &nbsp;If <span style="font-style: italic;">mode</span> is not
+GL_CCW or GL_CW then the error GL_INVALID_ENUM will be raised.<span
+ style="font-style: italic;"></span><span style="font-style: italic;"></span><br>
+<br>
+<h3>4.3.2 Polygon Culling</h3>
+Polygons may be culled (discarded) depending on whether they are
+front-facing or back-facing. &nbsp;The command<br>
+<br>
+<div style="margin-left: 40px;">void<span style="font-weight: bold;">
+glCullFace</span>(GLenum <span style="font-style: italic;">mode</span>)<br>
+</div>
+<br>
+specifies whether front-facing, back-facing or all polygons should be
+culled. &nbsp;If <span style="font-style: italic;">mode</span> is
+GL_FRONT then front-facing polygons will be culled. &nbsp;If <span
+ style="font-style: italic;">mode</span> is GL_BACK then back-facing
+polygons will be culled. Otherwise, if <span style="font-style: italic;">mode</span>
+is GL_FRONT_AND_BACK then all polygons will be culled. &nbsp;Any other
+value for <span style="font-style: italic;">mode</span> will raise the
+error GL_INVALID_ENUM.<br>
+<br>
+Polygon culling is enabled and disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_CULL_FACE) and <span
+ style="font-weight: bold;">glDisable</span>(GL_CULL_FACE),
+respectively.<br>
+<br>
+<h3>4.3.3 Polygon Antialiasing</h3>
+Polygons may be antialiased in order to smooth their edges.
+&nbsp;Polygon antialiasing is enabled and disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_POLYGON_SMOOTH) and <span
+ style="font-weight: bold;">glDisable</span>(GL_POLYGON_SMOOTH).<br>
+<br>
+When polygon antialiasing is enabled each fragment produced by polygon,
+triangle and quadrilateral rasterization will be given a <span
+ style="font-style: italic;">coverage</span> value which indicates how
+much of the fragment is covered by the polygon. &nbsp;Fragments
+completely inside the polygon have coverage 1.0. &nbsp;Fragments
+completely outside the polygon have zero coverage (in theory).
+&nbsp;Fragments which intersect the polygon's edge have a coverage value
+in the range (0, 1).<br>
+<br>
+The fragment's alpha value is multiplied by the coverage value.
+&nbsp;By enabling the appropriate blending mode, polygon edges will
+appear smoothed.<br>
+<br>
+<h2>4.4 Shading</h2>
+The command<br>
+<br>
+<div style="margin-left: 40px;"> void <span style="font-weight: bold;">glShadeModel</span>(GLenum<span
+ style="font-style: italic;">mode</span>)<br>
+</div>
+<br>
+determines whether colors are interpolated between vertices during
+rasterization. &nbsp;If <span style="font-style: italic;">mode</span> is
+GL_FLAT then vertex colors are not interpolated. &nbsp;The color used
+for drawing lines, triangles and quadrilaterals is that of the last
+vertex used to specify each primitive. &nbsp;For polygons, the color of
+the first vertex specifies the color for the entire polygon. &nbsp;If <span
+ style="font-style: italic;">mode</span> is GL_SMOOTH then vertex colors
+are linearly interpolated to produce the fragment colors.<br>
+<br>
+<h2>4.5 Bitmap Rasterization</h2>
+A bitmap is a monochromatic, binary image in which each image element
+(or pixel) is represented by one bit. &nbsp;Fragments are only generated
+for the bits (pixels) which are set. &nbsp;Bitmaps are commonly used to
+draw text (glyphs) and markers.<br>
+<br>
+A bitmap is drawn with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glBitmap</span>(GLsizei<span
+ style="font-style: italic;">width</span>, GLsizei <span
+ style="font-style: italic;">height</span>, GLfloat <span
+ style="font-style: italic;">xOrig</span>, GLfloat <span
+ style="font-style: italic;">yOrig</span>, GLfloat <span
+ style="font-style: italic;">xMove</span>, GLfloat <span
+ style="font-style: italic;">yMove</span>, const &nbsp;GLubyte *<span
+ style="font-style: italic;">image</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">width </span>and <span
+ style="font-style: italic;">height</span> specify the image size in
+pixels. &nbsp;<span style="font-style: italic;">xOrig</span> and <span
+ style="font-style: italic;">yOrig</span> specify the bitmap origin.
+&nbsp;<span style="font-style: italic;">xMove</span> and <span
+ style="font-style: italic;">yMove</span> are added to the current
+raster position after the bitmap is rasterized. &nbsp;<span
+ style="font-style: italic;">image</span> is a pointer to the bitmap
+data.<br>
+<br>
+If the current raster position is not valid, <span
+ style="font-weight: bold;">glBitmap</span> has no effect.<br>
+<br>
+<h3>4.5.1 Bitmap Unpacking</h3>
+The first step in bitmap rendering is <span style="font-style: italic;">unpacking.
+&nbsp;</span>Unpacking is the process of extracting image data from
+client memory subject to byte swapping, non-default row strides, etc.
+&nbsp;The unpacking parameters are specified with the command<br>
+<br>
+<div style="margin-left: 40px;">void<span style="font-weight: bold;">
+glPixelStorei</span>(GLenum pname, GLint value)<br>
+</div>
+<span style="font-style: italic;"></span><br>
+The following unpacking parameters may be set:<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 90%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">Parameter (<span
+ style="font-style: italic;">pname</span>)<br>
+ </td>
+ <td style="vertical-align: top;">Value (<span
+ style="font-style: italic;">value</span>)<br>
+ </td>
+ <td style="vertical-align: top;">Default<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_UNPACK_ROW_LENGTH<br>
+ </td>
+ <td style="vertical-align: top;">Width of the image in memory, in
+pixels.<br>
+ </td>
+ <td style="vertical-align: top;">0<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_UNPACK_LSB_FIRST<br>
+ </td>
+ <td style="vertical-align: top;">GL_FALSE indicates that the most
+significant bit is unpacked first from each byte. &nbsp;GL_TRUE
+indicates that the least significant bit is unpacked first from each
+byte. <br>
+ </td>
+ <td style="vertical-align: top;">GL_FALSE<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+<br>
+The GL_UNPACK_ROW_LENGTH specifies the stride (in pixels) for advancing
+from one row of the image to the next.&nbsp; If it's zero, the <span
+ style="font-style: italic;">width</span> parameter to <span
+ style="font-weight: bold;">glBitmap</span> specifies the width of the
+image in memory.<br>
+<br>
+GL_UNPACK_LSB_FIRST determines whether the least significant or most
+significant bit in each byte is unpacked first. &nbsp;Unpacking occurs
+in left to right order (in image space).<br>
+<br>
+The value of bit (i, j) of the image (where i is the image row and j is
+the image column) is found as follows:<br>
+<br>
+<div style="margin-left: 40px;">rowLength = (GL_UNPACK_ROW_LENGTH != 0)
+? GL_UNPACK_ROW_LENGTH : <span style="font-style: italic;">width</span>;<br>
+<br>
+byte = <span style="font-style: italic;">image</span>[((rowLength + 7)
+/ 8) * i + j / 8];<br>
+<br>
+if (GL_UNPACK_LSB_FIRST != 0)<br>
+&nbsp;&nbsp;&nbsp; bitMask = 1 &lt;&lt; (j % 8);<br>
+else<br>
+&nbsp;&nbsp;&nbsp; bitMask = 128 &gt;&gt; (j % 8);<br>
+<br>
+if (byte &amp; bitMask)<br>
+&nbsp;&nbsp;&nbsp; bit = 1;<br>
+else<br>
+&nbsp;&nbsp;&nbsp; bit = 0;<br>
+<br>
+</div>
+<span style="font-style: italic;"><span style="font-style: italic;"></span></span>
+<h3>4.5.2 Rasterization</h3>
+If the current raster position is (x<sub>rp</sub>, y<sub>rp</sub>, z<sub>rp</sub>,
+w<sub>rp</sub>), then the bitmap is rasterized according to the
+following algorithm:<br>
+<br>
+for (j = 0; j &lt; <span style="font-style: italic;">height</span>;
+j++) {<br>
+&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; <span style="font-style: italic;">width</span>;
+i++) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (bit(i,j)) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fragment.x =
+floor(x<sub>rp</sub> - <span style="font-style: italic;">xOrig</span>)
++ i;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fragment.y =
+floor(y<sub>rp</sub> - <span style="font-style: italic;">yOrig</span>)
++ j;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fragment.color
+= GL_CURRENT_RASTER_COLOR;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+fragment.texture = GL_CURRENT_RASTER_TEXTURE_COORDS;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+ProcessFragment(fragment)<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br>
+&nbsp;&nbsp;&nbsp; }<br>
+}<br>
+<br>
+After the bitmap has been rendered the current raster position is
+updated as follows:<br>
+<br>
+<div style="margin-left: 40px;">x<sub>rp</sub> = x<sub>rp</sub> + <span
+ style="font-style: italic;">xMove</span><br>
+y<sub>rp</sub> = y<sub>rp</sub> + <span style="font-style: italic;">yMove</span><br>
+</div>
+<br>
+<h3>4.5.3 Per-fragment Operations</h3>
+XXX supported? &nbsp;See issue in appendix A.<br>
+<br>
+<h2>4.6 Unsupported Commands</h2>
+The following commands related to rasterization are not supported by
+the subset.<br>
+<br>
+<div style="margin-left: 40px;">Point commands:<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glPointSize</span><br>
+</div>
+<br>
+Polygon commands:<br>
+<div style="margin-left: 40px; font-weight: bold;">glPolygonStipple<br>
+glPolygonOffset<br>
+glPolygonMode<br>
+<br>
+</div>
+</div>
+<div style="margin-left: 40px;">Pixel storage commands:<br>
+</div>
+<div style="font-weight: bold; margin-left: 80px;">glPixelStoref<br>
+</div>
+<br>
+<br>
+<h1>5. Texture Mapping<br>
+</h1>
+There are four elements to texture mapping: texture coordinate
+specification, texture image specification, texture sampling and texture
+application.<br>
+<br>
+Texture mapping is enabled and disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_TEXTURE_2D) and <span
+ style="font-weight: bold;">glDisable</span>(GL_TEXTURE_2D).<br>
+<br>
+<h2>5.1 Texture Image Specification</h2>
+A texture image is specified with the command:<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glTexImage2D</span>(GLenum<span
+ style="font-style: italic;"> target</span>, GLint <span
+ style="font-style: italic;">level</span>, GLint <span
+ style="font-style: italic;">internalFormat,</span> GLsizei <span
+ style="font-style: italic;">width,</span> GLsizei <span
+ style="font-style: italic;">height,</span> GLint <span
+ style="font-style: italic;">border,</span> GLenum <span
+ style="font-style: italic;">format,</span> GLenum <span
+ style="font-style: italic;">type,</span> const GLvoid *<span
+ style="font-style: italic;">pixels</span> )<br>
+</div>
+<br>
+<span style="font-style: italic;">target</span> must be GL_TEXTURE_2D.
+&nbsp;<span style="font-style: italic;">level </span>indicates the
+mipmap level for mipmap textures. &nbsp;<span style="font-style: italic;">internalFormat</span>
+is a hint to indicate the preferred internal storage format for the
+texture. &nbsp;<span style="font-style: italic;">width</span> and <span
+ style="font-style: italic;">height </span>indicate the image size in
+pixels (or texels). &nbsp;<span style="font-style: italic;">border </span>must
+be zero. &nbsp;<span style="font-style: italic;">format</span> and <span
+ style="font-style: italic;">type</span> describe the pixel format and
+data type for the incoming image. &nbsp;<span style="font-style: italic;">pixels</span>
+points to the incoming texture image. &nbsp;These parameters are
+described in more detail below.<br>
+<br>
+<h3>5.1.1 Texture Image Size and Mipmaps</h3>
+<h3><span style="font-style: italic;"></span></h3>
+Texture images must have dimensions (width and height) that are powers
+of two. For example: 256 x 256, 32 x 1024, 1 x 8, etc. &nbsp;That is, it
+must be the case that <span style="font-style: italic;">width </span>=
+2<sup>n</sup> and <span style="font-style: italic;">height</span> = 2<sup>m</sup>
+for some positive integers n and m.<br>
+<br>
+Mipmapping is a method of antialiasing or filtering textures to improve
+their appearance. &nbsp;A mipmap is a set of images consisting of a base
+image and a set of filtered, reduced-resolution images. &nbsp;If the
+base image (<span style="font-style: italic;">level</span>=0) is of
+width 2<sup>n</sup> and height 2<sup>m</sup> then the level 1 image must
+be of width 2<sup>n-1</sup> and height 2<sup>m-1</sup>. &nbsp;Each mipmap
+level is half the width and height of the previous level, or at least
+one. &nbsp;The last mipmap level has a width and height of one.<br>
+<br>
+The following is an example of a mipmap's image levels:<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 50%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">mipmap level<br>
+ </td>
+ <td style="vertical-align: top;">width<br>
+ </td>
+ <td style="vertical-align: top;">height<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">0<br>
+ </td>
+ <td style="vertical-align: top;">256<br>
+ </td>
+ <td style="vertical-align: top;">64<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">128<br>
+ </td>
+ <td style="vertical-align: top;">32<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">2<br>
+ </td>
+ <td style="vertical-align: top;">64<br>
+ </td>
+ <td style="vertical-align: top;">16<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">3<br>
+ </td>
+ <td style="vertical-align: top;">32<br>
+ </td>
+ <td style="vertical-align: top;">8<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">16<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">5<br>
+ </td>
+ <td style="vertical-align: top;">8<br>
+ </td>
+ <td style="vertical-align: top;">2<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">6<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">7<br>
+ </td>
+ <td style="vertical-align: top;">2<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">8<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+If the <span style="font-style: italic;">width</span> or <span
+ style="font-style: italic;">height</span> parameters are not powers of
+two, the error GL_INVALID_VALUE is raised. &nbsp;If the image levels in
+a mipmap do not satisfy the restrictions listed above the texture is
+considered to be <span style="font-style: italic;">inconsistent</span>
+and the system will behave as if the texturing is disabled.<br>
+<br>
+<h3>5.1.2 Texture Image Formats and Unpacking</h3>
+The <span style="font-weight: bold;">glTexImage2D</span> command's <span
+ style="font-style: italic;"><span style="font-weight: bold;"></span></span><span
+ style="font-style: italic;">format</span> and <span
+ style="font-style: italic;">type</span> parameters describe the format
+of the incoming texture image.&nbsp; Accepted values for <span
+ style="font-style: italic;">format</span> are GL_INTENSITY, GL_RGB and
+GL_RGBA. &nbsp;The <span style="font-style: italic;">type</span>
+parameter must be GL_UNSIGNED_BYTE. &nbsp;Pixel component values are
+thus in the range 0 through 255.<br>
+<br>
+If <span style="font-style: italic;">format</span> is GL_INTENSITY then
+the image has one byte per pixel which specifies the pixel's red, green,
+blue and alpha values.<span style="font-style: italic;"></span><br>
+<br>
+If <span style="font-style: italic;">format</span> is GL_RGB then the
+image has three bytes per pixel which specify the pixel's red, green and
+blue values (in that order). &nbsp;The alpha value defaults to 255.<br>
+<br>
+If <span style="font-style: italic;">format</span> is GL_RGBA then the
+image has four bytes per pixel which specify the pixel's red, green,
+blue and alpha values (in that order).<br>
+<br>
+The command<br>
+<br>
+<div style="margin-left: 40px;">void<span style="font-weight: bold;">
+glPixelStorei</span>(GLenum <span style="font-style: italic;">pname</span>,
+GLint <span style="font-style: italic;">value</span>)<br>
+</div>
+<br>
+controls the unpacking of texture image data from client memory. &nbsp;<span
+ style="font-style: italic;">pname</span> may be GL_UNPACK_ROW_LENGTH to
+indicate the stride, in pixels, between subsequent rows of the image in
+client memory. &nbsp;If GL_UNPACK_ROW_LENGTH is zero (the default) then
+the <span style="font-style: italic;">width</span> parameter to <span
+ style="font-weight: bold;">glTexImage2D </span>determines the stride.<span
+ style="font-style: italic;"></span><br>
+<br>
+<h3>5.1.3 Internal Texture Format</h3>
+<span style="font-weight: bold;">glTexImage2D<span
+ style="font-style: italic;"> </span></span>converts the incoming
+texture image to one of the supported internal texture formats.<br>
+<br>
+The <span style="font-style: italic;">internalFormat</span> parameter
+indicates the desired internal format for the texture and may be either
+GL_INTENSITY8, GL_RGB5 or GL_RGBA8.<br>
+<br>
+If <span style="font-style: italic;">internalFormat</span> is
+GL_INTENSITY8 then the texture has one byte per texel (texture element)
+which indicates the texel's intensity (or brightness). &nbsp;The
+intensity is obtained from the incoming image's red channel.<br>
+<br>
+If <span style="font-style: italic;">internalFormat</span> is GL_RGB5
+then the texture is stored with two bytes per texel: &nbsp;5 bits per
+red value, 5 bits per green value and 5 bits per blue value.<br>
+<br>
+If <span style="font-style: italic;">internalFormat </span>is
+GL_RGBA8 then the texture is stored with four bytes per texel: &nbsp;8
+bits for each of the red, green, &nbsp;blue and alpha values.<br>
+<br>
+The internal format is also significant to texture application (see
+section 5.4).<br>
+<br>
+<h2>5.2 Texture Coordinates</h2>
+Texture coordinates control the mapping from local polygon space to
+texture image space. &nbsp;Texture coordinates are set for each vertex
+with the <span style="font-weight: bold;">glTexCoord</span> commands.
+&nbsp;During line and polygon rasterization the vertex's texture
+coordinates are interpolated across the primitive to produce a texture
+coordinate for each fragment. &nbsp;The fragment texture coordinates are
+used to sample the current texture image.<br>
+<br>
+Texture coordinates are normally in the range [0, 1]. &nbsp;Values
+outside that range are processed according to the <span
+ style="font-style: italic;">texture wrap mode</span>. &nbsp;The
+texture wrap mode is set with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glTexParameteri</span>(GLenum<span
+ style="font-style: italic;"> target</span>, GLenum <span
+ style="font-style: italic;">pname</span>, GLint <span
+ style="font-style: italic;">value</span>)<br>
+<br>
+</div>
+<span style="font-style: italic;">target</span> must be GL_TEXTURE_2D.
+&nbsp;If <span style="font-style: italic;">pname</span> is
+GL_TEXTURE_WRAP_S or GL_TEXTURE_WRAP_T then <span
+ style="font-style: italic;">value</span> must be either
+GL_CLAMP_TO_EDGE or GL_REPEAT.<br>
+<br>
+For GL_CLAMP_TO_EDGE, texture coordinates are effectively clamped to
+the interval [0, 1].<br>
+<br>
+For GL_REPEAT, the integer part of texture coordinates is ignored; only
+the fractional part of the texture coordinates is used. &nbsp;This
+allows texture images to repeated or tiled across an object.<br>
+<br>
+<h2>5.3 Texture Sampling</h2>
+Texture sampling is the process of using texture coordinates to extract
+a color from the texture image. &nbsp;Multiple, weighted samples may be
+taken from the texture and combined during the filtering step.<br>
+<br>
+During texture coordinate interpolation a <span
+ style="font-style: italic;">level of detail</span> value (lambda) is
+computed for each fragment. &nbsp;For a mipmapped texture, lambda
+determines which level (or levels) of the mipmap will be sampled to
+obtain the texture color.<br>
+<br>
+If lambda indicates that multiple texels map to a single screen pixel,
+then the texture <span style="font-style: italic;">minification</span>
+filter will be used. &nbsp;Otherwise, if lambda indicates that a single
+texel maps to multiple screen pixels, then the texture <span
+ style="font-style: italic;">magnification</span> filter will be used.<br>
+<span style="font-weight: bold;"></span><span
+ style="font-style: italic;"></span><br>
+<h3>5.3.1 Texture Minification</h3>
+The texture minification filter is set with the <span
+ style="font-weight: bold;">glTexParameteri </span><span
+ style="font-style: italic;"></span><span style="font-weight: bold;"></span><span
+ style="font-style: italic;"></span> command by setting <span
+ style="font-style: italic;">target</span> to GL_TEXTURE_2D, setting <span
+ style="font-style: italic;">pname</span> to GL_TEXTURE_MIN_FILTER and
+setting <span style="font-style: italic;">value</span> to GL_NEAREST,
+GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST,&nbsp;
+GL_NEAREST_MIPMAP_LINEAR,&nbsp; &nbsp;GL_LINEAR_MIPMAP_NEAREST or
+GL_LINEAR_MIPMAP_LINEAR.<br>
+<br>
+GL_NEAREST samples the texel nearest the texture coordinate in the
+level 0 texture image.<br>
+<br>
+GL_LINEAR samples the four texels around the texture coordinate in the
+level 0 texture image. &nbsp;The four texels are linearly weighted to
+compute the final texel value.<br>
+<br>
+GL_NEAREST_MIPMAP_NEAREST samples the texel nearest the texture
+coordinate in the level N texture image. &nbsp;N is the level of detail
+and is computed by the partial derivatives of the texture coordinates
+with respect to the window coordinates.<br>
+<br>
+GL_NEAREST_MIPMAP_LINEAR samples two texels nearest the texture
+coordinates in the level N and N+1 texture images. &nbsp;The two texels
+are linearly weighted to compute the final texel value. &nbsp;N is the
+level of detail and is computed by the partial derivatives of the
+texture coordinates with respect to the window coordinates.<br>
+<br>
+GL_LINEAR_MIPMAP_NEAREST samples four texels around the texture
+coordinate in the level N texture image. &nbsp;The four texels are
+linearly weighted to compute the final texel value. &nbsp;N is the level
+of detail and is computed by the partial derivatives of the texture
+coordinates with respect to the window coordinates.<br>
+<br>
+GL_LINEAR_MIPMAP_LINEAR samples four texels around the texture
+coordinate in the level N texture image and four texels around the
+texture coordinate in the level N+1 texture image. &nbsp;The eight
+texels are linearly weighted to compute the final texel value. &nbsp;N
+is the level of detail and is computed by the partial derivatives of the
+texture coordinates with respect to the window coordinates.<br>
+<br>
+Filter modes other than GL_LINEAR and GL_NEAREST requires that the
+texture have a complete set of mipmaps. &nbsp;If the mipmap is
+incomplete, it is as if texturing is disabled.<br>
+&nbsp;<br>
+<h3>5.3.2 Texture Magnification</h3>
+The texture magnification filter is set with the <span
+ style="font-weight: bold;">glTexParameteri </span><span
+ style="font-style: italic;"></span><span style="font-weight: bold;"></span>command
+by setting <span style="font-style: italic;">target</span> to
+GL_TEXTURE_2D, setting <span style="font-style: italic;">pname</span> to
+GL_TEXTURE_MAG_FILTER and setting <span style="font-style: italic;">value</span>
+to GL_NEAREST or GL_LINEAR.<br>
+<br>
+GL_NEAREST samples the texel nearest the texture coordinate in the
+level 0 texture image.<br>
+<br>
+GL_LINEAR samples the four texels around the texture coordinate in the
+level 0 texture image. &nbsp;The four texels are linearly weighted to
+compute the final texel value.<br>
+<br>
+<h2>5.4 Texture Application</h2>
+The sampled texture value is combined with the incoming fragment color
+to produce a new fragment color. &nbsp;The fragment and texture colors
+are combined according to the texture environment mode and the current
+texture's base internal format. &nbsp;The texture environment mode is
+set with the command<br>
+<br>
+<div style="margin-left: 40px;">void<span style="font-weight: bold;">
+glTexEnvi</span>(GLenum <span style="font-style: italic;">target</span>,
+GLenum <span style="font-style: italic;">pname</span>, GLint <span
+ style="font-style: italic;">value</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">target</span> must be GL_TEXTURE_ENV.
+&nbsp;If <span style="font-style: italic;">pname</span> is
+GL_TEXTURE_ENV_MODE then <span style="font-style: italic;">value</span>
+must be one of GL_REPLACE, GL_MODULATE, GL_DECAL, or GL_BLEND.<br>
+<br>
+There is also a <span style="font-style: italic;">texture environment
+color</span> that can factor into texture application. &nbsp;The texture
+environment color can be set with the command<br>
+<br>
+<div style="margin-left: 40px;">void<span style="font-weight: bold;">
+glTexEnvfv</span>(GLenum <span style="font-style: italic;">target</span>,
+GLenum <span style="font-style: italic;">pname</span>, const GLfloat *<span
+ style="font-style: italic;">value</span>)<br>
+</div>
+<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">target</span> must be GL_TEXTURE_ENV.
+&nbsp;If <span style="font-style: italic;">pname</span> is
+GL_TEXTURE_ENV_COLOR then <span style="font-style: italic;">value </span>must
+point to an array of four values which specify the red, green, blue,
+and alpha values of the texture environment color. &nbsp;The values are
+clamped to the range [0, 1]. &nbsp;The default color is (0, 0, 0, 0).<br>
+<span style="font-style: italic;"></span><br>
+The following table describes the arithmetic used for each combination
+of environment mode and base internal format. &nbsp;(Rf, Gf, Bf, Af) is
+the incoming fragment color. &nbsp;(Rt, Gt, Bt, At) is the sampled
+texture color. &nbsp;Lt is the sampled texture luminance. &nbsp;<span
+ style="font-style: italic;"></span>'It' is the sampled texture
+intensity. &nbsp;(Rc, Gc, Bc, Ac) is the texture environment color.
+&nbsp;(Rv, Gv, Bv, Av) is the resulting value.<br>
+<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 90%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">Base Internal Format<br>
+ </td>
+ <td style="vertical-align: top;">GL_REPLACE<br>
+ </td>
+ <td style="vertical-align: top;">GL_MODULATE<br>
+ </td>
+ <td style="vertical-align: top;">GL_DECAL<br>
+ </td>
+ <td style="vertical-align: top;">GL_BLEND<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_INTENSITY<br>
+ </td>
+ <td style="vertical-align: top;">Rv = It<br>
+Gv = It<br>
+Bv = It<br>
+Bf = It<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rf * It<br>
+Gv = Gf * It<br>
+Bv = Bf * It<br>
+Av = Af * It</td>
+ <td style="vertical-align: top;">undefined<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rf*(1-It) + Rc*It<br>
+Gv = Gf*(1-It) + Gc*It<br>
+Bv = Bf*(1-It) + Bc*It<br>
+Av = Af*(1-It) + Ac*It</td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_RGB<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rt<br>
+Gv = Gt<br>
+Bv = Bt<br>
+Av = Af<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rf * Rt<br>
+Gv = Gf * Gt<br>
+Bv = Bf * Bt<br>
+Av = Af<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rt<br>
+Gv = Gt<br>
+Bv = Bt<br>
+Av = Af</td>
+ <td style="vertical-align: top;">Rv = Rf*(1-Rt) + Rc*Rt<br>
+Gv = Gf*(1-Gt) + Gc*Gt<br>
+Bv = Bf*(1-Bt) + Bc*Bt<br>
+Av = Af</td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_RGBA<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rt<br>
+Gv = Gt<br>
+Bv = Bt<br>
+Av = At<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rf * Rt<br>
+Gv = Gf * Gt<br>
+Bv = Bf * Bt<br>
+Av = Af * At</td>
+ <td style="vertical-align: top;">Rv = Rf*(1-At) + Rt*At<br>
+Gv = Gf*(1-At) + Gt*At<br>
+Bv = Bf*(1-At) + Bt*At<br>
+Av = Af<br>
+ </td>
+ <td style="vertical-align: top;">Rv = Rf*(1-Rt) + Rc*Rt<br>
+Gv = Gf*(1-Gt) + Gc*Gt<br>
+Bv = Bf*(1-Bt) + Bc*Bt<br>
+Av = Af*At</td>
+ </tr>
+ </tbody>
+</table>
+<br>
+<br>
+<br>
+<h2>5.5 Texture Objects</h2>
+Texture objects encapsulate a set of texture images (mipmap) and
+related state into a named object. &nbsp;This facilitates use of
+multiple textures in an application. &nbsp;Texture objects are named
+with GLuints (unsigned integers). &nbsp;There is a default texture
+object with the name/identifier zero which can never be deleted.<br>
+<br>
+<h3>5.5.1 Creating Texture Objects</h3>
+A texture object is created by binding a new GLuint identifier to the
+GL_TEXTURE_2D target with the command:<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glBindTexture</span>(GLenum<span
+ style="font-style: italic;"> target</span>, GLuint <span
+ style="font-style: italic;">textureID</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">target</span> must be GL_TEXTURE_2D.
+&nbsp;<span style="font-style: italic;">textureID</span> may be any
+unsigned integer. &nbsp;If <span style="font-style: italic;">textureID</span>
+does not name an existing texture object, a new texture object with that
+ID will be created, initialized to the default state. &nbsp;Whether the
+ID is new or existed previously, that named texture object is bound as
+the <span style="font-style: italic;">current texture object</span>.
+&nbsp;Subsequent <span style="font-weight: bold;">glTexParameter </span>and<span
+ style="font-weight: bold;">glTexImage2D<span
+ style="font-style: italic;"> </span></span>calls will effect the
+current texture object.<br>
+<span style="font-style: italic;"></span><span
+ style="font-weight: bold;"><span style="font-style: italic;"> </span></span><br>
+<h3>5.5.2 Deleting Texture Objects</h3>
+One or more texture objects may be deleted with the command:<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glDeleteTextures</span>(GLsizei<span
+ style="font-style: italic;">n</span>, const GLuint *<span
+ style="font-style: italic;">textureIDs</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">textureIDs</span> is an array of <span
+ style="font-style: italic;">n</span> texture IDs. &nbsp;The named
+texture objects will be deleted. &nbsp;If the current texture object is
+deleted the default texture object (number 0) will be bound as the
+current texture object.<br>
+<br>
+<h3>5.5.3 Allocating Texture Object Identifiers</h3>
+A list of new, unused texture IDs can be obtained by calling the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glGenTextures</span>(GLsizei<span
+ style="font-style: italic;"> n</span>, GLuint *<span
+ style="font-style: italic;">textureIDs</span>)<br>
+</div>
+<br>
+An array of <span style="font-style: italic;">n</span> unused texture
+IDs will be returned in the <span style="font-style: italic;">textureIDs</span>
+array.<br>
+<br>
+<br>
+<h1>6. Per-fragment Operations</h1>
+The fragments produced by rasterization are subjected to a number of
+operations which either modify the fragment or test the fragment
+(discarding the fragment if the test fails.) &nbsp;This chapter
+describes the per-fragment operations. &nbsp;They are presented in the
+order in which they're performed. &nbsp;If a fragment fails a test it is
+discarded and not subjected to subsequent tests or modifications.<br>
+<br>
+<h2>6.1 Scissor Test</h2>
+The scissor test limits rendering to a 2-D rectangular region of the
+framebuffer. &nbsp;The command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glScissor</span>(GLint<span
+ style="font-style: italic;">x</span>, GLint <span
+ style="font-style: italic;">y</span>, GLsizei <span
+ style="font-style: italic;">width</span>, GLsizei<span
+ style="font-style: italic;"> height</span>)<br>
+</div>
+<br>
+defines a clipping region with the lower-left corner at (<span
+ style="font-style: italic;">x, y</span>) and the given <span
+ style="font-style: italic;">width</span> and <span
+ style="font-style: italic;">height</span>. &nbsp;The scissor test is
+enabled and disabled with the command <span style="font-weight: bold;">glEnable</span>(GL_SCISSOR_TEST)
+and <span style="font-weight: bold;">glDisable</span>(GL_SCISSOR_TEST).<br>
+<br>
+If the incoming fragment's position is (x<sub>f</sub>, y<sub>f</sub>)
+then the fragment will pass the test if <span
+ style="font-style: italic;">x</span> &lt;= x<sub>f</sub> &lt; <span
+ style="font-style: italic;">x</span> + <span
+ style="font-style: italic;">width</span> and <span
+ style="font-style: italic;">y</span> &lt;= y<sub>f</sub> &lt; <span
+ style="font-style: italic;">y</span> + <span
+ style="font-style: italic;">height. &nbsp;</span>Otherwise, the
+fragment is discarded.<br>
+<br>
+If <span style="font-style: italic;">width</span> or <span
+ style="font-style: italic;">height</span> is less than zero the error
+GL_INVALID_VALUE is raised. &nbsp;The default scissor rectangle bounds
+are (0, 0, w, h) where w is the initial window width and h is the
+initial window height. &nbsp;The scissor test is disabled by default.<br>
+<br>
+<h2>6.2 Alpha Test</h2>
+The alpha test compares the fragment's alpha value against a reference
+value and discards the fragment if the comparison fails. &nbsp;The test
+is specified by the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glAlphaFunc</span>(GLenum<span
+ style="font-style: italic;">mode</span>, GLclampf <span
+ style="font-style: italic;">reference</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">mode</span> specifies an inequality
+and <span style="font-style: italic;">reference</span> specifies a value
+to compare against. &nbsp;The following table lists all possible
+modes&nbsp;<span style="font-style: italic;"></span>and the
+corresponding test:<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 50%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">Comparison mode<br>
+ </td>
+ <td style="vertical-align: top;">The test passes if<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LESS<br>
+ </td>
+ <td style="vertical-align: top;">alpha &lt; <span
+ style="font-style: italic;">reference</span><br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LEQUAL<br>
+ </td>
+ <td style="vertical-align: top;">alpha &lt;= <span
+ style="font-style: italic;">reference</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_GREATER<br>
+ </td>
+ <td style="vertical-align: top;">alpha &gt; <span
+ style="font-style: italic;">reference</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_GEQUAL<br>
+ </td>
+ <td style="vertical-align: top;">alpha &gt;= <span
+ style="font-style: italic;">reference</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_EQUAL<br>
+ </td>
+ <td style="vertical-align: top;">alpha == <span
+ style="font-style: italic;">reference</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NOTEQUAL<br>
+ </td>
+ <td style="vertical-align: top;">alpha != <span
+ style="font-style: italic;">reference</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NEVER<br>
+ </td>
+ <td style="vertical-align: top;">never pass<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ALWAYS<br>
+ </td>
+ <td style="vertical-align: top;">always passes<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+The <span style="font-style: italic;">reference</span> parameter is
+clamped to the range [0, 1].<br>
+<br>
+The alpha test is enabled and disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_ALPHA_TEST) and <span
+ style="font-weight: bold;">glDisable</span>(GL_ALPHA_TEST).<br>
+<br>
+The default mode is GL_ALWAYS and the default reference value is 0.<br>
+<br>
+<h2>6.3 Stencil Test</h2>
+The stencil buffer stores an N-bit integer value for each pixel in the
+frame buffer. &nbsp;The stencil test compares the stencil buffer value
+at the fragment's position to a reference value and possibly discards
+the fragment based on the outcome. &nbsp;Furthermore, the stencil buffer
+value may be updated or modified depending on the outcome. &nbsp;If
+there is no stencil buffer the stencil test is bypassed.<br>
+<br>
+Stenciling is controlled by the commands<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glStencilFunc</span>(GLenum<span
+ style="font-style: italic;">func</span>, GLint <span
+ style="font-style: italic;">ref</span>, GLuint <span
+ style="font-style: italic;">mask</span>)<br>
+void <span style="font-weight: bold;">glStencilOp</span>(GLenum <span
+ style="font-style: italic;">stencilFail</span>, GLenum <span
+ style="font-style: italic;">depthTestFail</span>, GLenum <span
+ style="font-style: italic;">depthTestPass</span>)<br>
+</div>
+<br>
+The <span style="font-weight: bold;">glStencilFunc<span
+ style="font-style: italic;"> </span></span>command controls the
+stencil test while <span style="font-weight: bold;">glStencilOp</span>
+command controls the how the stencil buffer is updated/modified after
+the test.<br>
+<br>
+<span style="font-style: italic;">ref</span> is clamped to the range [0,
+2<sup>N</sup>-1] where N is the number of bits per stencil value in the
+stencil buffer.<span style="font-style: italic;"></span><br>
+<br>
+The following table lists all possible values for the <span
+ style="font-style: italic;">func</span> parameter and when the stencil
+test will pass. &nbsp;Both the stencil buffer value and the stencil
+reference value are bit-wise ANDed with the <span
+ style="font-style: italic;">mask</span> parameter before the test.<br>
+<br>
+<span style="font-style: italic;"></span><span
+ style="font-style: italic;"></span><span style="font-style: italic;"></span>
+<table
+ style="text-align: left; margin-left: auto; margin-right: auto; width: 70%;"
+ border="1" cellspacing="2" cellpadding="2">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">Stencil <span
+ style="font-style: italic;">func</span> value<br>
+ </td>
+ <td style="vertical-align: top;">Stencil test passes if<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LESS<br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">(ref</span>&amp;<span
+ style="font-style: italic;">mask)</span> &lt; (stencil buffer value
+&amp; <span style="font-style: italic;">mask)</span><br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LEQUAL<br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">(ref</span>
+&amp; <span style="font-style: italic;">mask) </span>&lt;= (stencil
+buffer value &amp; <span style="font-style: italic;">mask)</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_GREATER<br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">(ref</span>
+&amp; <span style="font-style: italic;">mask) </span>&gt; (stencil
+buffer value &amp; <span style="font-style: italic;">mask)</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_GEQUAL<br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">(ref</span>
+&amp; <span style="font-style: italic;">mask) </span>&gt;= (stencil
+buffer value &amp; <span style="font-style: italic;">mask)</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_EQUAL<br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">(ref</span>
+&amp; <span style="font-style: italic;">mask) </span>== (stencil
+buffer value &amp; <span style="font-style: italic;">mask)</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NOTEQUAL<br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">(ref</span>
+&amp; <span style="font-style: italic;">mask) </span>!= (stencil
+buffer value &amp; <span style="font-style: italic;">mask)</span></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NEVER<br>
+ </td>
+ <td style="vertical-align: top;">never passes<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ALWAYS<br>
+ </td>
+ <td style="vertical-align: top;">always passes<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+<span style="font-style: italic;"></span><br>
+If the stencil test passes, the fragment is passed to the next
+per-fragment operation. &nbsp;Otherwise, if the stencil test fails, the
+value in the stencil buffer is updated according to the value of the <span
+ style="font-style: italic;">stencilFail</span> parameter to <span
+ style="font-weight: bold;">glStencilOp</span>.<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 70%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;"><span style="font-style: italic;">stencilFail</span>
+value<br>
+ </td>
+ <td style="vertical-align: top;">New stencil buffer value<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_KEEP<br>
+ </td>
+ <td style="vertical-align: top;">originalValue<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ZERO<br>
+ </td>
+ <td style="vertical-align: top;">0<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_INVERT<br>
+ </td>
+ <td style="vertical-align: top;">BitWiseInvert(originalValue)
+i.e. ~originalValue<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_REPLACE<br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">ref</span><br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_INCR<br>
+ </td>
+ <td style="vertical-align: top;">originalValue + 1, clamped to
+[0, 2<sup>N</sup>-1]</td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_DECR<br>
+ </td>
+ <td style="vertical-align: top;">originalValue - 1, clamped to
+[0, 2<sup>N</sup>-1]</td>
+ </tr>
+ </tbody>
+</table>
+<span style="font-style: italic;"></span><span
+ style="font-style: italic;"></span><br>
+<br>
+The <span style="font-style: italic;">depthTestFail</span> and <span
+ style="font-style: italic;">depthTestPass</span> parameters to <span
+ style="font-weight: bold;">glStencilOp</span> are ignored. &nbsp;Values
+for <span style="font-style: italic;">func</span> and <span
+ style="font-style: italic;">stencilFail</span> other than those listed
+in the table will cause the error GL_INVALID_ENUM to be raised.<br>
+<br>
+The stencil test is enabled and disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_STENCIL_TEST) and <span
+ style="font-weight: bold;">glDisable</span>(GL_STENCIL_TEST).<br>
+<br>
+The default stencil function is GL_ALWAYS. &nbsp;The default stencil
+reference value is 0. &nbsp;The default stencil mask is ~0. &nbsp;The
+default stencil fail operation is GL_KEEP.<br>
+<br>
+Values written into the stencil buffer are masked with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glStencilMask</span>(GLuint<span
+ style="font-style: italic;">mask</span>)<br>
+</div>
+<br>
+Only the bits which are set in <span style="font-style: italic;">mask</span>
+will be modified in the stencil buffer when written to. &nbsp;If each
+stencil buffer value has N bits, only the least significant N bits of <span
+ style="font-style: italic;">mask</span> are relevant. &nbsp;The default
+stencil mask is ~0.<br>
+<br>
+<h2>6.4 Blending and Logicop</h2>
+Blending or a logic operation combines the incoming fragment color with
+the destination frame buffer color according to a blending equation or
+bit-wise Boolean logical operation.<br>
+<br>
+Blending is enabled and disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_BLEND) and <span
+ style="font-weight: bold;">glDisable</span>(GL_BLEND).<br>
+<br>
+The logic operation is enabled and disabled with the commands <span
+ style="font-weight: bold;">glEnable</span>(GL_LOGIC_OP) and <span
+ style="font-weight: bold;">glDisable</span>(GL_LOGIC_OP).<br>
+<br>
+If both blending and the logic operation are enabled, the logic
+operation has higher priority; blending is bypassed.<br>
+<br>
+<h3>6.4.1 Logic Op</h3>
+The command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glLogicop</span>(GLenum<span
+ style="font-style: italic;">mode</span>)<br>
+<br>
+</div>
+Specifies the Boolean logic operation for combining the incoming
+fragment color with the destination frame buffer color. &nbsp;Both the
+incoming fragment color and destination frame buffer colors are
+interpreted as four-tuples of unsigned integer color components in the
+range [0, 2<sup>N</sup>-1] where N is the number of bits per color
+channel. &nbsp;N may not be the same for all color channels.<br>
+<br>
+The following table lists all values for <span
+ style="font-style: italic;">mode</span> and the boolean arithmetic used
+to combine the incoming fragment color value (src)<span
+ style="font-style: italic;"></span><span style="font-style: italic;"></span><span
+ style="font-style: italic;"></span><span style="font-style: italic;"></span><span
+ style="font-style: italic;"></span> with the destination framebuffer
+color value (dst). &nbsp;Standard ANSI C operators used.<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 50%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">LogicOp <span
+ style="font-style: italic;">mode</span><br>
+ </td>
+ <td style="vertical-align: top;">Resulting channel value<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CLEAR<br>
+ </td>
+ <td style="vertical-align: top;">0<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SET<br>
+ </td>
+ <td style="vertical-align: top;">~0<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_COPY<br>
+ </td>
+ <td style="vertical-align: top;">src<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_COPY_INVERTED<br>
+ </td>
+ <td style="vertical-align: top;">~s<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NOOP<br>
+ </td>
+ <td style="vertical-align: top;">dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_INVERT<br>
+ </td>
+ <td style="vertical-align: top;">~dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_AND<br>
+ </td>
+ <td style="vertical-align: top;">src &amp; dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NAND<br>
+ </td>
+ <td style="vertical-align: top;">~(src &amp; dst)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_AND_REVERSE<br>
+ </td>
+ <td style="vertical-align: top;">src &amp; ~dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_AND_INVERTED<br>
+ </td>
+ <td style="vertical-align: top;">~src &amp; dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_OR<br>
+ </td>
+ <td style="vertical-align: top;">src | dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NOR<br>
+ </td>
+ <td style="vertical-align: top;">~(src | dst)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_OR_REVERSE<br>
+ </td>
+ <td style="vertical-align: top;">src | ~dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_OR_INVERTED<br>
+ </td>
+ <td style="vertical-align: top;">~src | dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_XOR<br>
+ </td>
+ <td style="vertical-align: top;">src ^ dst<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_EQUIV<br>
+ </td>
+ <td style="vertical-align: top;">~(src ^ dst)<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+The fragment's color is replaced by the result of the logic operation.<br>
+<br>
+Specifying any value for <span style="font-style: italic;">mode</span>
+other than those listed in the above table will cause the error
+GL_INVALID_ENUM to be raised.<br>
+<br>
+The default value for <span style="font-style: italic;">mode</span> is
+GL_COPY. &nbsp;The logic operation is disabled by default.<br>
+<br>
+<h3>6.4.2 Blending</h3>
+The command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glBlendFunc</span>(GLenum<span
+ style="font-style: italic;">srcTerm</span>, GLenum <span
+ style="font-style: italic;">dstTerm</span>)<br>
+</div>
+<br>
+specifies the terms of the blending equation. &nbsp;If Cf = (Rf, Gf,
+Bf, Af) is the incoming fragment color and Cb = (Rb, Gb, Bb, Ab) is the
+frame buffer color, then the resulting color Cv = (Rv, Gv, Bv, Av) is
+computed by:<br>
+<br>
+<div style="margin-left: 40px;">Cv = Cf * <span
+ style="font-style: italic;">srcTerm</span> + Cb * <span
+ style="font-style: italic;">dstTerm</span><br>
+<span style="font-style: italic;"></span></div>
+<span style="font-style: italic;"> </span><br>
+All possible values for <span style="font-style: italic;">srcTerm</span>
+and the corresponding arithmetic term are listed in the following table:<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 70%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;"><span style="font-style: italic;">srcTerm</span><br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">srcTerm</span>Arithmetic<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ZERO<br>
+ </td>
+ <td style="vertical-align: top;">(0, 0, 0, 0)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE<br>
+ </td>
+ <td style="vertical-align: top;">(1, 1, 1, 1)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_DST_COLOR<br>
+ </td>
+ <td style="vertical-align: top;">(Rb, Gb, Bb, Ab)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE_MINUS_DST_COLOR<br>
+ </td>
+ <td style="vertical-align: top;">(1-Rb, 1-Gb, 1-Bb, 1-Ab)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SRC_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(Af, Af, Af, AF)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE_MINUS_SRC_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(1-Af, 1-Af, 1-Af, 1-Af)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_DST_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(Ab, Ab, Ab, Ab)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE_MINUS_DST_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(1-Ab, 1-Ab, 1-Ab, 1-Ab)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SRC_ALPHA_SATURATE<br>
+ </td>
+ <td style="vertical-align: top;">(m, m, m, 1) where m = MIN(Af,
+1-Ab)<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+All possible values for <span style="font-style: italic;">srcTerm</span>
+and the corresponding arithmetic term are listed in the following table:<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 70%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;"><span style="font-style: italic;">dstTerm</span><br>
+ </td>
+ <td style="vertical-align: top;"><span style="font-style: italic;">dstTerm</span>Arithmetic<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ZERO<br>
+ </td>
+ <td style="vertical-align: top;">(0, 0, 0, 0)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE<br>
+ </td>
+ <td style="vertical-align: top;">(1, 1, 1, 1)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SRC_COLOR<br>
+ </td>
+ <td style="vertical-align: top;">(Rf, Gf, Bf, Af)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE_MINUS_SRC_COLOR<br>
+ </td>
+ <td style="vertical-align: top;">(1-Rf, 1-Gf, 1-Bf, 1-Af)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SRC_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(Af, Af, Af, AF)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE_MINUS_SRC_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(1-Af, 1-Af, 1-Af, 1-Af)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_DST_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(Ab, Ab, Ab, Ab)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ONE_MINUS_DST_ALPHA<br>
+ </td>
+ <td style="vertical-align: top;">(1-Ab, 1-Ab, 1-Ab, 1-Ab)<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+The fragment's color is replaced by the result of the blending equation.<br>
+<br>
+Values for <span style="font-style: italic;">srcTerm</span> and <span
+ style="font-style: italic;">dstTerm</span> other than those listed in
+the table will cause the error GL_INVALID_ENUM to be raised.<br>
+<br>
+The default value for <span style="font-style: italic;">srcTerm</span>
+is GL_ONE. &nbsp;The default value for <span style="font-style: italic;">dstTerm</span>
+is GL_ZERO. &nbsp;Blending is disabled by default.<br>
+<br>
+<h2>6.5 Color Mask</h2>
+The final fragment color is written into the current color buffer at
+the end of the per-fragment operations. &nbsp;Normally, all color
+channels in the frame buffer are replaced with the final fragment color.
+&nbsp;However, the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glColorMask</span>(GLboolean<span
+ style="font-style: italic;">redMask</span>, GLboolean <span
+ style="font-style: italic;">greenMask</span>, GLboolean <span
+ style="font-style: italic;">blueMask</span>, GLboolean <span
+ style="font-style: italic;">alphaMask</span>)<br>
+</div>
+<br>
+allows selective writing to individual color channels. &nbsp;If <span
+ style="font-style: italic;">redMask</span> is GL_TRUE then writing to
+the red color channel is enabled, otherwise it's disabled.
+&nbsp;Similarly, the green, blue and alpha channels can also be masked.<br>
+<br>
+Initially all four mask values are GL_TRUE.<br>
+<br>
+Color masking is not enabled/disabled with the <span
+ style="font-weight: bold;">glEnable</span>/<span
+ style="font-weight: bold;">glDisable</span> commands.<br>
+<br>
+<h1>7. Frame Buffer Operations</h1>
+The frame buffer is considered to be a two-dimensional array of pixels.
+&nbsp;The frame buffer is also organized into layers or logical buffers.
+&nbsp;There may be a front color buffer, back color buffer and stencil
+buffer. &nbsp;A double-buffered frame buffer has both a front color
+buffer and back color buffer. &nbsp;A single-buffered framebuffer only
+has a front color buffer. &nbsp;Each pixel in a color buffer has a red,
+green and blue value and an optional alpha value.<br>
+<br>
+<h2>7.1 Clearing Buffers</h2>
+Buffers are cleared (set to uniform values) with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glClear</span>(GLbitfield<span
+ style="font-style: italic;">buffers</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">buffers</span> is a bitmask for which
+the value may be the bitwise-OR of the values GL_COLOR_BUFFER_BIT and
+GL_STENCIL_BUFFER_BIT. &nbsp;If the GL_COLOR_BUFFER_BIT bit is
+specified, the current color buffer will be cleared. &nbsp;If the
+GL_STENCIL_BUFFER_BIT bit is specified, the stencil buffer will be
+cleared.<br>
+<br>
+The current color buffer is specified with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glDrawBuffer</span>(GLenum<span
+ style="font-style: italic;"> buffer</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">buffer</span> may be either GL_FRONT,
+GL_BACK or GL_NONE. &nbsp;GL_FRONT indicates that the front color buffer
+will be modified by <span style="font-weight: bold;">glClear</span> and
+any drawing command. &nbsp;GL_BACK indicates that the back color buffer
+will be modified by <span style="font-weight: bold;">glClear</span> and
+any drawing command. &nbsp;GL_NONE indicates that neither color buffer
+will be modified by <span style="font-weight: bold;">glClear</span> or
+any drawing command. &nbsp;GL_BACK is only valid for double-buffered
+frame buffers.<br>
+<br>
+The current scissor rectangle, set by the <span
+ style="font-weight: bold;">glScissor</span> command, effects <span
+ style="font-weight: bold;">glClear</span><span
+ style="font-style: italic;">,</span><span style="font-style: italic;"> </span>limiting
+the clear to the scissor rectangle, if it's enabled. &nbsp;Furthermore, <span
+ style="font-weight: bold;"></span>only the color channels enabled by <span
+ style="font-weight: bold;">glColorMask</span> will be effected by <span
+ style="font-weight: bold;">glClear</span>(GL_COLOR_BUFFER_BIT).
+&nbsp;Likewise, only the stencil bits enabled by <span
+ style="font-weight: bold;">glStencilMask</span> will be effected by <span
+ style="font-weight: bold;">glClear</span>(GL_STENCIL_BUFFER_BIT).<br>
+<br>
+The current clear color is set with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glClearColor</span>(GLclampf<span
+ style="font-style: italic;">red</span>, GLclampf <span
+ style="font-style: italic;">green</span>, GLclampf <span
+ style="font-style: italic;">blue</span>, GLclampf <span
+ style="font-style: italic;">alpha</span>)<br>
+</div>
+<br>
+Subsequent calls to <span style="font-weight: bold;">glClear</span>
+will use the color (<span style="font-style: italic;">red, green, blue,
+alpha</span>) to clear the front or back color buffers.<br>
+<span style="font-style: italic;"></span><br>
+The current stencil clear value is set with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glClearStencil</span>(GLint<span
+ style="font-style: italic;">clearValue</span>)<br>
+</div>
+<br>
+If the stencil buffer is N bits deep, the least significant N bits of <span
+ style="font-style: italic;">clearValue</span> will be used to clear the
+stencil buffer.<br>
+<br>
+<br>
+<h1>8. Other Features</h1>
+<h2>8.1 Frame Buffer Readback</h2>
+A rectangular region of pixels can be read from the frame buffer and
+placed in client memory with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glReadPixels</span>(GLint<span
+ style="font-style: italic;">x</span>, GLint <span
+ style="font-style: italic;">y</span>, GLsizei <span
+ style="font-style: italic;">width</span>, GLsizei <span
+ style="font-style: italic;">height</span>, GLenum <span
+ style="font-style: italic;">format</span>, GLenum <span
+ style="font-style: italic;">type</span>, GLvoid *<span
+ style="font-style: italic;">data</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">x</span> and <span
+ style="font-style: italic;">y</span> specify the coordinate of the
+lower-left corner of the region to read and <span
+ style="font-style: italic;">width</span> and <span
+ style="font-style: italic;">height</span> specify the size of the
+rectangular region to read. &nbsp;<span style="font-style: italic;">format</span>
+specifies the format of image data and must be either GL_RGB or
+GL_RGBA.&nbsp; <span style="font-style: italic;">type</span> specify the
+data type of the image data and must be either GL_UNSIGNED_BYTE or
+GL_FLOAT. &nbsp;Other values for <span style="font-style: italic;">format</span>
+or <span style="font-style: italic;">type</span> will cause the error
+GL_INVALID_ENUM to be raised.<br>
+<br>
+The framebuffer may contain 3-component colors (red, green, blue) or
+4-component colors (red, green, blue, alpha). &nbsp;If an alpha channel
+is not present, alpha values default to 1.0.<br>
+<br>
+The frame buffer color components (red, green, blue, alpha) are either
+converted to 8-bit unsigned integers in the range[0, 255] if <span
+ style="font-style: italic;">type </span>is GL_UNSIGNED_BYTE or
+converted to floating point values in the range [0, 1] if <span
+ style="font-style: italic;">type</span> is GL_FLOAT. &nbsp;The (red,
+green, blue, alpha) tuples are then stored as GL_RGB triplets (by
+dropping the alpha component) or GL_RGBA quadruples in client memory.<br>
+<br>
+Image data is <span style="font-style: italic;">packed</span> into
+client memory according to the pixel packing parameters which are set by
+the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glPixelStorei</span>(GLenum<span
+ style="font-style: italic;"> pname</span>, GLint <span
+ style="font-style: italic;">value</span>)<br>
+</div>
+<br>
+<span style="font-style: italic;">pname</span> must be
+GL_PACK_ROW_LENGTH. &nbsp;<span style="font-style: italic;">value</span>
+indicates the stride (in pixels) between subsequent rows in the
+destination image. &nbsp;If GL_PACK_ROW_LENGTH is zero (the default)
+then the <span style="font-style: italic;">width</span> parameter to <span
+ style="font-weight: bold;">glReadPixels</span> indicates the row stride.<br>
+<br>
+Pixel readback takes place as follows:<br>
+<br>
+<div style="margin-left: 40px;">if (GL_PACK_ROW_LENGTH == 0)<br>
+&nbsp;&nbsp;&nbsp; rowLength = <span style="font-style: italic;">width</span>;<br>
+else<br>
+&nbsp;&nbsp;&nbsp; rowLength = GL_PACK_ROW_LENGTH<br>
+<br>
+if (<span style="font-style: italic;">format</span> == GL_RGB) {<br>
+&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; <span style="font-style: italic;">height</span>;
+i++) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (j = 0; j &lt; <span
+ style="font-style: italic;">width</span>; j++) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; k = (i *
+rowLength + j) * 3;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span
+ style="font-style: italic;">data</span>[k+0] = FrameBuffer(<span
+ style="font-style: italic;">x</span> + j, <span
+ style="font-style: italic;">y</span> + i).red;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; <span
+ style="font-style: italic;">data</span>[k+1] = FrameBuffer(<span
+ style="font-style: italic;">x</span> + j, <span
+ style="font-style: italic;">y</span> + i).green;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span
+ style="font-style: italic;">data</span>[k+2] = FrameBuffer(<span
+ style="font-style: italic;">x</span> + j, <span
+ style="font-style: italic;">y</span> + i).blue;<span
+ style="font-style: italic;"></span><br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+}<br>
+else {<br>
+&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; <span style="font-style: italic;">height</span>;
+i++) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (j = 0; j &lt; <span
+ style="font-style: italic;">width</span>; j++) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; k = (i *
+rowLength + j) * 4;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span
+ style="font-style: italic;">data</span>[k+0] = FrameBuffer(<span
+ style="font-style: italic;">x</span> + j, <span
+ style="font-style: italic;">y</span> + i).red;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; <span
+ style="font-style: italic;">data</span>[k+1] = FrameBuffer(<span
+ style="font-style: italic;">x</span> + j, <span
+ style="font-style: italic;">y</span> + i).green;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span
+ style="font-style: italic;">data</span>[k+2] = FrameBuffer(<span
+ style="font-style: italic;">x</span> + j, <span
+ style="font-style: italic;">y</span> + i).blue;<span
+ style="font-style: italic;"></span><br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span
+ style="font-style: italic;">data</span>[k+3] = FrameBuffer(<span
+ style="font-style: italic;">x</span> + j, <span
+ style="font-style: italic;">y</span> + i).alpha;<span
+ style="font-style: italic;"></span><br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+}<br>
+</div>
+<br>
+The function FrameBuffer(<span style="font-style: italic;">c, r</span>)
+returns the pixel in the frame buffer at column <span
+ style="font-style: italic;">c</span> of row <span
+ style="font-style: italic;">r. &nbsp;</span><span
+ style="font-style: italic;">data</span> is considered to be either a
+GLubyte pointer or a GLfloat pointer, depending on the <span
+ style="font-style: italic;">type</span> parameter. &nbsp;Similarly, the
+FrameBuffer function returns either GLubyte values in the range [0, 255]
+or GLfloat values in the range [0,1], depending on the <span
+ style="font-style: italic;">type</span> parameter.<br>
+<br>
+Pixels may be read from either the front or back color buffer.
+&nbsp;The command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glReadBuffer</span>(GLenum<span
+ style="font-style: italic;">buffer</span>)<br>
+</div>
+<br>
+specifies the source for reading images with <span
+ style="font-weight: bold;">glReadPixels</span>. &nbsp;If <span
+ style="font-style: italic;">buffer</span> is GL_FRONT then front color
+buffer is the source. &nbsp;If <span style="font-style: italic;">buffer</span>
+is GL_BACK then the back color buffer is the source. &nbsp;It is illegal
+to specify GL_BACK when the color buffer is not double buffered.
+&nbsp;Any invalid value for <span style="font-style: italic;">buffer</span>
+will raise the error GL_INVALID_ENUM.<br>
+<br>
+The default read source is GL_BACK if the frame buffer is double
+buffered. &nbsp;Otherwise, the default read source is GL_FRONT.<br>
+<br>
+<h2>8.2 Selection Mode</h2>
+Selection mode is typically used to implement <span
+ style="font-style: italic;">picking</span>: determining which
+primitive(s) are present at particular window positions. &nbsp;The
+command<br>
+<br>
+<div style="margin-left: 40px;">GLint <span style="font-weight: bold;">glRenderMode</span>(GLenum<span
+ style="font-style: italic;">mode</span>)<br>
+</div>
+<br>
+is used to enable selection mode. &nbsp;If <span
+ style="font-style: italic;">mode</span> is GL_SELECTION the graphics
+library is put into selection mode. &nbsp;If <span
+ style="font-style: italic;">mode</span> is GL_RENDER the graphic
+library is put into normal rendering mode. &nbsp;Any other value for <span
+ style="font-style: italic;">mode</span> will raise the error
+GL_INVALID_ENUM.<br>
+<br>
+When in selection mode rendering commands will not effect the
+framebuffer. &nbsp;Instead, a record of the primitives that would have
+been drawn is placed in the <span style="font-style: italic;">selection</span> <span
+ style="font-style: italic;">buffer</span>. &nbsp;The selection buffer
+is specified with the command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glSelectionBuffer</span>(GLsizei<span
+ style="font-style: italic;">n</span>, GLuint *<span
+ style="font-style: italic;">buffer</span>)<br>
+</div>
+<span style="font-style: italic;"></span><span
+ style="font-style: italic;"><br>
+buffer</span> is an array of <span style="font-style: italic;">n</span>
+unsigned integers. &nbsp;No more than <span style="font-style: italic;">n</span>
+values will be placed in the buffer.<br>
+<br>
+The <span style="font-style: italic;">name stack</span> is a stack
+(LIFO) of unsigned integer names. &nbsp;The following commands
+manipulate the name stack:<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glInitNames</span>(void)<br>
+void <span style="font-weight: bold;">glPushName</span>(GLuint <span
+ style="font-style: italic;">name</span>)<br>
+void <span style="font-weight: bold;">glPopName</span>(void)<br>
+void <span style="font-weight: bold;">glLoadName</span>(GLuint <span
+ style="font-style: italic;">name</span>)<br>
+</div>
+<br>
+<span style="font-weight: bold;">glInitNames</span> resets the name
+stack to an empty state. &nbsp;<span style="font-weight: bold;">glPushName<span
+ style="font-style: italic;"> </span></span>pushes the given <span
+ style="font-style: italic;">name</span> value onto the stack. &nbsp;<span
+ style="font-weight: bold;">glPopName</span> pops the top name from the
+stack. &nbsp;<span style="font-weight: bold;">glLoadName<span
+ style="font-style: italic;"> </span></span>replaces the top value on
+the stack with the specified <span style="font-style: italic;">name</span>.
+&nbsp;Stack underflow and overflow conditions cause the errors
+GL_STACK_OVERFLOW and GL_STACK_UNDERFLOW to be raised.<br>
+<br>
+While in selection mode, primitives (points, lines, polygons) are
+transformed and clip-tested normally. &nbsp;Primitives which aren't
+discarded by clipping cause the <span style="font-style: italic;">hit</span> <span
+ style="font-style: italic;">data</span> to be updated. &nbsp;The hit
+data consists of three pieces of information: a hit flag, a minimum Z
+value and a maximum Z value. &nbsp;First, the hit flag is set.
+&nbsp;Then, for each of the primitive's vertices, the vertex Z value is
+compared to the minimum and maximum Z values. &nbsp;The minimum Z value
+is updated if the vertex's Z value is less than the minimum Z value.
+&nbsp;The maximum Z value is updated if the vertex's Z value is greater
+than the maximum Z value.<br>
+<br>
+When any of <span style="font-weight: bold;">glInitNames</span><span
+ style="font-style: italic;"><span style="font-style: italic;">, </span></span><span
+ style="font-weight: bold;">glPushName</span>, <span
+ style="font-weight: bold;">glPopName</span>, <span
+ style="font-weight: bold;">glLoadName</span> or <span
+ style="font-weight: bold;">glRenderMode</span> are called and the hit
+flag is set, a <span style="font-style: italic;">hit record</span> is
+written to the selection buffer.<br>
+<br>
+A hit record consists of a sequence of unsigned integers. &nbsp;The
+first value is the size of the name stack. &nbsp;The second value is the
+minimum Z value multiplied by 2<sup>32</sup>-1. &nbsp;The third value is
+the maximum Z value multiplied by 2<sup>32</sup>-1. &nbsp;The remaining
+values are the values in the name stack, in bottom to top order.
+&nbsp;The hit flag is cleared after a hit record is written to the
+selection buffer. &nbsp;Hit records are places sequentially into the
+selection buffer until it is full or selection mode is terminated.<br>
+<br>
+Selection mode is terminated by calling <span
+ style="font-weight: bold;">glRenderMode</span>(GL_RENDER). &nbsp; The
+return value of <span style="font-weight: bold;">glRenderMode</span>
+will be -1 if the selection buffer overflowed. &nbsp;Otherwise, the
+return value will indicate the number of values written into the
+selection buffer.<br>
+<br>
+<h2>8.3 Synchronization</h2>
+The command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glFlush</span>(void)<br>
+</div>
+<br>
+makes the graphics library to flush all pending graphics commands.
+&nbsp;The command<br>
+<div style="margin-left: 40px;"><br>
+void <span style="font-weight: bold;">glFinish</span>(void)<br>
+</div>
+<br>
+makes the graphics library flush the command queue and wait until those
+commands are completed. &nbsp;<span style="font-weight: bold;">glFlush</span>
+will not return until all previous graphics commands have been fully
+completed.<br>
+<br>
+These commands are typically used to force completion of rendering to
+the front color buffer. &nbsp;Otherwise, rendering to the front color
+buffer may not appear. &nbsp;The <span style="font-style: italic;">swapbuffers</span>
+command (part of the window system binding library) does an implicit
+flush before swapping the front and back color buffers. &nbsp;The <span
+ style="font-weight: bold;">glReadPixels</span> command also does an
+implicit flush before reading pixel data from the frame buffer.<br>
+<br>
+<h1>9. State Queries</h1>
+The current value of nearly all library state variables can be queried.
+&nbsp;This chapter describes the commands used for querying the value of
+state variables.<br>
+<br>
+<h2>9.1 General State Queries</h2>
+The command<br>
+<br>
+<div style="margin-left: 40px;">void <span style="font-weight: bold;">glGetFloatv</span>(GLenum<span
+ style="font-style: italic;">pname</span>, GLfloat *<span
+ style="font-style: italic;">values</span>)<br>
+</div>
+<br>
+returns the value(s) of the state variable specified by <span
+ style="font-style: italic;">pname</span>. &nbsp;The following table
+lists all accepted values for <span style="font-style: italic;">pname</span>
+and a description of the value(s). &nbsp;Specifying any other value for <span
+ style="font-style: italic;">pname</span> causes the error
+GL_INVALID_ENUM to be raised.<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 90%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">Variable (<span
+ style="font-style: italic;">pname)</span><br>
+ </td>
+ <td style="vertical-align: top;">Number of values<br>
+ </td>
+ <td style="vertical-align: top;">Value(s) Description<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ALPHA_BITS<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Number of bits per alpha value
+in the frame buffer.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ALPHA_TEST<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if the alpha test is
+disabled.<br>
+One if the alpha test is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ALPHA_TEST_FUNC<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">The alpha test function.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_BLEND<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if blending is disabled.<br>
+One if blending is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_BLEND_DST<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Blend destination function/term.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_BLEND_SRC<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Blend source function/term.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_BLUE_BITS<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Number of bits per blue value in
+the frame buffer.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_COLOR_CLEAR_VALUE<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Clear color (red, green, blue,
+alpha).<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_COLOR_WRITE_MASK<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Color buffer writemask (red,
+green, blue, alpha).<br>
+Zero if writing is disabled.<br>
+One if writing is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CULL_FACE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if polygon culling is
+disabled.<br>
+One if polygon culling is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CULL_FACE_MODE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Polygon cull mode: GL_FRONT,
+GL_BACK or GL_FRONT_AND_BACK.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CURRENT_COLOR<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Current color (red, green, blue,
+alpha).<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CURRENT_RASTER_COLOR<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Current raster position color
+(red, green, blue, alpha).<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CURRENT_RASTER_TEXTURE_COORDS<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Current raster position texture
+coordinates (s, t, r, q).<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CURRENT_RASTER_POSITION<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Current raster position (x, y,
+z, w).<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CURRENT_POSITION_VALID<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if current raster position
+is invalid.<br>
+One if current raster position is valid.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_CURRENT_TEXTURE_COORDS<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Current texture coordinates (s,
+t, r, q)<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_DOUBLEBUFFER<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if color buffer is
+single-buffered.<br>
+One if color buffer is double-buffered.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_DRAW_BUFFER<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Current color draw buffer:
+GL_FRONT or GL_BACK.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_FRONT_FACE</td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Polygon front-face winding:
+GL_CW or GL_CCW.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_GREEN_BITS<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Number of bits per green value
+in the frame buffer.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LINE_SMOOTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if line smoothing is
+disabled.<br>
+One if line smoothing is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LINE_STIPPLE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if line stippling is
+disabled.<br>
+One if line stippling is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LINE_STIPPLE_PATTERN<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Line stipple pattern.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LINE_STIPPLE_REPEAT<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Line stipple repeat factor.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LINE_WIDTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Line width in pixels.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LINE_WIDTH_GRANULARITY<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Aliased line width granularity.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LINE_WIDTH_RANGE<br>
+ </td>
+ <td style="vertical-align: top;">2<br>
+ </td>
+ <td style="vertical-align: top;">Minimum and maximum aliased line
+widths.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_ALIASED_LINE_WIDTH_RANGE<br>
+ </td>
+ <td style="vertical-align: top;">2<br>
+ </td>
+ <td style="vertical-align: top;">Minimum and maximum antialiased
+line widths.</td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_COLOR_LOGIC_OP<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if logicop is disabled.<br>
+One if logicop is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_LOGIC_OP_MODE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Logicop function.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MATRIX_MODE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Matrix mode: GL_MODELVIEW or
+GL_PROJECTION.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MAX_MODELVIEW_STACK_DEPTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Maximum size of the modelview
+matrix stack.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MAX_NAME_STACK_DEPTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Maximum size of the selection
+name stack.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MAX_PROJECTION_STACK_DEPTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Maximum size of the projection
+matrix stack.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MAX_TEXTURE_SIZE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Maximum 2D texture image width
+and height.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MAX_VIEWPORT_DIMS<br>
+ </td>
+ <td style="vertical-align: top;">2</td>
+ <td style="vertical-align: top;">Maximum viewport width and
+height in pixels.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MODELVIEW_MATRIX<br>
+ </td>
+ <td style="vertical-align: top;">16<br>
+ </td>
+ <td style="vertical-align: top;">Current/top modelview matrix
+values.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_MODELVIEW_MATRIX_STACK_DEPTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Current size of the modelview
+matrix stack.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NAME_STACK_DEPTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Current size of the selection
+name stack.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_PACK_ROW_LENGTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Pixel packing row length.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_POLYGON_SMOOTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if polygon smoothing is
+disabled.<br>
+One if polygon smoothing is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_PROJECTION_MATRIX<br>
+ </td>
+ <td style="vertical-align: top;">16<br>
+ </td>
+ <td style="vertical-align: top;">Current/top projection matrix
+values.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_PROJECTION_STACK_DEPTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Current size of projection
+matrix stack.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_READ_BUFFER<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Current read buffer: GL_FRONT or
+GL_BACK.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_RED_BITS<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Number of bits per red value in
+the frame buffer.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_RENDER_MODE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Current rendering mode:
+GL_RENDER or GL_SELECTION.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_RGBA_MODE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Always one.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SCISSOR_BOX<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Scissor box (x, y, width,
+height).<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SCISSOR_TEST<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if scissor test is disabled.<br>
+One if scissor test is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SELECTION_BUFFER_SIZE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Size of selection buffer.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_SHADE_MODEL<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Shade model: GL_FLAT or
+GL_SMOOTH.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_BITS<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Number of bits per stencil value
+in the frame buffer.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_CLEAR_VALUE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Stencil buffer clear value.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_FAIL<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Stencil fail operation.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_FUNC<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Stencil function.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_REF<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Stencil reference value.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_TEST<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if stencil test is disabled.<br>
+One if stencil test is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_VALUE_MASK<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Stencil mask value.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STENCIL_WRITE_MASK<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Stencil buffer write mask.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_TEXTURE_2D<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if 2D texture mapping is
+disabled.<br>
+One if 2D texture mapping is enabled.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_TEXTURE_BINDING_2D</td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Name of currently bound 2D
+texture object.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_TEXTURE_ENV_COLOR<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Texture environment color (red,
+green, blue, alpha).<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_TEXTURE_ENV_MODE<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Texture environment mode.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_UNPACK_ROW_LENGTH<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Pixel unpacking row length.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_UNPACK_LSB_FIRST<br>
+ </td>
+ <td style="vertical-align: top;">1<br>
+ </td>
+ <td style="vertical-align: top;">Zero if most significant bit is
+unpacked first for bitmaps.<br>
+One if least significant bit is unpacked first for bitmaps.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_VIEWPORT<br>
+ </td>
+ <td style="vertical-align: top;">4<br>
+ </td>
+ <td style="vertical-align: top;">Current viewport (x, y, width,
+height).<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+<br>
+<h2>9.2 String Queries</h2>
+The command<br>
+<br>
+<div style="margin-left: 40px;">const GLubyte *<span
+ style="font-weight: bold;">glGetString</span>(GLenum <span
+ style="font-style: italic;">name</span>)<br>
+</div>
+<br>
+is used to query string-valued values. &nbsp;The legal values for <span
+ style="font-style: italic;">name</span> are described in the following
+table:<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 80%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;"><span style="font-style: italic;">name</span><br>
+ </td>
+ <td style="vertical-align: top;">Return value<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_VERSION<br>
+ </td>
+ <td style="vertical-align: top;">The library version, such as
+"1.2".<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_RENDERER<br>
+ </td>
+ <td style="vertical-align: top;">The renderer, such as "Mesa DRI
+Radeon".<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_VENDOR<br>
+ </td>
+ <td style="vertical-align: top;">The vendor of this
+implementation, such as "Tungsten Graphics, Inc."<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_EXTENSIONS<br>
+ </td>
+ <td style="vertical-align: top;">A white-space separated list of
+the supported extensions. </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+<h2>9.3 Error Queries</h2>
+The command<br>
+<br>
+<div style="margin-left: 40px;">GLenum <span style="font-weight: bold;">glGetError</span>(void)<br>
+</div>
+<br>
+returns the current error code. &nbsp;The current error code will be
+set by a GL command when an error condition has been detected. &nbsp;If
+the current error code is already set, subsequent errors will not be
+recorded. &nbsp;The error code is reset/cleared to GL_NO_ERROR when <span
+ style="font-weight: bold;">glGetError</span> returns. &nbsp;The
+following error codes are possible:<br>
+<br>
+<table cellpadding="2" cellspacing="2" border="1"
+ style="text-align: left; width: 80%; margin-left: auto; margin-right: auto;">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">Error code<br>
+ </td>
+ <td style="vertical-align: top;">Meaning<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_NO_ERROR<br>
+ </td>
+ <td style="vertical-align: top;">No error has been recorded.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_INVALID_ENUM<br>
+ </td>
+ <td style="vertical-align: top;">An enum parameter had an invalid
+value.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_INVALID_VALUE<br>
+ </td>
+ <td style="vertical-align: top;">A numeric parameter had an
+invalid value.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_INVALID_OPERATION<br>
+ </td>
+ <td style="vertical-align: top;">A function was called when not
+legal to do so.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STACK_OVERFLOW<br>
+ </td>
+ <td style="vertical-align: top;">The current transformation
+matrix stack is full.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_STACK_UNDERFLOW<br>
+ </td>
+ <td style="vertical-align: top;">The current transformation
+matrix stack is empty.<br>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">GL_OUT_OF_MEMORY<br>
+ </td>
+ <td style="vertical-align: top;">The system ran out of dynamic
+memory.<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+<br>
+<h1>10. Unsupported Features</h1>
+This section lists other features and functions which are not supported
+and not previously discussed.<br>
+<br>
+<h2>10.1 Feedback Mode</h2>
+Feedback mode and the following related functions are not supported.<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glFeedbackBuffer</span><br>
+<span style="font-weight: bold;">glPassThrough</span><br>
+</div>
+<br>
+<h2>10.2 1D and 3D Textures<br>
+</h2>
+Only 2D texture images are supported. &nbsp;The following functions
+used to specify 1D and 3D texture images are not supported:<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glTexImage1D</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glTexImage3D</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glTexSubImage1D</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glTexSubImage3D</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glCopyTexImage1D</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glCopyTexSubImage1D</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glCopyTexSubImage3D</span><br>
+</div>
+<br>
+<h2>10.3 Alternate Texture Image Commands<br>
+</h2>
+Texture images may only be specified with <span
+ style="font-weight: bold;">glTexImage2D</span>. &nbsp;The following
+alternate texture image commands are not supported:<br>
+<br>
+<div style="margin-left: 40px; font-weight: bold;">glTexSubImage2D<br>
+glCopyTexImage2D<br>
+glCopyTexSubImage2D<br>
+</div>
+<br>
+<h2>10.4 Proxy Textures</h2>
+Proxy textures are not supported and the GL_PROXY_TEXTURE_2D token is
+not supported by any function.<br>
+<br>
+<br>
+<h2>10.5 Other Texture Commands</h2>
+The following commands related to texture mapping are not supported by
+the subset:<br>
+<br>
+<div style="margin-left: 40px; font-weight: bold;"> glPrioritizeTextures<br>
+glAreTexturesResident<br>
+glIsTexture<br>
+glTexEnviv<br>
+glTexEnvf<br>
+glTexParameterf<br>
+glTexParameteriv<br>
+glTexParameterfv<br>
+</div>
+<br>
+<br>
+<h2>10.6 Copy and Draw Pixels<br>
+</h2>
+The following commands are not supported:<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glDrawPixels<br>
+glCopyPixels<br>
+glPixelZoom<br>
+<br>
+</span></div>
+<h2>10.7 Color Index Mode<br>
+</h2>
+Color index mode and the following related commands are not supported:<br>
+<br>
+<span style="font-weight: bold;"></span>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glIndexub<br>
+</span><span style="font-weight: bold;">glIndexi</span><br>
+<span style="font-weight: bold;">glIndexs<br>
+glIndexf<br>
+glIndexd<br>
+</span><span style="font-weight: bold;">glIndexubv<br>
+</span><span style="font-weight: bold;">glIndexiv</span><br>
+<span style="font-weight: bold;">glIndexsv<br>
+glIndexfv<br>
+glIndexdv</span><span style="font-weight: bold;"><br>
+glIndexMask<br>
+</span><span style="font-weight: bold;">glClearIndex<br>
+glIndexPointer</span><br style="font-weight: bold;">
+<br>
+</div>
+<h2>10.8 Pixel Transfer Operations</h2>
+The pixel transfer operations (scale, bias, look-up table, etc) are not
+supported and the following commands are omitted:<br>
+<br style="font-weight: bold;">
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glPixelTransferf</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glPixelTransferi</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glPixelMapfv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glPixelMapuiv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glPixelMapusv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glGetPixelMapfv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glGetPixelMapuiv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glGetPixelMapusv</span><br>
+</div>
+<br>
+<h2>10.9 Hints</h2>
+Hints and the following related command is not supported:<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glHint<br>
+</span><br>
+</div>
+<h2>10.10 State Query Commands<br>
+</h2>
+The following state query commands are not supported:<br>
+<br>
+<div style="margin-left: 40px; font-weight: bold;">glGetBooleanv<br>
+glGetIntegerv<br>
+glGetDoublev<br>
+glGetPointerv<br>
+glGetTexEnvi<br>
+glGetTexEnvf<br>
+glGetTexParameteriv<br>
+glGetTexParameterfv<br>
+glGetTexLevelParameteriv<br>
+glGetTexLevelParameterfv<br>
+glGetTexImage<br>
+glGetClipPlane<br>
+</div>
+<br>
+<h2>10.11 Attribute Stacks</h2>
+State attribute stacks and the following related commands are not
+supported:<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glPushAttrib</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glPopAtttrib</span><br>
+<br style="font-weight: bold;">
+</div>
+<h2>10.12 Double-Valued Functions</h2>
+All functions which take double-precision floating point values, but
+for which there is an equivalent single-precision valued function, are
+omitted. &nbsp;This includes, but is not limited to:<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glVertex2d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glVertex2dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glVertex3d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glVertex3dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glVertex4d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glVertex4dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glColor3d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glColor3d</span><span
+ style="font-weight: bold;">v</span><br style="font-weight: bold;">
+<span style="font-weight: bold;">glColor4d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glColor4dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glTexCoord1d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glTexCoord1d</span><span
+ style="font-weight: bold;">v</span><br style="font-weight: bold;">
+<span style="font-weight: bold;">glTexCoord2d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glTexCoord2dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glTexCoord3d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glTexCoord3dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glTexCoord4d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glTexCoord4dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glRasterPos2d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glRasterPos2dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glRasterPos3d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glRasterPos3dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glRasterPos4d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;"> glRasterPos4dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glLoadMatrixd</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glMultMatrixd</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glScaled</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glRotated</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glTranslated<br>
+glRectd<br>
+glRectdv<br>
+</span> <span style="font-weight: bold;"><br>
+</span> </div>
+<h2>10.13 Evaluators</h2>
+Evaluators and the following related commands are not supported:<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glMap1f</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glMap2d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glMap2f</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glGetMapdv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glGetMapfv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glGetMapiv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord1d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord1f</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord1dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord1fv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord2d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord2f</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord2dv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalCoord2fv</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glMapGrid1d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glMapGrid1f</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glMapGrid2d</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glMapGrid2f</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalPoint1</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalPoint2</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalMesh1</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glEvalMesh2</span><br
+ style="font-weight: bold;">
+</div>
+<br>
+<h2>10.14 Display Lists</h2>
+Display lists and the following related commands are not supported:<br>
+<br>
+<div style="margin-left: 40px; font-weight: bold;">glIsList<br>
+glDeleteLists<br>
+glGenLists<br>
+glNewList<br>
+glEndList<br>
+glCallList<br>
+glCallLists<br>
+glListBase<br>
+</div>
+<br>
+<h2>10.15 Accumulation Buffer</h2>
+The accumulation buffer and the following related commands are not
+supported:<br>
+<br style="font-weight: bold;">
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glAccum</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glClearAccum</span><br>
+</div>
+<br>
+<h2>10.16 Fog</h2>
+Fog and the following related commands are not supported:<br>
+<br>
+<div style="margin-left: 40px; font-weight: bold;"> glFogi<br>
+glFogf<br>
+glFogiv<br>
+glFogfv<br>
+</div>
+<br>
+<h2>10.17 Depth Test</h2>
+Depth testing and the following related commands are not supported:<br>
+<br>
+<div style="margin-left: 40px;"><span style="font-weight: bold;">glDepthFunc</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glDepthMask</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glDepthRange</span><br
+ style="font-weight: bold;">
+<span style="font-weight: bold;">glClearDepth</span><br>
+</div>
+<br>
+<h2>10.18 Imaging Subset</h2>
+The OpenGL imaging subset (which implements features such as
+convolution, histogram, min/max recording, color matrix and color
+tables) is not supported.<br>
+<br>
+<br>
+<h1>Appendix A: Issues</h1>
+This appendix lists documentation and subset issues with their current
+status. &nbsp;For items which are still open, the documentation (above)
+follows the recommended solution.<br>
+<br>
+<h2>A.1 Vertex Arrays</h2>
+Should vertex arrays be supported? &nbsp;Is there a performance
+advantage?<br>
+<br>
+RESOLUTION: No, there isn't enough of a performance advantage to
+justify them.<br>
+<br>
+<h2>A.2 Polygon Antialiasing and Edge Flags</h2>
+Should edge flags be supported for antialiasing?<br>
+<br>
+Edge flags don't effect antialiasing, at least not normally. &nbsp;A
+number of approaches to antialiasing have been summarized in email.<br>
+<br>
+RECOMMENDATION: don't support edge flags. &nbsp;They don't effect
+polygon antialiasing.<br>
+<br>
+RESOLUTION: closed, as of 26 Feb 2003.<br>
+<br>
+<h2>A.3 glRasterPos vs. glWindowPos</h2>
+Should glRasterPos and/or glWindowPos commands be supported?<br>
+<br>
+RESOLUTION: Closed: implement glRasterPos commands, but not glWindowPos
+commands.<br>
+<br>
+<h2>A.4 GL_IBM_rasterpos_clip extension</h2>
+Should the GL_IBM_rasterpos_clip extension be implemented?<br>
+<br>
+RESOLUTION: &nbsp;No. &nbsp;It's not required.<br>
+<br>
+<h2>A.5 Image Formats and Types</h2>
+Which image formats and types should be supported for <span
+ style="font-weight: bold;">glTexImage2D</span> and <span
+ style="font-weight: bold;">glReadPixels</span>?<br>
+<br>
+OpenGL specifies a <span style="font-weight: bold;">large</span>
+variety of image formats and data types. &nbsp;Only a few are commonly
+used.<br>
+<br>
+RECOMMENDATION: &nbsp;we propose a subset:<br>
+<br>
+For <span style="font-weight: bold;">glTexImage2D</span> only allow <span
+ style="font-style: italic;">type</span>=GL_UNSIGNED_BYTE and <span
+ style="font-style: italic;">format</span>=GL_RGBA, GL_RGB,
+GL_INTENSITY. &nbsp; Only allow <span style="font-style: italic;">internalFormat</span>
+to be GL_RGBA, GL_RGB or GL_INTENSITY as well.&nbsp; Basically, only
+support image formats/types that are directly supported by the Radeon
+hardware. &nbsp;This will allow <span style="font-weight: bold;">glTexImage2D</span>
+to basically just use <span style="font-weight: bold;">memcpy</span> to
+copy texture images.<br>
+<br>
+For <span style="font-weight: bold;">glReadPixels</span>, only allow <span
+ style="font-style: italic;">type</span> = GL_UNSIGNED_BYTE or GL_FLOAT.
+&nbsp;Only allow <span style="font-style: italic;">format</span> =
+GL_RGB or GL_RGBA. &nbsp;This is just enough to support the OpenGL
+conformance tests.<br>
+<br>
+RESOLUTION: open<br>
+<br>
+<h2>A.6 Texture Environment Modes</h2>
+Which texture environment modes should be supported? &nbsp;OpenGL 1.2
+has GL_REPLACE, GL_MODULATE, GL_DECAL and GL_BLEND. &nbsp;GL_DECAL isn't
+defined for all base internal texture formats. &nbsp;GL_ADD is another
+useful mode. &nbsp;Perhaps drop GL_DECAL mode and add GL_ADD mode.<br>
+<br>
+RECOMMENDATION: implement the standard modes GL_REPLACE, GL_MODULATE,
+GL_DECAL and GL_BLEND.<br>
+<br>
+RESOLUTION: open<br>
+<br>
+<h2>A.7 Truncated Mipmaps and LOD Control</h2>
+Should we support the GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_MAX_LEVEL,
+GL_TEXTURE_MIN_LOD and GL_TEXTURE_MAX_LOD texture parameters?<br>
+<br>
+RECOMMENDATION: &nbsp;We propose omitting these features at this time,
+in the interest of simplifying the driver.<br>
+<br>
+RESOLUTION: open<br>
+<br>
+<h2>A.8 Texture Priorities and Residency</h2>
+Should the subset support texture priorities via <span
+ style="font-weight: bold;">glPrioritizeTextures</span> and the <span
+ style="font-weight: bold;">glAreTexturesResident</span> command?<br>
+<br>
+RECOMMENDATION: &nbsp;Few applications use these features and
+functions. &nbsp;We propose omitting them to simplify the driver.<br>
+<br>
+RESOLUTION: open<br>
+<br>
+<h2>A.9 Pixel Pack/Unpack Alignment Control</h2>
+Should we support the GL_PACK_ALIGNMENT and GL_UNPACK_ALIGNMENT options?<br>
+<br>
+These are used to align pixel data addresses to 1, 2 and 4-byte
+multiples for <span style="font-weight: bold;">glBitmap, glTexImage2D</span>
+and <span style="font-weight: bold;">glReadPixels</span>. &nbsp;These
+aren't strictly needed since the user can provide a 1, 2 or 4-byte
+aligned address and appropriate GL_PACK_ROW_LENGTH or
+GL_UNPACK_ROW_LENGTH values instead.<br>
+<br>
+RECOMMENDATION: &nbsp;We recommend omitting them to simplify the driver.<br>
+<br>
+RESOLUTION: open<br>
+<br>
+<h2>A.10 Pixel Pack/Unpack Skip Rows/Pixels Control</h2>
+Should we support the GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS,
+GL_PACK_SKIP_PIXELS and GL_PACK_SKIP_ROWS options for pixel
+unpacking/packing?<br>
+<br>
+These options aren't really needed since the user can adjust the start
+address and GL_PACK/UNPACK_ROW_LENGTH parameters to achieve the same
+effect.<br>
+<br>
+RECOMMENDATION: &nbsp;omit these parameters.<br>
+<br>
+RESOLUTION: open<br>
+<br>
+<h2>A.11 Texture State Queries</h2>
+Should we support the command <span style="font-weight: bold;">glGetTexEnvi/fv,
+glGetTexParameteri/fv</span> and <span style="font-weight: bold;">glGetTexLevelParameteri/fv</span>?<br>
+<br>
+RECOMMENDATION: &nbsp;No.&nbsp;They're seldom needed and their
+implementation is several hundred lines of code in length.<br>
+<br>
+RESOLUTION: &nbsp;open<br>
+<br>
+<h2>A.12 glGetIntegerv, glGetBooleanv and glGetDoublev</h2>
+Should we support the commands <span style="font-weight: bold;">glGetIntegerv,
+glGetBooleanv </span>and <span style="font-weight: bold;">glGetDoublev</span>
+in addition to <span style="font-weight: bold;">glGetFloatv</span>?<br>
+<br>
+RECOMMENDATION: &nbsp;Omit the boolean, integer and double-valued
+functions. All state values which can be queried by these commands can
+be expressed as floating point values and queried with <span
+ style="font-weight: bold;">glGetFloatv</span>. &nbsp;The
+implementation of the other three commands involves many lines of code.<br>
+<br>
+RESOLUTION: &nbsp;open<br>
+<br>
+<h2>A.13 glBitmap and Per-Fragment Operations</h2>
+Should bitmaps rendered with <span style="font-weight: bold;">glBitmap</span>
+be subjected to the per-fragment operations?<br>
+<br>
+If bitmaps are implemented with points it will be easy to implement the
+per-fragment operations. &nbsp;Otherwise, it could be difficult.<br>
+<br>
+RECOMMENDATION: &nbsp;Implement glBitmap by drawing points/pixels with
+the hardware. &nbsp;This will make supporting the per-fragments
+trivially easy. &nbsp;Also, it makes portrait-mode display relatively
+easy.<br>
+<br>
+RESOLUTION: &nbsp;open<br>
+<br>
+<h2>A.14 Reduced gl.h Header File</h2>
+Should we produce a reduced gl.h header file which only defines the
+tokens and functions which are implemented by the subset?<br>
+<br>
+RECOMMENDATION: yes. &nbsp;It would be a useful reference to
+programmers to quickly determine which functions and tokens are
+supported.<br>
+<br>
+RESOLUTION: open<br>
+<br>
+<h2>A.15 glPolygonMode</h2>
+Is <span style="font-weight: bold;">glPolygonMode</span> needed?<br>
+<br>
+RECOMMENDATION: No. &nbsp;Omit it.<br>
+<br>
+RESOLUTION: closed, as of 26 Feb 2003<br>
+<br>
+<br>
+<p> </p>
+</body>
+</html>
diff --git a/docs/subset.html b/docs/subset.html
new file mode 100644
index 00000000000..dd1d742a821
--- /dev/null
+++ b/docs/subset.html
@@ -0,0 +1,33 @@
+<HTML>
+
+<TITLE>Mesa Subset</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
diff --git a/docs/systems.html b/docs/systems.html
new file mode 100644
index 00000000000..48ac0176443
--- /dev/null
+++ b/docs/systems.html
@@ -0,0 +1,56 @@
+<HTML>
+
+<TITLE>Supported Systems and Drivers</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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>
+The DRI hardware drivers for the X.org server and XFree86 provide
+hardware accelerated rendering for chips from ATI, Intel, Matrox, 3dfx
+and others on Linux and FreeBSD.
+</p>
+
+<p>
+Drivers for other assorted platforms include:
+the Amiga, Apple Macintosh, BeOS, NeXT, OS/2, MS-DOS, VMS, Windows
+9x/NT, and Direct3D.
+</p>
+
+<p>
+Details about particular drivers follows.
+Be warned that some drivers may be out of date and no longer function.
+</p>
+
+<UL>
+<LI>Xlib driver for the X Window System <A HREF="README.X11">(README.X11)</A>
+<li><a href="http://dri.freedesktop.org/" target="_parent">
+DRI hardware drivers</a> for the X window system
+<LI>Microsoft Windows <A HREF="README.WIN32">(README.WIN32)</A>
+<LI>DEC VMS <A HREF="README.VMS">(README.VMS)</A>
+<LI>3dfx/Glide <A HREF="README.3DFX">(README.3DFX)</A>
+<LI>GGI <A HREF="README.GGI">(README.GGI)</A>
+<LI>Amiga Amiwin <A HREF="README.AMIWIN">(README.AMIWIN)</A>
+<LI>BeOS <A HREF="README.BEOS">(README.BEOS)</A>
+<LI>Direct3D driver <A HREF="README.D3D">(README.D3D)</A>
+<LI>DJGPP <A HREF="README.DJ">(README.DJ)</A>
+<LI>LynxOS <A HREF="README.LYNXOS">(README.LYNXOS)</A>
+<LI>Mingw32 <A HREF="README.MINGW32">(README.MINGW32)</A>
+<LI>NeXT <A HREF="README.NeXT">(README.NeXT)</A>
+<LI>OpenStep <A HREF="README.OpenStep">(README.OpenStep)</A>
+<LI>OS/2 <A HREF="README.OS2">(README.OS2)</A>
+<LI>WindML <A HREF="README.WINDML">(README.WINDML)</A>
+<LI><a href="http://utah-glx.sourceforge.net/" target="_parent">Utah GLX drivers</a>
+</UL>
+
+</body>
+</html>
diff --git a/docs/thanks.html b/docs/thanks.html
new file mode 100644
index 00000000000..78b9e3e5ec6
--- /dev/null
+++ b/docs/thanks.html
@@ -0,0 +1,134 @@
+<HTML>
+
+<HEAD>
+<TITLE>Acknowledgements</TITLE>
+</HEAD>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Acknowledgments</H1>
+
+
+The following individuals and groups are to be acknowledged for their
+contributions to Mesa over the years.
+This list is far from complete and somewhat dated, unfortunately.
+
+
+<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>
+website 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>The Mesa CVS repository is hosted by
+<a href="http://freedesktop.org/" target="_parent">freedesktop.org</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>
diff --git a/docs/utilities.html b/docs/utilities.html
new file mode 100644
index 00000000000..4693639b8a6
--- /dev/null
+++ b/docs/utilities.html
@@ -0,0 +1,26 @@
+<HTML>
+
+<TITLE>Development Utilities</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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> \ No newline at end of file
diff --git a/docs/utility.html b/docs/utility.html
new file mode 100644
index 00000000000..c7cad0114bb
--- /dev/null
+++ b/docs/utility.html
@@ -0,0 +1,44 @@
+<HTML>
+
+<TITLE>Utilities</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Utilities</H1>
+
+<ul>
+<li><a href="http://fsv.sourceforge.net/"
+ target="_parent">fsv</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>
diff --git a/docs/webmaster.html b/docs/webmaster.html
new file mode 100644
index 00000000000..e645b90ba19
--- /dev/null
+++ b/docs/webmaster.html
@@ -0,0 +1,24 @@
+<HTML>
+
+<TITLE>Mesa Introduction</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<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> \ No newline at end of file