Les développeurs de Yuzu viennent d'annoncer sur leur blog que l'émulateur vient de faire face probablement à la plus grande des réécritures de histoire.
Le code de l'émulateur, notamment sur le cache des textures, a été grandement rétabli, et les utilisateurs membres de leur programme Early Access peuvent dès maintenant en profiter.
Cette réécriture appelée "Texture Cache Rewrite" ou "TCR" est une étape importante dans l'évolution de l'émulateur, l'équipe rappelle que le développement de Yuzu a commencé comme un fork de Citra, donc le cache de texture a été utilisé dans les premières versions de Yuzu. Ce cache avait des limites, par exemple il ne supportait qu'OpenGL, il a donc fallu ajouter le support de Vulkan.
Au fur et à mesure de l'apprentissage du code GPU de la Switch, les développeurs de Yuzu ont du adapter le code et certaines décisions de conception sont là aussi limitatives, et ont rendu certaines évolutions plus complexes à mettre en oeuvre. Rodrigo a donc commencé une réécriture :
- Code plus propre. Fini les appels virtuels ou les pointeurs partagés, cela permet une maintenance plus facile à l'avenir.
- Manipulation appropriée pour le mouvement de texture.
- Certaines opérations sont désormais effectuées dans le GPU plutôt que dans le CPU, ce qui améliore les performances.
- Contrôle quand les textures sont mal affichées.
- Auparavant, les textures étaient supprimées du cache lors des écritures CPU, mais elles sont désormais signalées comme mauvaises. - Cela permet à yuzu de mettre en cache les vues d'image déjà vues et de rendre les cibles, ce qui permet de gagner du temps.
- Plusieurs textures peuvent désormais coexister dans la même adresse.
- Les images aliasées sont désormais émulées via des copies à la demande.
- Le rendu des textures compressées est correctement émulé.
- Les textures 3D BC4 sont émulées avec RGBA8.
- Le rendu des vues de texture de différents formats compatibles est émulé sans copies.
Tout cela débouche sur des ombres mieux gérées, des performances accrues, des pilotes plus larges, et une limitation matérielle moindre. De nombreux correctifs sont également de la partie, et des améliorations de rendu, de nombreux jeux affichent une amélioration de 10 à 30% du framerate, avec une stabilité considérablement améliorée du temps de trame.
En conclusion, ces évolutions sont perceptibles sur du matériel récent, les cartes graphiques AMD plus anciennes que les Vega et tous les iGPU Intel n'en profiteront pas car les jeux demandent des extensions graphiques que ces cartes ne supportent pas. Et il y a des progrès encore à réaliser, une fonctionnalité qui sera ajoutée dans peu de temps sera Accelerated Texture Decoding, qui gérera n'importe quel format de texture via les Compute Shaders, même si les formats que le GPU ne prend pas en charge nativement. epicboy travaille actuellement sur le décodeur de calcul ASTC.
Le prochain projet sur lequel Rodrigo travaille est le Buffer Cache Rewrite. Ce travail promet de résoudre davantage de problèmes de rendu (par exemple, des problèmes de rendu de police) et d'améliorer sérieusement les performances, en particulier sur le matériel manquant de bande passante mémoire comme les GPU intégrés.
Tout est là si vous voulez voir l'intégralité des améliorations : yuzu-emu.org