The new implementation of OpenCl ( rusticl ), written in the language rust, Successfully passed CTS tests (Kronos Conformance Test Suite) used by the Khronos consortium to evaluate compatibility with the specifications of the OpenCl 3.0. The project is developed by Carol Herbst from Red Hat, which takes part in the development of MESA, Nouveau Driver and OpenCl open stack. It is noted that Carol contacted Khronos for official certification of OpenCl 3.0 support in Rusticl.
tests passed on the system with 12-collection GPU Intel (Alder Lake). The work was carried out using the IRIS MESA-Drive, but the project should also work with other Mesa drivers using a shockpotent representation (IR) of shadeers nir . a request for a merger rustical with Mesa is still in the stage considerations and a decision to include code in the Rust in Mesa have not yet been accepted. Prior to the adoption of Rusticl in the main composition of MESA for assembly, you can use a separate branch , when compilation of which follows Indicate the assembly parameters “-dgallium-rusticl = True -Dopencl-Spirv = True -DShader-Cache = True -DLLVM = True”.
Rusticl acts as an analogue of the OpenCl-Frontenty clover and also developed using the interface provided to the MESA gallium . The Clover stake has long been abandoned and Rusticl is positioned as its future replacement. In addition to achieving compatibility with OpenCl 3.0, the Rusticl project differs from Clover support for OpenCl extensions for does not support format fp16.
To generate binding for Mesa and OpenCl, allowing to cause RUST-functions from the code on SI and vice versa, rust- in Rusticall is involved in Rusticl. bindgen . The possibility of using the Rust language in the MESA project has been discussed since 2020. Of the advantages of RUST support, an increase in the safety and quality of drivers by getting rid of typical problems when working with memory, as well as the ability to include third-party developments in the composition of MESA, such as Kazan (Vulkan implementation on rust). Of the shortcomings, there is a complication of the assembly system, unwillingness to become attached to the Cargo package system, expanding the requirements for the assembly environment and the need to include Rust compiler for assembly dependencies that are mandatory for building key components of the desktop in Linux.