_Most of the OpenCL examples run without errors and are very helpful in the learning process. However, when I run SimpleGL (and others that use OpenGL) they fail with an error. For example, here is SimpleGL:
____________________
cad@cad-ubuntu:/opt/AMDAPP/samples/opencl/bin/x86_64$ ./SimpleGL
Platform 0 : Advanced Micro Devices, Inc.
Platform found : Advanced Micro Devices, Inc.
Selected Platform Vendor : Advanced Micro Devices, Inc.
Device 0 : Barts Device ID is 0x1f51ba0
Number of displays 1
glXCreateContextAttribsARB 0x7f7010f38610
Number of interoperable devices 1
Interop Device ID is 0x1f51ba0
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
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
______________________
Here it is with "verbose" turned on:
______________________
cad@cad-ubuntu:/opt/AMDAPP/samples/opencl/bin/x86_64$ LIBGL_DEBUG=verbose ./SimpleGL
ukiDynamicMajor: found major device number 249
ukiDynamicMajor: found major device number 249
ukiOpenDevice: open result is 6, (OK)
ukiGetBusid returned 'PCI:1:0:0'
...skipping many lines...
Selected Platform Vendor : Advanced Micro Devices, Inc.
Device 0 : Barts Device ID is 0x268dba0
Number of displays 1
libGL: AtiGetClientDriverName: 12.10.5 fglrx (screen 0)
libGL: OpenDriver: trying /usr/lib/fglrx/dri/fglrx_dri.so
ukiDynamicMajor: found major device number 249
ukiDynamicMajor: found major device number 249
ukiOpenByBusid: Searching for BusID PCI:1:0:0
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 9, (OK)
ukiOpenByBusid: ukiOpenMinor returns 9
ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
glXCreateContextAttribsARB 0x7f4ac44f6610
Number of interoperable devices 1
Interop Device ID is 0x268dba0
libGL: screen 0 does not appear to be DRI2 capable
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/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/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
_________________________
Before I get much further, here is more info on my system:
_________________________
cad@cad-ubuntu:/$ clinfo
Number of platforms: 1
Platform Profile: FULL_PROFILE
Platform Version: OpenCL 1.2 AMD-APP (1113.2)
Platform Name: AMD Accelerated Parallel Processing
Platform Vendor: Advanced Micro Devices, Inc.
Platform Extensions: cl_khr_icd cl_amd_event_callback cl_amd_offline_devices
Platform Name: AMD Accelerated Parallel Processing
Number of devices: 2
Device Type: CL_DEVICE_TYPE_GPU
Device ID: 4098
Board name: AMD Radeon HD 6800 Series
Device Topology: PCI[ B#1, D#0, F#0 ]
Max compute units: 14
...skipping many lines...
Name: | AMD Phenom(tm) II X6 1100T Processor |
Vendor: | AuthenticAMD |
Device OpenCL C version: | OpenCL C 1.2 |
Driver version: | 1113.2 (sse2) |
Profile: | FULL_PROFILE |
Version: | OpenCL 1.2 AMD-APP (1113.2) |
Extensions: | cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_device_fission cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt |
cad@cad-ubuntu:/$ glxinfo
name of display:
display: screen: 0
direct rendering: Yes
server glx vendor string: ATI
server glx version string: 1.4
cad@cad-ubuntu:/$ fglrxinfo
display: screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon HD 6800 Series
OpenGL version string: 4.2.12172 Compatibility Profile Context 9.012
cad@cad-ubuntu:/$ ldconfig -p | grep GL
libQtOpenGL.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4
libQtOpenGL.so.4 (libc6) => /usr/lib/i386-linux-gnu/libQtOpenGL.so.4
libQtOpenGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so
libGLU.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLU.so.1
libGLU.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGLU.so.1
libGLU.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLU.so
libGLU.so (libc6) => /usr/lib/i386-linux-gnu/libGLU.so
libGLEWmx.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.8
libGLEWmx.so.1.5 (libc6,x86-64) => /usr/lib/libGLEWmx.so.1.5
libGLEW.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.8
libGLEW.so.1.5 (libc6,x86-64) => /usr/lib/libGLEW.so.1.5
libGLEW.so (libc6,x86-64) => /opt/AMDAPP/lib/x86_64/libGLEW.so
libGLEW.so (libc6) => /opt/AMDAPP/lib/x86/libGLEW.so
libGL.so.1 (libc6,x86-64) => /usr/lib/fglrx/libGL.so.1
libGL.so.1 (libc6) => /usr/lib32/fglrx/libGL.so.1
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64) => /usr/lib/fglrx/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1
cad@cad-ubuntu:/$ find / -name 'libGL*'
...skipping over a few lines...
/usr/lib/libGLEW.so.1.5
/usr/lib/libGLEWmx.so.1.5
/usr/lib/fglrx/libGL.so.1.2
/usr/lib/fglrx/libGL.so.1
/usr/lib/fglrx/libGL.so
/usr/lib/libGLEWmx.so.1.5.2
/usr/lib/libGLEW.so.1.5.2
/usr/lib/i386-linux-gnu/libGLU.so.1.3.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/i386-linux-gnu/libGLU.so.1
/usr/lib/i386-linux-gnu/libGLU.so
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.8
/usr/lib/x86_64-linux-gnu/libGLU.a
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.8.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.8.0
/usr/lib/x86_64-linux-gnu/libGLU.so
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.8
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib32/fglrx/libGL.so.1.2
/usr/lib32/fglrx/libGL.so.1
_________________________________
The environment variable as set by /etc/X11/Xsessions.d/10fglrx yields:
cad@cad-ubuntu:/$ echo $LIBGL_DRIVERS_PATH
/usr/lib/fglrx/dri:/usr/lib/x86_64-linux-gnu/dri:/usr/lib/dri:/usr/lib32/fglrx/dri:/usr/lib/i386-linux-gnu/dri
__________________________________
I went through the "Samples Release Notes," i.e. the "Important Notes" and the "Known Issues" to make sure that the appropriate simlinks existed. In doing so, I noticed that the fglrx-libGL.so files no longer exist. I first installed the AMD APP a couple of months ago, and recall that those files existed. I realized that the fglrx-installer on Linux had updated the system to the newest AMD driver, so I "unistalled" and "installed" AMD APP as per the instructions contained in the "Installation Notes." No errors during installation and it seems to work except for the noted problem with SimpleGL.
My system is Ubuntu 13.04 Raring x86_64 with the xorg-edgers PPA.
Perhaps my problem is an error in my simlinks? Note that when ./SimpleGL tries to run it cannot find the swrast_dri.so library, yet they are there in the path defined by LIBGL_DRIVERS_PATH.
_____________________________
cad@cad-ubuntu:/$ sudo find / -name 'swrast*'
/usr/lib/i386-linux-gnu/dri/swrast_dri.so
/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
____________________________
I did not see that others were having this problem. Any help would be appreciated to solve this dilemma. Thanks.
Craig
Can you run "ldd" on simpleGL executable so that we know which GL library is actually loaded?
Himanshu, good point. Here it is:
cad@cad-ubuntu:/opt/AMDAPP/samples/opencl/bin/x86_64$ ldd ./SimpleGL
linux-vdso.so.1 => (0x00007fff881ee000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd78efbf000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd78edbb000)
libglut.so => /opt/AMDAPP/lib/x86_64/libglut.so (0x00007fd78eb76000)
libGLEW.so => /opt/AMDAPP/lib/x86_64/libGLEW.so (0x00007fd78e923000)
libGL.so.1 => /usr/lib/fglrx/libGL.so.1 (0x00007fd78e71b000)
libGLU.so.1 => /usr/lib/x86_64-linux-gnu/libGLU.so.1 (0x00007fd78e49b000)
libOpenCL.so.1 => /opt/AMDAPP/lib/x86_64/libOpenCL.so.1 (0x00007fd78e295000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd78df92000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd78dc8c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd78da76000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd78d6ae000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fd78d373000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd78f209000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fd78d161000)
libXmu.so.6 => /usr/lib/x86_64-linux-gnu/libXmu.so.6 (0x00007fd78cf48000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007fd78cd38000)
libatiuki.so.1 => /usr/lib/fglrx/libatiuki.so.1 (0x00007fd78cc1e000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fd78c9ff000)
libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00007fd78c799000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fd78c595000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fd78c38e000)
libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007fd78c186000)
libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007fd78bf6a000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fd78bd64000)
___________________
Craig
libglut and libGLEW are linked correctly.
I think it is a DRI problem. I would guess that you will not be able to run any other OpenGL programs as well.
Can you confirm?
I think you might be missing to install some libraries. Just google around on your error message, you should be able to find it.
I dont think this is an APP SDK issue -- though ,I am very much open to admit that there could be a bug in APP SDK.
Request you to run other OpenGL app and confirm that only simpleGL is having this problem.
Good luck!
This might help you. This excerpt is from AMD Samples release guide. Just make sure your soft-links are pointing to the right .so files.
"If GL samples fail on Linux, ensure that the libGL.so.1 file is linked to fglrx-libGL.so.1.2,
which for Ubuntu is found in /usr/lib/fglrx/ and /usr/lib32/fglrx/, or for RHEL is found
in /usr/lib64/fglrx/ . The sample fails when linked to /usr/lib/x86_64-linux-
gnu/mesa/libGL.so.1, /usr/lib/i386-linux-gnu/mesa/libGL.so.1 in Ubuntu or
/usr/lib/libGL.so.1, /usr/lib64/libGL.so.1 in RHEL. For more details, see:
http://phoronix.com/forums/showthread.php?7351-Does-fglrx-s-libGL-so-1-2-have-wrongsoname
_Himanshu,
You make a good point -- and the previous night I was successful at fixing the problem by replacing the symbolic link that was pointing to the mesa/libGL.so.1 file -- however, it was not quite that clear. As I had mentioned in my original forum question, I had already considered the AMD Samples Release Notes and thought that I was good. As mentioned there, I had gone through this on a previous installation of AMD APP where the files mentioned actually exited. But now, the libGL entries are looking slightly different.
Here is what I looked at, and that led me to make the symlink change. Recall my previous reply where the "ldd ./SimpleGL" is listed and now consider the following:
____________________
cad@cad-ubuntu:/$ which glxinfo
/usr/bin/glxinfo
cad@cad-ubuntu:/$ cd usr/bin
cad@cad-ubuntu:/usr/bin$ ldd ./glxinfo
linux-vdso.so.1 => (0x00007ffffcbfe000)
libGL.so.1 => /usr/lib/fglrx/libGL.so.1 (0x00007fe9d923d000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe9d8f03000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe9d8b3a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe9d891d000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fe9d870b000)
libatiuki.so.1 => /usr/lib/fglrx/libatiuki.so.1 (0x00007fe9d85f0000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe9d83d2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe9d81ce000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe9d9470000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe9d7fc9000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fe9d7dc3000)
___________________
...and this...
___________________
cad@cad-ubuntu:/usr/bin$ which fglrxinfo
/usr/bin/fglrxinfo
cad@cad-ubuntu:/usr/bin$ ldd fglrxinfo
linux-vdso.so.1 => (0x00007fff69bfe000)
libGL.so.1 => /usr/lib/fglrx/libGL.so.1 (0x00007f3dbdfdf000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f3dbdca5000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f3dbda92000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3dbd6ca000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3dbd4ad000)
libatiuki.so.1 => /usr/lib/fglrx/libatiuki.so.1 (0x00007f3dbd392000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f3dbd174000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3dbcf70000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3dbe212000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f3dbcd6b000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f3dbcb65000)
_____________________
They both point to the location of the libGL.so.1 and in all instances this points to libGL.so.1.2.0, which is the ATI accelerated version of libGL according to each time I run fglrxinfo and glxinfo.
Unfortunately, I did not copy the terminal text prior to my fix but it was a symbolic link in:
/usr/lib/x86_64-linux-gnu/libGL.so ----> mesa/libGL.so
I replaced this link with one pointing to the /usr/lib/fglrx/libGL.so library. So while in the /usr/lib/x86_64-linux-gnu directory:
sudo ln -s ../fglrx/libGL.so libGL.so
...and, to be a bit redundant...
sudo ln -s ..fglrx/libGL.so.1 libGL.so.1
yielding:
___________________
cad@cad-ubuntu:/usr/lib/x86_64-linux-gnu$ ls -l | grep libGL
lrwxrwxrwx 1 root root 18 Nov 12 04:43 libGLEWmx.so.1.8 -> libGLEWmx.so.1.8.0
-rw-r--r-- 1 root root 460728 Nov 12 04:43 libGLEWmx.so.1.8.0
lrwxrwxrwx 1 root root 16 Nov 12 04:43 libGLEW.so.1.8 -> libGLEW.so.1.8.0
-rw-r--r-- 1 root root 513984 Nov 12 04:43 libGLEW.so.1.8.0
lrwxrwxrwx 1 root root 17 Feb 25 22:54 libGL.so -> ../fglrx/libGL.so
lrwxrwxrwx 1 root root 19 Feb 25 22:55 libGL.so.1 -> ../fglrx/libGL.so.1
-rw-r--r-- 1 root root 1083112 Sep 18 01:21 libGLU.a
lrwxrwxrwx 1 root root 15 Sep 18 01:21 libGLU.so -> libGLU.so.1.3.1
lrwxrwxrwx 1 root root 15 Sep 18 01:21 libGLU.so.1 -> libGLU.so.1.3.1
-rw-r--r-- 1 root root 518864 Sep 18 01:21 libGLU.so.1.3.1
___________________
...since, in the /usr/lib/fglrx everything points to the ATI driver libGL.so.1.2
___________________
cad@cad-ubuntu:/usr/lib/fglrx$ ls -l | grep libGL
lrwxrwxrwx 1 root root 12 Feb 25 21:14 libGL.so -> libGL.so.1.2
lrwxrwxrwx 1 root root 12 Feb 19 04:08 libGL.so.1 -> libGL.so.1.2
-rw-r--r-- 1 root root 943144 Feb 19 04:08 libGL.so.1.2
-rwxr-xr-x 1 root root 9355 Jan 20 2012 switchlibGL
___________________
I now have the following links:
____________________
cad@cad-ubuntu:/opt/AMDAPP/samples/opencl/bin/x86_64$ sudo ldconfig -p | grep libGL
libGLU.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLU.so.1
libGLU.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGLU.so.1
libGLU.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLU.so
libGLU.so (libc6) => /usr/lib/i386-linux-gnu/libGLU.so
libGLEWmx.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.8
libGLEWmx.so.1.5 (libc6,x86-64) => /usr/lib/libGLEWmx.so.1.5
libGLEW.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.8
libGLEW.so.1.5 (libc6,x86-64) => /usr/lib/libGLEW.so.1.5
libGLEW.so (libc6,x86-64) => /opt/AMDAPP/lib/x86_64/libGLEW.so
libGLEW.so (libc6) => /opt/AMDAPP/lib/x86/libGLEW.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6,x86-64) => /usr/lib/fglrx/libGL.so.1
libGL.so.1 (libc6) => /usr/lib32/fglrx/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64) => /usr/lib/fglrx/libGL.so
libGL.so (libc6) => /usr/lib32/fglrx/libGL.so
___________________
...and all of the x86_64 OpenCL/OpenGL examples work:
___________________
cad@cad-ubuntu:/opt/AMDAPP/samples/opencl/bin/x86_64$ ls | grep GL
BoxFilterGL
BoxFilterGL_Input.bmp
BoxFilterGL_Kernels.cl
GaussianNoiseGL
GaussianNoiseGL_Input.bmp
GaussianNoiseGL_Kernels2.cl
GaussianNoiseGL_Kernels.cl
SimpleGL
SimpleGL.bmp
SimpleGL_Kernels.cl
URNGNoiseGL
URNGNoiseGL_Input.bmp
URNGNoiseGL_Kernels.cl
_____________________
PS: I just checked the operation of the x86 examples and there is a problem:
_____________________
cad@cad-ubuntu:/opt/AMDAPP/samples/opencl/bin/x86$ ./SimpleGL
./SimpleGL: error while loading shared libraries: libXmu.so.6: cannot open shared object file: No such file or directory
____________________
...so a new problem to solve.
this is old problem when all OpenGL interoperability examples open for some reason libGL.so from mesa. workaround is set LD_LIBRARY_PATH=/usr/lib/fglrx or make symlink in /usr/lib
this is old problem when all OpenGL interoperability examples open for some reason libGL.so from mesa. workaround is set LD_LIBRARY_PATH=/usr/lib/fglrx or make symlink in /usr/lib
Install ia32-libs package. (sudo apt-get install ia32-libs)
Also check you take the following .so from these paths only: /usr/lib/i386-linux-gnu/libGLU.so.1 & /usr/lib32/fglrx/fglrx-libGL.so.1.2
Message was edited by: Himanshu Gautam