Pourquoi les jeux sont lents sous Mac OS X ?

Un peu de technique : quand Valve explique pourquoi les Mac sont moins rapides que les PC dans les jeux. Pour ceux qui l’ignorent, les jeux OpenGL sont généralement bien plus lents sous Mac OS X, en partie — comme Valve l’explique — parce qu’OpenGL est à la base de l’OS d’Apple et qu’il doit donc être très fiable.

La première raison de la perte de vitesse, ce sont les occlusion queries. Pour faire simple, il s’agit de commandes qui permettent de connaître les objets visibles à l’écran et donc de gérer la lumière en fonction de ces derniers. Exemple concret : le bras d’un héros passe devant le soleil. Sans les occlusion queries, on voit le soleil à travers le bras. Avec, le soleil est caché et des effets de solarisation apparaissent.

Idéalement, c’est le cas sous Windows, les calculs nécessaires se font sur le CPU pendant que le GPU calcule les images et le résultat est mixé au moment de l’affichage. Sous Mac OS X (avant la mise à jour), les deux tâches — calcul de la scène et calcul des occlusion queries — étaient synchronisées, ce qui posait un problème de performances. En désynchronisant les tâches, on gagne du temps CPU et du temps GPU pour d’autres tâches (ou pour tout simplement accélérer le jeu).

La seconde raison vient du fait qu’OpenGL est utilisé par Apple comme base pour Mac OS X. En effet, comme l’API est à la base du système, les vérifications pour éviter qu’une application fasse n’importe quoi sont poussées. Et c’est là que ça coince : Mac OS X vérifie (via le CPU) qu’on n’essaye pas de faire des choses comme une division par zéro. C’est louable, mais ça prend du temps sur le processeur, ce qui est gênant dans un jeu. En désactivant cette option, on gagne donc un peu en performances. Et en améliorant un peu la gestion de l’API par Mac OS X, il serait même possible de gagner encore un peu de puissance.

Ce qui ressort très clairement de l’analyse de Valve, c’est que la vision de l’API n’est pas la même sous Windows et sous Mac OS X. Là où les pilotes Windows essayent d’aller le plus vite possible — quitte à introduire des erreurs —, les pilotes de Mac OS X tendent à limiter les erreurs. C’est là qu’on voit que les Mac sont des outils de travail et les PC des outils de jeux. À la décharge des professionnels, il aurait été intéressant de vérifier le comportement des cartes graphiques professionnelles sous Windows (Quadro ou FireGL), les pilotes de ces dernières étant généralement différents de ceux des cartes grand public, particulièrement au niveau de l’OpenGL.