Распрацоўнікі праекту Mesa абвясцілі аб сертыфікацыі арганізацыяй Khronos драйвера rusticl, які паспяхова мінуў усе тэсты з набору CTS (Kronos Conformance Test Suite) і прызнаны цалкам сумяшчальным са спецыфікацыяй OpenCL 3.0, вызначальнай API і пашырэнні мовы З для арганізацыі крос-платформавых раўналежных вылічэнняў. Атрыманне сертыфіката дае магчымасць афіцыйна заяўляць аб сумяшчальнасці са стандартамі і выкарыстоўваць звязаныя з імі гандлёвыя маркі Khronos. Праверка была выканана на сістэме з 12-пакаленнем інтэграваных GPU Intel, на якой выкарыстоўваўся Gallium3D-драйвер Iris.
Драйвер напісаны на мове Rust і развіваецца Кэралам Хербстам (Karol Herbst) з кампаніі Red Hat, якія прымаюць удзел у распрацоўцы Mesa, драйвера Nouveau і адкрытага стэка OpenCL. Rusticl выступае ў ролі аналогу прысутнага ў Mesa OpenCL-франтэнда Clover і таксама распрацаваны з выкарыстаннем які прадстаўляецца ў Mesa інтэрфейсу Gallium. Clover ужо даўно знаходзіцца ў закінутым стане і rusticl пазіцыянуецца як яго будучая замена. Акрамя дасягнення сумяшчальнасці з OpenCL 3.0 праект Rusticl адрозніваецца ад Clover падтрымкай пашырэнняў OpenCL для апрацоўкі малюнкаў, але пакуль не падтрымлівае фармат FP16. Для генерацыі біндзінгаў для Mesa і OpenCL, якія дазваляюць выклікаць Rust-функцыі з кода на Сі і наадварот, у Rusticl задзейнічаны rust-bindgen.
Код для падтрымкі мовы Rust і драйвер rusticl прыняты ў асноўны склад Mesa і будуць прапанаваны ў выпуску Mesa 22.3/2021, які чакаецца ў канцы лістапада. Падтрымка Rust і rusticl будзе адключаная па змаўчанні і запатрабуе зборкі з відавочным указаннем опцый "-D gallium-rusticl=true -Dllvm=enabled -Drust_std=XNUMX". Пры зборцы ў якасці дадатковых залежнасцяў запатрабуюцца кампілятар rustc, генератар прывязак bindgen, LLVM, інструментар SPIRV-Tools і транслятар SPIRV-LLVM-Translator.
Возможность использования языка Rust в проекте Mesa обсуждается с 2020 года. Из плюсов поддержки Rust упоминается повышение безопасности и качества драйверов за счёт избавления от типовых проблем при работе с памятью, а также возможность включения в состав Mesa сторонних наработок, таких как Kazan (реализация Vulkan на Rust). Из недостатков отмечается усложнение системы сборки, нежелание привязываться к пакетной системе cargo, расширение требований к сборочному окружению и необходимость включения компилятора Rust в сборочные зависимости, обязательные для построения ключевых компонентов рабочего стола в Linux.
Дополнительно можно отметить работу по развитию драйвера Nouveau, также проведённую Кэролом Хербстом. В драйвер Nouveau добавлена базовая поддержка OpenGL для GNU NVIDIA GeForce RTX 30xx на базе микроархитектуры Ampere, выпускаемых с мая 2020 года. Связанные с поддержкой новых чипов изменения войдут в состав ядра Linux 6.2 і Mesa 22.3.
Крыніца: opennet.ru
