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