Mesa 3D

Mesa 3D

informație
Creator Brian Paul
Dezvoltat de Brian Paul, Tungsten Graphics, Inc. (achiziționat de VMware ), Intel , Linaro și colab.
Prima versiune August 1993
Ultima versiune 21.0.3 (21 aprilie 2021)
Versiune avansată 18.0.0-rc5 (21 martie 2018)
19.1.0-rc5 (5 iunie 2019)
1,0 (Februarie 1995)
21.0.0-rc3 (27 ianuarie 2021)
Depozit gitlab.freedesktop.org/mesa/mesa
Asigurarea calității Integrare continuă
Scris in C , C ++ și asamblare
Sistem de operare Linux , FreeBSD , NetBSD , OpenBSD și Haiku
Tip
Biblioteca grafică Biblioteca software
Biblioteca C ( d )
Licență Licență MIT
Site-ul web mesa3d.org

Mesa 3D este o bibliotecă grafică gratuită , dezvoltată inițial de Brian Paul , de laAugust 1993, Care oferă o implementare generică a OpenGL pentru a realiza grafică tridimensională redată în timp real și pe mai multe platforme . Deși Mesa 3D nu este o implementare oficială OpenGL, structurile, sintaxa și semantica API - ului său sunt cele ale OpenGL.

În Iulie 2007, Mesa 3D este singurul Implementare OpenGL complet open source . Acesta este utilizat în principal de punerea în aplicare X.Org lui X Window System , care utilizează OpenGL pentru randare pentru drivere open source DRI X.Org/OpenGL. X.Org oferă funcționalități esențiale pentru majoritatea aplicațiilor grafice care rulează pe platforme de tip Unix , cum ar fi GNU / Linux .

O actualizare importantă a fost făcută în iulie 2009odată cu încorporarea lucrării efectuate pe Gallium3D , dezvoltată în principal de compania Tungsten Graphics (achiziționată de VMware ) și planificată inițial să înlocuiască Mesa 3D. Această nouă versiune simplifică dezvoltarea driverelor grafice oferind un nivel unic de abstracție cerut de driverele grafice și care poate folosi el însuși diferite procese de accelerare bazate pe OpenGL, OpenGL ES , OpenCL sau chiar Direct3D (ceea ce Wine ar putea atrage). În general, ar trebui să permită o mai bună utilizare a capacităților procesorelor grafice actuale și poate oferi o metodă universală de decodare video. În cele din urmă, Gallium3D face posibilă utilizarea procesorului grafic (GPU) pentru sarcini de calcul, anterior transferate procesorului central (CPU) (vorbim apoi de calcul general pentru GPU sau GPGPU ).

Suport pentru diferite arhitecturi

În arhitectura x86, driverele gratuite pentru procesoarele grafice AMD ( driverele R300 , R600 , Radeon și RadeonSI ) și Nvidia (driver nou ) utilizează Gallium3D. La Intel, pe de altă parte, numai procesoarele i915 generație folosesc galiu, cele mai recente procesoare (i965 arhitectura / șofer), continuă să folosească Mesa pentru conducătorii auto gratuite. Codul de asamblare pentru accelerarea calculelor prin SIMD x86 și x86_64 (AMD64) sunt de asemenea prezenți.

În arhitectura ARM , codul de asamblare pentru accelerarea SIMD ( NEON ) a fost integrat din 2012.

Driverele gratuite, care utilizează Gallium, sunt disponibile în linia principală a Mesa, pentru diferite arhitecturi:

În ceea ce privește procesoarele grafice Mali ARM, o primă versiune a driverului Lima , pentru Mali-400, al cărui dezvoltator a preferat să rămână în afara Mesa, a stagnat din 2012, apoi a fost abandonată în 2013. O nouă versiune a fost lansată.iunie 2017, administrează procesoarele din seria Mali-400 și 450 ale arhitecturii Utgard și ar trebui să fie integrate în Mesa în cursul anului 2018. Alți 2 drivere, Chai pentru arhitectura Midgard (Mail-Txxx) pentru arhitectura Bitfrost (Mail -Gxx) , încep cam în același timp și sunt unificate de la începutul anului 2018, sub numele Panfrost . Driverul comun acceptă OpenGL 3.1 (desktop) și OpenGL ES 3.0 de la începutul anului 2021.

Acceleratorul de redare pur software LLVMpipe , din proiectul Gallium3D, a fost adaptat la arhitectura x86 și la arhitectura ARM . Este implicit legat de Mesa 3D, de la versiunea 10.2, lansată îniunie 2014. Autorii pilotului Panfrost intenționează să-l folosească pentru a permite redarea funcțiilor care nu au fost implementate în faza de dezvoltare.

Caracteristici

Mesa 3D implementează următoarele interfețe de programare grafică :

și drivere pentru hardware grafic.

Împachetări către Vulkan

Următorii drivere pentru a converti diferite API-uri 3D în Vulkan și, astfel, beneficiază de performanța sa și de un consum redus de energie cu aplicații care nu sunt proiectate pentru acest API:

Istoric

Inițial, Mesa 3D făcea toate redările grafice 3D la nivelul procesorului central (CPU) , dar arhitectura lui Mesa 3D s-a deschis pentru a implementa redarea accelerată hardware la nivelul procesorului grafic (GPU) pentru a descărca procesorul central pentru această sarcină. Unul dintre primii drivere care a susținut accelerarea hardware a fost driverul 3dfx pentru API-ul Glide pentru foarte popularele Voodoo I / II și alte plăci grafice . Toate randările au fost realizate indirect în serverul X , ceea ce nu a fost optim în ceea ce privește viteza de redare.

Infrastructura Direct Rendering (DRI) , în cele din urmă a reușit arhitectura veche în cadrul Mesa 3D, oferind o interfață directă de randare 3D pentru aplicații OpenGL.

Versiunea 7.4 a permis hardware-ului suportat (mai întâi Intel, ATI și NVidia mai târziu) să profite de evoluțiile sistemului grafic Linux care sunt Graphics Execution Manager (GEM) și DRI2 , apoi codul Gallium3D a fost integrat în versiunea 7.5.

Versiunea 7.5 lansată pe 17 iulie 2009 implementează OpenGL versiunea 2.1.

Versiunea 7.6, lansată pe 28 septembrie 2009, include suport OpenVG și o implementare alfa a llvmpipe ( mașină virtuală de nivel scăzut ) dezvoltată de José Fonseca și Zack Rusin pentru VMware , făcând posibilă accelerarea anumitor părți ale codului în timpul interpretării pur software prin precompilarea codului.

Versiunea 7.7, lansată pe 21 decembrie 2009, adaugă driverul Gallium „  SVGA  ” de la VMware, permițând sistemelor oaspeți să beneficieze de accelerarea 3D în contextul virtualizării .

Versiunea 8.0 lansată pe 9 februarie 2012 implementează versiunea 3.0 a OpenGL.

Versiunea 9.0, lansată pe 8 octombrie 2012, aduce suport pentru OpenGL 3.1. În ceea ce privește în mod specific driverele gratuite bazate pe Gallium3D, această versiune adaugă suportul OpenCL pentru cipurile Nvidia și AMD (driverul R600g pare totuși cel mai avansat dintre driverele gratuite în materie) și cel al VDPAU (pentru moment limitat la MPEG1 și MPEG2).

Versiunea 9.1, lansată pe 22 februarie 2013, aduce suport pentru OpenGL ES 3.0.

Versiunea 9.2, lansată pe 27 august 2013, integrează driverul Gallium3D pentru cipurile Adreno , proiectat de Qualcomm pentru a echipa SoC-urile ARM Snapdragon .

Versiunea 10.0, lansată pe 30 noiembrie 2013, integrează DRI3 și oferă suport pentru OpenGL 3.2 și 3.3.

Versiunea 10.1, lansată pe 4 martie 2014, îmbunătățește suportul OpenGL 3.3 prin adăugarea unor cipuri nVidia și ATI.

Versiunea 10.2, lansată 6 iunie 2014, este primul care este legat implicit de llvmpipe . Acest lucru îmbunătățește foarte mult randarea software-ului (fără accelerarea de către un cip grafic).

Versiunea 10.3, lansată pe 19 septembrie 2014, îmbunătățește suportul OpenGL 4.x prin adăugarea de funcții ale acestui API.

Versiunea 10.4 a fost lansată pe 14 decembrie 2014.

Versiunea 11.0, lansată pe 12 septembrie 2015 implementează OpenGL 4.1.

Versiunea 12.0, lansată pe 8 iulie 2016implementează OpenGL 4.3, adaugă suport parțial pentru Vulkan .

Versiunea 13.0 lansată pe 1 st luna noiembrie în 2016 implementează OpenGL 4.4.

Versiunea 17.0 lansată pe 13 februarie 2017 implementează OpenGL 4.5.

Versiunea 17.1 lansată pe 10 mai 2017 implementează umbrere geometrice în software rasterizer, OpenGL 4.2 pe arhitecturi Intel i965.

Versiunea 17.2 lansată pe 4 septembrie 2017 oferă câteva funcții suplimentare în funcție de arhitecturi.

Versiunea 17.3 lansată pe 8 decembrie 2017 adaugă libtxc_dxtn, activează implicit compresiile de textură GL_EXT_texture_compression_s3tc și GL_ANGLE_texture_compression_dxt, pe arhitecturile care o susțin.

Versiunea 18.0 lansată pe 27 martie 2018 implementează OpenGL 4.5.

Versiunea 19.0 lansată pe 13 martie 2019 implementează OpenGL 4.5.

Versiunea 19.1 lansată pe 11 iunie 2019 implementează OpenGL 4.5.

