-
Le traitement du côté Denise est désormais exécuté dans un thread séparé
(Bitplane shifting, sprite shifting, conversion planar → chunky, modes spéciaux, priorités bitplane/sprite, strobes/blanking, sortie RGB, etc.).
Grâce au buffering RGA ligne par ligne, la logique Agnus et Denise est maintenant clairement séparée, ce qui permet un traitement quasi indépendant de Denise (fire and forget).
Seule exception : la lecture du registre de collision CLXDAT qui nécessite de vider toutes les lignes en attente (mais ce n'était pas cycle-exact de toute façon).
-
Les lectures de couleurs AGA ne posent pas de problème, car elles sont prises en charge côté Agnus.
- La file d’attente de lignes est petite (~10 lignes max), donc aucun problème de latence.
- Aucune perte de compatibilité.
(Dans les anciennes versions de UAE, Agnus traitait tout le frame avant que Denise ne fasse le reste, nécessitant d'énormes tampons mémoire temporaires, ce qui était inefficace.)
-
Ajout de l'option -nomt
pour désactiver l'émulation multithread de Denise.
-
Suppression du buffering graphique temporaire lorsque ce n’est pas nécessaire, ce qui améliore encore les performances.
- Maintenant activé uniquement si un adaptateur DisplayPort est utilisé (y compris genlock en mode image, niveaux de gris et CD32 FMV).
- Ne concerne que les modes natifs du chipset.
- Quand l’adaptateur DisplayPort est activé : l’image du chipset est d’abord dessinée dans un tampon RAM temporaire, fusionnée avec l'affichage de l'adaptateur, puis écrite dans la texture D3D.
- Quand l’adaptateur DisplayPort est désactivé : le graphisme du chipset est directement rendu dans une texture D3D en une seule passe, accélérant encore l’émulation.
-
Toute activation d'un adaptateur DisplayPort (y compris genlock en mode image, niveaux de gris, CD32 FMV) ou d’un stylet lumineux désactive les optimisations non-CE des bordures et bitplanes.
-
Suppression de tous les filtres logiciels.
- Le tampon graphique temporaire étant supprimé par défaut, maintenir la prise en charge des filtres logiciels serait trop contraignant.
- De plus, ils sont obsolètes et inutiles avec les améliorations récentes.
-
Les optimisations des bitplanes en mode CE (cycle-exact) de la b12 ont été désactivées (commentées dans le code).
- Elles ne sont plus nécessaires et causaient des effets secondaires difficiles à corriger sans compromettre les gains de performance.
- Les optimisations des modes non-CE restent actives et ne seront pas supprimées.
-
Désactivation de l’émulation du strobe NTSC STRLONG si aucune impulsion STRLONG n'a été détectée depuis la dernière frame.
- Passer en NTSC, puis revenir en PAL ne réduit plus légèrement les performances.
- (L’émulation STRLONG précise nécessite un code de dessin plus complexe).
- Le mode NTSC présente encore des artefacts sur le bord droit en modes rapides (corrigé plus tard).
-
Petite optimisation du blitter.
-
Ajustement du comportement d’attente de frame pour les modes CPU non "ultra-rapides".
- Le timing est différent car maintenant le dessin est effectué après l’émulation de chaque ligne, alors qu’avant, toutes les lignes étaient d’abord émues, puis dessinées en une seule passe.
Merci pour le suivi. Avec toutes ces corrections/optimisations, je vais tester cette version avec intéret.