![OpenGL 在英特尔显卡上以非常低的帧速率运行](https://linux22.com/image/1099666/OpenGL%20%E5%9C%A8%E8%8B%B1%E7%89%B9%E5%B0%94%E6%98%BE%E5%8D%A1%E4%B8%8A%E4%BB%A5%E9%9D%9E%E5%B8%B8%E4%BD%8E%E7%9A%84%E5%B8%A7%E9%80%9F%E7%8E%87%E8%BF%90%E8%A1%8C.png)
我有两个几乎相同但显卡略有不同的系统:
product: N10 Family Integrated Graphics Controller
vendor: Intel Corporation
driver: i915
product: Atom Processor D2xxx/N2xxx Integrated Graphics Controller
vendor: Intel Corporation
driver: gma500
我知道这两种系统都不是性能最佳的,但系统 B非常慢。主要区别如下:
结果glmark2
:
系统 A:(得分 55)
GL_VENDOR: Intel Open Source Technology Center
GL_RENDERER: Mesa DRI Intel(R) IGD x86/MMX/SSE2
GL_VERSION: 1.4 Mesa 9.0.3
系统 B:(分数 24)
GL_VENDOR: VMware, Inc.
GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 0x301)
GL_VERSION: 2.1 Mesa 9.0.3
结果glxinfo | grep render
:
系统A:
direct rendering: Yes
OpenGL renderer string: Mesa DRI Intel(R) IGD x86/MMX/SSE2
系统B:
direct rendering: Yes
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 0x301)
结果grep -i chipset /var/log/Xorg.0.log
:
系统A:
[ 21.507] (II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
[ 21.510] (II) VESA: driver for VESA chipsets: vesa
[ 21.521] (--) intel(0): Integrated Graphics Chipset: Intel(R) Pineview G
系统B:
[ 16.728] (II) VESA: driver for VESA chipsets: vesa
结果egrep "(GLX|DRI)" /var/log/Xorg.0.log
:
系统A:
[ 21.319] Initializing built-in extension XFree86-DRI
[ 21.319] Initializing built-in extension DRI2
[ 21.418] (==) AIGLX enabled
[ 21.419] Loading extension GLX
[ 22.114] (II) intel(0): [DRI2] Setup complete
[ 22.114] (II) intel(0): [DRI2] DRI driver: i915
[ 22.140] (II) intel(0): direct rendering: DRI2 Enabled
[ 22.417] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
[ 22.417] (II) AIGLX: enabled GLX_INTEL_swap_event
[ 22.417] (II) AIGLX: enabled GLX_ARB_create_context
[ 22.417] (II) AIGLX: enabled GLX_ARB_create_context_profile
[ 22.417] (II) AIGLX: enabled GLX_EXT_create_context_es2_profile
[ 22.417] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
[ 22.417] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
[ 22.417] (II) AIGLX: Loaded and initialized i915
[ 22.417] (II) GLX: Initialized DRI2 GL provider for screen 0
系统B:
[ 16.696] Initializing built-in extension XFree86-DRI
[ 16.696] Initializing built-in extension DRI2
[ 16.725] (==) AIGLX enabled
[ 16.725] Loading extension GLX
[ 18.120] (II) AIGLX: Screen 0 is not DRI2 capable
[ 18.120] (II) AIGLX: Screen 0 is not DRI capable
[ 18.144] (II) AIGLX: Loaded and initialized swrast
[ 18.144] (II) GLX: Initialized DRISWRAST GL provider for screen 0
最后一个尤其有趣,因为系统 B 显然无法初始化正确的 DRI 支持。所有这些都告诉我 B 上缺少了一些东西。我不认为所有这些差异都是由使用两个不同的显卡引起的,所以我怀疑我需要在 B 上安装其他驱动程序。也许是系统 A (i915) 使用的那个?
答案1
我几乎立即发现了你的问题:
gma500
按照此维基百科文章关于gma500模块,很明显该芯片缺乏硬件加速:
不幸的是,Linux 上对这种硬件的支持极其有限。有几种驱动程序,但都缺少某些基本功能,例如未来和当前维护或对暂停和硬件加速的支持。
通过使用 llvm 或更像软件光栅化器,可以确认这一点:
OpenGL 渲染器字符串:llvmpipe 上的 Gallium 0.4(LLVM 0x301)
较新的 gma500_glx 也不支持此功能:
gma500_gfx 尚不支持 3d 图形,并且尚不清楚将来是否会支持。
您可以使用 查看有关模块的详细信息modinfo gma500
。虽然我认为它应该在您的系统中被调用gma500_gfx
,这很奇怪(但无关紧要)。无论如何,您的驱动程序也不支持 mesa,在 GNU/Linux 中,mesa 是硬件加速的圣地(因此所有 glx 测试)。希望这能解决您的所有疑问。
读起来有趣:
没什么实际问题,只是一些相当古老的非硬件加速故障排除问题。