Gli sviluppatori del progetto Mesa hanno annunciato la certificazione da parte dell'organizzazione Khronos del driver rusticl, che ha superato con successo tutti i test del set CTS (Kronos Conformance Test Suite) ed è riconosciuto come pienamente compatibile con la specifica OpenCL 3.0, che definisce API e estensioni del linguaggio C per l'organizzazione del calcolo parallelo multipiattaforma. L'ottenimento di un certificato consente di dichiarare ufficialmente la conformità agli standard e di utilizzare i marchi Khronos associati. Il test è stato eseguito su un sistema con GPU Intel integrate di 12a generazione utilizzando il driver Gallium3D Iris.
Il driver è scritto in Rust e sviluppato da Karol Herbst di Red Hat, coinvolto nello sviluppo di Mesa, del driver Nouveau e dello stack aperto OpenCL. Rusticle agisce come un analogo del frontend OpenCL di Mesa Clover ed è anch'esso sviluppato utilizzando l'interfaccia Gallium fornita in Mesa. Clover è stato abbandonato per molto tempo e rusticl è posizionato come il suo futuro sostituto. Oltre a raggiungere la compatibilità con OpenCL 3.0, il progetto Rusticle differisce da Clover nel supportare le estensioni OpenCL per l'elaborazione delle immagini, ma non supporta ancora il formato FP16. Per generare associazioni per Mesa e OpenCL, che consentono di chiamare funzioni Rust dal codice C e viceversa, in Rusticle viene utilizzato ruggine-bindgen.
Il codice di supporto del linguaggio Rust e il driver rusticl sono stati accettati nel mainstream Mesa e saranno offerti nella versione Mesa 22.3, prevista per fine novembre. Il supporto Rust e Rusticl sarà disabilitato per impostazione predefinita e richiederà una compilazione con le opzioni "-D gallium-rusticl=true -Dllvm=enabled -Drust_std=2021" specificate esplicitamente. Durante la compilazione, avrai bisogno del compilatore rusticc, del generatore di collegamenti bindgen, LLVM, SPIRV-Tools e SPIRV-LLVM-Translator come dipendenze aggiuntive.
Возможность использования языка Rust в проекте Mesa обсуждается с 2020 года. Из плюсов поддержки Rust упоминается повышение безопасности и качества драйверов за счёт избавления от типовых проблем при работе с памятью, а также возможность включения в состав Mesa сторонних наработок, таких как Kazan (реализация Vulkan на Rust). Из недостатков отмечается усложнение системы сборки, нежелание привязываться к пакетной системе cargo, расширение требований к сборочному окружению и необходимость включения компилятора Rust в сборочные зависимости, обязательные для построения ключевых компонентов рабочего стола в Linux.
Дополнительно можно отметить работу по развитию драйвера Nouveau, также проведённую Кэролом Хербстом. В драйвер Nouveau добавлена базовая поддержка OpenGL для GNU NVIDIA GeForce RTX 30xx на базе микроархитектуры Ampere, выпускаемых с мая 2020 года. Связанные с поддержкой новых чипов изменения войдут в состав ядра Linux 6.2 e Mesa 22.3.
Fonte: opennet.ru
