Der Grafikstandard Vulkan 1.3 wurde veröffentlicht

Nach zwei Jahren Arbeit hat das Konsortium Khronos, das für die Entwicklung von Grafikstandards verantwortlich ist, die Spezifikation für Vulkan 1.3 veröffentlicht. Diese definiert die API für den Zugriff auf die Grafik- und Rechenfähigkeiten von GPUs. Die neue Spezifikation enthält alle Korrekturen und Erweiterungen, die in den letzten zwei Jahren gesammelt wurden. Es wird angemerkt, dass die Anforderungen der Spezifikation Vulkan 1.3 auf Grafikhardware der Klasse OpenGL ES 3.1 ausgerichtet sind, was die Unterstützung des neuen Grafik-APIs auf allen GPUs ermöglicht, die Vulkan 1.2 unterstützen. Das Vulkan SDK soll Mitte Februar veröffentlicht werden. Neben der Hauptspezifikation sind zusätzliche Erweiterungen für mobile und Desktop-Geräte der Mittel- und Oberklasse geplant, deren Unterstützung im Rahmen der „Vulkan Milestone“-Edition erfolgen wird.

Ein Implementierungsplan zur Unterstützung der neuen Spezifikation und zusätzlicher Erweiterungen für Grafikprozessoren und Treiber wurde gleichzeitig vorgestellt. Produkte mit Unterstützung für Vulkan 1.3 werden von den Unternehmen Intel, AMD, ARM und NVIDIA in Kürze veröffentlicht. Beispielsweise hat AMD angekündigt, dass die Unterstützung für Vulkan 1.3 in der AMD Radeon RX Vega-Serie sowie in allen Grafikkarten auf Basis der AMD RDNA-Architektur bald zur Verfügung stehen wird. NVIDIA bereitet sich darauf vor, Treiber mit Unterstützung für Vulkan 1.3 für Linux und Windows zu veröffentlichen. ARM wird die Unterstützung für Vulkan 1.3 in den Mali-GPUs hinzufügen.

Hauptneuheiten:

  • Die Unterstützung für vereinfachte Rendering-Pässe (Streamlining Render Passes, VK_KHR_dynamic_rendering) wurde implementiert, was es ermöglicht, das Rendering zu starten, ohne Rendering-Pässe und Framebuffer-Objekte erstellen zu müssen.
  • Neue Erweiterungen wurden hinzugefügt, um die Verwaltung der Kompilierung des Grafik-Pipelines zu vereinfachen (Pipeline, eine Sammlung von Operationen, die vektorbasierte Grafiken und Texturen in ein pixelbasiertes Format umwandelt).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 – fügen zusätzliche dynamische Zustände hinzu, um die Anzahl der zu kompilierenden und anzuheftenden Zustandobjekte zu reduzieren.
    • VK_EXT_pipeline_creation_cache_control — bietet erweiterte Werkzeuge zur Verwaltung, wann und wie Pipelines kompiliert werden.
    • VK_EXT_pipeline_creation_feedback — liefert Informationen über die kompilierten Pipelines zur Vereinfachung von Profilierung und Debugging.
  • Eine Reihe von Funktionen wurde von optional auf verpflichtend umgestellt. Beispielsweise sind jetzt die Implementierung von Puffer-Referenzen (VK_KHR_buffer_device_address) und das Vulkan-Speichermodell verpflichtend, das definiert, wie parallel ausgeführte Threads auf gemeinsam genutzte Daten und Synchronisationsoperationen zugreifen können.
  • Es wurden Mittel für die präzise Steuerung von Untergruppen bereitgestellt (VK_EXT_subgroup_size_control), die es Anbietern ermöglichen, die Unterstützung für mehrere Untergruppengrößen bereitzustellen, während Entwickler die gewünschte Größe auswählen können.
  • Das VK_KHR_shader_integer_dot_product-Erweiterung wurde bereitgestellt, die zur Optimierung von Machine-Learning-Frameworks verwendet werden kann, dank der Hardwarebeschleunigung von Skalarprodukten.
  • Insgesamt sind 23 neue Erweiterungen enthalten:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_maintenance4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronization2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formats
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robustness
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_private_data
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_subgroup_size_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Ein neuer Objekttyp VkPrivateDataSlot wurde hinzugefügt. 37 neue Befehle und über 60 Strukturen wurden implementiert.
  • Die Spezifikation SPIR-V 1.6 wurde aktualisiert, die eine plattformübergreifende Zwischendarstellung von Shadern definiert, die sowohl für Grafik- als auch für parallele Berechnungen verwendet werden kann. SPIR-V sieht eine separate Kompilierungsphase für Shader in die Zwischendarstellung vor, was es ermöglicht, Frontends für verschiedene Hochsprachen zu erstellen. Basierend auf verschiedenen Hochsprachen-Implementierungen wird ein einheitlicher Zwischencode generiert, der von OpenGL-, Vulkan- und OpenCL-Treibern ohne Verwendung eines integrierten Shader-Kompilers genutzt werden kann.
  • Ein Konzept für Kompatibilitätsprofile wurde vorgeschlagen. Google hat als erstes ein Baseline-Profil für die Android-Plattform vorbereitet, das die Bestimmung des Unterstützungsniveaus für erweiterte Vulkan-Funktionalitäten, die über die Vulkan 1.0-Spezifikation hinausgehen, vereinfachen wird. Für die meisten Geräte kann die Unterstützung des Profils ohne OTA-Updates sichergestellt werden.

