Konfiguration des ATI-fglrx-Treibers

Gentoo-Blog Ersatz

Moderator: el_hakim

Antworten
tel
Beiträge: 87
Registriert: 28.09.2007, 20:35

Konfiguration des ATI-fglrx-Treibers

Beitrag von tel » 11.04.2010, 01:52

Damit ich mir das endlich auch selbst mal merke :D
schreibe ich jetzt hier mal hin, wie man den Closed-Source-Treiber fglrx
richtig konfiguriert.

Wobei ich mir da nicht so sicher bin, wieviele Leute bei AMD/ATI da eigentlich selbst
noch durchblicken.

Der fglrx verwendet neben der üblichen Datei /etc/X11/xorg.conf auch noch eine Datei
/etc/ati/amdpcsdb in Form einer Pseudo-Registry, die vom Aufbau her der Registry eines
Konsolen-Betriebssystems ähnelt, aber nur eine Textdatei ist.

Genau genommen liest der fglrx beim Start des X-Servers gar nichts aus der xorg.conf aus.
Der Treiber wird nur in der Section "Devices" aufgerufen mit:

Code: Alles auswählen

Section "Device"
   Identifier "card0"
   Driver      "fglrx"
   BusID       "PCI:1:5:0" # optional, sinnvoll falls man mehrere Grafikkarten hat
EndSection
Alle weiteren Optionen, die man in der xorg.conf in den Sections "Devices", "Monitor" und "Modes"
setzen kann, liest der fglrx zur Laufzeit aus der /etc/ati/amdpcsdb.

Wenn man dem fglrx weitere Optionen oder auch benutzerdefinierte ModeLines mitteilen will,
dann hat man 2 Möglichkeiten:

1. Man schreibt das gewünschte in die xorg.conf
---------------------------------------------------------

Dann muss man die xorg.conf mittels

Code: Alles auswählen

aticonfig --input /etc/X11/xorg.conf
parsen lassen. Der Xserver sollte dabei nicht laufen und auch das Kernelmodul
des fglrx sollte nicht geladen sein.

Dabei überträgt aticonfig z.B. Einträge der Form
  • Option "NoDRI" "off"
in die /etc/ati/amdpcsdb, was dann etwa so aussieht:
  • [AMDPCSROOT/SYSTEM/DDX]
  • NoDRI=Soff
Außerdem wird die aktuelle xorg.conf nach xorg.conf.fglrx-0 gesichert.
Die alte xorg.conf dient als Vorlage für eine durch aticonfig erstellte neue
Version. Wobei die alten Inhalte normalerweise übernommen werden, wenn sie denn
für aticonfig richtig erscheinen. Das ganze wird einmal kräftig durcheinandergerührt - insbesondere
Kommentarzeilen, und alle Einrückungen mit Leerzeichen werden durch Tabs ersetzt :evil: .

Wenn aticonfig keine Fehler gemeldet hat, kann man ja anschließend die durchgewürfelte
xorg.conf wieder durch seine alte gutsortierte und wohlgepflegte Version ersetzen.

Code: Alles auswählen

cp /etc/X11/xorg.conf.fglrx-0 /etc/x11/xorg.conf
Wichtig:
Optionen, werden durch weglassen in der xorg.conf nicht aus der /etc/ati/amdpcsdb
gelöscht! Man sollte also entweder den Wert der Option ändern, also aus
  • Option "NoDRI" "off"
  • Option "NoDRI" "on"
machen. Und dann natürlich die xorg.conf mit aticonfig neu parsen.

Oder man muss die weggelassene Option auch aus der amdpcsdb löschen, was nur geht,
wenn der Xserver nicht läuft.

2. Man benutzt das Tool aticonfig zur Laufzeit des XServers
----------------------------------------------------------------------

Damit kann man eigentlich alle Optionen des Treibers auch permanent setzen, was
normalerweise auch zur Laufzeit des XServers funktionieren sollte.

Geschrieben wird direkt in die /etc/ati/amdpcsdb. Welche Optionen es gibt und
ob die Änderungen temporär für die aktuelle XSession oder dauerhaft gelten, verrät
die Hilfe:

Code: Alles auswählen

aticonfig -h
Wobei die Optionen -wer hätte es auch anders erwartet- mitnichten den gleichen Namen
haben wie die, die man in der xorg.conf setzen kann. z.B.
  • Option "UseFastTLS" "0"
entspricht

Code: Alles auswählen

aticonfig --tls=on
Außerdem werden einige Funktionen, die in der Hilfe von aticonfig beschrieben sind,
inzwischen von xrandr übernommen. So ergibt folgendes nur

Code: Alles auswählen

aticonfig --query-monitor
Error: option --query-monitor is not supported when RandR 1.2 is enabled!
Das betrifft das Ein- und Ausschalten von Eingängen, das dynamische Ändern von
Auflösungen und das Hinzufügen von weiteren Modelines.



Die /etc/ati/amdpcsdb enthält auch Optionen, für die es keine Entsprechung
in der xorg.conf gibt. Natürlich fehlt auch jede Dokumentation, so dass man nur raten
kann, was
  • [AMDPCSROOT/SYSTEM/MCIL]
  • DALRULE_ADDNATIVEMODESTOMODETABLE=V1
bewirkt.

Ändern kann man alle Schlüsselwerte mit aticonfig in der Form
--set-pcs-u32=PREFIX,KEY,VALUE oder --set-pcs-str=PREFIX,KEY,STRING
also z.B:

Code: Alles auswählen

aticonfig --set-pcs-u32=MCIL,DALRULE_ADDNATIVEMODESTOMODETABLE,0
Löschen mit --del-pcs-key=PREFIX,KEY .

Wenn man mit der aktuellen /etc/ati/amdpcsdb gar nicht mehr klarkommt, liegt
in dem Verzeichnis immer auch eine Vorlage als amdpcsdb.default, die man an die
Stelle der alten Datei kopieren kann -> den Xserver vorher beenden. Dann
sollte natürlich die xorg.conf mit aticonfig neu geparst werden.

Eine vollkommen neue xorg.conf für fglrx erzeugt:

Code: Alles auswählen

aticonfig --initial
Wenn eine alte xorg.conf mit einem anderem Treiber als Vorlage dienen soll:

Code: Alles auswählen

aticonfig --initial --input=/etc/X11/xorg.conf
Benutzerdefinierte Modelines werden beim parsen mit aticonfig aus der xorg.conf in
die /etc/ati/amdpcsdb übertragen. Der fglrx verwendet sie aber nur, wenn sie ihm auch "gefallen",
also z.B. zu den vom Monitor gelieferten EDID-Daten passen.
Ein überschreiben einer vom Monitor falsch per EDID gemeldeten Auflösung ist also
nicht möglich, dann kommt nur sowas:

Code: Alles auswählen

(EE) fglrx(0): Add Customize Mode failed: 7
(II) fglrx(0): Not using mode "1920x1080x50++" (unknown reason)
(II) fglrx(0): Not using mode "1920x1080x60++" (unknown reason)
Die Optionen "IgnoreEDID" und "IgnoreDDC", die andere Treiber kennen, gibt es beim
fglrx nicht, falsche Angaben, die ein Monitor über sich selbst macht, lassen sich
also kaum korrigieren.

future

Re: Konfiguration des ATI-fglrx-Treibers

Beitrag von future » 16.09.2010, 13:38

Nach 2 Stunden googlen hat mir dein Eintrag gerade den Tag verschoenert :)

Ich hab mich naemlich gewundert was PREFIX hier ist:

Code: Alles auswählen

--get-pcs-key=PREFIX,KEY
Man muss also das

Code: Alles auswählen

AMDPCSROOT/SYSTEM/
weglassen und dann hat man das PREFIX. So z.B.:

Code: Alles auswählen

aticonfig --get-pcs-key=BUSID-2:0:0-0/OpenGL,VSyncControl
Danke dir jedenfalls!!!

tel
Beiträge: 87
Registriert: 28.09.2007, 20:35

Re: Konfiguration des ATI-fglrx-Treibers

Beitrag von tel » 29.12.2012, 23:27

Legacy Version des ATI-Treibers

Seit Version 12.6 des fglrx ist die Unterstützung für Karten der Serien HD2000, HD3000 und HD4000 (also alle Grafikkerne
die R oder RV 600 bis 690 und 700 bis 790 heißen) weggefallen.

Für diese Karten wird der Entwicklungsstand der 12.6-Beta-Version (interne Versionsnummer 8.961)
des fglrx eingefroren und als "AMD Legacy Catalyst™ Proprietary Display Driver" weiter angeboten.
Eine Anpassung an neue Kernel und Xorg-Versionen soll weiterhin erfolgen.

Der Portage-Tree kennt noch keine Unterscheidung zwischen dem "Normalen" fglrx-Zweig und der legacy-Variante.
Standardmäßig wird zur Zeit das Ebuild x11-drivers/ati-drivers-12.11_beta installiert.

Das letzte EBuild, dass man bei so einer Karte installieren darf, ist aber die Version

Code: Alles auswählen

x11-drivers/ati-drivers-12.6_beta_pre897
Diese Version ist bis Kernel Version 3.5 und Xorg-Server Version 1.12 benutzbar.
Die derzeit aktuellste stabile Xorg-Server-Version 1.13 wird nicht unterstützt!

Damit nicht bei jedem World-Update die jeweils aktuellsten (und dann nicht funktionierenden)
Varianten von fglrx und Xorg installiert werden, sollte man sie in der /etc/portage/package.mask
maskieren:

Code: Alles auswählen

# fglrx auf Version 12.6-legacy festhalten, da neuere Versionen
# den RS780 nicht mehr unterstützen
>x11-drivers/ati-drivers-12.6_beta_pre897
# zum ATI-Legacy-Treiber passende xorg-version festhalten
>x11-base/xorg-server-1.12.4
# zum ATI-Legacy-Treiber passende xorg-Treiber-Version festhalten
>x11-base/xorg-drivers-1.12

Antworten