我刚刚偶然发现了包裹libkwinnvidiahack4
)。根据我的描述,它为KDE窗口管理器和一个Nvidia二进制图形驱动程序提供了一些“黑客”。
此包包含nvidia卡用于KDE窗口管理器的库。此包是KDE工作区模块的一部分。
然而,这种描述缺乏它的实际作用。我使用KDE/Kubuntu,并安装了Nvidia图形驱动程序。安装这些软件包有什么好处?他们干些什么?
我已经安装了libkwinnvidiahack4包(可能是自动安装的),但我不确定它负责什么。
在changelogs (apt-get changelog libkwinnvidiahack4)中运行,给出一个条目(从其中获取的几个片段)的kde-workspace变更日志:
这也解释不了为什么要添加这些包以及它们是做什么的。
发布于 2013-08-22 22:02:05
在谷歌搜索了一段时间之后,我发现了这个职位:
这个文件的唯一目的是按链接顺序比(nvidia的) libGL晚,从而由它之前的动态链接器初始化,允许它很快地设置__GL_YIELD=NOTHING,使libGL能够注意到它。
考虑到这句话来自某位麦格莱斯林,马丁是这一领域的主要维护者,这也是一个可靠的来源。
实际上,看看源代码
apt-get source libkwinnvidiahack4这实际上是kde工作区模块。
kwin/nvidiahack.cpp是有问题的源模块--它本身就是一个小模块。
由于这个黑客仍然在13.04 -是核心构建的一部分,是的,它仍然需要,它的目的是确保库链接的OpenGL组件的KDE是按照正确的功能顺序。
就模块所做的工作而言,它似乎定义了运行时环境变量__GL_YIELD。
来自自由喷头规格
OpenGL屈服行为有几种情况下,NVIDIA OpenGL驱动程序需要等待外部状态更改才能继续。为了避免在这些情况下占用太多的CPU时间,驱动程序有时会产生这样的结果,这样内核就可以在驱动程序等待时调度其他进程来运行。例如,当在命令缓冲区中等待空闲空间时,如果在一定次数的迭代之后空闲空间没有可用,则驱动程序将在继续循环之前屈服。默认情况下,驱动程序调用sched_yield()来执行此操作。但是,如果CPU上有其他的、优先级相同的进程争用时间,则这会导致调用进程被排定一段相对较长的时间。这方面的一个例子是,基于OpenGL的复合管理器正在移动和重新绘制窗口,而X服务器试图在窗口移动时更新窗口,这两者都是CPU密集型操作。您可以使用__GL_YIELD环境变量来解决这些调度问题。这个变量允许用户指定驱动程序想要输出时应该做什么。
因此,黑客永远不要等待,并且总是在OpenGL复合表面上进行绘制--很可能是为了阻止图形工件的出现。
https://askubuntu.com/questions/332668
复制相似问题