Nova implementacija OpenCL-a (rusticl), napisana u Rustu, koja se razvija za projekt Mesa, uspješno je prošla CTS (Kronos Conformance Test Suite) paket testova koji koristi konzorcij Khronos za procjenu kompatibilnosti sa specifikacijama OpenCL 3.0. Projekt razvija Karol Herbst iz Red Hata, koji je uključen u razvoj Mesa, Nouveau drivera i OpenCL open stacka. Primijećeno je da je Carol kontaktirala Khronos u vezi sa službenom certifikacijom podrške za OpenCL 3.0 u rusticl-u.
Testovi su dovršeni na sustavu s Intel GPU-om 12. generacije (Alder Lake). Rad je obavljen pomoću upravljačkog programa Mesa Iris, ali bi projekt također trebao raditi s drugim upravljačkim programima Mesa koji koriste međureprezentaciju bez tipa (IR) NIR shadera. Zahtjev za spajanje Rusticlea s Mesa-om još uvijek je u fazi pregleda i nije donesena odluka hoće li se Rust kod uključiti u Mesa-u. Prije nego se Rusticl prihvati u glavni sastav Mesa-e, možete koristiti zasebnu granu za izgradnju, pri čijem sastavljanju trebate navesti parametre izgradnje “-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= pravi".
Rusticle djeluje kao analog Mesa OpenCL sučelja Clover i također je razvijen korištenjem Gallium sučelja koje nudi Mesa. Ulog Clover je već dugo napušten i rusticl je pozicioniran kao njegova buduća zamjena. Osim postizanja kompatibilnosti s OpenCL 3.0, projekt Rusticle razlikuje se od Clover-a po tome što podržava OpenCL ekstenzije za obradu slika, ali još ne podržava format FP16.
Для генерации биндингов для Mesa и OpenCL, позволяющих вызывать Rust-функции из кода на Си и наоборот, в Rusticl задействован rust-bindgen. Возможность использования языка Rust в проекте Mesa обсуждается с 2020 года. Из плюсов поддержки Rust упоминается повышение безопасности и качества драйверов за счёт избавления от типовых проблем при работе с памятью, а также возможность включения в состав Mesa сторонних наработок, таких как Kazan (реализация Vulkan на Rust). Из недостатков отмечается усложнение системы сборки, нежелание привязываться к пакетной системе cargo, расширение требований к сборочному окружению и необходимость включения компилятора Rust в сборочные зависимости, обязательные для построения ключевых компонентов рабочего стола в Linux.
Izvor: opennet.ru
