Firma Collabora ogłosiła realizację wsparcia dla graficznego API Vulkan 1.1 w sterowniku PanVK (wcześniej wspierana była tylko wersja Vulkan 1.0). Sterownik zapewnia wsparcie dla graficznego API Vulkan na urządzeniach z GPU ARM opartych na architekturze V10, takich jak Mali-G610 i Mali-G310. Oprócz zgodności z API Vulkan 1.1, kod PanVK zyskał wsparcie dla wielu rozszerzeń z nowszych wersji Vulkan, ale pełna zgodność z Vulkan 1.2 nie została jeszcze osiągnięta. Zrealizowano następujące rozszerzenia:
- 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
Wsparcie dla Vulkan 1.1 w PanVK zostało już przyjęte do gałęzi, na podstawie której opracowywana jest wersja Mesa 25.0. Dodatkowo, PanVK został wpisany na listę sterowników dostępnych do użytku w Mesa domyślnie (wcześniej PanVK nie był wyświetlany na liście sterowników i jego użycie wymagało ustawienia zmiennej środowiskowej). Na systemach ARM kompilacja PanVK jest domyślnie włączona. Kod do wsparcia poszczególnych rozszerzeń Vulkan 1.2 został przekazany do włączenia w główny skład Mesa.
Dodatkowo zauważono rozszerzenie funkcjonalności otwartego sterownika OpenGL Panfrost, opracowywanego dla GPU ARM Mali równolegle ze sterownikiem Vulkan PanVK:
- Aby zwiększyć efektywność wykorzystania przepustowości, w sterowniku domyślnie włączono mechanizm 'eliminacji transakcji', który odrzuca zbędne operacje (na przykład odrzucane są operacje nadpisywania fragmentów, które nie zmieniły się od ostatniego renderowania).
- Dodano wsparcie dla inkrementalnego renderowania, co pozwala na zmniejszenie zużycia pamięci przy renderowaniu dużej liczby obiektów dzięki oddzielnemu przetwarzaniu fragmentów (tile).
- Dodano wsparcie dla trybu AFBC 32×8, stosowanego do optymalizacji pracy z buforem wyjściowym (scan-out buffer) w niektórych kontrolerach wyświetlaczy.
- Maksymalna obsługiwana szerokość i wysokość tekstur została zwiększona z 8192 do 32768 pikseli.
- Dodano wsparcie dla trybu teksturowania MTK_FMT_MOD_TILE_16L32S, w którym fragmentowane dane są kopiowane do tymczasowego niefragmentowanego bufora przed renderowaniem (jest używane do pracy z sprzętowymi dekoderami wideo obecnymi w SoC MediaTek).
Źródło: opennet.ru
