VSync — définition, principe de fonctionnement et configuration

Auteur : IT Sectr Publié le : 2026-04-01 Temps de lecture : 8 min

VSync (Vertical Synchronization) est une technologie qui synchronise la sortie de chaque nouvelle image du GPU avec la fréquence de rafraîchissement de l'écran, éliminant ainsi les déchirures d'image. Selon Apple Metal Documentation, la synchronisation avec VBlank est obligatoire pour un rendu fluide sur les appareils mobiles. Screen tearing se produit lorsqu'une image est mise à jour pendant le balayage vertical, et VSync empêche ce mélange.

Points clés

  • VSync est un mécanisme de synchronisation GPU-écran qui attend VBlank
  • Screen tearing est une division visible de l'image lorsque l'image change au milieu du balayage
  • Double buffering est la méthode principale d'implémentation de VSync avec front buffer et back buffer
  • Input lag est un effet secondaire de VSync, augmentant le délai entre l'action de l'utilisateur et l'affichage
  • Synchronisation adaptative est une alternative moderne à VSync qui élimine ses inconvénients

Qu'est-ce que VSync

VSync (Vertical Synchronization) est un mécanisme matériel-logiciel qui force le GPU à attendre le signal de blanking vertical (VBlank) avant d'afficher une nouvelle image. Sans VSync, le GPU peut envoyer des images à tout moment, même lorsque l'écran est en train de dessiner l'image actuelle, provoquant une déchirure d'image le long d'une ligne horizontale.

Sur les appareils mobiles, VSync est implémenté au niveau du pilote graphique et du système d'exploitation. iOS utilise la synchronisation VBlank via Metal, Android via SurfaceFlinger et BufferQueue. Avec la synchronisation verticale activée, les FPS de l'application ne peuvent pas dépasser la fréquence de rafraîchissement de l'écran — 60, 90 ou 120 Hz selon le modèle de l'appareil.

Le terme de synchronisation verticale provient du principe de fonctionnement des moniteurs CRT, où un faisceau d'électrons dessinait l'image ligne par ligne de haut en bas. Après avoir terminé une image, le faisceau revenait dans le coin supérieur gauche — ce moment était appelé le blanking vertical. Les écrans LCD et OLED modernes ont conservé ce terme, bien qu'ils fonctionnent physiquement différemment.

Comment fonctionne la synchronisation verticale

Le GPU rend les images dans le back buffer, tandis que l'écran lit dans le front buffer. VSync garantit que l'échange de tampons ne se produit que pendant VBlank — lorsque l'écran a fini d'afficher l'image actuelle et est prêt pour la suivante. Ce mécanisme est appelé double buffering avec synchronisation VBlank.

Mécanisme de double buffering

Le double buffering utilise deux tampons : un front buffer affiché à l'écran et un back buffer dans lequel le GPU écrit l'image actuelle. Lorsque l'image est prête, les tampons sont échangés. Avec VSync activé, cet échange est reporté jusqu'au VBlank le plus proche. Le GPU reste inactif si l'image est prête avant VBlank, réduisant les performances mais éliminant le tearing.

cpp
// OpenGL — activation de VSync via WGL_EXT_swap_control
HDC hdc = wglGetCurrentDC();
PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT =
    reinterpret_cast<PFNWGLSWAPINTERVALEXTPROC>(
        wglGetProcAddress("wglSwapIntervalEXT"));
wglSwapIntervalEXT(1); // 1 = VSync activé, 0 = désactivé

Temps d'attente VBlank

VBlank est un court intervalle entre la dernière ligne de l'image actuelle et la première ligne de l'image suivante. Pendant ce moment, l'écran ne met pas à jour les pixels et l'échange de tampons se produit sans artefacts. La durée de VBlank dépend de la fréquence de rafraîchissement : à 60 Hz sur un écran 1080p, VBlank dure environ 1,4 ms. Si le GPU ne termine pas le rendu avant VBlank, l'image est sautée et l'écran affiche l'image précédente pendant un cycle supplémentaire — cela est perçu comme du bégaiement.

Le triple buffering résout le problème d'inactivité du GPU en ajoutant un troisième tampon. Le GPU peut commencer à rendre l'image suivante immédiatement même si l'un des back buffers attend VBlank. Cela augmente les FPS avec VSync mais ajoute une image supplémentaire de latence. Sur les appareils mobiles, le triple buffering est utilisé dans certains moteurs de jeu et dans Vulkan via le mode Mailbox.

