Vulkan-драйвер RADV пераведзены на выкарыстанне бэкенда кампіляцыі шэйдараў ACO

У кодавай базе, выкарыстоўванай для фармавання выпуску Mesa 20.2, ажыццёўлена пераключэнне RADV, Vulkan-драйвера для чыпаў AMD, на выкарыстанне па змаўчанні бэкенда для кампіляцыі шэйдараўACO«, Які развіваецца кампаніяй Valve ў якасці альтэрнатывы кампілятару шэйдараў LLVM. Паказаная змена прывядзе да павелічэння прадукцыйнасці гульняў і скарачэнню часу іх запуску. Для вяртання старога бэкенда прадугледжана зменная асяроддзі «RADV_DEBUG=llvm».

Пераключэнне драйвера RADV на новы бэкэнд стала магчымым пасля дасягнення ў ACO парытэту па функцыянальнасці са старым бэкэндам, распрацаваным AMD для драйвера AMDGPU, які працягвае прымяняцца ў OpenGL-драйверы RadeonSI. Праведзенае кампаніяй Valve тэсціраванне паказала, Што ACO амаль у два разы пераўзыходзіць кампілятар шэйдараў AMDGPU па хуткасці кампіляцыі і дэманструе павелічэнне FPS у некаторых гульнях, пры іх працы на сістэмах з драйверам RADV.

Vulkan-драйвер RADV пераведзены на выкарыстанне бэкенда кампіляцыі шэйдараў ACO

Vulkan-драйвер RADV пераведзены на выкарыстанне бэкенда кампіляцыі шэйдараў ACO

Бэкенд ACO накіраваны на забеспячэнне генерацыі кода, наколькі гэта магчыма аптымальнага для шэйдараў гульнявых прыкладанняў, а таксама на дасягненне вельмі высокай хуткасці кампіляцыі. ACO напісаны на мове З++, распрацоўваецца з аглядкай на магчымасць ужывання для JIT-кампіляцыі і выкарыстае хуткія для перабору структуры дадзеных, пазбягаючы структур на аснове паказальнікаў. Прамежкавае паданне кода цалкам засноўваецца на SSA (Static Single Assignment) і дазваляе выконваць размеркаванне рэгістраў, сапраўды папярэдне вылічаючы рэгістр у залежнасці ад шэйдара.

Дадатак: На дадзены момант ACO працуе толькі для Vulkan-драйвера Mesa RADV. Але распрацоўшчыкі ACO пацвердзілі, Што іх наступным крокам будзе пачатак працы над пашырэннем магчымасцяў ACO для забеспячэння падтрымкі OpenGL-драйвера RadeonSI, каб у будучыні і для гэтага драйвера ACO змог замяніць сабой па змаўчанні кампілятар шэйдараў LLVM.

Крыніца: opennet.ru

Дадаць каментар