De nieuwe OpenCL-implementatie (rusticl), geschreven in Rust en ontwikkeld voor het Mesa-project, heeft de tests van de Kronos Conformance Test Suite (CTS) met succes doorstaan. Deze tests worden door het Khronos-consortium gebruikt om de compatibiliteit met de OpenCL 3.0-specificaties te beoordelen. Het project wordt ontwikkeld door Karol Herbst van Red Hat, die betrokken is bij de ontwikkeling van Mesa, de Nouveau-driver en de open OpenCL-stack. Karol heeft contact opgenomen met Khronos over de officiële certificering van ondersteuning voor OpenCL 3.0 in rusticl.
De tests werden uitgevoerd op een systeem met een Intel GPU van de 12e generatie (Alder Lake). Er werd gewerkt met de Iris Mesa-driver, maar het project zou ook moeten werken met andere Mesa-drivers die een niet-getypeerde tussenliggende representatie (IR) van NIR-shaders gebruiken. De merge-aanvraag voor Rusticl met Mesa is nog in behandeling en er is nog geen beslissing genomen over het opnemen van Rust-code in Mesa. Totdat Rusticl is geaccepteerd in de hoofdcompositie van Mesa, kan een aparte branch worden gebruikt voor assembly. Tijdens de compilatie hiervan moeten de assembly-parameters "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=true" worden opgegeven.
Rusticl is een analoog van Mesa's OpenCL frontend Clover en is eveneens ontwikkeld met behulp van Mesa's Gallium-interface. Clover is lange tijd verlaten en Rusticl wordt gepositioneerd als zijn toekomstige vervanger. Naast de compatibiliteit met OpenCL 3.0 verschilt Rusticl van Clover doordat het OpenCL-extensies voor beeldverwerking ondersteunt, maar nog niet het FP16-formaat.
Rusticl gebruikt rust-bindgen om bindings te genereren voor Mesa en OpenCL, waardoor Rust-functies vanuit C-code kunnen worden aangeroepen en vice versa. De mogelijkheid om de Rust-taal in het Mesa-project te gebruiken, wordt al sinds 2020 besproken. Voordelen van Rust-ondersteuning zijn onder andere een verhoogde driverbeveiliging en -kwaliteit door het elimineren van veelvoorkomende geheugenproblemen, evenals de mogelijkheid om ontwikkelingen van derden in Mesa te integreren, zoals Kazan (een Rust-implementatie van Vulkan). Nadelen zijn onder andere een grotere complexiteit van het buildsysteem, een terughoudendheid om te integreren met het cargo-pakketsysteem, uitgebreidere eisen aan de buildomgeving en de noodzaak om de Rust-compiler op te nemen in de buildafhankelijkheden die nodig zijn voor het bouwen van belangrijke desktopcomponenten. Linux.
Bron: opennet.ru
