2 Punkte von GN⁺ 2024-02-15 | 1 Kommentare | Auf WhatsApp teilen

Unterstützung für OpenGL 4.6 und OpenGL® ES 3.2

  • Der M1 unterstützte lange Zeit nur OpenGL 4.1, unterstützt nun aber OpenGL® 4.6 und OpenGL® ES 3.2 vollständig.
  • Für die neuesten Treiber der M1/M2-Serie muss lediglich Fedora installiert werden.
  • Falls es bereits installiert ist, kann einfach mit dem Befehl dnf upgrade --refresh aktualisiert werden.
  • Anders als die nicht standardkonformen 4.1-Treiber der bisherigen Anbieter sind diese Open-Source-Linux-Treiber für aktuelle OpenGL-Versionen zertifiziert und versprechen breite Kompatibilität mit modernen OpenGL-Workloads wie Blender, Ryujinx und Citra.

Treiberzertifizierung und Standardunterstützung

  • Zertifizierte 4.6/3.2-Treiber müssen mehr als 100.000 Tests bestehen, um Korrektheit zu gewährleisten.
  • Die Liste der offiziell zertifizierten Treiber umfasst nun auch OpenGL 4.6 und ES 3.2.
  • Anbieter unterstützen noch immer keine Grafikstandards wie modernes OpenGL, dieses Unternehmen hingegen schon.
  • Das Unternehmen betont öffentlich seine Liebe zu interoperablen offenen Standards und möchte Nutzern und Entwicklern die Freiheit geben, Anwendungen ohne spezielle Portierungen dort auszuführen, wo sie möchten.

Neue Funktionen in OpenGL 4.6

  • OpenGL 4.6 fügt gegenüber 4.1 Dutzende verpflichtende Funktionen hinzu:
    • Robustness
    • SPIR-V
    • Clip control
    • Cull distance
    • Compute shaders
    • Upgraded transform feedback

Kompatibilitätsprobleme des M1 mit Grafikstandards

  • Der M1 passt nicht gut zu Grafikstandards, die neuer als OpenGL ES 3.1 sind.
  • Vulkan macht einige Funktionen optional, aber in den Layern für DirectX und OpenGL fehlen benötigte Funktionen.
  • Auf dem M1 gibt es keine bestehende Lösung, die über den OpenGL-4.1-Funktionsumfang hinausgeht.

Wie die 4.1-Barriere überwunden wurde

  • Es waren neue Methoden erforderlich, um neue Funktionen ohne Hardware-Unterstützung zu implementieren.
  • Geometrie-Shader, Tessellation und Transform Feedback werden durch Compute Shader ersetzt.
  • Cull distance wird durch transformierte Interpolationswerte ersetzt.
  • Clip control wird durch ein Vertex-Shader-Epilog ersetzt.

Herausforderungen bei der Robustness

  • Traditionell priorisieren GPUs rohe Leistung gegenüber Sicherheit.
  • Für Anwendungen wie Webbrowser ist dieser Trade-off nicht wünschenswert.
  • Robustness-Funktionen können die Angriffsfläche verringern, indem sie Anwendungen erlauben, definiertes Verhalten bei Pufferzugriffen außerhalb des gültigen Bereichs in Shadern zu wählen, wobei dafür ein geringer Leistungsverlust in Kauf genommen wird.

Buffer-Robustness

  • Andere APIs definieren unterschiedlich, was Ladevorgänge außerhalb des gültigen Buffer-Bereichs zurückgeben, wenn Robustness aktiviert ist.
  • OpenGL legt fest, dass ein Ladevorgang außerhalb des Bereichs das letzte Element des Buffers zurückgibt.
  • Zusätzliche Operationen für Robustness werden in die Präambel des Shaders verschoben, sodass für den Haupt-Shader keine zusätzlichen Kosten entstehen.

Image-Robustness

  • Image-Robustness verlangt, dass Bild-Ladevorgänge außerhalb des gültigen Bereichs 0 zurückgeben.
  • Auf der M1-GPU gibt es einen einzelnen Test, bei dem geladene gemippte Bilder fehlschlagen.
  • Mögliche Workarounds für Robustness sind, nicht aus ungültigen Levels zu laden oder spekulativ zu laden und anschließend Vergleichs- und Auswahloperationen zu verwenden.

