Der traurige Zustand von OpenGL

OpenGL, so sollte man meinen, habe eine prachtvolle Zukunft vor sich: immerhin ist es ein offener Industriestandard, auf jeden Fall aber der Standard auf jedem Iphone/Ipad, Android-Telefon und Macintosh. Damit wird es zahlenmäßig gesehen an Microsofts DirectX (Xbox, Windows und Windows-Phones) weit vorbeiziehen. Aber weit gefehlt!

Ein Entwickler von Valve, Rich Geldreich, befasst sich aktuell in seinem Blog genauer zum Zustand von OpenGL und dessen Treibern. Das ist interessant, da Valve ja zum Bau seiner eigenen Konsole Steam Box auf Linux und damit OpenGL setzt – die haben also nichts gegen OpenGL, im Gegenteil, die finden es toll und liefern momentan ein Opensource-Produkt nach dem anderen ab, um damit besser arbeiten zu können.

In dem Artikel „Dinge, die mich bei OpenGL in den Wahnsinn treiben“ schreibt denn auch Geldreich sehr plastisch, wo es denn bei OpenGL hakt. Das ist auf Englisch geschrieben, aber durchaus mal das Lesen wert.

Er ist unter anderem der Meinung, dass OpenGL den Mist von über 20 Jahren mit sich herum schleppe und einfach radikal von Grund auf neu geschrieben gehört. Wenn dies nicht bald geschehe, dann würden AMDs neues API Mantle als auch Direct X12 OpenGL performancetechnisch ungespitzt mal wieder in den Boden rammen. (Wobei da sicher diese Entwicklung, wie OpenGL bis zu 15x schneller laufen könnte, wohl nicht berücksichtigt ist).

Jedenfalls ist es ein interessanter Artikel aus der Siche eines Programmierers, der sich wirklich mit OpenGL auskennt.

Auch interessant ist noch sein Artikel „Die Wahrheit über die Qualität von OpenGL-Treibern“, in dem er sich massiv über die unterschiedlichen Treiberqualitäten von Hersteller A, B und C auslässt. Unschwer zu erkennen handelt es sich dabei bei A um Nvidia, B um AMD und C um Intel.

Auch das liest sich interessant. Nvidia kommt relativ gut weg, der Treiber sei aktuell leistungstechnisch der Standard. Der Hersteller lege mehr Wert auf ein Funktionieren des Treibers als nun alle möglichen GL-Erweiterungen zu unterstützen. Aber auch der Treiber hatte so seine grundlegenden Fehler, die einfach nicht hätten passieren können und vor allem sei der Treiber so programmiert, dass er intern ganze Shader für Schlüsseltitel/spiele durch eigene ersetzen würde, nur damit die Leistung stimme. Der Hersteller mache da vor nichts halt. Allerdings habe eben Nvidia auch die beste, interne Qualitätskontrolle und das würde man deutlich spüren.

AMD dagegen kommt deutlich schlechter als ein Kuddelmuddel weg, sehr fehlerreich, inkonsistente Qualitätstests und das Treiberthreading sei komplett außerhalb der Kontrolle der offiziellen Entwickler. Leider könne man diesen Hersteller aber nicht ignorieren, da seine GPUs hardwaretechnisch sehr leistungsfähig und verbreitet seien, obwohl sie als Hersteller softwaretechnisch gesehen Idioten seien.

Die Treiber von AMD würden sich strikter an die Standards halten, aber da die meisten Leute nur mit Nvidia entwickeln würden und dann wenn es mit AMD nicht funktionieren würde, würden sie AMD die Schuld geben und nicht dem Status Quo von OpenGL an sich selbst.

AMDs Schlüsselerweiterungen funktionieren nicht, und er schaffe es einfach nach wie vor nicht, gewisse grundlegende Dinge zuverlässig zum Laufen zu bringen.

Außerdem habe AMD es bisher nicht geschafft, mal ein Treiberupdate rauszubringen, das nicht irgendetwas gleichzeitig kaputt machen würde, ein Fehler würde behoben und zwei neue eingeführt. Außerdem seien viele Entwickler von AMD zu Nvidia gegangen, und wenn man sich anschauen würde, was der Treiber intern so treibe, dann gäbe es da Zillionen an Fehlerworkarounds von diesen Leuten, die heute bei AMD keiner mehr verstehen würde.

Interessanterweise aber habe AMD ein fähiges Entwicklerteam für Debuggingtools, die sogar meist funktionieren, solange man mit AMD entwickeln würde.

Die langfristige Entwicklung des Treibers sei aber so, dass die Zuverlässigkeit ziemlich wahrscheinlich noch abnehmen würde.

Auf der Sonnenseite sei es aber so, dass sie die OpenGL-Spezifikationen auswendig kennen würden. Wenn man von ihnen Hilfestellungen bekommen würden, dann sei diese (ohne Erweiterungen) meist sehr vernünftig.

