Os desenvolvedores do projeto Mesa anunciaram a certificação do driver rusticl pela organização Khronos, que passou com sucesso todos os testes do conjunto CTS (Kronos Conformance Test Suite) e foi reconhecido como totalmente compatível com a especificação OpenCL 3.0, que define a API e as extensões da linguagem C para a realização de cálculos paralelos em várias plataformas. A obtenção do certificado permite declarar oficialmente a compatibilidade com os padrões e usar as marcas comerciais associadas da Khronos. A verificação foi realizada em um sistema com GPUs integradas Intel de 12ª geração, utilizando o driver Gallium3D Iris.
O driver é escrito na linguagem Rust e está sendo desenvolvido por Karol Herbst da Red Hat, que participa do desenvolvimento do Mesa, do driver Nouveau e da pilha aberta OpenCL. Rusticl atua como um substituto do front-end OpenCL Clover que está presente no Mesa e também foi desenvolvido utilizando a interface Gallium fornecida no Mesa. Clover já está em um estado de abandono há bastante tempo, e rusticl está posicionado como seu sucessor. Além de alcançar compatibilidade com OpenCL 3.0, o projeto Rusticl se diferencia do Clover pelo suporte a extensões OpenCL para processamento de imagens, mas ainda não suporta o formato FP16. Para gerar bindings para Mesa e OpenCL, que permitem chamar funções Rust a partir de código C e vice-versa, o rust-bindgen é utilizado no rusticl.
O código para suporte à linguagem Rust e ao driver rusticl foi aceito no repositório principal do Mesa e será incluído na versão Mesa 22.3, que está prevista para o final de novembro. O suporte ao Rust e ao rusticl estará desativado por padrão e exigirá a compilação com a especificação explícita das opções "-D gallium-rusticl=true -Dllvm=enabled -Drust_std=2021". Durante a compilação, serão necessárias como dependências adicionais o compilador rustc, o gerador de bindings bindgen, o LLVM, as ferramentas SPIRV-Tools e o tradutor SPIRV-LLVM-Translator.
A possibilidade de usar a linguagem Rust no projeto Mesa está sendo discutida desde 2020. Entre os benefícios do suporte ao Rust, destaca-se o aumento da segurança e qualidade dos drivers, eliminando problemas típicos relacionados à memória, além da capacidade de incluir contribuições externas no Mesa, como Kazan (implementação do Vulkan em Rust). Entre os contras, mencionam-se a complexidade do sistema de build, a relutância em vincular-se ao sistema de pacotes cargo, o aumento dos requisitos do ambiente de compilação e a necessidade de incluir o compilador Rust nas dependências de build obrigatórias para a construção dos componentes principais da área de trabalho no Linux.
Adicionalmente, vale mencionar o trabalho de desenvolvimento do driver Nouveau, também realizado por Carol Herbst. O driver Nouveau recebeu suporte básico para OpenGL para a NVIDIA GeForce RTX 30xx, baseada na microarquitetura Ampere, lançada desde maio de 2020. As alterações relacionadas ao suporte de novos chips farão parte do núcleo Linux 6.2 e do Mesa 22.3.
Fonte: opennet.ru
