xorg - IntelSandyBridge 上的 "X Error"BadAlloc GLX BadContext(Intel HD Graphics 3000)

标签 xorg bad-alloc glx backport mesa

我正在运行 debian stable ThinkPad X1 (1294-3QG),其中包含 GraphicsModi 所需的 squeeze-backports 中的三个软件包:

initramfs-tools 0.99~bpo60+1
linux-base 3.4~bpo60+1
linux-image-3.2.0-0.bpo.2-amd64 3.2.9-1~bpo60

在运行该内核时,启动例如 paraview 会导致这些错误:

Unrecognized deviceID 126
X Error: BadAlloc (insufficient resources for operation) 11
  Extension:    154 (Uknown extension)
  Minor opcode: 3 (Unknown request)
  Resource id:  0x3200273
X Error: GLXBadContext 169
  Extension:    154 (Uknown extension)
  Minor opcode: 5 (Unknown request)
  Resource id:  0x32002b0
paraview: ../../src/xcb_io.c:183: process_responses: Zusicherung »!(req && current_request && !(((long) (req->sequence) - (long) (current_request)) <= 0))« nicht erfüllt.

在网上的某个地方,我发现了在xorg.conf中提供内存设置的提示,但这并没有解决我的问题。
在当前稳定的内核中启动工作正常。

运行glxgears结果类似:

Unrecognized deviceID 126
X Error of failed request:  BadAlloc (insufficient resources for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Serial number of failed request:  27
  Current serial number in output stream:  29

我进一步尝试通过更新xserver-xorg-video-intel(以及所有依赖项libdrm-intel1 libxfont1、xserver-common、xserver-xorg、xserver-xorg -core、xserver-xorg-input-evdev、xserver-xorg-video-fbdevxserver-xorg-video-vesa)向后移植,但这并不繁荣。

另外,我找到了该条目

[drm] MTRR allocation failed.  Graphics performance may suffer.

dmesg的输出中。

最佳答案

我在运行 Debian Stable 6.0.4 (squeeze) x64 的 Intel i7 2700k(具有 Intel HD 3000)的自制服务器工作站上遇到了同样的问题。基本上我知道这个平台在 UNIX 系统上有很多问题(就像英特尔 GPU 一贯做的那样),但它的目的是服务器,所以板载图形对此足够公平。无论如何,我希望有一天能运行一次(在通过 HDMI*/VGA 连接的电视上),所以我安装了 gnome-core 和 gdm3 来手动运行。

使用内核 2.6.32-5-amd64,一切都非常好,除了一些事情,这迫使我升级内核:

  • SSD 支持(从 linux-image-2.6.33 添加和改进)
  • HDMI - 未识别任何设备,无法添加和更改分辨率 (cvt xrandr)。

所以我将squeeze-backports添加到sources.list并仅升级内核(与您所做的相同)。

之后 HDMI 连接效果很好,但我注意到刷新率很慢 - 在加载 gdm3 登录屏幕期间及之后出现撕裂。我检查了 dmesg 和内核消息以获取一些信息

  • 猫 dmesg | grep 失败 && cat dmesg | grep drm && cat/var/log/messages | grep drm && cat/var/log/messages | grep drm && cat/var/log/messages grep 失败 && cat/var/log/messages | grep drm - 发现相同。我运行 glxgears 并发现同样的错误。

在一些解决方案和想法之后,我花了几天时间进行挖掘。 发现许多关于分配 RAM(enable_mtrr_cleanup)等无用的东西。 基本上,对于我几乎没有的电影需求来说,这不是悲剧,但我喜欢一切都很完美,所以我仍在努力修复它。

最后!解决了!问题不在于 RAM 或新内核本身。

我必须在这里提到,我自己编译了 Debian 内核 - 3.2,基于之前安装的设置。

  • 我还删除了我的架构中所有不需要的库(即 nvidia radeon 和其他库的 libdrm - 甚至 VESA!!!)

我添加了一会儿喘息(测试)存储库,升级并安装了具有 root 依赖项的新软件包(仅此一个):

  • 回声德布http://ftp.pl.debian.org/debian/测试主要贡献非免费 >>/etc/apt/sources.list
  • apt-get 更新
  • apt-get install --reinstall -t 测试 libdrm2 libdrm-intel1 xserver-xorg-video-intel xserver-xorg-core libgl1-mesa-glx libgl1-mesa-dri mesa-utils
  • dpkg-重新配置 xserver-xorg

这解决了英特尔 GPU 上渲染和分配的所有问题:)

我认为它应该适合您和每个拥有 Intel GPU 的人。完成后,不要忘记从sources.list 中删除wheeze(测试)。

问候,T_Send。

关于xorg - IntelSandyBridge 上的 "X Error"BadAlloc GLX BadContext(Intel HD Graphics 3000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9769613/

相关文章:

linux - 将 super 键映射到 xorg.conf 中的控件?

javascript - X11 xorg Electron App 无法全屏打开

c++ - C++中的X11-调整窗口大小时只要设置ResizeRedirectMask,就会发生裁剪

c++ - 如果 new 抛出 std::bad_alloc 是否会将指针设置为 NULL?

c++ - 如何链接GLX?

c - 找不到 glXCreateContextAttribsARB(在 OpenGL 4.2 驱动程序、GLX 1.4 上)

linux - 为什么在我绘制到根窗口后 X 会卡住

c++ - 分配新 vector 时的 std::bad_alloc - 我能做什么

opengl - glXCreateContext 神奇地映射窗口

C++ : terminate called after throwing an instance of 'std::bad_alloc' while computing length of big strings