Ubuntu 12.10 OpenCL OpenGL 与 ATI 图形的互操作

bkl*_*org 6 xorg ati opengl opencl drivers

我已在运行于 Ubuntu 12.10 的 ATI 混合图形系统上成功安装了 ATI Catalyst 驱动程序。我已经验证 OpenCL 和 OpenGL 独立工作;但是 OpenCL-OpenGL 互操作无法正常运行。我已经做了一些调试,但不知道从哪里开始。任何人都可以帮忙吗?

细节:

我的系统是运行 Ubuntu 12.10(应用所有更新)的 HP Envy 6,带有由 Radeon 7600m 和 Intel HD3000 组成的 ATI 混合图形系统。我按照以下说明安装了最新的 ATI Beta 驱动程序 (v. 12.11):

如何让 AMD/Intel 混合显卡驱动程序工作?

这样做我能够使 OpenGL 和 OpenCL 运行。 glxgears以 ~1200 fps 运行,并且 AMD APP SDK 功能中的所有 OpenCL-only 示例都按预期运行。但是,任何 OpenCL-OpenGL 互操作应用程序都无法启动X Error of failed request: BadMatch (invalid parameter attributes)错误。所有示例代码以前都在 Ubuntu 12.04 下使用包管理器 ATI 驱动程序运行。

为了获得更多调试信息,我运行了LIBGL_DEBUG=verbose /opt/AMDAPP/samples/opencl/bin/x86_64/SimpleGL. 这会检测到我的独立 GPU,似乎选择了正确的驱动程序,并检测到 OpenCL-OpenGL 互操作已启用:

$ LIBGL_DEBUG=verbose ./SimpleGL
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 7, (OK)
ukiGetBusid returned 'PCI:1:0:0'
ukiOpenDevice: node name is /dev/ati/card1
ukiOpenDevice: UKI_ERR_NOT_ROOT
...
ukiOpenDevice: node name is /dev/ati/card15
ukiOpenDevice: UKI_ERR_NOT_ROOT
ukiDynamicMajor: found major device number 250
ukiOpenByBusid: Searching for BusID PCI:1:0:0
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 7, (OK)
ukiOpenByBusid: ukiOpenMinor returns 7
ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiOpenByBusid: Searching for BusID PCI:1:0:0
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 7, (OK)
ukiOpenByBusid: ukiOpenMinor returns 7
ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
Platform 0 : Advanced Micro Devices, Inc.
Platform found : Advanced Micro Devices, Inc.

Selected Platform Vendor : Advanced Micro Devices, Inc.
Device 0 : Turks Device ID is 0x1a16b40
Number of displays 1
libGL: AtiGetClientDriverName: 9.1.11 fglrx (screen 0)
libGL: OpenDriver: trying /usr/lib/fglrx/dri/fglrx_dri.so
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiOpenByBusid: Searching for BusID PCI:1:0:0
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 10, (OK)
ukiOpenByBusid: ukiOpenMinor returns 10
ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
glXCreateContextAttribsARB 0x7f4e05938280
Number of interoperable devices 1
Interop Device ID is 0x1a16b40
libGL: OpenDriver: trying /usr/lib/fglrx/dri/tls/i965_dri.so
libGL: OpenDriver: trying /usr/lib/fglrx/dri/i965_dri.so
libGL error: dlopen /usr/lib/fglrx/dri/i965_dri.so failed     (/usr/lib/fglrx/dri/i965_dri.so: cannot open shared object file: No such file or     directory)
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/tls/i965_dri.so
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/i965_dri.so
libGL error: dlopen /usr/lib32/fglrx/dri/i965_dri.so failed     (/usr/lib32/fglrx/dri/i965_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL: OpenDriver: trying /usr/lib/fglrx/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/fglrx/dri/swrast_dri.so
libGL error: dlopen /usr/lib/fglrx/dri/swrast_dri.so failed (/usr/lib/fglrx/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/swrast_dri.so
libGL error: dlopen /usr/lib32/fglrx/dri/swrast_dri.so failed (/usr/lib32/fglrx/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  155 (GLX)
  Minor opcode of failed request:  5 (X_GLXMakeCurrent)
  Serial number of failed request:  28
  Current serial number in output stream:  28
Run Code Online (Sandbox Code Playgroud)

我不知道从这里去哪里。这可能是已知的 ATI Ubuntu 12.10 问题或新问题的遗留问题。有人有什么建议吗?

bkl*_*org 5

好的。想通了(至少在我的情况下)。链接器找不到libGL.soin 中的文件/usr/lib/fglrx。添加

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/fglrx
Run Code Online (Sandbox Code Playgroud)

到我的~/.bashrc(或~/.profile)使它工作。但这不应该是必需的,因为驱动程序安装程序会添加/usr/lib/fglrx/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf文件中。

编辑注意:我之前的帖子将此错误归咎于肉桂(错误 1483);然而,这是不正确的。记录的解决方案是正确的。