Présentation
Valve intègre deux nouvelles couches de compatibilité dans SteamOS : FEX, un émulateur x86‑64 destiné aux processeurs ARM, et Lepton, un conteneur qui exécute les APK Android. Ces outils visent à élargir le catalogue de jeux disponibles sur le Steam Frame et, à terme, sur d’autres appareils ARM fonctionnant sous SteamOS.
Fonctionnement de FEX
FEX est la version Valve du projet open‑source fex-emu. Depuis 2018, le projet a évolué d’un prototype de traduction d’instructions vers un binary recompiler avancé capable de prendre en charge l’ensemble des extensions modernes du jeu d’instructions x86‑64. Le recompiler traduit dynamiquement le code x86 en code natif ARM, puis le place dans un cache d’instructions afin de réduire les sauts de traduction et d’atténuer le « stuttering » signalé par les développeurs. Pour les appels graphiques, FEX intercepte les API OpenGL et Vulkan et les redirige vers les implémentations natives du GPU ARM, limitant ainsi le coût d’une double traduction.
Valve a financé le développeur principal, Ryan Houdek, dès la phase prototype, estimant qu’une décennie de travail serait nécessaire avant d’atteindre une robustesse suffisante pour les bibliothèques de jeux. La couche est désormais prête pour l’intégration au Steam Frame, et Valve explore son déploiement sur d’autres appareils ARM, ce qui pourrait rendre SteamOS viable sur des consoles ou des PC à faible consommation.
Fonctionnement de Lepton
Lepton repose sur le projet Waydroid, qui crée un environnement Android complet dans un conteneur Linux. Valve a adapté ce cadre pour SteamOS, permettant l’exécution d’APK Android sans modification du code source. Le conteneur partage le noyau Linux du système hôte, mais isole les processus Android via des namespaces et des cgroups, offrant une barrière de sécurité comparable à celle des conteneurs Docker.
Lepton est crucial pour le Steam Frame, car de nombreux titres VR initialement développés pour les casques Quest (Android) sont distribués sous forme d’APK. Une analyse de VR.org a identifié 52 jeux sur les 120 premiers « Great on Frame » qui s’exécutent via Lepton, soit plus de 40 % du catalogue initial. Ces jeux utilisent les API graphiques Android (OpenGL ES ou Vulkan) qui sont traduites en appels Vulkan natifs du système, conservant ainsi la latence requise pour la réalité virtuelle.
Impacts et limites
Les deux couches augmentent la portée de SteamOS, mais introduisent des coûts de performance. L’émulation x86‑64 de FEX, même avec le cache d’instructions, impose une surcharge CPU qui dépend fortement de la complexité du code natif et de la fréquence de recompilation. Les extensions récentes du jeu d’instructions (AVX‑512, etc.) sont supportées en théorie, mais leur traduction peut entraîner des pénalités de latence importantes sur les SoC ARM à faible fréquence.
Lepton, quant à lui, dépend de la compatibilité des API Android. Les applications qui utilisent des services système propriétaires ou des capteurs spécifiques aux appareils Quest peuvent rencontrer des échecs d’initialisation. De plus, le modèle de conteneur ne garantit pas une intégration transparente avec les périphériques SteamVR non Android, ce qui limite actuellement le support aux titres déjà packagés en APK.
En résumé, FEX et Lepton offrent à Valve un moyen de combler le fossé entre les architectures x86 et ARM ainsi que entre les écosystèmes Windows et Android. Leur succès dépendra de l’efficacité du recompiler, de la capacité du cache à amortir les coûts de traduction, et de la volonté des développeurs de publier des versions Android compatibles avec le modèle de conteneur de Lepton.