如何使用DRI而不是glx?

时间:2015-03-09 18:11:45

标签: c++ c linux opengl glx

好我的实际问题是

当我开始一个自编的简单OpenGL应用程序时,我的粉丝会发疯。首先我认为我的显卡太糟糕了。但是,当我注意到我的笔记本电脑硬件更差,运行该程序没有任何问题,我开始想知道。 所以我现在在两台不同的笔记本电脑上运行我的程序。 其中一个是Fedora笔记本电脑,带有一个带有板载图形卡的内核I7,另一个带有带有板载图形卡的Intelcore I5的Debian。 与我的期望相反,我的fedoras粉丝完全疯了,所以我开始做一些研究来找到问题。 我读到了关于GLX渲染和direct rendering linux的内容。 所以我接下来做的是检查了

的输出
glxinfo |grep render

输出告诉我在两台机器上都启用了direct rendering。 唯一的区别是OpenGL renderer string

在我的debian上它包含类似

的内容
mesa dri 

或类似的东西。 在我的fedora上它说

  Gallium 0.4 on llvmpipe (LLVM 3.5, 256 bits)

顺便说一句......他们两个都在运行KDE。

好的,我检查了/dev文件系统。 在我的debian上,正如我在dri/card0文件系统中预期的设备文件/dev,当然在我的fedora上它已经丢失了。

我也看过lsmod ...... 模块drm及其辅助模块在两台机器上加载。 两台机器都使用i915模块作为图形卡。

我的第一个想法是Fedora不使用直接渲染,因为没有'card0'。 我使用linux工具strace来找出实际发生的情况。 我得到的结果并不令人惊讶 Debian加载drm library和其他一些东西。然后它使用/dev/dri/card0系统调用检查是否存在stat。然后打开它。 并开始使用大量ioctl命令。 那就是dri机制应该如何运作。

所以对fedora的'strace'带来了以下结果。

它也会打开drm library。但它不检查是否有/dev/dri/card0它开始生成futex次调用的输出。 我用Google搜索,futex调用似乎提供了监视特定RAM地址或多个RAM地址更改的功能。 所以必须有一个原因,我的fedora只是不想使用dri机制。

PS结果在两台机器上看起来都是一样的。 但我真的想知道如何解决这个问题。

0 个答案:

没有答案