Intel wiederum sei eine Firma, die eigentlich nicht wirklich Grafik produzieren wollen, aber da der aktuelle Trend dazu gingen, Chipsatzgrafik auf dem Prozessor zu integrieren, es eben müssen. Es sei daher schwer, sauer auf sie zu sein, weil es eben nicht ihr Kerngeschäft sei.

Sie seien der Marktführer in Sachen Opensourcegrafiktreiber und haben so viel Geld, dass sie sogar zwei komplette Entwicklerteams für Treiber im Haus haben, für jedes Betriebssystem ein komplett eigenes. Außerdem seien die Hardwarespezifikationen komplett öffentlich.

Das Entwicklerteam sei schlau und sie würden direkt Open Source Wiz Kids anheuern, um den Treiber am Laufen zu halten. Der Treiber sei im Vergleich zu AMD und Nvidia am wenigsten fortgeschritten, aber er funktioniere, solange man nicht begreife oder darauf Wert legt, wofür „FPS“ stünde. Wenn man gut darin sei, Fehler in dem Treiber zu beheben und Patches zu liefern, dann kriegt man sogar vielleicht einen Job bei Intel.

Geldreich schließt mit dem Fazit, dass, wenn man für OpenGL richtig entwickeln wolle, man sein Programm auf jeder Hardwareplattform erneut testen müsse, andernfalls habe man keine Garantie, dass es eben gescheit laufe. Und wenn man Fehler entdecken möge, dann müsse man auf die Hilfe der OpenGL-Gurus hoffen, ansonsten sei es mitunter sehr schwierig.

Oder anders gesagt: die OpenGL-Treiber aller drei Firmen saugen, aber sie seien eben das Beste, was wir momentan leider haben. Und nach Gelbreichs Meinung ist eben Nvidia momentan in Sachen OpenGL nach wie vor der beste Hersteller, den wir haben.

Btrfs sucks

Btrfs wird ja unter Linux als das nächste, große Standarddateisystem angesehen. Es ist so eine Art „running gag“, jedenfalls ist es noch in der Entwicklung und wird als in zwei bis drei Jahren als möglicherweise stabil genug für den Alltagseinsatz angesehen.

Btrfs ist dabei ein Copy on write-Dateisystem und die Featureliste liest sich so, als habe man da fröhlich bei ZFS von Sun abgekupfert. Btrfs wurde ursprünglich von Oracle entwickelt, dann kauften die Sun und haben seitdem auch die Rechte an ZFS, nun wird es extern entwickelt. Wie auch immer.

Btrfs liest und fühlt sich wie eine schlechte Kopie von ZFS an. Da kann man auch besser gleich zum Original greifen, das stabiler ist, mehr Features hat und für den Produktionseinsatz bereit ist.

Beispiele gefällig, wieso ZFS saugt?

  • df unter Btrfs lügt und zeigt nicht den freien Plattenplatz an. Dumm aber, wenn es Skripte/Programme geben sollte, die auf die Ausgabe von df vertrauen. Der notwendige Befehl lautet „btrfs filesystem df /“. Ein Unding.
  • Btrfs ist im Vergleich zu Ext4/XFS in den meisten Fällen schnarchlangsam.
  • Btrfs ist für den Betrieb von Datenbanken oder virtuellen Maschinen denkbar ungeeignet. Dafür nimmt man besser Ext4 oder gleich XFS.
  • Tree Balancing, also das Verteilen von Daten über mehrere Festplatten, kann durchaus einen Tag oder länger dauern.
  • Es besteht noch immer die geringe Möglichkeit, dass sich wenn ein Fehler gefunden werden sollte, das On-Disk-Format geändert werden muss.

Wirklich ein dolles Ding, dieses Btrfs. Wer unter Linux solch ein Dateisystem nutzen will, der sollte besser gleich zu ZFS on Linux greifen.

High Fidelity und Opensimulator

Dies hier ist die aktuelle Systemarchitektur von Philip Rosedales virtueller Welt der nächsten Generation, High Fidelity:

hifi-system-architecture1

Wie man sehen kann, ist diese extrem dezentral aufgebaut. Alles unter „Global Services“ wird von High Fidelity Inc. betrieben, der Rest von jedem, der mag. Ein mögliches Geschäftsmodell wird sein, so stelle ich mir das vor, dass die Firma dann einem die virtuelle Identität „verkauft“, also genauer die Verwaltung, sofern man die Systeme über deren Server laufen lässt. Oder beispielsweise deren Marketplace nutzt.

Ich stelle mir das so vor: grundsätzlich ist alles kostenlos möglich, aber wenn man bestimmte zentrale Dienste von HiFi nutzen will, dann muss man für deren Benutzung eben bezahlen. Von irgend etwas will die Firma ja schließlich auch denn leben können.

Das muss man aber nicht unbedingt tun, denn der Sourcecode für alle wichtigen Komponenten liegt bereits unter der Apache Software License 2.0 auf Github vor und kann von jedem, der mag, genutzt werden. Also kann man auch seine eigenen Inselchen bauen und damit glücklich werden.

