Для рСцСнзирования ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Linux-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для GPU Apple AGX, написанный Π½Π° Rust

Π’ спискС рассылки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра Linux ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ рСализация Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° drm-asahi для GPU Apple AGX сСрий G13 ΠΈ G14, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Ρ‡ΠΈΠΏΠ°Ρ… Apple M1 ΠΈ M2. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ написан Π½Π° языкС Rust ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… обвязок Π½Π°Π΄ подсистСмой DRM (Direct Rendering Manager), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… графичСских Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust. ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΏΠΎΠΊΠ° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для обсуТдСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ядра (RFC), Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ принят Π² основной состав послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рСцСнзирования ΠΈ устранСния выявлСнных Π½Π΅Π΄ΠΎΡ‡Ρ‘Ρ‚ΠΎΠ².

C дСкабря Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав состав ΠΏΠ°ΠΊΠ΅Ρ‚Π° с ядром для дистрибутива Asahi Linux ΠΈ протСстирован ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π² дистрибутивах Linux для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ графичСского окруТСния Π½Π° устройствах Apple с SoC M1, M1 Pro, M1 Max, M1 Ultra ΠΈ M2. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° прСдпринята ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности Π·Π° счёт ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² ΠΊΠΎΠ΄Π΅, выполняСмом Π½Π° сторонС CPU, Π½ΠΎ ΠΈ обСспСчСна частичная Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ взаимодСйствии с ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ. Π’ частности, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ прСдоставляСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ обвязки для нСбСзопасных структур раздСляСмой памяти со слоТными Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, примСняСмых Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅ для взаимодСйствия с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сочСтании с Mesa-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ asahi, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ OpenGL Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ проходящий тСсты совмСстимости с OpenGL ES 2 ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ OpenGL ES 3.0. ΠŸΡ€ΠΈ этом Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ развиваСтся с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ API Vulkan, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс для взаимодСйствия с пространством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ спроСктирован с оглядкой Π½Π° UAPI, прСдоставляСмый Π½ΠΎΠ²Ρ‹ΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ Intel Xe.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru