<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-&gt;flags &amp; DRM_MASTER) &amp;&amp; !priv-&gt;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 &amp;
</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>
