Das Unternehmen Collabora hat die Implementierung der Unterstützung für die Grafik-API Vulkan 1.1 im Treiber PanVK angekündigt (zuvor wurde nur die Version Vulkan 1.0 unterstützt). Der Treiber ermöglicht die Unterstützung der Grafik-API Vulkan auf ARM-GPUs der Architektur V10, wie z. B. Mali-G610 und Mali-G310. Neben der Kompatibilität mit der API Vulkan 1.1 wurden im Code von PanVK viele Erweiterungen aus neueren Vulkan-Versionen hinzugefügt, aber die vollständige Kompatibilität mit Vulkan 1.2 wurde noch nicht erreicht. Folgende Erweiterungen wurden implementiert:
- VK_KHR_8bit_storage
- VK_KHR_dedicated_allocation
- VK_KHR_global_priority
- VK_KHR_index_type_uint8
- VK_KHR_map_memory2
- VK_KHR_multiview (v10+)
- VK_KHR_shader_draw_parameters
- VK_KHR_shader_float16_int8
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_shader_subgroup_rotate (v10+)
- VK_KHR_vertex_attribute_divisor
- VK_KHR_zero_initialize_workgroup_memory
- VK_EXT_4444_formats
- VK_EXT_global_priority_query
- VK_EXT_global_priority
- VK_EXT_host_query_reset
- VK_EXT_image_robustness
- VK_EXT_pipeline_robustness
- VK_EXT_provoking_vertex
- VK_EXT_queue_family_foreign
- VK_EXT_sampler_filter_minmax (v10+)
- VK_EXT_scalar_block_layout
- VK_EXT_subgroup_size_control (v10+)
- VK_EXT_tooling_info
Die Unterstützung für Vulkan 1.1 in PanVK wurde bereits in den Entwicklungszweig aufgenommen, auf dessen Grundlage das Release von Mesa 25.0 entwickelt wird. Darüber hinaus ist PanVK nun Teil der Liste der standardmäßig in Mesa verfügbaren Treiber (zuvor wurde PanVK nicht in der Treiberliste angezeigt und für dessen Nutzung musste eine Umgebungsvariable gesetzt werden). Auf ARM-Systemen ist der Treiber PanVK standardmäßig aktiviert. Der Code zur Unterstützung einzelner Vulkan 1.2-Erweiterungen wurde zur Aufnahme in die Hauptversion von Mesa übergeben.
Zusätzlich wurde die Funktionalität des offenen OpenGL-Treibers Panfrost, der parallel zum Vulkan-Treiber PanVK für ARM Mali GPUs entwickelt wird, erweitert:
- Um die Effizienz der Bandbreitennutzung zu verbessern, wurde im Treiber standardmäßig der Mechanismus „transaction elimination“ aktiviert, der überflüssige Operationen verwirft (z. B. werden Schreibvorgänge von Fragmenten verworfen, die sich seit der letzten Darstellung nicht geändert haben).
- Die Unterstützung für inkrementelles Rendering wurde hinzugefügt, um den Speicherverbrauch beim Rendern einer großen Anzahl von Objekten durch separate Verarbeitung von Fragmenten (Tiles) zu reduzieren.
- Die Unterstützung des AFBC 32×8-Modus wurde hinzugefügt, der zur Optimierung der Verarbeitung mit dem Ausgabepuffer (Scan-Out-Puffer) in bestimmten Display-Controllern verwendet wird.
- Die maximal unterstützte Breite und Höhe von Texturen wurde von 8192 auf 32768 Pixel erhöht.
- Unterstützung für den Texturierungsmodus MTK_FMT_MOD_TILE_16L32S hinzugefügt, bei dem fragmentierte Daten vor dem Rendern in einen temporären nicht fragmentierten Puffer kopiert werden (wird für die Arbeit mit den in SoC MediaTek integrierten Hardware-Videodecodern verwendet).
Quelle: opennet.ru