Meinung von GN⁺

  • Dieser Artikel behandelt einen wichtigen Fortschritt bei der Unterstützung aktueller OpenGL-Standards auf M1-Geräten. Das dürfte Linux-Nutzern und Entwicklern breitere Kompatibilität und bessere Leistung bringen.
  • Die neuen Funktionen von OpenGL 4.6 können Leistung und Robustheit von Grafik-Anwendungen deutlich verbessern, was besonders für Spieleentwicklung und High-Performance-Computing wichtig ist.
  • Der Artikel ist ein gutes Beispiel dafür, wie Open-Source-Treiber im Vergleich zu kommerziellen Lösungen eine bessere Standardkonformität und Kompatibilität bieten können.

1 Kommentare

 
GN⁺ 2024-02-15
Hacker-News-Kommentare
  • Alyssa Rosenzweig trägt der Community kontinuierlich bei, und wenn man ihre Blogposts liest, kann man Dinge über das Innenleben moderner Grafikhardware lernen, die man vorher nicht wusste. Solche Anstrengungen zeigen, dass Können wichtiger ist als Worte, und schon das Lesen des Blogs regt zum Nachdenken an. Die wichtige Botschaft steckt im zweiten Satz, nicht im letzten, und der Leser taucht tief in den Kaninchenbau ein und genießt die Welt der Bitmanipulation.
  • Der M1-Chip passt nicht gut zu neueren Grafikstandards als OpenGL ES 3.1; Vulkan kann einige Funktionen optional nutzen, aber es fehlen Funktionen, die für Layering für DirectX und OpenGL nötig sind. Auf dem M1 gibt es keine Lösung, die über den OpenGL-4.1-Funktionsumfang hinausgeht. Ich frage mich, welche Auswirkungen das auf die Performance hat, besonders im Vergleich zu Metal auf macOS.
  • Ich finde es amüsant, dass man es in der Grafikprogrammierung „Robustheit“ nennt, wenn Zugriffe außerhalb der Grenzen von einem Trap zum Zurückgeben zufälliger Daten wechseln.
  • Irgendwann wird Apple wohl OpenGL 3.3 Core abschaffen, und dann könnten am Ende alle es abschaffen. Allgemein heißt es zwar, OpenGL sei einfacher zu benutzen als Vulkan, aber wenn es zu komplex wird, kann es für weniger erfahrene Entwickler eine Hürde sein, die GPU zu nutzen, und das könnte einige Indie-Game-Entwickler entmutigen. Es ist üblich, Unity und Unreal zu verwenden, aber Spiele von Grund auf zu entwickeln, wirkt seltsam verpönt. Der Zustand der Open-Source-Spieleentwicklung fühlt sich manchmal ziemlich hoffnungslos an, und das Aufkommen von Grafik-APIs der nächsten Generation macht die Lage noch schwieriger.
  • Es geht hier um Fedora für den M1-Chip, und es wäre erstaunlich, das unter macOS umgesetzt zu sehen. Ich frage mich, welche Arbeit dafür nötig wäre.
  • Ich frage mich, warum man nicht zuerst auf Vulkan zielt. Vulkan scheint heute das wichtigere Ziel zu sein, und es gibt bereits OpenGL-Implementierungen.
  • Wie will man die 4.1-Barriere durchbrechen? Um neue Funktionen ohne Hardware-Unterstützung zu implementieren, braucht es neue Methoden. Geometrie-Shader, Tessellation und Transform Feedback werden mit Compute-Shadern umgesetzt, Cull Distance mit transformierten Interpolationswerten und Clip Control mit dem Epilog des Vertex-Shaders. Ich frage mich, wie viel davon im M1-GPU-Code bereits umgesetzt wird und wie viel sich über andere Funktionen wiederverwenden lässt.
  • Noch eine Empfehlung, ein weiterer Artikel, den ich mit mehr Wissen und Geduld im Kontext besser verstehen möchte. Trotzdem lesen sich Alyssas Texte unterhaltsam.
  • Es ist verrückt, dass OpenGL im 3D-Gaming nur deshalb verwendet wurde, weil John Carmack in den 90ern für Quake II darauf fixiert war.