CVS and fglrx -- success!

Ethan Glasser-Camp glasse at rpi.edu
Sun Mar 6 17:14:16 PST 2005


I foolishly attempted to try getting fglrx to work with CVS Xorg. I
managed to get it work. I'm going to post my success story, which starts
with an email [1] whose caveats you should bear in mind:

[1] http://lists.freedesktop.org/pipermail/xorg/2005-February/006049.html

It seems that the old format has undefined references that the new
module format doesn't allow. If you just use the gcc command line
specified in [1], you get undefined references to firegl_PM4Alloc.
Following advice in [2], I tore apart the libfglrxdrm.a and linked both
of those object files with fglrx_drv.o. Then I started getting undefined
symbols from XAA. Aha -- progress!

[2]
http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg21846.html

Once I linked in the right object file from XAA, those undefined symbols
went away, to be replaced with another set of undefined symbols (I think
it was from xf86Cursor). I linked in another object file and got another
set of undefined symbols, so I linked in another object file, which led
to another set of undefined symbols. At some point I was also getting
undefined symbols from fglrx_drv.o, which was conveniently in the
lib/modules/drivers/ directory where I was doing all this linking, so I
renamed it fglrx_drv_source.o. I kept linking in more and more object
files, until I realized that I would probably be linking in almost all
of Xorg. At this point I started linking in entire libraries. I didn't
expect that to work, because I figured the output should be statically
linked.

My final command line was:

cd /opt/Xorg-6.8/lib/modules/drivers &&\
sudo ld -Bsymbolic -static fglrx_drv_source.o\
~/software/xc/programs/Xserver/hw/xfree86/xaa/xaaInit.o\
~/software/sewfglrx-installer-8.10.19/FireGLdrm.o\
~/software/xc/programs/Xserver/hw/xfree86/ramdac/xf86Cursor.o\
~/software/sewfglrx-installer-8.10.19/module.o \
~/software/xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.o \
~/software/xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.o \
~/software/xc/programs/Xserver/hw/xfree86/vbe/vbe.o \
~/software/xc/programs/Xserver/hw/xfree86/i2c/xf86i2c.o\
~/software/xc/programs/Xserver/hw/xfree86/int10/generic.o \
~/software/xc/programs/Xserver/hw/xfree86/ddc/print_edid.o \
~/software/xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.o \
~/software/xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.o \
~/software/xc/programs/Xserver/hw/xfree86/xaa/libxaa.so \
~/software/xc/programs/Xserver/hw/xfree86/xaa/xaaPaintWin.o \
~/software/xc/programs/Xserver/hw/xfree86/int10/libint10.so \
-shared -o fglrx_drv.so

Following this, I got other undefined symbol errors in libfglrxdrm.a,
which I managed to get around by using a similar strategy and eventually
the command line:

cd /opt/Xorg-6.8/lib/modules/linux &&\
sudo ar -cr libfglrxdrm.a \
~/software/sewfglrx-installer-8.10.19/FireGLdrm.o \
~/software/sewfglrx-installer-8.10.19/module.o \
~/software/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.o


Note that:

1. I used ld instead of gcc, just because.
2. ~/software/xc/ is where I checked out the Xorg CVS code.
3. /opt/Xorg-6.8/ is where I installed the Xorg CVS code.
4. ~/software/sewfglrx-installer-8.10.19/ is one of two or three places
I had unpacked the unofficial ATI driver packages for Debian [3].
5. (Though libfglrxdrm.a gives you errors that indicate that maybe you
should link in xf86drmHashe.o too, if you do so you'll get duplicate
symbol errors -- so just leave it out and things seem to work out OK.)

[3] http://xoomer.virgilio.it/flavio.stanchina/debian/fglrx-installer.html

In other words, this shouldn't work for you at all, because this is how
I got things to work with my own peculiarly idiosyncratic setup. In
fact, it shouldn't even work for me. But I thought I'd share in case
someone could actually get some use from this.

With this setup I was able to run Crystal Space well, though jerkily,
which was the whole point the whole time. But I'm probably going to
forget about this whole mess for a while because it was a real pain to
get to, I have to shut down my old XFree86 server to use it (or get
terrible video corruption that will persist until a reboot), and I have
to use proprietary drivers. So I figured I'd ask -- are there plans to
support ATI's Mobility Radeon 9600 with OpenGL support and DRI in an
open source driver any time soon? How about over long-term? Are there
ways to watch this progress?

Thanks.

Ethan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
URL: <http://lists.x.org/archives/xorg/attachments/20050306/3d52708a/attachment.pgp>


More information about the xorg mailing list