Als Basis für die virtuelle Welt dient eine Voxel-Engine, eigentlich ein uralter Hut, der aber in der breiten Masse bisher kaum Fuß fassen konnte, weil Voxel so ihre eigenen, systembedingen Probleme mit sich bringen, wie beispielsweise im Vergleich zu Polygonen deutlich höherer Speicherverbrauch. Man darf gespannt sein, wie sie diese Probleme lösen werden.

Alles in allem aber sieht das jetzt bereits auf dem Papier sehr interessant aus und wenn HiFi es schaffen sollte, das auch so zu bringen, dann wird es mit einem Schlag dem 3D-Web deutlichen Vorschub bringen und nebenbei, davon bin ich überzeugt, Opensim sehr alt aussehen lassen.

SSDs und der Viewercache

Ich hatte neulich in der SL-Gruppe „slinfo.de“ eine Diskussion darüber, wie man Computer beschleunigen kann, die den Second Life Viewer benutzen. Neben den üblichen Verdächtigen, in Reihenfolge der Wichtigkeit: Grafikkarte, mehr Hauptspeicher, besserer Prozessor – empfahl ich den Einbau einer kleinen SSD, um darauf den Viewer-Cache zu speichern.

Der Grund liegt einfach darin, dass der Viewercache bei 1 GB typischerweise aus ca. 20.000 Dateien besteht und man bei dem Cache nach einem Neustart, wenn man in Second Life einloggt und auf eine seiner Stammsims geht, die Limitierung der Festplatte merkt.

Eine Festplatte hat nunmal typischerweise eine Zugriffszeit von 6-8 ms, eine Sekunde sind 1000 ms, das bedeutet wenn die Festplatte exklusiv nur für den Viewer arbeitet (was sie normal nicht macht), dann schafft sie es in einer Sekunde im Bestfall 1000/8 = 125 verschiedene Texturen zu laden.

Eine SSD ist mindestens um den Faktor 10 schneller und damit für solch ein Konstrukt wie lesende Zugriffe auf einen vollen Cache nunmal die erste Wahl.

Nun hält sich noch immer hartnäckig das Gerücht, dass SSDs ach so empfindlich seien und dann kam auch sofort wieder der Mist auf, wenn man das täte, wäre die SSD nach 1-2 Jahren kaputt. Nein, wäre sie nicht.

Zuerst einmal ist es so, dass auch mechanische Festplatten mit der Zeit kaputt gehen können und im Schnitt eine Lebensdauer von fünf Jahren haben. Bei SSDs ist es so, dass diese mit jedem Schreibzugriff bauartbedingt ein wenig altert.

Bei Tech Report wollte man es mal genau wissen und beschreibt verschiedene, aktuelle SSDs seit Monaten im Dauereinsatz. Das Ergebnis ist, kurz gesagt, dass eine SSD robuster ist, als viele denken und diese Datenmengen, welche da geschrieben worden sind, ein typischer Durchschnittsbenutzer wohl in 30-35 Jahren erreicht. Wenn man nur den Second Life Viewer Cache auf eine SSD packt, dann dauert das gar noch viel länger.

Von dem Argument mit der viel zu kurzen Lebensdauer einer SSD in einem solchen Fall ist daher absolut nichts mehr zu halten, es zeigt nur, dass derjenige, der es vorbringt, einfach keine Ahnung von modernen SSDs hat.

Leap Motion in Aktion

Bei all dem Gerede über Oculus Rift ist mir bisher eine Technologie weniger aufgefallen, die einfacher einzusetzen ist und auch die Handhabung eines Rechners ordentlich auf den Kopf stellt, nämlich Leap Motion.

Nun, was ist das? Einige mögen vielleicht Kinect von der Xbox kennen, eine Sensorphalanx, mit der man seine Xbox einfach per Körperbewegungen steuern kann. Nun stellen wir uns mal diese Sensoren ordentlich verkleinert und in einer Computertastatur eingebaut, dann haben wir Leap Motion. Es ist im Grunde der Computersteuerung sehr ähnlich, die manche im Scifi-Film „Minority Report“ sahen, nur mit dem Unterschied, dass man dazu keine Handschuhe anziehen muss und die Technik bereits heute verfügbar ist und gerade damit angefangen wird, sie in manchen Notebooks serienmäßig einzubauen.

Ein Video sagt mehr als tausend Worte, und es gibt schon seit über einem Jahr im Second Life Viewer von Linden Lab eine eingebaute Unterstützung für Leap Motion. So sieht das dann eben aus:

Ich kann mir vorstellen, dies ist für Leute, die hauptsächlich gerne per Voice unterwegs sind, sehr praktisch.

Man kann den Controller auch einzeln kaufen, er wird dann per USB an den Rechner gesteckt und ist in etwa so groß wie ein Feuerzeug. Windows steuern kann man damit übrigens auch: