diff options
Diffstat (limited to 'mesalib/docs')
133 files changed, 23449 insertions, 0 deletions
diff --git a/mesalib/docs/COPYING b/mesalib/docs/COPYING new file mode 100644 index 000000000..b88946cc6 --- /dev/null +++ b/mesalib/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/mesalib/docs/MESA_agp_offset.spec b/mesalib/docs/MESA_agp_offset.spec new file mode 100644 index 000000000..8dcc72379 --- /dev/null +++ b/mesalib/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/mesalib/docs/MESA_copy_sub_buffer.spec b/mesalib/docs/MESA_copy_sub_buffer.spec new file mode 100644 index 000000000..752a014b3 --- /dev/null +++ b/mesalib/docs/MESA_copy_sub_buffer.spec @@ -0,0 +1,96 @@ +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: 12 January 2009 + +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. + + If dpy and drawable are the display and drawable for the calling + thread's current context, glXCopySubBufferMESA performs an + implicit glFlush before it returns. Subsequent OpenGL commands + may be issued immediately after calling glXCopySubBufferMESA, but + are not executed until the copy is completed. + +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 + + 12 January 2009 Ian Romanick - Added language about implicit flush + and command completion. + 8 June 2000 Brian Paul - initial specification + diff --git a/mesalib/docs/MESA_pack_invert.spec b/mesalib/docs/MESA_pack_invert.spec new file mode 100644 index 000000000..53d5fca71 --- /dev/null +++ b/mesalib/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/mesalib/docs/MESA_pixmap_colormap.spec b/mesalib/docs/MESA_pixmap_colormap.spec new file mode 100644 index 000000000..fb0b441cc --- /dev/null +++ b/mesalib/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/mesalib/docs/MESA_release_buffers.spec b/mesalib/docs/MESA_release_buffers.spec new file mode 100644 index 000000000..8db9350d8 --- /dev/null +++ b/mesalib/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/mesalib/docs/MESA_resize_buffers.spec b/mesalib/docs/MESA_resize_buffers.spec new file mode 100644 index 000000000..533d017c9 --- /dev/null +++ b/mesalib/docs/MESA_resize_buffers.spec @@ -0,0 +1,81 @@ +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 + + +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/mesalib/docs/MESA_set_3dfx_mode.spec b/mesalib/docs/MESA_set_3dfx_mode.spec new file mode 100644 index 000000000..06d97ca02 --- /dev/null +++ b/mesalib/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/mesalib/docs/MESA_shader_debug.spec b/mesalib/docs/MESA_shader_debug.spec new file mode 100644 index 000000000..fab92abc7 --- /dev/null +++ b/mesalib/docs/MESA_shader_debug.spec @@ -0,0 +1,264 @@ +Name + + MESA_shader_debug + +Name Strings + + GL_MESA_shader_debug + +Contact + + Brian Paul (brian.paul 'at' tungstengraphics.com) + Michal Krol (mjkrol 'at' gmail.com) + +Status + + Obsolete. + +Version + + Last Modified Date: July 30, 2006 + Author Revision: 0.2 + +Number + + TBD + +Dependencies + + OpenGL 1.0 is required. + + The ARB_shader_objects extension is required. + + The ARB_shading_language_100 extension is required. + + The extension is written against the OpenGL 1.5 specification. + + The extension is written against the OpenGL Shading Language 1.10 + Specification. + +Overview + + This extension introduces a debug object that can be attached to + a program object to enable debugging. Vertex and/or fragment shader, + during execution, issue diagnostic function calls that are logged + to the debug object's log. A separate debug log for each shader type + is maintained. A debug object can be attached, detached and queried + at any time outside the Begin/End pair. Multiple debug objects can + be attached to a single program object. + +IP Status + + None + +Issues + + None + +New Procedures and Functions + + handleARB CreateDebugObjectMESA(void) + void ClearDebugLogMESA(handleARB obj, enum logType, enum shaderType) + void GetDebugLogMESA(handleARB obj, enum logType, enum shaderType, + sizei maxLength, sizei *length, + charARB *debugLog) + sizei GetDebugLogLengthMESA(handleARB obj, enum logType, + enum shaderType) + +New Types + + None + +New Tokens + + Returned by the <params> parameter of GetObjectParameter{fi}vARB: + + DEBUG_OBJECT_MESA 0x8759 + + Accepted by the <logType> argument of ClearDebugLogMESA, + GetDebugLogLengthMESA and GetDebugLogMESA: + + DEBUG_PRINT_MESA 0x875A + DEBUG_ASSERT_MESA 0x875B + +Additions to Chapter 2 of the OpenGL 1.5 Specification +(OpenGL Operation) + + None + +Additions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization) + + None + +Additions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment +Operations and the Frame Buffer) + + None + +Additions to Chapter 5 of the OpenGL 1.5 Specification +(Special Functions) + + None + +Additions to Chapter 6 of the OpenGL 1.5 Specification (State and State +Requests) + + None + +Additions to Appendix A of the OpenGL 1.5 Specification (Invariance) + + None + +Additions to Chapter 1 of the OpenGL Shading Language 1.10 Specification +(Introduction) + + None + +Additions to Chapter 2 of the OpenGL Shading Language 1.10 Specification +(Overview of OpenGL Shading) + + None + +Additions to Chapter 3 of the OpenGL Shading Language 1.10 Specification +(Basics) + + None + +Additions to Chapter 4 of the OpenGL Shading Language 1.10 Specification +(Variables and Types) + + None + +Additions to Chapter 5 of the OpenGL Shading Language 1.10 Specification +(Operators and Expressions) + + None + +Additions to Chapter 6 of the OpenGL Shading Language 1.10 Specification +(Statements and Structure) + + None + +Additions to Chapter 7 of the OpenGL Shading Language 1.10 Specification +(Built-in Variables) + + None + +Additions to Chapter 8 of the OpenGL Shading Language 1.10 Specification +(Built-in Functions) + + Add a new section 8.10 "Debug Functions": + + Debug functions are available to both fragment and vertex shaders. + They are used to track the execution of a shader by logging + passed-in arguments to the debug object's log. Those values can be + retrieved by the application for inspection after shader execution + is complete. + + The text, if any, produced by any of these functions is appended + to each debug object that is attached to the program object. + There are different debug log types + + Add a new section 8.10.1 "Print Function": + + The following printMESA prototypes are available. + + void printMESA(const float value) + void printMESA(const int value) + void printMESA(const bool value) + void printMESA(const vec2 value) + void printMESA(const vec3 value) + void printMESA(const vec4 value) + void printMESA(const ivec2 value) + void printMESA(const ivec3 value) + void printMESA(const ivec4 value) + void printMESA(const bvec2 value) + void printMESA(const bvec3 value) + void printMESA(const bvec4 value) + void printMESA(const mat2 value) + void printMESA(const mat3 value) + void printMESA(const mat4 value) + void printMESA(const sampler1D value) + void printMESA(const sampler2D value) + void printMESA(const sampler3D value) + void printMESA(const samplerCube value) + void printMESA(const sampler1DShadow value) + void printMESA(const sampler2DShadow value) + + The printMESA function writes the argument <value> to the "debug + print log" (XXX DEBUG_PRINT_MESA?). Each component is written in + text format (XXX format!) and is delimited by a white space (XXX 1 + or more?). + + Add a new section 8.10.2 "Assert Function": + + The following assertMESA prototypes are available. + + void assertMESA(const bool condition) + void assertMESA(const bool condition, const int cookie) + void assertMESA(const bool condition, const int cookie, + const int file, const int line) + + The assertMESA function checks if the argument <condition> is + true or false. If it is true, nothing happens. If it is false, + a diagnostic message is written to the "debug assert log". + The message contains the argument <file>, <line>, <cookie> and + implementation dependent double-quoted string, each of this + delimited by a white space. If the argument <cookie> is not present, + it is meant as if it was of value 0. If the arguments <file> and + <line> are not present, they are meant as if they were of values + __FILE__ and __LINE__, respectively. The following three calls + produce the same output, assuming they were issued from the same + file and line. + + assertMESA (false); + assertMESA (false, 0); + assertMESA (false, 0, __FILE__, __LINE__); + + The diagnostic message examples follow. + + 1 89 0 "" + 1 45 333 "all (lessThanEqual (fragColor, vec4 (1.0)))" + 1 66 1 "assertion failed in file 1, line 66, cookie 1" + +Additions to Chapter 9 of the OpenGL Shading Language 1.10 Specification +(Shading Language Grammar) + + None + +Additions to Chapter 10 of the OpenGL Shading Language 1.10 +Specification (Issues) + + None + +Additions to the AGL/EGL/GLX/WGL Specifications + + None + +GLX Protocol + + None + +Errors + + TBD + +New State + + TBD + +New Implementation Dependent State + + TBD + +Sample Code + + TBD + +Revision History + + 29 May 2006 + Initial draft. (Michal Krol) + 30 July 2006 + Add Overview, New Procedures and Functions, New Tokens sections. + Add sections 8.10.1, 8.10.2 to GLSL spec. diff --git a/mesalib/docs/MESA_swap_control.spec b/mesalib/docs/MESA_swap_control.spec new file mode 100644 index 000000000..ecc674649 --- /dev/null +++ b/mesalib/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/mesalib/docs/MESA_swap_frame_usage.spec b/mesalib/docs/MESA_swap_frame_usage.spec new file mode 100644 index 000000000..5023eadd8 --- /dev/null +++ b/mesalib/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 determine 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 occurring. + + 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 committed. In unextended 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 committed 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 + calling 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 committed. 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 successful, 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/mesalib/docs/MESA_texture_array.spec b/mesalib/docs/MESA_texture_array.spec new file mode 100644 index 000000000..9dee65b04 --- /dev/null +++ b/mesalib/docs/MESA_texture_array.spec @@ -0,0 +1,804 @@ +Name + + MESA_texture_array + +Name Strings + + GL_MESA_texture_array + +Contact + + Ian Romanick, IBM (idr 'at' us.ibm.com) + +IP Status + + No known IP issues. + +Status + + Shipping in Mesa 7.1 + +Version + + +Number + + TBD + +Dependencies + + OpenGL 1.2 or GL_EXT_texture3D is required. + + Support for ARB_fragment_program is assumed, but not required. + + Support for ARB_fragment_program_shadow is assumed, but not required. + + Support for EXT_framebuffer_object is assumed, but not required. + + Written based on the wording of the OpenGL 2.0 specification and + ARB_fragment_program_shadow but not dependent on them. + +Overview + + There are a number of circumstances where an application may wish to + blend two textures out of a larger set of textures. Moreover, in some + cases the selected textures may vary on a per-fragment basis within + a polygon. Several examples include: + + 1. High dynamic range textures. The application stores several + different "exposures" of an image as different textures. On a + per-fragment basis, the application selects which exposures are + used. + + 2. A terrain engine where the altitude of a point determines the + texture applied to it. If the transition is from beach sand to + grass to rocks to snow, the application will store each texture + in a different texture map, and dynamically select which two + textures to blend at run-time. + + 3. Storing short video clips in textures. Each depth slice is a + single frame of video. + + Several solutions to this problem have been proposed, but they either + involve using a separate texture unit for each texture map or using 3D + textures without mipmaps. Both of these options have major drawbacks. + + This extension provides a third alternative that eliminates the major + drawbacks of both previous methods. A new texture target, + TEXTURE_2D_ARRAY, is added that functions identically to TEXTURE_3D in + all aspects except the sizes of the non-base level images. In + traditional 3D texturing, the size of the N+1 LOD is half the size + of the N LOD in all three dimensions. For the TEXTURE_2D_ARRAY target, + the height and width of the N+1 LOD is halved, but the depth is the + same for all levels of detail. The texture then becomes an array of + 2D textures. The per-fragment texel is selected by the R texture + coordinate. + + References: + + http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557 + http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516 + http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903 + http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm + +New Procedures and Functions + + All functions come directly from EXT_texture_array. + + void FramebufferTextureLayerEXT(enum target, enum attachment, + uint texture, int level, int layer); + +New Tokens + + All token names and values come directly from EXT_texture_array. + + Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by + the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and + GetDoublev, and by the <target> parameter of TexImage3D, GetTexImage, + GetTexLevelParameteriv, GetTexLevelParameterfv, GetTexParameteriv, and + GetTexParameterfv: + + TEXTURE_1D_ARRAY_EXT 0x8C18 + TEXTURE_2D_ARRAY_EXT 0x8C1A + + Accepted by the <target> parameter of TexImage2D, TexSubImage2D, + CopyTexImage2D, CopyTexSubImage2D, CompressedTexImage2D, + CompressedTexSubImage2D, GetTexLevelParameteriv, and + GetTexLevelParameterfv: + + TEXTURE_1D_ARRAY_EXT + PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 + + Accepted by the <target> parameter of TexImage3D, TexSubImage3D, + CopyTexSubImage3D, CompressedTexImage3D, CompressedTexSubImage3D, + GetTexLevelParameteriv, and GetTexLevelParameterfv: + + TEXTURE_2D_ARRAY_EXT + PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B + + Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, + GetFloatv, and GetDoublev + + TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C + TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D + MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF + + Accepted by the <param> parameter of TexParameterf, TexParameteri, + TexParameterfv, and TexParameteriv when the <pname> parameter is + TEXTURE_COMPARE_MODE_ARB: + + COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E + + (Note: COMPARE_REF_DEPTH_TO_TEXTURE_EXT is simply an alias for the + existing COMPARE_R_TO_TEXTURE token in OpenGL 2.0; the alternate name + reflects the fact that the R coordinate is not always used.) + + Accepted by the <internalformat> parameter of TexImage3D and + CompressedTexImage3D, and by the <format> parameter of + CompressedTexSubImage3D: + + COMPRESSED_RGB_S3TC_DXT1_EXT + COMPRESSED_RGBA_S3TC_DXT1_EXT + COMPRESSED_RGBA_S3TC_DXT3_EXT + COMPRESSED_RGBA_S3TC_DXT5_EXT + + Accepted by the <pname> parameter of + GetFramebufferAttachmentParameterivEXT: + + FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 + + (Note: FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER is simply an alias for the + FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT token provided in + EXT_framebuffer_object. This extension generalizes the notion of + "<zoffset>" to include layers of an array texture.) + +Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation) + + None + +Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization) + + -- Section 3.8.1 "Texture Image Specification" + + Change the first paragraph (page 150) to say (spec changes identical to + EXT_texture_array): + + "The command + + void TexImage3D(enum target, int level, int internalformat, + sizei width, sizei height, sizei depth, int border, + enum format, enum type, void *data); + + is used to specify a three-dimensional texture image. target must be one + one of TEXTURE_3D for a three-dimensional texture or + TEXTURE_2D_ARRAY_EXT for an two-dimensional array texture. + Additionally, target may be either PROXY_TEXTURE_3D for a + three-dimensional proxy texture, or PROXY_TEXTURE_2D_ARRAY_EXT for a + two-dimensional proxy array texture." + + Change the fourth paragraph on page 151 to say (spec changes identical + to EXT_texture_array): + + "Textures with a base internal format of DEPTH_COMPONENT are supported + by texture image specification commands only if target is TEXTURE_1D, + TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_2D_ARRAY_EXT, + PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, PROXY_TEXTURE_1D_ARRAY_EXT, or + PROXY_TEXTURE_2D_ARRAY_EXT. Using this format in conjunction with any + other target will result in an INVALID_OPERATION error." + + + Change the fourth paragraph on page 156 to say (spec changes identical + to EXT_texture_array): + + "The command + + void TexImage2D(enum target, int level, + int internalformat, sizei width, sizei height, + int border, enum format, enum type, void *data); + + is used to specify a two-dimensional texture image. target must be one + of TEXTURE_2D for a two-dimensional texture, TEXTURE_1D_ARRAY_EXT for a + one-dimensional array texture, or one of TEXTURE_CUBE_MAP_POSITIVE_X, + TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y, + TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or + TEXTURE_CUBE_MAP_NEGATIVE_Z for a cube map texture. Additionally, + target may be either PROXY_TEXTURE_2D for a two-dimensional proxy + texture, PROXY_TEXTURE_1D_ARRAY_EXT for a one-dimensional proxy array + texture, or PROXY TEXTURE_CUBE_MAP for a cube map proxy texture in the + special case discussed in section 3.8.11. The other parameters match + the corresponding parameters of TexImage3D. + + For the purposes of decoding the texture image, TexImage2D is + equivalent to calling TexImage3D with corresponding arguments and depth + of 1, except that + + * The border depth, d_b, is zero, and the depth of the image is + always 1 regardless of the value of border. + + * The border height, h_b, is zero if <target> is + TEXTURE_1D_ARRAY_EXT, and <border> otherwise. + + * Convolution will be performed on the image (possibly changing its + width and height) if SEPARABLE 2D or CONVOLUTION 2D is enabled. + + * UNPACK SKIP IMAGES is ignored." + + -- Section 3.8.2 "Alternate Texture Image Specification Commands" + + Change the second paragraph (page 159) (spec changes identical + to EXT_texture_array): + + "The command + + void CopyTexImage2D(enum target, int level, + enum internalformat, int x, int y, sizei width, + sizei height, int border); + + defines a two-dimensional texture image in exactly the manner of + TexImage2D, except that the image data are taken from the framebuffer + rather than from client memory. Currently, target must be one of + TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_CUBE_MAP_POSITIVE_X, + TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE MAP_POSITIVE_Y, + TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or + TEXTURE_CUBE_MAP_NEGATIVE_Z. + + + Change the last paragraph on page 160 to say (spec changes identical + to EXT_texture_array): + + "Currently the target arguments of TexSubImage1D and CopyTexSubImage1D + must be TEXTURE_1D, the target arguments of TexSubImage2D and + CopyTexSubImage2D must be one of TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, + TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X, + TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y, + TEXTURE_CUBE_MAP_POSITIVE_Z, or TEXTURE_CUBE_MAP_NEGATIVE_Z, and the + target arguments of TexSubImage3D and CopyTexSubImage3D must be + TEXTURE_3D or TEXTURE_2D_ARRAY_EXT. ..." + + + -- Section 3.8.4 "Texture Parameters" + + Change the first paragraph (page 166) to say: + + "Various parameters control how the texel array is treated when + specified or changed, and when applied to a fragment. Each parameter is + set by calling + + void TexParameter{if}(enum target, enum pname, T param); + void TexParameter{if}v(enum target, enum pname, T params); + + target is the target, either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, + TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT." + + + -- Section 3.8.8 "Texture Minification" in the section "Scale Factor and Level of Detail" + + Change the first paragraph (page 172) to say: + + "Let s(x,y) be the function that associates an s texture coordinate + with each set of window coordinates (x,y) that lie within a primitive; + define t(x,y) and r(x,y) analogously. Let u(x,y) = w_t * s(x,y), + v(x,y) = h_t * t(x,y), and w(x,y) = d_t * r(x,y), where w_t, h_t, + and d_t are as defined by equations 3.15, 3.16, and 3.17 with + w_s, h_s, and d_s equal to the width, height, and depth of the + image array whose level is level_base. For a one-dimensional + texture or a one-dimensional array texture, define v(x,y) = 0 and + w(x,y) = 0; for a two-dimensional texture or a two-dimensional array + texture, define w(x,y) = 0..." + + -- Section 3.8.8 "Texture Minification" in the section "Mipmapping" + + Change the third paragraph (page 174) to say: + + "For a two-dimensional texture, two-dimensional array texture, or + cube map texture," + + Change the fourth paragraph (page 174) to say: + + "And for a one-dimensional texture or a one-dimensional array texture," + + After the first paragraph (page 175) add: + + "For one-dimensional array textures, h_b and d_b are treated as 1, + regardless of the actual values, when performing mipmap calculations. + For two-dimensional array textures, d_b is always treated as one, + regardless of the actual value, when performing mipmap calculations." + + -- Section 3.8.8 "Automatic Mipmap Generation" in the section "Mipmapping" + + Change the third paragraph (page 176) to say (spec changes identical + to EXT_texture_array): + + "The contents of the derived arrays are computed by repeated, filtered + reduction of the level_base array. For one- and two-dimensional array + textures, each layer is filtered independently. ..." + + -- Section 3.8.8 "Manual Mipmap Generation" in the section "Mipmapping" + + Change first paragraph to say (spec changes identical to + EXT_texture_array): + + "Mipmaps can be generated manually with the command + + void GenerateMipmapEXT(enum target); + + where <target> is one of TEXTURE_1D, TEXTURE_2D, TEXTURE_CUBE_MAP, + TEXTURE_3D, TEXTURE_1D_ARRAY, or TEXTURE_2D_ARRAY. Mipmap generation + affects the texture image attached to <target>. ..." + + -- Section 3.8.10 "Texture Completeness" + + Change the second paragaph (page 177) to say (spec changes identical + to EXT_texture_array): + + "For one-, two-, or three-dimensional textures and one- or + two-dimensional array textures, a texture is complete if the following + conditions all hold true:" + + -- Section 3.8.11 "Texture State and Proxy State" + + Change the second and third paragraphs (page 179) to say (spec changes + identical to EXT_texture_array): + + "In addition to image arrays for one-, two-, and three-dimensional + textures, one- and two-dimensional array textures, and the six image + arrays for the cube map texture, partially instantiated image arrays + are maintained for one-, two-, and three-dimensional textures and one- + and two-dimensional array textures. Additionally, a single proxy image + array is maintained for the cube map texture. Each proxy image array + includes width, height, depth, border width, and internal format state + values, as well as state for the red, green, blue, alpha, luminance, + and intensity component resolutions. Proxy image arrays do not include + image data, nor do they include texture properties. When TexImage3D is + executed with target specified as PROXY_TEXTURE_3D, the + three-dimensional proxy state values of the specified level-of-detail + are recomputed and updated. If the image array would not be supported + by TexImage3D called with target set to TEXTURE 3D, no error is + generated, but the proxy width, height, depth, border width, and + component resolutions are set to zero. If the image array would be + supported by such a call to TexImage3D, the proxy state values are set + exactly as though the actual image array were being specified. No pixel + data are transferred or processed in either case. + + Proxy arrays for one- and two-dimensional textures and one- and + two-dimensional array textures are operated on in the same way when + TexImage1D is executed with target specified as PROXY_TEXTURE_1D, + TexImage2D is executed with target specified as PROXY_TEXTURE_2D or + PROXY_TEXTURE_1D_ARRAY_EXT, or TexImage3D is executed with target + specified as PROXY_TETXURE_2D_ARRAY_EXT." + + -- Section 3.8.12 "Texture Objects" + + Change section (page 180) to say (spec changes identical to + EXT_texture_array): + + "In addition to the default textures TEXTURE_1D, TEXTURE_2D, + TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_EXT, + named one-, two-, and three-dimensional, cube map, and one- and + two-dimensional array texture objects can be created and operated upon. + The name space for texture objects is the unsigned integers, with zero + reserved by the GL. + + A texture object is created by binding an unused name to TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or + TEXTURE_2D_ARRAY_EXT. The binding is effected by calling + + void BindTexture(enum target, uint texture); + + with <target> set to the desired texture target and <texture> set to + the unused name. The resulting texture object is a new state vector, + comprising all the state values listed in section 3.8.11, set to the + same initial values. If the new texture object is bound to TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or + TEXTURE_2D_ARRAY_EXT, it is and remains a one-, two-, + three-dimensional, cube map, one- or two-dimensional array texture + respectively until it is deleted. + + BindTexture may also be used to bind an existing texture object to + either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, + TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT. The error + INVALID_OPERATION is generated if an attempt is made to bind a texture + object of different dimensionality than the specified target. If the + bind is successful no change is made to the state of the bound texture + object, and any previous binding to target is broken. + + While a texture object is bound, GL operations on the target to which + it is bound affect the bound object, and queries of the target to which + it is bound return state from the bound object. If texture mapping of + the dimensionality of the target to which a texture object is bound is + enabled, the state of the bound texture object directs the texturing + operation. + + In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, + TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_ARRAY_EXT have + one-, two-, three-dimensional, cube map, and one- and two-dimensional + array texture state vectors respectively associated with them. In order + that access to these initial textures not be lost, they are treated as + texture objects all of whose names are 0. The initial one-, two-, + three-dimensional, cube map, one- and two-dimensional array textures + are therefore operated upon, queried, and applied as TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and + TEXTURE_2D_ARRAY_EXT respectively while 0 is bound to the corresponding + targets. + + Change second paragraph on page 181 to say (spec changes identical to + EXT_texture_array): + + "... If a texture that is currently bound to one of the targets + TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, + TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT is deleted, it is as + though BindTexture had been executed with the same target and texture + zero. ..." + + Change second paragraph on page 182 to say (spec changes identical to + EXT_texture_array): + + "The texture object name space, including the initial one-, two-, and + three dimensional, cube map, and one- and two-dimensional array texture + objects, is shared among all texture units. ..." + + + -- Section 3.8.14 "Depth Texture Comparison Modes" in "Texture Comparison Modes" + + Change second through fourth paragraphs (page 188) to say: + + "Let D_t be the depth texture value, in the range [0, 1]. For + texture lookups from one- and two-dimesional, rectangle, and + one-dimensional array targets, let R be the interpolated <r> + texture coordinate, clamped to the range [0, 1]. For texture lookups + from two-dimesional array texture targets, let R be the interpolated + <q> texture coordinate, clamped to the range [0, 1]. Then the + effective texture value L_t, I_t, or A_t is computed as follows: + + If the value of TEXTURE_COMPARE_MODE is NONE, then + + r = Dt + + If the value of TEXTURE_COMPARE_MODE is + COMPARE_REF_DEPTH_TO_TEXTURE_EXT), then r depends on the texture + comparison function as shown in table 3.27." + + -- Section 3.8.15 "Texture Application" + + Change the first paragraph (page 189) to say: + + "Texturing is enabled or disabled using the generic Enable and Disable + commands, respectively, with the symbolic constants TEXTURE_1D, + TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or + TEXTURE_2D_ARRAY_EXT to enable one-, two-, three-dimensional, cube + map, one-dimensional array, or two-dimensional array texture, + respectively. If both two- and one-dimensional textures are enabled, + the two-dimensional texture is used. If the three-dimensional and + either of the two- or one-dimensional textures is enabled, the + three-dimensional texture is used. If the cube map texture and any of + the three-, two-, or one-dimensional textures is enabled, then cube map + texturing is used. If one-dimensional array texture is enabled and any + of cube map, three-, two-, or one-dimensional textures is enabled, + one-dimensional array texturing is used. If two-dimensional array + texture is enabled and any of cube map, three-, two-, one-dimensional + textures or one-dimensional array texture is enabled, two-dimensional + array texturing is used..." + + -- Section 3.11.2 of ARB_fragment_program (Fragment Program Grammar and Restrictions): + + (mostly add to existing grammar rules) + + <optionName> ::= "MESA_texture_array" + + <texTarget> ::= "1D" + | "2D" + | "3D" + | "CUBE" + | "RECT" + | <arrayTarget> (if program option is present) + | <shadowTarget> (if program option is present) + + <arrayTarget> ::= "ARRAY1D" + | "ARRAY2D" + + <shadowTarget> ::= "SHADOW1D" + | "SHADOW2D" + | "SHADOWRECT" + | <shadowArrayTarget> (if program option is present) + + <shadowArrayTarget> ::= "SHADOWARRAY1D" + | "SHADOWARRAY2D" + + + -- Add Section 3.11.4.5.4 "Texture Stack Option" + + "If a fragment program specifies the "MESA_texture_array" program + option, the <texTarget> rule is modified to add the texture targets + ARRAY1D and ARRAY2D (See Section 3.11.2)." + + -- Section 3.11.6 "Fragment Program Texture Instruction Set" + + (replace 1st and 2nd paragraphs with the following paragraphs) + + "The first three texture instructions described below specify the + mapping of 4-tuple input vectors to 4-tuple output vectors. + The sampling of the texture works as described in section 3.8, + except that texture environments and texture functions are not + applicable, and the texture enables hierarchy is replaced by explicit + references to the desired texture target (i.e., 1D, 2D, 3D, cube map, + rectangle, ARRAY1D, ARRAY2D). These texture instructions specify + how the 4-tuple is mapped into the coordinates used for sampling. The + following function is used to describe the texture sampling in the + descriptions below: + + vec4 TextureSample(vec4 coord, float lodBias, int texImageUnit, + enum texTarget); + + Note that not all four components of the texture coordinates <coord> + are used by all texture targets. Component usage for each <texTarget> + is defined in table X. + + coordinates used + texTarget Texture Type s t r layer shadow + ---------------- --------------------- ----- ----- ------ + 1D TEXTURE_1D x - - - - + 2D TEXTURE_2D x y - - - + 3D TEXTURE_3D x y z - - + CUBE TEXTURE_CUBE_MAP x y z - - + RECT TEXTURE_RECTANGLE_ARB x y - - - + ARRAY1D TEXTURE_1D_ARRAY_EXT x - - y - + ARRAY2D TEXTURE_2D_ARRAY_EXT x y - z - + SHADOW1D TEXTURE_1D x - - - z + SHADOW2D TEXTURE_2D x y - - z + SHADOWRECT TEXTURE_RECTANGLE_ARB x y - - z + SHADOWARRAY1D TEXTURE_1D_ARRAY_EXT x - - y z + SHADOWARRAY2D TEXTURE_2D_ARRAY_EXT x y - z w + + Table X: Texture types accessed for each of the <texTarget>, and + coordinate mappings. The "coordinates used" column indicate the + input values used for each coordinate of the texture lookup, the + layer selector for array textures, and the reference value for + texture comparisons." + + -- Section 3.11.6.2 "TXP: Project coordinate and map to color" + + Add to the end of the section: + + "A program will fail to load if the TXP instruction is used in + conjunction with the SHADOWARRAY2D target." + +Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment Operations) + + -- Section 4.4.2.3 "Attaching Texture Images to a Framebuffer" + + Add to the end of the section (spec changes identical to + EXT_texture_array): + + "The command + + void FramebufferTextureLayerEXT(enum target, enum attachment, + uint texture, int level, int layer); + + operates identically to FramebufferTexture3DEXT, except that it + attaches a single layer of a three-dimensional texture or a one- or + two-dimensional array texture. <layer> is an integer indicating the + layer number, and is treated identically to the <zoffset> parameter in + FramebufferTexture3DEXT. The error INVALID_VALUE is generated if + <layer> is negative. The error INVALID_OPERATION is generated if + <texture> is non-zero and is not the name of a three dimensional + texture or one- or two-dimensional array texture. Unlike + FramebufferTexture3D, no <textarget> parameter is accepted. + + If <texture> is non-zero and the command does not result in an error, + the framebuffer attachment state corresponding to <attachment> is + updated as in the other FramebufferTexture commands, except that + FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT is set to <layer>." + + -- Section 4.4.4.1 "Framebuffer Attachment Completeness" + + Add to the end of the list of completeness rules (spec changes + identical to EXT_texture_array): + + "* If FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE and + FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT names a one- or + two-dimensional array texture, then + FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT must be smaller than the + number of layers in the texture." + +Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions) + + -- Section 5.4 "Display Lists" + + Change the first paragraphi on page 242 to say (spec changes + identical to EXT_texture_array): + + "TexImage3D, TexImage2D, TexImage1D, Histogram, and ColorTable are + executed immediately when called with the corresponding proxy arguments + PROXY_TEXTURE_3D or PROXY_TEXTURE_2D_ARRAY_EXT; PROXY_TEXTURE_2D, + PROXY_TEXTURE_CUBE_MAP, or PROXY_TEXTURE_1D_ARRAY_EXT; + PROXY_TEXTURE_1D; PROXY_HISTOGRAM; and PROXY_COLOR_TABLE, + PROXY_POST_CONVOLUTION_COLOR_TABLE, or + PROXY_POST_COLOR_MATRIX_COLOR_TABLE." + +Additions to Chapter 6 of the OpenGL 2.0 Specification (State and State Requests) + + -- Section 6.1.3 "Enumerated Queries" + + Add after the line beginning "If the value of + FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE" (spec changes + identical to EXT_texture_array): + + "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT and the + texture object named FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT is a + three-dimensional texture or a one- or two-dimensional array texture, + then <params> will contain the number of texture layer attached to the + attachment point. Otherwise, <params> will contain the value zero." + + -- Section 6.1.4 "Texture Queries" + + Change the first three paragraphs (page 248) to say (spec changes + identical to EXT_texture_array): + + "The command + + void GetTexImage(enum tex, int lod, enum format, + enum type, void *img); + + is used to obtain texture images. It is somewhat different from the + other get commands; tex is a symbolic value indicating which texture + (or texture face in the case of a cube map texture target name) is to + be obtained. TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_1D_ARRAY_EXT, + and TEXTURE_2D_ARRAY_EXT indicate a one-, two-, or three-dimensional + texture, or one- or two-dimensional array texture, respectively. + TEXTURE_CUBE_MAP_POSITIVE_X, ... + + GetTexImage obtains... from the first image to the last for + three-dimensional textures. One- and two-dimensional array textures + are treated as two- and three-dimensional images, respectively, where + the layers are treated as rows or images. These groups are then... + + For three-dimensional and two-dimensional array textures, pixel storage + operations are applied as if the image were two-dimensional, except + that the additional pixel storage state values PACK_IMAGE_HEIGHT and + PACK_SKIP_IMAGES are applied. ..." + +Additions to Appendix A of the OpenGL 2.0 Specification (Invariance) + + None + +Additions to the AGL/GLX/WGL Specifications + + None + +GLX Protocol + + None + +Dependencies on ARB_fragment_program + + If ARB_fragment_program is not supported, the changes to section 3.11 + should be ignored. + +Dependencies on EXT_framebuffer_object + + If EXT_framebuffer_object is not supported, the changes to section + 3.8.8 ("Manual Mipmap Generation"), 4.4.2.3, and 6.1.3 should be ignored. + +Dependencies on EXT_texture_compression_s3tc and NV_texture_compression_vtc + + (Identical dependency as EXT_texture_array.) + + S3TC texture compression is supported for two-dimensional array textures. + When <target> is TEXTURE_2D_ARRAY_EXT, each layer is stored independently + as a compressed two-dimensional textures. When specifying or querying + compressed images using one of the S3TC formats, the images are provided + and/or returned as a series of two-dimensional textures stored + consecutively in memory, with the layer closest to zero specified first. + For array textures, images are not arranged in 4x4x4 or 4x4x2 blocks as in + the three-dimensional compression format provided in the + EXT_texture_compression_vtc extension. Pixel store parameters, including + those specific to three-dimensional images, are ignored when compressed + image data are provided or returned, as in the + EXT_texture_compression_s3tc extension. + + S3TC compression is not supported for one-dimensional texture targets in + EXT_texture_compression_s3tc, and is not supported for one-dimensional + array textures in this extension. If compressed one-dimensional arrays + are needed, use a two-dimensional texture with a height of one. + + This extension allows the use of the four S3TC internal format types in + TexImage3D, CompressedTexImage3D, and CompressedTexSubImage3D calls. + +Errors + + None + +New State + + (add to table 6.15, p. 276) + + Initial + Get Value Type Get Command Value Description Sec. Attribute + ---------------------------- ----- ----------- ----- -------------------- ------ --------- + TEXTURE_BINDING_1D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture + to TEXTURE_1D_ARRAY + TEXTURE_BINDING_2D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture + to TEXTURE_2D_ARRAY + + +New Implementation Dependent State + + (add to Table 6.32, p. 293) + + Minimum + Get Value Type Get Command Value Description Sec. Attribute + ---------------------------- ---- ----------- ------- ------------------ ----- --------- + MAX_TEXTURE_ARRAY_LAYERS_EXT Z+ GetIntegerv 64 maximum number of 3.8.1 - + layers for texture + arrays + +Issues + + (1) Is "texture stack" a good name for this functionality? + + NO. The name is changed to "array texture" to match the + nomenclature used by GL_EXT_texture_array. + + (2) Should the R texture coordinate be treated as normalized or + un-normalized? If it were un-normalized, floor(R) could be thought + of as a direct index into the array texture. This may be more + convenient for applications. + + RESOLVED. All texture coordinates are normalized. The issue of + un-normalized texture coordinates has been discussed in the ARB + before and should be left for a layered extension. + + RE-RESOLVED. The R coordinate is un-normalized. Accessing an array + using [0, layers-1] coordinates is much more natural. + + (3) How does LOD selection work for stacked textures? + + RESOLVED. For 2D array textures the R coordinate is ignored, and + the LOD selection equations for 2D textures are used. For 1D + array textures the T coordinate is ignored, and the LOD selection + equations for 1D textures are used. The expected usage is in a + fragment program with an explicit LOD selection. + + (4) What is the maximum size of a 2D array texture? Is it the same + as for a 3D texture, or should a new query be added? How about for 1D + array textures? + + RESOLVED. A new query is added. + + (5) How are array textures exposed in GLSL? + + RESOLVED. Use GL_EXT_texture_array. + + (6) Should a 1D array texture also be exposed? + + RESOLVED. For orthogonality, yes. + + (7) How are stacked textures attached to framebuffer objects? + + RESOLVED. Layers of both one- and two-dimensional array textures + are attached using FreambufferTextureLayerEXT. Once attached, the + array texture layer behaves exactly as either a one- or + two-dimensional texture. + + (8) How is this extension related to GL_EXT_texture_array? + + This extension adapats GL_MESAX_texture_stack to the notation, + indexing, and FBO access of GL_EXT_texture_array. This extension + replaces the GLSL support of GL_EXT_texture_array with + GL_ARB_fragment_program support. + + Assembly program support is also provided by GL_NV_gpu_program4. + GL_NV_gpu_program4 also adds support for other features that are + specific to Nvidia hardware, while this extension adds only support + for array textures. + + Much of text of this extension that has changed since + GL_MESAX_texture_stack comes directly from either + GL_EXT_texture_array or GL_NV_gpu_program4. + +Revision History + + ||2005/11/15||0.1||idr||Initial draft MESAX version.|| + ||2005/12/07||0.2||idr||Added framebuffer object interactions.|| + ||2005/12/12||0.3||idr||Updated fragment program interactions.|| + ||2007/05/16||0.4||idr||Converted to MESA_texture_array. Brought in line with EXT_texture_array and NV_gpu_program4.|| diff --git a/mesalib/docs/MESA_texture_signed_rgba.spec b/mesalib/docs/MESA_texture_signed_rgba.spec new file mode 100644 index 000000000..49c8e9e5d --- /dev/null +++ b/mesalib/docs/MESA_texture_signed_rgba.spec @@ -0,0 +1,214 @@ +Name + + MESA_texture_signed_rgba + +Name Strings + + GL_MESA_texture_signed_rgba + +Contact + + + +Notice + + + +IP Status + + No known IP issues + +Status + + + +Version + + 0.3, 2009-03-24 + +Number + + Not assigned ? + +Dependencies + + Written based on the wording of the OpenGL 2.0 specification. + + This extension trivially interacts with ARB_texture_float. + This extension shares some language with ARB_texture_compression_rgtc + but does not depend on it. + +Overview + + OpenGL prior to 3.1 does not support any signed texture formats. + ARB_texture_compression_rgtc introduces some compressed red and + red_green signed formats but no uncompressed ones, which might + still be useful. NV_texture_shader adds signed texture formats, + but also a lot of functionality which has been superceded by fragment + shaders. + It is usually possible to get the same functionality + using a unsigned format by doing scale and bias in a shader, but this + is undesirable since modern hardware has direct support for this. + This extension adds a signed 4-channel texture format by backporting + the relevant features from OpenGL 3.1, as a means to support this in + OpenGL implementations only supporting older versions. + +Issues + + 1) What should this extension be called? + + RESOLVED: MESA_texture_signed_rgba seems reasonable. + The rgba part is there because only 4 channel format is supported. + + + 2) Should the full set of signed formats (alpha, luminance, rgb, etc.) + be supported? + + RESOLVED: NO. To keep this extension simple, only add the most + universal format, rgba. alpha/luminance can't be trivially supported + since OpenGL 3.1 does not support them any longer, and there is some + implied dependency on ARB_texture_rg for red/red_green formats so + avoid all this. Likewise, only 8 bits per channel is supported. + + + 3) Should this extension use new enums for the texture formats? + + RESOLVED: NO. Same enums as those used in OpenGL 3.1. + + + 4) How are signed integer values mapped to floating-point values? + + RESOLVED: Same as described in issue 5) of + ARB_texture_compression_rgtc (quote): + A signed 8-bit two's complement value X is computed to + a floating-point value Xf with the formula: + + { X / 127.0, X > -128 + Xf = { + { -1.0, X == -128 + + This conversion means -1, 0, and +1 are all exactly representable, + however -128 and -127 both map to -1.0. Mapping -128 to -1.0 + avoids the numerical awkwardness of have a representable value + slightly more negative than -1.0. + + This conversion is intentionally NOT the "byte" conversion listed + in Table 2.9 for component conversions. That conversion says: + + Xf = (2*X + 1) / 255.0 + + The Table 2.9 conversion is incapable of exactly representing + zero. + + (Difference to ARB_texture_compression_rgtc): + This is the same mapping as OpenGL 3.1 uses. + This is also different to what NV_texture_shader used. + The above mapping should be considered the reference, but there + is some leeway so other mappings are allowed for implementations which + cannot do this. Particulary the mapping given in NV_texture_shader or + the standard OpenGL byte/float mapping is considered acceptable too, as + might be a mapping which represents -1.0 by -128, 0.0 by 0 and 1.0 by + 127 (that is, uses different scale factors for negative and positive + numbers). + Also, it is ok to store incoming GL_BYTE user data as-is, without + converting to GL_FLOAT (using the standard OpenGL float/byte mapping) + and converting back (using the mapping described here). + Other than those subtle issues there are no other non-standard + conversions used, so when using for instance CopyTexImage2D with + a framebuffer clamped to [0,1] all converted numbers will be in the range + [0, 127] (and not scaled and biased). + + + 5) How will signed components resulting from RGBA8_SNORM texture + fetches interact with fragment coloring? + + RESOLVED: Same as described in issue 6) of + ARB_texture_compression_rgtc (quote): + The specification language for this extension is silent + about clamping behavior leaving this to the core specification + and other extensions. The clamping or lack of clamping is left + to the core specification and other extensions. + + For assembly program extensions supporting texture fetches + (ARB_fragment_program, NV_fragment_program, NV_vertex_program3, + etc.) or the OpenGL Shading Language, these signed formats will + appear as expected with unclamped signed components as a result + of a texture fetch instruction. + + If ARB_color_buffer_float is supported, its clamping controls + will apply. + + NV_texture_shader extension, if supported, adds support for + fixed-point textures with signed components and relaxed the + fixed-function texture environment clamping appropriately. If the + NV_texture_shader extension is supported, its specified behavior + for the texture environment applies where intermediate values + are clamped to [-1,1] unless stated otherwise as in the case + of explicitly clamped to [0,1] for GL_COMBINE. or clamping the + linear interpolation weight to [0,1] for GL_DECAL and GL_BLEND. + + Otherwise, the conventional core texture environment clamps + incoming, intermediate, and output color components to [0,1]. + + This implies that the conventional texture environment + functionality of unextended OpenGL 1.5 or OpenGL 2.0 without + using GLSL (and with none of the extensions referred to above) + is unable to make proper use of the signed texture formats added + by this extension because the conventional texture environment + requires texture source colors to be clamped to [0,1]. Texture + filtering of these signed formats would be still signed, but + negative values generated post-filtering would be clamped to + zero by the core texture environment functionality. The + expectation is clearly that this extension would be co-implemented + with one of the previously referred to extensions or used with + GLSL for the new signed formats to be useful. + + + 6) Should the RGBA_SNORM tokens also be accepted by CopyTexImage + functions? + + RESOLVED: YES. + + + 7) What to do with GetTexParameter if ARB_texture_float is supported, + in particular what datatype should this return for TEXTURE_RED_TYPE_ARB, + TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB, TEXTURE_ALPHA_TYPE_ARB? + + RESOLVED: ARB_texture_float states type is either NONE, + UNSIGNED_NORMALIZED_ARB, or FLOAT. This extension adds a new enum, + SIGNED_NORMALIZED, which will be returned accordingly. This is the + same behaviour as in OpenGL 3.1. + + +New Tokens + + + Accepted by the <internalformat> parameter of + TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, and CopyTexImage2D: + + RGBA_SNORM 0x8F93 + RGBA8_SNORM 0x8F97 + + Returned by the <params> parameter of GetTexLevelParameter: + + SIGNED_NORMALIZED 0x8F9C + + +Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization): + + -- Section 3.8.1, Texture Image Specification + + Add to Table 3.16 (page 154): Sized internal formats + + Sized Base R G B A L I D + Internal Format Internal Format bits bits bits bits bits bits bits + --------------- --------------- ---- ---- ---- ---- ---- ---- ---- + RGBA8_SNORM RGBA 8 8 8 8 0 0 0 + + +Dependencies on ARB_texture_float extension: + + If ARB_texture_float is supported, GetTexParameter queries with <value> + of TEXTURE_RED_TYPE_ARB, TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB or + TEXTURE_ALPHA_TYPE_ARB return SIGNED_NORMALIZED if + the base internal format is RGBA_SNORM. diff --git a/mesalib/docs/MESA_window_pos.spec b/mesalib/docs/MESA_window_pos.spec new file mode 100644 index 000000000..4d01f1814 --- /dev/null +++ b/mesalib/docs/MESA_window_pos.spec @@ -0,0 +1,126 @@ +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 + + +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/mesalib/docs/MESA_ycbcr_texture.spec b/mesalib/docs/MESA_ycbcr_texture.spec new file mode 100644 index 000000000..0fa1f7b39 --- /dev/null +++ b/mesalib/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/mesalib/docs/MiniGLX.html b/mesalib/docs/MiniGLX.html new file mode 100644 index 000000000..e7ebae685 --- /dev/null +++ b/mesalib/docs/MiniGLX.html @@ -0,0 +1,534 @@ +<!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 © 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 <GL/miniglx.h><br> + </code></blockquote> +<code></code>Applications should link with libGL.so (i.e. <code>gcc +myprogram.o -lGL -o myprogram</code>). 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. The +environment variable <code>LIBGL_DRIVERS_PATH</code> should name the +directory where these modules are located.<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. For Mini GLX, +windows are <i>full-screen</i>; they cover the entire frame buffer. + 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. 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. + For purposes of interoperability, Mini GLX requires this as well, +though the colormap is not actually used. 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. 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. 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. 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, &visTemplate, +&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> + GLX_INVALID_ATTRIBUTE</code> will be returned if the attribute +parameter is invalid.<code> 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. 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. 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. Mini +GLX also defines a Display data type but its fields are hidden and not +visiblein <code>miniglx.h</code>. 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. 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. For example, the <code>RootWindow(dpy, +screen)</code> macro returns the root window for a given screen on a +given display. 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. 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. 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. + 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 <stdio.h><br>#include <stdlib.h><br>#include <GL/gl.h><br><br>#if USE_MINIGLX<br>#include <GL/miniglx.h><br>#else<br>#include <GL/glx.h><br>#include <X11/Xlib.h><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->visual, AllocNone);<br> attrMask = CWBackPixel | CWBorderPixel | CWColormap;<br> win = XCreateWindow(dpy, root, 0, 0, width, height,<br> 0, visinfo->depth, InputOutput,<br> visinfo->visual, attrMask, &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 < 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/mesalib/docs/README.3DFX b/mesalib/docs/README.3DFX new file mode 100644 index 000000000..037e8fa7c --- /dev/null +++ b/mesalib/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/mesalib/docs/README.AMIWIN b/mesalib/docs/README.AMIWIN new file mode 100644 index 000000000..47cf696cc --- /dev/null +++ b/mesalib/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/mesalib/docs/README.BEOS b/mesalib/docs/README.BEOS new file mode 100644 index 000000000..efd84e888 --- /dev/null +++ b/mesalib/docs/README.BEOS @@ -0,0 +1,136 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/README.CYGWIN b/mesalib/docs/README.CYGWIN new file mode 100644 index 000000000..58d5af3e2 --- /dev/null +++ b/mesalib/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/mesalib/docs/README.D3D b/mesalib/docs/README.D3D new file mode 100644 index 000000000..b41fcb620 --- /dev/null +++ b/mesalib/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/mesalib/docs/README.DJ b/mesalib/docs/README.DJ new file mode 100644 index 000000000..5f783ac53 --- /dev/null +++ b/mesalib/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.5, for DJGPP fans... Whoa! +The driver uses OSMesa to draw off screen, and then blits the buffer. This is +not terribly efficient, and has some drawbacks, but saves maintenance costs. + + + +Legal: +~~~~~~ + +Mesa copyright applies. + + + +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/mesalib/docs/README.GGI b/mesalib/docs/README.GGI new file mode 100644 index 000000000..ddb67725f --- /dev/null +++ b/mesalib/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/mesalib/docs/README.LYNXOS b/mesalib/docs/README.LYNXOS new file mode 100644 index 000000000..e3ab9804b --- /dev/null +++ b/mesalib/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/mesalib/docs/README.MINGW32 b/mesalib/docs/README.MINGW32 new file mode 100644 index 000000000..9477b2bd3 --- /dev/null +++ b/mesalib/docs/README.MINGW32 @@ -0,0 +1,153 @@ + 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> + + + +******This section is added by Heromyth <zxpmyth@yahoo.com.cn>************* + +==================== +Updated on 2007-7-21 +==================== + +Notice: + 1) The generated DLLs are *not* compatible with the ones built +with the other compilers like VC8, especially for GLUT. + + 2) Although more tests are needed, it can be used individually! + + 3) You can set the options about whether using STDCALL to build MESA. The +config file is <Mesa3D-root>\configs\config.mgw. The default setting is that: + ALL_USING_STDCALL = 1 +, which means using STDCALL to build MESA. + + 4) Of course, you can MESA without using STDCALL,I like this:) +The setting is : + ALL_USING_STDCALL = 0 +To do this, however, you must modify wingdi.h which is in MingW's include dir. +For example, run: + notepad C:\MingW\include\wingdi.h +, and delete all the lines where all the wgl*() functions are. Because they would +be conflicted with the ones in <Mesa3D-root>\include\GL\mesa_wgl.h. + +>>>>>>>>>> Conflicted Functions List >>>>>>>>>> +WINGDIAPI BOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT); +WINGDIAPI HGLRC WINAPI wglCreateContext(HDC); +WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC,int); +WINGDIAPI BOOL WINAPI wglDeleteContext(HGLRC); +WINGDIAPI BOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR); +WINGDIAPI HGLRC WINAPI wglGetCurrentContext(void); +WINGDIAPI HDC WINAPI wglGetCurrentDC(void); +WINGDIAPI int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF*); +WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR); +WINGDIAPI BOOL WINAPI wglMakeCurrent(HDC,HGLRC); +WINGDIAPI BOOL WINAPI wglRealizeLayerPalette(HDC,int,BOOL); +WINGDIAPI int WINAPI wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF*); +WINGDIAPI BOOL WINAPI wglShareLists(HGLRC,HGLRC); +WINGDIAPI BOOL WINAPI wglSwapLayerBuffers(HDC,UINT); +WINGDIAPI BOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD); +WINGDIAPI BOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD); +WINGDIAPI BOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT); +WINGDIAPI BOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT); +<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +==================== +Updated on 2007-7-22 +==================== + I havn't thought that I would find a better way to solve my problems so soon. +I changed the method in which the import-libs and DLLs are made. After this update, +the DLLs of MESA are more optimized and more compatible. + It seems that there is no need to keep the building way of 'NO-STDCALL'.The +way of USING_STDCALL is so nice! The file <Mesa3D-root>\configs\config.mgw is +also not needed, and can be deleted safely! + + + +*********************************************************************************
\ No newline at end of file diff --git a/mesalib/docs/README.MITS b/mesalib/docs/README.MITS new file mode 100644 index 000000000..a89176a62 --- /dev/null +++ b/mesalib/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/mesalib/docs/README.NeXT b/mesalib/docs/README.NeXT new file mode 100644 index 000000000..1ad9a9e5c --- /dev/null +++ b/mesalib/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/mesalib/docs/README.OS2 b/mesalib/docs/README.OS2 new file mode 100644 index 000000000..b3374ea23 --- /dev/null +++ b/mesalib/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/mesalib/docs/README.OpenStep b/mesalib/docs/README.OpenStep new file mode 100644 index 000000000..a566eca67 --- /dev/null +++ b/mesalib/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/mesalib/docs/README.QUAKE b/mesalib/docs/README.QUAKE new file mode 100644 index 000000000..e90c76a08 --- /dev/null +++ b/mesalib/docs/README.QUAKE @@ -0,0 +1,207 @@ + + 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/ + + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/README.THREADS b/mesalib/docs/README.THREADS new file mode 100644 index 000000000..fb6e0ff3d --- /dev/null +++ b/mesalib/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/mesalib/docs/README.VMS b/mesalib/docs/README.VMS new file mode 100644 index 000000000..6b02909d5 --- /dev/null +++ b/mesalib/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/mesalib/docs/README.WIN32 b/mesalib/docs/README.WIN32 new file mode 100644 index 000000000..97e1ffb7a --- /dev/null +++ b/mesalib/docs/README.WIN32 @@ -0,0 +1,163 @@ +File: docs/README.WIN32 + +Last updated: Apr 25, 2007 - 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 8 files +are in windows/VC8. + +Support has been dropped for versions of Visual Studio prior to 8. The +main reason is because Microsoft now provides a free compiler and +developer environment. Visual Studio Express can be found at + +http://msdn.microsoft.com/vstudio/express/visualc/default.aspx + +You'll also need the Platform SDK. Instructions for obtaining and +using the SDK with Visual Studio Express can be found at + +http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/ + +If you are stuck using VC6 or VC7, you may start with these project +files, but you may need to modify them to reflect changes in the +Mesa source code tree. If you sucessfully update the project files, +please submit them to the author of this document so that they may +be included in the next distribution. + +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/VC8/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/VC8/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 (not actively supported) +--- + +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 (not actively supported) +--- + +The above-mentioned .cc problem does not exist in this version. + +VC8 +--- + +No notes. + + +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/mesalib/docs/README.WINDML b/mesalib/docs/README.WINDML new file mode 100644 index 000000000..448db71f8 --- /dev/null +++ b/mesalib/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/mesalib/docs/README.directfb b/mesalib/docs/README.directfb new file mode 100644 index 000000000..d66ca8d3c --- /dev/null +++ b/mesalib/docs/README.directfb @@ -0,0 +1,29 @@ + + Mesa DirectFB Information + + +Requirements +============ + + To build Mesa with DirectFB (DirectFBGL) support you need: + - DirectFB at least 1.0.0 (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 + + cd src/mesa/drivers/directfb ; make install + + to install DirectFBGL module in the proper location. + Actually, that last command may not be needed. Please provide feedback. + diff --git a/mesalib/docs/RELNOTES-3.1 b/mesalib/docs/RELNOTES-3.1 new file mode 100644 index 000000000..65324eb49 --- /dev/null +++ b/mesalib/docs/RELNOTES-3.1 @@ -0,0 +1,145 @@ + + 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? + + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.2 b/mesalib/docs/RELNOTES-3.2 new file mode 100644 index 000000000..ec7d4f8dc --- /dev/null +++ b/mesalib/docs/RELNOTES-3.2 @@ -0,0 +1,11 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.2.1 b/mesalib/docs/RELNOTES-3.2.1 new file mode 100644 index 000000000..d34efcc86 --- /dev/null +++ b/mesalib/docs/RELNOTES-3.2.1 @@ -0,0 +1,31 @@ + + 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. + + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.3 b/mesalib/docs/RELNOTES-3.3 new file mode 100644 index 000000000..3850767bb --- /dev/null +++ b/mesalib/docs/RELNOTES-3.3 @@ -0,0 +1,270 @@ + + 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. + + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.4 b/mesalib/docs/RELNOTES-3.4 new file mode 100644 index 000000000..657ccdaab --- /dev/null +++ b/mesalib/docs/RELNOTES-3.4 @@ -0,0 +1,21 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.4.1 b/mesalib/docs/RELNOTES-3.4.1 new file mode 100644 index 000000000..73d75c64d --- /dev/null +++ b/mesalib/docs/RELNOTES-3.4.1 @@ -0,0 +1,21 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.4.2 b/mesalib/docs/RELNOTES-3.4.2 new file mode 100644 index 000000000..9caea900d --- /dev/null +++ b/mesalib/docs/RELNOTES-3.4.2 @@ -0,0 +1,21 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-3.5 b/mesalib/docs/RELNOTES-3.5 new file mode 100644 index 000000000..b2aa1b852 --- /dev/null +++ b/mesalib/docs/RELNOTES-3.5 @@ -0,0 +1,227 @@ + + 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. + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0 b/mesalib/docs/RELNOTES-4.0 new file mode 100644 index 000000000..2f729db15 --- /dev/null +++ b/mesalib/docs/RELNOTES-4.0 @@ -0,0 +1,162 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0.1 b/mesalib/docs/RELNOTES-4.0.1 new file mode 100644 index 000000000..e84df6bf8 --- /dev/null +++ b/mesalib/docs/RELNOTES-4.0.1 @@ -0,0 +1,21 @@ + + 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. + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0.2 b/mesalib/docs/RELNOTES-4.0.2 new file mode 100644 index 000000000..b476956ba --- /dev/null +++ b/mesalib/docs/RELNOTES-4.0.2 @@ -0,0 +1,49 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.0.3 b/mesalib/docs/RELNOTES-4.0.3 new file mode 100644 index 000000000..0b3e34bef --- /dev/null +++ b/mesalib/docs/RELNOTES-4.0.3 @@ -0,0 +1,51 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-4.1 b/mesalib/docs/RELNOTES-4.1 new file mode 100644 index 000000000..24e9299eb --- /dev/null +++ b/mesalib/docs/RELNOTES-4.1 @@ -0,0 +1,307 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.0 b/mesalib/docs/RELNOTES-5.0 new file mode 100644 index 000000000..1b22996d8 --- /dev/null +++ b/mesalib/docs/RELNOTES-5.0 @@ -0,0 +1,84 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.0.1 b/mesalib/docs/RELNOTES-5.0.1 new file mode 100644 index 000000000..f37e9c4a7 --- /dev/null +++ b/mesalib/docs/RELNOTES-5.0.1 @@ -0,0 +1,45 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.0.2 b/mesalib/docs/RELNOTES-5.0.2 new file mode 100644 index 000000000..d0e05b2c7 --- /dev/null +++ b/mesalib/docs/RELNOTES-5.0.2 @@ -0,0 +1,45 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-5.1 b/mesalib/docs/RELNOTES-5.1 new file mode 100644 index 000000000..aed6e102b --- /dev/null +++ b/mesalib/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/mesalib/docs/RELNOTES-6.0 b/mesalib/docs/RELNOTES-6.0 new file mode 100644 index 000000000..1a3c2fb1a --- /dev/null +++ b/mesalib/docs/RELNOTES-6.0 @@ -0,0 +1,86 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.0.1 b/mesalib/docs/RELNOTES-6.0.1 new file mode 100644 index 000000000..1444b9fc8 --- /dev/null +++ b/mesalib/docs/RELNOTES-6.0.1 @@ -0,0 +1,49 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.1 b/mesalib/docs/RELNOTES-6.1 new file mode 100644 index 000000000..8de64d1f1 --- /dev/null +++ b/mesalib/docs/RELNOTES-6.1 @@ -0,0 +1,111 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.2 b/mesalib/docs/RELNOTES-6.2 new file mode 100644 index 000000000..06cfba0c7 --- /dev/null +++ b/mesalib/docs/RELNOTES-6.2 @@ -0,0 +1,51 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.2.1 b/mesalib/docs/RELNOTES-6.2.1 new file mode 100644 index 000000000..c7baa5d42 --- /dev/null +++ b/mesalib/docs/RELNOTES-6.2.1 @@ -0,0 +1,49 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.3 b/mesalib/docs/RELNOTES-6.3 new file mode 100644 index 000000000..6b4dfaaf9 --- /dev/null +++ b/mesalib/docs/RELNOTES-6.3 @@ -0,0 +1,114 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.3.1 b/mesalib/docs/RELNOTES-6.3.1 new file mode 100644 index 000000000..eacc952ae --- /dev/null +++ b/mesalib/docs/RELNOTES-6.3.1 @@ -0,0 +1,48 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.3.2 b/mesalib/docs/RELNOTES-6.3.2 new file mode 100644 index 000000000..e5243ef78 --- /dev/null +++ b/mesalib/docs/RELNOTES-6.3.2 @@ -0,0 +1,36 @@ + + 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 + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/RELNOTES-6.4 b/mesalib/docs/RELNOTES-6.4 new file mode 100644 index 000000000..1a945a103 --- /dev/null +++ b/mesalib/docs/RELNOTES-6.4 @@ -0,0 +1,49 @@ + + 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. + + +---------------------------------------------------------------------- diff --git a/mesalib/docs/autoconf.html b/mesalib/docs/autoconf.html new file mode 100644 index 000000000..936ddcffe --- /dev/null +++ b/mesalib/docs/autoconf.html @@ -0,0 +1,289 @@ +<html> + +<title>Compilation and Installation using Autoconf</title> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<body> + + +<h1>Compilation and Installation using Autoconf</h1> + +<ol> +<li><a href="#basic">Basic Usage</a></li> +<li><a href="#driver">Driver Options</a></li> + <ul> + <li><a href="#xlib">Xlib Driver Options</a></li> + <li><a href="#dri">DRI Driver Options</a></li> + <li><a href="#osmesa">OSMesa Driver Options</a></li> + </ul> +<li><a href="#library">Library Options</a></li> + <ul> + <li><a href="#glu">GLU</a></li> + <li><a href="#glw">GLw</a></li> + <li><a href="#glut">GLUT</a></li> + </ul> +<li><a href="#demos">Demo Program Options</a></li> +</ol> + + +<a name="basic"> +<h2>1. Basic Usage</h2> + +<p> +The autoconf generated configure script can be used to guess your +platform and change various options for building Mesa. To use the +configure script, type: +</p> + +<pre> + ./configure +</pre> + +<p> +To see a short description of all the options, type <code>./configure +--help</code>. If you are using a development snapshot and the configure +script does not exist, type <code>./autogen.sh</code> to generate it +first. If you know the options you want to pass to +<code>configure</code>, you can pass them to <code>autogen.sh</code>. It +will run <code>configure</code> with these options after it is +generated. Once you have run <code>configure</code> and set the options +to your preference, type: +</p> + +<pre> + make +</pre> + +<p> +This will produce libGL.so and several other libraries depending on the +options you have chosen. Later, if you want to rebuild for a different +configuration run <code>make realclean</code> before rebuilding. +</p> + +<p> +Some of the generic autoconf options are used with Mesa: + +<ul> +<li><code>--prefix=PREFIX</code> - This is the root directory where +files will be installed by <code>make install</code>. The default is +<code>/usr/local</code>. +</li> +<li><code>--exec-prefix=EPREFIX</code> - This is the root directory +where architecture-dependent files will be installed. In Mesa, this is +only used to derive the directory for the libraries. The default is +<code>${prefix}</code>. +</li> +<li><code>--libdir=LIBDIR</code> - This option specifies the directory +where the GL libraries will be installed. The default is +<code>${exec_prefix}/lib</code>. It also serves as the name of the +library staging area in the source tree. For instance, if the option +<code>--libdir=/usr/local/lib64</code> is used, the libraries will be +created in a <code>lib64</code> directory at the top of the Mesa source +tree. +</li> +<li><code>--enable-static, --disable-shared</code> - By default, Mesa +will build shared libraries. Either of these options will force static +libraries to be built. It is not currently possible to build static and +shared libraries in a single pass. +</li> +<li><code>CC, CFLAGS, CXX, CXXFLAGS</code> - These environment variables +control the C and C++ compilers used during the build. By default, +<code>gcc</code> and <code>g++</code> are used with the options +<code>"-g -O2"</code>. +</li> +<li><code>LDFLAGS</code> - An environment variable specifying flags to +pass when linking programs. These are normally empty, but can be used +to direct the linker to use libraries in nonstandard directories. For +example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>. +</li> +<li><code>PKG_CONFIG_PATH</code> - When available, the +<code>pkg-config</code> utility is used to search for external libraries +on the system. This environment variable is used to control the search +path for <code>pkg-config</code>. For instance, setting +<code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for +package metadata in <code>/usr/X11R6</code> before the standard +directories. +</li> +</ul> +</p> + +<p> +There are also a few general options for altering the Mesa build: +<ul> +<li><code>--with-x</code> - When the X11 development libraries are +needed, the <code>pkg-config</code> utility <a href="#pkg-config">will +be used</a> for locating them. If they cannot be found through +<code>pkg-config</code> a fallback routing using <code>imake</code> will +be used. In this case, the <code>--with-x</code>, +<code>--x-includes</code> and <code>--x-libraries</code> options can +control the use of X for Mesa. +</li> +<li><code>--enable-gl-osmesa</code> - The <a href="osmesa.html">OSMesa +library</a> can be built on top of libGL for drivers that provide it. +This option controls whether to build libOSMesa. By default, this is +enabled for the Xlib driver and disabled otherwise. Note that this +option is different than using OSMesa as the driver. +</li> +<li><code>--enable-debug</code> - This option will enable compiler +options and macros to aid in debugging the Mesa libraries. +</li> +<li><code>--disable-asm</code> - There are assembly routines +available for a few architectures. These will be used by default if +one of these architectures is detected. This option ensures that +assembly will not be used. +</li> +<li><code>--enable-32-bit, --enable-64-bit</code> - By default, the +build will compile code as directed by the environment variables +<code>CC</code>, <code>CFLAGS</code>, etc. If the compiler is +<code>gcc</code>, these options offer a helper to add the compiler flags +to force 32- or 64-bit code generation as used on the x86 and x86_64 +architectures. +</li> +</ul> +</p> + + +<a name="driver"> +<h2>2. Driver Options</h2> + +<p> +There are several different driver modes that Mesa can use. These are +described in more detail in the <a href="install.html">basic +installation instructions</a>. The Mesa driver is controlled through the +configure option --with-driver. There are currently three supported +options in the configure script. +</p> + +<ul> + +<a name="xlib"> +<li><b><em>Xlib</em></b> - This is the default mode for building Mesa. +It uses Xlib as a software renderer to do all rendering. It corresponds +to the option <code>--with-driver=xlib</code>. The libX11 and libXext +libraries, as well as the X11 development headers, will be need to +support the Xlib driver. +</li> + +<a name="dri"> +<li><b><em>DRI</em></b> - This mode uses the DRI hardware drivers for +accelerated OpenGL rendering. Enable the DRI drivers with the option +<code>--with-driver=dri</code>. See the <a href="install.html">basic +installation instructions</a> for details on prerequisites for the DRI +drivers. +</li> + +<!-- DRI specific options --> +<p> +<ul> +<li><code>--with-dri-driverdir=DIR</code> - This option specifies the +location the DRI drivers will be installed to and the location libGL +will search for DRI drivers. The default is <code>${libdir}/dri</code>. +</li> +<li><code>--with-dri-drivers=DRIVER,DRIVER,...</code> - This option +allows a specific set of DRI drivers to be built. For example, +<code>--with-dri-drivers="swrast,i965,radeon,nouveau"</code>. By +default, the drivers will be chosen depending on the target platform. +See the directory <code>src/mesa/drivers/dri</code> in the source tree +for available drivers. Beware that the swrast DRI driver is used by both +libGL and the X.Org xserver GLX module to do software rendering, so you +may run into problems if it is not available.</li> +<!-- This explanation might be totally bogus. Kristian? --> +<li><code>--disable-driglx-direct</code> - Disable direct rendering in +GLX. Normally, direct hardware rendering through the DRI drivers and +indirect software rendering are enabled in GLX. This option disables +direct rendering entirely. It can be useful on architectures where +kernel DRM modules are not available. +</li> +<li><code>--enable-glx-tls</code> - Enable Thread Local Storage (TLS) in +GLX. +</li> +<li><code>--with-expat=DIR</code> - The DRI-enabled libGL uses expat to +parse the DRI configuration files in <code>/etc/drirc</code> and +<code>~/.drirc</code>. This option allows a specific expat installation +to be used. For example, <code>--with-expat=/usr/local</code> will +search for expat headers and libraries in <code>/usr/local/include</code> +and <code>/usr/local/lib</code>, respectively. +</li> +</ul> +</p> + +<a name="osmesa"> +<li><b><em>OSMesa</em></b> - No libGL is built in this +mode. Instead, the driver code is built into the Off-Screen Mesa +(OSMesa) library. See the <a href="osmesa.html">Off-Screen Rendering</a> +page for more details. +</li> + +<!-- OSMesa specific options --> +<p> +<ul> +<li><code>--with-osmesa-bits=BITS</code> - This option allows the size +of the color channel in bits to be specified. By default, an 8-bit +channel will be used, and the driver will be named libOSMesa. Other +options are 16- and 32-bit color channels, which will add the bit size +to the library name. For example, <code>--with-osmesa-bits=16</code> +will create the libOSMesa16 library with a 16-bit color channel. +</li> +</ul> +</p> + +</ul> + + +<a name="library"> +<h2>3. Library Options</h2> + +<p> +The configure script provides more fine grained control over the GL +libraries that will be built. More details on the specific GL libraries +can be found in the <a href="install.html">basic installation +instructions</a>. + +<ul> +<a name="glu"> +<li><b><em>GLU</em></b> - The libGLU library will be built by default +on all drivers. This can be disable with the option +<code>--disable-glu</code>. +</li> + +<a name="glw"> +<li><b><em>GLw</em></b> - The libGLw library will be built by default +if libGLU has been enabled. This can be disable with the option +<code>--disable-glw</code>. +</li> + +<a name="glut"> +<li><b><em>GLUT</em></b> - The libglut library will be built by default +if libGLU has been enabled and the glut source code from the MesaGLUT +tarball is available. This can be disable with the option +<code>--disable-glut</code>. +</li> +</ul> +</p> + + +<a name="demos"> +<h2>4. Demo Program Options</h2> + +<p> +There are many demonstration programs in the MesaDemos tarball. If the +programs are available when <code>./configure</code> is run, a subset of +the programs will be built depending on the driver and library options +chosen. See the directory <code>progs</code> for the full set of demos. + +<ul> +<li><code>--with-demos=DEMOS,DEMOS,...</code> - This option allows a +specific set of demo programs to be built. For example, +<code>--with-demos="xdemos,slang"</code>. Beware that if this option is +used, it will not be ensured that the necessary GL libraries will be +available. +</li> +<li><code>--without-demos</code> - This completely disables building the +demo programs. It is equivalent to <code>--with-demos=no</code>. +</li> +</ul> +</p> + +</body> +</html> diff --git a/mesalib/docs/banner.html b/mesalib/docs/banner.html new file mode 100644 index 000000000..9cb27bb6d --- /dev/null +++ b/mesalib/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/mesalib/docs/bugs.html b/mesalib/docs/bugs.html new file mode 100644 index 000000000..4397339e9 --- /dev/null +++ b/mesalib/docs/bugs.html @@ -0,0 +1,53 @@ +<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 hosted on +<a href="http://freedesktop.org" target="_parent">freedesktop.org</a>. +The old bug database on SourceForge is no longer used. +</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>Check if a new version of Mesa is available which might have fixed +the problem. +<li>Check if your bug is already reported in the database. +<li>Monitor your bug report for requests for additional information, etc. +<li>If you're reporting a crash, try to use your debugger (gdb) to get a stack +trace. Also, recompile Mesa in debug mode to get more detailed information. +<li>Describe in detail how to reproduce the bug, especially with games +and applications that the Mesa developers might not be familiar with. +<li>Provide a simple GLUT-based test program if possible +</ul> + +<p> +Bug reports will automatically be forwarded by bugzilla 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/mesalib/docs/cell.html b/mesalib/docs/cell.html new file mode 100644 index 000000000..30626b60b --- /dev/null +++ b/mesalib/docs/cell.html @@ -0,0 +1,138 @@ +<HTML> + +<TITLE>Cell Driver</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Mesa/Gallium Cell Driver</H1> + +<p> +The Mesa +<a href="http://en.wikipedia.org/wiki/Cell_%28microprocessor%29" target="_parent">Cell</a> +driver is part of the +<a href="http://wiki.freedesktop.org/wiki/Software/gallium" target="_parent">Gallium3D</a> +architecture. +Tungsten Graphics did the original implementation of the Cell driver. +</p> + + +<H2>Source Code</H2> + +<p> +The latest Cell driver source code is on the master branch of the Mesa +git repository. +</p> +<p> +To build the driver you'll need the IBM Cell SDK (version 2.1 or 3.0). +To use the driver you'll need a Cell system, such as a PS3 running Linux, +or the Cell Simulator (untested, though). +</p> + +<p> +If using Cell SDK 2.1, see the configs/linux-cell file for some +special changes. +</p> + +<p> +To compile the code, run <code>make linux-cell</code>. +Or to build in debug mode, run <code>make linux-cell-debug</code>. +</p> + +<p> +To use the library, make sure your current directory is the top of the +Mesa tree, then set <code>LD_LIBRARY_PATH</code> like this: +<pre> + export LD_LIBRARY_PATH=$PWD/lib/gallium:$PWD/lib/ +</pre> + +<p> +Verify that the Cell driver is being used by running +<code>progs/xdemos/glxinfo</code> and looking for: +<pre> + OpenGL renderer string: Gallium 0.3, Cell on Xlib +</pre> + + +<H2>Driver Implementation Summary</H2> + +<p> +Rasterization is parallelized across the SPUs in a tiled-based manner. +Batches of transformed triangles are sent to the SPUs (actually, pulled by from +main memory by the SPUs). +Each SPU loops over a set of 32x32-pixel screen tiles, rendering the triangles +into each tile. +Because of the limited SPU memory, framebuffer tiles are paged in/out of +SPU local store as needed. +Similarly, textures are tiled and brought into local store as needed. +</p> + + +<H2>Status</H2> + +<p> +As of October 2008, the driver runs quite a few OpenGL demos. +Features that work include: +</p> +<ul> +<li>Point/line/triangle rendering, glDrawPixels +<li>2D, NPOT and cube texture maps with nearest/linear/mipmap filtering +<li>Dynamic SPU code generation for fragment shaders, but not complete +<li>Dynamic SPU code generation for fragment ops (blend, Z-test, etc), but not complete +<li>Dynamic PPU/PPC code generation for vertex shaders, but not complete +</ul> +<p> +Performance has recently improved with the addition of PPC code generation +for vertex shaders, but the code quality isn't too great yet. +</p> +<p> +Another bottleneck is SwapBuffers. It may be the limiting factor for +many simple GL tests. +</p> + + + +<H2>Debug Options</H2> + +<p> +The CELL_DEBUG env var can be set to a comma-separated list of one or +more of the following debug options: +</p> +<ul> +<li><b>checker</b> - use a different background clear color for each SPU. + This lets you see which SPU is rendering which screen tiles. +<li><b>sync</b> - wait/synchronize after each DMA transfer +<li><b>asm</b> - print generated SPU assembly code to stdout +<li><b>fragops</b> - emit fragment ops debug messages +<li><b>fragopfallback</b> - don't use codegen for fragment ops +<li><b>cmd</b> - print SPU commands as their received +<li><b>cache</b> - print texture cache statistics when program exits +</ul> +<p> +Note that some of these options may only work for linux-cell-debug builds. +</p> + +<p> +If the GALLIUM_NOPPC env var is set, PPC code generation will not be used +and vertex shaders will be run with the TGSI interpreter. +</p> +<p> +If the GALLIUM_NOCELL env var is set, the softpipe driver will be used +intead of the Cell driver. +This is useful for comparison/validation. +</p> + + + +<H2>Contributing</H2> + +<p> +If you're interested in contributing to the effort, familiarize yourself +with the code, join the <a href="lists.html">mesa3d-dev mailing list</a>, +and describe what you'd like to do. +</p> + + +</BODY> +</HTML> diff --git a/mesalib/docs/conform.html b/mesalib/docs/conform.html new file mode 100644 index 000000000..3611f8c6f --- /dev/null +++ b/mesalib/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/mesalib/docs/contents.html b/mesalib/docs/contents.html new file mode 100644 index 000000000..d15e6c1e3 --- /dev/null +++ b/mesalib/docs/contents.html @@ -0,0 +1,104 @@ +<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="developers.html" target="MainFrame">Developers</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="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">Compiling / Installing</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> +<li><a href="http://dri.freedesktop.org/" target="_parent">Mesa/DRI Wiki</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="repository.html" target="MainFrame">Source Code Repository</a> +<li><a href="memory.html" target="MainFrame">DRI Memory Management</a> +<li><a href="shading.html" target="MainFrame">Shading Language</a> +<li><a href="glu.html" target="MainFrame">SGI's GLU</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="fbdev-dri.html" target="MainFrame">fbdev/DRI Environment</a> +<li><a href="subset.html" target="MainFrame">Mesa Subset Driver</a> +<li><a href="glfbdev-driver.html" target="MainFrame">glFBDev Driver</a> +<LI><A HREF="dispatch.html" target="MainFrame">GL Dispatch</A> +<li><a href="cell.html" target="MainFrame">Cell Driver</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/mesalib/docs/debugging.html b/mesalib/docs/debugging.html new file mode 100644 index 000000000..2df62f56e --- /dev/null +++ b/mesalib/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/mesalib/docs/demos.html b/mesalib/docs/demos.html new file mode 100644 index 000000000..b4a2cc5e3 --- /dev/null +++ b/mesalib/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/mesalib/docs/developers.html b/mesalib/docs/developers.html new file mode 100644 index 000000000..410f1ac5e --- /dev/null +++ b/mesalib/docs/developers.html @@ -0,0 +1,51 @@ +<HTML> + +<TITLE>Developers</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Developers</H1> + +<p> +Both professional and volunteer developers contribute to Mesa. +</p> +<p> +<a href="http://www.tungstengraphics.com/" target="_parent">Tungsten Graphics</a> +employs several of the main Mesa developers including Brian Paul +and Keith Whitwell. +Much of the on-going work in Mesa is done through Tungsten Graphics engineering +contracts. +Prominent examples of this work includes: +</p> +<ul> +<li>DRI drivers for Intel i965, i945, i915 and other chips +<li>Advanced memory manager and framebuffer object support +<li>Shading language compiler and OpenGL 2.0 support +<li>MiniGLX environment +</ul> + +<p> +Other companies including +<a href="http://www.intellinuxgraphics.org/index.html" target="_parent">Intel</a> +and IBM also actively contribute to the project. +</p> + +<p> +Volunteers have made significant contributions to all parts of Mesa, including +complete device drivers. +</p> + + +<H1>Custom Development</H1> +<p> +Contact <a href="http://www.tungstengraphics.com/" target="_parent"> +Tungsten Graphics</a> +for information about custom development in Mesa, OpenGL, X and other +graphics technologies. +</p> + + +</body> +</html> diff --git a/mesalib/docs/devinfo.html b/mesalib/docs/devinfo.html new file mode 100644 index 000000000..0fb816749 --- /dev/null +++ b/mesalib/docs/devinfo.html @@ -0,0 +1,220 @@ +<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> + Add a new entry to the <code>gl_extensions</code> struct in mtypes.h +</li> +<li> + Update the <code>extensions.c</code> file. +</li> +<li> + From this point, the best way to proceed is to find another extension, + similar to the new one, that's already implemented in Mesa and use it + as an example. +</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 git to get the latest Mesa files from the git repository, from whatever +branch is relevant. +</p> + + +<H3>Verify and update version info</H3> +<p> +Create/edit the docs/relnotes-x.y.html file to document what's new in the release. +Add the new relnotes-x.y.html file to <a href="relnotes.html">relnotes.html</a>. +</p> + +<p> +Update the MESA_MAJOR, MESA_MINOR and MESA_TINY version numbers in +configs/default. +Also update the VERSION line in the top-level Makefile. +</p> + +<p> +Make sure the values in src/mesa/main/version.h are correct. +</p> + +<p> +Update the docs/news.html file and docs/download.html files. +</p> + +<p> +Check in all updates to git. +</p> + +<p> +Tag the files with the release name (in the form <b>mesa_X_Y</b>) +with: <code>git tag -a mesa_X_Y</code> +Then: <code>git push origin mesa_X_Y</code> +</p> + + +<H3>Make the tarballs</H3> +<p> +Make a symbolic link from $(DIRECTORY) to 'Mesa'. For example, +<code>ln -s Mesa Mesa-7.5</code> +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/relnotes-X.Y.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> +Basically, to upload the tarball files with: +<br> +<code> +rsync -avP ssh Mesa*-X.Y.* USERNAME@frs.sourceforge.net:uploads/ +</code> +</p> + +<p> +Update the web site by copying the docs/ directory's files to +/home/users/b/br/brianp/mesa-www/htdocs/ with: +<br> +<code> +sftp USERNAME,mesa3d@web.sourceforge.net +</code> +</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/mesalib/docs/dispatch.html b/mesalib/docs/dispatch.html new file mode 100644 index 000000000..bcab74c70 --- /dev/null +++ b/mesalib/docs/dispatch.html @@ -0,0 +1,274 @@ +<HTML> +<HEAD> +<TITLE>GL Dispatch in Mesa</TITLE> +<LINK REL="stylesheet" TYPE="text/css" HREF="mesa.css"> +</HEAD> + +<BODY> +<H1>GL Dispatch in Mesa</H1> + +<p>Several factors combine to make efficient dispatch of OpenGL functions +fairly complicated. This document attempts to explain some of the issues +and introduce the reader to Mesa's implementation. Readers already familiar +with the issues around GL dispatch can safely skip ahead to the <A +HREF="#overview">overview of Mesa's implementation</A>.</p> + +<H2>1. Complexity of GL Dispatch</H2> + +<p>Every GL application has at least one object called a GL <em>context</em>. +This object, which is an implicit parameter to ever GL function, stores all +of the GL related state for the application. Every texture, every buffer +object, every enable, and much, much more is stored in the context. Since +an application can have more than one context, the context to be used is +selected by a window-system dependent function such as +<tt>glXMakeContextCurrent</tt>.</p> + +<p>In environments that implement OpenGL with X-Windows using GLX, every GL +function, including the pointers returned by <tt>glXGetProcAddress</tt>, are +<em>context independent</em>. This means that no matter what context is +currently active, the same <tt>glVertex3fv</tt> function is used.</p> + +<p>This creates the first bit of dispatch complexity. An application can +have two GL contexts. One context is a direct rendering context where +function calls are routed directly to a driver loaded within the +application's address space. The other context is an indirect rendering +context where function calls are converted to GLX protocol and sent to a +server. The same <tt>glVertex3fv</tt> has to do the right thing depending +on which context is current.</p> + +<p>Highly optimized drivers or GLX protocol implementations may want to +change the behavior of GL functions depending on current state. For +example, <tt>glFogCoordf</tt> may operate differently depending on whether +or not fog is enabled.</p> + +<p>In multi-threaded environments, it is possible for each thread to have a +differnt GL context current. This means that poor old <tt>glVertex3fv</tt> +has to know which GL context is current in the thread where it is being +called.</p> + +<A NAME="overview"/> +<H2>2. Overview of Mesa's Implementation</H2> + +<p>Mesa uses two per-thread pointers. The first pointer stores the address +of the context current in the thread, and the second pointer stores the +address of the <em>dispatch table</em> associated with that context. The +dispatch table stores pointers to functions that actually implement +specific GL functions. Each time a new context is made current in a thread, +these pointers a updated.</p> + +<p>The implementation of functions such as <tt>glVertex3fv</tt> becomes +conceptually simple:</p> + +<ul> +<li>Fetch the current dispatch table pointer.</li> +<li>Fetch the pointer to the real <tt>glVertex3fv</tt> function from the +table.</li> +<li>Call the real function.</li> +</ul> + +<p>This can be implemented in just a few lines of C code. The file +<tt>src/mesa/glapi/glapitemp.h</tt> contains code very similar to this.</p> + +<blockquote> +<table border="1"> +<tr><td><pre> +void glVertex3f(GLfloat x, GLfloat y, GLfloat z) +{ + const struct _glapi_table * const dispatch = GET_DISPATCH(); + + (*dispatch->Vertex3f)(x, y, z); +}</pre></td></tr> +<tr><td>Sample dispatch function</td></tr></table> +</blockquote> + +<p>The problem with this simple implementation is the large amount of +overhead that it adds to every GL function call.</p> + +<p>In a multithreaded environment, a niave implementation of +<tt>GET_DISPATCH</tt> involves a call to <tt>pthread_getspecific</tt> or a +similar function. Mesa provides a wrapper function called +<tt>_glapi_get_dispatch</tt> that is used by default.</p> + +<H2>3. Optimizations</H2> + +<p>A number of optimizations have been made over the years to diminish the +performance hit imposed by GL dispatch. This section describes these +optimizations. The benefits of each optimization and the situations where +each can or cannot be used are listed.</p> + +<H3>3.1. Dual dispatch table pointers</H3> + +<p>The vast majority of OpenGL applications use the API in a single threaded +manner. That is, the application has only one thread that makes calls into +the GL. In these cases, not only do the calls to +<tt>pthread_getspecific</tt> hurt performance, but they are completely +unnecessary! It is possible to detect this common case and avoid these +calls.</p> + +<p>Each time a new dispatch table is set, Mesa examines and records the ID +of the executing thread. If the same thread ID is always seen, Mesa knows +that the application is, from OpenGL's point of view, single threaded.</p> + +<p>As long as an application is single threaded, Mesa stores a pointer to +the dispatch table in a global variable called <tt>_glapi_Dispatch</tt>. +The pointer is also stored in a per-thread location via +<tt>pthread_setspecific</tt>. When Mesa detects that an application has +become multithreaded, <tt>NULL</tt> is stored in <tt>_glapi_Dispatch</tt>.</p> + +<p>Using this simple mechanism the dispatch functions can detect the +multithreaded case by comparing <tt>_glapi_Dispatch</tt> to <tt>NULL</tt>. +The resulting implementation of <tt>GET_DISPATCH</tt> is slightly more +complex, but it avoids the expensive <tt>pthread_getspecific</tt> call in +the common case.</p> + +<blockquote> +<table border="1"> +<tr><td><pre> +#define GET_DISPATCH() \ + (_glapi_Dispatch != NULL) \ + ? _glapi_Dispatch : pthread_getspecific(&_glapi_Dispatch_key) +</pre></td></tr> +<tr><td>Improved <tt>GET_DISPATCH</tt> Implementation</td></tr></table> +</blockquote> + +<H3>3.2. ELF TLS</H3> + +<p>Starting with the 2.4.20 Linux kernel, each thread is allocated an area +of per-thread, global storage. Variables can be put in this area using some +extensions to GCC. By storing the dispatch table pointer in this area, the +expensive call to <tt>pthread_getspecific</tt> and the test of +<tt>_glapi_Dispatch</tt> can be avoided.</p> + +<p>The dispatch table pointer is stored in a new variable called +<tt>_glapi_tls_Dispatch</tt>. A new variable name is used so that a single +libGL can implement both interfaces. This allows the libGL to operate with +direct rendering drivers that use either interface. Once the pointer is +properly declared, <tt>GET_DISPACH</tt> becomes a simple variable +reference.</p> + +<blockquote> +<table border="1"> +<tr><td><pre> +extern __thread struct _glapi_table *_glapi_tls_Dispatch + __attribute__((tls_model("initial-exec"))); + +#define GET_DISPATCH() _glapi_tls_Dispatch +</pre></td></tr> +<tr><td>TLS <tt>GET_DISPATCH</tt> Implementation</td></tr></table> +</blockquote> + +<p>Use of this path is controlled by the preprocessor define +<tt>GLX_USE_TLS</tt>. Any platform capable of using TLS should use this as +the default dispatch method.</p> + +<H3>3.3. Assembly Language Dispatch Stubs</H3> + +<p>Many platforms has difficulty properly optimizing the tail-call in the +dispatch stubs. Platforms like x86 that pass parameters on the stack seem +to have even more difficulty optimizing these routines. All of the dispatch +routines are very short, and it is trivial to create optimal assembly +language versions. The amount of optimization provided by using assembly +stubs varies from platform to platform and application to application. +However, by using the assembly stubs, many platforms can use an additional +space optimization (see <A HREF="#fixedsize">below</A>).</p> + +<p>The biggest hurdle to creating assembly stubs is handling the various +ways that the dispatch table pointer can be accessed. There are four +different methods that can be used:</p> + +<ol> +<li>Using <tt>_glapi_Dispatch</tt> directly in builds for non-multithreaded +environments.</li> +<li>Using <tt>_glapi_Dispatch</tt> and <tt>_glapi_get_dispatch</tt> in +multithreaded environments.</li> +<li>Using <tt>_glapi_Dispatch</tt> and <tt>pthread_getspecific</tt> in +multithreaded environments.</li> +<li>Using <tt>_glapi_tls_Dispatch</tt> directly in TLS enabled +multithreaded environments.</li> +</ol> + +<p>People wishing to implement assembly stubs for new platforms should focus +on #4 if the new platform supports TLS. Otherwise, implement #2 followed by +#3. Environments that do not support multithreading are uncommon and not +terribly relevant.</p> + +<p>Selection of the dispatch table pointer access method is controlled by a +few preprocessor defines.</p> + +<ul> +<li>If <tt>GLX_USE_TLS</tt> is defined, method #4 is used.</li> +<li>If <tt>PTHREADS</tt> is defined, method #3 is used.</li> +<li>If any of <tt>PTHREADS</tt>, +<tt>SOLARIS_THREADS</tt>, <tt>WIN32_THREADS</tt>, or <tt>BEOS_THREADS</tt> +is defined, method #2 is used.</li> +<li>If none of the preceeding are defined, method #1 is used.</li> +</ul> + +<p>Two different techniques are used to handle the various different cases. +On x86 and SPARC, a macro called <tt>GL_STUB</tt> is used. In the preamble +of the assembly source file different implementations of the macro are +selected based on the defined preprocessor variables. The assmebly code +then consists of a series of invocations of the macros such as: + +<blockquote> +<table border="1"> +<tr><td><pre> +GL_STUB(Color3fv, _gloffset_Color3fv) +</pre></td></tr> +<tr><td>SPARC Assembly Implementation of <tt>glColor3fv</tt></td></tr></table> +</blockquote> + +<p>The benefit of this technique is that changes to the calling pattern +(i.e., addition of a new dispatch table pointer access method) require fewer +changed lines in the assembly code.</p> + +<p>However, this technique can only be used on platforms where the function +implementation does not change based on the parameters passed to the +function. For example, since x86 passes all parameters on the stack, no +additional code is needed to save and restore function parameters around a +call to <tt>pthread_getspecific</tt>. Since x86-64 passes parameters in +registers, varying amounts of code needs to be inserted around the call to +<tt>pthread_getspecific</tt> to save and restore the GL function's +parameters.</p> + +<p>The other technique, used by platforms like x86-64 that cannot use the +first technique, is to insert <tt>#ifdef</tt> within the assembly +implementation of each function. This makes the assembly file considerably +larger (e.g., 29,332 lines for <tt>glapi_x86-64.S</tt> versus 1,155 lines for +<tt>glapi_x86.S</tt>) and causes simple changes to the function +implementation to generate many lines of diffs. Since the assmebly files +are typically generated by scripts (see <A HREF="#autogen">below</A>), this +isn't a significant problem.</p> + +<p>Once a new assembly file is created, it must be inserted in the build +system. There are two steps to this. The file must first be added to +<tt>src/mesa/sources</tt>. That gets the file built and linked. The second +step is to add the correct <tt>#ifdef</tt> magic to +<tt>src/mesa/main/dispatch.c</tt> to prevent the C version of the dispatch +functions from being built.</p> + +<A NAME="fixedsize"/> +<H3>3.4. Fixed-Length Dispatch Stubs</H3> + +<p>To implement <tt>glXGetProcAddress</tt>, Mesa stores a table that +associates function names with pointers to those functions. This table is +stored in <tt>src/mesa/glapi/glprocs.h</tt>. For different reasons on +different platforms, storing all of those pointers is inefficient. On most +platforms, including all known platforms that support TLS, we can avoid this +added overhead.</p> + +<p>If the assembly stubs are all the same size, the pointer need not be +stored for every function. The location of the function can instead be +calculated by multiplying the size of the dispatch stub by the offset of the +function in the table. This value is then added to the address of the first +dispatch stub.</p> + +<p>This path is activated by adding the correct <tt>#ifdef</tt> magic to +<tt>src/mesa/glapi/glapi.c</tt> just before <tt>glprocs.h</tt> is +included.</p> + +<A NAME="autogen"/> +<H2>4. Automatic Generation of Dispatch Stubs</H2> + +</BODY> +</HTML> diff --git a/mesalib/docs/download.html b/mesalib/docs/download.html new file mode 100644 index 000000000..3cb9423dd --- /dev/null +++ b/mesalib/docs/download.html @@ -0,0 +1,136 @@ +<HTML> + +<TITLE>Getting Mesa</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Downloading</H1> + +<p> +Primary Mesa download site: +<a href="ftp://ftp.freedesktop.org/pub/mesa/" +target="_parent">freedesktop.org</a> (FTP) +</p> + +<p> +When a new release is coming, release candidates (betas) may be found +<a href="ftp://ftp.freedesktop.org/pub/mesa/beta/" target="_parent">here</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" + target="_parent">original GLUT by Mark Kilgard</a> or + <a href="http://freeglut.sourceforge.net" target="_parent">freeglut</a> or + <a href="http://openglut.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> +If you're new to this and not sure what you're doing, grab all three packages. +</p> + +<p> +The packages are available in .tar.gz, .tar.bz2 and .zip formats. +Other sites 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 files and directories (among others): +</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/glx - sources for building libGL with full GLX and DRI support +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/mesalib/docs/envvars.html b/mesalib/docs/envvars.html new file mode 100644 index 000000000..6d7a321da --- /dev/null +++ b/mesalib/docs/envvars.html @@ -0,0 +1,54 @@ +<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) +<li>MESA_TEX_PROG - if set, implement conventional texture env modes with +fragment programs (intended for developers only) +<li>MESA_TNL_PROG - if set, implement conventional vertex transformation +operations with vertex programs (intended for developers only). +Setting this variable automatically sets the MESA_TEX_PROG variable as well. +<li>MESA_EXTENSION_OVERRIDE - can be used to enable/disable extensions. +A value such as "GL_EXT_foo -GL_EXT_bar" will enable the GL_EXT_foo extension +and disable the GL_EXT_bar extension. +</ul> + +<p> +The following are only applicable to the Xlib software driver. +See the <A HREF="xlibdriver.html">Xlib software driver page</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/mesalib/docs/extensions.html b/mesalib/docs/extensions.html new file mode 100644 index 000000000..91ed20e5c --- /dev/null +++ b/mesalib/docs/extensions.html @@ -0,0 +1,35 @@ +<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_texture_signed_rgba.spec">MESA_texture_signed_rgba.spec</A> +<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/mesalib/docs/faq.html b/mesalib/docs/faq.html new file mode 100644 index 000000000..65e279aac --- /dev/null +++ b/mesalib/docs/faq.html @@ -0,0 +1,397 @@ +<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 August 2006 +</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.freedesktop.org/">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> +<a href="http://www.ticalc.org/archives/files/fileinfo/361/36173.html" +target="_parent">ClosedGL</a> is an OpenGL subset library for TI +graphing calculators. +</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 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.3 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.4 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.opengl.org/resources/faq/technical/depthbuffer.htm#0040" +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> + +<h2>3.6 How can I change the maximum framebuffer size in Mesa's +<tt>swrast</tt> backend?</h2> +<p> +These can be overridden by using the <tt>--with-max-width</tt> and +<tt>--with-max-height</tt> options. The two need not be equal. +</p><p> +Do note that Mesa uses these values to size some internal buffers, +so increasing these sizes will cause Mesa to require additional +memory. Furthermore, increasing these limits beyond <tt>4096</tt> +may introduce rasterization artifacts; see the leading comments in +<tt>src/mesa/swrast/s_tritemp.h</tt>. +</p> + +<br> +<br> + + +<a name="part4"> +</a><h1><a name="part4">4. Developer Questions</a></h1> + +<h2>4.1 How can I contribute?</a></h2> +<p> +First, join the <a href="http://www.mesa3d.org/lists.html">Mesa3d-dev +mailing list</a>. +That's where Mesa development is discussed. +</p> +<p> +The <a href="http://www.opengl.org/documentation" 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?</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> +In the mean time, a 3rd party <a href= +"http://homepage.hispeed.ch/rscheidegger/dri_experimental/s3tc_index.html" +target="_parent">plug-in library</a> is available. +</p> + + +</body> +</html> diff --git a/mesalib/docs/fbdev-dri.html b/mesalib/docs/fbdev-dri.html new file mode 100644 index 000000000..e941b1679 --- /dev/null +++ b/mesalib/docs/fbdev-dri.html @@ -0,0 +1,341 @@ +<html><head><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> +<br> + +<h1>1. Introduction</h1> + +<p> +The fbdev/DRI environment supports hardware-accelerated 3D rendering without +the X window system. This is typically used for embedded applications. +</p> + +<p> +Contributors to this project include Jon Smirl, Keith Whitwell and Dave Airlie. +</p> + +<p> +Applications in the fbdev/DRI environment use +the <a href="http://www.nabble.com/file/p15480666/MiniGXL.html"> MiniGLX</a> interface to choose pixel +formats, create rendering contexts, etc. It's a subset of the GLX and +Xlib interfaces allowing some degree of application portability between +the X and X-less environments. +</p> + +<p> +Note that this environment is not well-supported and these instructions +may not be completely up to date. +</p> +<br> + + + +<h1>2. Compilation</h1> +<p> + +<h2>2.1 glxproto</h2> + +Get <a href="http://cvsweb.xfree86.org/cvsweb/*checkout*/xc/include/GL/glxproto.h?rev=1.9">glxproto.h</a>. Copy it to the /mesa/include/GL/ directory. +</p> + +<h2>2.2 libpciaccess</h2> +<p> +Check if you have libpciaccess installed: +</p> + +<pre>pkg-config --modversion pciaccess +</pre> +<p> +If not you can download the latest code from: +</p> +<pre> git clone git://anongit.freedesktop.org/git/xorg/lib/libpciaccess +</pre> +<p> +Run autogen.sh to generate a configure file. autogen.sh uses autoconf +utility. This utility may not be installed with your linux distro, +check if it is available. if not you can use your package manager or +type: +</p> +<pre>sudo apt-get install autoconf +</pre> +The next step is to install the libpciaccess library. +<pre>make +make install +</pre> +<p> Now your libpciaccess.a file is saved into /usr/local/lib +directory. If you have a libpciaccess.a in /usr/lib you may simply copy +and overwrite these files. Don't forget to copy libpciaccess.pc file to +/usr/lib/pkgconfig, which is also located in /usr/local/lib/pkgconfig/. +Or you may use the following system variables: +</p> +<pre>export LD_LIBRARY_PATH=/usr/local/lib +export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig +</pre> + +<h2>2.3 drm</h2> + +<p>The next step is to compile the drm. DRM consists of two seperate parts, +the DRM client library(lindrm.so) and kernel device module(such as +radeon.ko). We need to make a small change in kernel device module. So +you need to download the kernel source. You may choose the nearest +mirror from www.kernel.org, or you are using Fedora Core 5, for +example, you may need to install RPMs such as: +kernel-smp-devel-2.16.15-1.2054_FC5.i686.rpm +kernel-devel-2.6.15-1.2054_FC5.i686.rpm +etc. You can find a detailed information <a href="http://www.howtoforge.com/kernel_compilation_fedora">here.</a> +</p> + +<p>You will find drm_drv.c at /usr/src/LINUX-VERSION/drivers/char/drm/. Edit this code and comment out the following part: +</p> + +<pre> + /* || + ((ioctl->flags & DRM_MASTER) && !priv->master)*/ +</pre> +Now you are ready to compile your kernel. If your kernel version is +identical to the version you have compiled, you can simply over write +your new "ko" files over older ones. If you have compiled a different +kernel, you must configure your grub or lilo to be able to boot your +new kernel. <p> +You'll need fbdev header files. Check with: +</p> +<pre> + ls -l /usr/include/linux/fb. +</pre> +<p>This file may be missing if you have not installed linux header files. + + +<h2>2.4 Mesa</h2> + +</p><p>Get latest development Mesa sources from git repository +(currently 7.1-prerelease) +</p> +<pre> + git clone git://anongit.freedesktop.org/git/mesa/mesa +</pre> + +<p>You will need the makedepend utility which is a part of mesa project +to build your linux-solo. You probably wont have this utility. You can +download its source from following git repulsitory: +</p> +<pre> + git clone git://anongit.freedesktop.org/git/xorg/util/makedepend +</pre> + +<p>Get the latest stable mesa version from SourceForge (currently 7.0.3) +<a href="http://sourceforge.net/project/showfiles.php?group_id=3">http://sourceforge.net/project/showfiles.php?group_id=3</a> +</p> + +<p>Copy the miniglx folder from 7.1-prerelease to 7.0.3. +You may also extract GLUT to 7.0.3 version at this step. +</p> + +<p>Edit linux-solo.conf at /conf directory, just only compile the +graphics driver you need, delete the unwanted drivers names from the +list(some drivers are causing problems...) +</p> +<pre> + while(build==0) + { + make linux-solo + + There will be some missing header files, copy them from 7.1-prerelease + } +</pre> + +<p> +When complete you should have the following: +</p> +<ul> +<li>lib/libGL.so - the GL library which applications link with +</li><li>lib/*_dri_so - DRI drivers +</li><li>lib/miniglx.conf - sample MiniGLX config file +</li><li>progs/miniglx/* - several MiniGLX sample programs +</li></ul> + +To install these files into appropriate locations in system: +<pre> + make install +</pre> + +Now your openGL libraries are copied to /usr/local/lib and +miniglx.conf is copied to /etc. You may copy them to /usr/lib and +overwrite your old GL libraries. Or you may export following variable: + +<pre> + export LIBGL_DRIVERS_PATH=/usr/local/lib +</pre> +<br> + + +<h1>3. Using fbdev/DRI</h1> + +<p> +If an X server currently running, exit/stop it so you're working from +the console. Following command shuts down the x window and also the multi user support. +</p> +<pre> + init 1 +</pre> + +<p>Also you may define the runlevel as 1 in "/etc/inittab". Your system +will always start in single user mode and without x-window with this +option set. +</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. +</p> +<p> +As root, the kernel modules can be loaded as follows: +</p> + +<p> +If you have Intel i915/i945 hardware: +</p> +<pre> modprobe agpgart # the AGP GART module + modprobe intelfb # the Intel fbdev driver + modprobe i915 # the i915/945 DRI kernel module +</pre> + +<p> +If you have ATI Radeon/R200 hardware: +</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: +</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: +</p> +<pre> modprobe agpgart # the AGP GART module + modprobe mgafb # the Matrox fbdev driver + modprobe mga # the Matrox DRI kernel module +</pre> + +<p> +To verify that the agpgart, fbdev and drm modules are loaded: +</p> +<pre> ls -l /dev/agpgart /dev/fb* /dev/dri +</pre> +<p> +Alternately, use lsmod to inspect the currently installed modules. +If you have problems, look at the output of dmesg. +</p> + + +<h2>3.2 Configuration File</h2> + +<p> +review/edit /etc/miniglx.conf. +Alternately, the MINIGLX_CONF environment variable can be used to +indicate the location of miniglx.conf +</p> + +To determine the pciBusID value, run lspci and examine the output. +For example: +<p></p> +<pre> /sbin/lspci: + 00:02.0 VGA compatible controller: Intel Corporation 82915G/GV/910GL Express Chipset Family Graphics Controller (rev 04) +</pre> +<p> +00:02.0 indicates that pciBusID should be PCI:0:2:0 +</p> + + + + +<h2>3.3 Running fbdev/DRI Programs</h2> + +<p> +Make sure your LD_LIBRARY_PATH environment variable is set to the +location of the libGL.so library. You may need to append other paths +to LD_LIBRARY_PATH if libpciaccess.so is in a non-standard location, +for example. +</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> +<br> + + +<h1>4.0 Troubleshooting</h1> + +<ol> +<li> +If you try to run miniglxtest and get the following: +<br> +<pre> [miniglx] failed to probe chipset + connect: Connection refused + server connection lost +</pre> +It means that the sample_server process is not running. +<br> +<br> +</li> +</ol> + + +<h1>5.0 Programming Information</h1> + +<p> +OpenGL/Mesa is interfaced to fbdev via the <a href="http://www.nabble.com/file/p15480666/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/mesalib/docs/games.html b/mesalib/docs/games.html new file mode 100644 index 000000000..dcf5cf2d0 --- /dev/null +++ b/mesalib/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/mesalib/docs/glfbdev-driver.html b/mesalib/docs/glfbdev-driver.html new file mode 100644 index 000000000..981df7c08 --- /dev/null +++ b/mesalib/docs/glfbdev-driver.html @@ -0,0 +1,111 @@ +<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> +<p> +You will need at minimum, a framebuffer device, check /dev/fb0 +</p> + +<h1>2. Compilation</h1> + +<p> +To compile Mesa with support for the glFBDev interface: +<pre> + make realclean + make linux-fbdev +</pre> + +<p> +When compilation is finished look in progs/glfbdev/ for the glfbdevtest demo. +</p> +<h1>3. Permissions</h1> + +<p> +Typically /dev/fb/0 is grouped to the video group. It may be useful to add +your user to the video group so the demos will not have to be run as root. +To use fbdevglut with the prefered tty input, you should add the user to the +tty group as well +<p> + +<h1>4. Using fbdevglut</h1> +Almost all of the programs in the progs directory use glut, and they compile with fbdevglut. + +<p> +To compile the redbook sample programs: +<pre> + cd progs/redbook + make +</pre> +</p> +<p>glut features not supported: +<li>Overlays +<li>Subwindows +<li>Input devices other than Keyboard/Mouse +<li>No support for GLUT_MULTISAMPLE, GLUT_STEREO, or GLUT_LUMINANCE +<li>Cursor and Menu Support will flicker in GLUT_SINGLE mode + +<p>Keyboard input is read by opening /dev/tty and reading keycodes in medium raw mode. +<p>Mouse input is read from env var MOUSE, or /dev/gpmdata and should be in ms3 format. +To forward data in this format to /dev/gpmdata, run gpm with the -Rms3 option. +<p> glutInit allows glut programs to pass parameters to the glut library, currently the +following options are supported for fbdevglut: +<p><li>-geometry widthxheight -- This will force the resolution to be widthxheight instead of autodetecting. +The modes are read from /etc/fb.modes +<p><li>-bpp -- This will force the bitdepth to the one specified +<p><li>-vt -- This allows you to specify the virtual terminal to attach keyboard input to. It is useful to specify when running inside screen. +<p><li>-mousespeed -- A floating point multiplication factor to increase mouse speed +<p><li>-nomouse -- Disable mouse support +<p><li>-nokeyboard -- Disable keyboard support (this will probably break mouse support as well) +<p><li>-stdin -- Use stdin for input instead of attaching to kbd in medium-raw mode. +This will make it impossible to detect keypresses like Shift+Tab, you will also need to specify -gpmmouse for mouse support. This option can be used with a debugger, and it is possible to single step a program with gdb and set the FRAMEBUFFER environment variable to a different framebuffer for display. The program will not be able to handle vt switching on it's own, so it will always display. +<p><li>-gpmmouse -- This will attempt to connect to the /dev/gpmctl socket using liblow +for mouse data. Gpm does not provide this data when in graphics mode, so vt switching +will briefly display text. This mode typically has no initial mouse delay. +<p><li>-- Ignore any additional arguments +<p>Notes: +<p> +1. The mouse pointer flickers in single buffering mode, as it must be rendered in software. Hopefully in the future there will be a way to access hardware cursors in fbdev devices. +</p> +</body> +</html> diff --git a/mesalib/docs/glu.html b/mesalib/docs/glu.html new file mode 100644 index 000000000..8adaf42bc --- /dev/null +++ b/mesalib/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/mesalib/docs/helpwanted.html b/mesalib/docs/helpwanted.html new file mode 100644 index 000000000..34afe49f7 --- /dev/null +++ b/mesalib/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 / To-Do List</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> +<b>Driver patching and testing.</b> +Patches are often posted to the mesa3d-dev mailing list, but aren't +immediately checked into git because not enough people are testing them. +Just applying patches, testing and reporting back is helpful. +<li> +<b>Driver debugging.</b> +There are plenty of open bugs in the bug database. +<li> +<b>Remove aliasing warnings.</b> +Enable gcc -Wstrict-aliasing=2 -fstrict-aliasing and track down aliasing +issues in the code. +<li> +<b>Windows driver building, testing and maintenance.</b> +The Visual Studio project files aren't always updated in a timely manner +when new source files are added or old ones are removed. +Fixing these tends to delay new Mesa releases. +<li> +<b>Maintenance and testing of lesser-used drivers.</b> +Drivers such as DOS/DJGPP, GGI, etc that aren't being maintained are being +deprecated starting in Mesa 7.3. +<li> +<b>Contribute more tests to +<a href="http://glean.sourceforge.net/" target="_parent">glean</a>.</b> +<li> +<b>Automatic testing. +</b> +It would be great if someone would set up an automated system for grabbing +the latest Mesa code and run tests (such as glean) then report issues to +the mailing list. +</ol> + + +<p> +If you want to do something new in 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/mesalib/docs/index.html b/mesalib/docs/index.html new file mode 100644 index 000000000..eec4d725c --- /dev/null +++ b/mesalib/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/mesalib/docs/install.html b/mesalib/docs/install.html new file mode 100644 index 000000000..953d2094d --- /dev/null +++ b/mesalib/docs/install.html @@ -0,0 +1,411 @@ +<HTML> + +<TITLE>Compiling and Installing</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + + +<H1>Compiling and Installing</H1> + +<ol> +<li><a href="#unix-x11">Unix / X11</a> + <ul> + <li><a href="#prereq">Prerequisites for DRI and hardware acceleration</a> + <li><a href="#autoconf">Building with autoconf</a> + <li><a href="#traditional">Building with traditional Makefiles</a> + <li><a href="#libs">The Libraries</a> + <li><a href="#demos">Running the demos + <li><a href="#install">Installing the header and library files + <li><a href="#pkg-config">Building OpenGL programs with pkg-config + </ul> +<li><a href="#windows">Windows</a> +<li><a href="#scons">SCons</a> +<li><a href="#other">Other</a> +</ol> +<br> + + +<a name="unix-x11"> +<H2>1. Unix/X11 Compilation and Installation</H1> + + +<a name="prereq"> +<h3>1.1 Prerequisites for DRI and hardware acceleration</h3> + +<p> +The following are required for DRI-based hardware acceleration with Mesa 7.3: +</p> + +<ul> +<li><a href="http://xorg.freedesktop.org/releases/individual/proto/">dri2proto</a> version 1.99.3 or later +<li>Linux 2.6.28 +<li><a href="http://dri.freedesktop.org/libdrm/" target="_parent">libDRM</a> +version 2.4.3 or later +<li>Xorg server version 1.5 or later +</ul> +</p> + + +<a name="autoconf"> +<h3>1.2 Building with Autoconf</h3> + +<p> +Mesa may be <a href="autoconf.html">built using autoconf</a>. +This should work well on most GNU-based systems. +If that fails the traditional Mesa build system is available. + + + +<a name="traditional"> +<h3>1.3 Building with traditional Makefiles</h3> + +<p> +The traditional Mesa build system is based on a collection of pre-defined +system configurations. +</p> +<p> +To see the list of configurations, just type <code>make</code>. +Then choose a configuration from the list and type <code>make</code> +<em>configname</em>. +</p> + +<p> +Mesa may be built in several different ways using the predefined configurations: +</p> +<ul> +<li><b><em>Stand-alone/Xlib mode</em></b> - Mesa will be compiled as +a software renderer using Xlib to do all rendering. +The libGL.so library will be a self-contained rendering library that will +allow you to run OpenGL/GLX applications on any X server (regardless of +whether it supports the GLX X server extension). +You will <em>not</em> be able to use hardware 3D acceleration. +<p> +To compile stand-alone Mesa type <code>make</code> 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 +accelerated OpenGL rendering (for ATI, Intel, Matrox, etc) will be built. +The libGL.so library will support the GLX extension and will load/use +the DRI hardware drivers. + + +<p> +Build Mesa and the DRI hardware 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 which are optimized for those +architectures. +</p> +<p> +Make sure you have the prerequisite versions of DRM and Xserver mentioned +above. +</p> + +</li> + +</ul> + + +<p> +Later, if you want to rebuild for a different configuration run +<code>make realclean</code> before rebuilding. +</p> + + +<a name="libs"> +<h3>1.4 The libraries</h3> + +<p> +When compilation has finished, look in the top-level <code>lib/</code> +(or <code>lib64/</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 15607851 Jul 21 12:11 ffb_dri.so +-rwxr-xr-x 1 brian users 15148747 Jul 21 12:11 i810_dri.so +-rwxr-xr-x 1 brian users 14497814 Jul 21 12:11 i830_dri.so +-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so +-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 16050488 Jul 21 12:11 r300_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> + + +<a name="demos"> +<h3>1.5 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'll probably have to set two environment variables +to indicate where the libraries are located. For example: +<p> +<blockquote> +<b>cd lib/</b> +<br> +<b>export LD_LIBRARY_PATH=${PWD}</b> +<br> +<b>export LIBGL_DRIVERS_PATH=${PWD}</b> (if using DRI drivers) +</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> + + +<a name="install"> +<H3>1.6 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>. +But first, check the Mesa/configs/default file and examine the values +of the <b>INSTALL_DIR</b> and <b>DRI_DRIVER_INSTALL_DIR</b> variables. +Change them if needed, then run <code>make install</code>. +</p> + +<p> +The variable +<b>DESTDIR</b> may also be used to install the contents to a temporary +staging directory. +This can be useful for package management. +For example: <code>make install DESTDIR=/somepath/</code> +</p> + +<p> +Note: at runtime you can use the LD_LIBRARY_PATH environment variable +(on Linux at least) to switch +between the Mesa libraries and other vendor's libraries whenever you want. +This is a handy way to compare multiple OpenGL implementations. +</p> + + +<a name="pkg-config"> +<H3>1.7 Building OpenGL programs with pkg-config</H3> + +<p> +Running <code>make install</code> will install package configuration files +for the pkg-config utility. +</p> + +<p> +When compiling your OpenGL application you can use pkg-config to determine +the proper compiler and linker flags. +</p> + +<p> +For example, compiling and linking a GLUT application can be done with: +</p> +<pre> + gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo +</pre> + +<br> + +<a name="windows"> +<H2>2. Windows Compilation and Installation</H1> + +<p> +Please see the <a href="#scons">instructions on building with SCons</a>. +Alternatively see <a href="README.WIN32">README.WIN32</a> file. +</p> + + + +<a name="scons"> +<H2>3. Building with SCons</H1> + +<p> +To build Mesa with SCons on Linux or Windows do +</p> +<pre> + scons +</pre> +<p> +The build output will be placed in +build/<i>platform</i>-<i>machine</i>-<i>debug</i>/..., where <i>platform</i> is for +example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed +by -debug for debug builds. +</p> + +<p> +The sample programs are built seperately. To build them do +<pre> + scons -C progs +</pre> +And the build output will be placed in progs/build/... +</p> + +<p> +To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do +</p> +<pre> + scons platform=windows toolchain=crossmingw machine=x86 statetrackers=mesa drivers=softpipe,trace winsys=gdi + scons -C progs platform=windows toolchain=crossmingw machine=x86 -k +</pre> +<p> +This will create: +</p> +<ul> +<li>build/windows-x86-debug/gallium/winsys/gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll +<li>build/windows-x86-debug/glut/glx/glut32.dll +<li>progs/build/windows-x86-debug/wgl/wglinfo.exe +<li>progs/build/windows-x86-debug/trivial/tri.exe +<li>and many other samples in progs/build/windows-x86-debug/... +</ul> +<p> +Put them all in the same directory to test them. +</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.VMS">README.VMS</A> - VMS +<LI><A HREF="README.GGI">README.GGI</A> - GGI +<LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver +<LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin +<LI><A HREF="README.BEOS">README.BEOS</A> - BeOS +<LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver +<LI><A HREF="README.DJ">README.DJ</A> - DJGPP +<LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS +<LI><A HREF="README.MINGW32">README.MINGW32</A> - Mingw32 +<LI><A HREF="README.NeXT">README.NeXT</A> - NeXT +<LI><A HREF="README.OpenStep">README.OpenStep</A> - OpenStep +<LI><A HREF="README.OS2">README.OS2</A> - OS/2 +<LI><A HREF="README.WINDML">README.WINDML</A> - WindML +</UL> + + + + +</body> +</html> diff --git a/mesalib/docs/intro.html b/mesalib/docs/intro.html new file mode 100644 index 000000000..aae2e6e19 --- /dev/null +++ b/mesalib/docs/intro.html @@ -0,0 +1,315 @@ +<HTML> + +<TITLE>Mesa Introduction</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Introduction</H1> + +<p> +Mesa is an open-source implementation of the +<a href="http://www.opengl.org/" target="_parent">OpenGL</a> specification - +a system for rendering interactive 3D graphics. +</p> + +<p> +A variety of device drivers allows Mesa to be used in many different +environments ranging from software emulation to complete hardware acceleration +for modern GPUs. +</p> + +<p> +Mesa ties into several other open-source projects: the +<a href="http://dri.freedesktop.org/" target="_parent">Direct Rendering +Infrastructure</a> and <a href="http://x.org" target="_parent">X.org</a> to +provide OpenGL support to users of X on Linux, FreeBSD and other operating +systems. +</p> + + + +<H1>Project History</H1> + +<p> +The Mesa project was originally started by 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> +June 2007: Mesa 7.0 is released, implementing the OpenGL 2.1 specification +and OpenGL Shading Language. +</p> + + +<p> +Ongoing: Mesa is used as the core of many hardware OpenGL drivers for +the XFree86 and 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. +Mesa's major version number has been incremented whenever a new version +of the OpenGL specification is implemented. +</p> + + +<H2>Version 7.x features</H2> +<p> +Version 7.x of Mesa implements the OpenGL 2.1 API. The main feature +of OpenGL 2.x is the OpenGL Shading Language. +</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/mesalib/docs/libraries.html b/mesalib/docs/libraries.html new file mode 100644 index 000000000..eaeb0451a --- /dev/null +++ b/mesalib/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 & 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/mesalib/docs/license.html b/mesalib/docs/license.html new file mode 100644 index 000000000..44b980d93 --- /dev/null +++ b/mesalib/docs/license.html @@ -0,0 +1,117 @@ +<HTML> + +<TITLE>License / Cppyright Information</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Disclaimer</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>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-2007 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 License +------------------------------------------------------------------ +Main Mesa code src/mesa/ Mesa (MIT) + +Device drivers src/mesa/drivers/* MIT, generally + +Ext headers include/GL/glext.h Khronos + include/GL/glxext.h + +GLUT src/glut/ Mark Kilgard's copyright + +SGI GLU library src/glu/sgi/ SGI Free B + +demo programs progs/demos/ see source files + +X demos progs/xdemos/ see source files + +SGI demos progs/samples/ SGI license + +RedBook demos progs/redbook/ SGI license +</pre> + +<p> +In general, consult the source files for license terms. +</p> + + +</body> +</html> diff --git a/mesalib/docs/lists.html b/mesalib/docs/lists.html new file mode 100644 index 000000000..5227fbd05 --- /dev/null +++ b/mesalib/docs/lists.html @@ -0,0 +1,69 @@ +<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 3D / DRI mailing lists: +</p> + +<ul> +<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-announce" +target="_parent">mesa3d-announce</a> - announcements of new Mesa +versions are sent to this list. +</li> +<br> +<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-users" +target="_parent">mesa3d-users</a> - intended for users of the Mesa and DRI. +Newbie questions are appropriate, but please try the general OpenGL +resources and Mesa/DRI documentation first. +</li> +<br> +<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-dev" +target="_parent">mesa3d-dev</a> - for discussion of Mesa and Direct Rendering +Infrastructure development. Not for beginners. +</li> +<br> +<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-commit" +target="_parent">mesa-commit</a> - relays git check-in messages +(for developers). +<br> +Note: the old mesa3d-cvs list is no longer in use. +</li> +</ul> + +<p>For mailing lists about Direct Rendering Modules (drm) in Linux/BSD +kernels, see <a href="http://dri.freedesktop.org/wiki/MailingLists">wiki</a>. + +<p> +<b>Notice</b>: non-member posts to any of these lists will be automatically +rejected. +</p> + + +<br> + +<H1>OpenGL Forums</H1> + +<p> +Here are some other OpenGL-related forums you might find useful: +</p> + +<ul> +<li><a href="http://www.opengl.org/cgi-bin/ubb/ultimatebb.cgi" +target="_parent">OpenGL discussion forums</A> at www.opengl.org</li> +<li>Usenet newsgroups: +<ul> +<li>comp.graphics.algorithms</li> +<li>comp.graphics.api.opengl</li> +<li>comp.os.linux.x</li> +</ul> +</ul> + +</HTML> +</BODY> diff --git a/mesalib/docs/mangling.html b/mesalib/docs/mangling.html new file mode 100644 index 000000000..55071544f --- /dev/null +++ b/mesalib/docs/mangling.html @@ -0,0 +1,30 @@ +<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 both Mesa and another OpenGL library 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 CFLAGS in the configuration file which you want to use. +For example: +<pre> +CFLAGS += -DUSE_MGL_NAMESPACE +</pre> +</p> + + +</BODY> +</HTML> diff --git a/mesalib/docs/modelers.html b/mesalib/docs/modelers.html new file mode 100644 index 000000000..aae968695 --- /dev/null +++ b/mesalib/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.org/" 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.openvrml.org/" 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/mesalib/docs/news.html b/mesalib/docs/news.html new file mode 100644 index 000000000..07ad42ed4 --- /dev/null +++ b/mesalib/docs/news.html @@ -0,0 +1,1250 @@ +<HTML> + +<TITLE>Mesa News</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>News</H1> + + +<h2>September 3, 2009</h2> +<p> +<a href="relnotes-7.5.1.html">Mesa 7.5.1</a> is released. +This is a bug-fix release which fixes bugs found in version 7.5. +</p> + + +<h2>July 17, 2009</h2> +<p> +<a href="relnotes-7.5.html">Mesa 7.5</a> is released. +This is a new features release. People especially concerned about +stability may want to wait for the follow-on 7.5.1 bug-fix release. +</p> + + +<h2>June 23, 2009</h2> +<p> +<a href="relnotes-7.4.4.html">Mesa 7.4.4</a> is released. +This is a stable release that fixes a regression in the i915/i965 drivers +that slipped into the 7.4.3 release. +</p> + + +<h2>June 19, 2009</h2> +<p> +<a href="relnotes-7.4.3.html">Mesa 7.4.3</a> is released. +This is a stable release fixing bugs since the 7.4.2 release. +</p> + + +<h2>May 15, 2009</h2> +<p> +<a href="relnotes-7.4.2.html">Mesa 7.4.2</a> is released. +This is a stable release fixing bugs since the 7.4.1 release. +</p> + + +<h2>April 18, 2009</h2> +<p> +<a href="relnotes-7.4.1.html">Mesa 7.4.1</a> is released. +This is a stable release fixing bugs since the 7.4 release. +</p> + + +<h2>March 27, 2009</h2> +<p> +<a href="relnotes-7.4.html">Mesa 7.4</a> is released. +This is a stable release fixing bugs since the 7.3 release. +</p> + + +<h2>January 22, 2009</h2> +<p> +<a href="relnotes-7.3.html">Mesa 7.3</a> is released. +This is a new development release. +Mesa 7.4 will follow and will have bug fixes relative to 7.3. +</p> + + +<h2>September 20, 2008</h2> +<p> +<a href="relnotes-7.2.html">Mesa 7.2</a> is released. +This is a stable, bug-fix release. +</p> + + +<h2>August 26, 2008</h2> +<p> +<a href="relnotes-7.1.html">Mesa 7.1</a> is released. +This is a new development release. +It should be relatively stable, but those especially concerned about +stability should wait for the 7.2 release or use Mesa 7.0.4 (the +previous stable release). +</p> + + +<h2>August 16, 2008</h2> +<p> +<a href="relnotes-7.0.4.html">Mesa 7.0.4</a> is released. +This is a bug-fix release. +</p> + + +<h2>April 4, 2008</h2> +<p> +<a href="relnotes-7.0.3.html">Mesa 7.0.3</a> is released. +This is a bug-fix release. +</p> + + +<h2>January 24, 2008</h2> + +<p> +Added a new page describing the <a href="cell.html">Mesa Cell driver</a>. +</p> + + + +<h2>November 13, 2007</h2> + +<p> +Gallium3D is the codename for the new Mesa device driver architecture +which is currently under development. +A <a href="http://wiki.freedesktop.org/wiki/Software/gallium" +target="_parent"> summary</a> of the architecture can be found on the +Tungsten Graphics website. +</p> +<p> +Gallium3D development is taking place on the <em>gallium-0.1</em> branch +of the git repository. +Currently, there's only a software-only driver and an Intel i915/945 driver +but other drivers will be coming... +</p> + + +<h2>November 10, 2007</h2> +<p> +<a href="relnotes-7.0.2.html">Mesa 7.0.2</a> is released. +This is a bug-fix release. +</p> + + +<h2>August 3, 2007</h2> +<p> +<a href="relnotes-7.0.1.html">Mesa 7.0.1</a> is released. +This is a bug-fix release. +</p> + + +<h2>June 22, 2007</h2> +<p> +<a href="relnotes-7.0.html">Mesa 7.0</a> is released. +This is a stable release featuring OpenGL 2.1 support. +</p> + + +<h2>April 27, 2007</h2> +<p> +<a href="relnotes-6.5.3.html">Mesa 6.5.3</a> is released. +This is a development release which will lead up to the Mesa 7.0 release +(which will advertise OpenGL 2.1 API support). +</p> + + +<h2>March 26, 2007</h2> +<p> +The new Shading Language compiler branch has been merged into the git +master branch. This is a step toward hardware support for the OpenGL +2.0 Shading Language and will be included in the next Mesa release. +In conjunction, <a href="http://glean.sf.net" target="_parent">Glean +</a> has been updated with a new test that does over 130 tests of the +shading language and built-in functions. +</p> + +<h2>April 2007</h2> +<p> +Thomas Hellström of +<a href="http://www.tungstengraphics.com" target="_parent"> +Tungsten Graphics</a> has written a whitepaper describing the new +<a href="http://www.tungstengraphics.com/mm.pdf">DRI memory management +system</a>. +</p> + +<h2>December 5, 2006</h2> +<p> +Mesa is now using git as its source code management system. +The previous CVS repository should no longer be used. +See the <a href="repository.html">repository page</a> for more information. +</p> + +<h2>December 2, 2006</h2> +<p> +<a href="relnotes-6.5.2.html">Mesa 6.5.2</a> has been released. +This is a new development release. +</p> + +<h2>September 15, 2006</h2> +<p> +<a href="relnotes-6.5.1.html">Mesa 6.5.1</a> has been released. +This is a new development release. +</p> + +<h2>March 31, 2006</h2> +<p> +<a href="relnotes-6.5.html">Mesa 6.5</a> has been released. +This is a new development release. +</p> + + +<h2>February 2, 2006</h2> +<p> +<a href="relnotes-6.4.2.html">Mesa 6.4.2</a> has been released. +This is stable, bug-fix release. +</p> + + +<h2>November 29, 2005</h2> +<p> +<a href="relnotes-6.4.1.html">Mesa 6.4.1</a> has been released. +This is stable, bug-fix release. +</p> + + + +<h2>October 24, 2005</h2> +<p> +<a href="relnotes-6.4.html">Mesa 6.4</a> has been released. +This is stable, bug-fix release. +</p> + + +<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> +<a href="versions.html#6.3.2">Changes in version 6.3.1</a> +<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&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->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) +</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> +</body> +</html> diff --git a/mesalib/docs/openvg.html b/mesalib/docs/openvg.html new file mode 100644 index 000000000..442ee522f --- /dev/null +++ b/mesalib/docs/openvg.html @@ -0,0 +1,68 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>OpenVG State Tracker</H1> + +<p> +The current version of the OpenVG state tracker implements OpenVG 1.0. +</p> +<p> +More informations about OpenVG can be found at +<a href="http://www.khronos.org/openvg/" target="_parent"> +http://www.khronos.org/openvg/</a> . +</p> +<p> +The OpenVG state tracker depends on the Gallium architecture and a working EGL implementation. +</p> + + +<h2>Building the library</h2> +<ol> +<li>Build Mesa3D with Gallium3D. Any build that builds Gallium3D libraries and EGL will suffice</li> +<li>cd src/gallium/state_trackers/vega; make</li> +<li>The last step will build libOpenVG library. You can add the libdir to LD_LIBRARY_PATH or install libOpenVG</li> +</ol> + +<h3>Sample build</h3> +A sample build looks as follows: +<pre> + make linux-x86-64-debug + cd src/gallium/state_trackers/vega + make + cd ../../../.. + export LD_LIBRARY_PATH=$PWD/lib64 + export EGL_DRIVER="egl_softpipe" +</pre> + +<h2>OpenVG Demos</h2> + +<p> +To build the OpenVG demos: +</p> +<pre> + cd progs/openvg + make +</pre> +<p> +To run a demo: +</p> +<pre> + cd openvg/demos + ./lion +</pre> + + +<h2>Notes</h2> +<ul> +<li>EGL_DRIVER environmental variable: forces usage of a specific EGL driver. Unless you force egl_softpipe the implementation will look for a DRI hardware accelerate driver and unless you have a Gallium driver that supports it, you'll see crashes</li> +</ul> + +</body> +</html> diff --git a/mesalib/docs/osmesa.html b/mesalib/docs/osmesa.html new file mode 100644 index 000000000..629d054f4 --- /dev/null +++ b/mesalib/docs/osmesa.html @@ -0,0 +1,88 @@ +<HTML> + +<TITLE>Off-screen Rendering</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Off-screen Rendering</H1> + + +<p> +Mesa's off-screen rendering interface is used for rendering into +user-allocated blocks of memory. +That is, the GL_FRONT colorbuffer is actually a buffer in main memory, +rather than a window on your display. +There are no window system or operating system dependencies. +One potential application is to use Mesa as an off-line, batch-style renderer. +</p> + +<p> +The <B>OSMesa</B> API provides three basic functions for making off-screen +renderings: OSMesaCreateContext(), OSMesaMakeCurrent(), and +OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for +more information about the API functions. +</p> + +<p> +There are several examples of OSMesa in the <code>progs/osdemo/</code> +directory. +</p> + + +<H2>Deep color channels</H2> + +<p> +For some applications 8-bit color channels don't have sufficient +precision. +OSMesa 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> +Before version 6.5.1, Mesa had to be recompiled to support exactly +one of 8, 16 or 32-bit channels. +With Mesa 6.5.1, Mesa can be compiled for either 8, 16 or 32-bit channels +and render into any of the smaller size channels. +For example, if Mesa's compiled for 32-bit channels, you can also render +16 and 8-bit channel images. +</p> + +<p> +To build Mesa/OSMesa for 16 and 8-bit color channel support: +<pre> + make realclean + make linux-osmesa16 +</pre> + +<p> +To build Mesa/OSMesa for 32, 16 and 8-bit color channel support: +<pre> + make realclean + make linux-osmesa32 +</pre> + +<p> +You'll wind up with a library named libOSMesa16.so or libOSMesa32.so. +Otherwise, most Mesa configurations build an 8-bit/channel libOSMesa.so library +by default. +</p> + +<p> +If performance is important, compile Mesa for the channel size you're +most interested in. +</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> + +</BODY> +</HTML> diff --git a/mesalib/docs/pbuffers.html b/mesalib/docs/pbuffers.html new file mode 100644 index 000000000..259910155 --- /dev/null +++ b/mesalib/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/mesalib/docs/perf.html b/mesalib/docs/perf.html new file mode 100644 index 000000000..ee9c4b117 --- /dev/null +++ b/mesalib/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/mesalib/docs/precompiled.html b/mesalib/docs/precompiled.html new file mode 100644 index 000000000..50cb2af60 --- /dev/null +++ b/mesalib/docs/precompiled.html @@ -0,0 +1,20 @@ +<HTML> + +<TITLE>Precompiled libraries</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Precompiled Libraries</H1> + +<p> +In general, precompiled Mesa libraries are not available. +</p> +<p> +However, some Linux distros (such as Ubuntu) seem to closely track +Mesa and often have the latest Mesa release available as an update. +</p> + +</BODY> +</HTML> diff --git a/mesalib/docs/relnotes-6.4.1.html b/mesalib/docs/relnotes-6.4.1.html new file mode 100644 index 000000000..3d6ff1c4f --- /dev/null +++ b/mesalib/docs/relnotes-6.4.1.html @@ -0,0 +1,68 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 6.4.1 / November 29, 2006</H1> + +<p> +Mesa 6.4.1 is a stable, bug-fix release. +</p> + + +<h2>MD5 checksums</h2> +<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>Bug fixes</h2> +<ul> +<li>redefining a vertex program string didn't take effect in TNL module +<li>fixed occasional segfault upon vertex/fragment parsing error +<li>vertex program LIT instruction didn't handle 0^0=1 correctly +<li>fragment program fog option didn't work with glDrawPixels, glBitmap +<li>USE_MGL_NAMESPACE didn't work for x86-64 +<li>OSMesa demos were missing from previous release tarballs +<li>fixed problem with float->ushort conversion in glClear (bug 4992) +<li>popping of GL_EYE_PLANE texgen state was broken (bug 4996) +<li>popping of GL_SPOT_DIRECTION light state was broken (bug 5005) +<li>fixed occasional triangle color interpolation problem on VMS +<li>work around invalid free() call (bug 5131) +<li>fixed BSD X server compilation problem by including stdint.h +</ul> + + +<h2>Driver Status</h2> + +<pre> +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 +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-6.4.2.html b/mesalib/docs/relnotes-6.4.2.html new file mode 100644 index 000000000..f5a658f99 --- /dev/null +++ b/mesalib/docs/relnotes-6.4.2.html @@ -0,0 +1,75 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 6.4.2 / February 2, 2006</H1> + +<p> +Mesa 6.4.2 is a stable, bug-fix release. +</p> + + +<h2>MD5 checksums</h2> +<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>New features</h2> +<ul> +<li>added OSMesaColorClamp() function/feature +<li>added wglGetExtensionStringARB() function +</ul> + +<h2>Changes</h2> +<ul> +<li>GLUT tarball +<br> +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. +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>fixed some problems when building on Windows +<li>GLw header files weren't installed by installmesa script (bug 5396) +<li>GL/glfbdev.h file was missing from tarballs +<li>fixed TNL initialization bug which could lead to crash (bug 5791) +</ul> + + +<h2>Driver Status</h2> + +<pre> +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 +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-6.4.html b/mesalib/docs/relnotes-6.4.html new file mode 100644 index 000000000..1fffa27f6 --- /dev/null +++ b/mesalib/docs/relnotes-6.4.html @@ -0,0 +1,90 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 6.4 / October 24, 2005</H1> + +<p> +Mesa 6.4 is a stable, bug-fix release. +</p> + + +<h2>MD5 checksums</h2> +<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>New</h2> +<ul> +<li>Added a fast XOR line drawing function in Xlib driver +<li>Added support for GL_ARB_texture_mirrored_repeat to savage driver (supported only on Savage4 hardware). +</ul> + +<h2>Changes</h2> +<ul> +<li>Mesa now packaged in three parts: Library, Demos and GLUT +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig +<li>Some files were present multiple times in the 6.3.2 tarballs +<li>r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207) +<li>glxgears_fbconfig demo didn't work (bug 4237) +<li>fixed bug when bilinear sampling 2d textures with borders +<li>glXCreatePbuffer() could segfault instead of returning 0 (bug 4235) +<li>fixed undefined frexp and rand in X.org libGLcore.a (bug 4242) +<li>fixed a few problems with proxy color tables (bug 4270) +<li>fixed precision problem in Z clearing (bug 4395) +<li>glBitmap, glDraw/CopyPixels mistakenly generated selection hits +<li>fixed potential segfault caused by reading pixels outside + of renderbuffer bounds +<li>glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB +<li>fixed memory corruption bug involving software alpha buffers +<li>glReadPixels clipped by window bounds was sometimes broken +<li>glDraw/CopyPixels of stencil data ignored the stencil write mask +<li>glReadPixels from a texture bound to a framebuffer object didn't work +<li>glIsRender/FramebufferEXT weren't totally correct +<li>fixed a number of point size attenuation/fade bugs +<li>fixed glFogCoord bug 4729 +<li>GLX encoding for transpose matrix functions was broken +<li>fixed broken fragment program KIL and SWZ instructions +<li>fragment programs that wrote result.depth.z didn't work +</ul> + + +<h2>Driver Status</h2> + +<pre> +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 +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-6.5.1.html b/mesalib/docs/relnotes-6.5.1.html new file mode 100644 index 000000000..0f03f931e --- /dev/null +++ b/mesalib/docs/relnotes-6.5.1.html @@ -0,0 +1,139 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 6.5.1 Release Notes / September 15, 2006</H1> + +<p> +Mesa 6.5.1 is a 6.5 follow-on development release mostly consisting of +bug fixes. +</p> + + +<h2>MD5 checksums</h2> +<pre> +d9a555297319bb932a3192952d53d073 MesaLib-6.5.1.tar.gz +c46f2c6646a270911b791dd8e1c2d977 MesaLib-6.5.1.tar.bz2 +939eaaff33322bfeafac784402b45f4f MesaLib-6.5.1.zip +9e4bbe83c007bfbaa67449a81cc3d36a MesaDemos-6.5.1.tar.gz +0f2794baf7a9d98b22caea9f78c6942d MesaDemos-6.5.1.tar.bz2 +14c77eab9cc7a265c331abf239927c1c MesaDemos-6.5.1.zip +c5f87c23aaf4eaf1bda0d007ea98366c MesaGLUT-6.5.1.tar.gz +2525642fe7f454e3e1a1aad01359b406 MesaGLUT-6.5.1.tar.bz2 +e33b165c22551e23b58ede8767378543 MesaGLUT-6.5.1.zip +</pre> + + +<h2>New Features</h2> +<ul> +<li>Intel i965 "broadwater" DRI driver + +<li>GL_APPLE_vertex_array_object - allows encapsulation of a set of vertex + arrays in an object. + +<li>GL_EXT_texture_sRGB - non-linearly mapped texture formats + +<li>GL_EXT_gpu_program_parameters - addes a few new functions for setting + multiple vertex/fragment program parameters with one call. +<li>"engine" demo +<li>updated fbdev driver and GLUT for fbdev (Sean D'Epagnier) +<li>many updates to the DRI drivers +</ul> + +<h2>Changes</h2> +<ul> +<li>The glVertexAttribARB functions no longer alias the conventional + vertex attributes. +<li>glxinfo program prints more info with -l option +<li>GL_FRAGMENT_PROGRAM_NV and GL_FRAGMENT_PROGRAM_ARB are now + compatible, in terms of glBindProgramARB() +<li>The GL_ARB_vertex_program attribute <code>vertex.weight</code> is now + accepted by the parser, even though the GL_ARB_vertex_blend and + GL_EXT_vertex_weighting extensions aren't supported. + Allows Warcraft to run. +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>fixed broken texture border handling for depth textures (bug 6498) +<li>removed the test for duplicated framebuffer attachments, per + version 117 of the GL_EXT_framebuffer_object specification +<li>fixed a few render-to-texture bugs, including render to depth texture +<li>clipping of lines against user-defined clip planes was broken (6512) +<li>assembly language dispatch for SPARC was broken (bug 6484) +<li>assorted compilation fixes on various Unix platforms (Dan Schikore) +<li>glPopAttrib could restore an invalid value for GL_DRAW_BUFFER +<li>assorted minor fixes for 16 and 32 bit/channel modes +<li>fixed assorted bugs in texture compression paths +<li>fixed indirect rendering vertex array crashes (bug 6863) +<li>glDrawPixels GL_INDEX_OFFSET didn't always work +<li>fixed convolution memory leak (bug 7077) +<li>rectangular depth textures didn't work +<li>invalid mode to glBegin didn't generate an error (bug 7142) +<li>'normalized' parameter to glVertexAttribPointerARB didn't work +<li>disable bogus GLX_SGI_video_sync extension in xlib driver +<li>fixed R128 driver locking bug (Martijn van Oosterhout) +<li>using evaluators with vertex programs caused crashes (bug 7564) +<li>fragment.position wasn't set correctly for point/line primitives +<li>fixed parser bug for scalar sources for GL_NV_fragment_program +<li>max fragment program length was incorrectly 128, now 1024 +<li>writes to result.depth in fragment programs weren't clamped to [0,1] +<li>fixed potential dangling pointer bug in glBindProgram() +<li>fixed some memory leaks (and potential crashes) in Xlib driver +<li>fixed a number of build issues on HP-UX (Christopher Bell) +<li>accum buffer didn't work with OSMesa interface +</ul> + + +<h2>Internal code changes</h2> + +<p> +A number of Mesa program-related structs were renamed. +For example <i>struct vertex_program</i> is now <i>struct gl_vertex_program</i>. +All the effected drivers have been updated. +</p> + +<p>Ian Romanick updated the GL API dispatch code in a number of ways. +First, many old/unused extensions were removed. +Second, the static entrypoints for some extensions were removed. +This means GL function pointers will have to be used more often +(e.g. use glXGetProcAddressARB()). +</p> + + +<h2>To Do (someday) items</h2> +<ul> +<li>Switch to freeglut +<li>Increase MAX_DRAWBUFFERS +<li>Fix linux-glide target/driver. +<li>Fix lambda calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +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 +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-6.5.2.html b/mesalib/docs/relnotes-6.5.2.html new file mode 100644 index 000000000..db2038ab0 --- /dev/null +++ b/mesalib/docs/relnotes-6.5.2.html @@ -0,0 +1,126 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 6.5.2 Release Notes / December 2, 2006</H1> + +<p> +Mesa 6.5.2 is a 6.5 follow-on development release with a few new features +but mostly consisting of bug fixes. +</p> + + +<h2>MD5 checksums</h2> +<pre> +11a033b078e090b3caaeb467234fe299 MesaLib-6.5.2.tar.gz +e4d894181f1859651658b3704633e10d MesaLib-6.5.2.tar.bz2 +63bf1d444fa738cca52ce1043e284021 MesaLib-6.5.2.zip +2b8f1375d16bda5f5a2304174cd5bcf7 MesaDemos-6.5.2.tar.gz +e870efe98d3a50be01ab211b9b2e25d9 MesaDemos-6.5.2.tar.bz2 +d92cc6f5fee5ca75af0be04f9f4908f0 MesaDemos-6.5.2.zip +8d4d77e3a7132f4217bbc7c1ab157030 MesaGLUT-6.5.2.tar.gz +e84edbb11c69c8e408dfadd2ed08e95b MesaGLUT-6.5.2.tar.bz2 +c6d7134843ed5faf11f6686ecb5d2a2e MesaGLUT-6.5.2.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>New DRI memory manager system. Currently used by the i915tex driver. +Other DRI drivers will be updated to use the new memory manager in coming +months. +<br> +To use the new driver you'll need the most recent DRM library and drivers +(version 2.2 or later) and a recent xf86-video-intel driver module from X.org. +<br> +New features resulting from this work include: +<ul> +<li>EXT_framebuffer_objects, render to texture +<li>ARB_pixel_buffer_objects +<li>Accelerated CopyTexSubimage, DrawPixels, ReadPixels, CopyPixels +<li>Accelerated texture uploads from pixel buffer objects +<li>Potentially texturing directly from the pixel buffer object (zero +copy texturing). +</ul> +<li>New Intel i965 DRI driver +<li>New <code>minstall</code> script to replace normal install program +<li>Faster fragment program execution in software +<li>Added (or fixed) support for <a href="http://www.opengl.org/registry/specs/SGI/make_current_read.txt"> + GLX_SGI_make_current_read</a> to the following drivers:</li> + <ul> + <li>radeon</li> + <li>savage</li> + <li>mga</li> + <li>tdfx</li> + </ul> +<li>Added support for ARB_occlusion_query to the tdfx driver (Ian +Romanick).</li> +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>fixed invalid memory read while rendering textured points (bug 8320) +<li>fixed problems with freebsd-dri configuration (bug 8344) +<li>Mesa's fake glxGetCurrentContext() wasn't thread-aware +<li>OPTION NV_position_invariant didn't work in NV vertex programs +<li>glDrawPixels into a user-created framebuffer object could crash Xlib driver +<li>Line clipping was broken in some circumstances +<li>fragment.fogcoord register didn't always contain the correct value +<li>RGBA logicops didn't work reliably in some DRI drivers +<li>Fixed broken RGBA LogicOps in Intel DRI drivers +<li>Fixed some fragment program bugs in Intel i915 DRI driver +<li>Fixed glGetVertexAttribfvARB bug 8883 +<li>Implemented glGetUniform[fi]vARB() functions +<li>Fixed glDrawPixels(GL_COLOR_INDEX, GL_BITMAP) segfault (bug 9044) +<li>Fixed some gluBuild2DMipmaps() bugs (Greg McGarragh) +<li>Fixed broken "mgl" name mangling +<li>Indirect rending was broken for glMap* functions (bug 8899) +</ul> + + +<h2>Internal code changes</h2> + +<ul> +<li>The device driver functions ResizeBuffers and GetBufferSize have been +decprecated. +<li>OpenGL 2.0 and 2.1 support is nearly done. We need to do quite a bit +more testing of the shading language functions. +</ul> + + +<h2>To Do (someday) items</h2> +<ul> +<li>Switch to freeglut +<li>Increase MAX_DRAWBUFFERS +<li>Fix linux-glide target/driver. +<li>Improved lambda and derivative calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +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 +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-6.5.3.html b/mesalib/docs/relnotes-6.5.3.html new file mode 100644 index 000000000..0d68d9901 --- /dev/null +++ b/mesalib/docs/relnotes-6.5.3.html @@ -0,0 +1,119 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 6.5.3 Release Notes / April 27, 2007</H1> + +<p> +Mesa 6.5.3 is a development release with many changes and new features. +Mesa 7.0 is expected to follow shortly. +</p> + + +<h2>MD5 checksums</h2> +<pre> +39f33ea64e34e2d5b20640b008b57649 MesaLib-6.5.3.tar.gz +46359457147c469745f24b5074a186f0 MesaLib-6.5.3.tar.bz2 +a8946fa861634ce15971396f47992c41 MesaLib-6.5.3.zip +08e26948d57eaca74d02a530b2d8106e MesaDemos-6.5.3.tar.gz +8af91773ab2653fe537499676b05f2e8 MesaDemos-6.5.3.tar.bz2 +783f81b171bf89b0929abc894efd25a6 MesaDemos-6.5.3.zip +9467d415388fe1ad82991fb20704b812 MesaGLUT-6.5.3.tar.gz +360843e46b7ebb6909290b023f9b26fa MesaGLUT-6.5.3.tar.bz2 +7686065e5c15a30de08a1610860b6840 MesaGLUT-6.5.3.zip +</pre> + + +<h2>Shared library numbering</h2> +<p> +Mesa 6.5.3 supports the OpenGL 2.0/2.1 API. However, the (unix) +shared library version is still 1.5 (i.e. libGL.so.1.5.xxxxxx). +Bumping the shared library version to 2.x would cause linking problems +with existing OpenGL applications. Since OpenGL 2.x is backward +compatible with OpenGL 1.x the shared library version number doesn't +have to be incremented (which would indicate an incompatible ABI). +</p> +<p> +Other OpenGL vendors name their OpenGL 2.x libraries libGL.so.1.0.xxxxx +for the same reason. +</p> + + + +<h2>New features</h2> +<ul> +<li>OpenGL 2.0 and 2.1 API support. +<li>Entirely new Shading Language code generator. See the +<a href="shading.html">Shading Language</a> page for more information. +<li>Much faster software execution of vertex, fragment shaders. +<li>New vertex buffer object (vbo) infrastructure +<li>Updated glext.h file (version 39) +<li>Updated glxext.h file (version 19) +<li>GL_MAX_DRAWBUFFERS is now 4 (software rendering) so + "multiple render targets" are really supported. +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>Fog was errantly applied when a fragment shader was enabled (bug 9346) +<li>glPush/PopClientAttrib didn't handle VBO bindings correctly (bug 9445) +<li>With 32-bit Z buffer, the fragment Z of lines and points was sometimes wrong. +<li>GL_POST_CONVOLUTION_ALPHA_BIAS/SCALE was broken. +<li>1D convolution state could effect 2D image transfers +<li>Overlapping glCopyPixels with negative Y zoom didn't work (bug 10521) +<li>Fixed a number of framebuffer/renderbuffer reference counting bugs +<li>Fixed a few bugs in software-emulated alpha planes +<li>Assorted minor bug fixes in glCopy/DrawPixels, glPixelZoom, etc. +<li>Assorted DRI driver bug fixes. +<li>Fixed a number of bugs that prevented "depth-peeling" rendering from working. +</ul> + + +<h2>Internal code changes</h2> +<ul> +<li>Old array_cache module replaced by new vbo module. All geometry +rendering is now cast in the form of vertex buffer objects. +<li>Massive changes to the Shading Language compiler and related state. +<li>Vertex/fragment shaders are compiled into GPU instructions and +programs very similar to GL_ARB_vertex/fragment_program. +<li>Vertex and fragment programs are executed with the same code now. +<li>The SSE-optimized vertex program path has been removed since it didn't +support more than 12 temp registers, didn't support branching/looping, etc. +</ul> + + +<h2>To Do (someday) items</h2> +<ul> +<li>Switch to freeglut +<li>Fix linux-glide target/driver. +<li>Improved lambda and derivative calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-6.5.html b/mesalib/docs/relnotes-6.5.html new file mode 100644 index 000000000..9d1d6691e --- /dev/null +++ b/mesalib/docs/relnotes-6.5.html @@ -0,0 +1,131 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 6.5 Release Notes / March 31, 2006</H1> + +<p> +Mesa 6.5 is a new development release. +</p> + + +<h2>MD5 checksums</h2> +<pre> +657be3b92f6dabc78a67ed9cb8d67813 MesaLib-6.5.tar.gz +61beda590bfc5b4a12e979d5f2d70d7a MesaLib-6.5.tar.bz2 +19d48b872d579d4f91466060804a59ac MesaLib-6.5.zip +694ad3a7007010c7418a9c72d1cba5b7 MesaDemos-6.5.tar.gz +ab95b590dcd640726a2d89e62068c66e MesaDemos-6.5.tar.bz2 +b792c303fefd87294488e2b7eab976e5 MesaDemos-6.5.zip +ac1d585483617db0c91e5c15cb5ec3a3 MesaGLUT-6.5.tar.gz +59f0bf2b2ffb67fe23ee479f9b044f31 MesaGLUT-6.5.tar.bz2 +005decb2136718e22222ac1c4805cd15 MesaGLUT-6.5.zip +</pre> + + + +<h2>New Features</h2> +<ul> +<li>OpenGL Shading language support +<br> + 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. +<br> + The OpenGL 2.0 interface to these features will be implemented in a + future version of Mesa, + +<li>GL_EXT_timer_query +<br> + Used to measure the time of OpenGL operations at high precision. + Only supported in the software/Xlib driver at this time. + +<li>GL_EXT_packed_depth_stencil +<br> + Defines a new GL_DEPTH_STENCIL_EXT pixel format. + +<li>GL_EXT_framebuffer_blit +<br> + A simplified glCopyPixels-like feature for copying pixel rectangles. + +<li>GL_ARB_half_float_pixel +<br> + Adds a new half-precision floating point format for image transfers, + such as for glDrawPixels, glReadPixels, glTexImage, etc. +</ul> + +<h2>Changes</h2> +<ul> +<li>removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead) +<li>removed GL_SGIX/SGIS_pixel_texture extensions +</ul> +<h2>Bug fixes</h2> +<ul> +<li>fixed glxcontextmodes.c datatype problem (bug 5835) +<li>fixed aix-gcc build/install bugs (bug 5874) +<li>fixed some bugs in texture env program generation +<li>glXCopyContext() didn't handle texture object bindings properly +<li>glXCopyContext() didn't copy all lighting state +<li>fixed FreeBSD config (Pedro Giffuni) +<li>fixed some minor framebuffer object bugs +<li>replaced dprintf() with _glu_printf() in GLU (bug 6244) +<li>fixed a number of thread safety bugs/regressions +<li>fixed a number of GLU tesselator bugs (John Shell, bug 6339) +<li>paletted texturing was broken w/ floating point palettes (K. Schultz) +<li>lots of assorted framebuffer object bug fixes +</ul> + + +<h2>Known Issues</h2> +<ul> +<li>Rendering to depth textures will not work. Rendering to GL_DEPTH_STENCIL +textures should work. +</ul> + + +<h2>Driver Interface Changes</h2> +<ul> +<li>Stencil: The Driver.StencilOp/Func/Mask() functions have been replaced by +the two-sided versions: Driver.Stencil*Separate(). +<li>Render-to-texture: The functions for rendering to textures have changed. +</ul> + + +<h2>To Do (someday) items</h2> +<ul> +<li>Switch to freeglut +<li>Increase MAX_DRAWBUFFERS +<li>Fix linux-glide target/driver. +<li>Fix lambda calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +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 +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.0.1.html b/mesalib/docs/relnotes-7.0.1.html new file mode 100644 index 000000000..02713ad5e --- /dev/null +++ b/mesalib/docs/relnotes-7.0.1.html @@ -0,0 +1,101 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.0.1 Release Notes / August 3, 2007</H1> + +<p> +Mesa 7.0.1 is a stable release with bug fixes since version 7.0. +</p> + + +<h2>MD5 checksums</h2> +<pre> +db55141a44b902fcc61d9265b7862c06 MesaLib-7.0.1.tar.gz +c056abd763e899114bf745c9eedbf9ad MesaLib-7.0.1.tar.bz2 +ecc2637547fae2b38271ae362d013afa MesaLib-7.0.1.zip +b85a4a5be4e829f4a1165e4514b13183 MesaDemos-7.0.1.tar.gz +3b66b3268df12ca8a6c4e0c4c457912c MesaDemos-7.0.1.tar.bz2 +b1c18006f16e44e80fea66774c59b391 MesaDemos-7.0.1.zip +b87a69986839ae43ce12fc8e3dc1ebb4 MesaGLUT-7.0.1.tar.gz +25f30d0c1651997b4412366ba0572f7f MesaGLUT-7.0.1.tar.bz2 +676ee6682a6ce78a5540554fd975c03e MesaGLUT-7.0.1.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>Added a bluegene-osmesa build config +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>Fixed some MingW build issues +<li>Added a few missing OpenGL 2.0 API entrypoints: + <ul> + <li>glVertexAttrib4bv + <li>glVertexAttrib4iv + <li>glVertexAttrib4ubv + <li>glVertexAttrib4uiv + <li>glVertexAttrib4usv + </ul> +<li>Fixed glDrawPixels(GL_STENCIL_INDEX) pixel transfer bug 11457 +<li>GLSL bug fix: added vec2(vec4) constructor +<li>GLSL bug fix: .strq and .rgba writemasks didn't always work +<li>Stencil pixel map didn't always work for glDrawPixels (bug 11475) +<li>Fixed polygon stipple bug in i915 driver +<li>Binding a zero-sized texture didn't disable texturing (bug 11309) +<li>Queries of GL_INFO_LOG_LENGTH, GL_SHADER_SOURCE_LENGTH didn't include +the terminating zero (bug 11588) +<li>glXChooseFBConfig() in Xlib driver didn't handle GLX_STEREO flag properly +<li>Fixed a GLSL function call bug (#11731) +<li>glPointParameteriv(GL_DISTANCE_ATTENUATION_EXT) didn't work (bug 11754) +<li>glGetAttribLocation() always returned 1 (bug 11774) +<li>Fixed a few memory-related bugs in GLU library +</ul> + + +<h2>Changes</h2> +<ul> +<li>The libOSMesa library version has been reverted to 6.5.3 (soname=6) +in order to avoid application linking issues. Otherwise, applications +previously linked with libOSMesa.so.6 would no longer link with libOSMesa.so.7 +<li>Dropped obsolete, unmaintained Windows project files for VC6 and VC7. +</ul> + + +<h2>To Do (someday) items</h2> +<ul> +<li>Switch to freeglut +<li>Fix linux-glide target/driver. +<li>Improved lambda and derivative calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.0.2.html b/mesalib/docs/relnotes-7.0.2.html new file mode 100644 index 000000000..7a7c70f13 --- /dev/null +++ b/mesalib/docs/relnotes-7.0.2.html @@ -0,0 +1,88 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.0.2 Release Notes / November 10, 2007</H1> + +<p> +Mesa 7.0.2 is a stable release with bug fixes since version 7.0. +</p> + + +<h2>MD5 checksums</h2> +<pre> +c9cf607f36e7e50172f5f9c7d552c34e MesaLib-7.0.2.tar.gz +93e6ed7924ff069a4f883b4fce5349dc MesaLib-7.0.2.tar.bz2 +10c324c3613f90f059cb8429f700f300 MesaLib-7.0.2.zip +aa8b1244a5de1d23e5814bf9b67f1435 MesaDemos-7.0.2.tar.gz +11a10410bae7be85cf25bc7119966468 MesaDemos-7.0.2.tar.bz2 +1dd0b5fd6d69430a2fd76a6adbfd8fff MesaDemos-7.0.2.zip +a7dbf25c025955858bd2d89a6eb6db4c MesaGLUT-7.0.2.tar.gz +3a33f8efc8c58a592a854cfc7a643286 MesaGLUT-7.0.2.tar.bz2 +eba4ef2aa8c362ead81b54357f1903a3 MesaGLUT-7.0.2.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>Updated Windows VC7 project files +<li>Added DESTDIR variable for 'make install' +<li>Added pkg-config files for gl, glu, glut and glw libraries +<li>Added bluegene-xlc-osmesa and catamount-osmesa-pgi configs +<li>Support for Intel G33/Q33/Q35 graphics chipsets +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>Fixed a vertex buffer wrapping issue (bug 9962) +<li>Added mutex protection around texture object reference counters +<li>Added checking/support for additional chips in the i915/i945 family +(see 11978) +<li>Fixed a blending/banding issue (bug 11931) +<li>Fixed a GLU matrix inversion bug (#6748) +<li>Fixed problem with large glDrawArrays calls and indirect rendering (bug 12141) +<li>Fixed an assortment of i965 driver bugs +<li>Fixed x86-64 vertex transformation bug (12216) +<li>Fixed X server crash caused by multiple indirect rendering clients +<li>Parsing of state.texgen in ARB vertex/fragment programs didn't work (bug 12313) +<li>Fixed a glCopyPixels/glPixelZoom bug (12417) +<li>Fixed a bug when using glMaterial in display lists (bug 10604) +<li>Fixed a few GLUT/Fortran issues (Bill Mitchell) +<li>Fixed Blender crash bug (12164) +<li>Fixed some issues preventing cross-compiling +<li>Fixed up broken GL_ATI_separate_stencil extension +<li>glDrawArrays(count=0) led to a crash +<li>Fix SSE code gen memory leak, possible crash +<li>Fixed MMX 565 rgb conversion problem (bug 12614) +<li>Added -fno-strict-aliasing and -fPIC flags for gcc +<li>Fixed Blender crash in Unichrome driver (bug 13142) +</ul> + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.0.3.html b/mesalib/docs/relnotes-7.0.3.html new file mode 100644 index 000000000..5c8efc79d --- /dev/null +++ b/mesalib/docs/relnotes-7.0.3.html @@ -0,0 +1,84 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.0.3 Release Notes / April 4, 2008</H1> + +<p> +Mesa 7.0.3 is a stable release with bug fixes since version 7.0.2. +</p> + + +<h2>MD5 checksums</h2> +<pre> +3fd1cb76531b2515ef7db92d9a93dbf8 MesaLib-7.0.3.tar.gz +e6e6379d7793af40a6bc3ce1bace572e MesaLib-7.0.3.tar.bz2 +97882bac195229ee0b78cab82e0e3be1 MesaLib-7.0.3.zip +8abf6bbcb1661e7dd4ce73b3fbb85898 MesaDemos-7.0.3.tar.gz +47fd6863621d3c9c7dbb870ab7f0c303 MesaDemos-7.0.3.tar.bz2 +99e442e14da1928f76a7297bb421a3af MesaDemos-7.0.3.zip +2b50fe9fadc4709b57c52adef09fce3c MesaGLUT-7.0.3.tar.gz +0ff23c4e91b238abae63a5fc9fa003e7 MesaGLUT-7.0.3.tar.bz2 +70e83554a4462dad28e0d6e20f79aada MesaGLUT-7.0.3.zip +</pre> + + +<h2>Bug fixes</h2> +<ul> +<li>Added missing glw.pc.in file to release tarball +<li>Fix GLUT/Fortran issues +<li>GLSL gl_FrontLightModelProduct.sceneColor variable wasn't defined +<li>Fix crash upon GLSL variable array indexes (not yet supported) +<li>Two-sided stencil test didn't work in software rendering +<li>Fix two-sided lighting bugs/crashes (bug 13368) +<li>GLSL gl_FrontFacing didn't work properly +<li>glGetActiveUniform returned incorrect sizes (bug 13751) +<li>Fix several bugs relating to uniforms and attributes in GLSL API (Bruce Merry, bug 13753) +<li>glTexImage3D(GL_PROXY_TEXTURE_3D) mis-set teximage depth field +<li>Fixed GLX indirect vertex array rendering bug (14197) +<li>Fixed crash when deleting framebuffer objects (bugs 13507, 14293) +<li>User-defined clip planes enabled for R300 (bug 9871) +<li>Fixed glBindTexture() crash upon bad target (bug 14514) +<li>Fixed potential crash in glDrawPixels(GL_DEPTH_COMPONENT) (bug 13915) +<li>Bad strings given to glProgramStringARB() didn't generate GL_INVALID_OPERATION +<li>Fixed minor point rasterization regression (bug 11016) +<li>state.texenv.color state var didn't work in GL_ARB_fragment_program (bug 14931) +<li>glBitmap from a PBO didn't always work +<li>glGetTexImage into a PBO didn't always work +<li>Comments at the end of ARB vertex/fragment programs crashed the parser +</ul> + +<h2>Changes</h2> +<ul> +<li>Updated glext.h to version 40 +</ul> + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.0.4.html b/mesalib/docs/relnotes-7.0.4.html new file mode 100644 index 000000000..f100d99f0 --- /dev/null +++ b/mesalib/docs/relnotes-7.0.4.html @@ -0,0 +1,80 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.0.4 Release Notes / August 16, 2008</H1> + +<p> +Mesa 7.0.4 is a stable release with bug fixes since version 7.0.3. +</p> + + +<h2>MD5 checksums</h2> +<pre> +909afa3a01ae31478d363837681415ac MesaLib-7.0.4.tar.gz +8d7bacbe0234742a5d08c8088c4619e9 MesaLib-7.0.4.tar.bz2 +5e44261ef85b049a868e1785d9adc276 MesaLib-7.0.4.zip +53dcd77d37a819feaf50b5fcdd0a6e0f MesaDemos-7.0.4.tar.gz +c1215b31c5f7b85f81eed3bfba07d556 MesaDemos-7.0.4.tar.bz2 +b1825a7361f116b28d82d328077630b4 MesaDemos-7.0.4.zip +d7677d015f52602d1bf8b837fb717848 MesaGLUT-7.0.4.tar.gz +f5f8b46f7e763d9f7b7d1d115c1c44ee MesaGLUT-7.0.4.tar.bz2 +a786775271a02c62a3370b13b26bf48d MesaGLUT-7.0.4.zip +</pre> + + +<h2>Bug fixes</h2> +<ul> +<li>define #extension GL_ARB_texture_rectangle in shading language +<li>fixed WIN32 compile problem in libGLU +<li>Fixed a per-vertex glMaterial bug which could cause bad lighting +<li>Fixed potential crash in AA/smoothed triangle rendering when using a fragment shader +<li>Fixed glDrawElement + VBO segfault (bug 16156) +<li>Fixed GLSL linker bug causing generic vertex attributes to get aliased +<li>Fixed stack overflow when using glPixelZoom on Windows +<li>Fixed broken all(bvec2) GLSL function, added misc missing bvec constructors +<li>ARB program "state.clip[n].plane" didn't parse correctly +<li>Fixed broken glGetUniformiv() (bug 13774) +</ul> + +<h2>Changes</h2> +<ul> +<li>Including the latest glext.h and glxext.h header files from Khronos +<li>Added support for DragonFly OS +<li>Added a build config for FreeBSD static libs (Anatolij Shkodin) +<li>Enabled GL_EXT_multi_draw_arrays extension in R200/R300 drivers +<li>Enabled GL_ARB_point_sprite extension in I965 driver +<li>Enabled GL_EXT_texture_sRGB extension in I965 driver +<li>Added support for GL shading language in I965 driver +</ul> + + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.0.html b/mesalib/docs/relnotes-7.0.html new file mode 100644 index 000000000..2c036b2ec --- /dev/null +++ b/mesalib/docs/relnotes-7.0.html @@ -0,0 +1,93 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.0 Release Notes / June 22, 2007</H1> + +<p> +Mesa 7.0 is a stable release, featuring OpenGL 2.1 API support. +A number of bugs have been fixed since the 6.5.3 release. +</p> + + +<h2>MD5 checksums</h2> +<pre> +35a1698986f7ac8dc435624ee9256cda MesaLib-7.0.tar.gz +50c371455fa7532c04aa0a970f9bc51f MesaLib-7.0.tar.bz2 +bcedb6f43c97c1bc49e5cc7f12835722 MesaLib-7.0.zip +9bad332c7b74f59be96556135212ca9e MesaDemos-7.0.tar.gz +fada2bc1f29da513e015fda1e3abd0c0 MesaDemos-7.0.tar.bz2 +84e3bbe470d983ae32f1f0c779faf99e MesaDemos-7.0.zip +76c7bb54f9850c689eba844f6daed332 MesaGLUT-7.0.tar.gz +4af28296e02772ef1de00e4e79bf3d12 MesaGLUT-7.0.tar.bz2 +9043cb0b54cc03d1874728d74b12188c MesaGLUT-7.0.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>OpenGL 2.0 and 2.1 API support. +</ul> + +<h2>Bug fixes</h2> +<ul> +<li>Fixed a few fog-related bugs. +<li>Fixed broken GLSL mix() function. +<li>Fixed broken GLSL exp() functions. +<li>Fixed GLSL mod4(vec4, vec4) bug. +<li>Implemented GLSL asin(), acos(), atan() functions. +<li>Fixed an R300 driver bug that caused Xorg composite manager to crash +<li>Fixed R300 vertex program/matrix bug (10848) +<li>GLSL dFdx() and dFdy() work for fragment program inputs now (texcoords) +<li>Specifying an invalid texture unit as a sampler could lead to a crash +<li>The GLX protocol request for glXDestroyPBuffer() was incorrect (bug 10983) +<li>ARB vp state.light[n].half value was incorrect (bug 10987) +<li>Fixed a positional light source bug (bug 11009) +<li>Fixed point size attenuation problem (bug 11042) +<li>glPopAttrib didn't restore texture object's LOD bias (bug 11049) +<li>Fixed a TLS / TEXTREL problem (bug 7459) +</ul> + + +<h2>Internal code changes</h2> +<ul> +<li>Some texture code consolidation and simplifiction (Ian Romanick) +<li>R300 driver clean-ups. +</ul> + + +<h2>To Do (someday) items</h2> +<ul> +<li>Switch to freeglut +<li>Fix linux-glide target/driver. +<li>Improved lambda and derivative calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.1.html b/mesalib/docs/relnotes-7.1.html new file mode 100644 index 000000000..e8a39c8d3 --- /dev/null +++ b/mesalib/docs/relnotes-7.1.html @@ -0,0 +1,94 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.1 Release Notes / August 26, 2008</H1> + +<p> +Mesa 7.1 is a new development release. +There have been many internal code changes since Mesa 7.0.x. +It should be relatively stable, but those who are especially concerned about +stability should wait for Mesa 7.2 or use Mesa 7.0.4 (the previous stable +release). +</p> +</> +Note that this version of Mesa does not use the GEM memory manager. +The master branch of git uses GEM. +</p> +<p> +DRM version 2.3.1 should be used with Mesa 7.1 +</p> + + +<h2>MD5 checksums</h2> +<pre> +971c2fe6e6949dc5ba200a6f97a6dc81 MesaLib-7.1.tar.gz +6bff7f532d16f90f944a400c8bd7074d MesaLib-7.1.tar.bz2 +d48224bf9d54c3da6776adb4869ba024 MesaLib-7.1.zip +3de268420efca43e9a19ab506cdfc993 MesaDemos-7.1.tar.gz +abfc9775e1462363af8ec160d1feb01f MesaDemos-7.1.tar.bz2 +f7b3623387c4036e9895cd9ac0dfad99 MesaDemos-7.1.zip +fdf348f78cd09304b6ff801ef8acc8eb MesaGLUT-7.1.tar.gz +f6d88a4eeb02e98c7e92f1c895d3c76b MesaGLUT-7.1.tar.bz2 +4dc102a5ca51e1c41dde87d3f8c7b22a MesaGLUT-7.1.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>autoconf-based configuration (and clean-up of Makefiles) +<li>Assorted DRI driver enhancements +<li>Reduced dependencies between X server and Mesa +<li>GL_EXT_texture_from_pixmap extension for Xlib driver +<li>Support for the GL shading language with i965 driver (implemented by Intel) +<li>ATI R500 series support (Radeon X1300–X1950) in r300 DRI driver +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>Numerous GLSL fixes +<li>Fixed some error code/detection bugs in the GLSL-related API functions +<li>Lots of DRI driver fixes. +</ul> + + +<h2>To Do (someday) items</h2> +<ul> +<li>Remove the MEMCPY() and _mesa_memcpy() wrappers and just use memcpy(). +Probably do the same for malloc, calloc, etc. +The wrappers were useful in the past for memory debugging but now we +have valgrind. Not worried about SunOS 4 support anymore either... +<li>Switch to freeglut +<li>Fix linux-glide target/driver. +<li>Improved lambda and derivative calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.2.html b/mesalib/docs/relnotes-7.2.html new file mode 100644 index 000000000..0ad3b5b60 --- /dev/null +++ b/mesalib/docs/relnotes-7.2.html @@ -0,0 +1,104 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.2 Release Notes / 20 September 2008</H1> + +<p> +Mesa 7.2 is a stable release fixing bugs found in 7.1, which was a +new development release. +</p> +<p> +Mesa 7.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +Note that this version of Mesa does not use the GEM memory manager. +The master branch of git uses GEM. +The prototype DRI2 code that was in 7.1 has also been removed. +</p> +<p> +DRM version 2.3.1 should be used with Mesa 7.2 +</p> + + +<h2>MD5 checksums</h2> +<pre> +81a2a4b7cbfce7553f7ad8d924edbe2f MesaLib-7.2.tar.gz +04d379292e023df0b0266825cb0dbde5 MesaLib-7.2.tar.bz2 +8bc497a37977a55e987a4d1fabc3d882 MesaLib-7.2.zip +10c762e39486df395838af1d7b57e69c MesaDemos-7.2.tar.gz +22e03dc4038cd63f32c21eb60994892b MesaDemos-7.2.tar.bz2 +1197bc4eb3bf44e291c14d4eb2e19381 MesaDemos-7.2.zip +42e3c6c6d156cd9dc545dbef72407354 MesaGLUT-7.2.tar.gz +f67daf93e12c4a459703bbf3e4004e31 MesaGLUT-7.2.tar.bz2 +0390567eb2c2d12fbf82e8523fd77e2b MesaGLUT-7.2.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>i965 driver: added support for G41 chipset (Intel) +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>Fixed display list bug involving primitives split across lists (bug 17564) +<li>Fixed some issues with glBindAttribLocation() +<li>Fixed crash in _tnl_InvalidateState() found with Amira (bug 15834) +<li>Assorted bug fixes for Ming build +<li>Fixed some vertex/pixel buffer object reference counting bugs +<li>Fixed depth/stencil bug in i915/945 driver +<li>Fixed some shader flow control bugs in i965 driver +<li>Fixed a few tdfx driver bugs which prevented driver from working +<li>Fixed multisample enable/disable bug +</ul> + +<h2>Changes</h2> +<ul> +<li>Updated SGI header files with new license terms. +</ul> + + + +<h2>To Do (someday) items</h2> +<ul> +<li>Remove the MEMCPY() and _mesa_memcpy() wrappers and just use memcpy(). +Probably do the same for malloc, calloc, etc. +The wrappers were useful in the past for memory debugging but now we +have valgrind. Not worried about SunOS 4 support anymore either... +<li>Switch to freeglut +<li>Fix linux-glide target/driver. +<li>Improved lambda and derivative calculation for frag progs. +</ul> + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.3.html b/mesalib/docs/relnotes-7.3.html new file mode 100644 index 000000000..df8988443 --- /dev/null +++ b/mesalib/docs/relnotes-7.3.html @@ -0,0 +1,93 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.3 Release Notes / 22 January 2009</H1> + +<p> +Mesa 7.3 is a new development release. +Users especially concerned with stability should stick with latest +stable release: version 7.2. +</p> +<p> +Mesa 7.3 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +8ed03191432b22d118d88d6db497f304 MesaLib-7.3.tar.gz +781e7811a6ed5c97b2b8defefc8ffbc9 MesaLib-7.3.tar.bz2 +3ccba9a1734ed6d4b3389e1535d90fbf MesaLib-7.3.zip +d312e974b31043b13b61bac5fbf00b87 MesaDemos-7.3.tar.gz +3f0741394069bdf2329565a387396cda MesaDemos-7.3.tar.bz2 +4d0887fd4c66a824295cdd619f6d34cb MesaDemos-7.3.zip +2d7661b66022bcb8878728f3d5bd33ab MesaGLUT-7.3.tar.gz +abe8036a724c1a483bdad6b5a55ddc1a MesaGLUT-7.3.tar.bz2 +5f247819b47e2a7c62d07a6afe5262fb MesaGLUT-7.3.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>Support for GLSL 1.20 +<li>Intel DRI drivers now use GEM and DRI2 +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>Assorted GLSL bug fixes +<li>Assorted i965 driver fixes +<li>Fix for wglCreateLayerContext() in WGL/Windows driver +<li>Build fixes for OpenBSD and gcc 2.95 +<li>GLSL preprocessor handles #pragma now +<li>Fix incorrect transformation of GL_SPOT_DIRECTION +<li>Fixed several bugs (#18367 and #19625) in glXMakeContextCurrent() +<li>Assorted Windows build fixes +</ul> + +<h2>Changes</h2> +<ul> +<li>Deprecated the "XMesa" interface (include/GL/xmesa*.h files) +<li>Deprecated the "FXMesa" interface (include/GL/fxmesa.h file) +<li>Deprecated the "Allegro" interface (include/GL/amesa.h file) +<li>Removed include/GL/uglmesa.h header +<li>Removed include/GLView.h header for BeOS +</ul> + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.4.1.html b/mesalib/docs/relnotes-7.4.1.html new file mode 100644 index 000000000..40f4fb172 --- /dev/null +++ b/mesalib/docs/relnotes-7.4.1.html @@ -0,0 +1,79 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.4.1 Release Notes / 18 April 2009</H1> + +<p> +Mesa 7.4.1 is a stable development release fixing bugs since the 7.4 release. +</p> +<p> +Mesa 7.4.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +0c3a72f3295a53a134c04bd7d209ea62 MesaLib-7.4.1.tar.gz +423260578b653818ba66c2fcbde6d7ad MesaLib-7.4.1.tar.bz2 +84f78b154d4bd5c3ecc42eeff2e56676 MesaLib-7.4.1.zip +aa0ad323e59d6d10ff33ac0dde462a60 MesaDemos-7.4.1.tar.gz +1e169fb6abc2b45613f1c98a82dfe690 MesaDemos-7.4.1.tar.bz2 +294e42be2d74176596c994ec23322fcf MesaDemos-7.4.1.zip +92373bfa48e7b68dddf356e86b0e5699 MesaGLUT-7.4.1.tar.gz +336f3824b578b072211e0beecf4f04f4 MesaGLUT-7.4.1.tar.bz2 +20751388d8ef16b42d25d9e3d705d101 MesaGLUT-7.4.1.zip +</pre> + + +<h2>Bug fixes</h2> +<ul> +<li>Fixed a two-sided lighting bug in fixed-function-to-GPU code generation +<li>Fixed some Darwin issues (Jeremy Huddleston) +<li>Indexing the GLSL gl_EyePlane[] or gl_ObjectPlane[] arrays with a variable + was broken, bug 20986 +<li>Fixed incorrect texture unit bias in TXB instruction +<li>glTexParameter settings weren't always propogated to drivers +<li>Assorted vertex/fragment program bug fixes +<li>Fixed point rendering in software rasterizer +<li>Fixed potential deadlock in object hash functions +<li>Fix a couple bugs surrounding front-buffer rendering with DRI2, but this + is not quite complete. +<li>Fixed glPopAttrib() bug when restoring user clip planes +</ul> + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.4.2.html b/mesalib/docs/relnotes-7.4.2.html new file mode 100644 index 000000000..7d066e418 --- /dev/null +++ b/mesalib/docs/relnotes-7.4.2.html @@ -0,0 +1,74 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.4.2 Release Notes / May 15, 2009</H1> + +<p> +Mesa 7.4.2 is a stable development release fixing bugs since the 7.4.1 release. +</p> +<p> +Mesa 7.4.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +172f5193154dad731387f97bd44ab68f MesaLib-7.4.2.tar.gz +b10a76e32bde4645cfc34ea0416d7d8b MesaLib-7.4.2.tar.bz2 +cc6dfc2efd424cc342b84e6bcd78ce5d MesaLib-7.4.2.zip +182a7e78aa7a480b3650a5c956dbddd1 MesaDemos-7.4.2.tar.gz +bf559a0485667a3bfa4513a23501579b MesaDemos-7.4.2.tar.bz2 +5379e622b65e8c22022dba34aeb6f4f9 MesaDemos-7.4.2.zip +7cc43c1c35bf6a279a16e063dea3b8c5 MesaGLUT-7.4.2.tar.gz +e0dfc44d537904a030861e5b3c760c11 MesaGLUT-7.4.2.tar.bz2 +4a6cf5bbbac190d6ba97448b3098b7f4 MesaGLUT-7.4.2.zip +</pre> + + +<h2>Bug fixes</h2> +<ul> +<li>Fixed segfault when rendering to front buffer with DRI 1. +<li>Fixed swrast texture rectangle bug when wrap mode = GL_CLAMP_TO_BORDER and + filter mode = GL_LINEAR. (bug 21461) +<li>Fixed texture object mem leak during context destruction. +<li>Fixed a state validation bug in glCopyTex[Sub]Image() +<li>Fixed some i965 GLSL bugs. +<li>Fixed an R300 driver texture object bad memory reference. +</ul> + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.4.3.html b/mesalib/docs/relnotes-7.4.3.html new file mode 100644 index 000000000..35b5dccbb --- /dev/null +++ b/mesalib/docs/relnotes-7.4.3.html @@ -0,0 +1,79 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.4.3 Release Notes / 19 June 2009</H1> + +<p> +Mesa 7.4.3 is a stable development release fixing bugs since the 7.4.2 release. +</p> +<p> +Mesa 7.4.3 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +34c5a6c47ed51f31c4fa36e269831352 MesaLib-7.4.3.tar.gz +70a983ba3deaa8bd63b18bbab283f698 MesaLib-7.4.3.tar.bz2 +34f21b3205b271d575030aa98a2dda51 MesaLib-7.4.3.zip +56752b7adede212e6097afb10d0c0d59 MesaDemos-7.4.3.tar.gz +8ffa51c4833b1e298300a005e2d7ca2a MesaDemos-7.4.3.tar.bz2 +0037d24d41400d6fb9800ae55b8c863f MesaDemos-7.4.3.zip +20e24f6692c0c90e7e3b220f79c4108d MesaGLUT-7.4.3.tar.gz +03a4beeef74fc5ef0b1d6d04710e5a8a MesaGLUT-7.4.3.tar.bz2 +273788230adbdb9d57371309adedcf5f MesaGLUT-7.4.3.zip +</pre> + + +<h2>Bug fixes</h2> +<ul> +<li>Fixed texture object reference counting bug (bug 21756) +<li>Allow depth/stencil textures to be attached to GL_STENCIL_ATTACHMENT point + (SF bug 2793846) +<li>Added missing glGet case for GL_VERTEX_ARRAY_BINDING_APPLE +<li>Fixed some OSMesa build issues +<li>Fixed a vertex buffer object crash +<li>Fixed broken glTexImage3D() when image type = GL_BITMAP +<li>Fixed some GLSL preprocessor bugs +<li>Fixed framebuffer mem leak in i945/i965 DRI drivers +<li>Fixed texture coordinate repeat bug in swrast (bug 21872) +<li>Fixed incorrect viewport clamping (lower bound is zero, not one) +<li>GLX fix for glean's makeCurrent test case +</ul> + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.4.4.html b/mesalib/docs/relnotes-7.4.4.html new file mode 100644 index 000000000..2a34568a7 --- /dev/null +++ b/mesalib/docs/relnotes-7.4.4.html @@ -0,0 +1,68 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.4.4 Release Notes / 23 June 2009</H1> + +<p> +Mesa 7.4.4 is a stable development release fixing bugs since the 7.4.3 release. +</p> +<p> +Mesa 7.4.4 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +0b56fe5a88ab0c3c5b2da5068f63f416 MesaLib-7.4.4.tar.gz +b66528d314c574dccbe0ed963cac5e93 MesaLib-7.4.4.tar.bz2 +2818076f3ba23fa87fdfe4602a637a18 MesaLib-7.4.4.zip +3e77b208386c47b18165bce5ae317e2c MesaDemos-7.4.4.tar.gz +628142ec9a54cd28cc027e6ce26cff47 MesaDemos-7.4.4.tar.bz2 +d08a30d30ab7174859aa709cba6c726d MesaDemos-7.4.4.zip +e6e91ba16e274d40cf3a97ad3218af01 MesaGLUT-7.4.4.tar.gz +e14bbb52517e8121b31f1387515365ab MesaGLUT-7.4.4.tar.bz2 +f10ed20469753c2b3d68c99854f80fd4 MesaGLUT-7.4.4.zip +</pre> + + +<h2>Bug fixes</h2> +<ul> +<li>Fixed i965/i915 segfault in screen destruction (bug 22408) +</ul> + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.4.html b/mesalib/docs/relnotes-7.4.html new file mode 100644 index 000000000..55ba019b2 --- /dev/null +++ b/mesalib/docs/relnotes-7.4.html @@ -0,0 +1,89 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.4 Release Notes / 27 March 2009</H1> + +<p> +Mesa 7.4 is a stable development release fixing bugs since the 7.3 release. +</p> +<p> +Mesa 7.4 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +ed6bd7437177307e51e16d0c7c381dfa MesaLib-7.4.tar.gz +7ecddb341a2691e0dfdb02f697109834 MesaLib-7.4.tar.bz2 +433e823f8245f9fd5f397e7b719a8e47 MesaLib-7.4.zip +656eee6128016fb237e01aa8dabbc703 MesaDemos-7.4.tar.gz +02816f10f30b1dc5e069e0f68c177c98 MesaDemos-7.4.tar.bz2 +44a70d6db4aa4c64ecc47871b6aceee8 MesaDemos-7.4.zip +25f80db4f8645cd3e58e2c9af53ec341 MesaGLUT-7.4.tar.gz +04ec01caebde44f5b0d619f00716b368 MesaGLUT-7.4.tar.bz2 +019dc213baecaa3cb1278847d41b8591 MesaGLUT-7.4.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>Added MESA_GLX_FORCE_DIRECT env var for Xlib/software driver +<li>GLSL version 1.20 is returnd by the GL_SHADING_LANGUAGE_VERSION query +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>glGetActiveUniform() returned wrong size for some array types +<li>Fixed some error checking in glUniform() +<li>Fixed a potential glTexImage('proxy target') segfault +<li>Fixed bad reference counting for 1D/2D texture arrays +<li>Fixed VBO + glPush/PopClientAttrib() bug #19835 +<li>Assorted i965 driver bug fixes +<li>Fixed a Windows compilation failure in s_triangle.c +<li>Fixed a GLSL array indexing bug +<li>Fixes for building on Haiku +</ul> + +<h2>Changes</h2> +<ul> +<li>Updated GL/glxext.h to version 48 +<li>Assorted updates for building on Solaris +</ul> + + + +<h2>Driver Status</h2> + +<pre> +Driver Status +---------------------- ---------------------- +DRI drivers varies with the driver +XMesa/GLX (on Xlib) implements OpenGL 2.1 +OSMesa (off-screen) implements OpenGL 2.1 +Windows/Win32 implements OpenGL 2.1 +Glide (3dfx Voodoo1/2) implements OpenGL 1.3 +SVGA unsupported +Wind River UGL unsupported +DJGPP unsupported +GGI unsupported +BeOS unsupported +Allegro unsupported +D3D unsupported +</pre> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.5.1.html b/mesalib/docs/relnotes-7.5.1.html new file mode 100644 index 000000000..1a4f608b7 --- /dev/null +++ b/mesalib/docs/relnotes-7.5.1.html @@ -0,0 +1,72 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.5.1 Release Notes, 3 September 2009</H1> + +<p> +Mesa 7.5.1 is a bug-fix release fixing issues found since the 7.5 release. +</p> +<p> +The main new feature of Mesa 7.5.x is the +<a href="http://wiki.freedesktop.org/wiki/Software/gallium" +target="_parent">Gallium3D</a> infrastructure. +</p> +<p> +Mesa 7.5.1 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +d7269e93bc7484430637d54ced250876 MesaLib-7.5.1.tar.gz +877d6a4b24efc2b1d02aa553f262cba8 MesaLib-7.5.1.tar.bz2 +23f4fb757a05c8396425681234ae20e5 MesaLib-7.5.1.zip +5af4bd113652108f5cec5113dad813f2 MesaDemos-7.5.1.tar.gz +785402e3b9f0e335538fcc6bf19f6987 MesaDemos-7.5.1.tar.bz2 +950058cc6d6106e9c7d5876a03789fe9 MesaDemos-7.5.1.zip +cb52ce2c93389c2711cbe8d857ec5303 MesaGLUT-7.5.1.tar.gz +e3a9892e056d625c5353617a7c5b7e9c MesaGLUT-7.5.1.tar.bz2 +da1de364df148c94b4994006191a1e69 MesaGLUT-7.5.1.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>Added configure --with-max-width=W, --with-max-height=H options to specify + max framebuffer, viewport size. +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>Added missing GLEW library to MesaDemos tarballs. +<li>Fixed swapbuffers jerkiness in Doom3/etc in Intel drivers. +<li>Fixed front buffer rendering bug in Intel drivers. +<li>Fixed minor GLX memory leaks. +<li>Fixed some texture env / fragment program state bugs. +<li>Fixed some Gallium glBlitFramebuffer() bugs +<li>Empty glBegin/glEnd() pair could cause divide by zero (bug 23489) +<li>Fixed Gallium glBitmap() Z position bug +<li>Setting arrays of sampler uniforms did not work +<li>Selection/Feedback mode didn't handle polygon culling correctly (bug 16866) +<li>Fixed 32/64-bit cross compilation issue in gen_matypes.c +<li>Fixed glXCreateGLXPixmap() for direct rendering. +<li>Fixed Gallium glCopyPixels(GL_STENCIL_INDEX) mispositioned image bug. +</ul> + + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.5.2.html b/mesalib/docs/relnotes-7.5.2.html new file mode 100644 index 000000000..0832e11bb --- /dev/null +++ b/mesalib/docs/relnotes-7.5.2.html @@ -0,0 +1,60 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.5.2 Release Notes, (date tbd)</H1> + +<p> +Mesa 7.5.2 is a bug-fix release fixing issues found since the 7.5.1 release. +</p> +<p> +The main new feature of Mesa 7.5.x is the +<a href="http://wiki.freedesktop.org/wiki/Software/gallium" +target="_parent">Gallium3D</a> infrastructure. +</p> +<p> +Mesa 7.5.2 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +tbd +</pre> + + +<h2>New features</h2> +<ul> +<li>Detect B43 chipset in Intel driver +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>Assorted bug fixes for i965/i945 drivers +<li>Fixed Gallium glDrawPixels(GL_STENCIL_INDEX) failure. +<li>Fixed GLSL linker/preprocessor version directive issue seen in Wine + (such as bug 23946) +<li>glUseProgram() is now compiled into display lists (bug 23746). +<li>glUniform functions are now compiled into display lists +<li>Auto mipmap generation didn't work reliably with Gallium. +<li>Fixed random number usage in GLX code. +<li>Fixed invalid GL_OUT_OF_MEMORY error sometimes raised by glTexSubImage2D + when using Gallium. +</ul> + + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.5.html b/mesalib/docs/relnotes-7.5.html new file mode 100644 index 000000000..56deca6a8 --- /dev/null +++ b/mesalib/docs/relnotes-7.5.html @@ -0,0 +1,102 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.5 Release Notes / 17 July 2009</H1> + +<p> +Mesa 7.5 is a new development release. +People who are concerned with stability and reliability should stick +with the 7.4.x branch or wait for Mesa 7.5.1. +</p> +<p> +The main new feature of Mesa 7.5 is the +<a href="http://wiki.freedesktop.org/wiki/Software/gallium" +target="_parent">Gallium3D</a> infrastructure. +</p> +<p> +Mesa 7.5 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> +<p> +Note that the Mesa project is no longer using odd/even version numbers +to indicate development/stable releases. +The so-called development releases have been fairly stable. +If you're especially concerned with stability you should probably look for +"point" releases such as 7.5.1 which will be a bug-fix release. +</p> + + +<h2>MD5 checksums</h2> +<pre> +553fd956e544727f30fbe249619b6286 MesaLib-7.5.tar.gz +459f332551f6ebb86f384d21dd15e1f0 MesaLib-7.5.tar.bz2 +8c02c0e17a9025250d20424ae32f5163 MesaLib-7.5.zip +a188da2886fa5496ea0c2cda602b2eeb MesaDemos-7.5.tar.gz +398ee8801814a00e47f6c2314e3dfddc MesaDemos-7.5.tar.bz2 +15a0c8ae013c54335a26335e1a98d609 MesaDemos-7.5.zip +81010147def5a644ba14f9bbb7a49a2a MesaGLUT-7.5.tar.gz +baa7a1e850b6e39bae58868fd0684004 MesaGLUT-7.5.tar.bz2 +265228418e4423fa328f2f5b7970cf08 MesaGLUT-7.5.zip +</pre> + + +<h2>New features</h2> +<ul> +<li>Gallium3D - this is the new architecture for OS-independent and + API-independent 3D drivers. + Gallium3D is intended for GPUs that fully support vertex/fragment shaders. + The Gallium3D drivers currently included are: + <ul> + <li>softpipe - a software/reference driver + <li>i915 - Intel 915/945 driver + <li><a href="cell.html">Cell</a> - IBM/Sony/Toshiba Cell processor driver + <li>nouveau (for NVIDIA GPUs) and R300 for (AMD/ATI R300). + <b>PLEASE NOTE: these drivers are incomplete and still under development. + It's probably NOT worthwhile to report any bugs unless you have patches. + </b> + </ul> +<li>GL_ARB_framebuffer_object extension (software drivers, i965 driver) +<li>Reworked two-sided stencil support. +This allows a driver to support all three variations of two-sided stencil +including GL_ATI_separate_stencil, GL_EXT_stencil_two_side and OpenGL 2.0 +<li>GL_EXT_vertex_array_bgra extension (software drivers, i965 driver) +<li>GL_NV_texture_env_combine4 extension (software drivers, i965/i915 drivers) +<li>GL_EXT_texture_swizzle extension (software drivers, i965 driver) +<li>Updated SPARC assembly optimizations (David S. Miller) +<li>Initial support for separate compilation units in GLSL compiler. +<li>Increased max number of generic GLSL varying variables to 16 (formerly 8). +<li>GLSL linker now detects when too many varying variables are used. +<li>Optimize-out redundant glMaterial and glShadeModel calls in display lists +<li>Fixed gl_TextureMatrix[i][j] array indexing bug in GLSL compiler. +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>Lots of i965 driver bug fixes +<li>Fixed some GLSL preprocessor bugs +<li>GLSL: continue inside of a for-loop didn't work +</ul> + + +<h2>Changes</h2> +<ul> +<li>Remove support for GL_SGIX_shadow, GL_SGIX_shadow_ambient and +GL_SGIX_depth_texture extensions. Superseded by the ARB versions. +<li>Omitted some old Mesa demos from the release tarballs, added some others. +</ul> + +</body> +</html> diff --git a/mesalib/docs/relnotes-7.6.html b/mesalib/docs/relnotes-7.6.html new file mode 100644 index 000000000..69b035217 --- /dev/null +++ b/mesalib/docs/relnotes-7.6.html @@ -0,0 +1,76 @@ +<HTML> + +<TITLE>Mesa Release Notes</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<H1>Mesa 7.6 Release Notes, 28 September 2009</H1> + +<p> +Mesa 7.6 is a new development release. +People who are concerned with stability and reliability should stick +with a previous release or wait for Mesa 7.6.1. +</p> +<p> +Mesa 7.6 implements the OpenGL 2.1 API, but the version reported by +glGetString(GL_VERSION) depends on the particular driver being used. +Some drivers don't support all the features required in OpenGL 2.1. +</p> +<p> +See the <a href="install.html">Compiling/Installing page</a> for prerequisites +for DRI hardware acceleration. +</p> + + +<h2>MD5 checksums</h2> +<pre> +tbd +</pre> + + +<h2>New features</h2> +<ul> +<li><a href="openvg.html">OpenVG</a> front-end (state tracker for Gallium). +This was written by Zack Rusin at Tungsten Graphics. +<li>GL_ARB_vertex_array_object and GL_APPLE_vertex_array_object extensions + (supported in Gallium drivers, Intel DRI drivers, and software drivers)</li> +<li>GL_ARB_copy_buffer extension + (supported in Gallium drivers, Intel DRI drivers, and software drivers)</li> +<li>GL_ARB_map_buffer_range extension + (supported in Gallium drivers, Intel DRI drivers, and software drivers)</li> +<li>GL_ARB_seamless_cube_map extension + (supported in software drivers and i965 drivers)</li> +<li>GL_ARB_vertex_array_bgra (ARB synonym for GL_EXT_vertex_array_bgra)</li> +<li>GL_ARB_sync (supported in software drivers and Intel DRI drivers)</li> +<li>GL_EXT_provoking_vertex extension (supported in Gallium, i915, i965, and software drivers) +<li>Rewritten radeon/r200/r300 driver using a buffer manager +<li>radeon/r200/r300 GL_EXT_framebuffer_object support when used with + kernel memory manager +<li>radeon/r200/r300 support for GL_ARB_occlusion_query</li> +<li>r300 driver supports OpenGL 1.5</li> +<li>r300 driver support for GL_EXT_vertex_array_bgra, GL_EXT_texture_sRGB +<li>i915/945 driver support for GL_ARB_point_sprite, GL_EXT_stencil_two_side + and GL_ATI_separate_stencil extensions +<li>Rewritten assembler for GL_ARB_vertex_program / + GL_ARB_fragment_program.</li> +<li>Added configure --with-max-width=W, --with-max-height=H options to specify + max framebuffer, viewport size. +<li>Initial version of Gallium llvmpipe driver. This is a new driver based + on LLVM which makes exensive use of run-time code generation. This is + an "alpha" stage driver. See the src/gallium/drivers/llvmpipe/README + file for more information. +</ul> + + +<h2>Bug fixes</h2> +<ul> +<li>i965 DRI driver fixes, including support for "unlimited" size constant + buffers (GLSL uniforms) +</ul> + +</body> +</html> diff --git a/mesalib/docs/relnotes.html b/mesalib/docs/relnotes.html new file mode 100644 index 000000000..560a660af --- /dev/null +++ b/mesalib/docs/relnotes.html @@ -0,0 +1,75 @@ +<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-7.6.html">7.6 release notes</A> +<LI><A HREF="relnotes-7.5.2.html">7.5.2 release notes</A> +<LI><A HREF="relnotes-7.5.1.html">7.5.1 release notes</A> +<LI><A HREF="relnotes-7.5.html">7.5 release notes</A> +<LI><A HREF="relnotes-7.4.4.html">7.4.4 release notes</A> +<LI><A HREF="relnotes-7.4.3.html">7.4.3 release notes</A> +<LI><A HREF="relnotes-7.4.2.html">7.4.2 release notes</A> +<LI><A HREF="relnotes-7.4.1.html">7.4.1 release notes</A> +<LI><A HREF="relnotes-7.4.html">7.4 release notes</A> +<LI><A HREF="relnotes-7.3.html">7.3 release notes</A> +<LI><A HREF="relnotes-7.2.html">7.2 release notes</A> +<LI><A HREF="relnotes-7.1.html">7.1 release notes</A> +<LI><A HREF="relnotes-7.0.4.html">7.0.4 release notes</A> +<LI><A HREF="relnotes-7.0.3.html">7.0.3 release notes</A> +<LI><A HREF="relnotes-7.0.2.html">7.0.2 release notes</A> +<LI><A HREF="relnotes-7.0.1.html">7.0.1 release notes</A> +<LI><A HREF="relnotes-7.0.html">7.0 release notes</A> +<LI><A HREF="relnotes-6.5.3.html">6.5.3 release notes</A> +<LI><A HREF="relnotes-6.5.2.html">6.5.2 release notes</A> +<LI><A HREF="relnotes-6.5.1.html">6.5.1 release notes</A> +<LI><A HREF="relnotes-6.5.html">6.5 release notes</A> +<LI><A HREF="relnotes-6.4.2.html">6.4.2 release notes</A> +<LI><A HREF="relnotes-6.4.1.html">6.4.1 release notes</A> +<LI><A HREF="relnotes-6.4.html">6.4 release notes</A> +</UL + +<p> +Versions of Mesa prior to 6.4 are summarized in the +<a href="versions.html">versions file</a> and the following release notes. +</p> + +<UL> +<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/mesalib/docs/repository.html b/mesalib/docs/repository.html new file mode 100644 index 000000000..ed385288e --- /dev/null +++ b/mesalib/docs/repository.html @@ -0,0 +1,132 @@ +<HTML> + +<TITLE>Cocd Repository</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<h1>Code Repository</h1> + +<p> +As of December 5, 2006, Mesa is using +<a href="http://git.or.cz/"target="_parent">git</a> +as its source code management system. +CVS was used previously. +The old CVS repository should no longer be used. +</p> + +The master git repository 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://gitweb.freedesktop.org/?p=mesa/mesa.git" +target="_parent">browse the git repository</a>. +</p> + + +<a name="anonymous"> +<H2>Anonymous git Access</H2> + +<p> +To get the Mesa sources anonymously (read-only): +</p> + +<ol> +<li>Install the git software on your computer if needed.<br><br> +<li>Get an initial, local copy of the repository with: + <pre> + git clone git://anongit.freedesktop.org/git/mesa/mesa + </pre> +<li>Later, you can update your tree from the master repository with: + <pre> + git pull origin + </pre> +</ol> + + +<a name="developer"> +<H2>Developer git Access</H2> + +<p> +Mesa developers 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: +</p> + +<ol> +<li>Install the git software on your computer if needed.<br><br> +<li>Get an initial, local copy of the repository with: + <pre> + git clone git+ssh://username@git.freedesktop.org/git/mesa/mesa + </pre> + Replace <em>username</em> with your actual login name.<br><br> +<li>Later, you can update your tree from the master repository with: + <pre> + git pull origin + </pre> +</ol> + + +<H2>Windows Users</H2> + +<p> +If you're <a href="http://git.or.cz/gitwiki/WindowsInstall" target="_parent"> +using git on Windows</a> you'll want to enable automatic CR/LF conversion in +your local copy of the repository: +</p> +<pre> + git config --global core.autocrlf true +</pre> + +<p> +This will cause git to convert all text files to CR+LF on checkout, +and to LF on commit. +</p> +<p> +Unix users don't need to set this option. +</p> +<br> + + +<a name="developer"> +<H2>Development Branches</H2> + +<p> +At any given time, there may be several active branches in Mesa's +repository. +Generally, the trunk contains the latest development (unstable) +code while a branch has the latest stable code. +</p> + +<p> +The command <code>git-branch</code> will list all available branches. +</p> + +<p> +Questions about branch status/activity should be posted to the +mesa3d-dev mailing list. +</p> + + +</body> +</html> + + diff --git a/mesalib/docs/science.html b/mesalib/docs/science.html new file mode 100644 index 000000000..f55cf3124 --- /dev/null +++ b/mesalib/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/mesalib/docs/shading.html b/mesalib/docs/shading.html new file mode 100644 index 000000000..77c86be3a --- /dev/null +++ b/mesalib/docs/shading.html @@ -0,0 +1,367 @@ +<HTML> + +<TITLE>Shading Language Support</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Shading Language Support</H1> + +<p> +This page describes the features and status of Mesa's support for the +<a href="http://opengl.org/documentation/glsl/" target="_parent"> +OpenGL Shading Language</a>. +</p> + +<p> +Last updated on 15 December 2008. +</p> + +<p> +Contents +</p> +<ul> +<li><a href="#envvars">Environment variables</a> +<li><a href="#120">GLSL 1.20 support</a> +<li><a href="#unsup">Unsupported Features</a> +<li><a href="#notes">Implementation Notes</a> +<li><a href="#hints">Programming Hints</a> +<li><a href="#standalone">Stand-alone GLSL Compiler</a> +<li><a href="#implementation">Compiler Implementation</a> +<li><a href="#validation">Compiler Validation</a> +</ul> + + + +<a name="envvars"> +<h2>Environment Variables</h2> + +<p> +The <b>MESA_GLSL</b> environment variable can be set to a comma-separated +list of keywords to control some aspects of the GLSL compiler: +</p> +<ul> +<li>dump - print GLSL shader code to stdout at link time +<li>log - log all GLSL shaders to files. + The filenames will be "shader_X.vert" or "shader_X.frag" where X + the shader ID. +<li>nopt - disable compiler optimizations +<li>opt - force compiler optimizations +<li>uniform - print message to stdout when glUniform is called +</ul> +<p> +Example: export MESA_GLSL=dump,nopt +</p> + + +<a name="120"> +<h2>GLSL 1.20 support</h2> + +<p> +GLSL version 1.20 is supported in Mesa 7.3 and later. +Among the features/differences of GLSL 1.20 are: +<ul> +<li><code>mat2x3, mat2x4</code>, etc. types and functions +<li><code>transpose(), outerProduct(), matrixCompMult()</code> functions +(but untested) +<li>precision qualifiers (lowp, mediump, highp) +<li><code>invariant</code> qualifier +<li><code>array.length()</code> method +<li><code>float[5] a;</code> array syntax +<li><code>centroid</code> qualifier +<li>unsized array constructors +<li>initializers for uniforms +<li>const initializers calling built-in functions +</ul> + + + +<a name="unsup"> +<h2>Unsupported Features</h2> + +<p> +The following features of the shading language are not yet fully supported +in Mesa: +</p> + +<ul> +<li>Linking of multiple shaders does not always work. Currently, linking + is implemented through shader concatenation and re-compiling. This + doesn't always work because of some #pragma and preprocessor issues. +<li>gl_ClipVertex +<li>The gl_Color and gl_SecondaryColor varying vars are interpolated + without perspective correction +</ul> + +<p> +All other major features of the shading language should function. +</p> + + +<a name="notes"> +<h2>Implementation Notes</h2> + +<ul> +<li>Shading language programs are compiled into low-level programs + very similar to those of GL_ARB_vertex/fragment_program. +<li>All vector types (vec2, vec3, vec4, bvec2, etc) currently occupy full + float[4] registers. +<li>Float constants and variables are packed so that up to four floats + can occupy one program parameter/register. +<li>All function calls are inlined. +<li>Shaders which use too many registers will not compile. +<li>The quality of generated code is pretty good, register usage is fair. +<li>Shader error detection and reporting of errors (InfoLog) is not + very good yet. +<li>The ftransform() function doesn't necessarily match the results of + fixed-function transformation. +</ul> + +<p> +These issues will be addressed/resolved in the future. +</p> + + +<a name="hints"> +<h2>Programming Hints</h2> + +<ul> +<li>Declare <em>in</em> function parameters as <em>const</em> whenever possible. + This improves the efficiency of function inlining. +</li> +<br> +<li>To reduce register usage, declare variables within smaller scopes. + For example, the following code: +<pre> + void main() + { + vec4 a1, a2, b1, b2; + gl_Position = expression using a1, a2. + gl_Color = expression using b1, b2; + } +</pre> + Can be rewritten as follows to use half as many registers: +<pre> + void main() + { + { + vec4 a1, a2; + gl_Position = expression using a1, a2. + } + { + vec4 b1, b2; + gl_Color = expression using b1, b2; + } + } +</pre> + Alternately, rather than using several float variables, use + a vec4 instead. Use swizzling and writemasks to access the + components of the vec4 as floats. +</li> +<br> +<li>Use the built-in library functions whenever possible. + For example, instead of writing this: +<pre> + float x = 1.0 / sqrt(y); +</pre> + Write this: +<pre> + float x = inversesqrt(y); +</pre> +<li> + Use ++i when possible as it's more efficient than i++ +</li> +</ul> + + +<a name="standalone"> +<h2>Stand-alone GLSL Compiler</h2> + +<p> +A unique stand-alone GLSL compiler driver has been added to Mesa. +<p> + +<p> +The stand-alone compiler (like a conventional command-line compiler) +is a tool that accepts Shading Language programs and emits low-level +GPU programs. +</p> + +<p> +This tool is useful for: +<p> +<ul> +<li>Inspecting GPU code to gain insight into compilation +<li>Generating initial GPU code for subsequent hand-tuning +<li>Debugging the GLSL compiler itself +</ul> + +<p> +After building Mesa, the glslcompiler can be built by manually running: +</p> +<pre> + make realclean + make linux + cd src/mesa/drivers/glslcompiler + make +</pre> + + +<p> +Here's an example of using the compiler to compile a vertex shader and +emit GL_ARB_vertex_program-style instructions: +</p> +<pre> + bin/glslcompiler --debug --numbers --fs progs/glsl/CH06-brick.frag.txt +</pre> +<p> +results in: +</p> +<pre> +# Fragment Program/Shader + 0: RCP TEMP[4].x, UNIFORM[2].xxxx; + 1: RCP TEMP[4].y, UNIFORM[2].yyyy; + 2: MUL TEMP[3].xy, VARYING[0], TEMP[4]; + 3: MOV TEMP[1], TEMP[3]; + 4: MUL TEMP[0].w, TEMP[1].yyyy, CONST[4].xxxx; + 5: FRC TEMP[1].z, TEMP[0].wwww; + 6: SGT.C TEMP[0].w, TEMP[1].zzzz, CONST[4].xxxx; + 7: IF (NE.wwww); # (if false, goto 9); + 8: ADD TEMP[1].x, TEMP[1].xxxx, CONST[4].xxxx; + 9: ENDIF; + 10: FRC TEMP[1].xy, TEMP[1]; + 11: SGT TEMP[2].xy, UNIFORM[3], TEMP[1]; + 12: MUL TEMP[1].z, TEMP[2].xxxx, TEMP[2].yyyy; + 13: LRP TEMP[0], TEMP[1].zzzz, UNIFORM[0], UNIFORM[1]; + 14: MUL TEMP[0].xyz, TEMP[0], VARYING[1].xxxx; + 15: MOV OUTPUT[0].xyz, TEMP[0]; + 16: MOV OUTPUT[0].w, CONST[4].yyyy; + 17: END +</pre> + +<p> +Note that some shading language constructs (such as uniform and varying +variables) aren't expressible in ARB or NV-style programs. +Therefore, the resulting output is not always legal by definition of +those program languages. +</p> +<p> +Also note that this compiler driver is still under development. +Over time, the correctness of the GPU programs, with respect to the ARB +and NV languagues, should improve. +</p> + + + +<a name="implementation"> +<h2>Compiler Implementation</h2> + +<p> +The source code for Mesa's shading language compiler is in the +<code>src/mesa/shader/slang/</code> directory. +</p> + +<p> +The compiler follows a fairly standard design and basically works as follows: +</p> +<ul> +<li>The input string is tokenized (see grammar.c) and parsed +(see slang_compiler_*.c) to produce an Abstract Syntax Tree (AST). +The nodes in this tree are slang_operation structures +(see slang_compile_operation.h). +The nodes are decorated with symbol table, scoping and datatype information. +<li>The AST is converted into an Intermediate representation (IR) tree +(see the slang_codegen.c file). +The IR nodes represent basic GPU instructions, like add, dot product, +move, etc. +The IR tree is mostly a binary tree, but a few nodes have three or four +children. +In principle, the IR tree could be executed by doing an in-order traversal. +<li>The IR tree is traversed in-order to emit code (see slang_emit.c). +This is also when registers are allocated to store variables and temps. +<li>In the future, a pattern-matching code generator-generator may be +used for code generation. +Programs such as L-BURG (Bottom-Up Rewrite Generator) and Twig look for +patterns in IR trees, compute weights for subtrees and use the weights +to select the best instructions to represent the sub-tree. +<li>The emitted GPU instructions (see prog_instruction.h) are stored in a +gl_program object (see mtypes.h). +<li>When a fragment shader and vertex shader are linked (see slang_link.c) +the varying vars are matched up, uniforms are merged, and vertex +attributes are resolved (rewriting instructions as needed). +</ul> + +<p> +The final vertex and fragment programs may be interpreted in software +(see prog_execute.c) or translated into a specific hardware architecture +(see drivers/dri/i915/i915_fragprog.c for example). +</p> + +<h3>Code Generation Options</h3> + +<p> +Internally, there are several options that control the compiler's code +generation and instruction selection. +These options are seen in the gl_shader_state struct and may be set +by the device driver to indicate its preferences: + +<pre> +struct gl_shader_state +{ + ... + /** Driver-selectable options: */ + GLboolean EmitHighLevelInstructions; + GLboolean EmitCondCodes; + GLboolean EmitComments; +}; +</pre> + +<ul> +<li>EmitHighLevelInstructions +<br> +This option controls instruction selection for loops and conditionals. +If the option is set high-level IF/ELSE/ENDIF, LOOP/ENDLOOP, CONT/BRK +instructions will be emitted. +Otherwise, those constructs will be implemented with BRA instructions. +</li> + +<li>EmitCondCodes +<br> +If set, condition codes (ala GL_NV_fragment_program) will be used for +branching and looping. +Otherwise, ordinary registers will be used (the IF instruction will +examine the first operand's X component and do the if-part if non-zero). +This option is only relevant if EmitHighLevelInstructions is set. +</li> + +<li>EmitComments +<br> +If set, instructions will be annoted with comments to help with debugging. +Extra NOP instructions will also be inserted. +</br> + +</ul> + + +<a name="validation"> +<h2>Compiler Validation</h2> + +<p> +A <a href="http://glean.sf.net" target="_parent">Glean</a> test has +been create to exercise the GLSL compiler. +</p> +<p> +The <em>glsl1</em> test runs over 170 sub-tests to check that the language +features and built-in functions work properly. +This test should be run frequently while working on the compiler to catch +regressions. +</p> +<p> +The test coverage is reasonably broad and complete but additional tests +should be added. +</p> + + +</BODY> +</HTML> diff --git a/mesalib/docs/sourcedocs.html b/mesalib/docs/sourcedocs.html new file mode 100644 index 000000000..90538af5c --- /dev/null +++ b/mesalib/docs/sourcedocs.html @@ -0,0 +1,37 @@ +<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 source code. +</p> + +<p> +The Doxygen configuration files and generated files are not included +in the normal Mesa distribution (they're very large). +To generate Doxygen documentation, download Mesa from CVS, change to +the <code>doxygen</code> directory and run <code>make</code>. +</P> + +<p> +For an example of Doxygen usage in Mesa, see a recent source file +such as <a href="http://webcvs.freedesktop.org/mesa/Mesa/src/mesa/main/bufferobj.c?view=markup" target="_parent">bufferobj.c</a>. +</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/mesalib/docs/subset-A.html b/mesalib/docs/subset-A.html new file mode 100644 index 000000000..dac66a61b --- /dev/null +++ b/mesalib/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 © 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. 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>.) + 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>. 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. + Quadrilaterals and polygons are composed of triangles. + 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. Vertices are actually 4-element +homogeneous coordinates. 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. + 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. Texture +coordinates are actually four-component coordinates: (s, t, r, q). + The <span style="font-weight: bold;">glTexCoord2</span> commands +set s and t explicitly. 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> 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, </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. 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> + The mode parameter may be GL_MODELVIEW or GL_PROJECTION to specify +the modelview matrix or projection matrix. Subsequent matrix +commands will effect the current matrix. 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. 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. 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. 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. 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. + 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. 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. <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. + 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. 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. <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. 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. <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>. 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> 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). The coordinate is processed +like a vertex; it is transformed by the modelview matrix, the projection +matrix and mapped to the viewport. The resulting window coordinate +is stored as the current raster position. The coordinate is +clipped-tested against the frustum like a vertex. 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. The +current raster color is updated (copied) from the current color (as +specified by <span style="font-weight: bold;">glColor</span>). + 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, </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. <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). 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. A +fragment is a tuple which consists of a window coordinate, colors and +texture coordinates. 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>. The window coordinate (x<sub>w</sub>, +y<sub>w</sub>, z<sub>w</sub>) is truncated to rasterize the point. + 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. Lines are rasterized as described +in the OpenGL specification. 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. The width defaults to 1.0. 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. 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. 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. Later, the +alpha value of each fragment is multiplied by the coverage value. + 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> + For GL_TRIANGLES mode, the number of vertices should be a multiple +of three - extra vertices will be ignored. For GL_TRIANGLE_STRIP +and GL_TRIANGLE_FAN, at least three vertices should be specified. + If less than three are specified, nothing is drawn. <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> For +GL_QUADS, the number of vertices should be a multiple of four - extra +vertices will be ignored. For GL_QUAD_STRIP, the number of +vertices should be even and at least four. 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> + 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. 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. + By default, a front-facing polygon's vertices are in +counter-clockwise order (in window coordinates). 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. If <span style="font-style: italic;">mode</span> +is GL_CW then polygons with clockwise winding are front-facing. If <span + style="font-style: italic;">mode</span> is GL_CCW then polygons with +counter-clockwise winding are front-facing. The default value is +GL_CCW. 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. 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. If <span style="font-style: italic;">mode</span> is +GL_FRONT then front-facing polygons will be culled. 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. 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. + 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. Fragments +completely inside the polygon have coverage 1.0. Fragments +completely outside the polygon have zero coverage (in theory). + 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. + 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. If <span style="font-style: italic;">mode</span> is +GL_FLAT then vertex colors are not interpolated. The color used +for drawing lines, triangles and quadrilaterals is that of the last +vertex used to specify each primitive. For polygons, the color of +the first vertex specifies the color for the entire polygon. 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. Fragments are only generated +for the bits (pixels) which are set. 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 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. <span style="font-style: italic;">xOrig</span> and <span + style="font-style: italic;">yOrig</span> specify the bitmap origin. + <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. <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. + </span>Unpacking is the process of extracting image data from +client memory subject to byte swapping, non-default row strides, etc. + 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. 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. 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. 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> + bitMask = 1 << (j % 8);<br> +else<br> + bitMask = 128 >> (j % 8);<br> +<br> +if (byte & bitMask)<br> + bit = 1;<br> +else<br> + 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 < <span style="font-style: italic;">height</span>; +j++) {<br> + for (i = 0; i < <span style="font-style: italic;">width</span>; +i++) {<br> + if (bit(i,j)) {<br> + fragment.x = +floor(x<sub>rp</sub> - <span style="font-style: italic;">xOrig</span>) ++ i;<br> + fragment.y = +floor(y<sub>rp</sub> - <span style="font-style: italic;">yOrig</span>) ++ j;<br> + fragment.color += GL_CURRENT_RASTER_COLOR;<br> + +fragment.texture = GL_CURRENT_RASTER_TEXTURE_COORDS;<br> + +ProcessFragment(fragment)<br> + }<br> + }<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? 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. + <span style="font-style: italic;">level </span>indicates the +mipmap level for mipmap textures. <span style="font-style: italic;">internalFormat</span> +is a hint to indicate the preferred internal storage format for the +texture. <span style="font-style: italic;">width</span> and <span + style="font-style: italic;">height </span>indicate the image size in +pixels (or texels). <span style="font-style: italic;">border </span>must +be zero. <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. <span style="font-style: italic;">pixels</span> +points to the incoming texture image. 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. 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. A mipmap is a set of images consisting of a base +image and a set of filtered, reduced-resolution images. 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>. Each mipmap +level is half the width and height of the previous level, or at least +one. 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. 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. Accepted values for <span + style="font-style: italic;">format</span> are GL_INTENSITY, GL_RGB and +GL_RGBA. The <span style="font-style: italic;">type</span> +parameter must be GL_UNSIGNED_BYTE. 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). 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. <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. 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). 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: 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: 8 +bits for each of the red, green, 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. Texture coordinates are set for each vertex +with the <span style="font-weight: bold;">glTexCoord</span> commands. + During line and polygon rasterization the vertex's texture +coordinates are interpolated across the primitive to produce a texture +coordinate for each fragment. The fragment texture coordinates are +used to sample the current texture image.<br> +<br> +Texture coordinates are normally in the range [0, 1]. Values +outside that range are processed according to the <span + style="font-style: italic;">texture wrap mode</span>. 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. + 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. 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. 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. 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. 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, +GL_NEAREST_MIPMAP_LINEAR, 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. 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. 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. The two texels +are linearly weighted to compute the final texel value. 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. The four texels are +linearly weighted to compute the final texel value. 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. The eight +texels are linearly weighted to compute the final texel value. 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. If the mipmap is +incomplete, it is as if texturing is disabled.<br> + <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. 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. The fragment and texture colors +are combined according to the texture environment mode and the current +texture's base internal format. 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. + 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. 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. + 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. The values are +clamped to the range [0, 1]. 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. (Rf, Gf, Bf, Af) is +the incoming fragment color. (Rt, Gt, Bt, At) is the sampled +texture color. Lt is the sampled texture luminance. <span + style="font-style: italic;"></span>'It' is the sampled texture +intensity. (Rc, Gc, Bc, Ac) is the texture environment color. + (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. This facilitates use of +multiple textures in an application. Texture objects are named +with GLuints (unsigned integers). 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. + <span style="font-style: italic;">textureID</span> may be any +unsigned integer. 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. 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>. + 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. The named +texture objects will be deleted. 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.) This chapter +describes the per-fragment operations. They are presented in the +order in which they're performed. 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. 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>. 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> <= x<sub>f</sub> < <span + style="font-style: italic;">x</span> + <span + style="font-style: italic;">width</span> and <span + style="font-style: italic;">y</span> <= y<sub>f</sub> < <span + style="font-style: italic;">y</span> + <span + style="font-style: italic;">height. </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. The default scissor rectangle bounds +are (0, 0, w, h) where w is the initial window width and h is the +initial window height. 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. 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. The following table lists all possible +modes <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 < <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 <= <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 > <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 >= <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. 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. Furthermore, the stencil buffer +value may be updated or modified depending on the outcome. 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. 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>&<span + style="font-style: italic;">mask)</span> < (stencil buffer value +& <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> +& <span style="font-style: italic;">mask) </span><= (stencil +buffer value & <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> +& <span style="font-style: italic;">mask) </span>> (stencil +buffer value & <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> +& <span style="font-style: italic;">mask) </span>>= (stencil +buffer value & <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> +& <span style="font-style: italic;">mask) </span>== (stencil +buffer value & <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> +& <span style="font-style: italic;">mask) </span>!= (stencil +buffer value & <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. 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. 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. The default stencil +reference value is 0. The default stencil mask is ~0. 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. If each +stencil buffer value has N bits, only the least significant N bits of <span + style="font-style: italic;">mask</span> are relevant. 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. 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. 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). 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 & dst<br> + </td> + </tr> + <tr> + <td style="vertical-align: top;">GL_NAND<br> + </td> + <td style="vertical-align: top;">~(src & dst)<br> + </td> + </tr> + <tr> + <td style="vertical-align: top;">GL_AND_REVERSE<br> + </td> + <td style="vertical-align: top;">src & ~dst<br> + </td> + </tr> + <tr> + <td style="vertical-align: top;">GL_AND_INVERTED<br> + </td> + <td style="vertical-align: top;">~src & 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. 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. 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. The default value for <span style="font-style: italic;">dstTerm</span> +is GL_ZERO. 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. Normally, all color +channels in the frame buffer are replaced with the final fragment color. + 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. If <span + style="font-style: italic;">redMask</span> is GL_TRUE then writing to +the red color channel is enabled, otherwise it's disabled. + 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. + The frame buffer is also organized into layers or logical buffers. + There may be a front color buffer, back color buffer and stencil +buffer. A double-buffered frame buffer has both a front color +buffer and back color buffer. A single-buffered framebuffer only +has a front color buffer. 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. If the GL_COLOR_BUFFER_BIT bit is +specified, the current color buffer will be cleared. 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. GL_FRONT indicates that the front color buffer +will be modified by <span style="font-weight: bold;">glClear</span> and +any drawing command. GL_BACK indicates that the back color buffer +will be modified by <span style="font-weight: bold;">glClear</span> and +any drawing command. GL_NONE indicates that neither color buffer +will be modified by <span style="font-weight: bold;">glClear</span> or +any drawing command. 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. 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). + 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. <span style="font-style: italic;">format</span> +specifies the format of image data and must be either GL_RGB or +GL_RGBA. <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. 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). 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. 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. <span style="font-style: italic;">value</span> +indicates the stride (in pixels) between subsequent rows in the +destination image. 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> + rowLength = <span style="font-style: italic;">width</span>;<br> +else<br> + rowLength = GL_PACK_ROW_LENGTH<br> +<br> +if (<span style="font-style: italic;">format</span> == GL_RGB) {<br> + for (i = 0; i < <span style="font-style: italic;">height</span>; +i++) {<br> + for (j = 0; j < <span + style="font-style: italic;">width</span>; j++) {<br> + k = (i * +rowLength + j) * 3;<br> + <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> + <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> + <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> + }<br> + }<br> +}<br> +else {<br> + for (i = 0; i < <span style="font-style: italic;">height</span>; +i++) {<br> + for (j = 0; j < <span + style="font-style: italic;">width</span>; j++) {<br> + k = (i * +rowLength + j) * 4;<br> + <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> + <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> + <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> + <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> + }<br> + }<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. </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. 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. + 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>. If <span + style="font-style: italic;">buffer</span> is GL_FRONT then front color +buffer is the source. If <span style="font-style: italic;">buffer</span> +is GL_BACK then the back color buffer is the source. It is illegal +to specify GL_BACK when the color buffer is not double buffered. + 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. 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. 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. If <span + style="font-style: italic;">mode</span> is GL_SELECTION the graphics +library is put into selection mode. If <span + style="font-style: italic;">mode</span> is GL_RENDER the graphic +library is put into normal rendering mode. 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. 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>. 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. 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. 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. <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. <span + style="font-weight: bold;">glPopName</span> pops the top name from the +stack. <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>. + 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. 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. The hit +data consists of three pieces of information: a hit flag, a minimum Z +value and a maximum Z value. First, the hit flag is set. + Then, for each of the primitive's vertices, the vertex Z value is +compared to the minimum and maximum Z values. The minimum Z value +is updated if the vertex's Z value is less than the minimum Z value. + 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. The +first value is the size of the name stack. The second value is the +minimum Z value multiplied by 2<sup>32</sup>-1. The third value is +the maximum Z value multiplied by 2<sup>32</sup>-1. The remaining +values are the values in the name stack, in bottom to top order. + The hit flag is cleared after a hit record is written to the +selection buffer. 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). The +return value of <span style="font-weight: bold;">glRenderMode</span> +will be -1 if the selection buffer overflowed. 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. + 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. <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. Otherwise, rendering to the front color +buffer may not appear. 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. 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. + 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>. The following table +lists all accepted values for <span style="font-style: italic;">pname</span> +and a description of the value(s). 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. 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. The current error code will be +set by a GL command when an error condition has been detected. If +the current error code is already set, subsequent errors will not be +recorded. The error code is reset/cleared to GL_NO_ERROR when <span + style="font-weight: bold;">glGetError</span> returns. 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. 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>. 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. 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. 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? 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. A +number of approaches to antialiasing have been summarized in email.<br> +<br> +RECOMMENDATION: don't support edge flags. 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: No. 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. Only a few are commonly +used.<br> +<br> +RECOMMENDATION: 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. Only allow <span style="font-style: italic;">internalFormat</span> +to be GL_RGBA, GL_RGB or GL_INTENSITY as well. Basically, only +support image formats/types that are directly supported by the Radeon +hardware. 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. + Only allow <span style="font-style: italic;">format</span> = +GL_RGB or GL_RGBA. 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? OpenGL 1.2 +has GL_REPLACE, GL_MODULATE, GL_DECAL and GL_BLEND. GL_DECAL isn't +defined for all base internal texture formats. GL_ADD is another +useful mode. 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: 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: Few applications use these features and +functions. 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>. 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: 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: 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: No. They're seldom needed and their +implementation is several hundred lines of code in length.<br> +<br> +RESOLUTION: 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: 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>. The +implementation of the other three commands involves many lines of code.<br> +<br> +RESOLUTION: 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. Otherwise, it could be difficult.<br> +<br> +RECOMMENDATION: Implement glBitmap by drawing points/pixels with +the hardware. This will make supporting the per-fragments +trivially easy. Also, it makes portrait-mode display relatively +easy.<br> +<br> +RESOLUTION: 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. 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. Omit it.<br> +<br> +RESOLUTION: closed, as of 26 Feb 2003<br> +<br> +<br> +<p> </p> +</body> +</html> diff --git a/mesalib/docs/subset.html b/mesalib/docs/subset.html new file mode 100644 index 000000000..4ac2eadff --- /dev/null +++ b/mesalib/docs/subset.html @@ -0,0 +1,24 @@ +<HTML> + +<TITLE>Mesa Subset Driver</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Mesa Subset Driver</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 +<a href="fbdev-dri.html">fbdev/DRI environment</a>. +</p> + +<p> +The specification for this subset can be found +<a href="subset-A.html">here</a>. +</p> + +</BODY> +</HTML> diff --git a/mesalib/docs/systems.html b/mesalib/docs/systems.html new file mode 100644 index 000000000..5137b074e --- /dev/null +++ b/mesalib/docs/systems.html @@ -0,0 +1,71 @@ +<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: +</p> + +<UL> +<li><a href="http://dri.freedesktop.org/" target="_parent"> DRI hardware +drivers</a> for the X Window System +<LI><a href="xlibdriver.html">Xlib software driver</a> for the X Window System +and Unix-like operating systems +<LI>Microsoft Windows <A HREF="README.WIN32">(README.WIN32)</A> +<LI>DEC VMS <A HREF="README.VMS">(README.VMS)</A> +</UL> + + +<h2>Deprecated Systems</h2> + +<p> +These drivers have not been maintained and are being deprecated. +They can be saved if someone steps up to help. +</p> + +<UL> +<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> +</UL> + +And for historical reference: +<UL> +<LI><a href="http://utah-glx.sourceforge.net/" target="_parent">Utah GLX drivers</a> +</UL> + +</body> +</html> diff --git a/mesalib/docs/thanks.html b/mesalib/docs/thanks.html new file mode 100644 index 000000000..2031788f0 --- /dev/null +++ b/mesalib/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 git 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/mesalib/docs/utilities.html b/mesalib/docs/utilities.html new file mode 100644 index 000000000..4693639b8 --- /dev/null +++ b/mesalib/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/mesalib/docs/utility.html b/mesalib/docs/utility.html new file mode 100644 index 000000000..c7cad0114 --- /dev/null +++ b/mesalib/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/mesalib/docs/versions.html b/mesalib/docs/versions.html new file mode 100644 index 000000000..84b40fd21 --- /dev/null +++ b/mesalib/docs/versions.html @@ -0,0 +1,1656 @@ +<HTML> + +<TITLE>Mesa Version History</TITLE> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<body bgcolor="#eeeeee"> + +<B> +NOTE: Changes for Mesa 6.4 and later are documented in the corresponding +<a href="relnotes.html">release notes</a> file. +</B> + + +<H1>Mesa Version History</H1> + + +<H2>1.0 beta February 1995</H2> +<ul> +<li>Initial release +</ul> + +<H2>1.1 beta March 4, 1995</H2> +Changes: +<ul> +<li>faster point and line drawing (2x faster) +<li>more systems supported, better Makefiles +<li>Renamed lib*.a files to avoid collisions +<li>many small bug fixes +</ul> +New: +<ul> +<li>pseudo-GLX functions added +<li>new implementation of evaluators (eval2.c) +<li>GLUT support +</ul> + +<H2>1.1.1 beta March 7, 1995</H2> +Changes: +<ul> +<li>Reverted from eval2.c to eval.c due to FPE on Linux +<li>more speed improvements +<li>more Makefile changes +</ul> + +<H2>1.1.2 beta March 14, 1995</H2> +New: +<ul> +<li>implementation of SGI's blending extensions +<li>glXUseXFont implemented +<li>added MESA_DEBUG environment variable support +</ul> +Changes: +<ul> +<li>Using eval2.c again +<li>more FPE-prevention checks (0-length normals are OK) +<li>a few small bug fixes +<li>much faster pixel logic ops! +<li>faster transformation arithmetic +</ul> + +<H2>1.1.3 beta March 31, 1995</H2> +New: +<ul> +<li>gluScaleImage() and gluBuild2DMipMaps() implemented +<li>Mesa widgets for Xt/Motif +<li>blendEXT demos +<li>added environment variables for selecting visuals +</ul> +Changes: +<ul> +<li>almost all GLUT demos work correctly now +<li>faster X device driver functions +<li>more bug fixes +</ul> + +<H2>1.1.4 beta April 20, 1995</H2> +Bug fixes: +<ul> +<li>missing #define SEEK_SET in src-tk/image.c +<li>compile glShadeModel into display lists +<li>fixed pow() domain error in src/light.c +<li>fixed "flickering bitmaps" in double buffer mode +<li>fixed tk.h and aux.h for C++ +<li>state of LIGHT_MODEL_LOCAL_VIEWER was inverted +</ul> +New features: +<ul> +<li>MUCH, MUCH nicer dithering in 8-bit RGB mode +<li>updated widgets and widget demos +<li>Implemented GLXPixmap functions +<li>Added GLU 1.1 and GLX 1.1 functions +<li>Changed the X/Mesa interface API, more versatile +<li>Implemented gluPartialDisk() +</ul> + +<H2>1.2 May 22, 1995</H2> +Bug fixes: +<ul> +<li>IRIX 4.x makefile problem +<li>modified tk to share root colormap as needed +<li>gluLookAt normalization problem +<li>suppress Expose, NoExpose events in swapbuffers +<li>glBitmap() and glDrawPixels() clipping +</ul> +New features: +<ul> +<li>GL_BLEND, GL_MODULATE, GL_DECAL, and GL_REPLACE_EXT texture + modes implemented +<li>texture maps stored more efficiently +<li>texture maps can be compiled into display lists +<li>Bogdan Sikorski's GLU polygon tesselation code +<li>Linas Vepstas's sweep and extrusion library +<li>glXCreateContext()'s shareList parameter works as it's supposed to. + XMesaCreateContext() updated to accept a shareList parameter too. +<li>Mesa can be compiled with real OpenGL .h files +<li>MESA_BACK_BUFFER environment variable +<li>better GLX error checking +</ul> + +<h2>1.2.1 June 22, 1995</h2> +Bug fixes: +<ul> +<li>X/Mesa double buffer window resize crash +<li>widgets now pass PointerMotion events +<li>X/Mesa incorrect default clear color and drawing color +<li>more robust X MIT-SHM support in X/Mesa +<li>glTexImage( format=GL_LUMINANCE ) didn't work +<li>GL_LINE mode polygons with line width > 1.0 could cause a crash +<li>numerous feedback bugs +<li>glReadPixels() from depth buffer was wrong +<li>error prone depth and stencil buffer allocation +New features: +<li>Preliminary Microsoft Windows driver +<li>Implemented a number of missing functions: glEvalCoord[12][df]v(), + glGet...(), etc. +<li>Added a few missing symbols to gl.h and glu.h +<li>Faster rendering of smooth-shaded, RGBA, depth-buffered polygons. +<li>Faster rendering of lines when width=2.0 +<li>Stencil-related functions now work in display lists +</ul> +Changes: +<ul> +<li>renamed aux.h as glaux.h (MS-DOS names can't start with aux) +<li>most filenames are in 8.3 format to accomodate MS-DOS +<li>use GLubytes to store arrays of colors instead of GLints +</ul> + +<h2>1.2.2 August 2, 1995</h2> +New features: +<ul> +<li>texture mapped points and lines +<li>NURBS! (but not 100% complete) +<li>viewports may safely extend beyond window boundaries +<li>MESA_PRIVATE_CMAP environment variable +<li>Grayscale X display support +<li>two new demos: demos/gears.c and demos/shadow.c +<li>MachTen for Macintosh configuration +</ul> +Bug fixes: +<ul> +<li>glGet*(GL_DEPTH_BITS) returned bytes, not bits +<li>point, line, and bitmap rasterization suffered from roundoff errors +<li>fixed a division by zero error in line clippping +<li>occasional wrong default background color really fixed! +<li>glDepthFunc(GL_ALWAYS) with glDepthMask(GL_FALSE) didn't work +<li>gluBuild2DMipmaps malloc problem fixed +<li>view volume clipping of smooth shaded lines resulted in bad colors +</ul> +Changes: +<ul> +<li>new visual selection method in glXChooseVisual() +<li>improved GLU quadric functions +<li>call XSync for glFinish and XFlush for glFlush +<li>glVertex() calls now use a function pointer to avoid conditionals +<li>removed contrib directory from Mesa tar file (available on ftp site) +<li>AIX shared library support +<li>Removed GLUenum type as it's not in OpenGL +</ul> + +<h2>1.2.3 September 26, 1995</h2> +New features: +<ul> +<li>Mesa header files now equivalent to SGI OpenGL headers +<li>Support for HP's Color Recovery dithering displays +<li>Faster vertex transformation +<li>Faster raster operations into X windows under certain conditions +<li>New configurations: HP w/ shared libs, Ultrix w/ GCC, Data General +<li>4-bit visuals now supported +</ul> +Bug fixes: +<ul> +<li>glScissor bug fixed +<li>round-off errors in clipping lines against clip planes fixed +<li>byte swapping between hosts and display servers implemented +<li>glGetError() can be called without a current rendering context +<li>problem with accidentally culled polygons is fixed +<li>fixed some widget compilation problems +</ul> + +<h2>1.2.4 November 17, 1995</h2> +New features: +<ul> +<li>More speed improvements (lighting, fogging, polygon drawing) +<li>Window system and OS-independent off-screen rendering +<li>Preliminary Fortran bindings +<li>glPolygonOffsetEXT implemented +<li>glColorMask and glIndexMask now fully implemented +<li>glPixelZoom implemented +<li>display lists fully implemented +<li>gamma correction +<li>dithering in 8-bit TrueColor/DirectColor visuals +</ul> +Changes: +<ul> +<li>Improved device driver interface +<li>tk.h renamed to gltk.h to avoid conflicts with Tcl's Tk +<li>Dithering support moved from core into device driver +</ul> +Bug fixes: +<ul> +<li>glEnable/Disable( GL_LIGHTING ) didn't always take effect +<li>glReadPixels byte swapping was broken +<li>glMaterial with pname==GL_AMBIENT_AND_DIFFUSE was broken +<li>duplicate glColor4b() prototype in GL/gl.h removed +<li>stripes in wave -ci demo fixed +<li>GL_LINEAR_MIPMAP_NEAREST had wrong value +<li>bugs in HP Color Recovery support fixed +<li>fixed bug when blending lines, points, bitmaps outside of window +</ul> + +<h2>1.2.5 November 30, 1995</h2> +New Features: +<ul> +<li>updated MS Windows driver +<li>new implementation of StaticGray/GrayScale visual support +</ul> +Bug fixes: +<ul> +<li>pixelzooming with gamma correction or blending didn't work +<li>HP color recovery visual wasn't being picked by glXChooseVisual +<li>glClear didn't always observe glColorMask changes +<li>olympic and offset demos didn't compile on some Suns +<li>texcoord clamping wasn't correct +<li>a polygon optimization introduced an occasional sampling problem +</ul> + +<h2>1.2.6 January 26, 1996</h2> +New Features: +<ul> +<li>faster line and polygon rendering under certain conditions. See + Performance Tips 9 and 10 in README +<li>profiling +<li>lighting is a bit faster +<li>better perspective corrected texture mapping +<li>Amiga AmiWin (X11) support +<li>preliminary Linux SVGA driver +Changes: +<li>now using a 16-bit depth buffer, faster, smaller +<li>GL_NORMALIZE is disabled by default +</ul> +Bug fixes: +<ul> +<li>projective texture mapping +<li>fixed a memory leak in the context destroy function +<li>GL_POLYGON with less than 3 vertices caused a crash +<li>glGet*() returned wrong result for GL_INDEX_MODE +<li>reading pixels from an unmapped X window caused a BadMatch error +</ul> + +<h2>1.2.7 March 5, 1996</h2> +New: +<ul> +<li>faster lighting +<li>faster 16-bit TrueColor rendering on Linux +<li>faster 32-bit TrueColor rendering on Linux, HP, IBM +<li>non-depth-buffered XImage polygons are faster +<li>vertex array extension +<li>software alpha planes +<li>updated Macintosh driver +<li>new NeXT driver +<li>GLU quadric functions generate texture coordinates +<li>reflect.c demo - reflective, textured surface demo +</ul> +Changes: +<ul> +<li>gamma correction code moved into the X driver for better performance +</ul> +Bug fixes: +<ul> +<li>multiple glClipPlane()'s didn't work reliably +<li>glPolygonMode() didn't always work +<li>glCullFace( GL_FRONT_AND_BACK ) didn't work +<li>texture mapping with gamma correction was buggy +<li>floating point exceptions in texture coordinate interpolation +<li>XImage byte swapping didn't always work +<li>polygon edge flags weren't always used correctly +</ul> + +<h2>1.2.8 May 22, 1996</h2> +New: +<ul> +<li>overlay planes on X servers with the SERVER_OVERLAY_VISUALS property +<li>better monochrome output +<li>more IRIX 6.x configurations +<li>more robust RGB mode color allocation +<li>added MESA_XSYNC environment variable +<li>GLX_MESA_pixmap_colormap and GLX_EXT_visual_info extensions +<li>GL_MESA_window_pos extension +<li>faster glReadPixels/glDrawPixels for GL_DEPTH and GL_UNSIGNED_SHORT + and GL_UNSIGNED_INT +<li>driver for prototype Cirrus Mondello 3-D board +<li>updated AmigaDOS driver +<li>a few small speed optimizations in polygon rendering +</ul> +Changes: +<ul> +<li>internal device driver interface modified to simplify device + driver implementations and to support hardware Z buffers +<li>several changes to the X/Mesa interface (xmesa.h) +</ul> +Bug fixes: +<ul> +<li>fixed pow(0,0) domain error triggered on some systems +<li>glStencilClear() in a display list caused an infinite loop +<li>glRasterPos*() was sometimes off by +/-0.5 in X and Y +<li>color masking and blending were performed in wrong order +<li>auxSolidCylinder() sometimes drew a wire-frame cylinder +<li>fixed file writing bug in osdemo.c +<li>pixel mapping didn't always work +<li>the GL_GEQUAL stencil func didn't work +<li>the GL_INVERT stencil op didn't work +<li>the stencil write mask didn't work +<li>glPush/PopAttrib() didn't do enough error checking +<li>glIsList() didn't always work correctly +</ul> + +<h2>2.0 October 10, 1996</h2> +New: +<ul> +<li>Implements OpenGL 1.1 API functions +<li>all texture filtering modes supported (mipmapping) +<li>faster texture mapping, see Performance Tip 11 in README +<li>antialiased RGB points +<li>X support for line and polygon stippling +<li>glDrawBuffer( GL_FRONT_AND_BACK ) works +<li>util/ directory of useful stuff +<li>demos/texobj demo of texture objects +</ul> +Changes: +<ul> +<li>major internal changes for thread-safeness +<li>new device driver interface +<li>MESA_ALPHA env variable removed +<li>triangle rasterizer replaces polygon rasterizer +</ul> +Bug fixes: +<ul> +<li>glPopAttrib() bug +<li>glDrawBuffer(GL_NONE) works now +</ul> + +<h2>2.1 December 14, 1996</h2> +New: +<ul> +<li>VMS support +<li>MS-DOS driver +<li>OpenStep support +<li>updated, combined Windows 95/NT driver +<li>implemented glGetLighti() and glGetTexGen*() +<li>GLX does garbage collection of ancillary buffers +</ul> +Bug fixes: +<ul> +<li>removed unused _EXT constants from gl.h +<li>fixed polygon offset bugs +<li>Z coordinates of clipped lines were incorrect +<li>glEdgeFlag() in display lists didn't always work +<li>glLight*() in display lists didn't work +<li>fixed X line stipple bugs (Michael Pichler) +<li>glXUseXfonts XFreeFont/XFreeFontInfo bug fixed +<li>fixed a feedback bug +<li>glTexGen*() now transforms GL_EYE_PLANE by inverse modelview matrix +<li>polygons were sometimes culled instead of clipped +<li>triangle rasterizer suffered from float/int overflow exceptions +<li>fixed FP underflow exception in lighting (specular exponent) +<li>glEnable/glDisable of GL_EXT_vertex_array enums didn't work +<li>fixed free(NULL) in GLU tesselator code +<li>using 24-bit color on some X servers resulted in garbage rendering +<li>32-bit per pixel mode for XFree86 now works +<li>glRotate(a,0,0,0) gave unpredictable results +<li>GL_LINE_STRIP with > 480 vertices had occasional clipping problems +<li>8-bit TrueColor GLXPixmap rendering incorrectly required a colormap +<li>glMaterial() wasn't ignored when GL_COLOR_MATERIAL was enabled +<li>glEnable(GL_COLOR_MATERIAL) followed by glColor() didn't work right +<li>accumulation buffer was limited to positive values +<li>projective textures didn't work +<li>selection buffer overflows weren't handled correctly +</ul> +Changes: +<ul> +<li>restored the GL_EXT_polygon_offset extension +<li>slightly faster RGB dithering +<li>the SVGA driver works again +<li>Amiga driver now distributed separately +<li>NeXT driver updated for Mesa 2.x +</ul> + +<h2>2.2 March 14, 1997</h2> +New: +<ul> +<li>better color selection when dithering +<li>added GL_EXT_texture_object extension +<li>updated MS-DOS driver for DJGPP +<li>added openbsd make configuration +<li>faster dithered flat-shaded triangles +<li>various compilation problems with Motif widgets fixed +<li>gl.h, glx.h and glu.h name mangling option +<li>BeOS driver +<li>3D texture mapping extension +<li>GL_MESA_resize_buffers extension +<li>morph3d, stex3d and spectex demos +<li>3Dfx support +</ul> +Bug fixes: +<ul> +<li>glColorMaterial should finally work right in all respects +<li>linear interpolation of mipmap levels was incorrectly weighted +<li>readpix.c didn't compile on Macintosh +<li>GL_INVERT and related logic ops didn't work right +<li>glTexImage[12]D() didn't check its parameters consistantly +<li>fixed a memory leak in glTexImage[12]D() +<li>kludged around a SunOS 5.x/GCC compiler bug in the feedback code +<li>glReadPixels aborted instead of normally catching some errors +<li>a few 1.1 constants were missing or misnamed in gl.h +<li>glBegin(p); glBegin(q); didn't generate an error +<li>fixed a memory leak in GLX code +<li>clipping of concave polygons could cause a core dump +<li>1-component alpha texture maps didn't work +<li>fixed a GLU polygon tesselator bug +<li>polygons with colinear vertices were sometimes culled +<li>feedback triangle colors were wrong when using smooth shading +<li>textures with borders didn't work correctly +<li>colors returned in feedback mode were wrong when using lighting +<li>spotlights didn't effect ambient lighting correctly +<li>gluPartialDisk() had a few bugs +</ul> +Changes: +<ul> +<li>device driver interface expanded to support texture mapping +<li>faster matrix inversion subroutine +<li>commented out #include "wmesa_extend.h" from src/wmesa.c +<li>fixed many compiler warnings in the demo programs +</ul> + +<h2>2.3 June 30, 1997</h2> +New: +<ul> +<li>Mesa distribution divided into two pieces: library code and demos +<li>faster vertex transformation, clip testing, lighting +<li>faster line drawing +<li>TrueColor visuals how have dithering (for depths < 24 bits) +<li>added MESA_NO_DITHER environment variable +<li>new device driver function: NearFar(), RenderVB(), RasterSetup() +<li>added LynxOS configuration +<li>added cygnus Win32 configuration +<li>added texcyl.c GLUT demo +<li>added XMesaDitherColor() to X/Mesa interface +<li>new NURBS code from Bogdan Sikorski +<li>added demos/shape.c (non-rectangular X window!) +</ul> +Bug fixes: +<ul> +<li>glEnable/DisableClientState() were missing from GL/gl.h +<li>GL_SPHERE_MAP texcoord generation didn't work correctly +<li>glXGetConfig() returned wrong number of depth, stencil, accum bits +<li>glDrawPixels feedback/selection didn't examine RasterPos valid bit +<li>black and white were reversed on some monochrome displays +<li>fixed potential image memory leak (wasn't setting reference counter) +<li>glDrawPixels sometimes didn't recognize some GL state changes +<li>gluProject/UnProject() didn't check for divide by zero +<li>stex3d demo called random() and srandom(), not portable +<li>fixed memory leaks in context.c and drawpix.c +<li>fixed NULL dereferencing problem in gl_update_texture_state() +<li>glReadPixels between glBegin/glEnd didn't generate an error. +<li>fixed memory leak in polygon tesselator (Randy Frank) +<li>fixed seg fault bug drawing flat-shaded, depth-tested lines +<li>clipped GL_TRIANGLE_STRIPs sometimes had wrong color when flat-shaded +<li>glBindTexture sometimes didn't work +<li>fixed a bug deep in glXReleaseBuffersMESA() +<li>fog was mistakenly applied to alpha +<li>glPopMatrix didn't set "dirty matrix" flag +<li>glPolygonStipple pattern was sometimes wrong +<li>glClear wasn't disabled during feedback and selection +<li>fixed memory leak in glTexSubImage[123]D +</ul> +Changes: +<ul> +<li>many library source files reorganized +<li>faster X color allocation, colors also freed when finished with them +<li>new texture sampling function pointer in texture objects +<li>incorporated 3Dfx VooDoo driver v0.16 into main source tree +<li>many 3Dfx driver updates +<li>cygnus Makefiles now included +<li>updated DOS driver +<li>made a few changes to dosmesa.c and wmesa.c (VB->Unclipped) +<li>internally, colors now stored in GLubytes, not GLfixed +<li>optimized changing of GL_SHININESS parameter +</ul> + +<h2>2.4 September 18, 1997</h2> +New: +<ul> +<li>updated 3Dfx Glide driver +<li>hacks for 3Dfx rendering into an X window or fullscreen +<li>added depth buffer access functions to X/Mesa and OS/Mesa interfaces +</ul> +Bug fixes: +<ul> +<li>pixel buffer could overflow with long, wide lines +<li>fixed FP underflow problems in lighting +<li>glTexSubImage1D() had an unitialized variable +<li>incomplete texture objects could cause a segfault +<li>glDrawPixels with GL_COMPILE_AND_EXECUTE caused infinite loop +<li>flat-shaded quads in a strip were miscolored if clipped +<li>mipmapped triangle lod computation now works correctly +<li>fixed a few under/overflow bugs in triangle rasterizer +<li>glArrayElement() assigned bad normal if normal array disabled +<li>changed argument to glXReleaseBuffersMESA() +<li>fixed small triangle underflow bugs in tritemp.h (hopefully) +<li>glBindTexture(target, 0) caused a crash +<li>glTexImage[123]D() with NULL image pointer caused crash +<li>glPixelStore parameters are now ignored during display list execution +<li>fixed a two-sided lighting w/ clipping bug (black vertices) +<li>textures with width!=height were sometimes mis-rendered +<li>"weird" projection matrices could cause div by 0, other fp errors +</ul> +Changes: +<ul> +<li>changed precompiled header symbol from PCH to PC_HEADER +<li>split api.c into api1.c and api2.c +<li>added hash.c source file (but not used yet) +<li>a few Sun and HP configuration file changes +<li>MESA_GLX_FX env var replaces MESA_FX_WINDOW and MESA_FX_FULLSCREEN +<li>fixed a few cygnus build problems (src/Makefile.cygnus, src/wmesa.c) +</ul> + +<h2>2.5 November 20, 1997</h2> +New: +<ul> +<li>updated 3Dfx driver (v20) for GLQuake +<li>added GL_EXT_paletted_texture extension +<li>added GL_EXT_shared_texture_palette extension +<li>added GL_EXT_point_parameters extension +<li>now including Mark Kilgard's GLUT library v3.6 +<li>new GLUT-based demos in gdemos/ +<li>added a few more Unix config targets +<li>added Intel X86 assembly language vertex transformation code +<li>3Dfx/Glide driver for Mesa now recognizes SST_SCREENREFRESH env var +<li>Windows 95 S3 Virge driver +</ul> +Bug fixes: +<ul> +<li>glCopyTexImage?D would crash due to uninitialized variable +<li>glColor w/ glColorMaterial in a display list caused a bug +<li>fixed several glDrawPixels() and ReadPixels() bugs in 3Dfx driver +<li>glVertex4*() vertices weren't always projected correctly +<li>trying to use mipmapped textured points or lines caused crash +<li>glColor[34][fd]() values now clamped to [0,1] before int conversion +</ul> +Changes: +<ul> +<li>new device driver functions for texture mapping +<li>hash tables used for display list and texture object lookup +<li>fixed GLX visual handling code to avoid saving redundant visuals +<li>3Dfx Glide libraries automatically linked to libMesaGL.so +<li>dropped the Cirrus Logic Mondello code since it's obsolete +<li>updated Cygnus Makefiles (Stephane Rehel) +<li>updated Windows MSVC++ Makefiles (Oleg Letsinsky) +<li>procedure for making library files has changed: scripts now take + a major and minor version arguments. Make-config changed a lot. +<li>new implementation of glTexSubImage2D() +<li>updated widgets-mesa directory to create libMesaGLwM.a (Motif widget) +<li>separate linux-glide and linux-386-glide configurations +</ul> + +<h2>2.6 February 12, 1998</h2> +New: +<ul> +<li>Windows WGL functions +<li>updated VMS, DOS, Windows, Cygnus, BeOS, Amiga compilation support +<li>v0.22 of 3Dfx Glide driver +<li>more X86 assembly language optimizations +<li>faster blending for some modes +<li>XMesaSetFXmode() to switch between 3Dfx window and full-screen mode +<li>added preliminary thread support +<li>added GLX_MESA_copy_sub_buffer extension +<li>some clipping optimizations +</ul> +Bug fixes: +<ul> +<li>fixed shading/material bug when drawing long primitive strips +<li>fixed clipping problem in long primitive strips +<li>fixed clipping bug when using 3Dfx driver +<li>fixed a problem when trying to use X fonts w/ 3Dfx driver +<li>fixed a texture filter bug in 3Dfx/Glide driver +<li>fixed bug in 3Dfx/Glide driver involving depth mask & clearing +<li>glLoadMatrix to set projection matrix confused the 3Dfx driver +<li>non-identity texture matrices didn't work with linux-386 configs +<li>glGenTextures() didn't reserve the returned texture IDs +<li>NULL proxy image sent to glTexImageXD() caused crash +<li>added texture state validation optimization (Henk Kok) +<li>fixed colormap reuse problem when using both RGB and CI windows +<li>32bpp True/DirectColor X visuals weren't recognized +<li>fixed potential problem in evaluators memory allocation +<li>fixed assorted demo compilation bugs +</ul> +Changes: +<ul> +<li>replaced old Mesa/windows/ directory with Mesa/WIN32/ directory +<li>converted a few old glaux/gltk demos to GLUT +<li>renamed directories: demos -> xdemos, gdemos -> demos +</ul> + + +<h2>3.0 September 17, 1998</h2> +New: +<ul> +<li>OpenGL 1.2 API +<li>GL_EXT_abgr pixel format extension +<li>GL_SGIS_texture_edge_clamp extension +<li>GL_SGIS_multitexture extension (to be replaced by GL_ARB_multitex) +<li>GL_EXT_multitexture extension (to be replaced by GL_ARB_multitex) +<li>GL_EXT_rescale_normal extension and renormal.c demo +<li>GLX_SGI_video_sync extension (a no-op) +<li>antialiased lines +<li>glGetTexImage() now implemented +<li>glDraw/Copy/ReadPixels() optimizations +<li>optimized textured triangle code (Marten Stromberg) +<li>more optimization of dithered TrueColor triangles in X driver +<li>Linux GGI driver +<li>updated MGL driver +</ul> +Bug fixes: +<ul> +<li>lots of assorted compilation fixes +<li>glInitNames didn't write initial hit record +<li>glBitmap didn't always check for invalid raster position +<li>switching between GLX and OSMesa contexts caused a crash +<li>fixed uninitialized variable in Mesa widget code +<li>fixed typo in texture code which caused book/texgen to crash +<li>fixed texture sampling bug when filter=GL_LINEAR and wrap=GL_CLAMP +<li>gluDisk() in POINT or LINE mode sometimes failed +<li>fixed texture + fog bug +<li>GL_COMPILE_AND_EXECUTE mode didn't work reliably +<li>glMultMatrix in projection matrix mode w/ 3Dfx driver could fail +<li>glDrawPixels(color index pixels) weren't converted to RGBA +<li>fixed possible getenv() buffer overflow security bug +<li>glBitmap in feedback mode was offset by xOrig, yOrig params +<li>device driver's DrawPixels hook was never used +<li>glDrawPixels with zoomY!=1 and top/bottom clipping didn't work +<li>glDrawPixels optimized for GL_LUMINANCE, GL_LUMINANCE_ALPHA, GLubyte +<li>fixed MakeCurrent bug in GLwRedrawObjects() in MesaWorkstation.c +<li>glCopyTexSubImage2D() didn't work with 3Dfx driver +<li>lines with width = 2 could cause crash +<li>glClear with scissor rect sometimes cleared whole buffer +<li>glTexSubImage2D( .. GL_COLOR_INDEX .. ) didn't work +<li>glTexImageXD( .. GL_ABGR_EXT .. ) didn't work +<li>computation of inverse modelview matrix sometimes failed +<li>fixed GL_CLAMP mode texture sampling bug +<li>textured line interpolation was somewhat broken +<li>textured triangle interpolation was also somewhat broken +<li>glGet(MODELVIEW/PROJECTION/TEXTURE_MATRIX_STACK_DEPTH) off by one +<li>evaluator state wasn't fully initialized +<li>texture coordinate clipping was buggy +<li>evaluator surfaces could be mis-colored +<li>glAccum(GL_RETURN, s) didn't obey glColorMask() settings +<li>zero area polygons shouldn't be culled if polygon mode is point/line +<li>clipped width and height of glReadPixels was sometimes off by one +<li>blending with alpha = 0 or 1.0 wasn't always exact +<li>reading of pixels from clipped region was buggy +<li>minor tweaking of X visual management in GLX emulator +<li>glPolygonStipple now obeys pixel unpacking parameters +<li>glGetPolygonStipple now obeys pixel packing parameters +<li>interleaved vertex array texture coordinates were broken +<li>query of proxy texture internal format was broken +<li>alpha channel wasn't reliably cleared +<li>fixed divide by zero error in gluScaleImage if dest size = 1 x 1 +</ul> +Conformance bug fixes: +<ul> +<li>GL_SELECTION_BUFFER_POINTER and GL_SELECTION_BUFFER_SIZE were missing +<li>GL_TEXTURE_INTERNAL_FORMAT was missing +<li>glGet*(GL_POLYGON_STIPPLE) was broken +<li>glPush/PopAttrib() didn't save/restore all texture state +<li>glBitmap in feedback mode didn't work +<li>feedback of texture coords didn't always work +<li>glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLbyte was broke +<li>glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLubyte was broke +<li>glDrawPixels w/ format=GL_STENCIL_INDEX, type=GL_BITMAP was broke +</ul> +Changes: +<ul> +<li>upgraded GLUT to version 3.7 +<li>only GL and GLU library code included in MesaLib.tar.gz +<li>GLUT and all demos now in MesaDemos.tar.gz +<li>glaux and gltk libraries removed +<li>IRIX -n32 and -64 libs go in lib32/ and lib64/ directories +</ul> + + +<h2>3.1 beta 1 November 19, 1998</h2> +New: +<ul> +<li>GL_EXT_stencil_wrap extension +<li>GL_INGR_blend_func_separate extension +<li>GL_ARB_multitexture extension +<li>GL_NV_texgen_reflection extension +<li>newly optimized vertex transformation code +<li>updated GLUT 3.7 code +<li>better precision when using 32-bit Z buffer +<li>Allegro DJGPP driver +</ul> +Bug fixes: +<ul> +<li>glCopyPixels between front/back buffers didn't copy alpha correctly +<li>fixed out-of-bounds memory access in optimized 2-D texture code +<li>glPixelStorei didn't accept GL_PACK/UNPACK_IMAGE_HEIGHT parameter +<li>glGet*() didn't accept GL_MAX_3D_TEXTURE_SIZE parameter +<li>clipping of texture coordinates sometimes had bad R,Q values +<li>GL_CLAMP_TO_EDGE texture sampling was off by 0.5 texels +<li>glEdgeFlagPointer() now takes a GLvoid * instead of GLboolean * +<li>texture was sometimes applied twice with 3Dfx driver +<li>glPush/PopAttrib() fouled up texture object reference counts +<li>glDeleteLists(0, n) caused assertion failure +<li>bilinear texture sampling wasn't accurate enough +<li>glClear w/ glDepthMask(GL_FALSE) didn't work right on 3Dfx +<li>color components were reversed on big endian 32 bpp X visuals +</ul> +Changes: +<ul> +<li>removed GL_EXT_multitexture extension +</ul> + + +<h2>3.1 beta 2 May 24, 1999</h2> +New: +<ul> +<li>multi-textured points and lines (mjk@nvidia.com) +<li>optimized 24bpp X rendering (bernd.paysan@gmx.de) +<li>added allegro support (bernie-t@geocities.com) +<li>cleaned-up Windows-related stuff (Ted Jump) +<li>minor stereo changes (KendallB@scitechsoft.com) +<li>new BeOS driver which implements BGLView class +<li>new Direct3D driver (see src/D3D) +<li>more efficient filled gluCylinder() function +<li>utilities: util/showbuffer.[ch] and util/glstate.[ch] +<li>fixed some IRIX compiler warnings +<li>added support for building Mesa in XFree86 with + SGI's GLX (kevin@precisioninsight.com) +</ul> +Bug fixes: +<ul> +<li>a variety of Windows/Mesa bug fixes (mjk@nvidia.com) +<li>packed pixel images weren't unpacked correctly +<li>patches some win32 files in GLUT (mjk@nvidia.com) +<li>glTexImage[123]D() didn't accept internalFormat == GL_COLOR_INDEX +<li>fixed lighting bug in Keith's new shading code +<li>fixed texture segfault seen in Lament screensaver +<li>fixed miscellaneous low-memory bugs +<li>glClear(GL_COLOR_BUFFER_BIT) with RGBA or CI masking was broken +<li>GL_LINEAR sampling of 3D textures was broken +<li>fixed SVR4 'cc' compiler macro problem (dawes@xfree86.org) +<li>added GL_TEXTURE_PRIORITY fix (keithh@netcomuk.co.uk) +<li>fixed wide point and wide line conformance bugs (brianp) +</ul> +Changes: +<ul> +<li>some device driver changes (see src/dd.h) +<li>new copyright on core Mesa code +</ul> + + +<h2>3.1 beta 3 September 17, 1999</h2> +New: +<ul> +<li>optimized glAccum function +<li>optimized 24bpp rendering in XMesa driver +<li>GLU 1.2 polygon tessellator +</ul> +Bug Fixes: +<ul> +<li>glGetTexLevelParameter wasn't fully implemented +<li>glXUseXFont now handles multi-byte fonts +<li>glIsEnabled(GL_TEXTURE_2D / 3D) returned wrong result +<li>alpha channel of blending points, lines was sometimes incorrect +</ul> +Changes: +<ul> +<li>New library names: "libGL" instead of "libMesaGL" +<li>New library numbering: libGL.so.1.2.310 +<li>New subdirectories: docs/ and bin/ +<li>New Makefile-system (autoconf,automake,libtool) +</ul> + + +<h2>3.1 final December 14, 1999</h2> +New: +<ul> +<li>added demos/gloss.c +<li>added xdemos/glxdpyinfo.c +<li>added GLX_ARB_get_proc_address extension +<li>rewritten glTexImage code paths (faster, less memory, bug fixes) +</ul> +Bug Fixes: +<ul> +<li>several vertex array bug fixes +<li>overlapping glCopyPixels with pixel zooming now works +<li>glXUseXFont() bitmaps were vertically shifted by one pixel +<li>glCopyPixels with pixel zooming now works +</ul> + + +<h2>3.2 final April 24, 2000</h2> +Bug fixes: +<ul> +<li>fixed memcpy bugs in span.c +<li>fixed missing glEnd problem in demos/tessdemo.c +<li>fixed bug when clearing 24bpp Ximages +<li>fixed clipping problem found in Unreal Tournament +<li>fixed Loki's "ice bug" and "crazy triangles" seen in Heretic2 +<li>fixed Loki's 3dfx RGB vs BGR bug +<li>fixed Loki's 3dfx smooth/flat shading bug in SoF +</ul> +Changes: +<ul> +<li>updated docs/README file +<li>use bcopy() optimizations on FreeBSD +<li>re-enabled the optimized persp_textured_triangle() function +</ul> + + +<h2>3.2.1 July 19, 2000</h2> +Bug fixes: +<ul> +<li>gluBuild2DMipmaps() didn't accept GL_BGRA +<li>Fixed compile/makefile problems on IRIX +<li>fixed segfault in 3dfx driver when using GL selection/feedback +<li>no longer cull very, very tiny triangles +<li>blending w/ drawbuffer==GL_FRONT_BACK caused segfault (sw rendering) +<li>fixed Motif detection code in widgets-mesa/configure.in +<li>glColorMaterial and glMaterial updates to emissive and ambient + didn't always work right +<li>Specular highlights weren't always in the right place +<li>clipped GL_LINE mode polygons had interior lines appear +<li>blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken +<li>GL_NICEST fog didn't always work with flat shading +<li>glRect commands in display lists were sometimes miscolored +<li>Line Z offset didn't always work +<li>fixed texgen normal vector problem (gloss's teapot) +<li>numerous GL conformance bugs fixed +</ul> +Changes: +<ul> +<li>glColorMask(false, false, false, false) handled better/faster +<li>reverted to old GLU polygon tessellator, GLU 1.1 +<li>updated Win32 build files +</ul> + + +<h2>3.3 July 21, 2000</h2> +New: +<ul> +<li>antialiased triangles now implemented +<li>GL_EXT_texture_env_add texture mode extension +<li>GLX 1.3 API +<li>support for separate draw/read buffers (ie GL_SGI_make_current_read) +<li>thread-safe API dispath +<li>improved glxinfo program +<li>demos/texdown program to measure texture download performance +<li>glext.h header file +<li>demos/geartrain program +<li>GL_EXT_texture_lod_bias extension +<li>demos/lodbias program +<li>further optimized glRead/DrawPixels for 16-bit TrueColor X visuals +<li>GLX_EXT_visual_rating extension (a no-op, however) +<li>GL_HP_occlusion_test extension (for X and OS/Mesa drivers) +<li>demos/occlude program +<li>GL_SGIS_pixel_texture and GL_SGIX_pixel_texture extensions +<li>demos/pixeltex program +<li>GL_SGI_color_matrix extension +<li>GL_SGI_color_table extension +<li>GL_EXT_histogram extension +<li>GL_ARB_texture_cube_map extension +<li>added xdemos/glxheads and xdemos/manywin +<li>demos/texenv.c demo +<li>GL_EXT_texture_env_combine extension (by Holger Waechtler) +<li>Xlib driver is now thread-safe (see xdemos/glthreads) +<ul> +Bug Fixes: +</ul> +<li>various GL conformance failures fixed since 3.2.1 +</ul> +Changes: +<ul> +<li>gl.h now uses #defines instead of C enums for all tokens +<li>glu.h now uses #defines instead of C enums for all tokens +<li>moved programs from 3Dfx/demos/ into demos/ directory +</ul> + + +<h2>3.4 November 3, 2000</h2> +New: +<ul> +<li>optimized glDrawPixels for glPixelZoom(1,-1) +Bug Fixes: +<li>widgets-mesa/src/*.c files were missing from 3.3 distro +<li>include/GL/mesa_wgl.h file was missing from 3.3 distro +<li>fixed some Win32 compile problems +<li>texture object priorities weren't getting initialized to 1.0 +<li>glAreTexturesResident return value was wrong when using hardware +<li>glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX) +<li>glReadPixels with GLushort packed types was broken +<li>fixed a few bugs in the GL_EXT_texture_env_combine texture code +<li>glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables +<li>fixed some typos/bugs in the VB code +<li>glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work +<li>optimized glDrawPixels paths weren't being used +<li>per-fragment fog calculation didn't work without a Z buffer +<li>improved blending accuracy, fixes Glean blendFunc test failures +<li>glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly +<li>glXGetProcAddressARB() didn't always return the right address +<li>gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format +<li>texture matrix changes weren't always detected (GLUT projtex demo) +<li>fixed random color problem in vertex fog code +<li>fixed Glide-related bug that let Quake get a 24-bit Z buffer +<ul> +Changes: +</ul> +<li>finished internal support for compressed textures for DRI +</ul> + + +<h2>3.4.1 February 14, 2001</h2> +New: +<ul> +<li>fixed some Linux build problems +<li>fixed some Windows build problems +<li>GL_EXT_texture_env_dot3 extension (Gareth Hughes) +</ul> +Bug fixes: +<ul> +<li>added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI +<li>various state-update code changes needed for DRI bugs +<li>disabled pixel transfer ops in glColorTable commands, not needed +<li>fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter +<li>updated sources and fixed compile problems in widgets-mesa/ +<li>GLX_PBUFFER enum value was wrong in glx.h +<li>fixed a glColorMaterial lighting bug +<li>fixed bad args to Read/WriteStencilSpan in h/w stencil clear function +<li>glXCopySubBufferMESA() Y position was off by one +<li>Error checking of glTexSubImage3D() was broken (bug 128775) +<li>glPopAttrib() didn't restore all derived Mesa state correctly +<li>Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL + conformance problems at 16bpp. +<li>clearing depth buffer with scissoring was broken, would segfault +<li>OSMesaGetDepthBuffer() returned bad bytesPerValue value +<li>fixed a line clipping bug (reported by Craig McDaniel) +<li>fixed RGB color over/underflow bug for very tiny triangles +</ul> +Known problems: +<ul> +<li>NURBS or evaluator surfaces inside display lists don't always work +</ul> + + +<h2>3.4.2 May 17, 2001</h2> +Bug fixes: +<ul> +<li>deleting the currently bound texture could cause bad problems +<li>using fog could result in random vertex alpha values +<li>AA triangle rendering could touch pixels outside right window bound +<li>fixed byteswapping problem in clear_32bit_ximage() function +<li>fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam +<li>fixed memory leak in glXUseXFont() +<li>fragment sampling in AA triangle function was off by 1/2 pixel +<li>Windows: reading pixels from framebuffer didn't always work +<li>glConvolutionFilter2D could segfault or cause FP exception +<li>fixed segfaults in FX and X drivers when using tex unit 1 but not 0 +<li>GL_NAND logicop didn't work right in RGBA mode +<li>fixed a memory corruption bug in vertex buffer reset code +<li>clearing the softwara alpha buffer with scissoring was broken +<li>fixed a few color index mode fog bugs +<li>fixed some bad assertions in color index mode +<li>fixed FX line 'stipple' bug #420091 +<li>fixed stencil buffer clear width/height typo +<li>fixed GL error glitches in gl[Client]ActiveTextureARB() +<li>fixed Windows compilation problem in texutil.c +<li>fixed 1/8-pixel AA triangle sampling error +</ul> +Changes: +<ul> +<li>optimized writing mono-colored pixel spans to X pixmaps +<li>increased max viewport size to 2048 x 2048 +</ul> + + +<h2>3.5 June 21, 2001</h2> +New: +<ul> +<li>internals of Mesa divided into modular pieces (Keith Whitwell) +<li>100% OpenGL 1.2 conformance (passes all conformance tests) +<li>new AA line algorithm +<li>GL_EXT_convolution extension +<li>GL_ARB_imaging subset +<li>OSMesaCreateContextExt() function +<li>GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add) +<li>GL_MAX_TEXTURE_UNITS_ARB now defaults to eight +<li>GL_EXT_fog_coord extension (Keith Whitwell) +<li>GL_EXT_secondary_color extension (Keith Whitwell) +<li>GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add) +<li>GL_SGIX_depth_texture extension +<li>GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions +<li>demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow +<li>GL_ARB_texture_env_combine extension +<li>GL_ARB_texture_env_dot3 extension +<li>GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp) +<li>OSMesaCreateContextExt() function +<li>libOSMesa.so library, contains the OSMesa driver interface +<li>GL/glxext.h header file for GLX extensions +<li>somewhat faster software texturing, fogging, depth testing +<li>all color-index conformance tests now pass (only 8bpp tested) +<li>SPARC assembly language TCL optimizations (David Miller) +<li>GL_SGIS_generate_mipmap extension +</ul> +Bug Fixes: +<ul> +<li>fbiRev and tmuRev were unitialized when using Glide3 +<li>fixed a few color index mode conformance failures; all pass now +<li>now appling antialiasing coverage to alpha after texturing +<li>colors weren't getting clamped to [0,1] before color table lookup +<li>fixed RISC alignment errors caused by COPY_4UBV macro +<li>drawing wide, flat-shaded lines could cause a segfault +<li>vertices now snapped to 1/16 pixel to fix rendering of tiny triangles +</ul> +Changes: +<ul> +<li>SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU +<li>new libOSMesa.so library, contains the OSMesa driver interface +</ul> + + +<h2>4.0 October 22, 2001</h2> +New: +<ul> +<li>Mesa 4.0 implements the OpenGL 1.3 specification +<li>GL_IBM_rasterpos_clip extension +<li>GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp) +<li>GL_ARB_texture_mirrored_repeat extension +<li>WindML UGL driver (Stephane Raimbault) +<li>added OSMESA_MAX_WIDTH/HEIGHT queries +<li>attempted compiliation fixes for Solaris 5, 7 and 8 +<li>updated glext.h and glxext.h files +<li>updated Windows driver (Karl Schultz) +</ul> +Bug fixes: +<ul> +<li>added some missing GLX 1.3 tokens to include/GL/glx.h +<li>GL_COLOR_MATRIX changes weren't recognized by teximage functions +<li>glCopyPixels with scale and bias was broken +<li>glRasterPos with lighting could segfault +<li>glDeleteTextures could leave a dangling pointer +<li>Proxy textures for cube maps didn't work +<li>fixed a number of 16-bit color channel bugs +<li>fixed a few minor memory leaks +<li>GLX context sharing was broken in 3.5 +<li>fixed state-update bugs in glPopClientAttrib() +<li>fixed glDrawRangeElements() bug +<li>fixed a glPush/PopAttrib() bug related to texture binding +<li>flat-shaded, textured lines were broken +<li>fixed a dangling pointer problem in the XMesa code (Chris Burghart) +<li>lighting didn't always produce the correct alpha value +<li>fixed 3DNow! code to not read past end of arrays (Andrew Lewycky) +</ul> + + +<h2>4.0.1 December 17, 2001</h2> +New: +<ul> +<li>better sub-pixel sample positions for AA triangles (Ray Tice) +<li>slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO) +</ul> +Bug fixes: +<ul> +<li>added missing break statements in glGet*() for multisample cases +<li>fixed uninitialized hash table mutex bug (display lists / texobjs) +<li>fixed bad teximage error check conditional (bug 476846) +<li>fixed demos readtex.c compilation problem on Windows (Karl Schultz) +<li>added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT +<li>silence some compiler warnings (gcc 2.96) +<li>enable the #define GL_VERSION_1_3 in GL/gl.h +<li>added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h +<li>fixed glu.h typedef problem found with MSDev 6.0 +<li>build libGL.so with -Bsymbolic (fixes bug found with Chromium) +<li>added missing 'const' to glXGetContextIDEXT() in glxext.h +<li>fixed a few glXGetProcAddress() errors (texture compression, etc) +<li>fixed start index bug in compiled vertex arrays (Keith) +<li>fixed compilation problems in src/SPARC/glapi_sparc.S +<li>fixed triangle strip "parity" bug found in VTK medical1 demo (Keith) +<li>use glXGetProcAddressARB in GLUT to avoid extension linking problems +<li>provoking vertex of flat-shaded, color-index triangles was wrong +<li>fixed a few display list bugs (GLUT walker, molecule, etc) (Keith) +<li>glTexParameter didn't flush the vertex buffer (Ray Tice) +<li>feedback attributes for glDraw/CopyPixels and glBitmap were wrong +<li>fixed bug in normal length caching (ParaView lighting bug) +<li>fixed separate_specular color bug found in Chimera (18 Dec 2001) +</ul> + + +<h2>4.0.2 April 2, 2002</h2> +New: +<ul> +<li>New DOS (DJGPP) driver written by Daniel Borca +<li>New driver interface functions for TCL drivers (such as Radeon DRI) +<li>GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32" + if using deep color channels +<li>latest GL/glext.h and GL/glxext.h headers from SGI +</ul> +Bug fixes: +<ul> +<li>GL_BLEND with non-black texture env color wasn't always correct +<li>GL_REPLACE with GL_RGB texture format wasn't always correct (alpha) +<li>glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken +<li>glReadPixels was sometimes mistakenly clipped by the scissor box +<li>glDraw/ReadPixels didn't catch all the errors that they should have +<li>Fixed 24bpp rendering problem in Windows driver (Karl Schultz) +<li>16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c) +<li>Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP) +<li>glColorMask as sometimes effecting glXSwapBuffers() +<li>fixed a potential bug in XMesaGarbageCollect() +<li>N threads rendering into one window didn't work reliably +<li>glCopyPixels didn't work for deep color channels +<li>improved 8 -> 16bit/channel texture image conversion (Gerk Huisma) +<li>glPopAttrib() didn't correctly restore user clip planes +<li>user clip planes failed for some perspective projections (Chromium) +</ul> +Known bugs: +<ul> +<li>mipmap LOD computation +</ul> + + +<h2>4.0.3 June 25, 2002</h2> +New: +<ul> +<li>updated GL/glext.h file (version 15) +<li>corrected MMX blend code (Jose Fonseca) +<li>support for software-based alpha planes in Windows driver +<li>updated GGI driver (Filip Spacek) +</ul> +Bug fixes: +<ul> +<li>glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens +<li>OSMesaMakeCurrent() didn't recognize buffer size changes +<li>assorted conformance fixes for 16-bit/channel rendering +<li>texcombine alpha subtraction mode was broken +<li>fixed lighting bug with non-uniform scaling and display lists +<li>fixed bug when deleting shared display lists +<li>disabled SPARC cliptest assembly code (Mesa bug 544665) +<li>fixed a couple Solaris compilation/link problems +<li>blending clipped glDrawPixels didn't always work +<li>glGetTexImage() didn't accept packed pixel types +<li>glPixelMapu[is]v() could explode given too large of pixelmap +<li>glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT +<li>glXCopyContext() could lead to segfaults +<li>glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665) +</ul> +Changes: +<ul> +<li>lots of C++ (g++) code clean-ups +<li>lots of T&L updates for the Radeon DRI driver +</ul> +Known bugs: +<ul> +<li>mipmap LOD computation (fixed for Mesa 4.1) +</ul> + + +<h2>4.0.4 October 3, 2002</h2> +New: +<ul> +<li>GL_NV_texture_rectangle extension +<li>updated glext.h header (version 17) +<li>updated DOS driver (Daniel Borca) +<li>updated BeOS R5 driver (Philippe Houdoin) +<li>added GL_IBM_texture_mirror_repeat +<li>glxinfo now takes -l option to print interesting OpenGL limits info +<li>GL_MESA_ycbcr_texture extension +<li>GL_APPLE_client_storage extension (for some DRI drivers only) +<li>GL_MESA_pack_invert extension +</ul> +Bug fixes: +<ul> +<li>fixed GL_LINEAR fog bug by adding clamping +<li>fixed FP exceptions found using Alpha CPU +<li>3dfx MESA_GLX_FX=window (render to window) didn't work +<li>fixed memory leak in wglCreateContest (Karl Schultz) +<li>define GLAPIENTRY and GLAPI if undefined in glu.h +<li>wglGetProcAddress didn't handle all API functions +<li>when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map +<li>removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc() +<li>error checking in compressed tex image functions had some glitches +<li>fixed AIX compile problem in src/config.c +<li>glGetTexImage was using pixel unpacking instead of packing params +<li>auto-mipmap generation for cube maps was incorrect +</ul> +Changes: +<ul> +<li>max texture units reduced to six to accomodate texture rectangles +<li>removed unfinished GL_MESA_sprite_point extension code +</ul> + + +<h2>4.1 October 29, 2002</h2> +New: +<ul> +<li>GL_NV_vertex_program extension +<li>GL_NV_vertex_program1_1 extension +<li>GL_ARB_window_pos extension +<li>GL_ARB_depth_texture extension +<li>GL_ARB_shadow extension +<li>GL_ARB_shadow_ambient extension +<li>GL_EXT_shadow_funcs extension +<li>GL_ARB_point_parameters extension +<li>GL_ARB_texture_env_crossbar +<li>GL_NV_point_sprite extension +<li>GL_NV_texture_rectangle extension +<li>GL_EXT_multi_draw_arrays extension +<li>GL_EXT_stencil_two_side extension +<li>GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions +<li>GL_ATI_texture_mirror_once extension (Ian Romanick) +<li>massive overhaul/simplification of software rasterizer module, + many contributions from Klaus Niederkrueger +<li>faster software texturing in some cases (i.e. trilinear filtering) +<li>new OSMesaGetProcAddress() function +<li>more blend modes implemented with MMX code (Jose Fonseca) +<li>added glutGetProcAddress() to GLUT +<li>added GLUT_FPS env var to compute frames/second in glutSwapBuffers() +<li>pbinfo and pbdemo PBuffer programs +<li>glxinfo -v prints transprent pixel info (Gerd Sussner) +</ul> +Bug fixes: +<ul> +<li>better mipmap LOD computation (prevents excessive blurriness) +<li>OSMesaMakeCurrent() didn't recognize buffer size changes +<li>assorted conformance fixes for 16-bit/channel rendering +<li>texcombine alpha subtraction mode was broken +<li>fixed some blend problems when GLchan==GLfloat (Gerk Huisma) +<li>clamp colors to [0,inf] in OSMesa if GLchan==GLfloat (Gerk Huisma) +<li>fixed divide by zero error in NURBS tessellator (Jon Perry) +<li>fixed GL_LINEAR fog bug by adding clamping +<li>fixed FP exceptions found using Alpha CPU +<li>3dfx/glide driver render-to-window feature was broken +<li>added missing GLX_TRANSPARENT_RGB token to glx.h +<li>fixed error checking related to paletted textures +<li>fixed reference count error in glDeleteTextures (Randy Fayan) +</ul> +Changes: +<ul> +<li>New spec file and Python code to generate some GL dispatch files +<li>Glide driver defaults to "no" with autoconf/automake +<li>updated demos/stex3d with new options +</ul> + + +<h2>5.0 November 13, 2002</h2> +New: +<ul> +<li>OpenGL 1.4 support (glGetString(GL_VERSION) returns "1.4") +<li>removed some overlooked debugging code +<li>glxinfo updated to support GLX_ARB_multisample +<li>GLUT now support GLX_ARB_multisample +<li>updated DOS driver (Daniel Borca) +</ul> +Bug fixes: +<ul> +<li>GL_POINT and GL_LINE-mode polygons didn't obey cull state +<li>fixed potential bug in _mesa_align_malloc/calloc() +<li>fixed missing triangle bug when running vertex programs +<li>fixed a few HPUX compilation problems +<li>FX (Glide) driver didn't compile +<li>setting GL_TEXTURE_BORDER_COLOR with glTexParameteriv() didn't work +<li>a few EXT functions, like glGenTexturesEXT, were no-ops +<li>a few OpenGL 1.4 functions like glFogCoord*, glBlendFuncSeparate, + glMultiDrawArrays and glMultiDrawElements were missing +<li>glGet*(GL_ACTIVE_STENCIL_FACE_EXT) was broken +<li>Pentium 4 Mobile was mistakenly identified as having 3DNow! +<li>fixed one-bit error in point/line fragment Z calculation +<li>fixed potential segfault in fakeglx code +<li>fixed color overflow problem in DOT3 texture env mode +</ul> + + +<h2>5.0.1 March 30, 2003</h2> +New: +<ul> +<li>DOS driver updates from Daniel Borca +<li>updated GL/gl_mangle.h file (Bill Hoffman) +Bug fixes: +<li>auto mipmap generation for cube maps was broken (bug 641363) +<li>writing/clearing software alpha channels was unreliable +<li>minor compilation fixes for OS/2 (Evgeny Kotsuba) +<li>fixed some bad assertions found with shadowtex demo +<li>fixed error checking bug in glCopyTexSubImage2D (bug 659020) +<li>glRotate(angle, -x, 0, 0) was incorrect (bug 659677) +<li>fixed potential segfault in texture object validation (bug 659012) +<li>fixed some bogus code in _mesa_test_os_sse_exception_support (Linus) +<li>fix fog stride bug in tnl code for h/w drivers (Michel Danzer) +<li>fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080) +<li>glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3 +<li>fixed compilation problem on Solaris7/x86 (bug 536406) +<li>fixed prefetch bug in 3DNow! code (Felix Kuhling) +<li>fixed NeXT build problem (FABSF macro) +<li>glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811) +<li>zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964) +<li>AA line and triangle Z values are now rounded, not truncated +<li>fixed color interpolation bug when GLchan==GLfloat (bug 694461) +<li>glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca) +<li>fixed a minor GL_COLOR_MATERIAL bug +<li>NV vertex program EXP instruction was broken +<li>glColorMask misbehaved with X window / pixmap rendering +<li>fix autoconf/libtool GLU C++ linker problem on Linux (a total hack) +<li>attempt to fix GGI compilation problem when MesaDemos not present +<li>NV vertex program ARL-relative fetches didn't work +</ul> +Changes: +<ul> +<li>use glPolygonOffset in gloss demo to avoid z-fighting artifacts +<li>updated winpos and pointblast demos to use ARB extensions +<li>disable SPARC normal transformation code (bug 673938) +<li>GLU fixes for OS/2 (Evgeny Kotsuba) +</ul> + + +<h2>5.0.2 September 5, 2003</h2> +Bug fixes: +<ul> +<li>fixed texgen problem causing texcoord's Q to be zero (stex3d) +<li>default GL_TEXTURE_COMPARE_MODE_ARB was wrong +<li>GL_CURRENT_MATRIX_NV query was wrong +<li>GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one +<li>GL_LIST_MODE query wasn't correct +<li>GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported +<li>GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value +<li>blended, wide lines didn't always work correctly (bug 711595) +<li>glVertexAttrib4svNV w component was always 1 +<li>fixed bug in GL_IBM_rasterpos_clip (missing return) +<li>GL_DEPTH_TEXTURE_MODE = GL_ALPHA didn't work correctly +<li>a few Solaris compilation fixes +<li>fixed glClear() problem for DRI drivers (non-existant stencil, etc) +<li>fixed int/REAL mixup in GLU NURBS curve evaluator (Eric Cazeaux) +<li>fixed delete [] bug in SI GLU (bug 721765) (Diego Santa Cruz) +<li>glFog() didn't clamp fog colors +<li>fixed bad float/int conversion for GL_TEXTURE_PRIORITY in the + gl[Get]TexParameteri[v] functions +<li>fixed invalid memory references in glTexGen functions (bug 781602) +<li>integer-valued color arrays weren't handled correctly +<li>glDrawPixels(GL_DEPTH_COMPONENT) with glPixelZoom didn't work +<li>GL_EXT_texture_lod_bias is part of 1.4, overlooked in 5.0.1 +</ul> +Changes: +<ul> +<li>build GLUT with -fexceptions so C++ apps propogate exceptions +</ul> + + +<h2>5.1 December 17, 2003</h2> +New: +<ul> +<li>reorganized directory tree +<li>GL_ARB_vertex/fragment_program extensions (Michal Krol & Karl Rasche) +<li>GL_ATI_texture_env_combine3 extension (Ian Romanick) +<li>GL_SGI_texture_color_table extension (Eric Plante) +<li>GL_NV_fragment_program extension +<li>GL_NV_light_max_exponent extension +<li>GL_EXT_texture_rectangle (identical to GL_NV_texture_rectangle) +<li>GL_ARB_occlusion_query extension +<li>GL_ARB_point_sprite extension +<li>GL_ARB_texture_non_power_of_two extension +<li>GL_IBM_multimode_draw_arrays extension +<li>GL_EXT_texture_mirror_clamp extension (Ian Romanick) +<li>GL_ARB_vertex_buffer_object extension +<li>new X86 feature detection code (Petr Sebor) +<li>less memory used for display lists and vertex buffers +<li>demo of per-pixel lighting with a fragment program (demos/fplight.c) +<li>new version (18) of glext.h header +<li>new spriteblast.c demo of GL_ARB_point_sprite +<li>faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1) +<li>faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1) +</ul> +Bug fixes: +<ul> +<li>really enable OpenGL 1.4 features in DOS driver. +<li>fixed issues in glDrawPixels and glCopyPixels for very wide images +<li>glPixelMapf/ui/usv()'s size parameter is GLsizei, not GLint +<li>fixed some texgen bugs reported by Daniel Borca +<li>fixed wglMakeCurrent(NULL, NULL) bug (#835861) +<li>fixed glTexSubImage3D z-offset bug (Cedric Gautier) +<li>fixed RGBA blend enable bug (Ville Syrjala) +<li>glAccum is supposed to be a no-op in selection/feedback mode +<li>fixed texgen bug #597589 (John Popplewell) +</ul> +Changes: +<ul> +<li>dropped API trace feature (src/Trace/) +<li>documentation overhaul. merged with website content. more html. +<li>glxgears.c demo updated to use GLX swap rate extensions +<li>glTexImage1/2/3D now allows width/height/depth = 0 +<li>disable SPARC asm code on Linux (bug 852204) +</ul> + + +<h2>6.0 January 16, 2004</h2> +New: +<ul> +<li>full OpenGL 1.5 support +<li>updated GL/glext.h file to version 21 +Changes: +<li>changed max framebuffer size to 4Kx4K (MAX_WIDTH/HEIGHT in config.h) +Bug fixes: +<li>fixed bug in UNCLAMPED_FLOAT_TO_UBYTE macro; solves a color + clamping issue +<li>updated suno5-gcc configs +<li>glColor3 functions sometimes resulted in undefined alpha values +<li>fixed FP divide by zero error seen on VMS with xlockmore, others +<li>fixed vertex/fragment program debug problem (bug 873011) +<li>building on AIX with gcc works now +<li>glDeleteProgramsARB failed for ARB fragment programs (bug 876160) +<li>glDrawRangeElements tried to modify potentially read-only storage +<li>updated files for building on Windows +</ul> + + +<h2><a name="6.0.1">6.0.1 April 2, 2004</h2> +New: +<ul> +<li>upgraded glext.h to version 22 +<li>new build targets (Dan Schikore) +<li>new linux-x86-opteron build target (Heath Feather) +</ul> +Bug fixes: +<ul> +<li>glBindProgramARB didn't update all necessary state +<li>fixed build problems on OpenBSD +<li>omit CVS directories from tarballs +<li>glGetTexImage(GL_COLOR_INDEX) was broken +<li>fixed an infinite loop in t&l module +<li>silenced some valgrind warnings about using unitialized memory +<li>fixed some compilation/link glitches on IRIX (Mike Stephens) +<li>glBindProgram wasn't getting compiled into display lists +<li>GLX_FBCONFIG_ID wasn't recognized in glXChooseFBConfig() (bug 888079) +<li>two-sided lighting and vertex program didn't work (bug 887330) +<li>stores to program parameter registers in vertex state programs + didn't work. +<li>fixed glOrtho bug found with gcc 3.2.2 (RH9) +<li>glXCreateWindow() wasn't fully implemented (bug 890894) +<li>generic vertex attribute arrays didn't work in display lists +<li>vertex buffer objects' default usage and access fields were wrong +<li>glDrawArrays with start!=0 was broken +<li>fragment program PK2H, UP2H, UP4B and UP4UB instructions were broken +<li>linux-osmesa16-static config didn't work +<li>fixed a few color index rendering problems (bug 910687) +<li>glInterleavedArrays didn't respect GL_CLIENT_ACTIVE_TEXTURE +<li>OSMesa RGB and BGR modes were broken +<li>glProgramStringARB mistakenly required a null-terminated string +<li>fragment program XPD instruction was incorrect +<li>glGetMaterial() didn't work reliably +<li>ARB_fragment_program KIL instruction was incorrect +</ul> + + +<h2><a name="6.1">6.1 August 18, 2004</h2> +New: +<ul> +<li>Revamped Makefile system +<li>glXUseRotatedXFont() utility (see xdemos/xuserotfont.c) +<li>internal driver interface changes related to texture object + allocation, vertex/fragment programs, BlendEquationSeparate, etc. +<li>option to walk triangle edges with double-precision floats + (Justin Novosad of Discreet) (see config.h file) +<li>support for AUX buffers in software GLX driver +<li>updated glext.h to version 24 and glxext.h to version 6 +<li>new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars +<li>updated BeOS support (Philippe Houdoin) +</ul> +Changes: +<ul> +<li>fragment fog interpolation is perspective corrected now +<li>new glTexImage code, much cleaner, may be a bit faster +</ul> +Bug fixes: +<ul> +<li>glArrayElement in display lists didn't handle generic vertex attribs +<li>glFogCoord didn't always work properly +<li>ARB_fragment_program fog options didn't work +<li>frag prog TEX instruction no longer incorrectly divides s,t,r by q +<li>ARB frag prog TEX and TEXP instructions now use LOD=0 +<li>glTexEnviv in display lists didn't work +<li>glRasterPos didn't do texgen or apply texture matrix +<li>GL_DOUBLE-valued vertex arrays were broken in some cases +<li>fixed texture rectangle edge/border sampling bugs +<li>sampling an incomplete texture in a fragment program would segfault +<li>glTexImage was missing a few error checks +<li>fixed some minor glGetTexParameter glitches +<li>GL_INTENSITY was mistakenly accepted as a <format> to glTexImage +<li>fragment program writes to RC/HC register were broken +<li>fixed a few glitches in GL_HP_occlusion_test extension +<li>glBeginQueryARB and glEndQueryARB didn't work inside display lists +<li>vertex program state references were broken +<li>fixed triangle color interpolation bug on AIX (Shane Blackett) +<li>fixed a number of minor memory leaks (bug #1002030) +</ul> + + +<h2><a name="6.2">6.2 October 2, 2004</h2> +New: +<ul> +<li>enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle) +<li>updated Doxygen support (Jose Fonseca) +</ul> +Changes: +<ul> +<li>some GGI driver updates (Christoph Egger, bug 1025977) +</ul> +Bug fixes: +<ul> +<li>Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features +<li>fixed a few compilation issues on IRIX +<li>fixed a matrix classification bug (reported by Wes Bethel) +<li>we weren't reseting the vertex/fragment program error state + before parsing (Dave Reveman) +<li>adjust texcoords for sampling texture rectangles (Dave Reveman) +<li>glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented +<li>repeated calls to glDeleteTexture(t) could lead to a crash +<li>fixed potential ref count bugs in VBOs and vertex/fragment programs +<li>spriteblast demo didn't handle window size changes correctly +<li>glTexSubImage didn't handle pixels=NULL correctly for PBOs +<li>fixed color index mode glDrawPixels bug (Karl Schultz) +</ul> + + +<h2><a name="6.2.1">6.2.1 December 9, 2004</h2> +Bug fixes: +<ul> +<li>don't apply regular fog or color sum when using a fragment program +<li>glProgramEnvParameter4fARB always generated an error on + GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645) +<li>glVertexAttrib3svNV and glVertexAttrib3svARB were broken +<li>fixed width/height mix-up in glSeparableFilter2D() +<li>fixed regression in glCopyPixels + convolution +<li>glReadPixels from a clipped front color buffer didn't always work +<li>glTexImage didn't accept GL_RED/GREEN/BLUE as the format +<li>Attempting queries/accesses of VBO 0 weren't detected as errors +<li>paletted textures failed if the palette had fewer than 256 entries +</ul> +Changes: +<ul> +<li>fixed a bunch of compiler warnings found with gcc 3.4 +<li>bug reports should to go bugzilla.freedesktop.org +</ul> + + +<h2><a name="6.3">6.3 July 20, 2005</h2> +New: +<ul> +<li>GL_EXT_framebuffer_object extension +<li>GL_ARB_draw_buffers extension +<li>GL_ARB_pixel_buffer_object extension +<li>GL_OES_read_format extension (Ian Romanick) +<li>DirectFB driver (Claudio Ciccani) +<li>x86_64 vertex transformation code (Mikko T.) +<li>Updated GL/glext.h to version 29 +</ul> +Changes: +<ul> +<li>added -stereo option for glxgears demo (Jacek Rosik) +<li>updated the PBuffer demo code in xdemos/ directory +<li>glDeleteTextures/Programs/Buffers() now makes the object ID + available for immediate re-use +<li>assorted 64-bit clean-ups fixes (x86_64 and Win64) +<li>lots of internal changes for GL_EXT_framebuffer_object +</ul> +Bug fixes: +<ul> +<li>some functions didn't support PBO functionality +<li>glGetTexImage didn't convert color index images to RGBA as required +<li>fragment program texcoords were sometimes wrong for points and lines +<li>fixed problem with negative dot product in arbfplight, fplight demos +<li>fixed bug in perspective correction of antialiased, textured lines +<li>querying GL_POST_CONVOLUTION_ALPHA_BIAS_EXT returned wrong value +<li>fixed a couple per-pixel fog bugs (Soju Matsumoto) +<li>glGetBooleanv(GL_FRAGMENT_PROGRAM_BINDING_NV) was broken +<li>fixed float parsing bug in ARB frag/vert programs (bug 2520) +<li>XMesaGetDepthBuffer() returned incorrect value for bytesPerValue +<li>GL_COLOR_MATERIAL with glColor3 didn't properly set diffuse alpha +<li>glXChooseFBConfig() crashed if attribList pointer was NULL +<li>program state.light[n].spot.direction.w was wrong value (bug 3083) +<li>fragment program fog option required glEnable(GL_FOG) - wrong. +<li>glColorTable() could produce a Mesa implementation error (bug 3135) +<li>RasterPos could get corrupted by color index rendering path +<li>Removed bad XTranslateCoordinates call when rendering to Pixmaps +<li>glPopAttrib() didn't properly restore GL_TEXTURE_GEN enable state +<li>fixed a few Darwin compilation problems +</ul> + + +<h2><a name="6.3.1">6.3.1</h2> +<p> +This was an intermediate release for X.org which wasn't otherwise released.) +</p> + + +<h2><a name="6.3.2">6.3.2 August 19, 2005</h2> +New: +<ul> +<li>The distribution now includes the DRI drivers and GLX code +</ul> +Changes: +<ul> +<li>Made the DRI "new" driver interface standard, remove old code +</ul> +Bug fixes: +<ul> +<li>GL_ARB_vertex/fragment_shader were mistakenly listed in the + extensions string +<li>negative relative addressing in vertex programs was broken +<li>update/fix SPARC assembly code for vertex transformation +<li>fixed memory leak when freeing GLX drawables/renderbuffers +<li>fixed display list memory leak +<li>the GL_PIXEL_MAP_I_TO_I table is now floating point, not integer +<li>wglGetProcAddress() didn't handle wgl-functions +<li>fixed glxext.h cross-compile issue (Colin Harrison) +<li>assorted DRI driver fixes +</ul> + + +<B> +NOTE: Changes for Mesa 6.4 and later are documented in the corresponding +<a href="relnotes.html">release notes</a> file. +</B> + + +</body> +</html> diff --git a/mesalib/docs/webmaster.html b/mesalib/docs/webmaster.html new file mode 100644 index 000000000..16f4dc803 --- /dev/null +++ b/mesalib/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>g</em><em>m</em><em>a</em><em>i</em><em>l</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> diff --git a/mesalib/docs/xlibdriver.html b/mesalib/docs/xlibdriver.html new file mode 100644 index 000000000..d95f4d579 --- /dev/null +++ b/mesalib/docs/xlibdriver.html @@ -0,0 +1,275 @@ +<HTML> + +<TITLE>Xlib Software Driver</TITLE> + +<link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<BODY> + +<H1>Xlib Software Driver</H1> + +<p> +Mesa's Xlib driver provides an emulation of the GLX interface so that +OpenGL programs which use the GLX API can render to any X display, even +those that don't support the GLX extension. +Effectively, the Xlib driver converts all OpenGL rendering into Xlib calls. +</p> + +<p> +The Xlib driver is the oldest Mesa driver and the most mature of Mesa's +software-only drivers. +</p> + +<p> +Since the Xlib driver <em>emulates</em> the GLX extension, it's not +totally conformant with a true GLX implementation. +The differences are fairly obscure, however. +</p> + +<p> +The unique features of the Xlib driver follows. +</p> + + +<H2>X Visual Selection</H2> +<p> +Mesa supports RGB(A) rendering into almost any X visual type and depth. +</p> +<p> +The glXChooseVisual function tries to choose the best X 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 <b>MESA_RGB_VISUAL</b> and +<b>MESA_CI_VISUAL</b> +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. +</p> + +<p> +The format of accepted values is: <code>visual-class depth</code> +</p> +<p> +Here are some examples: +</p> +<pre> + using csh: + % 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 bash: + $ export MESA_RGB_VISUAL="TrueColor 8" + $ export MESA_CI_VISUAL="PseudoColor 12" + $ export MESA_RGB_VISUAL="PseudoColor 8" +</pre> + + +<H2>Double Buffering</H2> +<p> +Mesa can use either an X Pixmap or XImage as the back color buffer when in +double-buffer mode. +The default is to use an XImage. +The <b>MESA_BACK_BUFFER</b> environment variable can override this. +The valid values for <b>MESA_BACK_BUFFER</b> are: <b>Pixmap</b> and +<b>XImage</b> (only the first letter is checked, case doesn't matter). +</p> + +<p> +Using XImage is almost always faster than a Pixmap since it resides in +the application's address space. +When glXSwapBuffers() is called, XPutImage() or XShmPutImage() is used +to transfer the XImage to the on-screen window. +</p> +<p> +A Pixmap may be faster when doing remote rendering of a simple scene. +Some OpenGL features will be very slow with a Pixmap (for example, blending +will require a round-trip message for pixel readback.) +</p> +<p> +Experiment with the MESA_BACK_BUFFER variable to see which is faster +for your application. +</p> + + +<H2>Colormaps</H2> +<p> +When using Mesa directly or with GLX, it's up to the application +writer to create a window with an appropriate colormap. The GLUT +toolkit tris to minimize colormap <em>flashing</em> 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. +</p> + +<p> +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 GLUT, set the +<b>MESA_PRIVATE_CMAP</b> environment variable. The value isn't +significant. +</p> + + +<H2>Gamma Correction</H2> +<p> +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 you believe that +Mesa's images are too dim, read on. +</p> + +<p> +Gamma correction is controlled with the <b>MESA_GAMMA</b> environment +variable. Its value is of the form <b>Gr Gg Gb</b> or just <b>G</b> 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: +</p> +<pre> + % export MESA_GAMMA="2.3 2.2 2.4" // separate R,G,B values + % export MESA_GAMMA="2.0" // same gamma for R,G,B +</pre> +<p> +The progs/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). +</p> + +<p> +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. +</p> + +<p> +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. +</p> + +<p> +For more information about gamma correction see: +<a href="http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html" +the Gamma FAQ</a> +</p> + + +<H2>Overlay Planes</H2> +<p> +Hardware overlay planes are supported by the Xlib driver. To +determine if your X server has overlay support you can test for the +SERVER_OVERLAY_VISUALS property: +</p> +<pre> + xprop -root | grep SERVER_OVERLAY_VISUALS +</pre> + + +<H2>HPCR Dithering</H2> +<p> +If you set the <b>MESA_HPCR_CLEAR</b> environment variable then dithering +will be used when clearing the color buffer. This is only applicable +to HP systems with the HPCR (Color Recovery) feature. +This incurs a small performance penalty. +</p> + + +<H2>Extensions</H2> +<p> +The following MESA-specific extensions are implemented in the Xlib driver. +</p> + +<h3>GLX_MESA_pixmap_colormap</h3> + +<p> +This extension adds the GLX function: +</p> +<pre> + GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual, + Pixmap pixmap, Colormap cmap ) +</pre> +<p> +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. +</p> +<p> +<a href="MESA_pixmap_colormap.spec">GLX_MESA_pixmap_colormap specification</a> +</p> + + +<h3>GLX_MESA_release_buffers</h3> +<p> +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. +</p> +<p> +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. +</p> +<p> +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: +</p> +<pre> + #ifdef GLX_MESA_release_buffers + glXReleaseBuffersMESA( dpy, window ); + #endif + XDestroyWindow( dpy, window ); +</pre> +<p> +<a href="MESA_release_buffers.spec">GLX_MESA_release_buffers specification</a> +</p> +<p> +This extension was added in Mesa 2.0. +</p> + +<H3>GLX_MESA_copy_sub_buffer</H3> +<p> +This extension adds the glXCopySubBufferMESA() function. It works +like glXSwapBuffers() but only copies a sub-region of the window +instead of the whole window. +</p> +<p> +<a href="MESA_copy_sub_buffer.spec">GLX_MESA_copy_sub_buffer specification</a> +</p> +<p> +This extension was added in Mesa 2.6 +</p> + +<h2>Summary of X-related environment variables</H2> +<pre> + 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) +</pre> + + +</body> +</html> |