Velká změna pro uživatele grafik GeForce na Linuxu. Nvidia přechází na otevřené ovladače

18
Nvidia GeForce GPU ilustrace 1600
Nvidia GeForce
-
Zdroj: Nvidia

Nvidia otevírá kód jaderné části grafických ovladačů pro Linux, už nebudou třeba binární moduly. Mohlo by to být lákadlo pro ty, kdo kvůli otevřenému GPU „stacku“ doteď preferovali AMD.

Ve světě grafických karet se odehrála docela podstatná změna, která se dotkne uživatelů Linuxu. Nvidia se totiž odhodlala k přechodu na open source ovladače GPU pro Linux. Respektive, k otevření kódu modulu grafických ovladačů, který se zavádí do jádra. Není to otevření kompletního rozsáhlého kódu 3D akcelerace a také jde zatím jen o začátek procesu, ale výsledkem by mělo být lepší fungování karet GeForce.

Nvidia minulý týden oznámila změnu ve své politice vůči Linuxu, jaká by se s trochou nadsázky dala nazývat příslovečnými zimními meteorologickými jevy v pekle. Pokud Linux používáte nebo jste používali, asi víte, že zatímco ovladače GPU Intel jsou kompletně otevřené a ovladače pro grafiky AMD víceméně také, grafické ovladače od Nvidia jsou uzavřené a jsou distribuovány jen v binární formě. Existují sice alternativní ovladače Noveau vyvíjené dobrovolníky pomocí reverzního inženýrství, ale ty jsou ve vývoji pozadu, nejsou funkčně srovnatelné a u novějších generací GPU narůstaly problémy s kompatibilitou nebo se spoluprací mezi ovladači a firmwarem Nvidie.

Uživatelé Linuxu preferují obecně otevřené ovladače a open source je také preferovaná „politika“ linuxových systémů. Důvody nejsou jen ideologické, ale i praktické. Linux totiž nemá stabilní binární rozhraní pro jaderné ovladače jako Windows, takže nelze jen tak k nějakému konkrétnímu jádru systému nainstalovat libovolnou verzi binárních ovladačů jako ve Windows. Ovladače musí být zkompilované s ohledem na verzi jádra a závislosti bývají i třeba s X serverem.

Toto znamená, že při aktualizacích operačního systému nebo jádra může být binární ovladač Nvidia zdrojem nepříjemností, protože nainstalovaná verze může přestat fungovat. Naproti tomu otevřené ovladače umožňují mít jadernou část ovladače přímo ve zdrojových kódech jádra, takže je s ním vždy synchronizovaná, kompiluje se zároveň s ním a při aktualizacích tento druh problémů nehrozí. Nebo aspoň tyto ovladače při změně v jádře opatchovat (zatímco u uzavřeného kódu musíte čekat, až to udělá výrobce).

Open source éra GPU ovladačů začíná od verze 515

Pro fungování GPU Nvidia v Linuxu je tato koncepce ovladačů docela zásadní, a stejně tak je tedy nyní zásadní, možná až historická událost, že Nvidia politiku mění a přechází na otevřený model. Firma tento krok oficiálně oznámila jako součást snah o zlepšení uživatelského komfortu, ale také s cílem usnadnit hledání a opravování chyb a případnou hlubší spolupráci s open source vývojáři a komunitou. Současně jde také o plus pro ty, kdo vyžadují otevřený kód u jaderných ovladačů z důvodu bezpečnosti (či auditovatelnosti). Open source kód může totiž kdokoliv zkoumat a hledat v něm zranitelnosti.

Nejde ovšem o kompletní otevření kódu ovladačů GPU. Nvidia otevírá tu jejich část, která přímo interaguje s jádrem a ovládá základní funkčnost, tedy moduly, které se během spouštění systému zavádějí do jádra. Vyšší vrstvy ovladačů, které běží v uživatelském prostoru a zajišťují 3D akceleraci softwaru nebo her přes API jako Vulkan, OpenGL, CUDA a tak podobně, zůstanou ale proprietární a uzavřené.

GeForce MX570 1600
Mobilní GPU Nvidia (Zdroj: Nvidia)

Tyto části jsou nejcitlivější na různá tajemství kritická pro výkon a konkurenceschopnost, proto je firmy nechtějí odhalit. Ani AMD neotevřelo plně tuto část ovladače a dál tyto komponenty distribuuje jako uzavřené. Ovšem zároveň umožňuje a podporuje použití open source alternativ, takže grafiky Radeon lze používat jak s těmito proprietárními, tak s kompletně open source komponentami (základní vrstva v jádře je ale vždy otevřená).

Tento krok byl asi v přípravě delší dobu. Již před časem byl open source ovladač nalezen v rámci zdrojáků pro platformu Nvidia Tegra, nyní tedy nastalo oficiální potvrzení tohoto otevření. Open source verze ovladače oficiálně začíná s jeho verzí 515 a kód je k dispozici na GitHubu. Licence je duální MIT a GPLv2, přičemž by mělo jít o kód, který zčásti doteď již byl pod MIT, zčásti byl uzavřený a proprietární.

Od verze 515 je při instalaci ovladače přístupná volba, zda se má použít klasický uzavřený modul, nebo zkompilovat novou open source alternativu. Nvidia už oznámila, že distribuce Ubuntu, Red Hat a Suse Enterprise Linux budou tento open source ovladač balíčkovat, takže by měl být dostupný z repozitářů. Licence dovoluje tyto moduly (re)distribuovat.

Při instalaci ovladače GPU Nvidia na Linuxu je od verez 515 dostupná volba zkompilovat open source moduly
Při instalaci ovladače GPU Nvidia na Linuxu je od verze 515 dostupná volba zkompilovat open source moduly (Zdroj: VideoCardz)

Kód bude zatím žít mimo jádro

Zatím se zdá, že ovladač nebude přímo bydlet v rámci stromu zdrojových kódů jádra Linuxu, nebude tedy upstreamovaný a nebude asi podroben posuzování a připomínkování, které začlenění do jádra Linuxu obnáší. V tomto je grafický „stack“ AMD, který je začleněný v upstreamu, zatím napřed. AMD má ještě jednu výhodu – jak už bylo řečeno, jeho ovladače fungují tak, že základní vrstva v jádru je otevřená, u komponent 3D akcelerace si lze vybrat mezi otevřenou nebo proprietární variantou. Tudíž je možné běžet s kompletně open source ovladačem.

Více: AMD oznámilo změny ve vývoji ovladačů pro Linux (rok 2014)

U Nvidie je zatím možné spolu s novým open source ovladačem používat jen proprietární návazné komponenty. Je ale možné, že v budoucnu bude vytvořen alternativní plně otevřený „stack“ z komponent onoho reverzním inženýrstvím vytvořeného ovladače Noveau. Pak by vznikla obdoba ekosystému, který mají nyní na Linuxu grafiky AMD. Není asi moc pravděpodobné, že Nvidia přímo otevře svůj vlastní zbytek ovladače kvůli oněm technologickým tajemstvím (tento kód je z velké části sdílený s ovladači pro Windows).

Podle informací Phoronixu není ovšem vyloučeno, že k začlenění do jádra nedojde, jen to teď není na pořadu dne, jak se říká. Nvidia údajně bude chvíli pracovat na odladění a na stabilizaci API a ABI mezi tímto open source ovladačem a binárními částmi v uživatelském prostoru. V budoucnosti (asi v horizontu let) by mohlo být začlenění otevřené části přímo do jádra zvažováno.

Open Source jen pro GeForce GTX 1600/RTX 2000 a novější GPU

Důležité je, že toto otevření je spíše začátek procesu a ne všichni uživatelé grafik GeForce budou moci okamžitě přejít na otevřené moduly. V oblasti běžných grafik GeForce a Quadro je podpora zatím jen alpha nebo beta, přičemž v dalších vydáních bude postupně směřovat ke stabilizaci. Druhé důležité omezení je, že otevřený kód podporuje jen novější GPU – ta s architekturou Turing, Ampere a novější. Týká se to tedy GeForce GTX 16xx a RTX 20xx a výš (štěstí, že se pomalu chystá GeForce GTX 1630 pro lowend, s GeForce GT 1030 totiž máte smůlu).

Nvidia GeForce RTX 2060 Super Founders Edition 02
Nvidia GeForce RTX 2060 Super Founders Edition, GPU generace Turing (Zdroj: Nvidia)

Mělo by to být kvůli závislosti na GPU System Processoru (GSP) architektur Turing/Ampere. GSP přebírá některé role při správě chodu grafiky a tím se jejich funkce z ovladače stěhuje (a „schovává“) do jeho firmwaru, který je uzavřený. To asi pro Nvidii usnadnilo otevření zbylého kódu, k čemuž by jinak nemusela být ochotná.

Trochu jiné je to u GPU pro datacentra. Ta jsou převážně provozovaná na Linuxu, a proto tyto akcelerátory byly první cíl pro přechod na open source jaderné moduly. Datacentrová GPU už jsou proto podporována i pro produkční nasazení, zde je ovladač už hotový a odladěný, ne beta/alpha. Uživatelé v serverech tedy na tyto ovladače mohou již přecházet, i když je to zatím jen alternativa k výchozímu binárnímu ovladači.

Velký milník pro platformu Linux

Toto je podobně jako obdobné dřívější otevírání ovladačů poměrně historický okamžik pro uživatele a softwarové vývojáře okolo Linuxu, byť jde primárně o změnu ve stylu, jakým ovladače fungují, nikoliv v samotných schopnostech a funkcionalitě grafik jako takových.

Tato změna přístupu Nvidie by mohla časem vést k dalším krokům směrem k otevřenému kódu. A doufejme, že se naplní přesvědčení, dle nichž open source kód svojí povahou vede k větší stabilitě, kvalitě a bezpečnosti a tento přechod na částečně otevřené ovladače přímo pomůže k lepšímu chodu počítačů s grafikami Nvidia.

Jakou značku GPU preferujete pro operační systém Linux?

Zdroje: Nvidia, Phoronix, VideoCardz, GitHub: NVIDIA/open-gpu-kernel-modules

Velká změna pro uživatele grafik GeForce na Linuxu. Nvidia přechází na otevřené ovladače
Ohodnoťte tento článek!
3.8 (75.56%) 9 hlasů

18 KOMENTÁŘE

  1. Přidám k tomu trochu upřesňující komentář. Je to samozřejmě od Nvidie dobrý krok vpřed, ale bohužel ne tak velký, jak by se mohlo zdát, a ke kvalitě podpory od Intelu a AMD se asi hodně dlouho nepřiblíží. U zmíněných dvou je všechno opravdu automatické (out of the box), nic nemusíte řešit, vše funguje. Tady je to externí projekt, který není integrovaný do jádra (zatím nevypadá pravděpodobné, že by se o to v dohledné době snažili), a není vedený komunitním stylem vývoje. Do repozitáře jenom jednou za čas přibyde nový commit s novou verzí ovladače, stylem „házení komunitě přes zeď“ (viz jejich readme, je to tam popsané). Takže pokud teď bude někde probíhat opravdový opensource vývoj a integrace, tak to bude spíše na straně Nouveau, neoficiálního ovladače v jádře (nyní dost tragického kvůli překážkám ze strany Nvidie, což by se teď mohlo zlepšit). Zároveň Nvidia jasně říká, že aktuálně nemá v úmyslu otevřít ovladače v uživatelském prostoru (OpenGL, Vulkan), což je minimálně polovina skládačky. Pokrok se tedy opravdu dá čekat teď jen u toho Nouveau, nikoliv v tom, že by Nvidia grafiky fungovaly automaticky po instalaci systému. Pořád bude nutná otrava s ruční instalací ovladačů, a také zajištění, že uživatelské ovladače a jaderné ovladače si verzí přesně odpovídají (to možná nějak technicky distribuce zařídí). Celá tato aktivita vypadá, že je tlačená spíš firmami ohledně datacenter (kde ani nemají obrazový výstup, potřebují akorát funkční jadernou část, aby na tom mohly pustit výpočty), než krok pro koncové zákazníky.

    > Ani AMD neotevřelo plně tuto část ovladače a dál tyto komponenty distribuuje jako uzavřené. Ovšem zároveň umožňuje a podporuje použití open source alternativ, takže grafiky Radeon lze používat jak s těmito proprietárními, tak s kompletně open source komponentami (základní vrstva v jádře je ale vždy otevřená).

    Toto není úplně přesné. AMD má proprietární *firmware* pro grafiky, ostatně jako Intel (a o Nvidii se ani nemusíme bavit). Jak jaderná část (amdgpu), tak část v uživatelském prostoru (radeonsi pro OpenGL, amdvlk pro Vulkan) je otevřená. První dvě části jsou i součástí upstreamových projektů (kernel, mesa) a komunitně se vyvíjí, plus AMD platí spoustu jejich vývojářů. Není moc víc co si přát. Amdvlk je sice otevřený, ale bohužel bez komunitního vývoje (opět stylem hodíme to komunitě přes zeď, jak bylo popsáno výše), takže si linuxová komunita vytvořila ovladač radv, který se stal součástí upstreamu (mesa) a v podstatě všechny distribuce ho používají místo amdvlk. Výkon je stejný a dají se tam snadno opravovat chyby a spolupracovat na nových vlastnostech (naposled třeba raytracing), na rozdíl od amdvlk. Naštěstí vytvořit ovladač pro Vulkan je řádově snadnější než pro OpenGL, takže si to může komunita dovolit.
    Je pravda, že AMD má i uzavřený ovladač amdgpu-pro, který v podstatě obsahuje komponenty zmíněné výše (u radeonsi si teda nejsem úplně jistý), jenom je žene skrz proprietární kompilátor a dělá nějaké menší změny. Asi by se to dalo přirovnat k rozdílu mezi Chrome a Chromium. Ale v reálu uzavřené ovladače od AMD nikdo z koncových zákazníků nepoužívá, a ani AMD je jim nijak netlačí. Jsou určené spíš pro byznys sféru typu hollywoodská animační studia, kde mají jisté výhody kvůli cílení na konkrétní renderovací programy a jejich postupy.

    Od Nvidie je to tedy fajn krok vpřed, ale do porovnatelného stavu s Intelem a AMD se zatím nemají šanci dostat, to by toho museli otevřít mnohem víc a změnit některé své přístupy. Tento krok může však zlepšit zážitek uživatelů používající Nouveau, a zároveň teoreticky zmírnit některé problémy při používání uzavřeného ovladače Nvidie na Linuxu.

    • Souhlas, nicméně je to aspoň nějaký začátek. V Linuxu byly s nvidiema strašlivé problémy, teď to aspoň na nějaké základní úrovni dosáhne aspoň na to, kde byly karty od AMD před lety. Intel je v tomto asi nejlepší, ale na druhou stranu je po HW stránce tak omezený, že to je skoro jedno.

      Uvidíme, jak se to bude vyvíjet.

        • Tak je to jinak:
          Nainstaloval jsem Ubuntu 22.04 (Wayland) a nespustim graficky rezim na nesvobodnem ovladaci. Nouveau funguje ok, pokud to ok znamena, ze to nabehne, ale binarni ovladac se vubec nerozbehne. Prepnul jsem se do X-ek a nepomohlo to, stejne NVidia ovladace nefunguje a do grafickeho rezimu se nedostanu. :-/

          Muj PC: Haswell, GTX1070, 16GB RAM – myslim, ze to neni zase tak velka vykopavka, ze by to nemohlo behat, ale nebezi.

        • Tak například si pamatuju na problémy s DP MST, kdy to prostě nechodilo (stejný setup na Windows OK, výměna za AMD kartu pak OK jak Linux, tak Windows). Pak je tu takový ten problém s tím, že když vyměníš jádro, musíš reinstalovat nvidiácký blobík. U Debianu, který backportuje jak divý, asi žádný problém. U rolling dister, asi pohroma.

          Já rozhodně nejsem „hardcore linuxák,“ nemám problém s closed-source SW, ale chybějící základní drivery v rámci jádra jsou prostě fail. Já si naopak vystačím s víceméně 2D a základním 3D, ale to musí fungovat naprosto spolehlivě, ne že to nějaký update uživateli pod rukama rozstřelí.

          • DP MST nepoznám nepoužívam, neviem posúdiť.
            Čo sa týka rolling distier fungoval som aj na debian Sid čo je rolling a dalo sa to aj s uzavretými ovládačmi priamo s Nvidie ale ak si dáš balíček z repozitára žiadna pohroma.
            Ináč reinstal ovládača od Nvidie trebalo vždy ak sa zmenilo jadro alebo X-ka.
            Ja som si (ako som už písal viackrát) užil s RX 580 viac ako dosť tie pády cadu ma prinútili prejsť na NV, ale na hry bola RX 580 super a aj pod linuxom bola dobrá, hlavne na natívne porty hier od Feral’s aj keď bola uvádzaná ako nepodporovaná tak všetko šlapalo, horšie to bolo s Protonom.
            Ja tiež nie som „hardcore linuxák“ ale mne musí bežať riadne môj CAD ak nie tak je mi to u zádele či je to open alebo close.
            A skúšal som aj uzavreté ovládačeod AMD a tam som skončil nakoniec s komplet reinštaláciou systému a to som s NV tiež nezažil že by mi ovládače zobrali polovicu X-iek

    • „Celá tato aktivita vypadá, že je tlačená spíš firmami ohledně datacenter“

      Mozna, ale ja bych si tipnul, ze diky Steamu a hlavne popularite jejich aktualniho Steam Decku zacinaji linux podporovat vydavatele her, Steam je k tomu v podstate prinutil a NVidia na to potrebuje reagovat. Potrebuje proste zlepsit sve linuxove drivery a zvolena cesta neni zadnym „darem z nebes“, ale jen prostou kalkulaci Huanga, co se mu kde vyplati.

        • Myslim, ze ne. OpenGL/Vulkan hry je snad dokonce snazi prelozit pro linux, nez k nim emulovat WINE variantu. Takze pouze DX hry musi zamakat na WINE, aby behaly „pod linuxem“.
          Z pohledu ovladacu grafiky je to ale jedno, NVidia potrebuje mit funkcni grafiku pod linuxem, jinak bude mit razem s hrama problem.

          • OpenGL je hlavne dnes uplne passe, na tom dnes uz nikto novu hru nevyda. Posledne velke studio, co sa ho drzalo je id, a to ho prichodom Wolfenstein 2 vyradilo z ponuky a pri prechode na id Tech 7 uplne odstranilo z kodu. Vyvyjat dnes novu hru s OpenGL nedava zmysel, na Macu je podporovana len nejaka ancient verzia a na Win a Linuxe, kde sice novsie verzie su dostupne, tak je to opat nezmysel, lebo Vulkan dava oproti nemu „free performance“.

            • To je uplne jedno.
              Dulezite, co sis mel odnest z komentu je to, ze OpenGL/Vulkan neni pro linux problem. Jen hry na DirectX je potreba rozjizdet pres WINE.

              Jinak velke zjednoduseni, nicmene: OpenGL + Mantle = Vulkan. Aspon na samem zacatku vyvoje. Proste vyvojari OpenGL prevzali Mantle a vytvorili Vulkan.

            • Ale nie všetko sú hry, aj napríklad grafický software používa OpenGL a tam horšia podpora od AMD je niekedy vidieť.

  2. Oni hlavně přešli na otevřené ovladače, aby nemuseli provádět upkeep svých interních. Podívejte se na market share Linuxu a pochopíte, že open source je tu prostě dobrý krok.
    Koneckonců to naznačil i Honza v článku.