为什么 Unity 使用专有 Nvidia 驱动程序时不如使用开放 Intel 驱动程序时流畅?

为什么 Unity 使用专有 Nvidia 驱动程序时不如使用开放 Intel 驱动程序时流畅?

我有一台 Thinkpad W520,配有 Intel HD3000 板载显卡和 Nvidia 1000M 显卡芯片,运行的是 Ubuntu 13.04。我发现 Unity 在 Intel 和 Nvidia 上的流畅度差别很大。

尽管使用专用的 Nvidia 显卡,游戏运行效果会好得多,但 Unity 似乎更喜欢 Intel 显卡。在最小化/最大化窗口和使用 exposé 功能以及其他效果时,这一点尤其明显。这是为什么呢?您可能会认为更好的显卡会带来更好的 Compiz 性能,但事实似乎并非如此。

我并不是真的在说 Unity 很慢,而是有点滞后,因为我使用 Nvidia 时会丢帧。

这不是 Optimus 的问题,因为我很幸运有一个 BIOS 可以让我选择我喜欢的。

我可以进行哪些修复或改进来改善 Unity 的外观和 Nvidia 显卡的性能?

答案1

简短的回答是,专有驱动程序针对运行专有软件(即游戏)进行了优化,而开源驱动程序针对运行 Unity 和 Gnome Shell 等开源软件进行了优化,而针对一件事进行优化往往会使其他所有事情变得更慢。

Unity 使用 Nouveau(开源 Nvidia 驱动程序)实际上比使用受限驱动程序运行得更顺畅。不幸的是,游戏却不能(如果它们能运行的话)。原因很复杂。用于窗口系统的优化与用于游戏的优化不同,因此通常归结为开发人员选择其中之一。

Unity 和一般的窗口系统不需要特别强大的显卡。它们不需要像游戏那样的数百个着色器。相反,它们需要一组非常特定的操作来尽可能快地运行。

游戏通常是专有的,并且是为 Windows 编写的,只有专有驱动程序可用。因此,游戏开发人员会选择这种驱动程序。因此,游戏玩家通常使用专有驱动程序,而 Nvidia 会对其进行优化,使游戏运行速度更快。

另一方面,Unity、Nouveau 和 Intel 都是开源的。Unity 瞄准开源驱动程序,因为这样更容易修复错误,而且它们不需要在其他操作系统上运行。游戏玩家很少使用开源驱动程序,因此它们没有针对游戏进行优化(因此游戏玩家不使用它们……等等。)

至于您可以做什么来修复它:不幸的是,没有太多办法。不使用 Compiz 似乎是唯一有区别的事情,但这也意味着不使用 Unity,而且区别并不大。

(如果您确实看到了大量的延迟,而不仅仅是轻微的烦恼,那么您的系统确实存在问题。)

相关内容