Gumagamit na ngayon ang driver ng Vulkan ng Valve's ACO build backend

Sa base ng code na ginamit upang mabuo ang Mesa 20.2 na bersyon, ang RADV driver, Vulkan para sa mga AMD chip lumipat sa backend default upang mag-ipon shader »ACO«, binuo ni Valve bilang isang kahalili sa tagatala ng LLVM shader.

Ang tinukoy na pagbabago na ito ay tapos na sa pagtatapos ng pagkuha ng isang pagtaas sa pagiging produktibo ng mga laro at isang pagbawas sa oras ng paglulunsad nito.

Ang pagbabago mula sa RADV controller sa bagong backend ay posible matapos maabot ang pagkakapantay-pantay sa pag-andar ng ACO kasama ang lumang AMD na binuo backend para sa driver ng AMDGPU, na patuloy na ginagamit sa driver ng RadeonSI OpenGL.

Ipinakita ng pagsubok ng Valve na ang ACO ay halos dalawang beses nang mas mabilis kaysa sa AMDGPU shader build compiler at nagpapakita ng pagtaas sa FPS sa ilang mga laro kapag tumatakbo sa mga system kasama ang RADV driver.

Ang mga driver ng AMD OpenGL at Vulkan ay kasalukuyang gumagamit ng isang shader compiler na bahagi ng proyekto ng agos ng LLVM. Ang proyektong iyon ay napakalaki at maraming iba't ibang mga layunin, at ang online na pagtitipon ng mga shader ng laro ay isa lamang sa mga ito. 

Maaaring humantong iyon sa mga tradeoff sa pag-unlad, kung saan ang pagpapabuti ng pag-andar na partikular sa laro ay mas mahirap kaysa sa kung hindi man, o kung saan ang mga tampok na partikular sa laro ay madalas na sinasadyang nasira ng mga developer ng LLVM na nagtatrabaho sa iba pang mga bagay.

Ang backend ng Nilalayon ng ACO na matiyak na ang code ay nabuo sa pinakamainam na paraan posible para sa mga shader app ng laro at makamit ang napakataas na bilis ng pagtitipon.

ACO nakasulat ito sa C ++, nabuo na isinasaisip ang kakayahang magamit para sa JIT compilation, at gamitin ang mga mabilis upang umulit sa mga istraktura ng data, pag-iwas sa mga istrakturang nakabatay sa pointer tulad ng mga naka-link na listahan at mga string mula sa paggamit ng def. Ang intermediate na representasyon ng code ay ganap na nakabatay sa SSA (Single Static Allocation) at pinapayagan para sa paglalaan ng mga talaan, tumpak na kinakalkula ang record batay sa shader.

Ang intermediate na representasyon ng code ay ganap na batay sa SSA (Single Static Allocation) at pinapayagan para sa paglalaan ng mga talaan, tumpak na kinakalkula ang record batay sa shader.

Sa kasalukuyan ang mga pixel lamang ang sinusuportahan (mga fragment) at kalkulahin ang mga shader sa discrete AMD GPUs (dGPU VI +). Gayunpaman, nakolekta nang tama ng ACO ang mga shader para sa lahat ng mga laro na nasubukan, kabilang ang mga kumplikadong shader mula sa Shadow of the Tomb Raider at Wolfenstein II.

Ang iminungkahing prototype ng ACO para sa pagsusulit ito ay halos dalawang beses nang mas mabilis kaysa sa AMDGPU shader compiler at ipinapakita ang isang pagtaas sa FPS sa ilang mga laro kapag tumatakbo sa mga system na may RADV controller.

Upang maunawaan nang kaunti pa tungkol sa kaugnayan ng pag-aampon ng code ng Valve, mahalagang unahin ito ang layunin ay upang ginarantiyahan ang pinaka-optimal na posible na pagbuo ng code para sa mga shader ng app app, pati na rin ang napakataas na bilis ng pagtitipon.

Ang tagatala ng shader na magagamit sa Mesa ay gumagamit ng mga bahagi ng LLVM, na hindi pinapayagan upang makamit ang nais na bilis ng pagtitipon at huwag payagan ang buong kontrol ng daloy ng kontrol, na sa nakaraan ay nagdulot ng malubhang mga pagkakamali.

Bukod dito, ang pag-iwas sa LLVM ay ginagawang posible upang magpatupad ng isang mas agresibong pagsusuri mga pagkakaiba at pamamahala ng pag-load ng finer log, na nagbibigay-daan sa mas mahusay na maipatupad na pagbuo ng file.

Panghuli, ito rin Mahalagang tandaan na sa ngayon ang ACO ay gumagana lamang para sa Mesa RADV Vulkan controller. Ngunit kinumpirma ng mga developer ng ACO na ang kanilang susunod na hakbang ay upang simulang magtrabaho sa pagpapalawak ng mga kakayahan ng ACO upang suportahan ang driver ng OpenGL RadeonSI, upang sa hinaharap at para sa driver na ito, maaaring palitan ng ACO ang default na LLVM shader compiler. .

Magkano ang mga nais na magpatuloy sa backend na ginamit dati mula sa LLVM shader compiler, maaari silang bumalik dito, kailangan lang nilang baguhin ang isang variable.

Ang variable ng kapaligiran na ibinigay upang magawa ang pagbabagong ito ay "RADV_DEBUG = llvm".


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   VaryHeavy dijo

    At paano pipiliin ng isang gumagamit ang aling backend upang magpatakbo ng isang laro? Anong mga file ang kailangang baguhin?