Mesa loyihasi uchun ishlab chiqilayotgan Rust tilida yozilgan yangi OpenCL ilovasi (rusticl) OpenCL 3.0 spetsifikatsiyalari bilan muvofiqlikni baholash uchun Khronos konsorsiumi tomonidan qo'llaniladigan CTS (Kronos Conformance Test Suite) test to'plamidan muvaffaqiyatli o'tdi. Loyiha Mesa, Nouveau drayveri va OpenCL ochiq stekini ishlab chiqishda ishtirok etgan Red Hat kompaniyasidan Karol Xerbst tomonidan ishlab chiqilmoqda. Qayd etilishicha, Kerol rusticlda OpenCL 3.0 qo‘llab-quvvatlashining rasmiy sertifikati bo‘yicha Khronos bilan bog‘langan.
Sinovlar 12 avlod Intel GPU (Alder Leyk) bilan tizimda yakunlandi. Ish Mesa Iris drayveri yordamida amalga oshirildi, biroq loyiha NIR shaderlarining tipsiz oraliq tasvirini (IR) ishlatadigan boshqa Mesa drayverlari bilan ham ishlashi kerak. Rusticle-ni Mesa bilan birlashtirish haqidagi so'rov hali ham ko'rib chiqilmoqda va Rust kodini Mesa-ga kiritish to'g'risida qaror qabul qilinmagan. Rusticl asosiy Mesa tarkibiga qabul qilinishidan oldin, siz qurilish uchun alohida filialdan foydalanishingiz mumkin, uni tuzishda siz qurish parametrlarini belgilashingiz kerak “-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= rost”.
Rusticle Mesa-ning OpenCL frontend Clover-ning analogi sifatida ishlaydi va Mesa-da taqdim etilgan Gallium interfeysi yordamida ham ishlab chiqilgan. Clover ulushi uzoq vaqtdan beri tark etilgan va rustikl kelajakda uning o'rnini bosadigan joy sifatida joylashtirilgan. OpenCL 3.0 muvofiqligiga erishishdan tashqari, Rusticle loyihasi tasvirni qayta ishlash uchun OpenCL kengaytmalarini qo'llab-quvvatlashda Cloverdan farq qiladi, lekin hali FP16 formatini qo'llab-quvvatlamaydi.
Для генерации биндингов для Mesa и OpenCL, позволяющих вызывать Rust-функции из кода на Си и наоборот, в Rusticl задействован rust-bindgen. Возможность использования языка Rust в проекте Mesa обсуждается с 2020 года. Из плюсов поддержки Rust упоминается повышение безопасности и качества драйверов за счёт избавления от типовых проблем при работе с памятью, а также возможность включения в состав Mesa сторонних наработок, таких как Kazan (реализация Vulkan на Rust). Из недостатков отмечается усложнение системы сборки, нежелание привязываться к пакетной системе cargo, расширение требований к сборочному окружению и необходимость включения компилятора Rust в сборочные зависимости, обязательные для построения ключевых компонентов рабочего стола в Linux.
Manba: opennet.ru
