Main
News
FAQ
Install
Troubleshooting
Files/PRs
Benchmarks
Known Problems

FAQ:

Q: What is DRI, DRM, DDX?
A: DRM stands for Direct Rendering Modules and is the kernel modules installed by the drm-kmod port. These provide support for the DRI (Direct Rendering Infrastructure) in XFree86 4.0 to provide fast, secure hardware 3d acceleration. Sometimes "DRI" is used to refer to the entire DRI system (X Server DDX, DRM, client DRI modules), sometimes the userland parts, or sometimes just for the client 3d modules (/usr/X11R6/lib/modules/dri/*_dri.so) which are loaded by programs linked with libGL. The DDX is the card-specific module (/usr/X11R6/lib/modules/drivers/*.o) in the X Server that provides 2d support and infrastructure for the client side part of the DRI.

Q: I followed the instructions, but any 3d program I run is really slow. What's wrong?
A: Well, it means something (almost anything) was wrong with your configuration. Go through the Troubleshooting page, and email me if you can't figure out the problem with that.

Q: When I try to load the modules, I get "can't load /usr/local/lib/drm/r128.ko: Exec format error" or something similar.
A: This highly useful (grumble) error message actually means that a symbol from the module wasn't resolved. This is usually because of missing module dependencies. In theory the module would pay attention to its dependencies and autoload agp or linux as necessary, but at least on -stable it doesn't. Add the module lines mentioned in the kernel section of the Install page.

Q: Does the 3dfx driver need AGP? Does it help to have AGP loaded?
A: No. The 3dfx driver never uses AGP, even if you have an AGP card. It may be possible that with a lot of work glide could be updated to support AGP, but at the moment it doesn't, and I don't expect gains to be significant.

Q: When I try to run a Glide program, it complains about SST not being found or fails in some other way.
A: The Glide used for the DRI is not the same Glide that was used for Glide applications. The DRI Glide library does not support being used except by the DRI and traditional Glide libraries cannot be used under XFree86-4. If you installed the DRI glide from ports/graphics/glide3, remove it and use ports/x11-servers/driglide

Q: When I start X with the DRI enabled, the machine just reboots (or hangs).
A: You probably have -stable before 4.6 and an AMD processor and are experiencing one of a couple of problems with AMD or VIA chipsets. Update to 4.6-stable.

Q: When I enable DRI, I get a sig11 from X, and the log includes a line like "Symbol vbeFree from module /usr/X11R6/lib/modules/drivers/mga_drv.o is unresolved!"
A: For some unknown reason, sometimes the drivers aren't automatically picking up all the dependencies they need. It can usually be fixed by adding more Load lines to the Modules section of XF86Config, like the ones below. For a list of modules that you might be interested in for fixing this, look in /usr/X11R6/lib/modules. To find a specific symbol, the nm command should help. I think I have still seen this error on -stable with 4.2.0.

Load "vbe"
Load "int10"
Load "drm"

Q: When I unload the modules my system panics.
A: It's fixed in -current and DRI CVS, but hasn't been backported to drm-kmod.

Q: I installed XFree86 4.2.0 and now my system crashes when I start with DRI enabled.
A: You need drm-kmod-0.9.6, available in ports. It fixes a (stupid) bug I made in the earlier drm-kmod ports.

Q: With my ATI card and DRI enabled, I often get these errors in my system log: "error: [drm:radeon_cp_indirect] *ERROR* process 97092 using buffer owned by 0"
A: This is a bug in the DRI where the X Server is using buffers the kernel thinks is unused. Luckily it doesn't cause any problems besides some log messages, and a little graphical mess for some people. Fixed in DRI CVS.

Q: I have the agp module loaded, but when I load the DRM it complains that agp was not available.
A: There is a problem with the AGP code in FreeBSD where if the module is loaded after boot time it won't work. Instead, include it in your kernel config (device agp) or add agp_load="YES" to your /boot/loader.conf