В кодовата база, използвана за формиране на версия Mesa 20.2, превключване на RADV, Vulkan драйвера за чипове AMD, за използване по подразбиране на backend за компилация на шейдъри ««, който се развива от компанията Valve като алтернатива на LLVM шейдър компилатора. Посочената промяна ще доведе до увеличаване на производителността на игрите и намаляване на времето за зареждане. За връщане към стария backend е предвидена променлива на средата «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
