Кіріспе
Mesa, сондай-ақ Mesa3D және The Mesa 3D Graphics Library деп аталатын, 3D графиканы көрсетуге арналған тегін және ашық кодты кітапхана, OpenGL, Vulkan және басқа графикалық API спецификацияларының ашық кодты іске асыру болып табылады. Mesa бұл спецификацияларды жеке өндірушілерге тән графикалық жабдық драйверлеріне аударады. Оның ең маңызды қолданушылары – Intel және AMD компаниялары өздерінің аппараттық құралдары үшін негізінен әзірлеген және қаржылаған екі графикалық драйвер (AMD өздерінің Mesa Radeon және RadeonSI драйверлерін ескірген AMD Catalyst драйверінен артық деп жариялайды, ал Intel тек Mesa драйверін қолдайды). Жекеменшік графикалық драйверлер (мысалы, Nvidia GeForce драйвері және Catalyst) Mesa-ның барлық бөліктерін өздерінің графикалық API-ді іске асыру арқылы алмастырады. Nouveau деп аталатын Mesa Nvidia драйверін жасауға бағытталған ашық кодты жоба көбінесе қоғамдық күштермен жүзеге асырылады. Ойындар сияқты 3D қолданбалардан басқа, қазіргі заманғы дисплей серверлері (X.org-тың Glamor немесе Wayland-тың Weston) OpenGL/EGL-ді пайдаланады; сондықтан графиканың көп бөлігі Mesa арқылы өтеді. Mesa freedesktop.org ұйымында орналасқан және 1993 жылдың тамыз айында Брайан Пол бастаған, қазірге дейін белсенді жұмыс істеп келе жатқан жоба. Mesa кейіннен кеңінен қабылданды және бүгінде әлемнің әртүрлі жеке тұлғалары мен компанияларының көптеген үлестерін қамтиды, соның ішінде OpenGL спецификациясын басқаратын Khronos Group графикалық жабдық өндірушілері де бар. Linux үшін дамуға халықтан жиналған қаржы да үлкен үлес қосты.
Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor specific graphics hardware drivers. Its most important users are two graphics drivers mostly developed and funded by Intel and AMD for their respective hardware (AMD promotes their Mesa drivers Radeon and RadeonSI over the deprecated AMD Catalyst, and Intel has only supported the Mesa driver). Proprietary graphics drivers (e. g., Nvidia GeForce driver and Catalyst) replace all of Mesa, providing their own implementation of a graphics API. An open source effort to write a Mesa Nvidia driver called Nouveau is developed mostly by the community. Besides 3D applications such as games, modern display servers (X. org's Glamor or Wayland's Weston) use OpenGL/EGL; therefore all graphics typically go through Mesa. Mesa is hosted by freedesktop. org and was initiated in August 1993 by Brian Paul, who is still active in the project. Mesa was subsequently widely adopted and now contains numerous contributions from various individuals and corporations worldwide, including from the graphics hardware manufacturers of the Khronos Group that administer the OpenGL specification. For Linux, development has also been partially driven by crowdfunding.
Рендерингтік API-ді іске асыру
Mesa графикалық API-лерді іске асыру платформасы ретінде танымал. Тарихи тұрғыдан алғанда, Mesa негізгі API ретінде OpenGL-ді, сондай-ақ басқа Khronos Group стандарттарын (мысалы, OpenVG, OpenGL ES немесе соңғы EGL) іске асырды. Бірақ Mesa басқа API-лерді де іске асыра алады, шындығында ол 2013 жылдың шілдесінен бастап Glide (қолданыстан шығарылған) және Direct3D 9-ды іске қосты. Mesa Unix сияқты операциялық жүйелерге ғана тән емес: мысалы, Windows-та Mesa DirectX арқылы OpenGL API-ын ұсынады. Mesa OpenGL сияқты графикалық API мен операциялық жүйе ядросындағы графикалық аппараттық драйверлер арасында аудармалау қабатын іске асырады. Әртүрлі графикалық API-лердің қолдау көрсету деңгейі драйверге байланысты, себебі әр аппараттық драйвердің өзіндік іске асырылуы (демек, мәртебесі) бар. Бұл әсіресе «классикалық» драйверлерге қатысты, ал Gallium3D драйверлері қолдау көрсетілетін кеңейтімдер мен нұсқаларды біркелкілендіруге бағытталған ортақ кодты бөліседі. Mesa ағымдағы OpenGL сәйкестігінің жағдайын көрсететін қолдау матрицасын сақтайды. Mesa 10 Intel, AMD/ATI және Nvidia GPU аппараттық құралдары үшін OpenGL 3.3 стандартына сәйкес келеді. Mesa 11 кейбір драйверлер OpenGL 4.1 стандартына сәйкес екені жарияланды. Mesa 12 құрамында OpenGL 4.2 және 4.3, сондай-ақ Intel Vulkan 1.0 қолдауы бар. Mesa 13 Intel үшін OpenGL 4.4 және 4.5 (Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler) үшін қолдау көрсетілетін барлық мүмкіндіктер, бірақ 4.5 Label үшін Khronos Test жоқ) және RADV қауымдық драйвері арқылы тәжірибелік AMD Vulkan 1.0 қолдауын ұсынды. OpenGL ES 3.2 Intel Skylake (Gen9) арқылы қолжетімді. Дайын мүмкіндіктер OpenGL 4.5, Intel Haswell үшін OpenGL 4.5, Nvidia Maxwell және Pascal (GM107+) үшін OpenGL 4.3 сертификатталған. Maxwell 1 (GeForce GTX 750 Ti және GM1xx) құрылғыларында үлкен өнімділік артуы байқалды. Maxwell 2 карталары (GeForce GTX 980 және GM2xx) Nvidia ақпаратысыз төмен жиілікте жұмыс істейді. OpenGL 4.4, 4.5 және OpenGL ES 3.0+ үшін Khronos CTS тест жиынтығы қазір (2017 01 24) ашық кодта қолжетімді, ал Mesa 13 және 17 үшін барлық тесттерді тегін жүргізуге болады. 2017 жылдың 2-ші тұрақты нұсқасы 17.1.0, 2017 жылдың 10 мамырында бірнеше қызықты жақсартулармен шықты. Intel Ivy Bridge үшін OpenGL 4.2+ және Intel Open SWR Rasterizer үшін OpenGL 3.3+ – ең маңызды жаңалықтар. OpenGL-дің модулдік табиғатына байланысты, Mesa OpenGL-дің жаңа нұсқаларынан кеңейтімдерді қолдауға болады, бірақ мұндай нұсқаларға толық қолдауды талап етпейді. Мысалы, 2016 жылдың шілдесінде Mesa OpenGL ES 3.1 және OpenGL ES 3.2 кеңейтімдерін қолдады, бірақ бес кеңейтімнен басқа, сондай-ақ OpenGL немесе OpenGL ES нұсқасының бөлігі емес кеңейтімдерді де қолдады. 3-ші нұсқа 17.2 2017 жылдың қыркүйегінен бастап Intel және AMD үшін 3D-де жаңа OpenGL 4.6 мүмкіндіктері мен жылдамдық жақсартуларымен қолжетімді. Тек 1,4% тесттер Кеплер үшін Nouveau-да OpenGL 4.5 үшін сәтсіз аяқталды. 4-ші нұсқа 17.3 2017 жылдың желтоқсанынан бастап дайын. Көптеген драйверлерде көптеген жақсартулар бар. OpenGL 4.6 толыққанды қолжетімді (Spir V дайын емес). AMD Vulkan драйвері RADV енді Khronos тестіне толық сәйкес келеді. 2018 жылдың 1-ші нұсқасы 18.0, 2018 жылдың наурызынан бастап 2017 жылғы схема бойынша қолжетімді. OpenGL 4.6 толық қолдауы дайын емес, бірақ көптеген мүмкіндіктер мен жақсартулар RC3-те сәтті сынақтан өтті. 10 биттік Intel i965 түсінің қолдауы да ерекшелік болып табылады. Жаңалық – Intel Cannon Lake және AMD Vega-ны Linux нұсқасымен қолдау. AMD Evergreen чиптері (RV800 немесе R900) OpenGL 4.5 қолдауын жақындады. Ескі AMD R600 немесе RV700 чиптері OpenGL 3.3 бағдарламасын OpenGL 4.x кейбір мүмкіндіктерімен ғана қолдай алады. Freedreno – Adreno аппараттық құрылғысының драйвері және OpenGL 3.3 бағдарламасын қолдайтын болады. 2018 жылдың 2-ші нұсқасы 18.1, мамыр айынан бастап қолжетімді. Мақсат – Intel ANV және AMD RADV драйвері бар Vulkan 1.1.72. OpenGL 4.6 spir V-мен бірге негізгі мақсат. Тұрақты жұмыс – AMD R600/Evergreen, Nvidia Tesla және одан бұрынғы, Fermi, Kepler немесе Intel Sandybridge, Ivybridge, Haswell немесе Broadwell сияқты ескі аппараттар үшін драйверлердің ерекшеліктерін және оңтайландыруын аяқтау. ARM архитектурасы Adreno 3xx/4xx/5xx және Broadwell VC4/VC5 Raspi үшін OpenGL ES негізгі нысанасымен үлкен жақсартулар жасады. 2018 жылдың 3-ші нұсқасы 18.2, қыркүйек айында күнтізбеде тұрақты түрде қолжетімді. OpenGL 4.6 және V spir және Vulkan 1.1.80 WIP-де. Виртуалды машиналар үшін VIRGL бағдарламалық драйвері OpenGL 4.3 және OpenGL ES 3.2 үшін дайын. RadeonSI OpenGL ES 3.2 үшін де дайын. OpenGL 4.4 үшін ASTC текстуралық сығымдалу және үйлесімділік режимінің қолдауы (18.1-дегі 3.1), AMD GCN карталары үшін RadeonSI-дегі басқа ерекшеліктер. Intel және AMD үшін жаңа Vulkan 1.1 және басқа да мүмкіндіктер қолжетімді. Mesamatrix-тегі Vulkan туралы қосымша мәліметтерді қараңыз. 2018 жылдың 4-ші нұсқасы 18.3, 2018 жылдың желтоқсанында 18.3.1 тұрақты нұсқасы ретінде шығарылды. Көптеген ерекшеліктер егжей-тегжейлі және жаңа жабдықтарды қолдау негізгі бөліктер. OpenGL 4.6 толық қолдауы дайын емес. 2019 жылдың 1-ші нұсқасы 19.0, наурызда шығарылды. OpenGL 4.6 толық қолдауы дайын емес, бірақ барлық драйверлерде осы бағытта көптеген жақсартулар бар. 2019 жылдың 2-ші нұсқасы 19.1. TGSI-ден NIR-ге көшу OpenGL 4.6 және Spir V және OpenCL бағытындағы негізгі мүмкіндік. RadeonSI NIR-мен дамыс нұсқасында жақсы жұмыс істейді. 2019 жылдың 3-ші нұсқасы 19.2. OpenGL 4.6 жаңа Intel Iris драйвері үшін бета нұсқасында дайын. 2019 жылдың 4-ші нұсқасы 19.3. OpenGL 4.6 Intel i965 үшін дайын және жаңа Iris драйвері үшін опциялық. 2020 жылдың 1-ші нұсқасы 20.0. Vulkan 1.2 AMD RADV және Intel ANV үшін дайын. Intel Iris Intel Broadwell Gen 8+ үшін әдепкі параметр. RadeonSI драйвері TGSI орнына әдепкі параметр ретінде NIR-ді пайдалануға көшті. 2020 жылдың 2-ші нұсқасы 20.1. Көптеген драйверлерде көптеген жақсартулар дайын. Zink – Vulkan арқылы OpenGL үшін жаңа виртуалды драйвер. 2020 жылдың 3-ші нұсқасы 20.2. OpenGL 3.0 Zink үшін жаңа мүмкіндік. LLVMpipe OpenGL 4.3+ (20.3-те 4.5+) қолдайды. ARM Panfrost көптеген модульдермен жақсартылды. Nouveau-да Pascal және одан жоғары құрылғылар үшін OpenCL үшін ортақ виртуалды жад қолжетімді. 2020 жылдың 4-ші нұсқасы 20.3. v3d және v3dv Broadcom аппараттық құралдарымен, мысалы Raspberry Pi 4 үшін OpenGL және Vulkan 1.0 үшін жаңа драйверлер. OpenCL 1.2 clover модулінде толық қолдау көрсетіледі. Zink OpenGL 3.3+ қолдайды. LLVMpipe виртуалды драйвері енді OpenGL 4.5+ және 4.6 көздейді. Lavapipe (бұрын Vallium деп аталған) LLVMpipe ағашының Vulkan бөлігі біріктірілді. Mesa 21.0-да d3d12 OpenGL 3.0-дан 3.3-қа дейін біріктіріледі. Microsoft және Collabora WSL2-де Windows 10-ға Direct 3D 12 арқылы жаңа эмуляцияны әзірлейді. OpenCL 1.2 d3d12-де де мақсат. Жақсартылған OpenGL кодымен SPECviewperf бенчмаркінде 2-ден 5 есеге дейін үлкейту орын алды. Көптеген Mesa 21.0 мүмкіндіктері өнімділікті жақсартады. Жаңа шығарылым 21.0.0 2021 жылдың 11 наурызынан бастап қолжетімді. Mesa 21.1 – 2021 жылдың екінші шығарылымы. OpenGL 4.6+ және OpenGL ES 3.1+ Zink үшін қолжетімді. AMD драйвері 600g ескі Radeon HD 5000 және 6000 карталары үшін көбірек мүмкіндіктермен NIR-ге өтуі мүмкін. Qualcomm Turnip Vulkan 1.1+ және бағдарламалық эмуляция Lavapipe Vulkan 1.1+ жетістіктеріне жетті. Google VirtIO GPU драйвері Venus Vulkan 1.2+ арқылы экспериментальді күйде mesa негізгі ағашына біріктірілді. Mesa 21.2 – 2021 жылдың үшінші шығарылымы. Google Virtual Vulkan IO драйвері Venus толық Vulkan 1.2+ қолдауымен (мезаматрикс) ресми түрде ұсынылатын болады. ARM Panfrost: OpenGL ES 3.1+ қолдауы қолжетімді және panVK – жаңа Vulkan драйвері. ARM Apple M1 үшін жаңа драйвер Asahi арқылы бастапқы қолдау басталды. 21.2 2021 жылдың 4 тамызынан бастап қолжетімді. Ескі жоспар – ескі драйверлерді көптеген артықшылықтары бар классикалық ағашқа бөлу, бағдарламалау, қолдау, қателерді жою үшін Gallium 3D бөлігіне. Мұндағы мәселе Intel i965, Intel Haswell және одан бұрынғы популярлы ескі жабдықтарды қолдаумен, сондай-ақ Windows 10 қолдауымен байланысты. Gallium3D аймағын аяқтау үшін Intel Gen 4 Graphics-ке Haswell-ге дейін Crocus жаңа Gallium3D драйвері әзірленуде, мүмкін 2021 жылдың соңында бөлінеді. Crocus 21.2 нұсқасында опциялық түрде қолжетімді. Amber тармағы Gallium 3D функциялары жоқ ескі драйверлер үшін, мысалы Radeon R200, intel i915 және 965 үшін 21.3.9 нұсқасымен қолжетімді. 22.0 нұсқасында классикалық драйверлер зейнеткерлікке шығарылды. Vulkan 1.3 Intel Anvil және AMD RADV үшін қолжетімді. Microsoft WS... үшін жаңа драйвер „Dozen“ ұсынады.
Рендерингтік API кестесі
Mesa нұсқасы Алғашқы шығарылған күні Соңғы жаңарту Vulkan OpenCL OpenGL OpenGL ES OpenVG EGL GLX Direct3D 1.3.2642023 09 08 3.02020 11 30 4.62017 07 31 3.2.62019 07 10 1.12008 12 03 1.52014 03 19 1.42005 12 16 122015 07 29 2023 05 10 23.1.81.3.244: 1.3+ (Intel Gen8+ to XE, AMD GCN Gen2+ to RDNA3, Lavapipe, Google Venus), 1.1+ (Qualcomm Turnip), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK)1.0, 1.1, 1.2 (толық қолдау), 3.0 (жұмыс істеуде, кейбір функциялар 21.1 нұсқасында), 1.5 1.4 9.0c 2023 02 23 23.0.41.3.232: көбінесе 23.1-ге тең 2022 11 30 22.3.722.3: 1.3.225: 1.3+ (Intel Gen8+, AMD GCN Gen2+, Lavapipe), 1.2+ (Google Venus), 1.1+ (Qualcomm Turnip, Lavapipe (22.2)), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK) 2022 09 21 22.2.5 2022 05 20 22.1.7 2022 03 09 22.0.5 2021 11 17 21.3.921.3: 1.2.190 (Intel Gen8+, AMD GCN Gen2+, Google Venus (21.3), Lavapipe), 1.0+ (AMD GCN1, Broadcom v3dv), 1.1+ (Qualcomm Turnip, Lavapipe (21.1)) 2021 08 04 21.2.6 2021 05 05 21.1.8 2021 03 11 21.0.3 2020 12 03 20.3.520.3: 1.2.158 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv (20.3)) 2020 09 28 20.2.61.0, 1.1, 1.2 (Жұмыс істеуде) кейбір сәйкестік сынақтары сәтсіз аяқталды 2020 05 27 20.1.101.2+ (Intel Gen8+, AMD GCN Gen2+) 2019 12 11 19.3.51.1+ (Intel Gen8+, AMD GCN Gen2+) (19.1: 1.1.104 19.0: 1.1.102, 18.3: 1.1.90, 18.2: 1.1.84) 2019 09 25 19.2.8 4.5 2019 06 11 19.1.8 2019 03 13 19.0.8 2018 12 07 18.3.6 2018 09 07 18.2.8 1.1 (Intel Gen8+, AMD GCN Gen2+)(1.1.73) 2018 03 27 18.0.5 1.0+ (1.0.66) 2017 12 08 17.3.9 1.0 (PC: ANV Intel Gen7+ Ivy Bridge, RADV AMD GCN ғана) (кабельдік: 17.3: 1.0.63, 17.2: 1.0.54, 17.1: 1.0.42, 17.0: 1.0.38, 13.0: 1.0.6, 12.0: 1.0.3) дамуда. Gallium арқылы Есептеу (Clover): кейбір CTS сынақтары сәтсіз аяқталады 1.0 және 1.1 нұсқаларында, 1.2 (Жұмыс істеуде), сондықтан 1.0, 1.1, 1.2 толық емес 2017 09 04 17.2.8 2017 05 10 17.1.10 2017 02 13 17.0.7 2016 11 01 13.0.6 4.4 (4.5 Тест белгісі жоқ) 2016 07 08 3.1 2016 04 04 11.2.2 rowspan="19" 4.1 (Intel 3.3+) 2015 12 15 11.1.4 3.0 2015 09 12 11.0.9 2015 06 15 10.6.9 3.3 1.4 2015 03 06 10.5.9 1.1 2014 12 14 10.4.7 2014 09 19 10.3.7 rowspan="13" 2014 06 06 10.2.9 2014 03 04 10.1.6 2013 11 30 10.0.5 2012 10 08 9.0.3, 9.1.7, 9.2.5 rowspan="9" 3.1 2.0 2012 02 08 8.0.5 3.0 2007 06 22 7.0.4, , 7.11.2 2.1 rowspan="7" rowspan="7" rowspan="7" 2004 01 06 6.0.1 1.5 1.3 2002 11 13 5.0.2 1.4 2001 10 22 4.0.4 1.3 1998 09 3.1, 3.2.1, 3.4.2.1 1.2 1996 10 2.6 1.1 1995 02 1.2.8 1.0
Вулкан
Khronos Group Vulkan API-ді 2015 жылдың наурызында ресми түрде жариялады, ал Vulkan 1.0-ды 2016 жылдың 16 ақпанында ресми түрде шығарды. Vulkan OpenGL-мен үйлесімділікті бұзады және монолиттік күй машинасының тұжырымдамасынан толық бас тартады. Gallium3D-ді әзірлеушілер Vulkan-ды шамамен Gallium3D 2.0 деңгейіндегі нәрсе деп атады. Gallium3D OpenGL күй машинасының іске асырылуын қамтамасыз ететін кодты аппараттық құрылғыға тән кодтан бөледі. 1.3 нұсқасы Mesa 22.0-мен бірге дереу қолжетімді. OpenGL ES 3.1 қолдауы бар аппараттық құрылғылар Vulkan 1.3 және одан бұрынғы деңгейлерде жұмыс істеуі керек. Gallium3D TGSI-ді сіңіргендей, Vulkan SPIR V-ді сіңіреді (SPIR V – «Vulkan» сияқты, Стандартты Портативті Аралық Бейнелеу нұсқасы). Intel компаниясы Vulkan драйверінің нұсқасын спецификация ресми түрде жарияланған күні шығарды, бірақ ол тек сәуір айында негізгі кодқа қосылды, соның салдарынан 2016 жылдың шілдесінде шыққан Mesa 12.0 құрамына енді. I965 драйвері Gallium3D спецификацияларына сәйкес жазылмаған болса, Vulkan драйвері үшін оны Gallium3D-ге қосудың мәні одан да аз. Сол сияқты, оны NIR-мен біріктірудің техникалық себебі де жоқ, бірақ Intel қызметкерлері өздерінің Vulkan драйверін осылай іске асырды. AMD-нің наурыз айында шығарылған және болашақта ашық бастапқы кодты бағдарламалық жасақтама ретінде шығарылатыны және Mesa-ға қосылатыны туралы хабарланған Vulkan драйвері де Gallium3D-ден бас тартады деп күтілуде. RADV – AMD үшін ашық жоба және 13-ші нұсқадан бастап қолжетімді. Khronos Test-ке сәйкестік 17.3 нұсқасында қамтамасыз етілді. Mesa 18.1 нұсқасынан бастап Vulkan 1.0 және 1.1 толық қолдау табады. Nvidia компаниясы Vulkan қолдауымен GeForce драйверін іске қосылған күні шығарды, ал Imagination Technologies (PowerVR), Qualcomm (Adreno) және ARM (Mali) Android және басқа операциялық жүйелер үшін Vulkan драйверлерін шығарды немесе оларды жариялады. Бірақ осы графикалық процессорлар үшін қосымша ашық бастапқы кодты Vulkan іске асырулары қашан пайда болады, әлі белгісіз. Mesa Software Driver VIRGL 2018 жылы GSOC жобалары арқылы виртуалды машиналарды қолдау үшін Vulkan әзірлемесін бастады. Lavapipe – CPU-ға негізделген бағдарламалық Vulkan драйвері және LLVMpipe-тің туысы. Mesa 21.1 нұсқасы Vulkan 1.1+ нұсқасын қолдайды. Google Mesa 21.1 нұсқасында виртуалды машиналар үшін Venus Vulkan драйверін ұсынады, ол Vulkan 1.2+ нұсқасын толық қолдайды. Panfrost PanVK ARM Mali үшін Vulkan 1.1 нұсқасын жетілдіруде, бірақ Mesa 22.0 нұсқасымен 1.0 нұсқасы ғана тұрақты қолжетімді. Project Dozen Windows 10 және 11-дегі Linux Emulation WSL2 үшін Vulkan-ты тікелей 3D 12 (d3d12) форматымен байланыстырады. Mesa 23.2 Vulkan 1.0 нұсқасын толық сәйкестікпен қолдайды және 1.1 және 1.2 нұсқаларының 80% (mesamatrix) қолдау табады.
Жауапты қоршау
Буферді қалған жадтан бөлетін жад кедергісінің бір түрі қоршау деп аталады. Қоршаулар буферге рендерлеу және көрсету операциялары аяқталғанша жазылмауын қамтамасыз ету үшін қолданылады. Имплицитті қоршау графикалық драйверлер мен GPU аппараттық құралдары арасындағы синхрондау үшін пайдаланылады. Қоршау бір компонент буферді пайдалануын тоқтатқанда сигнал береді, соның арқасында оны басқа компонент пайдалана немесе қайта пайдалана алады. Бұрын Linux ядросында имплицитті қоршау механизмі болған, онда қоршау буферге тікелей қосылған (мысалы, GEM дескрипторлары және файл дескрипторлары), бірақ пайдаланушы кеңістігі мұндай қоршаулар туралы хабардар болмайды. Ашық қоршау қоршауларды пайдаланушы кеңістігіне көрсетеді, онда пайдаланушы кеңістігі тікелей рендерлеу менеджерінің (DRM) қосалқы жүйесінен де, GPU-дан да қоршауларды алады. Vulkan ашық қоршауды талап етеді және із кесу және түзету үшін қосымша мүмкіндіктер ұсынады. Linux ядросы 4.9 Android-тің синхрондау шеңберін негізгі кодқа қосты.
Жалпы буферді басқару
Generic Buffer Management (GBM) — бұл Mesa-ға байланысты графикалық рендеринг үшін буферлерді бөлу механизмін қамтамасыз ететін API. GBM, DRM немесе openwfd-де EGL үшін түпкілікті платформа ретінде қолданылады. Ол құратын дескриптор EGL-ді инициализациялау және рендерлеу буферлерін жасау үшін пайдаланылуы мүмкін. Mesa GBM — графикалық драйверге тән буферді басқару API-лерінің (мысалы, әртүрлі libdrm * кітапханалары) абстракциясы, ол Mesa GPU драйверлеріне шақыру арқылы ішкі түрде жүзеге асырылады. Мысалы, Wayland композиторы Weston OpenGL ES 2 арқылы рендеринг жасайды, оны EGL шақыру арқылы бастайды. Сервер «тікелей KMS драйверінде» жұмыс істейтіндіктен, ол EGL DRM платформасын пайдаланады, бұл іс жүзінде GBM платформасы деп аталуы мүмкін, себебі ол Mesa GBM интерфейсіне сүйенеді. XDC2014 конференциясында Nvidia қызметкері Энди Ритгер EGL-ді жақсарту арқылы GBM-ды алмастыруды ұсынды. Бұл ұсыныс қауымдастық тарапынан қолдау таппады, содан кейін Nvidia өз шешімін өзгертті және басқа тәсілге көшті.
Құрылғы драйверлері
Графикалық чипсеттерге арналған қолжетімді тегін және ашық кодты құрылғы драйверлері Mesa жүйесінде "көзбен қадағаланады" (өйткені қолданыстағы тегін және ашық кодты API-лерді жүзеге асыру Mesa ішінде жасалған). Қазіргі уақытта графикалық драйверлерді жазу үшін екі фреймворк бар: "classic" және Gallium3D. Mesa-да қолжетімді драйверлердің кейбіреуі (бірақ барлығы емес) туралы шолу берілген: AMD/ATI R100-ден R800-ге дейін, Intel және Nvidia карталары үшін 3D үдеткіші бар құрылғы драйверлері бар. Бұрын PlayStation 3, S3 Virge & Savage чипсеттері, VIA чипсеттері, Matrox G200 & G400 және тағы да басқалары үшін IBM / Toshiba / Sony Cell процессорына арналған драйверлер болған. Тегін және ашық кодты драйверлер, меншік жабық кодты драйверлермен бәсекелеседі. Аппараттық құжаттаманың және адам күшінің болуына байланысты, тегін және ашық кодты драйверлер жаңа аппаратты 3D үдетуді қолдау жағынан көбінесе артта қалады. Сондай-ақ, 3D рендерингтің өнімділігі көбінесе айтарлықтай баяу болды, бірақ кейбір ерекше жағдайлар да болды. Бүгін Nouveau үшін NVIDIA GPU-дың көпшілігіне қатысты бұл әлі де дұрыс, ал AMD Radeon GPU-да ашық драйвер қазір көбінесе меншік драйвердің өнімділігімен тең келеді немесе одан асып түседі.
There are device drivers for AMD/ATI R100 to R800, Intel, and Nvidia cards with 3D acceleration. Previously drivers existed for the IBM/Toshiba/Sony Cell processor of the PlayStation 3, S3 Virge & Savage chipsets, VIA chipsets, Matrox G200 & G400, and more. The free and open source drivers compete with proprietary closed source drivers. Depending on the availability of hardware documentation and man power, the free and open source driver lag behind more or less in supporting 3D acceleration of new hardware. Also, 3D rendering performance was usually significantly slower with some notable exceptions. Today this is still true for Nouveau for most NVIDIA GPUs while on AMDs Radeon GPUs the open driver now mostly matches or exceeds the proprietary driver's performance.
Тікелей рендерингтік инфрақұрылым (DRI)
3D графикалық карталар дерлік барлық компьютерлерде қолданысқа енген кезде, кейбір компаниялардың қолдауымен жеке адамдар Mesa кітапханасына аппараттық үдетілген 3D рендерингті қосу бойынша жұмыс істей бастады. Тікелей рендеринг инфрақұрылымы (DRI) – бұл Mesa, OpenGL және басқа 3D рендеринг API кітапханаларын құрылғы драйверлерімен және аппараттық құралдармен байланыстырудың бір жолы еді. DRI қолдауы негізгі деңгейде пайдалануға қолайлы болғаннан кейін, ол ресми түрде Mesa кітапханасына қосылды. Бұл Mesa кітапханасын пайдаланғанда қолжетімді аппараттық қолдау ауқымын едәуір кеңейтті. DRI3 2013 жылдан бері Intel драйверімен қолдалады және Vulkan қолдауын және басқа мүмкіндіктерді қосу үшін 2016 жылдан бері кейбір Linux дистрибутивтерінде стандартты болып табылады. Ол сондай-ақ 2016 жылдың соңынан бері AMD аппараттық құралдарында (X.Org Server 1.18.3 және одан кейінгі нұсқалары) стандартты болып табылады.
Бағдарламалық жасақтама
Mesa сонымен қатар графикалық аппараттық үдеткіштері болмаған кезде шейдерлерді процессорда резервтік ретінде іске қосуға мүмкіндік беретін бағдарламалық рендерингтің іске асырылуын қамтиды. Gallium бағдарламалық растерлеушісі softpipe деп аталады, ал LLVM қолдауымен құрастырылғанда llvmpipe деп аталады, ол CPU кодын орындау кезінде жасайды. Mesa 10.x нұсқасы Softpipe (10.3) және LLVMpipe (10.2) үшін OpenGL 3.3+ қолдауын қамтамасыз етеді. Шындығында, OpenGL 4.x мүмкіндіктерінің 80%-ға жуығы Mesa 17.3 нұсқасында іске асырылған (Mesamatrix-ке қараңыз). Mesa 12.0 нұсқасында үлкен деректер жиынтықтары үшін кластерлерде жоғары тиімділікке ие жаңа Intel Rasterizer OpenSWR қол жетімді. Ол ойын немесе көркем суреттерге қарағанда инженерлік визуализацияға көбірек бағытталған және тек x86 процессорларында ғана жұмыс істей алады. Сонымен қатар, OpenGL 3.1+ енді қолдау көрсетіледі. LLVMPIPE-ге қатысты 29-дан 51-ге дейінгі үдеткіш мәндер кейбір мысалдарда өлшенді. OpenSWR үшін OpenGL 3.3+ қолдауы Mesa 17.1 нұсқасынан бастап қолжетімді. VirGL – 2015 жылдан бері OpenGL 3.3 қолдауымен Mesa 11.1 нұсқасында іске асырылған виртуалды машиналарға арналған растерлеуші және Mesa 18 нұсқасынан бастап Mesamatrix-те көрсетілген. Жаңа Mesa 18.2 нұсқасы OpenGL 4.3 және OpenGL ES 3.2 бағдарламаларымен басқаларына қарағанда жақсы қолдау көрсетеді. OpenGL 4.4 және 4.5 мүмкіндіктерінің шамамен 80%-ы қазір дайын. Vulkan әзірлемесі GSOC 2018 жобаларымен басталды. Mesamatrix-тегі VirGL-дің ағымдағы жағдайы – OpenGL 4.6+ және OpenGL ES 3.2+ толық қолдауы, сонымен қатар кейбір қажетті Linux бағдарламалық жасақтамасымен бірге. D3d12 – Microsoft компаниясының WSL2 эмуляциясы үшін Direct3D 12 бағдарламасымен OpenGL 3.3+ және OpenCL 1.2+ жобасы. D3D12 нұсқасы 21.0 нұсқасына қосылды.
Мега драйверлер
Эмма Анхольт бірнеше драйверді бір "мега" драйверге біріктіру идеясын ұсынды. Бұл ортақ Mesa кодының бір данасын бірнеше драйверде пайдалануға мүмкіндік береді (әр драйверде жеке-жеке сақтаудың орнына) және ішкі кітапхана интерфейсін жою арқасында, бөлек ортақ кітапханаға қарағанда жақсы өнімділік қамтамасыз етеді. VDPAU және XvMC күй трекерлері жеке кітапханаларға бөлінді.
shader-db
shader db – әртүрлі компьютерлік ойындар мен сынақтардан жиналған 20,000-ға жуық шейдерлер жинағы, сондай-ақ оларды компиляциялау және статистика жинауға арналған скрипттер. Shader db оптимизацияны тексеруге көмектеседі. Көптеген шейдерлер қолмен жазылмаған, олар жасалғаны анықталды. Яғни, бұл шейдерлер бастапқыда HLSL тілінде жазылып, кейін HLSL2GLSL сияқты аударма бағдарламасы арқылы GLSL-ге аударылған. Мәселе мынада, жасалған код көбінесе оптималды емес. Мэт Тернердің айтуынша, осыны аударма бағдарламасында түзету, Mesa компиляторының осындай ауыр шейдерлермен күресуіне қарағанда әлдеқайда оңай. Shader db тегін және ашық кодты бағдарламалық құрал ретінде қарастырылмайды. Оны заңды түрде пайдалану үшін, шейдерлер кіретін барлық компьютерлік ойындарға лицензия керек.
Бағдарламалық жасақтама архитектурасы
Месадағы «пайдаланушы режиміндегі графикалық құрылғы драйверлері» (UMD) жалпы құрылғы драйвері деп аталатын нәрсемен көп ортақ нәрсеге ие емес. Бірнеше ерекшелік бар:
олар қосымша ядролық режимдегі графикалық құрылғы драйверлерінің үстінде жұмыс істеуге арналған, мысалы, Linux ядросының бір бөлігі ретінде /drivers/gpu/drm/ каталогындағы бастапқы кодта таба аласыз. Әр UMD өзінің ядролық режимдегі әріптесімен арнайы libdrm кітапханасы және жалпы libdrm кітапханасы арқылы байланысады. Бұл бөлім тек libdrm-нен жоғары орналасқан пайдаланушы режиміндегі бөлікті қарастырады.
олар OpenGL сияқты стандарттарда белгіленгендей, шекті күй машинасының (finite state machine) бір бөлігін іске асырады; OpenGL күй машинасының бұл іске асырылуы бірнеше UMD арасында ортақ болуы немесе болмауы мүмкін.
олардың көп бөлігі GLSL сияқты тілдерді қабылдап, соңында машиналық кодты шығаратын компилятордан тұрады. Синтаксистік анализаторлар (parsers) бірнеше UMD арасында ортақ немесе арнайы болуы мүмкін.
they are meant to work on top of additionally existent kernel mode graphics device drivers, that are e. g. available as part of the Linux kernel found in the source code under /drivers/gpu/drm/ Each UMD communicates with its kernel mode counterpart with the help of a specific library, name libdrm specific and a generic one, named libdrm. This section shall look solely on the user mode part above libdrm
there is some implementation of the finite state machine as specified by e. g. OpenGL; this implementation of the OpenGL state machine may be shared among multiple UMDs or not
they consist to a great part of some sort of compiler, that ingests e. g. GLSL and eventually outputs machine code. Parsers may be shared among multiple UMD or be specific
Месаның аралық бейнелері
Mesa-ның бір мақсаты – тиісті GPU-да орындалатын кодты оңтайландыру. Екінші мақсаты – кодты бөлісу. Бағдарламалық құралдарды құжаттаудың орнына, бұл мақалада компиляциялау және оңтайландыру процесінде қолданылатын аралық өрнектемелер қарастырылады. Абстрактілік синтаксистік ағаш (AST) және статикалық бір тапсырмалы форма (SSA формасы) қараңыз.
TGSI
Tungsten Graphics Shader Infrastructure (TGSI) 2008 жылы Tungsten Graphics компаниясымен ұсынылды. Барлық Gallium3D стиліндегі UMD-лер TGSI-ді пайдаланады. NIR қазіргі таңдағы негізгі даму аймағы, сондықтан TGSI тек ескі драйверлер үшін, мысалы r300g драйверінің стандартты инфрақұрылымы үшін қолданылады және бірнеше жыл ішінде қолданудан шығарылады. GLSL-ден TGSI-ге түрлендірілетін код Mesa 22.2 нұсқасында жойылады. Стандартты жағдай – барлық түпнұсқа NIR драйверлері үшін GLSL-ден NIR-ге, содан кейін NIR-ден TGSI-ге түрлендіру. Кейбір ескі TGSI драйверлері осы NIR код жолы арқылы қолдау көрсетіледі. Кейінірек NIR-ден TGSI-ге түрлендіру тек түпнұсқа NIR драйверлері үшін тоқтатылады.
LLVM IR
UMD-нің radeonsi және llvmpipe машиналық кодты шығармайды, оның орнына LLVM IR-ды шығарады. Осыдан бастап LLVM оптимизация жасайды және машиналық кодқа компиляциялайды. Демек, LLVM-нің белгілі бір ең төменгі нұсқасы орнатылған болуы керек.
RADV ACO IR
RADV ACO, Vulkan SPIR V шейдерлері үшін Radeon GPU-ларында (GCN 1+, сондай-ақ GFX6+) соңғы екілік кодты оңтайландыру және жасау үшін NIR-ге ұқсас, өзіндік IR-ді пайдаланады. 20.1.0 нұсқасынан бастап ACO тек RADV (Vulkan драйвері) үшін қолданылады, ал RadeonSI драйверінде әлі қолданылмайды.
Mesa-ның GLSL компиляторы
Mesa-ның GLSL компиляторы өзінің аралық тілін (IR) жасайды. Әрбір драйвердің төмен деңгейдегі аралық тілге (LIR) қатысты өте әртүрлі талаптары болғандықтан, жоғары деңгейдегі аралық тіл (HIR) мен төмен деңгейдегі аралық тіл (LIR) арасында ерекшелік бар.
Галлий3D
Gallium3D – бірнеше операциялық жүйелер, рендеринг немесе бейне үдеткіш API-лері үшін 3D графикалық чипсеттерге арналған құрылғы драйверлерін бағдарламалауды жеңілдетуге бағытталған интерфейстер мен қосымша кітапханалар жиынтығы. Бұл тегін және ашық кодты графикалық құрылғы драйвері. Gallium3D-тің дамуы 2008 жылы Tungsten Graphics компаниясында басталды, ал іске асырылуы freedesktop.org хостингімен Mesa 3D құрамында тегін және ашық бастапқы бағдарламалық қамтамасы ретінде қолжетімді. Басты мақсаты – драйверлерді әзірлеуді оңайлату, әртүрлі драйверлердегі қайталама кодты бір орында біріктіру және заманауи аппараттық архитектураларды қолдау. Бұл жұмыс бөлінісін жақсарту арқылы іске асырылады, мысалы, жад басқаруды ядролық DRI драйверіне жүктеу. Gallium3D 2009 жылдан бері Mesa құрамында және қазіргі уақытта Nvidia (nouveau жобасы), AMD-нің R300–R900, Intel-дің 8+ буын iGPU-лары үшін "Iris" драйвері және басқа да тегін және ашық кодты GPU құрылғы драйверлері үшін қолданылады.
The development of Gallium3D started in 2008 at Tungsten Graphics, and the implementation is available as free and open source software as part of Mesa 3D hosted by freedesktop. org. The primary goal of making driver development easier, bundling otherwise duplicated code of several different drivers at a single point, and to support modern hardware architectures. This is done by providing a better division of labor, for example, leaving memory management to the kernel DRI driver. Gallium3D has been a part of Mesa since 2009 and is currently used by the free and open source graphics driver for Nvidia (nouveau project), for AMD's R300–R900, Intel's 'Iris' driver for generation 8+ iGPUs and for other free and open source GPU device drivers.
Классикалық графикалық драйверлерден айырмашылықтары
Gallium3D стандартты аппараттық функцияларды, мысалы, қазіргі заманғы аппараттарда кездесетін шейдерлік бірліктерді ашатын бірыңғай API ұсынады. Осылайша, OpenGL 1.x/2.x, OpenGL 3.x, OpenVG, GPGPU инфрақұрылымы немесе тіпті Direct3D (Wine үйлесімділік қабатында кездесетін) Gallium3D API-ге бағытталған, «жағдайды қадағалаушы» деп аталатын жалғыз артқы интерфейске ие болады. Керісінше, классикалық стильдегі DRI құрылғы драйверлері әр аппараттық платформа үшін әртүрлі артқы интерфейс талап етеді, ал басқа да бірнеше API-лер кодты дубликациялау есебінен OpenGL-ге аударуды қажет етеді. Барлық өндіруші құрылғы драйверлері, олардың меншік және жабық кодты табиғатына байланысты, осылай жазылған, мысалы, AMD Catalyst OpenGL және Direct3D-ді де іске асырады, ал GeForce үшін өндіруші драйверлері өздерінің іске асырылымдарын ұсынады. Gallium3D-де Direct Rendering Manager (DRM) ядролық драйверлері жадты басқарады, ал Direct Rendering Interface (DRI2) драйверлері GPU өңдеуіне көбірек бағытталған болады. UserSpace режимінен kernelspace режиміне өту кезеңінде, radeon драйвері немесе Intel драйверлері сияқты кейбір Mesa 3D драйверлері DRI1 және DRI2 екеуін де қолдады және жүйеде қол жетімді болған жағдайда DRI2-ні пайдаланды. Gallium3D сонымен қатар, ескі карталарда, мысалы ATi r100 r200 сияқты, қол жетімді емес шейдерлерді қолдау деңгейін қажет етеді, сондықтан осы карталарды пайдаланушылар 3D қолдану үшін DRI2-мен Mesa 3D-ді пайдалануын жалғастыруы керек.
Вольфрам графикасының шатырлаушы инфрақұрылымы
Tungsten Graphics Shader Infrastructure (TGSI) – Vulkan API және OpenCL 2.1 пайдаланатын LLVM аралық бейнелеуі немесе жаңа стандартты портативті аралық бейнелеу (SPIR) сияқты аралық бейнелеу болып табылады. OpenGL Shading Language тілінде жазылған шейдерлер TGSI-ге аударылады немесе компиляцияланады, содан кейін оңтайландырылады, және TGSI шейдерлері қолданылатын GPU-ның нұсқаулар жиынтығына сәйкес шейдерлерге компиляцияланады. NIR – бұл Mesa-дағы SPIR V қолдауына толыққандай бейімделген жаңа қабаттық бейнелеу, және 2019 жылдан бері OpenGL 4.6 қолдауы бар жаңа драйверлерді дамыстырудың басты бағыты.
LLVM пайдалануы
Сонымен қатар, Gallium3D-дің модульдік құрылымын пайдалана отырып, LLVM компиляторлар жиынтығын қолдану және шейдер кодын динамикалық түрде оңтайландыруға арналған модуль жасау жұмысы жүргізілуде. Кітапхана әрбір шейдер бағдарламасын Tungsten Graphics Shader Infrastructure (TGSI) деп аталатын кеңейтілген екілік аралық өрнек түрінде бейнелейді, ал LLVM оны мақсатты аппараттық құрылғыға оңтайландырылған GLSL шейдерлеріне аударады.
Бала асырап алу
Таза бөлмеде кері инженерия арқылы алынған ақпарат негізінде жазылған немесе жазылуда болған бірнеше еркін және ашық кодты графикалық құрылғы драйверлері, мысалы, nouveau және басқалары (толық тізім үшін «Тегін және ашық кодты графикалық құрылғы драйвері» деген мақаланы қараңыз), Gallium3D ұсынған драйвер моделін қабылдады. Бұл себебі Gallium3D драйвер моделі жазуға қажетті код көлемін азайтады. Әрине, еркін бағдарламалық қамтамасыз ету лицензиясымен берілгендіктен, бұл кодты кез келген уақытта кез келген адам DRI немесе басқа драйвер моделін іске асыру үшін қайта жаза алады.
Тарих
Gallium3D-нің түпкілікті авторлары Кит Уитвелл мен Брайан Пол, Tungsten Graphics компаниясында (2008 жылы VMware сатып алған).
Басты оқиғалар
2011 жылдың күзіне қарай, кем дегенде 10 белгілі, дамыған және жұмыс істейтін Gallium3D драйверлері болды. Nvidia графикалық карталары үшін ашық кодты драйверлерді Nouveau командасы Gallium3D фреймворкін пайдалана отырып әзірлейді. 2008 07 13: Nouveau әзірлемесі тек Gallium фреймворкі үшін жүзеге асырылды. Ескі DRI драйвері Freedesktop.org-тағы Mesa репозиторийінің бас тармағынан алынып тасталды. 2009 02 11: gallium 0.2 тармағы Mesa-ның негізгі Master тармағымен біріктірілді. Әзірлеме жұмысы Mesa магистралінде жүргізілуде. 2009 02 25: Gallium3D Linux және FreeBSD ядроларында жұмыс істей алады. 2009 05 01: Tungsten Graphics компаниясынан Зак Русин Mesa 3D-ге OpenVG күйін қадағалайтын модульді қосты, бұл кез келген Gallium3D негізіндегі драйвер арқылы масштабталатын векторлық графиканы аппараттық үдетуге мүмкіндік береді. 2009 07 17: Mesa3D 7.5 шығарылды, бұл Gallium3D-ді қамтитын алғашқы нұсқа. 2010 09 10: r600g драйверіне Evergreen GPU-лар үшін бастапқы қолдау қосылды. 2010 09 21: ATI жабдығы үшін екі Gallium3D драйвері бар, олар r300g және r600g деп аталады, сәйкесінше R300, R500 және R600 Evergreen GPU-лары үшін. 2010 09 21: Direct3D 10 және 11 қолдауы үшін кодқа маңызды өзгерістер енгізілді. Уақыт өте келе, бұл Linux жүйелерінде Direct3D-нің соңғы нұсқаларын пайдалануға мүмкіндік беруі мүмкін. 2011 11 30: Intel 965g және Cell Gallium драйверлері Месаның бас тармағынан қолдау көрсетілмейтін және бұзылғандықтан алынып тасталды. 2013 11 30: Mesa 10 OpenGL 3.2, 3.3 және OpenCL 1.0+ нұсқаларымен.
2014 11 18: Direct3D 9 қолдауы үшін кодқа маңызды өзгерістер енгізілді. 2015 09 15: Mesa 11 OpenGL 4.0, 4.1 және OpenCL 1.2 (толық емес) нұсқаларымен.
2015 12 15: Mesa 11.1 VIRGL драйвері, OpenGL 3.3 нұсқасымен виртуалды машиналар үшін.
2016 07 08: Mesa 12 OpenGL 4.2, 4.3 және Vulkan 1.0 (Intel ANV және AMD RADV) нұсқаларымен.
2016 11 01: Mesa 13 OpenGL 4.4 және OpenGL ES 3.2 нұсқаларымен.
2017 02 13: Mesa 17.0 OpenGL 4.5 және freedreno драйвері OpenGL 3.0 және 3.1 нұсқаларымен.
2017 05 10: Mesa 17.1 Intel Ivy Bridge үшін OpenGL 4.2+ (Intel драйверінен Windows үшін жақсырақ, Intel Open SWR Rasterizer үшін OpenGL 3.3+ (үлкен симуляциялар үшін кластерлік компьютер үшін маңызды).
2017 12 08: Mesa 17.3 AMD Vulkan драйвері RADV, Vulkan 1.0 Khronos тестінде толық сәйкес.
2018 05 18: Mesa 18.1 Vulkan 1.1 (Intel ANV және AMD RADV) нұсқаларымен.
2018 09 07: Mesa 18.2 Soft Driver VIRGL үшін OpenGL 4.3 (бұлтты кластерлік компьютердегі виртуалды машиналар үшін маңызды), Freedreno үшін Adreno A5xx үшін OpenGL ES 3.1.
2019 06 11: Mesa 19.1 шығарылды, 8+ буын iGPU-лары үшін Intel-дің келесі буын 'iris' графикалық драйвері.
2019 12 11: Mesa 19.3 OpenGL 4.6 шығарылды, Intel i965 7+ буын және опционалды Iris Gen 8+ нұсқаларымен.
2020 03 18: Mesa 20.0 OpenGL 4.6 AMD GCN және Intel үшін Vulkan 1.2 нұсқаларымен шығарылды.
2020 05 27: Mesa 20.1 NIR векторлау қолдауы және Clover-де OpenCL үшін ортақ виртуалды жад қолдауы шығарылды.
2020 11 30: Mesa 20.3 Clover-де OpenCL 1.2 толық қолдауы.
2023 09 30: Mesa 23.2 Apple Asahi OpenGL 3.1 және OpenGL ES 3.0, RADV AMD RDNA 2 және 3-те Ray Tracing-ті қолдайды, Intel Anvil Vulkan H.265 декодилеуіне қолдау.
Тарих
Жобаның бастамашысы Брайан Пол графикамен әуесқой болған. Ол OpenGL API-ді пайдаланып, VOGL (өте қарапайым GL Like Library) орнына қолдануға болатын қарапайым 3D графикалық кітапхананы жасау қызықты болады деп ойлады. 1993 жылдан бастап, ол бағдарламаны 1995 жылдың ақпан айында интернетке жариялағанға дейін он сегіз ай бойы жартылай уақыт жұмыс істеді. Бағдарлама жақсы қабылданып, адамдар оны дамытуға қатыса бастады. Mesa бастапқыда барлық 3D компьютерлік графиканы процессорда көрсетумен басталды. Осыған қарамастан, Mesa-ның ішкі архитектурасы графикалық процессормен 3D-рендерингті жеделдетуге қосылуға мүмкіндік беру үшін ашық түрде жобаланған. Бұл алғашқы кезеңде рендеринг дисплей серверінде жанама түрде орындалды, бұл теориялық максимумнан кейбір артта қалу мен байқалатын жылдамдық айырмашылығын қалдырды. Voodoo Graphics чипсетін пайдаланған Diamond Monster 3D, Mesa қолдаған алғашқы 3D аппараттық құрылғыларының бірі болды. Mesa-ға 1997 жылы алғашқы графикалық аппараттық қолдау қосылды, ол сол кездегі жаңа 3dfx Voodoo I/II графикалық карталары мен олардың ізбасарлары үшін Glide API негізінде құрылды. Glide-ді жеделдету қабаты ретінде пайдаланудың басты мәселесі Glide-дің толық экранды режимде жұмыс істеу әдеті болды, ол тек компьютерлік ойындарға ғана қолайлы болды. Бұдан әрі, Glide экран жадын құлыптап, дисплей серверінің басқа GUI тапсырмаларын орындауын тоқтатты.