L’article ne peut pas être activé avec JavaScript. Vous pouvez également activer JavaScript dans votre navigateur et sur la nouvelle page.
Une application Windows VR qui dessine le monde, puis deux ou plusieurs écrans plats flottant devant vous, perdent chacune de ces images sous Linux, et le rapport expliquant pourquoi se trouve désormais à l’intérieur d’un Grand Theft Auto fil de compatibilité de 2018. Le rapport, déposé dans le tracker Proton de Valve le 17 octobre, indique que la traduction OpenXR de Proton mesure chaque couche d’un cadre avec la taille de la première.
Valve n’a pas reconnu le bug. Il a déplacé le texte du rapport dans le numéro 291, « Grand Theft Auto : Vice City (12110) », un fil de discussion de compatibilité non officiel ouvert le 23 août 2018 et fermé l’original 25 minutes après son dépôt.
Le deuxième panneau se pose au-dessus du premier
OpenXR soumet un cadre sous forme de liste de calques, et les calques n’ont pas la même taille les uns que les autres. Une couche de projection, la vue stéréo du monde, est une structure plus petite qu’une couche quadruple, qui est l’écran plat qu’un jeu utilise pour un menu ou un écran de poignet : 48 octets contre 112 sur Windows 64 bits.

Le code de traduction de Proton choisit une taille pour toute la liste et la prend à partir de la première couche. Avec la couche mondiale en premier et deux panneaux après, chaque panneau est écrit dans un emplacement découpé pour la couche mondiale, de sorte que les données du deuxième panneau s’étendent sur la position et la taille du premier panneau, et SteamVR jette le cadre avec l’erreur XR_ERROR_POSE_INVALID.
Un panneau de fin survit, car le débordement atterrit dans l’espace tampon que rien d’autre n’utilise, c’est pourquoi les applications simples fonctionnent. La propre preuve du journaliste est une astuce plutôt qu’une théorie : soumettez un petit panneau avant la couche mondiale, de sorte que le premier élément de la liste soit un quad et que chaque image soit rendue correctement. Une application de test de 270 lignes dans le deuxième rapport le compte : 1 347 images soumises en tant que monde plus deux panneaux, 1 347 échecs et aucun une fois que le petit panneau est passé en premier.

Le bug est arrivé via un mod Vice City VR
Le journaliste l’a trouvé dans reVC, un mod VR de Vice-villedont les panneaux de poignet sont les deux quads qui entrent en collision. La raison invoquée par Valve pour cette décision est procédurale : il s’agit de « suivre les problèmes avec les mods de jeu avec le jeu en cours de modification » et d' »utiliser un rapport de problème par titre de jeu non officiellement pris en charge ».
Un nouveau fichier autonome a suivi six heures après cette fermeture, avec une reproduction qui n’impliquait pas le mod et la ligne « Cela affecte n’importe quelle application Windows OpenXR, pas un jeu spécifique ». Valve l’a fermé en double 26 minutes après son dépôt et a demandé au journaliste de ne pas ouvrir les rapports de problème en double.

Rien n’est confirmé et rien n’est patché
Le compte rendu technique est celui du journaliste, avec des citations de code contre un commit nommé Proton Experimental 11.0 plutôt que vers la branche stable de Proton, qui est revenue en octobre après 49 jours sans version. Valve ne l’a pas reproduit, ne l’a pas qualifié de bug et n’a pas publié de correctif.
Le changement demandé par le rapport est faible : déterminez la taille de chaque couche à partir de son propre type à l’intérieur de la boucle, ou allouez chaque emplacement à la taille de la structure de couche la plus grande. Le même modèle apparaît dans le chemin 32 bits et dans le générateur qui écrit les deux.
Le banc d’essai était Proton Experimental 11.0-20261014 et SteamVR 2.17.10 sur CachyOS, avec un PS VR2 utilisé comme casque PC VR et un RTX 3090. Jusqu’à ce que quelque chose change, la solution de contournement est celle qui a prouvé le diagnostic : placez un panneau en premier dans la liste, et le reste du cadre vit.