Das Unternehmen Collabora hat die Implementierung des Grafik-APIs Vulkan 1.1 im PanVK-Treiber angekündigt (zuvor wurde nur die Version Vulkan 1.0 unterstützt). Der Treiber ermöglicht die Unterstützung des Grafik-APIs Vulkan auf Geräten mit ARM-GPU, die auf der Architektur V10 basieren, wie zum Beispiel Mali-G610 und Mali-G310. Neben der Kompatibilität mit dem API Vulkan 1.1 wurde im Code von PanVK die Unterstützung vieler Erweiterungen aus neueren Vulkan-Versionen hinzugefügt, aber die vollständige Kompatibilität mit Vulkan 1.2 ist derzeit 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 Branch integriert, auf dessen Basis die Version Mesa 25.0 entwickelt wird. Darüber hinaus ist PanVK nun standardmäßig in der Liste der Treiber, die für Mesa zur Verfügung stehen, enthalten (zuvor wurde PanVK nicht in dieser Liste angezeigt, und um ihn nutzen zu können, musste eine Umgebungsvariable gesetzt werden). Auf ARM-Systemen ist der Build von PanVK standardmäßig aktiviert.
Zusätzlich wurde die Funktionalität des offenen OpenGL-Treibers Panfrost hervorgehoben, der parallel zum Vulkan-Treiber PanVK für ARM Mali GPUs entwickelt wird:
- Um die Effizienz der Bandbreitennutzung zu erhöhen, ist im Treiber standardmäßig der Mechanismus "Transaction Elimination" aktiviert, der redundante Operationen eliminiert (beispielsweise werden Schreiboperationen von Fragmenten, die sich seit der letzten Darstellung nicht geändert haben, verworfen).
- Die Unterstützung für inkrementelles Rendering wurde hinzugefügt, was den Speicherverbrauch beim Rendern einer großen Anzahl von Objekten durch getrennte Verarbeitung von Fragmenten (Tiles) reduziert.
- Die Unterstützung für den AFBC 32×8 Modus wurde hinzugefügt, der zur Optimierung der Arbeit mit dem 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.
- Die Unterstützung für den Texturierungsmodus MTK_FMT_MOD_TILE_16L32S wurde hinzugefügt, bei dem fragmentierte Daten vor dem Rendering in einen temporären, nicht fragmentierten Puffer kopiert werden (verwendet für die Arbeit mit Hardware-Videodecodern, die in MediaTek SoCs vorhanden sind).
Quelle: opennet.ru
