Known Problems


2002-04-26: I've posted an i830 patch, based on moto kawasaki's, which I hope improves on his i830 work, and also includes a bugfix related to the gatt allocation for i810 when the agp aperture is 32MB.

2002-04-22: I ported the PCI GART code to the point of compiling. As with all of the other ported code the last few days, I think it's correct but there's a high chance it won't work. It's up in the experimental code in the files section. I have also done my introductory commit, so soon I hope I can get working on the import to src/sys.

2002-04-20: The tcldrm code ended up including some experimental code I was working on that made it nonfunctional. I think it is now. I wish I had the time to test all of this stuff, but I've been too busy with all this code and learning about memory management and AGP. They both (normal and tcl) compile on -current with no warnings now.

2002-04-18: Did some work on i810, i830, and gamma drivers today. All of them are now compiling and I believe they are correct, but they are completely untested. The new files are in the TCL code (i.e. not what's going into -current yet). Be sure to read the new DRM in kernel instructions (they're different than those below) if you are using the new code.

2002-04-17 (2): Okay, I got the multiple driver static compiling working, and cleaned up the sysctl code at the same time. The new files are in the files list (with -2 tagged on filenames). The only issue is the static r128drm config failing, which I still don't understand. The other drivers can be added into your kernel config file with:

device tdfxdrm
device radeondrm
device mgadrm
device gammadrm
Please be sure to remove drm-kmod port and script if you use the new code. If you use modules, XFree86 will kldload them automatically for you.

2002-04-17: I'm pretty busy outside of FreeBSD right now, so I'm posting the "DRM in sys/" stuff I have so far. It's all at the top of the files section, and hasn't been tested besides compiling for a little while. To get it installed, cd to /usr/src. Untar the -modules.tar.gz file. Apply the -*conf.diff file for your branch of FreeBSD. Then, choose one of -drm.tar.gz, -mesa4.tar.gz, or -tcl.tar.gz to use. Untar it, and if you did mesa4 or tcl, rename the directory it created to "drm" (you should then have sys/dev/drm). Currently you can compile 1 of the drivers into a kernel (there is a name colliding when you have more than one) or compile the modules. "options DRM_LINUX" will enable linux compatibility for statically compiled drivers, but it isn't available for modules-only versions. For some reason config doesn't like r128drm being statically compiled. I don't know why. Remember if you use modules that you have to have agp loaded at boot time -- it doesn't work after entering multiuser. The tcl branch is interesting, but for gears at least it is slower than XF86 4.2.0 and 0.9.5 drm-kmod. When I get compiling in sys/ working a little better I'll make an install page and ask for testers on -multimedia.

2002-04-13: I haven't posted the news here for a while. Around the 6th I got the Radeon TCL DRM working on FreeBSD, with mesa4 for the other drivers. There are still some backwards-compatibility issues with this DRM, but things are looking much better than they have since my failure with mesa4 over winter break.
In other big news, the DRM may be going into the FreeBSD sys tree. I had been avoiding doing that because of version incompatibility in the past with DRM upgrades, but the DRI developers are now very compatibility-conscious, so hopefully soon we will have DRM in the system. This should help keep it up to date for -current, and help people with keeping their DRM in sync with their kernel. Expect diffs to test to be up here soon.

2002-03-21: Finals are over. Today I have just been working on cleaning things up. PRs are in for 3dfx compiling in 4.2.0 (always turned on, Glide is not needed until you actually run some 3d app) along with a PR for the Glide port. Install instructions are fixed.

2002-03-19: Finals are almost over and life is becoming almost sane again. XFree86 4.2.0 hit the tree immediately before finals, and I'm just now catching up with patches for the new metaport system. If you use 4.2.0, please try applying the changes from ports/36121 when you compile. Remeber that you need to use portupgrade (portupgrade -rN XFree86-4 I think is the command to get it working right ) and don't try to rely on the metaport (x11/XFree86-4) to pick up the new versions for you. Install drm-kmod-0.9.5 or you will get crashes when you enable DRI. I haven't made a 3dfx compiling patch for the new 4.2.0 port, but it shouldn't be hard and is the next thing on my list (the old patch was broken for some reason, so it's the status quo). After that would probably be the task of getting glide to compile a v3 and a v5 lib so we could have 3dfx support out of the box. Updated the FAQ and People's Status.

2002-01-30: New drm-kmod is up that fixes compatibility with XFree86 4.2.0. Also includes PCI IDs for newer cards (Radeon 7x00, a few misc. ATI cards, G550). I haven't tested it with 4.1.0, but there was only one bugfix change in the new code, and it was definitely a bug on my part. For 4.2.0 we need to get the linux_dri libraries updated and hopefully get the glide3 port to produce to libglides (one for h3 and another for h5). Also updated the benchmarks.

"People's Status" is not updated because my mailer (kmail) is crashing when I move some messages around. If only evolution wasn't more unstable...

2002-01-13: Back from break, getting caught up. Made a new glide3 port that should fix some of the crashing bugs seen before, along with fixing the obvious automake stuff. Updated the page, particularly the install instructions.

2001-12-04: I am asking everyone who can to submit their status with the DRI so it will be easier to track problems, particularly related to motherboards or kmod versus ports/CVS issues. The glide PR has been updated to fix compiling on -current and quiet down the voodoo3/banshee on some cards.

2001-11-29: The site has been split into a few different pages. It isn't so long to scroll through now. Also, added new patches for the kernel modules and a pr for ports to fix linux compatibility for Radeon/R128 (and maybe more) and to quiet down the module loading a little.

2001-11-07: I updated the page with more instructions for 3dfx users and links to some important PRs related to the DRI. I think that mixing XFree-4.1.0 and drm-kmod (bsd-2-0-0-branch modules) may cause hangs, so CVS is recommended for MGA DRI until I can look into what has changed.

2001-10-27: I have sent in a port of "linux-dri", libraries and other things for getting DRI for linux emulation. Also, there is an update for drm-kmod to 0.9.3 which I expect to be committed soon which speeds up rage128 chips and may help the 2d Radeon speeds. Watch for it in CVS, or check the mail archives for it, then tell me if it helps your Rage128/Radeon/MGA card.

2001-10-06: New patch up allows Katmai (SSE) instructions to be used on Pentium 3 systems with CPU_ENABLE_SSE in their kernel config file. Speedups were on the order of 1/2% in the mesa demos, but it may be more important in more geometry-intensive apps. Update: I screwed up reading the source, SSE was enabled so my patch only disabled SSE in the case where the CPU had SSE but the kernel did not support it.

2001-10-05: Alan Hourihane had already done KSE updates, so I've grabbed the code and made a port of it again. It should now work on -current. I have submitted the drm-kmod port and I'm looking at making the changes to XFree86-4 port to build DRI modules by default.

2001-10-04: Update for tdfx to grab stipple stuff on all platforms. It's required, so don't ifdef it. Besides, the code is not platform-specific. However, glide still ifdefs it, so you may need to strip "DRI_BUILD" or "ifdef linux " lines from your glide headers to get it to compile. Code will be coming soon for post-KSE compiling on -current.

2001-09-20: I'm now at the University of Oregon, which is great. Downloading stuff is now about 6x faster. (Update: It turns out it's my cheapo netcard. Never buy realtek 8139s. After forcing 10bT 1/2duplex, I get 150k/s downloads). After some issues with X crashing on me, I have updated the page. Remember, when your system goes down while compiling critical software, make clean and try again. Don't just continue. The CVS is working again, but requires XFree86 CVS installed to work. The FreeBSD port is no longer sufficient for DRI CVS compiling.

2001-09-11: The DRI tree now has the directories it needed, and I am working on compiling again. The port has been updated to fix the rc script for unlodaing. The patches are now in CVS.

2001-09-10: Recently the X-DRI tree was trimmed of some non-DRI related libraries. However, something has gone wrong and either too much was trimmed, or I am just incorrectly thinking some of the missing stuff was essential. Either way, don't try to build the tree quite yet. However, I have new patches for the kernel modules, which still compile. Included is fixing compiling on -current, working r128, and preparation for an upcoming patch to include KSE support. I have also made a port of the kernel modules, which is listed above under patches. It will get most hardware (all? I'm not sure) working with a stock XFree86 4.1.0 from ports. I haven't tried it with stock XFree86, only against my DRI installation, because getting the ${BIGNUM} megs of XFree86 release through my 28.8 connection takes longer than I'm willing to spend. In a week I'll be on a big pipe at the University of Oregon, so I'll wait until then. Mesa demos were also updated -- they were against the wrong libGLU.

2001-08-25: Alan Hourihane has been doing a lot of work on the CVS, and the compile got broken. However, we now have had a trunk merge, and we might have 3dfx multihead ability now (multihead as in multiple X servers with DRI, not xinerama multihead). Patches to get 3dfx (and hopefully the rest, but untested right now) working are up.

2001-07-17: I'm in the process of moving my stuff over to the UofO servers now. Please update bookmarks and addressbook entries. The Radeon works, from a report I received. It kills 2d performance, though. You may want to try "UseCCEFor2d" "TRUE" for Radeon and R128, which may help with some issues. If this helps you with speed, please mail me so I can know.

2001-07-10: Alexander N. Kabaev found what the weird mapbufs bug was. We weren't initializing an argument to vm_mmap that needed to be initialized. Why the code ever worked (and why it only did when we modified bits of other unrelated code) I don't know. Still, this will help reduce problems with all non-3dfx hardware. New patches are up which include the fix, along with some old cleanups, warning fixes, and the more independent probing code with a lot of PCI IDs. Please test on Radeon and Gamma hardware (or r128, which I haven't heard from for a bit, too) and report.

2001-06-28: XFree86 4.1.0 is now in ports, and it has no support for FreeBSD DRI. There was a trunk merge recently in SourceForge CVS, so we now are running XFree86 4.1.0 code, but with BSD support. However, I have a report of issues with MGA hanging in the kernel. 3dfx is still working, but I have to test the MGA again. Code is in the patches for Radeon and Gamma, and anyone who would be willing to try them out and report back would help a lot. I have decided to host binaries of the kernel modules, and if I can I'll put up binaries of the other parts required for DRI. I think the i810 and Gamma will be in better shape for us when the mesa-3-5-branch is merged, but that won't be happening for a while, I don't think (though I am looking at that code BSD-wise now). I have also been working on a Glide cleanup, and have partially V3/V5 merged code, builds and installs both libraries, and has Bill White's V5 SLI code merged (which was unfinished, unfortunately, but at least it's merged for history). I hope to get that tarred up and hosted here soon too, along with patches to 3dfx to load the proper library according to the hardware.

2001-06-03: The Rage 128 is working, from reports I have received. The newest patches include a "weird mapbufs bug" bit of code that just prints to the kernel before doing mapfs. Why this has any effect on whether or not the mmap succeeds, I don't know, but it lets us run with debug off on non-tdfx cards. I have also included code to get radeon compiling, and all that might be needed is adding PCI IDs to the probe routine in radeon_drv.c. All of the probe routines really need to get updated with more cards. Diffs are welcome.

2001-05-26: The Voodoo5 is working with a bad hack. A good hack is coming down the pipes from the multihead branch. The V5 was crashing on GL programs because the tdfx client module was not getting the V5 glide extensions loaded. My hack was to edit g3ext.c and change the first NULL of the dlopen to the path to my glide library ("/usr/X11R6/lib/"). It seems like they should have been loaded anyway, but it may just have been differences in dlopen between linux and FreeBSD.

The Rage 128 almost works, apparently. There are errors when debugging is disabled, just like for the MGA. To enable debugging, make sure that DRM_DEBUG_CODE is set to 1 in drmP.h, and that the #if statement turns on the debug flag in the drm_init.h file. I am unclear whether acceleration actually did work with the code enabled.

2001-05-23: New patches are up which get the modules compiling again, and also gets the r128 module to compile. Loading and running are not tested due to lack of r128. AGP only, because the pcigart has not been ported to fbsd yet. Anyone with an r128 is invited to try the latest code and report back.

2001-05-15: Alan Hourihane has done some great work on the BSD-Linux merge. MGA and tdfx are now working to some extent. I think I found a bug with handling AGP for the MGA, and I have now successfully run X and 3d clients several times in a row without crashing. Unloading and reloading the module and starting X again had some bad effects, though. Patches are up.

2001-05-03: Alan Hourihane has started merging the BSD and Linux kernel modules together, and I'm surprised at how clean it's turning out. I've put up diffs against CVS as of today with code that compiles, although it's untested. Check out bsd-2-0-0-branch from XFree-DRI for the main source. The previous MGA code was causing memory allocations to fail, thus the odd errors, though I haven't figured out why the code was causing that to happen. Hopefully it won't do it again in the new codebase.

2001-03-20: Well, the MGA code doesn't panic any more. I really need to figure out how to do linked lists right, because I seem to botch handling them all the time. Now X dies after initing the drm with:

Fatal server error:
failed to create scratch GCs
I also noticed that the alloc_pages call doesn't seem to be allocating as much as it should, I think (it was passing a number of pages, not a number of bytes). I changed it, and I think it's right. The latest code is up, again untested on tdfx and not working on mga but a lot closer. I hope to work on it more, particularly over spring break.

2001-03-18: I've received a G400 from Stephen Hocking for working on support for it in FreeBSD. Code is up with my progress on porting BSD MGA to templates. It panics for MGA and may not work with 3dfx, but it has some progress on the port.

2001-03-08: Updated the template code to the latest from Linux. In-kernel version works now, along with the module. Linux compat untested. (time to re-download the linux XFree4 stuff. Never rm -Rf /usr/ports with your backup distfiles NFS-mounted in there). The tdfx works beautifully on XFree CVS and XFree-DRI CVS trunk.

2001-03-07: Updated for -stable. Code now uses the templated DRM system from Gareth Hughes. MGA support no longer in there, but should be not too hard for someone with access to a card.

2001-01-06: Updated Glide3 diff. Includes some changes that make the h5 tree compile. Made a little friendlier, changed most of the GLIDE_PLATFORM & GLIDE_OS_UNIX instead to check for #ifdef DRI_BUILD from config.h, and removed the makefile kludges for the 3 files in h3/glide3/src so symlinks are unneeded. (uses config.h and DRI_BUILD now).

2001-01-04: First posted