PBO performance problem


I have a problem which may or may not be specific to Windows, or in fact a problem with NVidia drivers.

I want to use PBOs to stream a dynamic texture (1024x1024, 32-bit BGRA). So I wrote some code that uses GLUT and it works and is very fast (4ms on my 7800GT, ForceWare drivers 81.98). I then ported this to Java, using Java Bindings for OpenGL (JOGL), and am now facing the problem that using PBOs is dreadfully slow (~60ms as opposed to 7…8ms with normal glTexSubImage2D). I have since identified that the problem goes away when switching from dual-display to single display, the Java/JOGL version is then on par with the C++/GLUT version.

I was assured by the JOGL maintainers that apart from wrapping the OpenGL API, it doesn’t do anything fancy. In particular, the chosen pixel format (PFD) is the same as what GLUT chooses. So my question is does anyone have an idea why PBO performance may suffer on a dual-display setup?

I had originally posted this on the JOGL forum, at http://www.javagaming.org/forums/index.php?topic=11873.0 , where the interested reader may find sample code. I’d be delighted to hear people trying to reproduce the problem on different hardware (ATI, maybe? although they don’t support PBOs do they now).

Thanks for your help in advance,

I have no idea if this will solve your problem but have you considered using FBO instead of PBO? …I know PBO’s are a real pain in the ass,i dumped using PBO’s the second i noticed the FBO ext and haven’t looked back since. I remember reading somewhere that ID software where close to dumping OpenGL for D3D because of GL’s poor render to texture techniques at the time(i have no idea if this is true or not but they certainly would not be the first to be annoyed with the troublesome PBO ext).

Thanks for the info, though I’m not clear how I could stream data into a texture using FBOs. I thought FBOs are pure render targets (eg. render-to-texture), but maybe I’m wrong. I’d indeed be grateful if you could post an example.


PBO != PBuffer

Im using PBO frequently in my app’s and it work very fast. If you using dual-view, make sure in driver settings page to set Hardware Acceleration mode to Multi-Display performance mode (ie. move slider to most right position).


This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.