Compania Collabora a anunțat implementarea suportului pentru API-ul grafic Vulkan 1.1 în driverul PanVK (anterior era acceptată doar versiunea Vulkan 1.0). Driverul oferă suport pentru API-ul grafic Vulkan pe dispozitive cu GPU ARM pe baza arhitecturii V10, cum ar fi Mali-G610 și Mali-G310. Pe lângă compatibilitatea cu API-ul Vulkan 1.1, codul PanVK a adăugat suport pentru multe extensii din versiunile mai noi de Vulkan, dar compatibilitatea completă cu Vulkan 1.2 nu a fost încă realizată. Au fost implementate următoarele extensii:
- 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
Suportul Vulkan 1.1 în PanVK a fost deja acceptat în ramura pe baza căreia se dezvoltă versiunea Mesa 25.0. În plus, PanVK este inclus în lista driverelor disponibile pentru utilizare în Mesa în mod implicit (anterior, PanVK nu apărea în lista driverelor și pentru utilizarea sa trebuia setată o variabilă de mediu). Pe sistemele ARM, compilarea PanVK este inclusă implicit. Codul pentru suportul extensiilor individuale Vulkan 1.2 a fost trimis pentru a fi inclus în compunerea principală a Mesa.
De asemenea, s-a remarcat extinderea funcționalității driverului OpenGL deschis Panfrost, dezvoltat pentru GPU-urile ARM Mali, în paralel cu driverul Vulkan PanVK:
- Pentru a îmbunătăți eficiența utilizării lățimii de bandă, driverul include implicit mecanismul „eliminării tranzacțiilor”, care elimină operațiunile redundante (de exemplu, operațiile de rescriere a fragmentelor care nu s-au modificat de la ultima randare sunt eliminate).
- A fost adăugat suport pentru randarea incrementală, facilitând reducerea consumului de memorie în procesul de randare a unui număr mare de obiecte prin procesarea separată a fragmentelor (tile).
- A fost adăugat suport pentru modul AFBC 32×8, utilizat pentru optimizarea funcționării cu bufferul de ieșire (scan-out buffer) în anumite controlere de afișare.
- Lățimea și înălțimea maxim acceptate ale texturilor au fost crescute de la 8192 la 32768 de pixeli.
- A fost adăugată suportul pentru modul de texturare MTK_FMT_MOD_TILE_16L32S, în care datele fragmentate sunt copiate într-un buffer temporar nefragmentat înainte de redare (utilizat pentru a lucra cu decodoare video hardware prezente în SoC MediaTek).
Sursa: opennet.ro
