Textdarstellungsprobleme des Mozilla Firefox mit Legacy-Radeons von AMD nach einem Jahr behoben [2. Update]
Der Workaround hat es jetzt mit Firefox 26 auch in die stabile Version des Mozilla-Browsers geschafft. Allerdings muss er — anders als derzeit in den offiziellen Release Notes suggeriert — weiterhin erst vom Nutzer aktiviert werden. Dies ist auf eigenen Gefahr hin mit Hilfe des Konfigurationsmenüs about:config möglich, wo durch einen Rechtsklick in einen leeren Bereich über das sich öffnende Kontextmenü die neue Boolean-Variable layout.paint_rects_separately mit dem Wert true erstellt werden muss.
Update 18.11.2013:
Weil in weiteren Tests einige Regressionen entdeckt wurden, ist der Workaround aktuell im Nightly-Channel standardmäßig deaktiviert. Aurora und Beta werden in den kommenden Tagen folgen. Wer von dem Bug betroffen ist und deshalb den Workaround auf eigene Gefahr hin aktivieren möchte, kann dies über about:config erledigen. Hier muss die neue Boolean-Variable layout.paint_rects_separately erstellt und deren Wert auf true gesetzt werden.
Vielen Dank laszlo für den Hinweis!
Ursprüngliche Meldung vom 17. November 2013:
Nach fast einem Jahr Zögern und Zaudern hat es Mozilla innerhalb weniger Tage geschafft, einen Patch zu entwickeln, zu testen und vom aktuellen Entwicklungszweig bis hinab zur derzeitigen Beta-Version des Firefox zu portieren. Zuvor beschränkten sich die Verantwortlichen auf Seiten Mozillas darauf, mit dem Finger auf Microsoft und AMD zu zeigen. Erstmals waren die Textdarstellungsprobleme mit dem Firefox 17 nach der Veröffentlichung des Plattform-Updates von Microsoft aufgetreten, welches mit dem Internet Explorer 10 für Windows 7 ausgeliefert wurde und Windows 7 mit einem Teil der DirectX-11.1‑Funktionalität nachrüstete.
Beispiel für Textdarstellungsprobleme des Firefox auf Legacy-Radeons
Dieses Textdarstellungsproblem manifestiert sich unter Windows 7, 8 und 8.1, wenn die Hardwarebeschleunigung des Firefox aktiviert ist und eine AMD-Grafikkarte aus den Serien Radeon HD 2000, HD 3000 oder HD 4000, welche derzeit nur noch mit Legacy-Support bedacht werden, zum Einsatz kommt. Anfangs war der Verursacher nicht klar identifizierbar. Laut Mozilla wird das Problem höchstwahrscheinlich von einem Bug im Catalyst-Treiber verursacht, der durch die Art und Weise hervorgerufen wird, wie die Gecko-Rendering-Engine durch sogenanntes Clipping versucht, erneutes Zeichnen bestimmter Bildbereiche zu vermeiden. Diese Direct2D-Funktionalität wird offenbar ansonsten in einem Browser nur von Microsofts IE genutzt.
“The reason Firefox is hit by this is because of how invalidation and clipping work. We often clip to complex regions during draw. I’m not sure how this works in IE 10 so it’s hard to say how they manage to avoid this problem. As you can see from the plain Direct2D test case attached to the bug, it’s not obvious how to predict when the problem will happen and when it wont. Basically, clipping to certain regions when drawing to surfaces of particular sizes doesn’t work properly with the AMD drivers.”
Die Behauptung von Mozilla, man habe Schwierigkeiten bei der Abschätzung gehabt, wie groß der Personenkreis betroffener Nutzer ist, wirft angesichts von mittlerweile 37 als Duplikat markierten Bug-Meldungen und 381 zum Teil wütender Kommentare in den Bugmeldungen ein seltsames Licht auf den Umgang mit dieser Fehlermeldung. Immerhin handelt es sich bei der korrekten Darstellung von Text um eine elementare Aufgabe des Browsers und von den betroffenen Grafikbeschleunigern wurden mehrere Millionen Stück verkauft. Aber auch die anderen beteiligten Firmen AMD und Microsoft haben sich hier nicht gerade mit Ruhm bekleckert. Mit beiden Unternehmen stand Mozilla in Kontakt, gebracht hat es aber absolut nichts. Laut Bas Schouten haben AMD und Microsoft zumindest mal an dem Problem gearbeitet, brauchbare Rückmeldungen zum Stand der Untersuchungen gab es aber offenbar nicht. Der für den Bug verantwortliche Entwickler Jeff Muizelaar schreibt dazu folgendes:
“Microsoft and AMD were both able to reproduce the bug. We opened a support ticket with Microsoft and the only the recommendation they were able to come up with was to avoid the problem. Microsoft gave up on October 8.”
Wir haben bezüglich dieses Fehlers ebenfalls mehrfach bei AMD angefragt, eine Antwort hierzu erreichte uns nie. Somit kann an dieser Stelle auch keine andere Sichtweise auf dieses Renderingproblem als jene von Mozilla wiedergegeben werden. Es wirkt so, als wolle AMD das Treiber-Problem mit der Legacy-Hardware schlicht aussitzen. Es ist sowieso fraglich, wie lange AMD noch gewillt ist, an den Legacy-Treibern zu arbeiten. Der Mitte Oktober veröffentlichte Catalyst 13.9 Legacy wurde jedenfalls Ende April 2013 fertiggestellt. Der letzte Legacy-Support wurde auch ohne jegliche weitere Meldung von AMD einfach eingestellt.
Immerhin konnte Matt Woodrow inzwischen einen Patch implementieren, der diesen Bug zwar nicht vollständig löst, das Treiber-Problem aber versucht zu umgehen. Eine wirkliche finale Lösung des Problems ist jedoch nur durch ein Treiber-Update von Seiten AMDs möglich. Somit besteht weiterhin die Möglichkeit eines erneuten Auftretens der fehlerhaften Darstellung. Inzwischen soll der Patch auf den Kanälen Nightly, Auroa und Beta verfügbar sein und voraussichtlich auch mit dem kommenden stabilen Release Firefox 26 am 10. Dezember 2013 ausgeliefert werden.
Quellen:
- Bugzilla@Mozilla Bug 812695 — [D2D] Text Rendering Issues on Windows 7 with Platform Update KB2670838 (MSIE 10 Prerequisite) or on Windows 8.1
- Bugzilla@Mozilla Bug 934860 — Avoid complex clips when painting with D2D
Links zum Thema:
- AMD Radeon HD 7000 sind kompatibel zu Microsoft DirectX 11.2 [Update: Treiber verfügbar] ()
- AMD Catalyst 13.11 Beta 9.2 für Windows — Optimierungen für Call of Duty: Ghost ()
- Neuer Catalyst-Treiber soll Variabilität zwischen unterschiedlichen Hawaii-Grafikkarten verringern ()
- AMD Catalyst 13.9 WHQL Legacy für Radeon HD 2000, HD 3000 und HD 4000 ()