Pourquoi seul Safari a-t-il un défilement inertiel (presque) parfait dans OS X?

Je suis tellement étonné que Safari soit le seul browser de OS X qui réussit à get (presque) un défilement inertiel parfait.

  • Même avec beaucoup de contenu flash sur un site Web, le défilement de Safari est lisse.
  • Il existe des sites Web avec beaucoup de contenu à charger et Safari continuera à défiler en douceur pendant que le contenu est chargé et rendu.
  • L'installation de plusieurs extensions n'a pas d'effet sur les performances de défilement.

Les principaux concurrents du browser Safari sur OS X sont Chrome et Firefox. Les deux ne parviennent pas à livrer le même défilement en douceur que celui utilisé dans Safari:

  • Activation de drapeaux comme la composition de GPU sur toutes les pages de Google Chrome ( chrome://flags ) ou …
  • un défilement sans heurts dans Firefox ( Options > Advanced ) ne fournit pas les performances de défilement que Safari délivre par défaut.

Question

Safari utilise-t-il une API privée pour offrir un défilement en douceur auquel les développeurs de Chrome / Firefox ne peuvent pas accéder? Comment le défilement de Safari est tellement meilleur et les concurrents ne parviennent pas à proposer un défilement non cassé.

Je me request surtout Chrome parce qu'il s'adapte généralement aux nouvelles fonctionnalités OS X très rapidement.

La différence est susceptible de faire avec l'architecture et les choix de communication interprocess de chaque browser.

Les browsers Web modernes rendent les pages dans des process distincts. Apple a un cadre appelé IOSurface qui fournit un moyen simplifié pour qu'un process passe une image à un autre process. Ce cadre a été introduit dans Mac OS X 10.6, alias Snow Leopard, pour la dernière itération de QuickTime.

QuickTime utilise IOSurface pour décharger le déencoding de film pour séparer les process. Sans déencoding à effectuer, l'application QuickTime Player ne concerne que l'interface user et affiche les images fournies par les process de déencoding.

Je soupçonne que Safari a appris de QuickTime et utilise les mêmes techniques. Les pages Web sont déchargées à d'autres process, rendus et révoqués.

Chrome et Firefox pourraient-ils faire la même chose, absolument. Le défi est de s'assurer que le fil qui traite avec l'user réagit rapidement et ne tarde pas à attendre que le rendu soit mis à jour.

Chrome utilise des process distincts et semble utiliser IOSurface sur le Mac; Ce bug parle d' améliorer l'utilisation d'IOSurface par Chrome .

IOSurface est un cadre public disponible pour toute application Mac OS X 10.6+. Cependant, il y a peu de documentation et c'est Mac spécifique.

Ceci est une conjecture.