nvc0: Add sanity checks for output buffer
[mesa/nouveau-pmpeg.git] / docs / README.CYGWIN
blob58d5af3e2933566105bd5064145f6d661bbd3a0f
2                           Mesa Cygwin/X11 Information
5 WARNING
6 =======
8 If you installed X11 (packages xorg-x11-devel and xorg-x11-bin-dlls ) with the 
9 latest setup.exe from Cygwin the GL (Mesa) libraries and include are already 
10 installed in /usr/X11R6. 
12 The following will explain how to "replace" them.
14 Installation
15 ============
17 How to compile Mesa on Cygwin/X11 systems:
19 1. Shared libs:
20     type 'make cygwin-sl'.
22     When finished, the Mesa DLL will be in the Mesa-x.y/lib/ and 
23     Mesa-x.y/bin directories.
26 2. Static libs:
27     type 'make cygwin-static'.
28     When finished, the Mesa libraries will be in the Mesa-x.y/lib/ directory.
30 Header and library files:
31    After you've compiled Mesa and tried the demos I recommend the following
32    procedure for "installing" Mesa.
34    Copy the Mesa include/GL directory to /usr/X11R6/include:
35         cp -a include/GL /usr/X11R6/include
37    Copy the Mesa library files to /usr/X11R6/lib:
38         cp -a lib/* /usr/X11R6ocal/lib
40    Copy the Mesa bin files (used by the DLL stuff) to /usr/X11R6/bin:
41         cp -a lib/cyg* /usr/X11R6/bin
43 Xt/Motif widgets:
44    If you want to use Mesa or OpenGL in your Xt/Motif program you can build
45    the widgets found in either the widgets-mesa or widgets-sgi directories.
46    The former were written for Mesa and the later are the original SGI
47    widgets.  Look in those directories for more information.
48    For the Motif widgets you must have downloaded the lesstif package.
51 Using the library
52 =================
54 Configuration options:
55    The file src/mesa/main/config.h has many parameters which you can adjust
56    such as maximum number of lights, clipping planes, maximum texture size,
57    etc.  In particular, you may want to change DEPTH_BITS from 16 to 32
58    if a 16-bit depth buffer isn't precise enough for your application.
61 Shared libraries:
62    If you compile shared libraries (Win32 DLLS) you may have to set an 
63    environment variable to specify where the Mesa libraries are located.  
64    Set the PATH variable to include /your-dir/Mesa-2.6/bin.   
65    Otherwise, when you try to run a demo it may fail with a message saying 
66    that one or more DLL couldn't be found.
69 Xt/Motif Widgets:
70    Two versions of the Xt/Motif OpenGL drawing area widgets are included:
72       widgets-sgi/      SGI's stock widgets
73       widgets-mesa/     Mesa-tuned widgets
75    Look in those directories for details
78 Togl:
79    Togl is an OpenGL/Mesa widget for Tcl/Tk.
80    See http://togl.sourceforge.net for more information.
84 X Display Modes:
85    Mesa supports RGB(A) rendering into almost any X visual type and depth.
87    The glXChooseVisual function tries its best to pick an appropriate visual
88    for the given attribute list.  However, if this doesn't suit your needs
89    you can force Mesa to use any X visual you want (any supported by your
90    X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL
91    environment variables.  When an RGB visual is requested, glXChooseVisual
92    will first look if the MESA_RGB_VISUAL variable is defined.  If so, it
93    will try to use the specified visual.  Similarly, when a color index
94    visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL
95    variable.
97    The format of accepted values is:  <visual-class> <depth>
98    Here are some examples:
100    using the C-shell:
101         % setenv MESA_RGB_VISUAL "TrueColor 8"          // 8-bit TrueColor
102         % setenv MESA_CI_VISUAL "PseudoColor 12"        // 12-bit PseudoColor
103         % setenv MESA_RGB_VISUAL "PseudoColor 8"        // 8-bit PseudoColor
105    using the KornShell:
106         $ export MESA_RGB_VISUAL="TrueColor 8"
107         $ export MESA_CI_VISUAL="PseudoColor 12"
108         $ export MESA_RGB_VISUAL="PseudoColor 8"
111 Double buffering:
112    Mesa can use either an X Pixmap or XImage as the backbuffer when in
113    double buffer mode.  Using GLX, the default is to use an XImage.  The
114    MESA_BACK_BUFFER environment variable can override this.  The valid
115    values for MESA_BACK_BUFFER are:  Pixmap and XImage (only the first
116    letter is checked, case doesn't matter).
118    A pixmap is faster when drawing simple lines and polygons while an
119    XImage is faster when Mesa has to do pixel-by-pixel rendering.  If you
120    need depth buffering the XImage will almost surely be faster.  Exper-
121    iment with the MESA_BACK_BUFFER variable to see which is faster for
122    your application.  
125 Colormaps:
126    When using Mesa directly or with GLX, it's up to the application writer
127    to create a window with an appropriate colormap.  The aux, tk, and GLUT
128    toolkits try to minimize colormap "flashing" by sharing colormaps when
129    possible.  Specifically, if the visual and depth of the window matches
130    that of the root window, the root window's colormap will be shared by
131    the Mesa window.  Otherwise, a new, private colormap will be allocated.
133    When sharing the root colormap, Mesa may be unable to allocate the colors
134    it needs, resulting in poor color quality.  This can happen when a
135    large number of colorcells in the root colormap are already allocated.
136    To prevent colormap sharing in aux, tk and GLUT, define the environment
137    variable MESA_PRIVATE_CMAP.  The value isn't significant.
140 Gamma correction:
141    To compensate for the nonlinear relationship between pixel values
142    and displayed intensities, there is a gamma correction feature in
143    Mesa.  Some systems, such as Silicon Graphics, support gamma
144    correction in hardware (man gamma) so you won't need to use Mesa's
145    gamma facility.  Other systems, however, may need gamma adjustment
146    to produce images which look correct.  If in the past you thought
147    Mesa's images were too dim, read on.
149    Gamma correction is controlled with the MESA_GAMMA environment
150    variable.  Its value is of the form "Gr Gg Gb" or just "G" where
151    Gr is the red gamma value, Gg is the green gamma value, Gb is the
152    blue gamma value and G is one gamma value to use for all three
153    channels.  Each value is a positive real number typically in the
154    range 1.0 to 2.5.  The defaults are all 1.0, effectively disabling
155    gamma correction.  Examples using csh:
157         % setenv MESA_GAMMA "2.3 2.2 2.4"       // separate R,G,B values
158         % setenv MESA_GAMMA "2.0"               // same gamma for R,G,B
160    The demos/gamma.c program may help you to determine reasonable gamma
161    value for your display.  With correct gamma values, the color intensities
162    displayed in the top row (drawn by dithering) should nearly match those
163    in the bottom row (drawn as grays).
165    Alex De Bruyn reports that gamma values of 1.6, 1.6 and 1.9 work well
166    on HP displays using the HP-ColorRecovery technology.
168    Mesa implements gamma correction with a lookup table which translates
169    a "linear" pixel value to a gamma-corrected pixel value.  There is a
170    small performance penalty.  Gamma correction only works in RGB mode.
171    Also be aware that pixel values read back from the frame buffer will
172    not be "un-corrected" so glReadPixels may not return the same data
173    drawn with glDrawPixels.
175    For more information about gamma correction see:
176    http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
179 Overlay Planes
181    Overlay planes in the frame buffer are supported by Mesa but require
182    hardware and X server support.  To determine if your X server has
183    overlay support you can test for the SERVER_OVERLAY_VISUALS property:
185         xprop -root | grep SERVER_OVERLAY_VISUALS
188 HPCR glClear(GL_COLOR_BUFFER_BIT) dithering
190    If you set the MESA_HPCR_CLEAR environment variable then dithering
191    will be used when clearing the color buffer.  This is only applicable
192    to HP systems with the HPCR (Color Recovery) system.
195 Extensions
196 ==========
197    There are three Mesa-specific GLX extensions at this time.
199    GLX_MESA_pixmap_colormap 
201       This extension adds the GLX function:
203          GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
204                                            Pixmap pixmap, Colormap cmap )
206       It is an alternative to the standard glXCreateGLXPixmap() function.
207       Since Mesa supports RGB rendering into any X visual, not just True-
208       Color or DirectColor, Mesa needs colormap information to convert RGB
209       values into pixel values.  An X window carries this information but a
210       pixmap does not.  This function associates a colormap to a GLX pixmap.
211       See the xdemos/glxpixmap.c file for an example of how to use this
212       extension.
214    GLX_MESA_release_buffers
216       Mesa associates a set of ancillary (depth, accumulation, stencil and
217       alpha) buffers with each X window it draws into.  These ancillary
218       buffers are allocated for each X window the first time the X window
219       is passed to glXMakeCurrent().  Mesa, however, can't detect when an
220       X window has been destroyed in order to free the ancillary buffers.
222       The best it can do is to check for recently destroyed windows whenever
223       the client calls the glXCreateContext() or glXDestroyContext()
224       functions.  This may not be sufficient in all situations though.
226       The GLX_MESA_release_buffers extension allows a client to explicitly
227       deallocate the ancillary buffers by calling glxReleaseBuffersMESA()
228       just before an X window is destroyed.  For example:
230          #ifdef GLX_MESA_release_buffers
231             glXReleaseBuffersMESA( dpy, window );
232          #endif
233          XDestroyWindow( dpy, window );
235       This extension is new in Mesa 2.0.
237    GLX_MESA_copy_sub_buffer
239       This extension adds the glXCopySubBufferMESA() function.  It works
240       like glXSwapBuffers() but only copies a sub-region of the window
241       instead of the whole window.
243       This extension is new in Mesa version 2.6
247 Summary of X-related environment variables:
248    MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
249    MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
250    MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
251    MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
252    MESA_GAMMA - gamma correction coefficients (X only)
255 ----------------------------------------------------------------------
256 README.CYGWIN - lassauge April 2004 - based on README.X11