Retour vers l’ensemble des articles

Wine 11 : le jeu Windows sous Linux cesse enfin d’être un bricolage

Depuis 2018 et le lancement de Proton par Valve, le jeu sous Linux a progressé par petites touches. Chaque version de Wine apportait ses corrections, ses ajustements, son lot de compatibilités gagnées. Wine 11 rompt avec cette logique incrémentale. Ce n’est pas une mise à jour de plus — c’est une réécriture fondamentale de la façon dont Linux gère la synchronisation des threads Windows.—

Le problème que personne ne voyait vraiment

Les jeux Windows modernes sont massivement multi-threadés. Le CPU jongle en permanence entre rendu graphique, calculs physiques, chargement des assets, traitement audio. Ces threads doivent se coordonner en permanence via ce que Windows appelle des primitives de synchronisation NT (mutexes, sémaphores, événements). Ces mécanismes sont câblés au cœur du noyau Windows.

Le problème : Linux n’a pas d’équivalents natifs au comportement identique. Wine devait donc émuler tout ça. Et l’émulation avait un coût. Selon XDA Developers, l’approche historique impliquait un aller-retour RPC vers un processus dédié appelé wineserver à chaque opération de synchronisation. Pour un jeu effectuant des milliers de ces appels par seconde, la facture s’accumulait vite — sous forme de micro-stutters, de frame pacing erratique, de jeux qui « sonnent faux » même quand le compteur de FPS semblait correct.

Deux tentatives de contournement ont émergé au fil des ans. Esync, développé par Elizabeth Figura chez CodeWeavers, utilisait l’appel système eventfd pour court-circuiter le wineserver. Efficace, mais limité par les plafonds de descripteurs de fichiers du système. Fsync est venu ensuite, plus rapide, basé sur les futexes Linux — mais il nécessitait des patches noyau hors-arbre, jamais intégrés dans le noyau Linux principal. Résultat : réservé aux utilisateurs de distributions spécialisées comme CachyOS ou de forks comme Proton-GE. L’utilisateur standard sous Ubuntu ou Fedora n’y avait pas accès simplement.

Ces deux solutions restaient des approximations. Certaines opérations NT — comme NtPulseEvent() ou le mode « attente de tous » de NtWaitForMultipleObjects() — nécessitent un contrôle direct sur les files d’attente du noyau. Impossible à reproduire fidèlement depuis l’espace utilisateur.

NTSYNC : la synchronisation enfin correcte, enfin dans le noyau

NTSYNC prend une direction radicalement différente. Plutôt que de simuler le comportement NT avec des primitives Linux inadaptées, il ajoute un driver noyau qui modélise directement l’API de synchronisation NT. Ce driver expose un périphérique /dev/ntsync que Wine interroge. C’est le noyau lui-même qui gère la coordination — avec une gestion de file d’attente correcte, une sémantique d’événements fidèle, et des opérations atomiques propres.

L’auteur de NTSYNC est la même Elizabeth Figura qui avait conçu esync et fsync. Des années de travail, plusieurs révisions de patches, une présentation au Linux Plumbers Conference en 2023 selon XDA Developers, et finalement une intégration dans le noyau Linux mainline avec la version 6.14. C’est ce détail qui change tout : plus besoin de kernel custom, plus de patches hors-arbre. Toute distribution livrant le noyau 6.14 ou supérieur — Fedora 42, Ubuntu 25.04 et versions ultérieures — supporte NTSYNC nativement.

Les chiffres publiés dans les benchmarks développeurs sont brutaux. Selon XDA Developers, en comparant Wine avec NTSYNC face à Wine vanilla sans esync ni fsync :

  • Dirt 3 : 110,6 FPS → 860,7 FPS (+678%)
  • Call of Juarez : 99,8 FPS → 224,1 FPS
  • Tiny Tina’s Wonderlands : 130 FPS → 360 FPS
  • Resident Evil 2 : 26 FPS → 77 FPS
  • Call of Duty: Black Ops I : désormais jouable sous Linux

Une nuance s’impose : ces benchmarks comparent NTSYNC à Wine vanilla, sans aucune optimisation de synchronisation. Les utilisateurs qui tournaient déjà avec fsync ne verront pas des gains aussi spectaculaires dans la majorité des titres. Les jeux qui bénéficient le plus sont ceux dont la synchronisation inter-threads était réellement le goulot d’étranglement.

Valve a déjà intégré le driver NTSYNC dans SteamOS 3.7.20 beta, le module étant chargé par défaut. Le fork non-officiel Proton GE l’a également activé. Quand Proton officiel rebasculera sur Wine 11, chaque propriétaire de Steam Deck en bénéficiera automatiquement.




WoW64 complet : fini les dépendances 32 bits à installer à la main

