it-swarm.com.de

Ubuntu 12.10 OpenCL OpenGL Interop mit ATI-Grafiken

Ich habe die ATI Catalyst-Treiber erfolgreich auf einem ATI-Hybrid-Grafiksystem unter Ubuntu 12.10 installiert. Ich habe überprüft, dass OpenCL und OpenGL unabhängig voneinander funktionieren. OpenCL-OpenGL-Interop funktioniert jedoch nicht richtig. Ich habe ein paar Fehler behoben, bin mir aber nicht sicher, wohin ich von hier aus gehen soll. Kann jemand helfen?

Einzelheiten:

Mein System ist ein HP Envy 6 mit Ubuntu 12.10 (alle Updates angewendet) und einem ATI-Hybrid-Grafiksystem, das aus einer Radeon 7600m und Intel HD3000 besteht. Ich habe die neuesten ATI Beta-Treiber (Version 12.11) wie folgt installiert:

Wie bekomme ich AMD/Intel Hybrid Graphics-Treiber zum Laufen?

Auf diese Weise konnte ich OpenGL und OpenCL in Betrieb nehmen. glxgears wird mit ~ 1200 fps ausgeführt und alle OpenCL-only-Beispiele im AMD APP SDK funktionieren wie erwartet. OpenCL-OpenGL-Interop-Anwendungen können jedoch nicht mit dem Fehler X Error of failed request: BadMatch (invalid parameter attributes) gestartet werden. Der gesamte Beispielcode funktionierte zuvor unter Ubuntu 12.04 mit den ATI-Treibern von Package Manager.

Um ein wenig mehr Debugging-Informationen zu erhalten, habe ich LIBGL_DEBUG=verbose /opt/AMDAPP/samples/opencl/bin/x86_64/SimpleGL ausgeführt. Dies erkennt meine diskrete GPU, scheint die richtigen Treiber auszuwählen und erkennt, dass OpenCL-OpenGL-Interop aktiviert ist:

$ 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

Ich bin mir nicht sicher, wohin ich von hier aus gehen soll. Dies könnte entweder ein anhaltendes Problem mit den bekannten ATI Ubuntu 12.10-Problemen sein oder etwas Neues. Hat jemand irgendwelche Vorschläge?

6
bkloppenborg

Okay. Hat es herausgefunden (zumindest in meinem Fall). Die libGL.so -Datei in /usr/lib/fglrx wird vom Linker nicht gefunden. Hinzufügen

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

bei meinem ~/.bashrc (oder ~/.profile) hat es funktioniert. Dies sollte jedoch nicht erforderlich sein, da das Treiberinstallationsprogramm /usr/lib/fglrx zur Datei /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf hinzufügt.

Anmerkung BEARBEITEN: Mein vorheriger Beitrag gab Cinnamon die Schuld an diesem Fehler ( Fehler 148 ); Dies war jedoch falsch. Die dokumentierte Lösung ist korrekt.

5
bkloppenborg