Ces renseignements étaient à jour en date de novembre 2019. Plusieurs fonctionnalités pourraient avoir changé ou avoir été mises à jour depuis.
Latence de bout en bout
Les joueurs perçoivent la latence comme le délai 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 l’information et met à jour la simulation.
- Les résultats de la simulation servent au rendu d’une nouvelle image.
- Le système envoie l’image nouvellement rendue à l’écran.


Le problème d’entrée de manette en trois étapes
Le problème d’entrée de manette se décompose en étapes suivantes.- Entrée de manette pertinente : obtenir l’entrée du joueur le plus rapidement possible.
- Synchronisation efficace : traiter les changements de l’état du jeu et effectuer le rendu des résultats le plus efficacement possible.
- Écrans réactifs : dessiner l’affichage du joueur le plus rapidement possible.
Entrée de manette pertinente
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 appareils
- Sécurité
- Surcharge du système/SE :
- Identification
- Analyse
- Présentation
Manettes filaires et 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 pose 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 déphasage des entrées de manette
Les fréquences d’échantillonnage peuvent aussi causer des problèmes lorsque l’entrée échantillonnée se déphase par rapport à votre jeu. Figure 5. Fréquences d’échantillonnage et déphasage des entrées.
- Consommation des piles : interroger mille fois par seconde épuise rapidement les piles.
- Surcharge accrue du processeur : 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 maximisée, utilisez Dynamic Latency Input, aussi appelée entrée synchronisée. Cette fonctionnalité optimise automatiquement la synchronisation des entrées de manette et effectue ce qui suit :- Surveille la cadence des requêtes d’entrée.
- Surveille les performances sans fil et filaires.
- S’assure que l’entrée la plus récente est analysée et disponible lorsqu’elle est demandée.
- Suit les moments 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 moments de présentation.
- Fournit le niveau de confiance dans PIX pour les analyses de performances.
Améliorations du système
Plusieurs changements au système contribuent à la réactivité des entrées et à la latence globale. Ils comprennent les suivants :- Une nouvelle conception basée sur l’accès direct à la mémoire (DMA) pour réduire au minimum l’intervention du SE.
- Une API
GameInputqui recueille l’historique des appareils d’entrée connectés. - Les appuis sur les boutons d’une manette filaire 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 d’entrée de manette filaire d’environ 1 ms.
Synchronisation efficace
Figure 6. Cadence des images.


Cadence des images avec 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 de rafraîchissement de l’écran (VSync). Cela se complique avec les écrans actuels, car leur fréquence de rafraîchissement change avec une fonctionnalité comme la fréquence de rafraîchissement 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 avec 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 réglé à 16 667 microsecondes.PeriodInIntervalsest réglé à 2.- Les intervalles d’image courants ont leurs propres définitions. Dans cet exemple, la définition est D3D12XBOX_FRAME_INTERVAL_60_HZ.
Planification des images avec 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 de sorte que vos intervalles soient plus rapprochés. Avec PresentX, vous déclarez explicitement votre attente. La limitation implicite à l’exécution par le pilote graphique dans Present est supprimée.
Vous disposez d’une planification événementielle, pilotée par interruptions, pour la production de nouvelles images à afficher. Définissez le moment d’origine de votre image dans 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 ou bloquez sur celui-ci. Le jeton de pipeline qui identifie l’image est maintenant 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’une latence en double mise en mémoire tampon, même si un rendu en triple mise en mémoire tampon est configuré. Cela signifie que, même si vous configurez la triple mise en mémoire tampon, la double mise en mémoire tampon est maintenue tant que les images se terminent à temps, jusqu’à ce que vous dépassiez le temps d’image et ayez besoin de trois tampons d’image.
Cet appel nécessite D3D12XBOX_FRAME_PIPELINE_TOKEN dans D3D12XBOX_PRESENT_PLANE_PARAMETERS afin de suivre la latence de bout en bout. PresentX prend aussi en charge la présentation à partir de files de calcul asynchrone.
Pour plus d’information, consultez la présentation Xfest 19 sur le portage des graphiques vers XBOX Series X|S.
Processus étape par étape des statistiques d’image
Figure 10. GetFrameStatisticsX.
GetFrameStatisticsX.
Ce code porte 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.






Écrans réactifs
Les écrans modernes ajoutent de la latence en raison des éléments suivants :- La surcharge de transmission, soit 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’ordonner à tous les composants compatibles de passer en mode faible latence. Les écrans qui utilisent ALLM réduisent le traitement d’image afin de réduire au minimum les délais avant la présentation de 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 de rafraîchissement 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 plus d’une fois. Sur un écran 60 Hz, cette saccade pourrait durer jusqu’à 16,6 ms. Si votre jeu manque un VBLANK sur un écran 120 Hz (en raison de la fréquence de rafraîchissement plus rapide), la saccade pourrait être deux fois moindre que 16,6 ms, soit jusqu’à 8,3 ms. Figure 26. Manquer un VBLANK à 60 Hz par rapport à 120 Hz.
Jeu à 120 FPS
Avec la disponibilité des écrans 120 Hz, le jeu à 120 FPS est possible sur XBOX Series X|S. Le code suivant montre comment mettre votre jeu en mode 120 Hz en réglant la durée de l’intervalle d’image à 8 333 microsecondes.VRR
VRR est une fonctionnalité définie dans HDMI 2.1. Utilisez VRR pour un rafraîchissement d’écran fluide dans la plage prise en charge, par exemple de 30 Hz à 120 Hz plutôt qu’une cadence forcée à 60 Hz. Vous n’avez rien à faire pour utiliser VRR, mais vous pouvez le désactiver dans les situations où un rafraîchissement stable est nécessaire, par exemple dans les menus, les scènes 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 façon fluide des images qui durent environ 4 ms de plus.Fréquences de rafraîchissement 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 mentionné précédemment, un VBLANK manqué peut entraîner jusqu’à 16,6 ms de saccade sur 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 délai du VBLANK, plutôt qu’à une durée fixe de rafraîchissement 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 transmettra la même image rendue trois fois à la fréquence de rafraîchissement de 120 Hz. Autrement dit, à 40 FPS, le temps d’image est de 25 ms, et le système transmettra cette image trois fois à la fréquence de rafraîchissement 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 régler la durée de l’intervalle d’image à 25 000 microsecondes pour le jeu à 40 FPS.Résumé
Les améliorations de la latence des entrées de manette entraînent :- Des mises à jour de manette plus rapides et plus pertinentes.
- Une surcharge du SE réduite.
- Un contrôle plus direct de la synchronisation.
- De meilleures statistiques d’image et un suivi amélioré dans PIX pour les entrées et les graphiques.
- De nouvelles normes d’affichage.
- Des fréquences de rafraîchissement plus rapides.
Étapes suivantes
Si vous souhaitez consulter l’information des documents de présentation liés à cette vue d’ensemble, téléchargez les fichiers suivants à partir du stockage sécurisé des données de téléchargement pour les développeurs XBOX (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 aux téléchargements du Game Development Kit (GDK).
- Sous Select file type, sélectionnez Conference Materials, puis sélectionnez 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 aux téléchargements du Game Development Kit (GDK).
- Sous Select file type, sélectionnez GDK, puis sélectionnez 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.
