Lien de la note Hackmd
Cadences en pratique
On a des problemes de precisions
Tout est entier:
- PTS: temps image source
- STC: temps horloge affichage
Resolution d’increment: TIR
- TIR(PTS) = duree d’une seconde dans le flux video
- TIR(STC) = duree d’une seconde a l’affichage
Si TIR(PTS) non \% TIR(STC), probleme de $\color{red}{\text{fraction continue!}}$
Exemple
TIR PTS = 90000 = 1 seconde
Supposons STC = timer hardware a 5 KHz
- TIR(STC) $=5000$
Pour un affichage a 50 fps:
- $\Delta STC=5000/50=100$ (TIR \%)
Comment comparer STC avec TIR(STC) = 5000 vs PTS avec TIR(PTS) = 90000
Produit en croix
STC’ comparable avec PTS
Mais jitter de STC multiplie par $18$
Adaptation source 59,97 ips -> affichage 60 ips
- Theoriquement: adaptation par repetition 1 image sur 1000
- En pratique: jitter PTS + jitter STC
- Tremblement du criteres PTS - STC
Bufferisation
On veut envoyer a l’affichage une image a l’heure !
On fait de la bufferisation pour les jeux CGI realtime
Bufferisation: art de choisir l’image a afficher
Il faut qu’il y ait toujours une image a l’ecran
Bufferisation non VSYNC
Envoyer le backbuffer suivant des qu’il est pret
Avantages:
- Un seul backbuffer
- Rapide
Inconvenient:
- $\color{red}{\text{Tearing back/front}}$
Bufferisation VSYNC
Permutter frontbuffer et back buffer
Avantages
- Pas de tearing
Inconvenient
- $\color{red}{\text{Producteur aussi leant que l’afficheur}}$
Notre jeu/application va etre ralenti
C’est le meme phenomene que celui du passage des jeux japonais aux consoles europeennes avec des jeux $20\%$ plus lent
Bufferisation triple + VSYNC
Deux backbuffers composes en alterance
- Au VSYNC: envoyer le backbuffer pret en front buffer
- Avantages
- Pas de tearing
- Decouplage cadence production vs affichage
- Inconvenients
- $\color{red}{\text{Deux backbuffers}}$
- $\color{red}{\text{CPU/GPU a donf}}$
Comment afficher ?
Comment cadrer l’image dans l’ecran ?
- En frequence
- En phase
En frequence:
- Pulses verticaux: VSYNC
- Pulses horizontaux: HSYNC
En phase:
- Palliers avant/arriere
Pulses et palliers normalises
VGA, DVI, HDMI: Display Data Channel => Extended Display Identification Data
Xorg: “Modelines”
Cadrage d’une image
- Vertical blanking
- Horizontal blanking
DVI/HDMI
HDMI 3D
Comment afficher des images 3D ?
- Plusieurs formats 3D numeriques
- Dans tous les cas, pixel clock $\times 2$
Checkerboard (NVIDIA):
- VBlank + VSync
- HSyncs + Lignes de pixels OG/OD en quinconce
- Lignes deux fois plus larges
Frame pack (HDMI 1.4A)