PDA

View Full Version : Ubuntu 9.10+ qt 4.6 ->Unrecognised OpenGL Version



chenya
03-26-2010, 04:31 AM
I am using qt4.6 (+opengl) to implement a program. I need to test it on different OS.

My application is compiled in OpenSUSE 10.3. The executable is tested on different OS.

Testing on Virtual Machine.
It has problem in Fedora 12 and Ubuntu 9.10. The terminal shows "Unrecognized OpenGL version", and the display is frozen.

Testing with 'real' system Ubuntu 9.10:
some user account works (with OpenGL Version 1.4), others(with OpenGL Version 2.1) not. The terminal shows "Unrecognized OpenGL version", and the display is frozen.

I checked the opengl version on different OS. The OSs which are working have lower opengl version. for example:
OpenSUSE 10.3 32bit: (working well)
server glx version string: 1.2
client glx version string: 1.4
OpenGL version string: 1.4 (2.1 Mesa 7.0.1)

The OS which doesn't work:
Ubuntu 9.10 32bit:
server glx version string: 1.2
client glx version string: 1.4
OpenGL version string: 2.1 ( Mesa 7.6)
OpenGL shading language version string: 1.20

Fedora 12 32bit:
server glx version string: 1.2
client glx version string: 1.4
OpenGL version string: 2.1 Mesa 7.7-devel
OpenGL shading language version string: 1.20



What could be the problem? Thanks in advance.

chenya
03-29-2010, 01:19 AM
Nobody knows? :(

Dark Photon
03-30-2010, 06:20 AM
I don't think you have the information we need to help listed above.

Set your app off to the side and try a short 10-line GLUT test program. Cart that around. See what you get. If you have problems, this is something you can easily post the entire source for. At the same time, this will get rid of Qt as a possible source of your problems.

Here is a test program to get you started:


#include <stdio.h>
#define GL_GLEXT_PROTOTYPES
#include <GL/gl.h>
#include <GL/glut.h>

main( int argc, char *argv[] )
{
glutInit( &amp;argc, argv );
glutInitDisplayMode( GLUT_RGB );
glutCreateWindow( "window title" );

printf( "GL_VENDOR : '%s'\n", glGetString( GL_VENDOR ) ) ;
printf( "GL_RENDERER : '%s'\n", glGetString( GL_RENDERER ) ) ;
printf( "GL_VERSION : '%s'\n", glGetString( GL_VERSION ) ) ;
printf( "GL_SHADING_LANGUAGE_VERSION : '%s'\n",
glGetString ( GL_SHADING_LANGUAGE_VERSION ) );
}

Compile with:
gcc -o tst tst.cxx -lglut -lGL

Matt Phillips
04-05-2010, 04:00 PM
Try upgrading to 10.4. I had what sounds like a similar/the same problem as you did with Qt, but after the upgrade everything worked.

Matt

chenya
04-15-2010, 01:11 AM
Dark Photon, thanks for your reply.

I tested your example, what I got is:
*****************
freelug (./tst): Unable to create direct context rendering for window 'window title'
This may hrt performance.
GL_VENDOR : 'Mesa project: www.mesa3d.org'
GL_RENDERER : 'Mesa GLX Indirect'
GL_VERSION : '1.4 (2.1 Mesa 7.0.1)'
GL_SHADING_LANGUAGE_VERSION : '(null)'
*****************

Can you see any problem from it?

chenya
04-15-2010, 01:13 AM
Try upgrading to 10.4. I had what sounds like a similar/the same problem as you did with Qt, but after the upgrade everything worked.

Matt

Which one should I upgrade to 10.4? You mean Ubuntu?

chenya
04-15-2010, 08:17 AM
Dark Photon, thanks for your reply.

I tested your example, what I got is:
*****************
freelug (./tst): Unable to create direct context rendering for window 'window title'
This may hrt performance.
GL_VENDOR : 'Mesa project: www.mesa3d.org'
GL_RENDERER : 'Mesa GLX Indirect'
GL_VERSION : '1.4 (2.1 Mesa 7.0.1)'
GL_SHADING_LANGUAGE_VERSION : '(null)'
*****************

Can you see any problem from it?


I give more details:
I got the info above in OpenSUSE 10.3 where I compile my project.

In Ubuntu 9.10, I got:
**************
GL_VENDOR : 'Mesa project'
GL_RENDERER : 'Software Rasterizer'
GL_VERSION : '2.1 Mesa 7.6)'
GL_SHADING_LANGUAGE_VERSION : '1.20'
**************


For OpenSUSE10.3 I have no direct rendering; For Ubunt 9.10, I have.

Can anyone explain, what causes my problem?
Thanks.

Dark Photon
04-17-2010, 07:31 PM
freelug (./tst): Unable to create direct context rendering for window 'window title'
This may hrt performance.
GL_VENDOR : 'Mesa project: www.mesa3d.org'
GL_RENDERER : 'Mesa GLX Indirect'
GL_VERSION : '1.4 (2.1 Mesa 7.0.1)'
GL_SHADING_LANGUAGE_VERSION : '(null)'
I got the info above in OpenSUSE 10.3 where I compile my project.

In Ubuntu 9.10, I got:

GL_VENDOR : 'Mesa project'
GL_RENDERER : 'Software Rasterizer'
GL_VERSION : '2.1 Mesa 7.6)'
GL_SHADING_LANGUAGE_VERSION : '1.20'
For OpenSUSE10.3 I have no direct rendering; For Ubunt 9.10, I have.

Can anyone explain, what causes my problem?
Thanks.
Well, in all of your example data, you're talking to Mesa OpenGL (www.mesa3d.org (http://www.mesa3d.org)) -- which nearly always means software-only OpenGL. This typically means you either 1) do not have a GPU installed in your system (NVidia, ATI, etc.), or 2) do not have the GPU drivers properly installed in your system. Is this really the case? Are you really intending to use OpenGL on a system with no GPU? You can of course, but with obvious performance limitations.

Indirect rendering is typically what you get when you don't have GPU and/or don't have the GPU-accelerated OpenGL drivers installed properly OR you are trying to talk to the local X server via TCP/IP or other remote means. You can typically force this method by setting your $DISPLAY environment variable to <hostname>:0 instead of :0 or unix:0

If you "did" have your GPU drivers installed properly AND we're telling your app to conenct to the X server via local IPC (e.g. DISPLAY=:0), you'd see something like this instead:


GL_VENDOR : 'NVIDIA Corporation'
GL_RENDERER : 'GeForce GTX 285/PCI/SSE2'

with no mention of "Mesa" whatsoever.

Now your "original" question was seeing an "Unrecognized OpenGL version" error on your terminal followed by a display freeze. For us to do anything with that, you're gonna have to tell us what app that is and/or post the code. That is not a message being printed by OpenGL, but rather by some application. Also tell us what your $DISPLAY environment variable is set to.

chenya
04-21-2010, 06:26 AM
Thanks for your detailed reply.

In my first post, I've mentioned that, I am running my app in virtual machine. If I understand correctly, there is neither GPU installed nor GPU driver.

Whether it is possible to make the OPENGL display working without GPU driver? I am newbie with Linux and OpenGL. Sorry if the question is too naive...

chenya
05-06-2010, 06:22 AM
Try upgrading to 10.4. I had what sounds like a similar/the same problem as you did with Qt, but after the upgrade everything worked.

Matt

In the end this information helped me.

Running OpenGL app in Ubuntu 9.10 as a guest VM, it has frozen display, and showing msg "Unrecognised OpenGL Version".

But do it in Ubuntu 10.4, there is no problem at all. (OpenSUse is always working in VM)

Don't know whether there is any fix in Ubuntu 10.4, or support from VMWare.

I am satisfied with this already. :)