1 points par GN⁺ 2025-08-16 | 1 commentaires | Partager sur WhatsApp
  • Lorsqu’un jeu est lancé en plein écran sur un MacBook, la plupart des jeux effectuent un rendu flou à cause du problème de l’encoche de l’écran
  • Le mécanisme de sélection de la résolution du système ne tient pas compte de la zone de l’encoche, ce qui entraîne le choix d’une zone de sortie incorrecte
  • Le choix d’une résolution 16:10 sert de solution de contournement temporaire, mais la cause profonde réside dans la conception des API d’Apple et dans le manque de directives
  • Le problème est reproductible dans des jeux représentatifs (Shadow of the Tomb Raider, No Man’s Sky, etc.) ; certains jeux récents (Cyberpunk 2077) le gèrent correctement
  • Apple doit améliorer les recommandations aux développeurs et la prise en charge via des mises à jour du HIG et des API

Problème : pourquoi le rendu est flou dans les jeux Mac en plein écran

  • Ce problème a été signalé à Apple depuis septembre 2023 sous l’identifiant FB13375033
  • Lorsqu’un jeu est lancé en plein écran sur l’écran d’un MacBook, la plupart des jeux ne prennent pas correctement en compte l’encoche (notch), ce qui provoque des erreurs de rendu
  • De nombreux jeux récupèrent la liste des résolutions prises en charge par le système et choisissent la première d’entre elles (la résolution de toute la zone de l’écran), alors que la véritable zone plein écran utilisable dans AppKit est limitée à la zone située sous l’encoche
  • Si le jeu affiche en résolution de l’écran complet, la zone réellement drawable étant plus petite, l’image est compressée verticalement, ce qui entraîne un effet de flou

Structure des zones d’affichage sur les écrans Mac

  • Un écran Mac avec encoche comporte trois zones principales
    • Les limites complètes de l’écran (encoche et menu compris)
    • La safe area (sous l’encoche)
    • La zone plein écran exploitable par AppKit (sous la barre de menu)
  • La liste des résolutions renvoyée par la fonction CGDisplayCopyAllDisplayModes mélange la résolution complète de l’écran et la résolution sous la barre de menu (généralement au format 16:10)
  • La plupart des jeux utilisent le premier élément de cette liste (la zone plein écran), ce qui produit une sortie incorrecte
  • Exemple : Shadow of the Tomb Raider démarre par défaut avec la résolution complète de l’écran (3456x2234), mais la zone réellement drawable est de 3456x2160 (74 pixels d’écart, ce qui comprime l’image et la rend floue)

Solution : choisir la bonne résolution et solutions de contournement temporaires

  • Utilisateurs : lors de l’exécution d’un jeu en plein écran sur un écran Mac avec encoche, il est important de sélectionner manuellement une résolution 16:10 (le jeu ne l’ajuste pas automatiquement)
  • Développeurs : il faut filtrer plus finement la liste des résolutions en utilisant la propriété safeAreaInsets de NSScreen
    • Un algorithme est proposé en code pour ne conserver que les résolutions conformes au critère de la safe area (avec comme effet secondaire de filtrer excessivement certaines résolutions, comme le 4:3)
    • Fondamentalement, une amélioration du côté d’Apple est nécessaire

Affected Games : principaux jeux touchés et état de la prise en charge

  • Shadow of the Tomb Raider, Control Ultimate Edition, No Man’s Sky, Riven, Stray, entre autres, présentent pour la plupart des phénomènes de compression et de rendu flou à cause d’une résolution par défaut incorrecte
    • Control : fixe sa propre résolution de manière arbitraire, sans correspondre à la véritable résolution du Mac
    • No Man’s Sky : propose à la fois des résolutions avec un ratio incorrect, ainsi que des résolutions safe area et hors safe area
    • Riven, Stray : appliquent par défaut un rendu dans une résolution compressée
  • Cyberpunk 2077 choisit correctement une résolution 16:10 (sa méthode de filtrage interne n’est pas connue)
  • World of Warcraft : grâce à une API legacy, peut dessiner jusque dans l’encoche, donc l’utilisation de la résolution complète fonctionne normalement

Ce qu’Apple pourrait faire : nécessité d’une réaction d’Apple

  • Ajouter dans la documentation du HIG (Human Interface Guidelines) des explications et recommandations sur la gestion des résolutions pour les écrans avec encoche
  • Demander une mise à jour de CGDisplayMode afin de faciliter le filtrage des résolutions dans AppKit/Cocoa
  • Concevoir une nouvelle API dédiée à l’optimisation des jeux (liste de résolutions et suppression du boilerplate)
  • Pour les développeurs, envisager de recommander le calcul d’une liste de résolutions propre plutôt qu’une simple interrogation des résolutions, ou l’usage d’un système de « render scale »
  • Si ces améliorations sont appliquées, Apple devra également mettre à jour sa documentation officielle et ses exemples de code

