Login
Newsletter
Werbung

Fr, 14. September 2012, 09:21

Software::Grafik

Neues OpenGL-ABI für Linux vorgeschlagen

Die Entwickler des Industriekonsortiums Khronos, der OpenGL-Treiberhersteller und von X.org diskutieren eine Erneuerung der Binärschnittstelle von OpenGL. Die Koexistenz verschiedener herstellerspezifischer Implementierungen und Versionen soll damit wesentlich erleichtert werden.

opengl.org

Nvidia ist einer der Hersteller, der eine eigene OpenGL-Implementierung mit seinen proprietären Grafiktreibern mitliefert. Daher ist das Unternehmen auch besonders an der einfachen Integration dieser Implementierung, die in Form von Bibliotheken vorliegt, interessiert. Nach ersten Diskussionen auf der Mesa-Mailingliste hat nun Andy Ritger von Nvidia einen Entwurf vorgelegt, der auf der kommenden X11-Entwicklerkonferenz in Nürnberg als Grundlage der weiteren Diskussionen dienen soll.

Der Entwurf definiert die Binärschnittstelle (Application Binary Interface, ABI) für OpenGL, OpenGL ES, EGL und GLX. Im Gegensatz zu einem API (Application Programming Interface, Programmierschnittstelle), das Datenstrukturen und Funktionsaufrufe definiert, hat das ABI hauptsächlich die Benennung und den Inhalt der Bibliotheken zum Gegenstand. Das gegenwärtige OpenGL-ABI für Linux wurde vor gut zwölf Jahren definiert und zeigte im Laufe der Zeit einige Schwächen. So gibt es festgelegte Bibliotheksnamen wie libGL.so.1. Da mehrere Anbieter ihre eigenen Implementierungen dieser Bibliothek mitbringen, lassen sie sich ohne Distributionstricks nicht parallel installieren; Konflikte sind vorprogrammiert. Zudem hat sich OpenGL weiterentwickelt. In OpenGL 3.1 wurde ein Teil des früheren APIs entfernt, dieser kann jedoch über eine Kompatibilitätsoption bereitgestellt werden. Es sollte für die Hersteller aber auch möglich sein, die veralteten Funktionen nicht mehr zu implementieren.

Der längliche Entwurf von Andy Ritger sieht zwei in Beziehung stehende ABIs vor, eines zwischen Anwendungen und einer herstellerunabhängigen Schicht und eines zwischen der herstellerunabhängigen und der herstellerabhängigen Schicht. Ersteres bleibt kompatibel mit den bestehenden Anwendungen; es könnte als veraltet markiert werden, wenn die Entwickler in diesem Teil Änderungen beschließen, müsste aber auf absehbare Zeit weiter bestehen.

In diesem Entwurf werden libGL.so.1 (OpenGL 1.2 und GLX 1.3), libGLESv1_CM.so.1 (OpenGL ES 1 Common Profile), libGLESv2.so.1 (OpenGL ES 2 und 3), libEGL.so.1 (EGL 1.4) und libGLX.so.1 (GLX 1.4) zu einer dünnen herstellerneutralen Schicht, die Funktionsaufrufe an die Hersteller-Bibliotheken weiterleitet. Diese Bibliotheken wurden sich nur selten ändern und könnten unter dem Dach von Khronos entwickelt werden. Die Hersteller würden ihre Implementierung in libEGL_<Hersteller>.so.1 und libGLX_<Hersteller>.so.1 bereitstellen.

Der Entwurf fordert die Koexistenz der Bibliotheken nicht nur bei der Installation, sondern auch zur Laufzeit. Dies würde den Fall abdecken, dass Grafikkarten unterschiedlicher Hersteller in einem einzelnen Rechner stecken und jede mit ihrer spezifisch optimierten OpenGL-Implementation angesteuert wird. Der größte Teil des Entwurfs befasst sich mit den Einzelheiten, wie die Funktionsaufrufe in diesem Fall an die richtige Implementierung gelangen, beschreibt die möglichen Schwierigkeiten und zeigt Lösungsmöglichkeiten auf. Es ist zu erwarten, dass sich die Entwickler bereits auf der X11-Entwicklerkonferenz vom 19. bis 23. September in Nürnberg zu diesem Thema abstimmen und die Weichen für das neue ABI stellen.

Werbung
Kommentare (Insgesamt: 17 || Alle anzeigen )
Re[3]: Jawoll (kamomeuneingeloggt, Mi, 19. September 2012)
Re[3]: Endlicht tut sich was (Half-Life 1, Mo, 17. September 2012)
Re[2]: Endlicht tut sich was (rtzz, So, 16. September 2012)
Re[3]: Jawoll (Ich, So, 16. September 2012)
Re[2]: Feine Sache (Frank Frank, Sa, 15. September 2012)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung