Textdarstellungsprobleme des Mozilla Firefox mit Legacy-Radeons von AMD nach einem Jahr behoben [2. Update]

Der Work­around hat es jetzt mit Fire­fox 26 auch in die sta­bi­le Ver­si­on des Mozil­la-Brow­sers geschafft. Aller­dings muss er — anders als der­zeit in den offi­zi­el­len Release Notes sug­ge­riert — wei­ter­hin erst vom Nut­zer akti­viert wer­den. Dies ist auf eige­nen Gefahr hin mit Hil­fe des Kon­fi­gu­ra­ti­ons­me­nüs about:config mög­lich, wo durch einen Rechts­klick in einen lee­ren Bereich über das sich öff­nen­de Kon­text­me­nü die neue Boolean-Varia­ble layout.paint_rects_separately mit dem Wert true erstellt wer­den muss.

Update 18.11.2013:

Weil in wei­te­ren Tests eini­ge Regres­sio­nen ent­deckt wur­den, ist der Work­around aktu­ell im Night­ly-Chan­nel stan­dard­mä­ßig deak­ti­viert. Auro­ra und Beta wer­den in den kom­men­den Tagen fol­gen. Wer von dem Bug betrof­fen ist und des­halb den Work­around auf eige­ne Gefahr hin akti­vie­ren möch­te, kann dies über about:config erle­di­gen. Hier muss die neue Boolean-Varia­ble layout.paint_rects_separately erstellt und deren Wert auf true gesetzt werden.

Vie­len Dank lasz­lo für den Hinweis!

Ursprüng­li­che Mel­dung vom 17. Novem­ber 2013:

Nach fast einem Jahr Zögern und Zau­dern hat es Mozil­la inner­halb weni­ger Tage geschafft, einen Patch zu ent­wi­ckeln, zu tes­ten und vom aktu­el­len Ent­wick­lungs­zweig bis hin­ab zur der­zei­ti­gen Beta-Ver­si­on des Fire­fox zu por­tie­ren. Zuvor beschränk­ten sich die Ver­ant­wort­li­chen auf Sei­ten Mozil­las dar­auf, mit dem Fin­ger auf Micro­soft und AMD zu zei­gen. Erst­mals waren die Text­dar­stel­lungs­pro­ble­me mit dem Fire­fox 17 nach der Ver­öf­fent­li­chung des Platt­form-Updates von Micro­soft auf­ge­tre­ten, wel­ches mit dem Inter­net Explo­rer 10 für Win­dows 7 aus­ge­lie­fert wur­de und Win­dows 7 mit einem Teil der DirectX-11.1‑Funktionalität nachrüstete.

Firefox-Text-Rendering-Problem auf Radeon HD 2000, HD 3000 und HD 4000
Bei­spiel für Text­dar­stel­lungs­pro­ble­me des Fire­fox auf Legacy-Radeons

Die­ses Text­dar­stel­lungs­pro­blem mani­fes­tiert sich unter Win­dows 7, 8 und 8.1, wenn die Hard­ware­be­schleu­ni­gung des Fire­fox akti­viert ist und eine AMD-Gra­fik­kar­te aus den Seri­en Rade­on HD 2000, HD 3000 oder HD 4000, wel­che der­zeit nur noch mit Lega­cy-Sup­port bedacht wer­den, zum Ein­satz kommt. Anfangs war der Ver­ur­sa­cher nicht klar iden­ti­fi­zier­bar. Laut Mozil­la wird das Pro­blem höchst­wahr­schein­lich von einem Bug im Cata­lyst-Trei­ber ver­ur­sacht, der durch die Art und Wei­se her­vor­ge­ru­fen wird, wie die Gecko-Ren­de­ring-Engi­ne durch soge­nann­tes Clip­ping ver­sucht, erneu­tes Zeich­nen bestimm­ter Bild­be­rei­che zu ver­mei­den. Die­se Direc­t2D-Funk­tio­na­li­tät wird offen­bar ansons­ten in einem Brow­ser nur von Micro­softs IE genutzt.

The reason Fire­fox is hit by this is becau­se of how inva­li­da­ti­on and clip­ping work. We often clip to com­plex regi­ons during draw. I’m not sure how this works in IE 10 so it’s hard to say how they mana­ge to avo­id this pro­blem. As you can see from the plain Direct2D test case atta­ched to the bug, it’s not obvious how to pre­dict when the pro­blem will hap­pen and when it wont. Basi­cal­ly, clip­ping to cer­tain regi­ons when dra­wing to sur­faces of par­ti­cu­lar sizes does­n’t work pro­per­ly with the AMD drivers.”

Die Behaup­tung von Mozil­la, man habe Schwie­rig­kei­ten bei der Abschät­zung gehabt, wie groß der Per­so­nen­kreis betrof­fe­ner Nut­zer ist, wirft ange­sichts von mitt­ler­wei­le 37 als Dupli­kat mar­kier­ten Bug-Mel­dun­gen und 381 zum Teil wüten­der Kom­men­ta­re in den Bug­mel­dun­gen ein selt­sa­mes Licht auf den Umgang mit die­ser Feh­ler­mel­dung. Immer­hin han­delt es sich bei der kor­rek­ten Dar­stel­lung von Text um eine ele­men­ta­re Auf­ga­be des Brow­sers und von den betrof­fe­nen Gra­fik­be­schleu­ni­gern wur­den meh­re­re Mil­lio­nen Stück ver­kauft. Aber auch die ande­ren betei­lig­ten Fir­men AMD und Micro­soft haben sich hier nicht gera­de mit Ruhm bekle­ckert. Mit bei­den Unter­neh­men stand Mozil­la in Kon­takt, gebracht hat es aber abso­lut nichts. Laut Bas Schou­ten haben AMD und Micro­soft zumin­dest mal an dem Pro­blem gear­bei­tet, brauch­ba­re Rück­mel­dun­gen zum Stand der Unter­su­chun­gen gab es aber offen­bar nicht. Der für den Bug ver­ant­wort­li­che Ent­wick­ler Jeff Mui­zel­a­ar schreibt dazu folgendes:

Micro­soft and AMD were both able to repro­du­ce the bug. We ope­ned a sup­port ticket with Micro­soft and the only the recom­men­da­ti­on they were able to come up with was to avo­id the pro­blem. Micro­soft gave up on Octo­ber 8.”

Wir haben bezüg­lich die­ses Feh­lers eben­falls mehr­fach bei AMD ange­fragt, eine Ant­wort hier­zu erreich­te uns nie. Somit kann an die­ser Stel­le auch kei­ne ande­re Sicht­wei­se auf die­ses Ren­de­ring­pro­blem als jene von Mozil­la wie­der­ge­ge­ben wer­den. Es wirkt so, als wol­le AMD das Trei­ber-Pro­blem mit der Lega­cy-Hard­ware schlicht aus­sit­zen. Es ist sowie­so frag­lich, wie lan­ge AMD noch gewillt ist, an den Lega­cy-Trei­bern zu arbei­ten. Der Mit­te Okto­ber ver­öf­fent­lich­te Cata­lyst 13.9 Lega­cy wur­de jeden­falls Ende April 2013 fer­tig­ge­stellt. Der letz­te Lega­cy-Sup­port wur­de auch ohne jeg­li­che wei­te­re Mel­dung von AMD ein­fach eingestellt.

Immer­hin konn­te Matt Wood­row inzwi­schen einen Patch imple­men­tie­ren, der die­sen Bug zwar nicht voll­stän­dig löst, das Trei­ber-Pro­blem aber ver­sucht zu umge­hen. Eine wirk­li­che fina­le Lösung des Pro­blems ist jedoch nur durch ein Trei­ber-Update von Sei­ten AMDs mög­lich. Somit besteht wei­ter­hin die Mög­lich­keit eines erneu­ten Auf­tre­tens der feh­ler­haf­ten Dar­stel­lung. Inzwi­schen soll der Patch auf den Kanä­len Night­ly, Auroa und Beta ver­füg­bar sein und vor­aus­sicht­lich auch mit dem kom­men­den sta­bi­len Release Fire­fox 26 am 10. Dezem­ber 2013 aus­ge­lie­fert werden.

Quel­len: