Opened 16 years ago
Closed 16 years ago
#4064 closed defect (fixed)
NVidia OpenGL undefined reference to glXGetProcAddress in SVN14639
Reported by: | Owned by: | danielk | |
---|---|---|---|
Priority: | minor | Milestone: | 0.21.1 |
Component: | mythtv | Version: | head |
Severity: | medium | Keywords: | NVidia glXGetProcAddress opengl |
Cc: | Ticket locked: | no |
Description
On my highly modified FC1 system with a 2.4.22 kernel and nvidia 6111 video drivers where I've been running svn builds on a regular basis, I get a compile error with svn 14639:
ccache g++ -o mythtv main.o -L/usr/lib/qt-3.3/lib -L../../libs/libmyth -L../../libs/libmythtv -L../../libs/libavutil -L../../libs/libavcodec -L../../libs/libavformat -L../../libs/libmythfreemheg -L../../libs/libmythui -L../../libs/libmythupnp -L../../libs/libmythlivemedia -lmythtv-0.20 -lmythavformat-0.20 -lmythavutil-0.20 -lmythavcodec-0.20 -lmythfreemheg-0.20 -lmythupnp-0.20 -lmythlivemedia-0.20 -lmyth-0.20 -lmythui-0.20 -lfreetype -lmp3lame -lasound -L/usr/lib -lartsc -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lraw1394 -liec61883 -lavc1394 -lrom1394 -ldirectfb -lfusion -ldirect -lz -ldl -L/usr/X11R6/lib -lXinerama -lXv -lXxf86vm -lXrandr -lXvMCW -lXvMC -lqt-mt -lGLU -lGL -lXmu -lXext -lX11 -lm -lpthread ../../libs/libmythtv/libmythtv-0.20.so: undefined reference to `glXGetProcAddress'
After some googling, I found this, wich suggests the solution -- I just don't know where in the code this change needs to be made to test it.
http://www.nvnews.net/vbulletin/showthread.php?t=15297 Thread summary:
Problem: undefined reference to 'glXGetProcAddress()' with Nvidia OpenGL shared libraries
Solution: define GLX_GLXEXT_LEGACY to make the prototype for glXGetProcAddressARB() visible to the application, and use glXGetProcAddressARB instead of glXGetProcAddress
Attachments (1)
Change History (9)
comment:1 Changed 16 years ago by
Owner: | changed from Isaac Richards to danielk |
---|---|
Priority: | major → minor |
comment:2 Changed 16 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:3 Changed 16 years ago by
comment:4 Changed 16 years ago by
Resolution: | fixed |
---|---|
Status: | closed → new |
Sadly this bug seems to have reemerged in 0.21 when using legacy nvidia drivers. From backend log on playing tv recorded already:
/usr/bin/mythfrontend.real: symbol lookup error: /usr/lib/libmythtv-0.21.so.0: undefined symbol: glXGetProcAddress
comment:5 Changed 16 years ago by
Note:
(09:19:14) laga: i finally found our bug report.. (09:19:30) laga: danielk22: https://bugs.launchpad.net/ubuntu/+source/mythtv/+bug/201567 (09:19:43) laga: so it happens with version 1.0.7185
comment:6 Changed 16 years ago by
As per the discussion with danielk, here's a small patch which adds a new configure flag: --enable-glx-procaddrarb. If you use this option, glXGetProcAddressARB will be used instead of glXGetProcAddress, effectively disabling auto detection for that. This option is only useful for package maintainers who want their packages to work with Nvidia's legacy driver or for people who need to build against broken Nvidia headers which advertise glXGetProcAddress although they don't support it.
Changed 16 years ago by
Attachment: | glx-procaddressARB-configure.diff added |
---|
comment:7 Changed 16 years ago by
(In [16877]) Refs #4064. Adds ability to create a special backward compatible MythTV get_gl_proc_address() on distros whose drivers all support glXGetProcAddressARB.
The ./configure option is not printed in help because it allows you to create a MythTV binary which won't run on your computer. But it is available for distro maintainers who wish to create a single binary that works with many GLX libs, which they are responsible for testing for compatibility with glXGetProcAddressARB().
Leaving ticket open for backport.
(In [14643]) Fixes #4064. Backport GLX 1.4 glXGetProcAddress support to 0.20-fixes.
Some GLX headers have removed GLX_ARB_get_proc_address in favor of the new GLX 1.4 glXGetProcAddress call, this backports the construction we use in trunk to use the correct glXGetProcAddress call, trying the GLX 1.4 version first, then the ARB version and finally the original GLX Extension.