过去,我有三个重要的应用程序在 compiz 和专有的 Nvidia 图形驱动程序方面出现了问题,它们是:Googleearth、Secondlife 客户端和 Blender。compiz 和旧 shell 已经取得了长足的进步,在打开 Compiz 合成时,这些应用程序的性能现在基本上可以接受。
假设您已决定使用 Compiz 和 Unity 而不是 Mutter,您是否会使用 Compiz 和 Unity 使用 Mutter 测试这些或任何其他重要的 3D 应用程序,以查看哪个性能最佳?这些测试可以帮助您证明这一点。到目前为止,我只听说过 Compiz 具有更好的硬件兼容性,并怀疑它将成为 Unity 更好的合成系统。
上述两种配置与旧 shell 上的最新 Compiz 相比如何,以及使用 Mutter 合成运行这些应用程序的 Gnome Shell 测试也有助于进行比较。如果需要科学演示,也许 Phoronix 的某个人可以在这方面提供帮助,但我认为从这些测试中报告真实的个人体验将非常有用。
我知道现在还为时过早,而且我不知道 Unity 与 Compiz 的状态,我真的希望我们不必回到过去,当使用某些应用程序时必须关闭合成才能完成工作,尤其是因为 Unity shell 将比旧 shell 更依赖于合成,换句话说,如果我们必须关闭合成才能使用 Blender,会发生什么?
希望我们不必再等待很长时间就能让 Unity/Compiz 与需要 3D 渲染的应用程序很好地配合。
答案1
我不知道这会对某些特定应用程序产生什么影响,但就我而言(我有一台 ATI 4850),运行 Compiz 而不是 Metacity 要快得多。这是因为窗口绘制工作是由 GPU 而不是 CPU 完成的。但是,由于 GPU 正在执行除渲染 Google Earth 中的内容之外的其他操作,因此其性能可能会略有下降。这就是为什么在 Windows 中打开游戏时,它会禁用透明度和花哨的东西。
答案2
如果显卡驱动程序性能正常,常规应用程序的性能几乎不会下降。以每秒 100 帧的速度运行的视频游戏肯定会因涉及额外的复制和通信而出现性能损失,但目前还没有 compiz 级别的解决方案。
答案3
实际上,Mutter 和 Compiz 使用类似的合成引擎,因此您在每个窗口管理器上都会遇到相同类型的减速。
解决速度变慢问题的唯一真正方法是将全屏窗口置于我们的 openGL 场景之上。然而,这意味着您无法在那里绘制通知或任何内容,因为它们需要在 openGL 场景中绘制。
我们应该考虑将 GEM 缓冲区对象作为 FBO 直接暴露给 compiz,而不是将其作为像素图暴露。这将使我们获得全速显示这些应用程序所需的少量 FPS 提升。不过这还远在未来。