Шофьорът на Vulkan вече използва бекенда за изграждане на ACO на Valve

В кодовата основа, използвана за формиране на версията Mesa 20.2, драйверът на RADV, Vulkan за чипове AMD премина към бекенд по подразбиране да се компилира шейдъри »ACO«, разработени от Valve като алтернатива на LLVM шейдърния компилатор.

Тази конкретна промяна беше направено с края на получаването на увеличение на производителността на игрите и намаляване на времето за стартиране.

Промяната от RADV контролер към нов бекенд беше възможно след достигане на паритет в функционалността на ACO със старата разработена AMD бекенда за драйвера AMDGPU, който продължава да се използва в драйвера RadeonSI OpenGL.

Тестването от Valve показа, че ACO е почти два пъти по-бърз от компилатора за изграждане на шейдър AMDGPU и демонстрира увеличаване на FPS в някои игри, когато работи на системи с RADV драйвер.

Драйверите за AMD OpenGL и Vulkan понастоящем използват компилатор на шейдъри, който е част от LLVM проекта нагоре по веригата. Този проект е огромен и има много различни цели, а онлайн компилацията на шейдъри за игри е само една от тях. 

Това може да доведе до компромиси за разработка, където подобряването на специфичната за играта функционалност е по-трудно, отколкото би било иначе, или когато специфичните за играта функции често случайно се нарушават от разработчиците на LLVM, работещи върху други неща.

Бекендът на ACO има за цел да гарантира, че кодът се генерира по най-оптималния начин възможно за шейдъри за игрови приложения и постигане на много висока скорост на компилация.

ACO написано е на C ++, разработен, като се има предвид приложимостта на JIT компилация, и използвайте бързите, за да прегледате структурите от данни, избягване на базирани на указатели структури като свързани списъци и низове от използване на def. Междинното представяне на кода се основава изцяло на SSA (Single Static Allocation) и позволява разпределението на записите, прецизно изчислявайки записа въз основа на шейдъра.

Междинното представяне на кода се основава изцяло на SSA (Single Static Allocation) и позволява разпределението на записите, прецизно изчислявайки записа въз основа на шейдъра.

В момента се поддържат само пиксели (фрагменти) и изчисляват шейдъри на дискретни AMD графични процесори (dGPU VI +). Въпреки това, ACO вече правилно събира шейдъри за всички тествани игри, включително сложни шейдъри от Shadow of the Tomb Raider и Wolfenstein II.

Предложеният прототип на ACO за теста той е почти два пъти по-бърз от компилатора на шейдъри AMDGPU и демонстрира увеличение на FPS в някои игри, когато се изпълнява на системи с RADV контролер.

За да разберете малко повече за уместността на приемането на кода на Valve, е важно да го поставите на преден план целта е да се гарантира възможно най-оптималното генериране на код за шейдъри за игрови приложения, както и много висока скорост на компилация.

Наличният в Mesa компилатор на шейдъри използва LLVM компоненти, Те не позволяват да се постигне желаната скорост на компилация и не позволяват пълен контрол на контролния поток, който в миналото вече е причинил сериозни грешки.

Освен това, избягването на LLVM прави възможно прилагането на по-агресивен анализ несъответствия и по-фино управление на натоварването, което позволява по-ефективно генериране на изпълними файлове.

И накрая, също е така Важно е да се отбележи, че в момента ACO работи само за контролера Mesa RADV Vulkan. Но разработчиците на ACO потвърдиха, че следващата им стъпка ще бъде да започнат работа по разширяване на възможностите на ACO за поддръжка на драйвер OpenGL RadeonSI, така че в бъдеще и за този драйвер ACO да може да замени компилатора на шейдъри LLVM по подразбиране.

Колко тези, които предпочитат да продължат с бекенда, който е бил използван преди това от компилатора на шейдър LLVM, те могат да се върнат към него, просто трябва да променят променлива.

Променливата на средата, която се предоставя за извършване на тази промяна, е "RADV_DEBUG = llvm".


Коментар, оставете своя

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   VaryHeavy каза той

    И как потребителят избира с кой бекенд да стартира игра? Какви файлове трябва да модифицира?