Mesa 3D

Mesa 3D
VývojářIntel, AMD, VMware
(dříve Tungsten Graphics, Inc.)
První vydáníúnor 1995
Aktuální verze23.1.5 (2. srpna 2023)
Operační systémMultiplatformní software
Vyvíjeno vC++, C a jazyk symbolických adres
Typ softwaruImplementace OpenGL
Licencelicence MIT
Webmesa3d.org
Některá data mohou pocházet z datové položky.
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Hardwarová akcelerace grafiky v Linuxu a Mesa
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Implementace EGL API v Mesa, libwayland-EGL a Wayland
Rozdíl mezi ovladači DRI a Gallium3D

Mesa 3D (často jen Mesa) je open source[1][2] implementací knihovny 3D grafiky OpenGL pro renderování 3D grafiky na různých platformách. Byla původně vyvinuta v srpnu 1993 Brianem Paulem. Přestože Mesa 3D není oficiálně licencovaná OpenGL implementace, struktura, syntax a sémantika API se shoduje s OpenGL. Ve své současné podobě lze zkompilovat prakticky na všech moderních platformách. Mesa je využívána například v X.Org (X.org je implementace GUI pro systémy Linux, Mac OS X a další BSD systémy).

Vlastnosti

Momentálně Mesa 3D podporuje celkem 9 grafických API: OpenGL, Open GL ES1/ES2/ES3 (podskupina Open GL pro mobilní zařízení a herní konzole), Vulkan, EGL, OpenMAX, OpenCL, VDPAU a VA-API.[3]

Přestože OpenGL je pro Mesa primárním API, není však oficiální náhradou OpenGL a není nijak s OpenGL spojena. Autorizaci autorům Mesa 3D, nikoliv však licenci pro využití syntaxe OpenGL poskytuje Silicon Graphics, Inc.

Pokud podporovaný systém nemá žádné OpenGL řešení, lze jej pomocí Mesa implementovat. Mesa podporuje zařízení například od Intel, AMD, NVIDIA, Qualcomm, Broadcom nebo Vivante a také virtuální grafické procesory VMware a VirGL.[4]

Dříve byly podporovány ovladače pro starší operační systémy (např. MS-DOS, DEC OpenVMS) a grafické procesory (např. ATI Rage 128, S3 Savage, NVIDIA Riva TNT - GeForce 4, Intel i830 - i865). Ovladače byly odstraněny, protože zmíněný software a hardware již prakticky není podporován. Momentálně se kód těchto ovladačů nachází v Git repozitáři Mesa 3D.[5]

Mesa 3D podporuje velkou škálu operačních systémů. Primárně se vyvíjí pro Linux, ale může být použita i na Windows (pomocí Mesa3D-Windows project), Haiku a v jiných UNIX-like OS: BSD a jeho distribuce (FreeBSD, OpenBSD, macOS, NetBSD) nebo Solaris.

Mesa je open-source projekt, proto jej mohou vylepšovat a přispívat k rozvoji jak profesionální, tak dobrovolní vývojáři, kteří se zajímají o rozvoj tohoto projektu. Velké společnosti a mnoho nezávislých vývojářů se podílí na vývoji Mesa, proto je Mesa pravidelně aktualizována. V současnosti jsou největší přispěvatelé firrmy Google, AMD, Intel, Valve, Collabora a VMware.[6]

Od roku 2016 Mesa 3D plně podporuje OpenGL 4.3 a většinu rozšíření z OpenGL 4.4 a 4.5.

Verze Mesa 3D 12.0 roku 2016 obsahuje implementaci nového API Vulkan od skupiny Khronos Group, která vyvíjí i OpenGL.

Původně se Mesa vyvíjela na platformě FreeDesktop.org. V roce 2018 platforma přemístila vývoj projektu Mesa a dalších (Wayland, X.org, systemd, GStreamer) na platformu GitLab, která poskytuje víc možností pro práci s Git-repozitářemi.[7]

Aktuální verzí Mesa 3D je verze 23.0.3 z 21. dubna 2023.

Reference

V tomto článku byl použit překlad textu z článku Mesa 3D (OpenGL) na anglické Wikipedii.

  1. Mesa 3D license
  2. git source code repository
  3. Introduction. Mesa3D [online]. [cit. 2022-04-27]. Dostupné online. (anglicky) 
  4. Project History. Mesa3D [online]. [cit. 2022-04-27]. Dostupné online. (anglicky) 
  5. Deprecated Systems and Drivers. Mesa3D [online]. [cit. 2022-04-27]. Dostupné online. (anglicky) 
  6. Mesa Documentation. Mesa3D [online]. [cit. 2022-04-27]. Dostupné online. (anglicky) 
  7. FreeDesktop.org Migrating To GitLab. Phoronix [online]. [cit. 2022-04-27]. Dostupné online. (anglicky) 

Související články

  • Gallium3D

Externí odkazy

Média použitá na této stránce

Linux Graphics Stack 2013.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Illustrates the en:Linux graphics stack current as of 2013-08-24; Mesa-Names correspond to packages inside the en:Debian repositories, e.g. libGL-mesa-dri
Wayland display server protocol.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
en:Wayland (display server protocol)
① The en:evdev module of the en:Linux kernel gets an event and sends it to the en:Wayland compositor. This is similar to the X case, which is great, since we get to reuse all the input drivers already in the kernel.
② The Wayland compositor looks through its scenegraph to determine which window should receive the event. The scenegraph corresponds to what's on screen and the Wayland compositor understands the transformations that it may have applied to the elements in the scenegraph. Thus, the Wayland compositor can pick the right window and transform the screen coordinates to window local coordinates, by applying the inverse transformations. The types of transformation that can be applied to a window is only restricted to what the compositor can do, as long as it can compute the inverse transformation for the input events.
③ As in the X case, when the client receives the event, it updates the UI in response. But in the Wayland case, the rendering happens in the client, and the client just sends a request to the compositor to indicate the region that was updated.
④ The en:Wayland compositor collects damage requests from its clients and then re-composites the screen. The compositor can then directly issue an en:ioctl to schedule a pageflip with KMS
Gallium3D vs DRI graphics driver model.svg
Autor: ScotXW, Licence: CC BY-SA 3.0
Illustrates the differences between the en:Gallium3D and the en:Direct Rendering Infrastructure graphics driver models, cf. Direct rendering infrastructure