<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>