Wir erinnern daran, dass die Vulkan-API durch die grundlegende Vereinfachung von Treibern bemerkenswert ist. Sie verlagert die Generierung von GPU-Befehlen auf die Anwendungsebene, ermöglicht die Anbindung von Debugging-Schichten, vereinheitlicht die API für verschiedene Plattformen und nutzt ein vorcompiliertes Intermediate Code Representation zur Ausführung auf der GPU. Um hohe Leistung und Vorhersagbarkeit zu gewährleisten, bietet Vulkan Anwendungen die Möglichkeit, GPU-Operationen direkt zu steuern und unterstützt eingehend die Mehrfachverarbeitung von GPU-Befehlen, was die durch den Treiber verursachten Overhead minimiert. Dadurch werden die im Treiber realisierten Funktionen erheblich vereinfacht und werden vorhersagbarer. Beispiele für solche Operationen sind das Management des Speichers und die Fehlerverarbeitung, die in OpenGL auf der Treiberebene ausgeführt werden und in Vulkan auf die Anwendungsebene verlagert wurden.

Vulkan deckt alle verfügbaren Plattformen ab und bietet eine einheitliche API für Desktop-, mobile Systeme und das Web. Dadurch kann eine gemeinsame API für verschiedene Grafikkarten und Anwendungsgebiete genutzt werden. Dank der mehrschichtigen Architektur von Vulkan, die die Erstellung von Werkzeugen ermöglicht, die mit beliebigen GPUs arbeiten, können Hardwarehersteller Standardwerkzeuge zur Codeüberprüfung, Debugging und Profiling bei der Entwicklung verwenden. Für die Erstellung von Shadern wird ein neues tragbares Zwischenformat SPIR-V angeboten, das auf LLVM basiert und grundlegende Technologien mit OpenCL teilt. Für das Management von Geräten und Bildschirmen in Vulkan bietet das WSI (Window System Integration)-Interface ähnliche Funktionalitäten wie EGL in OpenGL ES. Die Unterstützung von WSI ist sofort in Wayland verfügbar – alle Anwendungen, die Vulkan nutzen, können in einer unveränderten Umgebung gestartet werden. Server Die Möglichkeit, über WSI zu arbeiten, wird auch für Android, X11 (mit DRI3), Windows, Tizen, macOS und iOS bereitgestellt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster