Jump to content
  • Advertisement
Sign in to follow this  
floatingwoods

OpenGL Trouble with very slow rendering with nvidia under Linux

This topic is 2134 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello,

 

I have a cross-platform openGl application that works fine with most graphic cards. However, there are rare cases when rendering is very slow under following conditions:

- Linux (Ubuntu)

- Nvidia card (e.g. Nvidia NVS 5200 M)

 

The application runs a single thread (the main thread), and turns vsync off at the beginning (following is the Linux code to turn Vsync off):

 

typedef int (APIENTRY * AAAAGLSWAPINTERVALEXTPROC)(int);
AAAAGLSWAPINTERVALEXTPROC wglSwapIntervalEXT=(AAAAGLSWAPINTERVALEXTPROC)glXGetProcAddress((const GLubyte*)"glXSwapIntervalSGI");
if (wglSwapIntervalEXT)
{
    wglSwapIntervalEXT(0);
}

 

Rendering gets very slow because following functions seems to be blocking for several ms even with an almost empty scene content:

 

 

openglWidget->swapBuffers(); // Qt command

or/and

openglWidget->doneCurrent(); // Qt command

 

It seems that VSync could not be turned off! More strange is that following command:

 

 

export __GL_SYNC_TO_VBLANK=1

 

improves the rendering speed (but still takes around 40-50 ms for each frame).

 

what is going on here? Other platforms or other graphic cards do not have any problem at all. It is critical to be able to render as quickly as possible (disable vsync) for various reasons (e.g. rendering for generation of movie files).

 

Thanks for any insight!!

 

 

 

 

Share this post


Link to post
Share on other sites
Advertisement

I'm not a linux expert, but under windows you often have the option to set the driver settings to overwrite application settings, including the vsync. Therefor check if your driver settings first.

Share this post


Link to post
Share on other sites

Which drivers are you using? The default open source drivers have poor 3D performance, so make sure you have the nvidia's closed drivers installed.

Share this post


Link to post
Share on other sites

You should get information with glGetString and also, make sure you have the drivers from nvidia installed and not MESA3D or some other software junk.

Share this post


Link to post
Share on other sites
This is a known bug in nVidia's binary blob drivers.

nVidia has been working with Valve to fix a number of performance issues. A newer (experimental) version 310 of the driver is available in the Ubuntu archives for testing with: it may solve this particular problem. On quantal this is the nvidia-experimental-310 package and on raring it's just nvidia-310. Try that and see if it solves your problem: you can always return to the default nvidia-current package if there are other problems.

Share this post


Link to post
Share on other sites

Driver 313.09 is out already.

I strongly do not recommend installing nVidia drivers directly from nVidia into Ubuntu.

(1) The nVidia drivers directly from Ubuntu are not packaged correctly: they follow the methodology of stomping all over your system without respect to the Ubuntu packaging, and it's difficult or impossible to back them out without reinstalling your system.

(2) Ubuntu tests the drivers before packaging them, and does not distribute drivers with known breakage (instead, they work with nVidia to remedy the situation in another driver release -- Canonical actually has full-time people working with nVidia to help with this).

Of course, it's your system. If you break it, you get to keep both halves.

Share this post


Link to post
Share on other sites

Of course, it's your system. If you break it, you get to keep both halves.

That's why I have /home on a separate partition :D

 

I did broke the graphical desktop environment a few times on Debian, just delete the nVidia script that blacklists nouveau and it works again. It wasn't because the drivers though, I had driver packages from Debian that conflicted with the ones I downloaded from nVidia.

Share this post


Link to post
Share on other sites

I did broke the graphical desktop environment a few times on Debian, just delete the nVidia script that blacklists nouveau and it works again. It wasn't because the drivers though, I had driver packages from Debian that conflicted with the ones I downloaded from nVidia.

The "package conflict" is because Debian installs various libraries using DEB packaging and the dpkg-alternatives system, symlinking driver-specific OpenGL shared objects so they get picked up at run time. The nVidia installer does not use packaging and simply clobbers the links with real libraries. You can tweak in the kernel modules all you want, you're effectively blixened once the packaging has been clobbered unless you carefully manually remove and re-symlink all the libraries as well. Don't miss one. Also, don't forget to remove the several-versions-out-of-date xorg.conf that nVidia installs.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!