В кода базата, използвана за създаване на версия Mesa 20.2, превключване на RADV, Vulkan драйвера за чипове AMD, към използване по подразбиране на бекенда за компилация на шейдъри ““, който се развива от компания Valve като алтернатива на компилатора за шейдъри LLVM. Това изменение води до увеличаване на производителността на игрите и намаляване на времето за стартиране. За връщане към стария бекенд е предвидена променлива на средата “RADV_DEBUG=llvm”.
Превключването на драйвера RADV на новия бекенд стана възможно след достигането на паритет в ACO по функционалност с стария бекенд, разработен от AMD за драйвера AMDGPU, който продължава да се използва в OpenGL драйвера RadeonSI. Тестовете, проведени от компания Valve, , показват, че ACO почти два пъти надминава компилятора за шейдъри AMDGPU по скорост на компилация и демонстрира увеличение на FPS в някои игри, при работа на системи с драйвера RADV.
Бекендът ACO е насочен към осигуряване на възможно най-оптималната генерация на код за шейдърите на игровите приложения, както и към постигане на много висока скорост на компилация. ACO е написан на C++ и се разработва с оглед на възможността за JIT компилация, използвайки бързи структури от данни, избягвайки указателни структури. Междинното представяне на кода е напълно основано на SSA (Static Single Assignment) и позволява регистрово разпределение, точно предварително изчислявайки регистъра в зависимост от шейдъра.
Допълнение: В момента ACO работи само за Vulkan драйвера Mesa RADV. Но разработчиците на ACO , че следващата им стъпка ще бъде започването на работа по разширяване на възможностите на ACO за поддръжка на OpenGL драйвера RadeonSI, за да може в бъдеще ACO да замени компилатора за шейдъри LLVM по подразбиране и за този драйвер.
Източник: opennet.ru
