Nach fast drei Jahren Arbeit hat das Konsortium Khronos, das sich mit der Entwicklung grafischer Standards beschĂ€ftigt, die Spezifikation Vulkan 1.4 veröffentlicht, die eine API fĂŒr den Zugriff auf die grafischen und rechnerischen FĂ€higkeiten von GPUs definiert. Die neue Spezifikation umfasst die angehĂ€uften Erweiterungen, die zuvor als optional eingestuft wurden, und bietet zudem eine Reihe neuer Funktionen sowie erhöhte Mindestanforderungen an die Hardware. Das Vulkan SDK wird voraussichtlich im Januar 2025 veröffentlicht.
Produkte, die Vulkan 1.4 unterstĂŒtzen, werden von den Unternehmen AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm und Samsung vorbereitet. Die offenen Treiber fĂŒr AMD GPUs (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) und Qualcomm (tu), die im Rahmen des Mesa-Projekts entwickelt werden, haben bereits alle KompatibilitĂ€tstests mit Vulkan 1.4 aus dem CTS (Khronos Conformance Test Suite) bestanden und sind in die Liste der zertifizierten Treiber aufgenommen worden. Zu der Liste gehören auch die Treiber von Samsung und Qualcomm fĂŒr die Android-Plattform sowie die Treiber fĂŒr die GPU PowerVR D-Series DXT* von Imagination Technologies und proprietĂ€re Treiber von NVIDIA.
Hauptneuerungen:
- Es wurde UnterstĂŒtzung fĂŒr den Mechanismus "Streaming Transfers" hinzugefĂŒgt, der fĂŒr die Ăbertragung groĂer Datenmengen zwischen dem Hauptsystem (Host) und dem grafischen GerĂ€t gedacht ist, ohne dabei das Rendering zu unterbrechen oder dessen Leistung zu verringern. Der Mechanismus wird durch eine neue Erweiterung VK_EXT_host_image_copy umgesetzt, deren UnterstĂŒtzung optional ist.
- Die auf die Leistungssteigerung abzielenden Funktionen wurden zu einer Pflicht gemacht:
- Push Descriptors â die Möglichkeit, Aktualisierungen von Deskriptoren direkt in den Befehls-Puffer zu schreiben, anstatt separate DeskriptorsĂ€tze zu erstellen und diese an den Befehls-Puffer zu binden.
- VK_KHR_dynamic_rendering_local_read â ermöglicht das Lesen aus eingebetteten Puffern (Attachments) und Ressourcen, die von vorhergehenden Fragment-Shadern geschrieben wurden, im Rahmen von dynamischen Rendering-Passes.
- VK_EXT_scalar_block_layout â ermöglicht die Verwendung einer C-Ă€hnlichen Struktur fĂŒr SPIR-V-Blöcke, in der nicht-skalare Typen basierend auf der GröĂe ihrer Komponenten ausgerichtet werden können.
- Die Erweiterungen VK_KHR_maintenance5 und VK_KHR_maintenance6 sind enthalten, die unterstĂŒtzende Befehle und Strukturen zur Vereinfachung des Ressourcen- und Shader-Managements bereitstellen.
- Die UnterstĂŒtzung fĂŒr Rendering mit einer Auflösung von 8K (7680 x 4320 Pixel) und bis zu 8 unabhĂ€ngigen Rendering-Puffern ist garantiert.
- Im Lieferumfang sind folgende Erweiterungen enthalten:
- VK_KHR_global_priority
- VK_KHR_index_type_uint8
- VK_KHR_line_rasterization
- VK_KHR_load_store_op_none
- VK_KHR_map_memory2
- VK_KHR_push_descriptor
- VK_KHR_shader_expect_assume
- VK_KHR_shader_float_controls2
- VK_KHR_shader_subgroup_rotate
- VK_KHR_vertex_attribute_divisor
- VK_EXT_pipeline_protected_access
- VK_EXT_pipeline_robustness
- Viele zuvor optionale Funktionen wurden als verpflichtend eingestuft.
- Eine groĂe Anzahl neuer Befehle und Strukturen wurde hinzugefĂŒgt.
Die Vulkan-API zeichnet sich durch eine drastische Vereinfachung der Treiber aus, durch die Auslagerung der GPU-Befehlsgenerierung auf die Anwendung, die Möglichkeit, Debugging-Schichten einzubinden, die Vereinheitlichung der API fĂŒr verschiedene Plattformen und die Verwendung eines vorcompilierten, zwischenliegenden Codes zur AusfĂŒhrung auf der GPU.
Um hohe Leistung und Vorhersagbarkeit zu gewĂ€hrleisten, bietet Vulkan den Anwendungen Mittel zur direkten Steuerung von GPU-Operationen und unterstĂŒtzt die Mehrfachverarbeitung von GPU-Befehlen, was die vom Treiber verursachten Overheads minimiert und die vom Treiber umgesetzten Funktionen erheblich vereinfacht und vorhersagbarer macht. Beispielsweise werden im OpenGL auf der Treiberebene realisierte Operationen wie Speicherverwaltung und Fehlerbehandlung in Vulkan auf Anwendungsebene verschoben.
Vulkan deckt alle verfĂŒgbaren Plattformen ab und bietet eine einheitliche API fĂŒr Desktop-, mobile Systeme und Web, sodass eine gemeinsame API fĂŒr verschiedene Grafikprozessoren und Anwendungsbereiche verwendet werden kann. Dank der mehrschichtigen Architektur von Vulkan, die die Entwicklung von Tools fĂŒr alle GPUs ermöglicht, können Hardwarehersteller bei der Entwicklung Standardtools fĂŒr CodeĂŒberprĂŒfung, Debugging und Profiling nutzen.
Zur Erstellung von Shadern wird eine tragbare ZwischenreprĂ€sentation namens SPIR-V angeboten, die auf LLVM basiert und gemeinsame grundlegende Technologien mit OpenCL nutzt. Mit Vulkan kann auch die Shader-Sprache HLSL, die in DirectX verwendet wird, durch ihre Ăbersetzung in SPIR-V verwendet werden. Zur Verwaltung von GerĂ€ten und Bildschirmen bietet Vulkan die Schnittstelle WSI (Window System Integration), die Ă€hnliche Aufgaben wie EGL in OpenGL ES löst. Die WSI-UnterstĂŒtzung ist standardmĂ€Ăig in Wayland verfĂŒgbar â alle Anwendungen, die Vulkan verwenden, können in einer Umgebung ohne Modifikationen gestartet werden. Server Wayland. Eine UnterstĂŒtzung ĂŒber WSI wird auch fĂŒr Android, X11 (mit DRI3), Windows, Tizen, macOS und iOS bereitgestellt.
Quelle: opennet.ru
