La compañía Collabora ha anunciado la implementación en el controlador PanVK del soporte para la API gráfica Vulkan 1.1 (anteriormente solo se soportaba la versión Vulkan 1.0). El controlador proporciona soporte para la API gráfica Vulkan en dispositivos con GPU ARM basados en la arquitectura V10, como Mali-G610 y Mali-G310. Además de la compatibilidad con la API Vulkan 1.1, se han añadido al código de PanVK soportes para muchas extensiones de versiones más nuevas de Vulkan, aunque la compatibilidad completa con Vulkan 1.2 aún no se ha logrado. Se han implementado las siguientes extensiones:
- 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
El soporte de Vulkan 1.1 en PanVK ya ha sido incorporado a la rama de la que se desarrollará la versión Mesa 25.0. Además, PanVK está incluido en la lista de controladores disponibles para usar en Mesa por defecto (anteriormente PanVK no aparecía en la lista de controladores y para usarlo era necesario establecer una variable de entorno). En sistemas ARM, la compilación de PanVK está habilitada por defecto. El código para dar soporte a extensiones individuales de Vulkan 1.2 ha sido enviado para ser incluido en la composición principal de Mesa.
Adicionalmente, se ha registrado la expansión de las funcionalidades del controlador OpenGL de código abierto Panfrost, que se desarrolla para GPU ARM Mali paralelamente con el controlador Vulkan PanVK:
- Para aumentar la eficiencia en el uso del ancho de banda, se ha habilitado por defecto en el controlador el mecanismo de "eliminación de transacciones", que descarta las operaciones redundantes (por ejemplo, se descartan las operaciones de reescritura de fragmentos que no han cambiado desde la última renderización).
- Se ha añadido soporte para la renderización incremental, que permite reducir el consumo de memoria al renderizar una gran cantidad de objetos mediante el procesamiento separado de fragmentos (tiles).
- Se ha añadido soporte para el modo AFBC 32×8, utilizado para optimizar el funcionamiento con el búfer de salida (scan-out buffer) en algunos controladores de pantalla.
- El ancho y la altura máximos soportados de las texturas se han incrementado de 8192 a 32768 píxeles.
- Se ha añadido soporte para el modo de texturización MTK_FMT_MOD_TILE_16L32S, en el que los datos fragmentados se copian a un búfer temporal no fragmentado antes del renderizado (se utiliza para trabajar con decodificadores de video de hardware presentes en el SoC MediaTek).
Fuente: opennet.ru
