Collabora ha annunciato l'implementazione nel driver PanVK del supporto per l'API grafica Vulkan 1.1 (in precedenza era supportata solo la versione Vulkan 1.0). Il driver fornisce supporto per l'API grafica Vulkan su dispositivi con GPU ARM basati sull'architettura V10, come Mali-G610 e Mali-G310. Oltre alla compatibilità con l'API Vulkan 1.1, nel codice di PanVK è stato aggiunto il supporto per molte estensioni delle versioni più recenti di Vulkan, ma la piena compatibilità con Vulkan 1.2 non è ancora stata raggiunta. Sono state implementate le seguenti estensioni:
- 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
Il supporto per Vulkan 1.1 in PanVK è già stato accettato nel ramo su cui si basa il rilascio di Mesa 25.0. Inoltre, PanVK è incluso nell'elenco dei driver disponibili per l'uso in Mesa di default (in precedenza PanVK non era visualizzato nell'elenco dei driver e per utilizzarlo era necessario impostare una variabile d'ambiente). Sui sistemi ARM, la compilazione di PanVK è abilitata di default. Il codice per il supporto delle singole estensioni Vulkan 1.2 è stato passato per l'inclusione nel componente principale di Mesa.
In aggiunta, è stata ampliata la funzionalità del driver OpenGL open source Panfrost, sviluppato per le GPU ARM Mali, in parallelo con il driver Vulkan PanVK:
- Per migliorare l'efficienza dell'uso della larghezza di banda, il driver include di default il meccanismo "transaction elimination", che scarta operazioni ridondanti (ad esempio, vengono eliminate le operazioni di sovrascrittura dei frammenti che non sono state modificate dall'ultima resa).
- Aggiunta la supporto per il rendering incrementale, che consente di ridurre il consumo di memoria durante il rendering di un gran numero di oggetti attraverso l'elaborazione separata dei frammenti (tile).
- Aggiunta la supporto per la modalità AFBC 32×8, utilizzata per ottimizzare il funzionamento con il buffer di uscita (scan-out buffer) in alcuni controller di visualizzazione.
- La larghezza e l'altezza massimamente supportate delle texture sono state aumentate da 8192 a 32768 pixel.
- È stata aggiunta la supporto per la modalità di texturizzazione MTK_FMT_MOD_TILE_16L32S, in cui i dati frammentati vengono copiati in un buffer temporaneo non frammentato prima della resa (utilizzata per lavorare con i decoder hardware video presenti nei SoC MediaTek).
Fonte: opennet.ru
