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é.
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.
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).
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