3 <TITLE>Mesa fbdev/DRI Environment
</TITLE>
5 <link rel=
"stylesheet" type=
"text/css" href=
"mesa.css"></head>
9 <center><H1>Mesa fbdev/DRI Drivers
</H1></center>
12 <H1>1. Introduction
</H1>
15 The fbdev/DRI sub-project within Mesa brings hardware accelerated OpenGL
16 rendering to the Linux fbdev environment.
17 The X Window System / XFree86 is not needed.
21 Basically, the
<a href=
"http://dri.sf.net/">DRI
</a> drivers for hardware
22 accelerated OpenGL for XFree86 have been ported to fbdev so that X is
24 This means fbdev/DRI works in full-screen mode only.
28 DRI driver writers may find this simplified environment easier to work in,
29 compared to the full XFree86/DRI environment.
33 Much of the work for this project has been done by Jon Smirl and
38 To use fbdev/DRI, you'll need a Linux
2.4 or
2.6 kernel.
41 <h3>Background Info
</h3>
44 The Mesa-based DRI drivers used to be hosted in the DRI tree (which is
45 basically a copy of the XFree86 tree).
46 Since the Mesa-based DRI drivers are moreso
"Mesa drivers" than
"XFree86
47 drivers" and the fact that with some work, the drivers could be used
48 without X, the driver code was moved into the Mesa tree.
52 So now the DRI drivers can be compiled for two different environments:
54 To build the drivers for XFree86, one has to download/build the DRI
56 Eventually, we'd like to be able to build the drivers for XFree86 outside
57 of the XFree86/DRI trees.
63 <h1>2. Compilation
</h1>
65 <h2>2.1 Compiling the DRM modules
</h2>
68 First, you'll need the DRM (Direct Rendering Manager) kernel module sources.
69 They're found in a module of the DRI CVS tree.
70 To obtain the code do the following:
73 cvs -d:pserver:anonymous@pdx.freedesktop.org:/cvs/dri login
76 Press Enter/Return when prompted for a password. Then,
79 cvs -d:pserver:anonymous@pdx.freedesktop.org:/cvs/dri co drm
83 Compile the DRM kernel modules:
91 Note: you may need to be root in order to make a few symlinks.
94 When compilation is done, you should have at least the following
111 You'll probably want to copy/move them into your kernel module directory
112 (for example:
<code>/lib/modules/
2.4.18-
14/kernel/drivers/char/drm/
</code>).
117 <h2>2.2 Compiling the Mesa drivers
</h2>
120 Begin by editing the
<code>Mesa/configs/default
</code> file to set
121 the
<code>DRM_SOURCE_PATH
</code> variable.
122 Set it to the location where the DRM module sources are located.
123 For example, if your current directory in step
2.1 was
<code>/home/fred/
</code>
124 set DRM_SOURCE_PATH to
<code>/home/fred/drm
</code>
128 Next, assuming you're starting with a fresh Mesa CVS checkout,
136 If you previously built the source tree, run
<code>make realclean
</code>
137 first to remove the old object files.
141 When this is finished, check the
<code>Mesa/lib/
</code> directory
142 to verify that the following files were made:
146 <li><code>libGL.so
.1.2</code> - the client-side OpenGL library
147 (and a few symlinks to it).
148 <li><code>libGLU.so
.1.1</code> - the GLU library (and a few symlinks to it).
149 <li><code>libglut.so
.3.7</code> - the GLUT library (and a few symlinks to it).
150 <li><code>mga_dri.so
</code> - DRI driver for Matrox G200/G400 cards.
151 <li><code>r128_dri.so
</code> - DRI driver for ATI Rage
128 cards.
152 <li><code>r200_dri.so
</code> - DRI driver for ATI R200 Radeon cards.
153 <li><code>radeon_dri.so
</code> - DRI driver for original ATI Radeon cards.
154 <li><code>i810_dri.so
</code> - DRI driver for Intel i810/i815 chips.
155 <li><code>i830_dri.so
</code> - DRI driver for Intel i830/i845 chips.
156 <li><code>mga_dri.so
</code> - DRI driver for Matrox G200/G400 cards.
157 <li><code>sis_dri.so
</code> - DRI driver for SIS cards.
158 <li><code>tdfx_dri.so
</code> - DRI driver for
3dfx Voodoo
3/
4/
5 cards.
159 <li><code>gamma_dri.so
</code> - DRI driver for
3Dlabs gamma cards.
160 <li><code>fb_dri.so
</code> - software-only fbdev driver.
161 <li><code>miniglx.conf
</code> - configuration file for the MiniGLX interface
165 <h1>3. Using fbdev/DRI
</h1>
168 If XFree86 is currently running, exit/stop the X server so you're
169 working from the console.
173 <h2>3.1 Load Kernel Modules
</h2>
176 You'll need to load the kernel modules specific to your graphics hardware.
177 Typically, this consists of the agpgart module, an fbdev driver module
178 and the DRM kernel module (from step
2.1).
183 If you have ATI Radeon/R200 hardware, run as root:
186 modprobe agpgart # the AGP GART module
187 modprobe radeonfb # the Radeon fbdev driver
188 modprobe radeon # the Radeon DRI kernel module
192 If you have ATI Rage
128 hardware, run as root:
195 modprobe agpgart # the AGP GART module
196 modprobe aty128fb # the Rage
128 fbdev driver
197 modprobe r128 # the Rage
128 DRI kernel module
201 If you have Matrox G200/G400 hardware, run as root:
204 modprobe agpgart # the AGP GART module
205 modprobe mgafb # the Matrox fbdev driver
206 modprobe mga # the Matrox DRI kernel module
210 Then run
<code>lsmod
</code> to be sure the modules are loaded.
211 For a Radeon card, you should see something like this:
214 Module Size Used by Not tainted
215 radeon
110308 0 (unused)
216 radeonfb
21900 0 (unused)
222 <h2>3.2 Configuration File
</h2>
225 The
<code>Mesa/lib/miniglx.conf
</code> file should be installed
226 in
<code>/etc/
</code>.
230 Edit
<code>/etc/miniglx.conf
</code> to be sure it's set up correctly
232 Comments in the file explain the options.
236 <h2>3.3 Running fbdev/DRI Programs
</h2>
239 Make sure your LD_LIBRARY_PATH environment variable is set to the
240 <code>Mesa/lib/
</code> directory.
244 Change to the
<code>Mesa/progs/miniglx/
</code> directory and
245 start the sample_server program in the background:
252 Then try running the
<code>miniglxtest
</code> program:
258 You should see a rotating quadrilateral which changes color as it rotates.
259 It will exit automatically after a bit.
263 If you run other tests in the miniglx/ directory, you may want to run
264 them from a remote shell so that you can stop them with ctrl-C.
269 <h1>4.0 Troubleshooting
</h1>
272 If you try to run miniglxtest and get the following:
275 [miniglx] failed to probe chipset
276 connect: Connection refused
277 server connection lost
280 It means that the sample_server process is not running.
286 <h1>5.0 Programming Information
</h1>
289 The full OpenGL API is available with fbdev/DRI.
293 OpenGL/Mesa is interfaced to fbdev via the
<a href=
"MiniGLX.html">MiniGLX
</a>
295 MiniGLX is a subset of Xlib and GLX API functions which provides just
296 enough functionality to setup OpenGL rendering and respond to simple
301 Since MiniGLX is a subset of the usual Xlib and GLX APIs, programs written
302 to the MiniGLX API can also be run on full Xlib/GLX implementations.
303 This allows some degree of flexibility for software development and testing.
307 However, the MiniGLX API is not binary-compatible with full Xlib/GLX.
308 Some of the structures are different and some macros/functions work
310 See the
<code>GL/miniglx.h
</code> header file for details.