Wine 不再能够初始化 OpenGL

Wine 不再能够初始化 OpenGL

一段时间以来,wine 无法在我的 64 位 Linux 上初始化 OpenGL。这绝不是我独有的问题 - 许多使用 nvidia 显卡运行 64 位 Linux 的人似乎在 oneiric 上使用 wine 时都遇到了这个问题:

虽然一些启动板错误报告说应该使用这种解决方法:

LD_PRELOAD=/usr/lib32/nvidia-current/libGL.so.1 wine <app>

不幸的是,它根本不能解决我的问题;也就是说,如果我运行 CS:S,游戏会运行一段时间,但一段时间后就会中止,包括一系列与 GLSL 相关的错误。

以下是简单运行 steam 时出现的启动错误:

+ wine steam.exe
fixme:process:GetLogicalProcessorInformation ((nil),0x33e488): stub
[.. snip ...]
fixme:dwmapi:DwmSetWindowAttribute (0x1009a, 3, 0x33d384, 4) stub
fixme:dwmapi:DwmSetWindowAttribute (0x1009a, 4, 0x33d374, 4) stub
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
[... this error is being reported a few dozen times, so snip again ...]
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!
fixme:iphlpapi:NotifyAddrChange (Handle 0x47cdba8, overlapped 0x45dba80): stub
fixme:winsock:WSALookupServiceBeginW (0x47cdbc8 0x00000ff0 0x47cdbc4) Stub!
[... snip ...]

以下是运行时和运行后报告的错误(因为日志很大,所以粘贴在其他地方):http://paste.ubuntu.com/901925/


现在,32 位 OpenGL 运行良好;例如,Nexuiz 的 32 位可执行文件运行良好。话虽如此,我怀疑这是 wine 本身的问题。

我已经手动构建了 wine 的 git 版本,但无济于事。


那么发生了什么事?有什么东西坏了吗?我该如何(正确地)检查是否有东西坏了?我该如何解决这个问题?


附加信息:

  • 我的GPU:

    $ lspci | grep VGA
    01:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 9800 GT] (rev a2)
    
  • 通过 DPKG 安装(使用“Ubuntu X-Swat”PPA:https://launchpad.net/~ubuntu-x-swat/+archive/x-updates)。

  • wine 版本:wine-1.5.0(从 GIT 存储库手动构建,但预构建版本会触发相同的错误,如上所述)

  • 桌面环境:KDE4.2,但在 GNOME 和 XFCE 下也会出现同样的错误。

  • 内核内容(uname -a):Linux leuchtturm 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

  • 尝试了干净的葡萄酒前缀(WINEPREFIX=$HOME/tmp/wine wine ...),也没有帮助。


更多可能相关的信息:

当从我打开的一个旧错误运行 Direct3D 应用程序时,wine 根本没有报告任何 OpenGL 错误:http://bugs.winehq.org/attachment.cgi?id=25707(包含源代码,这只是一个非常简单的测试应用程序)。

我不确定到底发生了什么事。

答案1

好吧,这几乎迫使我回答我自己的问题,但事实证明,OpenGL 错误是相对地无害;升级 ia32-libs[1] 使得 steam 工作得非常顺畅(也就是说,它现在可以像这些错误发生之前一样工作)。

因此,如果其他人遇到这些错误,请升级您的 GPU 驱动程序,并升级 ia32-libs。


[1]:我偶然发现了一个 ia32-libs PPA,它有一个较新的 ia32-libs 包,它也许可以修复一些取决于 32 位兼容性的其他软件的问题:http://radicalbreeze.com/forum/viewtopic.php?f=11&t=525

要添加此 PPA,只需在终端中执行此操作:

sudo add-apt-repository ppa:micove/experimental

experimental因为另一个不包含 oneiric 及更新版本的软件包,尤其是 pangolin)。

相关内容