„Vulkan“ vairuotojas dabar naudoja „Valve“ ACO komponavimo pagrindą

„Mesa 20.2“ versijai formuoti naudojamoje kodų bazėje RADV vairuotojas, „Vulkan“ - AMD lustai persijungė į backend numatytasis kompiliavimas šešėliai »ACO«, sukurtas „Valve“ kaip alternatyva LLVM shader kompiliatoriui.

Šis nurodytas pakeitimas buvo padaryta pasibaigus žaidimų produktyvumo padidėjimui ir jo paleidimo laiko sutrumpinimas.

Pasikeitimas nuo RADV valdiklio iki naujos backend buvo įmanoma pasiekus ACO funkcijų paritetą su senąja AMD sukurta vidine sistema AMDGPU tvarkyklei, kuri ir toliau naudojama „RadeonSI OpenGL“ tvarkyklėje.

„Valve“ atliktas bandymas parodė, kad ACO yra beveik dvigubai greitesnis nei „AMDGPU shader build“ kompiliatorius, ir rodo, kad kai kuriuose žaidimuose FPS padidėjo, kai veikia sistemose su RADV tvarkykle.

„AMD OpenGL“ ir „Vulkan“ tvarkyklės šiuo metu naudoja „shader“ kompiliatorių, kuris yra LLVM ankstesnio projekto dalis. Tas projektas yra didžiulis ir turi daug skirtingų tikslų, o internetinis žaidimų šešėlių rinkinys yra tik vienas iš jų. 

Tai gali sukelti kompromisus kūrimui, kur pagerinti žaidimų funkcionalumą yra sunkiau nei būtų kitaip, arba kai LLVM kūrėjai, dirbdami su kitais dalykais, dažnai netyčia sugadina žaidimo ypatybes.

Iš posistemės ACO siekia užtikrinti, kad kodas būtų sugeneruotas optimaliausiu būdu įmanoma žaidimų programų šešėlininkams ir pasiekti labai didelį kompiliavimo greitį.

ACO tai parašyta C ++, sukurta atsižvelgiant į JIT sudarymo pritaikomumą, ir naudokite greitus, kad kartotumėte duomenų struktūras, vengiant žymikliu pagrįstų struktūrų, pvz., susietų sąrašų ir eilučių, naudoti def. Tarpinis kodo atvaizdavimas visiškai pagrįstas SSA (Single Static Allocation) ir leidžia paskirstyti įrašus, tiksliai apskaičiuojant įrašą pagal shaderį.

Tarpinis kodo atvaizdavimas visiškai pagrįstas SSA (Single Static Allocation) ir leidžia paskirstyti įrašus, tiksliai apskaičiuojant įrašą pagal shaderį.

Šiuo metu palaikomi tik pikseliai (fragmentai) ir apskaičiuokite šešėlius atskiruose AMD GPU (dGPU VI +). Tačiau ACO jau teisingai renka visų išbandytų žaidimų šešėlius, įskaitant sudėtingus šešėlius iš „Shadow of the Tomb Raider“ ir „Wolfenstein II“.

Siūlomas ACO prototipas bandymui tai beveik dvigubai greičiau nei AMDGPU shader kompiliatorius ir parodo kai kurių žaidimų FPS padidėjimą, kai jie veikia sistemose su RADV valdikliu.

Norint šiek tiek daugiau suprasti apie „Valve“ kodo priėmimo svarbą, svarbu tai iš anksto žinoti tikslas yra garantuoti kuo optimalesnį kodo generavimą žaidimų programų šešėlininkams, taip pat labai didelis kompiliavimo greitis.

„Mesa“ esančiame „shader“ kompiliatoriuje naudojami LLVM komponentai, kurie neleidžia pasiekti norimo kompiliavimo greičio ir neleidžia visiškai kontroliuoti valdymo srauto, kuris praeityje jau sukėlė rimtų klaidų.

Be to, vengiant LLVM, galima atlikti agresyvesnę analizę neatitikimai ir smulkesnis žurnalo apkrovos valdymas, leidžiantis efektyviau generuoti vykdomąjį failą.

Pagaliau taip pat Svarbu pažymėti, kad šiuo metu ACO dirba tik su „Mesa RADV Vulkan“ valdikliu. Tačiau ACO kūrėjai patvirtino, kad kitas jų žingsnis bus pradėti plėsti ACO galimybes palaikyti „OpenGL RadeonSI“ tvarkyklę, kad ateityje ir šiai tvarkyklei ACO galėtų pakeisti numatytąjį „LLVM shader“ kompiliatorių. .

Kiek tiems, kurie nori tęsti ankstesnę backendą iš LLVM shader kompiliatoriaus jie gali prie jo grįžti, tereikia pakeisti kintamąjį.

Aplinkos kintamasis, pateiktas šiam pakeitimui atlikti, yra "RADV_DEBUG = llvm".


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   ĮvairusSunkus sakė

    Ir kaip vartotojas pasirenka su kuria vidine programa paleisti žaidimą? Kokius failus ji turi modifikuoti?