web-dev-qa-db-ja.com

Ubuntu 12.10 OpenCL OpenGL InteropとATIグラフィックス

Ubuntu 12.10で実行されているATIハイブリッドグラフィックスシステムにATI Catalystドライバーを正常にインストールしました。 OpenCLとOpenGLが独立して動作することを確認しました。ただし、OpenCL-OpenGL相互運用機能は正しく機能していません。私はいくつかのデバッグを行いましたが、ここからどこに行くべきかわかりません。誰でも助けることができますか?

詳細:

私のシステムは、Radeon 7600mとIntel HD3000で構成されるATIハイブリッドグラフィックスシステムを搭載したUbuntu 12.10(すべての更新プログラムが適用されている)を実行しているHP Envy 6です。次の手順に従って、最新のATI Betaドライバー(v。12.11)をインストールしました。

AMD/Intelハイブリッドグラフィックスドライバーを動作させるにはどうすればよいですか?

これにより、OpenGLとOpenCLが動作可能になりました。 glxgearsは、〜1200 fpsで動作し、AMD APP SDKのOpenCLのみのすべてのサンプルが期待どおりに機能します。ただし、OpenCL-OpenGL相互運用アプリケーションは、X Error of failed request: BadMatch (invalid parameter attributes)エラーで起動に失敗します。これまでのサンプルコードはすべて、パッケージマネージャーATIドライバーを使用してUbuntu 12.04で動作していました。

デバッグ情報をもう少し取得するために、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

ここからどこに行くかわかりません。これは、ATI Ubuntu 12.10の既知の問題の長引く問題か、新しい問題のいずれかです。誰か提案がありますか?

6
bkloppenborg

OK。 (少なくとも私の場合)それを考え出した。 libGL.so/usr/lib/fglrxファイルがリンカーによって見つかりません。追加中

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/fglrx

私の~/.bashrc(または~/.profile)が動作するようにしました。ただし、ドライバーインストーラーは/usr/lib/fglrxファイルに/etc/ld.so.conf.d/x86_64-linux-gnu_GL.confを追加するため、これは必要ありません。

編集注:以前の投稿では、このバグをCinnamonで非難していました( bug 148 );しかし、これは間違っていました。文書化されたソリューションは正しいです。

5
bkloppenborg