Mesa 21.2, OpenGL:n ja Vulkanin ilmainen toteutus, julkaisu

Kolmen kuukauden kehitystyön jälkeen julkaistiin OpenGL:n ja Vulkan API:n ilmainen toteutus - Mesa 21.2.0. Mesa 21.2.0 -haaran ensimmäinen julkaisu on kokeellisessa tilassa - koodin lopullisen vakautuksen jälkeen julkaistaan ​​vakaa versio 21.2.1.

Mesa 21.2 sisältää täyden tuen OpenGL 4.6:lle 965-, iris- (Intel-), radeonsi- (AMD-), zink- ja llvmpipe-ajureille. OpenGL 4.5 -tuki on saatavilla AMD (r600) ja NVIDIA (nvc0) GPU:ille ja OpenGL 4.3 -tuki virglille (Virgil3D virtuaalinen GPU QEMU/KVM:lle). Vulkan 1.2 -tuki on saatavilla Intel- ja AMD-korteille sekä emulaattoritilassa (vn), Vulkan 1.1 -tuki on saatavilla Qualcomm-grafiikkasuorittimille ja lavapipe-ohjelmiston rasteroijalle ja Vulkan 1.0 on saatavana Broadcom VideoCore VI -grafiikkasuorittimille (Raspberry Pi 4) .

Tärkeimmät innovaatiot:

  • Asahi OpenGL -ohjain sisältyy Apple M1 -sirujen GPU:n alustavaan tukeen. Ohjain käyttää Gallium-käyttöliittymää ja tukee useimpia OpenGL 2.1:n ja OpenGL ES 2.0:n ominaisuuksia, mutta se ei vielä sovellu useimpien pelien pyörittämiseen. Ohjainkoodi perustuu Gallium-viite noop -ohjaimeen, ja osa koodista on siirretty Panfrost-ohjaimesta, jota kehitetään ARM Mali GPU:lle.
  • Crocus OpenGL -ohjain sisältyy tuen vanhemmille Intel GPU:ille (perustuu Gen4-Gen7-mikroarkkitehtuureihin), joita Iris-ohjain ei tue. Toisin kuin i965-ohjain, uusi ohjain perustuu Gallium3D-arkkitehtuuriin, joka ulkoistaa muistinhallintatehtävät Linux-ytimen DRI-ohjaimelle ja tarjoaa valmiin tilaseurannan, joka tukee tulosobjektien välimuistin uudelleenkäyttöä.
  • Mukana on PanVk-ohjain, joka tukee Vulkan-grafiikkasovellusliittymää ARM Mali Midgard- ja Bifrost-grafiikkasuorittimille. PanVk on Collaboran työntekijöiden kehittämä, ja se on jatkoa OpenGL:ää tukevan Panfrost-projektin kehitykselle.
  • Panfrost-ohjain Midgard GPU:ille (Mali T760 ja uudemmat) ja Bifrost GPU:ille (Mali G31, G52, G76) tukee OpenGL ES 3.1:tä. Tulevaisuuden suunnitelmiin kuuluu Bifrost-sirujen suorituskyvyn lisääminen ja Valhall-arkkitehtuuriin perustuvan GPU-tuen käyttöönotto (Mali G77 ja uudemmat).
  • 32-bittiset x86-koontiversiot käyttävät matemaattisissa laskelmissa sse87-käskyjä x2-ohjeiden sijaan.
  • NVIDIA GT50x GPU:n (GeForce GT 21×2) Nouveau nv0 -ohjain tukee OpenGL ES 3.1:tä.
  • Vulkan-ohjain TURNIP ja OpenGL-ohjain Freedreno, jotka on kehitetty Qualcomm Adreno GPU:lle, tukevat alustavasti Adreno a6xx gen4 GPU:ta (a660, a635).
  • RADV (AMD) Vulkan -ajuri on lisännyt tuen primitiiviseen teurastukseen käyttämällä NGG (Next-Gen Geometry) -varjostusmoottoreita. Mahdollisuus rakentaa RADV-ohjain Windows-alustalle MSVC-kääntäjän avulla on otettu käyttöön.
  • ANV Vulkan -ohjaimessa (Intel) ja Iris OpenGL -ohjaimessa on tehty valmistelutyötä tulevien Intel Xe-HPG (DG2) -näytönohjainkorttien tueksi. Tämä sisältää säteenseurantaan liittyvät alustavat ominaisuudet ja tuen säteenseurantavarjostimille.
  • Lavapipe-ajuri, joka toteuttaa ohjelmistorasterisoijan Vulkan API:lle (analoginen kuin llvmpipe, mutta Vulkanille, joka kääntää Vulkan API -kutsut Gallium API:ksi), tukee "wideLines" -tilaa (tukee yli 1.0 leveitä linjoja).
  • Vaihtoehtoisten GBM (Generic Buffer Manager) -taustaohjelmien dynaamisen etsimisen ja lataamisen tuki on otettu käyttöön. Muutoksen tavoitteena on parantaa Wayland-tukea järjestelmissä, joissa on NVIDIA-ajurit.
  • Zink-ajuri (OpenGL-sovellusliittymän toteutus Vulkanin päällä, jonka avulla voit saada laitteistokiihdytetyn OpenGL:n, jos järjestelmässä on vain Vulkan API:n tukemiseen rajoittuvia ajureita) tukee OpenGL-laajennuksia GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_ARBhas jatexture_GLxma_terbha. der_clock. Lisätty DRM-muodon muokkaajat (Direct Rendering Manager, VK_EXT_image_drm_format_modifier laajennus käytössä).
  • Laajennusten tuki on lisätty Vulkan-ajureihin RADV (AMD), ANV (Intel) ja lavapipeen:
    • VK_EXT_provoking_vertex (RADV);
    • VK_EXT_extended_dynamic_state2 (RADV);
    • VK_EXT_global_priority_query (RADV);
    • VK_EXT_physical_device_drm (RADV);
    • VK_KHR_shader_subgroup_uniform_control_flow (RADV, ANV);
    • VK_EXT_color_write_enable (RADV);
    • VK_EXT_acquire_drm_näyttö (RADV, ANV);
    • VK_EXT_vertex_input_dynamic_state(lavapipe);
    • VK_EXT_line_rasterization(lavapipe);
    • VK_EXT_multi_draw(ANV, lavapipe, RADV);
    • VK_KHR_erillinen_syvyys_stencil_layouts(lavapipe);
    • VK_EXT_separate_stencil_usage(lavapipe);
    • VK_EXT_extended_dynamic_state2 (lavapipe).

Lähde: opennet.ru

Lisää kommentti