DRI für Radeon Mobility HD2600

franco98

NetBSDler aus Leidenschaft
Hallo NetBSD-Fans,

ich habe so eben meine HD2600 unter NetBSD-5.0.1 mit leicht abgewandelten GENERIC-Kernel mit DRI-Unterstützung zum Laufen gebracht.

Bis dahin war es aber ein steiniger Weg:

1. Unter FreeBSD-7.2 und aus den Ports gebauten modularem Xorg lief die Karte, wenn auch mit Macken. Als Treiber ging nur der 'radeonhd' mit 'exa' als AccelMethod. Dabei lief sie nur fehlerfrei mit DRI, wenn ich max. 3GB unter i386 eingbaut hatte, amd64 hatte ich nicht getestet.

2. Unter Debian-Lenny läuft mit dem Standard-Xorg nichts in Sachen DRI, es wurde nicht unterstützt.

3. Da ich aber bekennender NetBSDler bin, und die Karte unter anderen Linux-Dists und FreeBSD läuft, dachte ich, dass kriegst du auch hin. Ziel war es aber, wenn möglich den Standard Kernel mit NetBSD-5.0.1 und nicht NetBSD-Current usw. zu benutzen.

4. Mir ist irgendwann aufgefallen, dass der GENERIC zwar DRM unterstützt, wenn man z.B.
radeondrm* at vga? und DRM_EXTERNAL einbindet, aber sowohl der interne als auch der externe DRM-Code hat die Treiber für die neueren 6xx/7xx Karten noch nicht eingebaut.

5. Nach dem Lesen des Mailing-Archivs 'tech-X11' (und anderer) habe ich gesehen, dass es neuen externen DRM-Code für den Current-Kernel gibt, der theoretisch auch die o.g. Karten unterstützt. Diesen Code habe ich dann statt

/usr/src/sys/external/bsd/drm/dist eingebunden,

in

/usr/src/sys/dev/drm/files.drm die

makeoptions auf drm_external gesetzt und die standard makeoptions auskommentiert.

Dann musste man in

/usr/src/sys/dev/pci/drm/files.pcidrm die Zeile

mit dem Eintrag ...r300_cmdbuf.c... neu eintragen und in ...r600_cp.c... abwandeln, damit auch der Code für die 6xx/7xx Karten übersetzt wird.

Nun trat beim 1. Kernel-Übersetzen ein Fehler im neuen DRM-Code in

/usr/src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c auf. Zeile 372-376, die das DRM_DEBUG beinhalten, haben eine falsche Wertzuweisung in 'size= '.

Ich habe die Zeilen auskommentiert und neu übersetzt und es lief.

Der Rest ist Standard:

* modulares-xorg aus den pkgsrc mit DRI bauen (ich benutze auch nur den stabilen 2009Q3)
* Mesa-Lib ebenso mit DRI, wobei in der Version nur Unterstützung für r3xx und nicht meine r6xx ist, daher kein 3D
* in die xorg.conf die Zeilen für DRI und AccelMethod
* /dev/dri/card0 anlegen
* Reboot

Dmesg zeigt nun das 1.Mal das es eine radeondrm und meine HD 2600 gefunden hat,
nun teste ich die zwei ATI / Radeon-Treiber 'radeon' bzw. 'radeonhd'.

Beide funktionieren sowohl mit AccelMethod 'Xaa' als auch 'exa', aber ohne Deaktivieren von AICLX läuft nichts. Und hier kam der Unterschied!!

Der 'radeonhd' läuft auch ohne AIGLX grottenschlecht, trotz DRM, der 'radeon' läuft top.
xvinfo zeigt nun endlich auch meine Karte an, mplayer teste ich.

Fazit: Es geht doch mit den ATI-Karten und NetBSD, man muss auch nicht auf Current ausweichen.

Ich werde die nächsten Tage weiter Testen, das neuere Xorg mal übersetzen und hoffentlich auch Mesa und AIGLX hinkriegen.

Alles in allem lohnt es sich immer NetBSD zu benutzen :),

in diesem Sinne
vG
Frank aus LE

Nachtrag: Mplayer läuft mit -vo xv und die bisher abgespielten Videos (*.wmv) laufen ruckelfrei im Vollbildmodus. Ich habe dazu in der xorg.conf die AccelMethod auf 'exa' gestellt und DisplayPriority auf 'HIGH' und DMAForXv auf 'on'. Alles mit o.g. 'radeon'-Treiber und deaktiviertem! AIGLX.

Viel Spass!
 
Zuletzt bearbeitet:
Code geändert

Ich habe mal in

/usr/src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c in Zeile 372

den Code von size=%zx in size=%lx geändert, nun lässt sich das DRM_DEBUG von 372-376 einbinden und das Kompilieren läuft fehlerfrei.

Jetzt läuft bei mir auch der 'radeonhd' ohne Ruckeln und -vo xv im Mplayer klappt damit auch.
Das alles in einem 0815 GENERIC-Kernel für NetBSD-5.0.1 i386, ohne Patchen, mit Ausnahme der o.g. zusätzlichen Zeile für r600 in

/usr/src/sys/dev/pci/drm/files.pcidrm.

Vielleicht klappt's mit anderen Radeons nun auch,


viel Glück!
 
hallo Franco98

Ist die HD2600 eine Notebook Grafik chip oder eine PCIe Grafikkarte?
Hast du mit dem Treiber schon irgendwas gezockt? z.B Quake oder bzflag? Funktioniert das?

Hier ist die NetBSD DRI Status Seite. Kannst ja mal die Leute kontaktieren, dass du DRM für deine Karte zum laufen gebracht hast.
http://www.netbsd.org/~jmcneill/index.html
 
Das ist die Grafikkarte meines Notebooks, sie wurde u.a. in vielen Toshiba-Notebooks verbaut.
Zocken geht nicht, da (s.o.) kein 3D-Support z.Z.!

Aber Videos ruckelfrei (Vollbild) im MPlayer, Xine ect. schauen, ist schon ein großer Unterschied ohne DRI und xv.
Ich habe das neuste xorg aus den pkgsrc vorgestern übersetzt, die Mesa-Lib ist noch immer ohne Support für r6xxx, also nur für ältere Karten i.M.

VG
Frank
 
Ich teste gerade den neuen 5.1er Kernel und meine früheren DRM-Einstellungen (s.o.), er scheint problemlos zu laufen. Mir ist aufgefallen, dass viele der Einstellungen bereits integriert sind (z.B. der Eintrag in /usr/src/sys/dev/pci/drm/files.pcidrm), ich werde deshalb mal den Standard-Kernel + Eintrag 'radeondrm*' übersetzen, vielleicht läuft ja DRM auch ohne Fremdeingriffe.

Bericht folgt!

Frank
 
Super! Der Kernel ist fit für DRM, es ist kein Umschreiben, Patchen mehr nötig gewesen. Ich habe den GENERIC lediglich um die fehlende Zeile für die radeondrm erweitert und die OPTION DRM_EXTERNAL.

Das Übersetzen lief problemlos, das Booten ebenso, er erkennt die RadeonHD 2600, xvinfo bestätigt den Rest. Ich hoffe es klappt bei anderen Karten ebenfalls!

Gruß Frank

Anmerkung: Ich benutze noch immer den xf86-video-radeonhd-1.2.5nb2, der neue Treiber, 1.3 hat nur schwarze Bildschirme bei gleicher Konfiguration gebracht. Das restliche Xorg ist aus 2010Q3.
 
Zurück
Oben