J'ai correctement installé les pilotes ATI Catalyst sur un système graphique hybride ATI fonctionnant sous Ubuntu 12.10. J'ai vérifié qu'OpenCL et OpenGL fonctionnent de manière indépendante; toutefois, l'interopérabilité OpenCL-OpenGL ne fonctionne pas correctement. J'ai fait du débogage, mais je ne sais pas par où aller à partir de maintenant. Quelqu'un peut-il aider?
Détails:
Mon système est un HP Envy 6 exécutant Ubuntu 12.10 (toutes les mises à jour appliquées) avec un système graphique hybride ATI composé d’une Radeon 7600m et d’un Intel HD3000. J'ai installé les derniers pilotes ATI Beta (version 12.11) en suivant ces instructions:
Comment faire fonctionner les pilotes AMD/Intel Hybrid Graphics?
Ce faisant, j'ai pu obtenir OpenGL et OpenCL opérationnels. glxgears
s'exécute à environ 1 200 images par seconde et tous les échantillons OpenCL du programme AMD APP SDK fonctionnent comme prévu. Cependant, les applications d'interopérabilité OpenCL-OpenGL ne parviennent pas à se lancer avec une erreur X Error of failed request: BadMatch (invalid parameter attributes)
. Tous les exemples de code travaillaient précédemment sous Ubuntu 12.04 avec les pilotes ATI du gestionnaire de paquets.
Pour obtenir un peu plus d'informations de débogage, j'ai exécuté LIBGL_DEBUG=verbose /opt/AMDAPP/samples/opencl/bin/x86_64/SimpleGL
. Cela détecte mon GPU discret, semble sélectionner les bons pilotes et détecte que l'interop OpenCL-OpenGL est activé:
$ 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
Je ne suis pas sûr où aller d'ici. Cela pourrait être un problème persistant lié aux problèmes connus d'ATI Ubuntu 12.10 ou quelque chose de nouveau. Quelqu'un a des suggestions?
D'accord. Je l'ai compris (du moins dans mon cas). Le fichier libGL.so
dans /usr/lib/fglrx
n'est pas trouvé par l'éditeur de liens. Ajouter
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/fglrx
à mon ~/.bashrc
(ou ~/.profile
) l'a fait fonctionner. Cela ne devrait cependant pas être nécessaire car le programme d'installation du pilote ajoute /usr/lib/fglrx
au fichier /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf
.
EDIT Note: Mon post précédent a imputé ce bogue à Cinnamon ( bug 148 ); Cependant, c'était incorrect. La solution documentée est correcte.