GNOME Bugzilla – Bug 730231
gl*: No libGLU with NVIDIA binary drivers
Last modified: 2014-06-04 09:17:48 UTC
It seems that on Linux, the only libGLU available is libglu1-mesa. This does not inter-operate with NVIDIA binary drivers. Therefore it is perhaps a good idea to make GLU optional so that people can use the NVIDIA binary drivers if they wish / need to for performance reasons.
The libGLU from mesa is not mesa specific. It works fine with the NVIDIA binary drivers. IIRC, libGLU simpy calls libGL functions with no dependency on the implementation. However, there is at least one reason we eventually want to drop libGLU as a dependency. It does not interoperate will with GL core contexts (> 3.1) at all.
OK, in that case, there is some fatal crash bug when using libglu1-mesa with nvidia binary drivers on the Linux machine I was running. I will report that soon.
It seems to crash with all setup using proprietary NVidia driver. Marking as blocker as eglglessink worked here.
Some info to help debug this. $ glxinfo name of display: :0 display: :0 screen: 0 direct rendering: Yes server glx vendor string: NVIDIA Corporation server glx version string: 1.4 .... GST_DEBUG=3,*gl*:4 gst-launch-1.0 videotestsrc ! glimagesink Setting pipeline to PAUSED ... 0:00:00.075977174 24552 0xec2a90 INFO gldisplay gstgldisplay.c:127:gst_gl_display_new: creating a display, user choice:(NULL) (platform: (NULL)) Pipeline is PREROLLING ... 0:00:00.078050119 24552 0xd41630 FIXME default gstutils.c:3637:gst_pad_create_stream_id_internal:<videotestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id Got context from element 'glimagesink0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0"; 0:00:00.079307829 24552 0xd41630 INFO glcontext gstglcontext.c:259:gst_gl_context_new: creating a context, user choice:(null) 0:00:00.079515266 24552 0xd41630 INFO glwindow gstglwindow.c:158:gst_gl_window_new: creating a window, user choice:(null) 0:00:00.080586122 24552 0x7fda88002450 INFO glcontext gstglcontext.c:782:gst_gl_context_create_thread: Attempting to create opengl context. user chosen api(s) (any), compiled api support (opengl opengl3) libEGL warning: DRI2: failed to authenticate 0:00:00.098214255 24552 0x7fda88002450 INFO glcontext gstglcontext.c:791:gst_gl_context_create_thread: created context 0:00:00.098559206 24552 0x7fda88002450 INFO glcontext gstglcontext.c:806:gst_gl_context_create_thread: available GL APIs: opengl 0:00:00.100867374 24552 0x7fda88002450 INFO glcontext gstglcontext.c:645:_create_context_opengl: GL_VERSION: 2.1 Mesa 10.1.4 0:00:00.100897188 24552 0x7fda88002450 INFO glcontext gstglcontext.c:647:_create_context_opengl: GL_SHADING_LANGUAGE_VERSION: 1.30 0:00:00.100916450 24552 0x7fda88002450 INFO glcontext gstglcontext.c:648:_create_context_opengl: GL_VENDOR: VMware, Inc. 0:00:00.100932524 24552 0x7fda88002450 INFO glcontext gstglcontext.c:649:_create_context_opengl: GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.4, 128 bits) 0:00:00.101403619 24552 0xd41630 INFO glcontext gstglcontext.c:587:gst_gl_context_create: gl thread created 0:00:00.109432650 24552 0xd41630 INFO glupload gstglupload.c:471:_init_upload: Initializing texture upload for format:I420 0:00:00.109530916 24552 0x7fda88002450 INFO glconvert gstglcolorconvert.c:934:_init_convert: Initializing color conversion from I420 to RGBA 0:00:00.119153953 24552 0x7fda88002450 INFO glconvert gstglcolorconvert.c:1082:_init_convert_fbo: Context, EXT_framebuffer_object supported: yes Caught SIGSEGV
+ Trace 233643
The other threads :
+ Trace 233644
Thread 4 (Thread 0x7f08a1211700 (LWP 24682))
Works fine here. Where does the libGL.so symlink point to ?
backtrace says it's /usr/lib64/nvidia/libGL.so.1 -> libGL.so.331.67 ls -la /usr/lib64/nvidia/libGL.so.331.67 -rwxr-xr-x. 1 root root 1165368 Apr 4 20:43 /usr/lib64/nvidia/libGL.so.331.67
That's not what the gst log says: > gstglcontext.c:645:_create_context_opengl: GL_VERSION: 2.1 Mesa 10.1.4
So in the end it's not quite the same issue as Robert reported I think. Here the problem is that the gst*gl stuff is linked against on libGL.so (the nvidia ones) but at runtime it was dlopen'ing ... another one (nouveau one by looks of things).
Rob, are Edward's fixes also working for you?
I'll check on Monday.
gltestsrc ! glimagesink works fine for me now. Thanks for the fix! :)