web-dev-qa-db-fra.com

Pourquoi Unity n'est-il pas aussi fluide avec le pilote propriétaire Nvidia qu'avec le logiciel Intel ouvert?

J'ai un Thinkpad W520 avec carte graphique Intel HD3000 ainsi qu'une puce graphique Nvidia 1000M, et j'utilise Ubuntu 13.04. Je ressens une assez grande différence dans la manière dont Unity apparaît sans à-coups entre Intel et Nvidia.

Bien que les jeux fonctionnent beaucoup mieux avec la carte dédiée Nvidia, Unity semble mieux aimer les graphiques Intel. Ceci est particulièrement visible lors de la réduction/maximisation des fenêtres et lors de l'utilisation de la fonction exposé, ainsi que d'autres effets. Pourquoi est-ce? Vous supposez que la meilleure carte graphique conduit à de meilleures performances Compiz, mais cela ne semble pas être le cas.

Je ne parle pas vraiment de la lenteur d'Unity, mais plutôt d'un peu lent, car je perds du cadre, avec Nvidia.

Ce n'est pas un problème Optimus car j'ai la chance d'avoir un BIOS qui me permet de choisir celui que je préfère.

Existe-t-il des correctifs ou des améliorations que je peux apporter pour améliorer mon apparence et mes performances sous Unity avec les graphiques Nvidia?

4
Steffen Christensen

La réponse courte est que les pilotes propriétaires sont optimisés pour l'exécution de logiciels propriétaires (jeux), et les pilotes open source sont optimisés pour l'exécution de logiciels open source tels que Unity et Gnome Shell, et l'optimisation a tendance à tout faire sinon plus lent.

En réalité, Unity est plus fluide avec Nouveau (le pilote open source Nvidia) qu’avec le pilote restreint. Malheureusement, les jeux ne le sont pas (s'ils fonctionnent du tout). La raison est complexe. Les optimisations utilisées pour les systèmes de fenêtrage sont différentes des optimisations utilisées pour les jeux. Il incombe donc souvent aux développeurs de choisir l'un ou l'autre.

L'unité et les systèmes de fenêtres en général n'ont pas besoin d'une carte graphique particulièrement puissante. Ils n'ont pas besoin de centaines de shaders comme les jeux. Au lieu de cela, ils ont besoin d'un sous-ensemble d'opérations très spécifique pour être aussi rapide que possible.

Les jeux sont généralement propriétaires et écrits pour Windows, où seul le pilote propriétaire est disponible. Les développeurs de jeux ciblent donc ce pilote. En conséquence, le pilote propriétaire est couramment utilisé par les joueurs. Nvidia l’optimise pour rendre les jeux rapides.

Par contre, Unity et Nouveau et Intel sont des logiciels à source ouverte. Unity cible les pilotes open source car il est plus facile de corriger leurs bugs et de ne pas avoir à s'exécuter sur un autre système d'exploitation. Les pilotes open source ne sont pas beaucoup utilisés par les joueurs et ne sont donc pas optimisés pour les jeux (et donc les joueurs ne les utilisent pas ... et ainsi de suite.)

Quant à ce que vous pouvez faire pour y remédier: pas grand chose malheureusement. Ne pas utiliser Compiz est la seule chose qui semble faire la différence, mais cela signifie également ne pas utiliser Unity, et la différence n’est pas si grande.

(Si vous constatez vraiment un décalage énorme, et pas seulement une gêne mineure, vous avez un problème réel avec votre système.)

1
Alistair Buxton