Pegasos II + Radeon 9000: No DRI and wrong colours for OpenGL
Michel Dänzer
michel at daenzer.net
Mon Jun 15 07:41:57 PDT 2009
On Sun, 2009-06-14 at 20:48 +0200, Johannes Geiss wrote:
>
> I did a little investigation of this problem and saw this:
>
> xorg-server-1.5.3-r6 has a library called libglx.so. This library uses
>
> drmOpenOnce(NULL, "pci:0001:01:08.0", ...)
>
> to get the graphics card.
>
> lspci reports
>
> 0001:01:08.0 VGA compatible controller:
> ATI Technologies Inc Radeon RV250 If [Radeon 9000] (rev 01)
>
> So the PCI Bus ID seems to be correct.
>
> libdrm-2.4.5 has the function drmOpenOnce(). This function goes down to
> drmOpen(NULL, "pci:0001:01:08.0") and
> drmOpenByBusid("pci:0001:01:08.0").
>
> Now drmGetBusid(fd) is called and returns "pci:0000:01:08.0". Which is
> wrong, because it differs from the original PCI Bus ID. So my graphics
> card will not be used with hardware accelerated OpenGL.
>
> drmGetBusid() calls the kernel module drm via IOCTL
> DRM_IOCTL_GET_UNIQUE. (see file drm_ioc32.c). So is it a bug in the
> kernel?
Yes, due to the traditional inability of userspace to deal with PCI
domains != 0, the kernel DRM macro drm_get_pci_domain() in drmP.h is
still hardcoded to 0. This needs to be fixed now; the problem is that
just fixing the macro would break old userspace, a proper fix will need
to involve DRM userspace interface versioning.
--
Earthling Michel Dänzer | http://www.vmware.com
Libre software enthusiast | Debian, X and DRI developer
More information about the xorg
mailing list