Sterownik RADV Vulkan został przełączony tak, aby korzystał z zaplecza kompilacji modułu cieniującego ACO

W kodzie używanym do utworzenia wydania Mesa 20.2, wdrożone przełączanie RADV, sterownika Vulkan dla układów AMD, aby używał domyślnego backendu do kompilowania shaderów ”ACO„, który jest rozwijany przez Valve jako alternatywa dla kompilatora modułu cieniującego LLVM. Ta zmiana doprowadzi do zwiększenia wydajności gry i skrócenia czasu jej uruchamiania. Aby zwrócić stary backend, dostępna jest zmienna środowiskowa „RADV_DEBUG=llvm”.

Przełączenie sterownika RADV na nowy backend stało się możliwe po tym, jak ACO osiągnęło zgodność funkcjonalności ze starym backendem opracowanym przez AMD dla sterownika AMDGPU, który nadal jest używany w sterowniku RadeonSI OpenGL. Testy przeprowadzone przez Valve ujawnioneże ACO jest prawie dwukrotnie szybszy od kompilatora shaderów AMDGPU pod względem szybkości kompilacji i wykazuje wzrost FPS w niektórych grach przy uruchomieniu na systemach ze sterownikiem RADV.

Sterownik RADV Vulkan został przełączony tak, aby korzystał z zaplecza kompilacji modułu cieniującego ACO

Sterownik RADV Vulkan został przełączony tak, aby korzystał z zaplecza kompilacji modułu cieniującego ACO

Backend ACO ma na celu zapewnienie jak najbardziej optymalnego generowania kodu dla shaderów aplikacji do gier, a także osiągnięcie bardzo dużej szybkości kompilacji. ACO jest napisany w C++, zaprojektowany z myślą o kompilacji JIT i wykorzystuje szybkie iteracyjne struktury danych, unikając struktur opartych na wskaźnikach. Pośrednia reprezentacja kodu jest w całości oparta na SSA (Static Single Assignment) i umożliwia alokację rejestrów poprzez dokładne wstępne obliczenie rejestru w zależności od modułu cieniującego.

Dodatek: W tej chwili ACO działa tylko dla sterownika Mesa RADV Vulkan. Ale programiści ACO Potwierdzonyże ich następnym krokiem będzie rozpoczęcie prac nad rozszerzeniem możliwości ACO o obsługę sterownika RadeonSI OpenGL, tak aby w przyszłości ACO mogło zastąpić dla tego sterownika domyślny kompilator shaderów LLVM.

Źródło: opennet.ru

Dodaj komentarz