﻿﻿{"id":1755,"date":"2025-12-04T05:57:17","date_gmt":"2025-12-04T04:57:17","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/fex-lemulateur-x86-finance-par-valve\/"},"modified":"2025-12-04T05:57:17","modified_gmt":"2025-12-04T04:57:17","slug":"fex-lemulateur-x86-finance-par-valve","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/fex-lemulateur-x86-finance-par-valve\/","title":{"rendered":"FEX &#8211; L&#8217;\u00e9mulateur x86 financ\u00e9 par Valve"},"content":{"rendered":"<p>Dites donc, en ce moment, c\u2019est la folie autour de Valve. D\u2019ailleurs, en lisant mon article sur le<br \/>\n<a href=\"https:\/\/korben.info\/valve-steam-machine-frame-controller-2026-annonce.html\">Steam Frame<\/a><br \/>\n, vous vous \u00eates peut-\u00eatre demand\u00e9 comme celui-ci allait r\u00e9ussir \u00e0 faire tourner des jeux PC alors qu\u2019il tourne sur un Snapdragon ARM ?<\/p>\n<p>H\u00e9 bien la r\u00e9ponse s\u2019appelle <strong><br \/>\n<a href=\"https:\/\/github.com\/FEX-Emu\/FEX\">FEX<\/a><br \/>\n<\/strong>, un \u00e9mulateur que Valve finance en secret depuis 2018 soit en gros depuis le tout d\u00e9but du projet.<\/p>\n<p>Pour ceux qui connaissent pas, FEX permet de faire tourner des applications x86 (32 et 64 bits) sur des processeurs ARM64 sous Linux. C\u2019est un peu comme qemu-user ou box64, sauf que FEX utilise un recompilateur binaire avanc\u00e9 avec un IR custom qui g\u00e9n\u00e8re du code plus optimis\u00e9 qu\u2019un JIT classique.<\/p>\n<p>Concr\u00e8tement, au lieu de traduire directement le code x86 en ARM64 (ce qui serait un bordel monstre vu les diff\u00e9rences entre les deux architectures), FEX fait donc \u00e7a en deux temps :<\/p>\n<ol>\n<li><strong>x86 \u2192 IR<\/strong> : le code x86 est d\u2019abord converti dans un langage interm\u00e9diaire simplifi\u00e9, ind\u00e9pendant de toute architecture<\/li>\n<li><strong>IR \u2192 ARM64<\/strong> : ensuite cet IR est traduit en code ARM64 natif<\/li>\n<\/ol>\n<p>L\u2019avantage c\u2019est qu\u2019on peut appliquer des optimisations sur l\u2019IR (par exemple, \u00e9liminer du code mort, simplifier des op\u00e9rations, r\u00e9organiser les instructions\u2026etc) avant de g\u00e9n\u00e9rer le code final.<\/p>\n<p>FEX supporte m\u00eame AVX et AVX2, ce qui est quand m\u00eame pas mal pour de l\u2019\u00e9mulation.<\/p>\n<p>La vraie force de FEX, c\u2019est sa capacit\u00e9 \u00e0 rediriger les appels API vers les biblioth\u00e8ques natives du syst\u00e8me. Au lieu d\u2019\u00e9muler OpenGL ou Vulkan (ce qui serait une catastrophe pour les performances), FEX balance directement les appels vers les versions ARM des biblioth\u00e8ques. Selon Valve, on parle d\u2019une perte de performances de seulement 10 \u00e0 20% sur certains aspects du code\u2026 et visiblement, ils arrivent \u00e0 faire tourner Hades 2 en 1440p \u00e0 90 Hz sur le Steam Frame donc c\u2019est pas d\u00e9gueu.<\/p>\n<p>Du coup, on a maintenant la vue d\u2019ensemble de la strat\u00e9gie Valve pour le gaming ARM : <strong><br \/>\n<a href=\"https:\/\/fex-emu.com\/\">FEX pour \u00e9muler le x86 natif<\/a><br \/>\n<\/strong>, <strong>Lepton pour les APK Android<\/strong>, et <strong>Proton pour les jeux Windows<\/strong>. Trois couches de compatibilit\u00e9 qui devraient permettre au Steam Frame de jouer \u00e0 peu pr\u00e8s tout ce qui existe. C\u2019est la m\u00eame strat\u00e9gie que pour le Steam Deck, au final.<\/p>\n<p>Le cache de code exp\u00e9rimental de FEX permet aussi de r\u00e9duire les saccades en jeu, et y\u2019a m\u00eame une interface graphique (FEXConfig) pour configurer les param\u00e8tres par application. Parce que oui, selon les jeux, vous pouvez ajuster les r\u00e9glages pour optimiser les perfs\u2026 genre d\u00e9sactiver l\u2019\u00e9mulation co\u00fbteuse du mod\u00e8le m\u00e9moire si le jeu n\u2019en a pas besoin.<\/p>\n<p>Et comme d\u2019hab avec eux, c\u2019est open source et \u00e7a profite \u00e0 tout le monde alors c\u2019est cool !<\/p>\n<p>\n<a href=\"https:\/\/www.theverge.com\/report\/820656\/valve-interview-arm-gaming-steamos-pierre-loup-griffais\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dites donc, en ce moment, c\u2019est la folie autour de Valve. D\u2019ailleurs, en lisant mon article sur le Steam Frame , vous vous \u00eates peut-\u00eatre demand\u00e9 comme celui-ci allait r\u00e9ussir \u00e0 faire tourner des jeux PC alors qu\u2019il tourne sur un Snapdragon ARM ? H\u00e9 bien la r\u00e9ponse s\u2019appelle FEX , un \u00e9mulateur que Valve finance en secret depuis 2018 soit en gros depuis le tout d\u00e9but du projet. Pour ceux qui connaissent pas, FEX permet de faire tourner des applications x86 (32 et 64 bits) sur des processeurs ARM64 sous Linux. C\u2019est un peu comme qemu-user ou box64, sauf que FEX utilise un recompilateur binaire avanc\u00e9 avec un IR custom qui g\u00e9n\u00e8re du code plus optimis\u00e9 qu\u2019un JIT classique. Concr\u00e8tement, au lieu de traduire directement le code x86 en ARM64 (ce qui serait un bordel monstre vu les diff\u00e9rences entre les deux architectures), FEX fait donc \u00e7a en deux temps : x86 \u2192 IR : le code x86 est d\u2019abord converti dans un langage interm\u00e9diaire simplifi\u00e9, ind\u00e9pendant de toute architecture IR \u2192 ARM64 : ensuite cet IR est traduit en code ARM64 natif L\u2019avantage c\u2019est qu\u2019on peut appliquer des optimisations sur l\u2019IR (par exemple, \u00e9liminer du code mort, simplifier des op\u00e9rations, r\u00e9organiser les instructions\u2026etc) avant de g\u00e9n\u00e9rer le code final. FEX supporte m\u00eame AVX et AVX2, ce qui est quand m\u00eame pas mal pour de l\u2019\u00e9mulation. La vraie force de FEX, c\u2019est sa capacit\u00e9 \u00e0 rediriger les appels API vers les biblioth\u00e8ques natives du syst\u00e8me. Au lieu d\u2019\u00e9muler OpenGL ou Vulkan (ce qui serait une catastrophe pour les performances), FEX balance directement les appels vers les versions ARM des biblioth\u00e8ques. Selon Valve, on parle d\u2019une perte de performances de seulement 10 \u00e0 20% sur certains aspects du code\u2026 et visiblement, ils arrivent \u00e0 faire tourner Hades 2 en 1440p \u00e0 90 Hz sur le Steam Frame donc c\u2019est pas d\u00e9gueu. Du coup, on a maintenant la vue d\u2019ensemble de la strat\u00e9gie Valve pour le gaming ARM : FEX pour \u00e9muler le x86 natif , Lepton pour les APK Android, et Proton pour les jeux Windows. Trois couches de compatibilit\u00e9 qui devraient permettre au Steam Frame de jouer \u00e0 peu pr\u00e8s tout ce qui existe. C\u2019est la m\u00eame strat\u00e9gie que pour le Steam Deck, au final. Le cache de code exp\u00e9rimental de FEX permet aussi de r\u00e9duire les saccades en jeu, et y\u2019a m\u00eame une interface graphique (FEXConfig) pour configurer les param\u00e8tres par application. Parce que oui, selon les jeux, vous pouvez ajuster les r\u00e9glages pour optimiser les perfs\u2026 genre d\u00e9sactiver l\u2019\u00e9mulation co\u00fbteuse du mod\u00e8le m\u00e9moire si le jeu n\u2019en a pas besoin. Et comme d\u2019hab avec eux, c\u2019est open source et \u00e7a profite \u00e0 tout le monde alors c\u2019est cool ! Source<\/p>\n","protected":false},"author":1,"featured_media":1756,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-1755","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1755"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1755\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1756"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}