A Collabora anunciou a implementação no driver PanVK do suporte ao API gráfico Vulkan 1.1 (anteriormente apenas a versão Vulkan 1.0 era suportada). O driver oferece suporte ao API gráfico Vulkan em dispositivos com GPU ARM baseados na arquitetura V10, como Mali-G610 e Mali-G310. Além da compatibilidade com o API Vulkan 1.1, o código do PanVK foi ampliado para incluir suporte a muitas extensões de versões mais recentes do Vulkan, mas a compatibilidade total com o Vulkan 1.2 ainda não foi alcançada. As seguintes extensões foram implementadas:
- 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
O suporte ao Vulkan 1.1 no PanVK já foi aceito na branch da qual está sendo desenvolvido o lançamento do Mesa 25.0. Além disso, o PanVK foi incluído na lista de drivers disponíveis para uso no Mesa por padrão (anteriormente o PanVK não aparecia na lista de drivers, e seu uso exigia a definição de uma variável de ambiente). Em sistemas ARM, a construção do PanVK está habilitada por padrão. O código para suportar extensões individuais do Vulkan 1.2 foi enviado para inclusão na composição principal do Mesa.
Adicionalmente, foi destacada a extensão da funcionalidade do driver OpenGL aberto Panfrost, desenvolvido para GPUs ARM Mali em paralelo com o driver Vulkan PanVK:
- Para aumentar a eficiência no uso da largura de banda, o driver inclui por padrão o mecanismo de "eliminação de transações", que descarta operações redundantes (por exemplo, operações de reescrita de fragmentos que não mudaram desde a última renderização são descartadas).
- Foi adicionado suporte para renderização incremental, permitindo reduzir o consumo de memória ao renderizar um grande número de objetos através do processamento separado de fragmentos (tiles).
- Foi adicionado suporte ao modo AFBC 32×8, utilizado para otimizar a operação com o buffer de saída (scan-out buffer) em certos controladores de display.
- A largura e altura máximas suportadas para texturas foram aumentadas de 8192 para 32768 pixels.
- Foi adicionado suporte ao modo de texturização MTK_FMT_MOD_TILE_16L32S, onde os dados fragmentados são copiados para um buffer temporário não fragmentado antes da renderização (usado para trabalhar com decodificadores de vídeo de hardware presentes no SoC MediaTek).
Fonte: opennet.ru
