ΠΠ°ΠΉΡΠ° ΠΠ°Π½Π°Π» (Maíra Canal) ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Igalia ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° VGEM (Virtual GEM Provider) Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. VGEM Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 400 ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠΊΠ΅Π½Π΄ GEM (Graphics Execution Manager), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±ΡΡΠ΅ΡΠ°ΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ 3D-ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ LLVMpipe, Ρ ΡΠ΅Π»ΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ.
VGEM ΡΡΠ°Π½Π΅Ρ Π²ΡΠΎΡΡΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ Π½Π° Rust, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΄ΡΠ° (ΠΏΠ΅ΡΠ²ΡΠΌ Π±ΡΠ» DRM-Π΄ΡΠ°ΠΉΠ²Π΅Ρ (Direct Rendering Manager) Asahi Π΄Π»Ρ GPU Apple AGX, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΡΠΈΠΏΠ°Ρ
Apple M1/M2). ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Rust Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠΈΠΏΠΎΠΌ XArray ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΠΌΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ ΠΏΡΡΠΌΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ DMA-Π±Π°ΡΡΠ΅ΡΡ (DMA fence). ΠΠ° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΏΠΎΡΡΠΈ Π³ΠΎΡΠΎΠ², ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅ΡΡΠΎΠ² IGT, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ (vgem_slow ΠΈ vgem_basic@unload), Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ IOCTL.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru