OpenGL 在英特尔显卡上以非常低的帧速率运行

OpenGL 在英特尔显卡上以非常低的帧速率运行

我有两个几乎相同但显卡略有不同的系统:

系统A

product: N10 Family Integrated Graphics Controller
vendor: Intel Corporation
driver: i915

系统 B

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 测试)。希望这能解决您的所有疑问。

读起来有趣:

没什么实际问题,只是一些相当古老的非硬件加速故障排除问题。

相关内容