Jay: új nyílt forráskódú shaderfordító készül Intel GPU-khoz

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Tavaly Alyssa Rosenzweig az Intelhez igazolt, aki az Asahi Linuxszal közösen az AGX grafikus driver kódján dolgozott, emellett a Valve alvállalkozójaként is részt vett a Linux grafikus stack fejlesztésében. Rosenzweig az évek során sokat tett hozzá a Mesához, különösen a shader fordítás és a NIR területén, így nem meglepő, hogy most egy új Intel shader compiler fejlesztését vezeti.

Az viszont kissé meglepő, hogy a Jay fejlesztésébe kezdtek, mert az Intel driverek a Mesán belül régóta a „BRW” shader compilert használják. Emellett ott van az Intel Graphics Compiler (IGC) is, amelyet a Compute Runtime használ OpenCL-hez és Level Zero-hoz Linuxon. Az IGC-t Microsoft Windowson is használják, nemcsak számítási feladatokra, hanem grafikus shader compilerként is. Néhány éve még azt mondták, hogy az Intel az IGC Mesába történő bevezetését vizsgálja, most viszont úgy tűnik, egy új megoldást fejlesztenek ezzel a „Jay” compilerrel.

A mai Mesa merge requestben, amely bemutatja a Jayt, Alyssa így fogalmazott:

„Ez az MR hozzáadja a Jay-t, egy új, SSA-alapú fordítót Intel GPU-khoz. Ez egy korai, fejlesztés alatt álló verzió. Még nem áll készen kiadásra, de szeretnénk a fejlesztést a fő ágba áthelyezni ahelyett, hogy minden héten újraalapoznánk az egészet. Kérlek, egyelőre ne teszteljétek – tisztában vagyunk az állapottal, és dolgozunk rajta!

A Jay felépítése hasonló más modern NIR backendekhez, különösen az ACO-hoz, NAK-hoz és AGX-hez. Teljesen SSA-alapú, a phi csomópontokat a regiszterallokáció (RA) után bontja szét. Egy Colombet-féle regiszterallokátort használunk, hasonlóan a NAK-hoz, ami lehetővé teszi, hogy az Intel bonyolult regiszter-regionálási korlátozásait egyszerűen kezeljük. A logikai regiszterek spill-elése a Braun–Hack módszerrel egyenes megoldás… viszont az, hogy hogyan alkalmazzuk a standard SSA backend tervezést az Intel hardveren, már nem az. Ha kíváncsi vagy, beleolvashatsz a kódba, de a részleteket az XDC-n fogom „kiborítani”… Így több szempontból is találó, hogy idén Torontóban lesz :-)”

Jelenleg a Jay compiler csak az Intel Xe2 hardvert célozza, de idővel bővítik. A compiler már átmegy az OpenGL ES 3.0 és az OpenCL 3.0 megfelelőségi tesztjein, miközben a Vulkan-támogatáson is dolgoznak.

A Jay eddigi teljesítménye kifejezetten meggyőző a jelenlegi shader compilerhez képest:

„Egy kis ízelítőként… itt egy elég durva CTS teszt (math_bruteforce sin), lefordítva a régi (brw) és az új (jay) fordítóval:

jay: 6768 utasítás (361:396 spill:fill) – 7,00 másodperc

brw: 12980 utasítás (578:1144 spill:fill) – 19,91 másodperc

Jobb kód, mint a jelenlegi fordítóé, ráadásul töredék idő alatt… ígéretesnek tűnik a Mesa fordítók jövője Intel platformon :-)”

A Jay nagyon ígéretes első lépés. Izgalmas lesz látni, ahogy érik, és alkalmassá válik kísérleti tesztelésre. A Jay C-ben íródott, és valamivel több mint 14 ezer sornyi új kódot jelent. Akit érdekelnek a részletek, megnézheti

ezt a merge requestet az új Intel Jay shader compiler első információiért.