Principaux problèmes sans VSync

VSync désactivé offre un FPS maximum et un input lag minimal, mais au prix d'artefacts visuels. Pour les jeux mobiles et les applications avec animation fluide, le choix entre VSync et sa désactivation est un compromis entre la clarté de l'image et la réactivité des commandes.

Déchirure d'écran (Screen Tearing)

Screen tearing est une division horizontale où la partie supérieure de l'écran montre l'image précédente et la partie inférieure montre déjà l'image suivante. Cela se produit lorsque le GPU échange les tampons au milieu du balayage. Sur les appareils mobiles, le tearing est particulièrement visible lors du défilement rapide ou dans les scènes dynamiques avec des fréquences d'images élevées. Les écrans OLED avec leur réponse instantanée rendent le tearing plus contrasté par rapport au LCD.

L'intensité du tearing dépend du rapport entre les FPS et la fréquence de rafraîchissement. À 60 FPS sur un écran 60 Hz, le tearing apparaît comme une seule ligne statique, tandis qu'à 300 FPS sur 60 Hz, il apparaît comme de multiples déchirures ondulées se déplaçant de haut en bas. Plus les FPS sont élevés par rapport à la fréquence de rafraîchissement, plus il y a de déchirures et plus elles sont visibles.

Latence d'entrée (Input Lag)

L'input lag avec VSync est le délai entre l'appui sur un bouton et l'affichage du résultat à l'écran. La synchronisation verticale ajoute en moyenne une image de latence (16,7 ms à 60 Hz), et avec le triple buffering — jusqu'à deux images. Pour les applications occasionnelles, ce délai est imperceptible, mais pour les shooters, les jeux de combat et les jeux rythmiques, il est critique : les professionnels remarquent des délais même de 8 ms.

Selon une étude de NVIDIA (2024), l'input lag moyen dans CS:GO à 60 FPS sans VSync est de 22 ms, et avec VSync — 39 ms. À 144 FPS, la différence se réduit à 14 contre 18 ms respectivement. Sur les plateformes mobiles, l'input lag du VSync est moins critique en raison de l'entrée tactile, où la latence matérielle de l'écran tactile (10–30 ms) masque le délai supplémentaire de synchronisation.

Configuration de VSync dans le développement mobile

Dans le développement mobile, VSync est contrôlé via les API graphiques, les moteurs de jeu et les paramètres système de l'OS. iOS offre moins de contrôle, Android en offre plus via Vulkan et OpenGL ES. Le choix du mode dépend du type d'application : jeux, UI ou vidéo.

VSync dans Unity et Unreal Engine

Unity utilise le paramètre QualitySettings.vSyncCount : 0 — désactivé, 1 — VSync à chaque VBlank, 2 — à chaque deuxième VBlank (FPS réduit de moitié). Dans Unreal Engine, VSync est contrôlé via la commande console r.VSync et DefaultEngine.ini. Pour les builds mobiles, il est recommandé de désactiver VSync dans Unity et d'utiliser un limiteur de FPS personnalisé, car le VSync intégré d'Android SurfaceFlinger peut créer des délais imprévisibles.

csharp
// Unity — contrôle de VSync et des FPS
void Awake()
{
    // 0 = VSync désactivé, 1 = VSync activé
    QualitySettings.vSyncCount = 0;
    // Limiteur de FPS personnalisé au lieu de VSync
    Application.targetFrameRate = 60;
}

VSync dans Vulkan et Metal

Vulkan offre un contrôle total via VkSwapchainPresentInfo et presentMode : VK_PRESENT_MODE_FIFO_KHR — VSync classique, VK_PRESENT_MODE_MAILBOX_KHR — triple buffering sans attente, VK_PRESENT_MODE_IMMEDIATE_KHR — sans synchronisation. Metal dans iOS contrôle VSync via CAMetalLayer.displaySyncEnabled. Depuis iOS 14, Apple recommande d'utiliser displaySyncEnabled = true par défaut pour toutes les applications sauf les jeux de type arcade.

ModeDescriptionLatence
FIFOVSync classique avec attente VBlank1 image
MailboxTriple buffering, suppression des images anciennes1–2 images
ImmediateSans synchronisation, FPS maximum0 image

Limitation de FPS sans VSync

