La Synchronisation est une partie essentielle de l'affichage de plusieurs sections de contenu en temps réel sur un grand affichage. Tous les systèmes de l'écosystème de rendu/affichage doivent respecter une synchronisation stricte, mesurée en millisecondes, pour produire l'illusion d'un affichage sans transition.
Les configurations à affichage multiple nécessitent souvent des capacités de synchronisation aux niveaux logiciel et matériel. Non seulement le contenu généré doit être prêt au même moment sur tous les PC, en utilisant les mêmes informations de synchronisation pour la simulation, mais le changement d'affichage (le remplacement de l'image actuelle par l'image suivante dans la mémoire tampon de la carte vidéo) doit également se produire au bon moment pour éviter les artefacts de déchirure de l'affichage.
Pour la VR et les autres types d'affichage stéréoscopique, la question de la synchronisation se pose doublement puisque les deux images différentes, une pour chaque œil, doivent être parfaitement coordonnées.
Déterminisme
Il existe deux types d'approche à la gestion de la synchronisation :
- Déterministe : Chaque serveur (PC, nœud de rendu) est configuré de telle manière que la sortie soit toujours prévisible étant donné un ensemble particulier d'entrées, ce qui signifie que les seules informations dont le serveur a besoin pour se synchroniser avec d'autres machines du système sont des informations de temps précises et d'entrée/sortie pour chaque machine individuelle.
- Non déterministe : Pour assurer la synchronisation, le système force la réplication des matrices de transformation et autres caractéristiques pertinentes de tous les acteurs ou objets d'une scène, et les reproduit dans tout le système.
Chaque approche présente des avantages et des inconvénients. Le principal avantage d'un système déterministe est la simplicité du projet et la bande passante économisée grâce à l'absence de partage des données de transformation pour chaque objet à chaque image. L’inconvénient est que, en cas de divergence d’un système, la divergence entraîne des problèmes inconnus au fil du temps. L'uniformité du rendu pourrait être gravement compromise, entraînant une discontinuité visuelle et des artefacts.
Synchronisation matérielle et genlock
Bien que le PC principal pour nDisplay garantisse que tous les PC du cluster (nœud) sont informés des informations de synchronisation du point de vue du gameplay (par exemple, l’image dont effectuer le rendu), des cartes de synchronisation matérielles spécialisées et des cartes graphiques professionnelles compatibles sont nécessaires pour synchroniser l'affichage de ces images rendues exactement au même moment sur les appareils d'affichage physiques.
Par exemple, dans les applications de diffusion, il est courant de synchroniser plusieurs appareils tels que des caméras, des moniteurs et d'autres affichages afin qu'ils commutent tous et capturent l'image suivante exactement au même moment. Dans ce secteur, l'utilisation de signaux verrouillés par générateur (genlock) est largement adoptée.
Généralement, la configuration est composée d'un générateur matériel qui envoie l'horloge au matériel qui a besoin d'une synchronisation. Dans le cas d'un PC utilisé pour le rendu en temps réel, les cartes graphiques professionnelles telles que celles de la gamme NVIDIA Quadro prennent en charge cette technologie aux côtés de la carte NVIDIA Quadro Sync II, qui se verrouillera sur le signal de synchronisation reçu ou l'impulsion reçue.
Topologie du système
Nœud principal (générateur d'horloge domestique)
Nœuds de cluster (réception de l'horloge du GPU du nœud principal)
Lors de l'utilisation de la synchronisation Quadro :
- Utilisez de préférence des pilotes de "Branche de production/Studio", car il ont tendance à être plus stable que les pilotes de "Branche de nouvelle fonctionnalité".
- Déclenchez les impulsions de synchronisation en utilisant des "arêtes descendantes", car elles ont tendance à être plus fiables que les "arêtes avant" pour détecter le débit de signal correct.
Décryptage de la synchronisation de l'affichage
-
Verrouillage de cadre uniquement : Cette méthode qui utilise des techniques de connexion en série entre les GPU est communément appelée FrameLock/SwapSync. Aucun genlock n'est utilisé ici. Un GPU sur le PC nDisplay principal reçoit une horloge maîtresse d'un affichage de sortie ou d'un processeur qui lui est connecté, puis la propage aux GPU du PC du nœud de rendu. Tous les PC sont connectés au sein d'une topologie arborescente, où le PC principal est la racine. Cette approche permet d’utiliser des groupes d’échange/barrières NVIDIA via l'API NVIDIA.
Cette approche n'est pas bien adaptée à la production virtuelle, car elle fonctionne de manière isolée des autres appareils utilisés dans l'espace, tous étant synchronisés avec une horloge maîtresse externe.
-
Genlock uniquement : Grâce à ce schéma, tous les GPU de PC du cluster reçoivent leur propre signal d'horloge maîtresse (genlock) de la même source. En d'autres termes, chaque PC dispose de son propre câble BNC, et tous les câbles sont connectés au même générateur d'horloge maître.
Cette approche permet la synchronisation de VSync ; cependant, les barrières NVIDIA ne sont pas disponibles via l'API NVIDIA. Techniquement, tous les PC du cluster sont verrouillés sur l'horloge reçue. Cependant, cette approche ne s'est pas avérée fiable à 100 %, car il n’existe aucun contrôle précis sur la présentation des images au niveau de l'application.
Il s'agit de la méthode utilisée auparavant, et c'est la raison pour laquelle nous avons dû implémenter une politique de synchronisation "avancée" qui réduirait la probabilité de désynchronisation/glitch.
-
Genlock + verrouillage de cadre : Cette approche est la plus souhaitable pour la production virtuelle. Tous les appareils de la scène sont reliés à une horloge maîtresse, y compris le GPU du PC nDisplay principal. La synchronisation au sein du cluster est réalisée à l'aide de connexions en série entre le PC principal et le PC du nœud de rendu.
Cette approche prévoit l'utilisation de l'API NVIDIA, et utilise donc les barrières NVIDIA, qui permettent à l’UE de contrôler la présentation des images au niveau de l'application. Il s'agit de la méthode la plus fiable pour synchroniser les affichages, avec une horloge externe fournie (genlock).
Connexions en série ou Genlock direct
La connexion en série est une technique de verrouillage du signal utilisée parallèlement au genlock direct, où l'horloge maîtresse est envoyée à un seul PC ou appareil, dans ce cas, le PC principal. Des câbles séparés propagent ensuite le signal à tous les autres PC. Bien que l'expérience précédente avec nDisplay suggère que le genlock direct (où chaque PC reçoit l'horloge directement de la source principale) est plus simple et plus efficace que la connexion en série, la nouvelle approche matérielle basée sur la connexion en série donne l'espoir d'une solution plus fiable et plus rentable pour le verrouillage du signal. Cette solution s'appelle NVIDIA Swap Sync/Lock.
NVIDIA Mosaic et AMD EyeFinity
Les modes Mosaic de NVIDIA et EyeFinity d'AMD sont des technologies de GPU similaires qui combinent et synchronisent plusieurs sorties au sein d'une même carte graphique afin qu'elles apparaissent comme un affichage unique du point de vue du SE ou du logiciel. Cet affichage virtuel est essentiellement une agrégation de plusieurs affichages physiques agissant comme un affichage synchrone qui peut également être synchronisé avec d'autres affichages de différents systèmes à l'aide de techniques de verrouillage de cadre ou de genlock sous-jacentes.
Le processus de verrouillage de plusieurs affichages à l'aide d'une horloge domestique est appelé verrouillage de cadre. Le verrouillage de synchronisation se produit lorsqu'une horloge externe est utilisée à la place. Dans le contexte du genlock, l'horloge externe est utilisée sur tous les appareils, y compris les appareils d'affichage, les caméras et les capteurs de suivi.
En supposant que les GPU soient correctement connectés à l'aide de cartes Quadro Sync II ou de cartes Firepro S400, les technologies Mosaic et Eyefinity permettent à plusieurs sorties d'avoir exactement la même horloge et d'être traitées comme une seule grande zone de dessin du point de vue du système d'exploitation. Vous pouvez créer un ou plusieurs groupes Mosaic ou Eyefinity par PC, mais pas sur plusieurs PC, chaque PC devant avoir son propre groupe Mosaic ou Eyefinity.
Pour synchroniser les affichages pilotés par plusieurs PC ou GPU à l'aide de techniques de connexion en série, un GPU doit agir comme un générateur d'horloge maîtresse et partager son horloge avec les autres GPU, soit sur le même PC, soit sur un PC différent, à l'aide de cartes de synchronisation comme la NVIDIA Quadro Sync II ou l'AMD Firepro S400.
Pour plus d'informations, voir Technologie Mosaic pour affichages multiples | NVIDIA et Technologie Eyefinity multi-affichage.
Bien qu'il soit possible d'avoir un affichage virtuel MOSAIC sur plusieurs GPU au sein d'un même PC, actuellement, il serait lent d'avoir une fenêtre d'application sur cette zone de dessin. (Des travaux futurs pourraient éventuellement activer cette option.) Aujourd’hui, cette approche ne serait pas recommandée pour la production virtuelle ou les effets visuels intégrés à la caméra.
Autres aspects de la synchronisation d'affichage
Le jeu et les threads de rendu sont toujours synchronisés par ce qu'on appelle des barrières de thread. Il s’agit de la fonctionnalité principale des deux éléments ci-dessous. Il n'est pas possible de désactiver les barrières. Considérez-les comme des points sur une échelle de temps qui aident le nœud principal à gérer les nœuds du cluster de manière synchrone pour fournir une expérience de contenu uniforme sur plusieurs PC utilisant l’UE.
| Fonctionnalité | Description |
|---|---|
| Logiciel/simulation (ce que vous devriez voir) | Le processus de synchronisation de toutes les questions liées aux logiciels. Il s'agit de synchroniser correctement l’Unreal Engine et son contenu : déterminisme des fonctionnalités, synchronisation du temps delta, réplication des entrées, transformations personnalisées, barrières de threads, événements de cluster, logique de jeu, etc. |
| Matériel/SE (comment vous devriez voir le contenu) | Le processus de synchronisation des appareils matériels tels que les GPU, les appareils d'affichage et le DWM (Desktop Window Manager) à l'aide d'une horloge partagée — un signal de synchronisation interne ou de genlock. Il s'agit de savoir comment faire en sorte qu'un système d'exploitation et un matériel affichent ce que vous voulez de manière synchrone, sans déchirure. Cela nécessite des cartes graphiques NVIDIA Quadro, des cartes Sync II et un générateur genlock. Prévoyez au moins un délai matériel d'une image si celui-ci n'est pas activé. |
Politiques de synchronisation de rendu
Les politiques de synchronisation du rendu définissent comment synchroniser la sortie de rendu. Ce paramètre peut être défini dans le panneau Détails du cluster dans l'éditeur de configuration 3D de nDisplay.
Le tableau suivant décrit les options disponibles pour la politique de synchronisation de rendu.
| Option | Description |
|---|---|
| Aucun (Politique de synchronisation 0) | Cela signifie VSync=0. Tous les nœuds affichent leurs images après RenderThreadBarrier SANS synchronisation avec VBlank. Cela permet d’obtenir un IPS maximal au prix de potentiels artefacts de déchirure. |
| Ethernet (Politique de synchronisation 1) | Tous les nœuds affichent leurs images après RenderThreadBarrier AVEC synchronisation avec VBlank. Les affichages de sortie ne subissent pas de déchirure. Notez que des déchirures peuvent toujours se produire parmi les affichages en raison des paramètres de DWM et d'exécution ou du pilote de Windows. |
| NVIDIA (Politique de synchronisation 2) | Verrouillage de cadre de matériel NVIDIA (NVIDIA SwapLock API) basé sur une connexion en série. Vous pouvez utiliser les paramètres de la section NVIDIA pour modifier certains paramètres matériels spécifiques relatifs au verrouillage de cadre.
|
| Personnalisé | Configurer toute politique de synchronisation personnalisée dont nDisplay n'a pas connaissance. Un identifiant de politique et tous les paramètres de paire clé-valeur sont requis. |
Nous avions précédemment développé un mécanisme de synchronisation appelé Advanced Sync pour des circonstances spécifiques où le rendu d'une image sur un PC nDisplay donné se produisait après VBlank, créant des déchirures à l'écran. Ce mécanisme logiciel tente de prédire ces événements et force tous les PC à faire un saut d’image et à effectuer le rendu sur le prochain VBlank. Ce mécanisme n'est pas parfait à 100 % et peut avoir un impact indésirable sur les performances lorsqu’il est activé.
De plus, nous avons récemment implémenté l'API NVIDIA pour la synchronisation (Politique de synchronisation 2), qui est une approche matérielle du problème.
Connexions de verrouillage de cadre sur un serveur de synchronisation : 1) Serveur de synchronisation 2) Clients.
1) Source de synchronisation 2) Serveur 3) Clients
Faire fonctionner la synchronisation
Pour une synchronisation fiable dans le contexte de la production virtuelle, il faut utiliser une technique qui combine à la fois le genlock et le verrouillage de cadre. Pour résumer, vous transmettez le signal genlock au PC nDisplay principal, puis utilisez la méthode matérielle de connexion en cascade pour envoyer le signal de synchronisation entrant à tous les PC du cluster restants afin que le verrouillage de cadre soit correct. Cela implique de correctement configurer une politique de synchronisation de rendu NVIDIA dans la ressource de configuration.
Flux de travail
- Configurez la connexion en cascade entre les cartes de synchronisation du processeur graphique du cluster à l'aide d'un câble Ethernet standard doté de connecteurs RJ45 standard.
- Activez MOSAIC, puis configurez la synchronisation via le panneau de commande NVIDIA (définissez un PC principal, puis configurez les nœuds de cluster de synchronisation).
- Activez DirectX Swapgroup PrePresentWait en procédant comme suit :
- Téléchargez l'utilitaire nVidia Configure Driver Utility.
- Exécutez ConfigureDriver.exe en tant qu'administrateur.
- Tapez « 11 », puis appuyez sur la touche Entrée.
- Dans l'éditeur de configuration nDisplay 3D, définissez l'option Render Sync Policy (Politique de synchronisation de rendu) du cluster sur NVIDIA.
- Facultatif : pour les systèmes complexes, il est possible de personnaliser le groupe d'échange NVIDIA et les barrières de synchronisation dans les paramètres du cluster.
Par défaut, le groupe de synchronisation 1 et la barrière de synchronisation 1 sont utilisés.
Le paramètre NVIDIA Render Sync Policy (Politique de synchronisation de rendu NVIDIA) active un groupe d'échange NVIDIA sur les nœuds du cluster.
Commentaires supplémentaires
La valeur 0 n'est pas autorisée. La valeur 0 est utilisée en interne pour dissocier/quitter un groupe ou une barrière. Seuls les nombres naturels sont autorisés. Sur un système simple doté d'un processeur graphique et d'une carte de synchronisation, vous disposez d'un groupe de synchronisation #1 et d'une barrière de synchronisation #1 uniques. Ceux-ci sont utilisés par défaut.
Test de synchronisation
Le test de la synchronisation d'un écran mis à l'échelle peut s'avérer délicat, car la désynchronisation peut résulter d'un certain nombre de problèmes, notamment :
- L'image incorrecte est simulée en raison d'un horodatage incorrect (problème logiciel).
- La synchronisation de l'appareil d'affichage est désactivée (problème d'affichage ou de matériel).
Pour tester la synchronisation, nous utilisons un projet de test simple qui affiche un seul objet qui se déplace rapidement sur toute la surface de l'écran. Une fois les systèmes correctement synchronisés, l'objet conserve sa forme lorsqu'il dépasse les limites. Sinon, l'écran présente des artefacts sur les arêtes partagées.
Une fois les systèmes correctement synchronisés, l'objet conserve sa forme lorsqu'il passe de l'écran 1 à l'écran 2.
Liens vers des informations supplémentaires
-
Chapitre 30, Configuring Frame Lock and Genlock (Configuration du verrouillage de cadre et de Genlock)
-
NVIDIA Recommended Display Adapters (Adaptateurs d'écran recommandés par NVIDIA)