After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 730231 - gl*: No libGLU with NVIDIA binary drivers
gl*: No libGLU with NVIDIA binary drivers
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal blocker
: 1.3.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-05-16 05:00 UTC by Robert Swain
Modified: 2014-06-04 09:17 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Robert Swain 2014-05-16 05:00:23 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.
Comment 1 Matthew Waters (ystreet00) 2014-05-22 08:03:37 UTC
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.
Comment 2 Robert Swain 2014-05-22 08:05:35 UTC
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.
Comment 3 Nicolas Dufresne (ndufresne) 2014-05-29 13:38:32 UTC
It seems to crash with all setup using proprietary NVidia driver. Marking as blocker as eglglessink worked here.
Comment 4 Edward Hervey 2014-05-29 13:40:27 UTC
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
  • #0 poll
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 g_main_context_poll
  • #2 g_main_context_iterate
  • #3 g_main_loop_run
    at gmain.c line 3907
  • #4 gst_bus_poll
  • #5 event_loop
  • #6 main

Comment 5 Edward Hervey 2014-05-29 13:43:54 UTC
The other threads :

Thread 4 (Thread 0x7f08a1211700 (LWP 24682))

  • #0 nanosleep
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 g_usleep
    at gtimer.c line 261
  • #2 fault_spin
    at gst-launch.c line 109
  • #3 fault_handler_sighandler
    at gst-launch.c line 90
  • #4 <signal handler called>
  • #5 glOrtho
    from /usr/lib64/nvidia/libGL.so.1
  • #6 gst_glimage_sink_on_resize
    at gstglimagesink.c line 1020
  • #7 gst_gl_window_x11_handle_event
    at gstglwindow_x11.c line 530
  • #8 x11_event_source_dispatch
    at x11_event_source.c line 70
  • #9 g_main_dispatch
    at gmain.c line 3066
  • #10 g_main_context_dispatch
    at gmain.c line 3642
  • #11 g_main_context_iterate
    at gmain.c line 3713
  • #12 g_main_loop_run
    at gmain.c line 3907
  • #13 gst_gl_context_create_thread
    at gstglcontext.c line 878
  • #14 g_thread_proxy
    at gthread.c line 798
  • #15 start_thread
    at pthread_create.c line 309
  • #16 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 111

Comment 6 Matthew Waters (ystreet00) 2014-05-29 13:46:08 UTC
Works fine here.  Where does the libGL.so symlink point to ?
Comment 7 Edward Hervey 2014-05-29 13:48:31 UTC
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
Comment 8 Matthew Waters (ystreet00) 2014-05-29 13:50:09 UTC
That's not what the gst log says:

> gstglcontext.c:645:_create_context_opengl: GL_VERSION: 2.1 Mesa 10.1.4
Comment 9 Edward Hervey 2014-05-29 14:04:31 UTC
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).
Comment 10 Sebastian Dröge (slomo) 2014-05-29 16:20:09 UTC
Rob, are Edward's fixes also working for you?
Comment 11 Robert Swain 2014-05-29 21:21:07 UTC
I'll check on Monday.
Comment 12 Robert Swain 2014-06-04 09:17:48 UTC
gltestsrc ! glimagesink works fine for me now. Thanks for the fix! :)