I have a simple motion blur demo (from opengl superbibile 5th ed.). I can toggle PBO/mem version in the demo. I get around 170 fps without PBO and with PBO I get around 85 fps. Why is there such a big difference in performance. And the pbo is setup using GL_DYNAMIC_DRAW, I tried GL_DYNAMIC_READ and GL_DYNAMIC_COPY and they all give approx. the same fps.
Is this expected that PBO will perform poor if the machine is fast?
Strange, 104 views but no reply
I guess no-one has picked through that particular example and noticed what you’re seeing.
Per this link, code can be had here:
svn checkout http://oglsuperbible5.googlecode.com/svn/trunk/ oglsuperbible5-read-only
Are you talking about Chapter08/pix_buffs/pix_buffs.cpp?
To answer the question you’re indirectly asking, using PBOs doesn’t guarentee you a performance increase. You have to use them intelligently. The main utilities being to parallelize CPU and GPU work, and to leave data on the GPU so you don’t have to send it again. It may be the use case in that example isn’t the best.
Thanks Dark Photon for your reply.
Yes, its the pix_buffs example. The timings reported in the book conflicted completely to the timing I got so I was confused why should I bother using PBO when it is so slow. The frame rate is nearly half (95 compared to 175 without PBO). Anyways thanks for the insight.
Ok, just for thread reference, what GPU and driver version are you running?
Also, compiled and ran it here and I see:
No PBOs: 331 fps / PBOs: 253 fps
This is on a last-gen gfx card and current-gen CPU (but not the fastest by any means): GeForce GTX285 (260.19.21 drivers) and Core i7 920.
So I’m seeing generally the same thing you are: that this probably isn’t the best demo of when to use PBOs.
My platform details;
NVIDIA Quadro FX 5800
Driver version 259.81 (latest driver released todate)
Dell Precision T7500 with Intel Xeon E5507 2.27GHz
OS: Windows 7 64 bit
One of the bad things in this demo is the use of glTexImage2D instead of glTexSubImage2D.