Versiunea 19.2 lansată pe 25 septembrie 2019, implementează suport Vulkan 1.1, îmbunătățește driverul Panfrost pentru procesoarele grafice ARM Mali , ale familiilor Midgard și, care asociat cu lansarea kernel-ului Linux 5.2, face X11 utilizabil cu acest driver.

Versiunea 20.3, lansată pe 3 decembrie 2020, implementează GL 4.5 pentru llvmpipe, adaugă driverul Lavapipe, echivalentul său pentru Vulkan, Zink, care mapează OpenGL cu Vulkan, acceptă OpenGL 3.3. Noile drivere V3DK (Vulkan pentru Broadcom BCM2711). În cele din urmă, sunt acceptate noi GPU-uri, inclusiv GPU-uri ARM Mali Bifrost prin Panfrost, GPU-uri Intel Gen12 Alder Lake, precum și grafică AMD Dimgrey Cavefish și VanGogh.

Note și referințe

  1. „  http://www.mesa3d.org/intro.html  ”
  2. „  Note de lansare Mesa 21.0.3  ” (accesat la 22 aprilie 2021 )
  3. „  https://cgit.freedesktop.org/mesa/mesa/tag/?h=mesa-18.0.0-rc5  ” (Accesat la 22 martie 2018 )
  4. "  https://lists.freedesktop.org/archives/mesa-dev/2019-June/219864.html  "
  5. „  https://mesa3d.org/VERSIONS  ”
  6. [ANUNȚĂ] 21.0.0-RC3 mesa  " (accesat la 1 st februarie 2021 )
  7. (în) Pagina GalliumCompute wiki dri.freedesktop.org
  8. (în) „The State Of Gallium3D Video Decoding” de Michael Larabel, Phoronix,14 septembrie 2008
  9. (în) „  Mesa - root / src / gallium / drivers / i915  ” pe cgit.Freedesktop.org
  10. "  Mesa - cale: root / src / gallium / drivers / etnaviv  "
  11. (în) "  Mesa - root / src / gallium / drivers / freedreno  "
  12. (în) "  Mesa - root / src / gallium / drivers / regra  "
  13. (în) „  VC4  ” pe contul Github Eric Anholt
  14. (în) "  Mesa - root / src / gallium / drivers / VC4  "
  15. (în) "  Mesa - root / src / gallium / drivers / VC5  "
  16. (în) Alyssa Rosenzweig, „  Desktop OpenGL 3.1 este GPU-uri Mali cu Panfrost  ” pe Collabora.com ,13 ianuarie 2021
  17. (în) Michael Larabel, „  Mesa 12.0 lansat cu suport OpenGL 4.3, Intel Vulkan și multe alte caracteristici  ” pe Phoronix.com ,8 iulie 2016
  18. (în) Jason Ekstrand, „  NIR: Un nou IR de compilare pentru Mesa  ” pe jlekstrand.net
  19. (în) "  root / src / gallium / state_trackers / nine / README  " pe git Freedesktop
  20. (în) „  OpenVG State Tracker  ”
  21. (în) „  Note de lansare Mesa 10.6.0 / 14 iunie 2015  ”
  22. (ro) ARB_texture_float pe http://cgit.freedesktop.org/mesa
  23. (în) „  Implementare DXVK, D3D11 și D3D10 bazată pe Vulkan pentru Linux / Wine  ” pe contul Github doitsujin
  24. (în) Erik Faye-Lund, „  Zink: Fall Update  ” pe Collabora  (în) ,24 octombrie 2019
  25. (în) „  zink: Introduceți opengl peste vulkan  ” pe cgit.freedesktop.org ,28 octombrie 2019
  26. (în) „Mesa 7.5 Lansat în cele din urmă cu noi funcții” Michael Larabel, Phoronix,18 iulie 2009
  27. (în) „Note despre versiunea Mesa 7.5”
  28. (în) Note de lansare Mesa 7.6, 28 septembrie 2009
  29. (în) „OpenCL / Clover Is Closer To Merging Mesa” de Michael Larabel, Phoronix,2 aprilie 2012
  30. http://mesa3d.org/relnotes/11.0.0.html
  31. http://mesa3d.org/relnotes/12.0.0.html
  32. https://www.mesa3d.org/relnotes/13.0.0.html
  33. https://www.mesa3d.org/relnotes/17.0.0.html
  34. https://www.mesa3d.org/relnotes/17.1.0.html
  35. https://www.mesa3d.org/relnotes/17.2.0.html
  36. https://www.mesa3d.org/relnotes/17.3.0.html
  37. (în) „  Note de lansare Mesa 18.0.0 / 27 martie 2018  ” pe Mesa3d.org
  38. (în) „  Mesa 19.0.0 Release Notes / TBD  ” pe Mesa3d.org
  39. (în) „  Mesa 19.1.0 Note de lansare / 11 iunie 2019  ” pe Mesa3d.org
  40. (în) „  Mesa 19.2.0 Note de lansare / 2019.09.25  ” pe Mesa3d.org
  41. (în) „  20.3.0 rate  ” pe Meda3D.org

Articole similare

linkuri externe