1 commentaires

 
GN⁺ 2025-08-16
Commentaires sur Hacker News
  • Je me demande si je suis le seul à trouver les coins arrondis et l’encoche extrêmement bizarres. On a passé des décennies à subir la géométrie approximative des écrans CRT, puis on a enfin généralisé des écrans parfaitement rectangulaires, et c’est dommage de gâcher ça simplement pour avoir l’air cool.
    • Il faut voir l’encoche non pas comme une absurdité qui vole de la surface d’écran, mais comme un élément qui augmente la taille totale de l’écran à mesure que les bordures diminuent. Et quand les coins de l’écran arrivent près de l’encoche, il est plus naturel que l’écran soit lui aussi arrondi, puisque le châssis du portable l’est. Un écran rectangulaire dans les coins arrondis d’un portable paraît étrange. Cela dit, ça dépend du contexte : sur Mac, lors de la lecture vidéo, l’écran redevient rectangulaire et la lecture se fait sous l’encoche. En pratique, on a un plus grand écran, des coins arrondis au travail, une encoche dans la barre de menu qui ne dérange pas, et pour la vidéo ou les jeux on revient à un écran rectangulaire. Au final, entre les différents avantages et cette flexibilité, ce n’est pas forcément quelque chose de mauvais.
    • Avec la technologie actuelle, il y a trois options possibles : 1) maximiser l’écran sans bordure et sans caméra frontale, 2) avoir une caméra frontale mais aucun bord, ce qui rend l’écran 5 mm plus court et laisse une bande supérieure de 5 mm totalement inutile, 3) avoir une caméra frontale avec une combinaison bordure/encoche, où il y a un « espace mort » au centre mais où les côtés restent utilisables. Comme la plupart du temps on a des menus et des indicateurs en haut, avec le centre vide, la zone de l’encoche permet en pratique de gagner plus d’espace pour les applis. Pour les jeux, avec les approches #2 et #3, c’est de toute façon de l’espace mort, donc il n’y a pas de vraie différence. En fin de compte, l’encoche n’occupe pas réellement le centre utile de l’écran, elle ajoute plutôt de l’espace à gauche et à droite. En revanche, je pense qu’il y a bien un problème dans la manière de déclarer la résolution (si la valeur transmise aux applis ne correspond pas à la réalité, ça crée de la confusion).
    • J’utilise un MacBook avec encoche, et franchement on remarque à peine sa présence. La plupart des utilisateurs de MacBook n’y prêtent quasiment aucune attention. Il y en a quelques-uns que ça agace, mais ils sont très minoritaires.
    • Je me demande si l’écran est en OLED. Les smartphones sont tous en OLED. À mon avis l’encoche ne sert pas vraiment, mais elle reste nécessaire à cause de l’emplacement de la caméra frontale. Si c’est de l’OLED, il suffit d’éteindre les pixels quand il le faut et ça ressemble juste à une bordure, donc au fond ça revient à peu près à l’ancienne solution.
    • Personnellement, je préférais les polices sans anti-aliasing sur LCD, parce que les bords carrés des pixels donnaient un rendu net. Malgré ça, beaucoup de gens préfèrent l’effet d’anti-aliasing plus doux. C’est sans doute à cause du côté CRT.
  • World of Warcraft a une option qui prend l’encoche en compte et affiche l’interface en l’évitant. En interne, il récupère une safe region via C_UI, puis ajuste UIParent en conséquence, de sorte que le rendu du jeu utilise tout l’écran mais que l’interface s’aligne sous l’encoche.
    • WoW a toujours très bien traité macOS comme une plateforme de premier ordre. C’est vraiment dommage que Blizzard ait récemment abandonné la prise en charge de macOS sur ses nouveaux jeux.
  • Cette situation montre qu’Apple ne se soucie pas du gaming sur Mac. J’ai moi-même beaucoup investi, entre un MBP, un Mac Studio, etc., mais au final les limites viennent non pas du matériel, mais de la gestion lamentable du logiciel de jeu. En arrière-plan, il y a le fait qu’Apple ne peut pas prélever 30 % sur les jeux Mac comme sur iOS. Ça me rappelle ce qu’un ancien prof disait : « même si la raison affichée n’est pas financière, au fond tout est une question d’argent ».
    • Le vrai problème, c’est surtout que le niveau de documentation d’Apple est catastrophique. On a des listes de signatures de fonctions, mais pour savoir comment les utiliser en pratique, il faut aller déterrer une session WWDC d’il y a plusieurs années, et encore, sans certitude que ce soit toujours correct.
    • C’est vrai qu’Apple ne se soucie pas vraiment du jeu, mais ce genre de problème lié à l’encoche est aussi le résultat contradictoire de sa promesse d’une « abstraction magique » au niveau technique. On nous dit que le logiciel gère ça tout seul, mais en réalité les applis et jeux qui manipulent l’écran finement ont tous besoin de hacks ou de correctifs spécifiques. On retrouve à chaque fois le même dilemme entre limites techniques et abstraction.
    • Le manque d’intérêt pour le marché du jeu sur Mac vient aussi de l’idée que le gaming est fondamentalement un business à faible marge. En général, les joueurs sont très sensibles au matériel, au coût des composants et aux marges, notamment sur les SSD ou la RAM. C’est complètement différent des marchés créatif et entreprise, où Apple dégage de fortes marges.
    • J’utilise un Mac Studio M3 Ultra, une machine à 4 000 $, et dès que j’essaie de streamer quoi que ce soit avec StreamLabs — même sans lancer de jeu — l’enregistrement saccade et rame. Je ne comprends vraiment pas pourquoi ça arrive.
    • L’argument selon lequel Apple agit ainsi parce qu’il ne peut pas prélever 30 % sur Mac n’est pas convaincant, parce que la plupart des jeux Mac mentionnés dans l’article sont sur l’App Store, donc Apple touche bel et bien sa commission : Control Ultimate Edition, Shadow of the Tomb Raider, Riven, Cyberpunk 2077 Ultimate, Stray. On est moins face à du sabotage malveillant qu’à de l’incompétence et de l’indifférence.
  • Les vieux jeux comme WoW peuvent utiliser l’API plein écran héritée de CoreGraphics pour dessiner librement jusque dans la zone de l’encoche. Je ne connais pas très bien Mac, mais il me semble logique qu’un jeu puisse dessiner en plein écran en incluant l’encoche pour renforcer l’immersion, tout en réservant l’interface et le gameplay à la zone sûre. Je me demande si des jeux comme Control, qui se contentent d’une résolution choisie plus ou moins arbitrairement, l’ont fait simplement par flemme.
    • Chaque jeu gère ça différemment, mais la zone au-dessus de l’encoche est soit juste noire, soit totalement inaccessible (même le curseur ne peut pas s’y déplacer). Ça se comporte comme si cette partie n’existait pas sur l’écran. En gros, c’est pareil que sur un M1 Air sans encoche.
  • Ce n’est pas un problème propre à Apple. Il y avait déjà des soucis d’overscan TV sur Xbox 360 en 2008. Il fallait rendre l’image plus petite que la résolution pour rester dans la safe area, donc les développeurs devaient toujours gérer ça séparément. Avec XNA, c’est devenu un peu plus simple grâce au safe area rect, et aujourd’hui on peut aussi définir librement la taille du backbuffer. Quand on utilise DLSS et autres, le mieux reste de faire correspondre la safe area en 1:1. En fin de compte, les développeurs doivent bien comprendre que la résolution d’affichage et la résolution de rendu peuvent être différentes, que l’on utilise wgpu, vulkan, AppKit, SDL, glfw ou autre.
    • En gros, ce que tu dis, c’est qu’on rend volontairement l’image plus petite pour économiser des ressources de calcul, mais qu’au moment de la sortie HDMI elle est de toute façon remise à l’échelle en 1080p, et avec l’overscan TV par-dessus ça peut empirer encore le problème. En réalité, le problème de l’overscan TV peut être résolu avec des options de FoV personnalisé et de taille d’interface, donc je ne vois pas l’intérêt de réduire l’image elle-même.
  • Je suis surpris que l’article se concentre uniquement sur les parties rendues floues. En pratique, même la position du pointeur de la souris est affectée. Selon le jeu, il faut à chaque fois aller dans les menus de l’OS pour forcer le plein écran à se placer sous l’encoche. On se demande pourquoi il n’existe pas une option d’accessibilité à l’échelle du système pour ça.
  • Cette situation illustre bien la taille du marché du jeu sur Mac : il est très petit, et c’est regrettable.
    • En réalité, la part du Mac n’est que de 1,88 % selon l’enquête matérielle de Steam, soit moins que Linux. Donc la plupart des développeurs ne s’en préoccupent tout simplement pas.
  • J’ai acheté exprès un MacBook Pro M3 parce que je ne voulais pas pouvoir jouer. J’avais besoin d’un portable fiable pour un master en cybersécurité, et si j’avais pris un gros portable Windows, j’aurais probablement passé mon temps à jouer. La machine est excellente dans l’ensemble, mais elle chauffe beaucoup trop en jeu, donc ça m’inquiète. Du coup, j’ai simplement renoncé au gaming.
  • La police de ce site a certaines parties de quelques lettres qui sont beaucoup trop fines.
    • Personnellement, j’ai l’impression que tout le haut des lettres est trop fin. On dirait vraiment un document imprimé avec une imprimante presque à court d’encre (je laisse ce retour dans la plus pure tradition de Hacker News).
  • Je me demande comment on pourrait corriger ça sans casser les logiciels existants. Réordonner la liste ?
    • Comme Windows l’a fait, l’OS pourrait transmettre de « fausses » informations système quand l’application en cours est un ancien jeu, afin que l’affichage se passe correctement. C’est l’une des grandes raisons pour lesquelles Windows a réussi comme plateforme de jeu. Ce n’a pas pas complètement disparu aujourd’hui, mais ce genre d’approche était bien plus courant autrefois.