Компанията Collabora обяви реализирането на поддръжка на графичния API Vulkan 1.1 в драйвера PanVK (преди това се поддържаше само версия Vulkan 1.0). Драйверът осигурява поддръжка на графичния API Vulkan на устройства с GPU ARM, базирани на архитектурата V10, като Mali-G610 и Mali-G310. Освен съвместимост с API Vulkan 1.1, в кода на PanVK е добавена поддръжка на много разширения от по-нови версии на Vulkan, но пълната съвместимост с Vulkan 1.2 все още не е постигната. Реализирани са следните разширения:
- 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
Поддръжката на Vulkan 1.1 в PanVK вече е приета в клон, на базата на който се разработва версия Mesa 25.0. Освен това, PanVK е включен в списъка на драйверите, достъпни за употреба в Mesa по подразбиране (преди PanVK не се показваше в списъка на драйверите и за неговото използване е необходимо да се зададе променлива на средата). На ARM системи, компилацията на PanVK е включена по подразбиране. Кодът за поддръжка на отделни разширения Vulkan 1.2 е предаден за включване в основния състав на Mesa.
Допълнително е отбелязано разширяването на функционалността на отворения OpenGL драйвер Panfrost, разработван за GPU ARM Mali, паралелно с Vulkan драйвера PanVK:
- За повишаване на ефективността на използване на пропускната способност в драйвера е включен механизъм по подразбиране „transaction elimination“, който отхвърля излишните операции (например, операциите за записване на фрагменти, които не са се променили от предходното рисуване, се отхвърлят).
- Добавена е поддръжка за инкрементално рисуване, което позволява да се намали потреблението на памет при рендериране на множество обекти чрез отделна обработка на фрагменти (tile).
- Добавена е поддръжка на режима AFBC 32×8, който се използва за оптимизиране на работата с буфера за изход (scan-out buffer) в някои дисплейни контролери.
- Максимално поддържаната ширина и височина на текстурите е увеличена от 8192 до 32768 пиксела.
- Добавена е поддръжка за режим на текстуриране MTK_FMT_MOD_TILE_16L32S, при който фрагментираните данни се копират в временен нефрагментиран буфер преди визуализацията (използва се за работа с хардуерни декодери на видео, присъстващи в SoC MediaTek).
Източник: opennet.ru
