L’article ne peut pas être activé avec JavaScript. Vous pouvez également activer JavaScript dans votre navigateur et sur la nouvelle page.
FEX, le traducteur qui transforme le code de jeu x86 en instructions Arm64 dans la pile Proton de Steam Frame, conserve désormais son cache de code traduit à 1 Go et jette les caches obsolètes à chaque mise à jour. Les deux modifications répondent aux lacunes répertoriées par le projet dans sa propre publication de septembre, qui indiquait que le cache pouvait « techniquement se développer de manière illimitée » et qu’il n’y avait aucun moyen de supprimer les entrées obsolètes.
Ils sont arrivés dans FEX-2610, que le projet date du 7 octobre et dont le flux de sortie de GitHub est horodaté à 19:19:40 UTC le même jour, lu à 21:03 UTC le 8 octobre. Le cache disque est la fonctionnalité destinée au bégaiement JIT : une fois activé, FEX écrit le code Arm64 qu’il génère dans une base de données et recherche le résultat lors des exécutions ultérieures plutôt que de traduire à nouveau le même code de jeu.
Le plafond répond à l’avertissement du projet en septembre
FEX a expédié le cache en tant qu’opt-in en septembre et a indiqué à l’époque ce qui manquait. « Si la mise en cache disque est activée sur les applications codées JIT elles-mêmes, alors le cache peut techniquement croître de manière illimitée », indique le message FEX-2609. « Nous n’avons pas encore implémenté de limite de taille de mise en cache ni aucun moyen de supprimer les entrées de cache obsolètes. »
Les deux lacunes sont comblées dans le poste FEX-2610. « Désormais, lorsque le cache disque est activé, il limitera automatiquement sa taille à 1 Go, puis nous arrêterons la mise en cache à ce stade », indique-t-il. « Ceci est configurable dans les options INI pour que plus ou moins d’espace soit consommé, mais comme certains cas extrêmes lui permettent d’avoir une croissance illimitée, cela semble être un bon équilibre à 1 Go. » Lors de la mise à niveau, FEX « supprimera automatiquement les anciens caches disque qui ne sont pas pertinents pour la nouvelle version », afin que les propriétaires n’aient pas « plusieurs fichiers de cache de 1 Go à disposition lors de leur mise à niveau au fil du temps ».
Il y a une deuxième cache au-dessus, et le projet fait attention à qui devrait s’en soucier. Le tampon en mémoire facultatif contient des blocs chauds de code traduit et « ne vaut la peine d’être utilisé que si un jeu bégaie fréquemment à cause des invocations JIT et que vous disposez de RAM de rechange pour permettre une mise en cache supplémentaire ». Une clé de modification plus petite a mis en cache les fichiers ELF sur l’identifiant de build GNU intégré, ce qui, selon FEX, aide lorsqu’un fichier de jeu a été remplacé et qu’un cache obsolète serait autrement utilisé.
Un logiciel de secours pour les nombres aléatoires d’une puce
FEX-2610 ajoute également des versions logicielles des instructions x86 RDRAND et RDSEED, qui renvoient des nombres aléatoires et sans lesquelles certains programmes refusent de démarrer. Il est désactivé par défaut car, selon les termes du projet, « les performances ne sont pas aussi bonnes qu’une implémentation matérielle ».
La raison pour laquelle il existe est plus brutale. Cette solution de repli est « également utile pour les plates-formes avec Qualcomm Oryon où leur implémentation RNG est buggée et ne renvoie pas de valeurs réelles », écrit FEX. Il s’agit de la propre caractérisation du silicium d’une autre société par le projet plutôt que d’une déclaration de Qualcomm, et FEX ne publie aucune mesure à côté.
Un mois plus léger, aux dires du projet
Le reste est du ménage. FEX a ajouté la prise en charge d’AVX-VNNI, que certaines bibliothèques de jeux ont commencé à utiliser, a accéléré les opérations de chaîne SSE4.2, a réactivé 3DNow! après avoir corrigé son dernier bug connu, et amélioré l’instruction x87 FXAM car Mono l’utilise pour détecter les dénormalités. Le projet attribue ce mois maigre à la conférence des développeurs X.Org.
Rien de tout cela n’est l’œuvre de Valve. FEX est un projet distinct qui se trouve dans la pile Proton aux côtés de Wine et DXVK sur Arm64, et le cache disque reste optionnel, donc le plafond de 1 Go ne change rien pour quiconque ne l’a jamais allumé. Pour ceux qui l’ont fait, le cache qui pouvait s’agrandir sans limite s’arrête désormais à 1 Go, et les anciens disparaissent d’eux-mêmes.