Dans l’ombre de NTSYNC, l’achèvement de l’architecture WoW64 de Wine mérite une attention particulière. Sur Windows, WoW64 (Windows 32-bit on Windows 64-bit) désigne le sous-système permettant aux applications 32 bits de tourner sur un système 64 bits. Wine travaillait sur sa propre implémentation depuis des années. Wine 11 marque la finalisation de ce chantier.

Concrètement : plus besoin d’installer des bibliothèques système 32 bits sur une distribution 64 bits pour faire tourner des applications Windows 32 bits. Wine gère la traduction en interne, via un binaire unifié qui détecte automatiquement si l’exécutable est 32 ou 64 bits. Terminées les manipulations de paquets multilib, les batailles avec ia32-libs, les incompatibilités entre distributions.

Ce n’est pas un détail cosmétique. Un nombre significatif de jeux, notamment les titres plus anciens, sont des exécutables 32 bits. Le mode WoW64 couvre désormais les mappings mémoire OpenGL, le pass-through SCSI, et même le support des applications 16 bits. Les logiciels Windows des années 90 entrent dans le périmètre.

Le reste de Wine 11 : Wayland, Vulkan, et une longue liste de corrections

NTSYNC et WoW64 captent l’attention, mais Wine 11 embarque bien d’autres améliorations substantielles.

Le driver Wayland franchit un cap important. Le presse-papier fonctionne désormais de manière bidirectionnelle entre Wine et les applications Wayland natives. Le glisser-déposer depuis des applications Wayland vers des fenêtres Wine est supporté. Les changements de résolution des jeux anciens — ces titres qui imposaient du 640×480 — sont maintenant gérés via le scaling du compositeur, sans laisser le bureau dans un état cassé. Les réticences à migrer de X11 vers Wayland pour des raisons de compatibilité Wine perdent une bonne partie de leur justification.

Côté graphique, EGL devient le backend par défaut pour le rendu OpenGL sur X11, remplaçant l’ancien chemin GLX. Le support Vulkan monte à l’API version 1.4. Un support initial du décodage H.264 accéléré matériellement via les APIs vidéo Direct3D 11 et Vulkan Video fait son apparition — utile pour les cinématiques et le streaming en jeu.

D’autres améliorations notables selon XDA Developers :

  • Force feedback amélioré pour les volants et joysticks
  • Nouveau driver Bluetooth avec services BLE et appairage correct
  • Gestion des soundfonts MIDI améliorée pour la musique des jeux anciens
  • Support Zip64, Unicode 17.0.0, TWAIN 2.0 pour les apps 64 bits, ping IPv6
  • Gestion des priorités de threads améliorée sous Linux et macOS
  • Simulation de pages 4K sur ARM64 pour les systèmes à pages natives plus grandes

Des corrections spécifiques touchent Nioh 2StarCraft 2The Witcher 2Call of Duty: Black Ops IIFinal Fantasy XI et Battle.net.


Ce que ça change pour la durabilité numérique

Wine n’est pas seulement un outil de gaming. C’est une infrastructure de préservation logicielle. Pouvoir faire tourner des applications Windows — y compris des exécutables 16 bits des années 90 — sur un système Linux moderne sans dépendances exotiques, c’est une victoire pour la longévité du logiciel.

La philosophie de Wine est structurellement alignée avec la lutte contre l’obsolescence programmée : faire durer des logiciels que leurs éditeurs ont abandonnés, sur du matériel que les constructeurs voudraient remplacer. NTSYNC renforce cette mission en rendant l’exécution plus fiable et plus performante — sans abonnement, sans écosystème fermé, sans demander la permission à qui que ce soit.

L’intégration de NTSYNC dans le noyau Linux mainline est particulièrement significative. Ce n’est plus un patch expérimental réservé aux distributions enthousiastes. C’est une fonctionnalité standard, accessible à quiconque fait tourner un noyau récent. La barrière entre « utilisateur avancé » et « utilisateur lambda » s’efface.

Points à retenir

  • NTSYNC résout à la racine le problème de synchronisation inter-threads, intégré dans le noyau Linux 6.14 — disponible sur Fedora 42, Ubuntu 25.04 et versions ultérieures
  • Les gains les plus spectaculaires concernent les jeux avec des workloads multi-threadés lourds ; les utilisateurs de fsync verront des améliorations plus modestes
  • WoW64 est finalisé : plus besoin de bibliothèques 32 bits système, Wine gère tout en interne, y compris les applications 16 bits
  • Le driver Wayland atteint un niveau de maturité suffisant pour abandonner X11 sans sacrifier la compatibilité Wine
  • SteamOS 3.7.20 beta embarque déjà NTSYNC ; Proton officiel suivra, bénéficiant automatiquement à tous les Steam Deck
  • Tout l’écosystème bâti sur Wine — Proton, Lutris, Bottles — hérite de ces améliorations sans action supplémentaire

Sources : XDA Developers, WineHQ, Phoronix, OMG Ubuntu, The Register, GamingOnLinux, PC Gamer


Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Leave the field below empty!

Lowforehead

You cannot copy content of this page