Collabora har annonceret implementeringen af støtte til grafiske API Vulkan 1.1 i PanVK-driveren (tidligere var kun Vulkan 1.0 understøttet). Driveren giver støtte til grafiske API Vulkan på enheder med ARM-GPU baseret på V10-arkitekturen, såsom Mali-G610 og Mali-G310. Udover kompatibilitet med API Vulkan 1.1 er der tilføjet støtte til mange udvidelser fra nyere versioner af Vulkan i PanVK-koden, men der er endnu ikke opnået fuld kompatibilitet med Vulkan 1.2. Følgende udvidelser er implementeret:
- 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
Støtten til Vulkan 1.1 i PanVK er allerede inkluderet i den gren, hvorunder Mesa 25.0 bliver udviklet. Derudover er PanVK nu tilføjet til listen over drivere, der er tilgængelige som standard i Mesa (tidligere blev PanVK ikke vist på listen over drivere, og det krævede at indstille en miljøvariabel at bruge det). På ARM-systemer er PanVK bygges som standard inkluderet. Koden til at understøtte specifikke Vulkan 1.2-udvidelser er sendt til integration i hovedversionen af Mesa.
Derudover er funktionaliteten i den åbne OpenGL-driver Panfrost, der udvikles til ARM Mali-GPU'er, blevet udvidet, samtidig med at Vulkan-driveren PanVK udvikles:
- For at øge effektiviteten af båndbredde er der som standard inkluderet en mekanisme til "transaction elimination" i driveren, som fjerner overflødige operationer (for eksempel bliver operationer til omskrivning af fragmenter, der ikke har ændret sig siden den sidste rendering, fjernet).
- Der er tilføjet støtte til inkrementel rendering, som reducerer hukommelsesforbruget ved rendering af et stort antal objekter ved at behandle fragmenter (tiles) separat.
- Støtten til AFBC 32×8-tilstand er blevet tilføjet, hvilket anvendes til at optimere arbejdet med output-bufferen (scan-out buffer) i nogle display controllere.
- Den maksimalt understøttede bredde og højde af teksturer er blevet øget fra 8192 til 32768 pixel.
- Støtten til teksturtilstand MTK_FMT_MOD_TILE_16L32S er blevet tilføjet, hvor fragmenterede data kopieres til en midlertidig ufragmenteret buffer før rendering (anvendes til arbejde med hardware video-dekodere, der findes i SoC MediaTek).
Kilde: opennet.ru