Un limiteur de FPS est une alternative à VSync où l'application limite la fréquence d'images par programmation sans attendre VBlank. Cette approche offre une latence prévisible et ne dépend pas de la fréquence de rafraîchissement de l'écran. Sur Android, la limitation de FPS est implémentée via Choreographer, sur iOS — via CADisplayLink avec contrôle manuel du timing de sortie.

VSync et les technologies modernes de synchronisation

Le VSync traditionnel a un inconvénient fondamental : il est lié à une fréquence de rafraîchissement fixe de l'écran. Si le GPU produit 45 FPS sur un écran 60 Hz, VSync ne peut pas afficher 45 images — il affiche 30 (sautant un VBlank sur deux) ou alterne entre 60 et 30 avec des intervalles irréguliers. Cela crée du bégaiement, qui gâche l'expérience de jeu plus que le tearing.

Adaptive Sync (FreeSync, G-Sync, Apple ProMotion) résout ce problème en modifiant dynamiquement la fréquence de rafraîchissement de l'écran en fonction des FPS de l'application. Si l'application produit 47 FPS, l'écran passe à 47 Hz — chaque image est affichée exactement une fois, sans déchirure ni bégaiement. ProMotion sur iOS sélectionne automatiquement une fréquence de 24 à 120 Hz, équilibrant fluidité et consommation d'énergie.

Sur les appareils mobiles, Adaptive Sync devient la norme : iPad Pro (2017+) avec ProMotion, les flagships Android avec écrans LTPO (Samsung Galaxy S23 Ultra, Google Pixel 8 Pro) prennent en charge une fréquence de rafraîchissement dynamique de 1 à 120 Hz. Pour le développeur, cela signifie que VSync au sens traditionnel est remplacé par la gestion système — il suffit de définir targetFrameRate, et l'OS ajuste lui-même la fréquence de rafraîchissement pour l'équilibre optimal entre fluidité et autonomie de la batterie.

Questions fréquentes

Faut-il toujours activer VSync dans les jeux mobiles ?

Non. Pour les jeux dynamiques (shooters, jeux de combat), VSync augmente l'input lag sans bénéfice significatif — le tearing sur les écrans OLED mobiles est moins perceptible en raison de la petite taille de l'écran. Pour les jeux occasionnels et les UI, VSync améliore la perception de fluidité.

Comment VSync affecte-t-il la batterie d'un appareil mobile ?

VSync réduit la consommation d'énergie car le GPU ne rend pas d'images inutiles. Lorsque VSync est désactivé, le GPU fonctionne à la fréquence maximale, et chaque image non affichée gaspille de l'énergie et chauffe l'appareil sans bénéfice pour l'utilisateur.

Quelle est la différence entre VSync et un limiteur de FPS ?

VSync synchronise la sortie des images avec le VBlank de l'écran, tandis qu'un limiteur de FPS limite simplement la fréquence de rendu dans le code de l'application. Le limiteur de FPS n'élimine pas le tearing mais offre une latence prévisible sans être lié à la fréquence de rafraîchissement de l'écran.

Pourquoi les FPS peuvent-ils chuter de moitié avec VSync activé ?

Lorsque le GPU ne termine pas une image avant VBlank, le VBlank est sauté et l'image est affichée pendant deux cycles de rafraîchissement. À 60 Hz, cela donne 30 FPS. Le triple buffering atténue cet effet en permettant au GPU de commencer l'image suivante sans attendre.

iOS et Android supportent-ils Adaptive Sync ?

Oui. iOS ProMotion (iPad Pro, iPhone 13 Pro+) prend en charge une fréquence dynamique de 24–120 Hz. Android via les panneaux LTPO prend en charge 1–120 Hz. Le développeur n'a pas besoin de gérer cela manuellement — le système sélectionne la fréquence optimale automatiquement.

Résumé

  • VSync est un mécanisme de synchronisation GPU-écran qui élimine le screen tearing
  • Double buffering avec attente VBlank est l'implémentation classique de la synchronisation verticale
  • Screen tearing est le principal problème de VSync désactivé, particulièrement visible à FPS élevé
  • Input lag est le prix de VSync, ajoutant une à deux images de retard
  • Triple buffering réduit le bégaiement mais augmente l'input lag
  • Adaptive Sync (ProMotion, LTPO) est un remplacement moderne de VSync avec fréquence dynamique
  • Pour les jeux mobiles, utilisez un limiteur de FPS au lieu de VSync pour une latence prévisible

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi