Ces informations étaient à jour en novembre 2019. Plusieurs fonctionnalités ont pu être modifiées ou mises à jour depuis.
Latence de bout en bout
Les joueurs perçoivent la latence comme le temps qui s’écoule entre le moment où ils appuient sur un bouton de la manette et le moment où quelque chose se produit à l’écran. Figure 1. Capacité à détecter la latence.

- Le système envoie l’état de la manette au jeu.
- Le jeu lit les informations et met à jour la simulation.
- Les résultats de la simulation produisent le rendu d’une nouvelle image.
- Le système envoie l’image nouvellement rendue à l’écran.


Le problème des entrées de manette en trois étapes
Le problème des entrées de manette se décompose en plusieurs étapes.- Entrées pertinentes de la manette : obtenir les entrées du joueur le plus rapidement possible.
- Synchronisation efficace : traiter les modifications de l’état du jeu et effectuer le rendu des résultats le plus efficacement possible.
- Affichages réactifs : dessiner l’affichage du joueur le plus rapidement possible.
Entrées pertinentes de la manette
Les manettes se sont améliorées et deviennent plus complexes. Cette complexité a ajouté de la latence au fil du temps. Les manettes ajoutent de la latence en raison des problèmes suivants.- Transmission sans fil :
- Trafic
- Fiabilité des données
- Surcharge de l’interface :
- Gestion des périphériques
- Sécurité
- Surcharge du système/système d’exploitation :
- Identification
- Analyse
- Présentation
Manettes filaires et manettes sans fil
La plupart des manettes XBOX sont utilisées sans fil. Toutefois, cette utilisation présente les problèmes potentiels suivants.- La manette peut partager le spectre sans fil avec d’autres appareils, comme un téléphone.
- Comme les manettes sans fil nécessitent des piles, leur consommation représente un défi.
- Des données peuvent être perdues. Les jeux doivent tenir compte des transmissions retardées.
- La surcharge d’une manette filaire n’ajoute que 1 ms de latence grâce à l’interrogation USB rapide.
- La surcharge d’une manette sans fil peut ajouter jusqu’à 3 ms de latence.
Fréquences d’échantillonnage et phase des entrées de manette
Les fréquences d’échantillonnage peuvent également poser des problèmes lorsque les entrées échantillonnées se déphasent par rapport à votre jeu. Figure 5. Fréquences d’échantillonnage et phase des entrées.
- Consommation de la batterie : interroger la manette mille fois par seconde épuise rapidement la batterie.
- Surcharge processeur plus élevée : toutes les entrées de données interrogées doivent être analysées et traitées.
Fonctionnalité Dynamic Latency Input
Au lieu de l’approche d’interrogation maximale, utilisez Dynamic Latency Input, également appelée entrée synchronisée. Cette fonctionnalité optimise automatiquement la synchronisation des entrées de la manette et effectue les opérations suivantes :- Surveille la cadence des requêtes d’entrée.
- Surveille les performances sans fil et filaires.
- Garantit que l’entrée la plus récente est analysée et disponible lorsqu’elle est demandée.
- Suit les heures de présentation des images rendues.
- Maintient un niveau de « confiance » basé sur la cadence des requêtes d’entrée, les performances sans fil/filaires et les heures de présentation.
- Fournit le niveau de confiance dans PIX pour les analyses de performances.
Améliorations du système
Plusieurs modifications du système contribuent à améliorer la réactivité des entrées et la latence globale. Elles comprennent les suivantes :- Une nouvelle conception basée sur l’accès direct à la mémoire (DMA) pour réduire au minimum l’intervention du système d’exploitation.
- Une API
GameInputqui collecte des informations historiques à partir des périphériques d’entrée connectés. - Les appuis sur les boutons des manettes filaires déclenchent des mises à jour. Dynamic Latency Input reste utile pour les entrées analogiques.
- Une résilience améliorée des données sans fil.
- Le suivi de la synchronisation par rapport au temps d’image graphique.
- Une réduction de plus de 50 % de la latence des entrées sans fil.
- Une réduction de plus de 75 % de la latence des entrées filaires.
- Une latence moyenne des entrées de manette filaire d’environ 1 ms.
Synchronisation efficace
Figure 6. Cadence des images.


Cadence des images de PresentX
PresentX modifie la cadence des images en faisant abstraction de l’expression de la fréquence de rendu et de présentation.
Auparavant, le temps d’image était basé sur la fréquence d’actualisation de l’écran (VSync). Cela devient compliqué avec les écrans actuels, car leur fréquence d’actualisation change avec une fonctionnalité comme la fréquence d’actualisation variable (VRR). De plus, la période d’image était auparavant calculée comme une fonction indirecte du nombre de tampons de la chaîne d’échange du jeu.
En revanche, PresentX utilise une durée pour calculer le temps d’image et une profondeur de pipeline définie pour la période d’image.
Figure 9. Cadence des images de PresentX : cible de 60 Hz.

PresentX simplifiée qui cible une fréquence d’images de 60 Hz.
L’exemple de code suivant montre l’API SetFrameIntervalX.
SetFrameIntervalX utilisé dans la figure 9 est le suivant.
LengthInMicrosecondsest défini sur 16 667 microsecondes.PeriodInIntervalsest défini sur 2.- Les intervalles d’image courants disposent de leurs propres définitions. Dans cet exemple, la définition est D3D12XBOX_FRAME_INTERVAL_60_HZ.
Planification des images de PresentX
PresentX vous donne un contrôle formel sur la limitation du processeur. L’utilisation de la planification des images sur chaque image ajuste la synchronisation afin que vos intervalles soient plus rapprochés. Avec PresentX, vous déclarez explicitement votre attente. La limitation implicite à l’exécution effectuée par le pilote graphique dans Present a disparu.
Vous disposez d’une planification basée sur les événements et pilotée par les interruptions pour la production de nouvelles images à afficher. Définissez l’heure d’origine de votre image au sein d’un intervalle d’image et effectuez des mises à jour continues de l’origine en fonction de la charge de travail tirée des statistiques.
L’exemple de code suivant montre l’API ScheduleFrameEventX.
ScheduleFrameEventX utilisé dans la figure 9 est le suivant.
ORIGIN du pipeline de cette image. Le jeton de pipeline qui identifie l’image est désormais créé par WaitFrameEventX. Ce jeton est transmis à PresentX.
L’exemple de code suivant montre l’API WaitFrameEventX.
WaitFrameEventX est le suivant.
Présentation avec PresentX
Une nouvelle fonctionnalité de l’APIPresentX est la possibilité d’obtenir une latence de double mise en mémoire tampon, même si le rendu en triple mise en mémoire tampon est configuré. Cela signifie que, même si vous pouvez configurer la triple mise en mémoire tampon, si les images se terminent à temps, la double mise en mémoire tampon est conservée jusqu’à ce que vous dépassiez le temps d’image et ayez besoin de trois tampons d’image.
Cet appel nécessite le D3D12XBOX_FRAME_PIPELINE_TOKEN dans le cadre de D3D12XBOX_PRESENT_PLANE_PARAMETERS pour suivre la latence de bout en bout. PresentX prend également en charge la présentation à partir de files d’attente de calcul asynchrone.
Pour plus d’informations, consultez la présentation Xfest 19 sur le portage des graphismes vers XBOX Series X|S.
Processus pas à pas des statistiques d’image
Figure 10. GetFrameStatisticsX.
GetFrameStatisticsX.
Ce code se concentre sur les éléments suivants :
D3D12XBOX_FRAME_STATISTICS_TYPE_FRAME_INPUTD3D12XBOX_FRAME_STATISTICS_TYPE_FRAME_INTERVALD3D12XBOX_FRAME_STATISTICS_TYPE_FRAME_EVENTD3D12XBOX_FRAME_STATISTICS_TYPE_RENDERD3D12XBOX_FRAME_STATISTICS_TYPE_PRESENTD3D12XBOX_FRAME_STATISTICS_TYPE_DISPLAY


ORIGIN de l’image est signalée et quand WaitFrameEventX est appelée.
Figure 13. Statistiques d’image : D3D12XBOX_FRAME_EVENT_STATISTICS.






PresentX lorsque le processeur termine le rendu de l’image.
Figure 19. Statistiques d’image : le GPU atteint la dernière transition ResourceBarrier.

PresentX.
Figure 20. Statistiques d’image : D3D12XBOX_RENDER_STATISTICS.






Affichages réactifs
Les écrans modernes ajoutent une latence supplémentaire pour les raisons suivantes :- La surcharge de transmission, c’est-à-dire le temps nécessaire pour recevoir les données du câble HDMI.
- Le temps nécessaire pour traiter des images 4K ou plus grandes, y compris les améliorations d’image propres au fabricant.
- Le temps nécessaire pour mettre une image à l’échelle de la résolution native de l’écran.
- Le temps nécessaire pour dessiner l’image à l’écran.
- Le temps nécessaire pour dessiner les superpositions des menus, des commandes de volume ou de tout autre élément dont le joueur pourrait avoir besoin pour contrôler son écran.
Mode faible latence automatique
Le mode faible latence automatique (ALLM) est une fonctionnalité définie dans la spécification HDMI 2.1. ALLM permet à la source vidéo (dans ces exemples, la console XBOX) d’indiquer à tous les composants compatibles de passer en mode faible latence. Les écrans qui utilisent ALLM réduisent le traitement d’image afin de minimiser les délais avant de présenter l’image. Il s’agit d’une fonctionnalité au niveau du système, semblable à VRR. Vous n’avez rien à faire, mais les joueurs doivent s’assurer qu’ALLM est activé dans les paramètres d’affichage de la console. Cette fonctionnalité est prise en charge sur XBOX One et XBOX Series X|S.Écrans 120 Hz
XBOX prend en charge les écrans 120 Hz. Les jeux à 60 images par seconde (FPS) en tirent des avantages, car le débit de transmission HDMI et la fréquence d’actualisation de l’écran sont intrinsèquement liés.Manquer un VBLANK
Si votre jeu manque un VBLANK, le joueur le perçoit probablement comme une saccade, car la même image rendue est affichée plusieurs fois. Sur un écran 60 Hz, cette saccade peut durer jusqu’à 16,6 ms. Si votre jeu manque un VBLANK sur un écran 120 Hz (en raison de la fréquence d’actualisation plus rapide), la saccade peut être de la moitié de 16,6 ms, soit jusqu’à 8,3 ms. Figure 26. Manquer un VBLANK à 60 Hz et à 120 Hz.
Jeu à 120 FPS
Grâce aux écrans 120 Hz disponibles, le jeu à 120 FPS est possible sur XBOX Series X|S. Le code suivant montre comment faire passer votre jeu en mode 120 Hz en définissant la durée de l’intervalle d’image sur 8 333 microsecondes.VRR
VRR est une fonctionnalité définie dans HDMI 2.1. Utilisez VRR pour une actualisation fluide de l’écran dans sa plage prise en charge, par exemple de 30 Hz à 120 Hz, plutôt qu’une cadence imposée à 60 Hz. Vous n’avez rien à faire pour utiliser VRR, mais vous pouvez le désactiver dans les situations où une actualisation stable est nécessaire, par exemple dans les menus, les écrans de chargement ou les cinématiques. XBOX prend actuellement en charge HDMI VRR et AMD FreeSync. XBOX One prend en charge la plage de 40 à 60 Hz, mais les écrans peuvent avoir des capacités VRR différentes. En pratique, le système peut présenter de manière fluide des images qui durent environ 4 ms de plus.Fréquences d’actualisation prises en charge par XBOX Series X|S
- 120 Hz
- 60 Hz
- 40 Hz
- 30 Hz
- 20 Hz
- 15 Hz
Manquer un VBLANK avec VRR
Comme indiqué précédemment, un VBLANK manqué peut entraîner jusqu’à 16,6 ms de saccade avec un écran 60 Hz, et jusqu’à 8,3 ms de saccade sur un écran 120 Hz. Toutefois, avec VRR, aucune saccade n’est observée, car le VBLANK de l’écran est retardé jusqu’à ce que l’image rendue soit terminée. La seule latence supplémentaire correspond au temps de retard du VBLANK, plutôt qu’à une durée fixe d’actualisation de l’écran. Figure 27. Manquer un VBLANK avec VRR.
Jeu à 40 FPS
Le jeu à 40 FPS est possible avec les écrans 120 Hz. Le système transmet la même image rendue trois fois à la fréquence d’actualisation de 120 Hz. Autrement dit, à 40 FPS, le temps d’image est de 25 ms, et le système transmet cette image trois fois à la fréquence d’actualisation de 8,3 ms, soit 25 ms. Nous vous recommandons de prendre en charge le jeu à 40 FPS, car la latence est réduite de 8,3 ms par rapport à 30 FPS. L’exemple de code suivant montre comment définir la durée de l’intervalle d’image sur 25 000 microsecondes pour un jeu à 40 FPS.Résumé
Les améliorations de la latence des entrées de manette se traduisent par :- Des mises à jour de la manette plus rapides et plus pertinentes.
- Une surcharge réduite du système d’exploitation.
- Un contrôle plus direct de la synchronisation.
- De meilleures statistiques d’image et un suivi PIX amélioré pour les entrées et les graphismes.
- De nouvelles normes d’affichage.
- Des fréquences d’actualisation plus rapides.
Étapes suivantes
Si vous souhaitez consulter les informations des supports de présentation liés à cette vue d’ensemble, téléchargez les fichiers suivants à partir de XBOX Developer Download Secure Data Storage (SDS).- Diaporama : XF2019_Graphics_04_Day1_Responsive_Gaming.pptx dans Xfest 2019 Graphics Track PowerPoints ([2019.11]-Xfest2019GraphicsTrackPowerPoints.ZIP)
- Présentation vidéo : XF2019_Graphics_04_Day1_Responsive_Gaming.mp4 dans Xfest 2019 Graphics Track Videos ([2019.11]-Xfest2019GraphicsTrackVideos.ZIP)
Télécharger les présentations Microsoft PowerPoint et les vidéos
- Accédez à Téléchargements du Game Development Kit (GDK).
- Sous Select file type, sélectionnez Conference Materials, puis Confirm.
- Sous Select build/version number, choisissez l’une des présentations graphiques suivantes.
- Xfest 2019 Graphics Track PowerPoints
- Xfest 2019 Graphics Track Videos
- Sélectionnez Download Now, puis attendez la fin du téléchargement du fichier .zip.
- Accédez à votre dossier Téléchargements local, puis décompressez (extrayez) les fichiers du dossier compressé.
Télécharger les exemples pour console du Microsoft Game Development Kit mentionnés dans cet article
- Accédez à Téléchargements du Game Development Kit (GDK).
- Sous Select file type, sélectionnez GDK, puis Confirm.
- Sous Select build/version number, choisissez l’option Microsoft GDKX (Sample only) la plus récente.
- Sélectionnez Download Now, puis attendez la fin du téléchargement du fichier .zip.
- Accédez à votre dossier Téléchargements local, puis décompressez (extrayez) les fichiers du dossier compressé.
- Sélectionnez GDKSamples > Graphics, puis recherchez l’exemple.
