Новата имплементација на OpenCL (rusticl), напишана во Rust, која се развива за проектот Mesa, успешно го помина тест пакетот CTS (Kronos Conformance Test Suite) што го користи конзорциумот Khronos за да ја процени компатибилноста со спецификациите OpenCL 3.0. Проектот го развива Карол Хербст од Red Hat, кој е вклучен во развојот на Mesa, возачот Nouveau и отворениот стек OpenCL. Забележано е дека Керол контактирала со Khronos во врска со официјалната сертификација на поддршка за OpenCL 3.0 во рустикл.
Тестовите беа завршени на систем со Intel GPU од 12-та генерација (Alder Lake). Работата беше изведена со помош на двигателот на Mesa Iris, но проектот треба да работи и со други двигатели на Mesa кои користат безтипско средно претставување (IR) на NIR шејдерите. Барањето за спојување на Рустикл со Меса сè уште е во фаза на разгледување и не е донесена одлука дали да се вклучи Руст код во Меса. Пред Рустикл да биде прифатен во главниот состав на Mesa, можете да користите посебна гранка за градење, при составувањето треба да ги наведете параметрите за градба „-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= вистина“.
Рустикл делува како аналог на предниот дел на Меса OpenCL Clover и исто така е развиен со помош на интерфејсот Галиум обезбеден во Меса. Уделот Детелина е напуштен долго време и рустиклот е позициониран како негова идна замена. Покрај постигнувањето на компатибилност со OpenCL 3.0, проектот Rusticle се разликува од Clover во поддршката на екстензии на OpenCL за обработка на слики, но сè уште не го поддржува форматот FP16.
Для генерации биндингов для Mesa и OpenCL, позволяющих вызывать Rust-функции из кода на Си и наоборот, в Rusticl задействован rust-bindgen. Возможность использования языка Rust в проекте Mesa обсуждается с 2020 года. Из плюсов поддержки Rust упоминается повышение безопасности и качества драйверов за счёт избавления от типовых проблем при работе с памятью, а также возможность включения в состав Mesa сторонних наработок, таких как Kazan (реализация Vulkan на Rust). Из недостатков отмечается усложнение системы сборки, нежелание привязываться к пакетной системе cargo, расширение требований к сборочному окружению и необходимость включения компилятора Rust в сборочные зависимости, обязательные для построения ключевых компонентов рабочего стола в Linux.
Извор: opennet.ru
