Last week I began playing with ARB_pixel_buffer_object. The initial experiments disoriented me quite a bit. Its main usage was to check out how much PBO can speed up texture uploads.
At program startup, I simply uploaded a bunch of pixels up to the card. I’ve tried many details from 64x64 a texture up to a 4Kx4K, I’ve tried standard path, EXT_pbo, then ARB_pbo, I’ve tried mapping the buffer and updating it with SubData.
All this stuff ending in a final TexSubImage call.
The ARB_pbo performances on my systems turned out to be simply awful in most cases.
To give PBO an advantage, I also simulated a heavy CPU load. Nothing.
So, PBO does not look to be an attractive option (right now) to speed up massive uploads. I’ll try it again in the future.
Then I realized maybe I was not giving PBO enough work so I decided to stream multiple textures, updating them some rows at time.
PBO still doesn’t take over on the standard path (which does not even reach optimal transfer speed).
I now believe I’m doing something really wrong.
I’m possibly not taking correct measurements, or maybe I’ve misunderstood how to use PBO or maybe I have managed to get an unrealistic scenario.
Anyway, I believe I need some feedback on other experiences with PBO. Could you give me some hints on getting it to work right?