PDA

View Full Version : Performance problem PBO + glCompressedTexSubImage3D + Texture Array



t_guen03
06-07-2014, 06:17 PM
Hello there,

i've a problem with updating a texture array with compressed data per glCompressedTexSubImage3D.

I have an PBO which stores the compressed data, which i want to use to update a 2D array texture.
Unfortunately the updating process is very slow and need 100 ms.
The upload process to the GPU is already finished when i call glCompressedTexSubImage3D, because i use
fences to check for that.

What's odd is the fact, that this problem does only occur if i create an array texture with more then one layer.
With one layer it works like a charm. If i create an array texture with let's say 2 layers, the problem even occurs for the first layer.
My driver version is 331.38 and i use linux.

I hope someone can tell me what i am doing wrong or at least confirm that this is a driver bug.

Edit: Oh i forgot to mention that i'm using a Debug context and that no errors are thrown.

Dark Photon
06-08-2014, 06:07 PM
Sounds familiar:

* https://www.opengl.org/discussion_boards/showthread.php/182639-Possible-NVidia-Driver-Bug-319-49

One workaround is to just ditch the PBO intermediary.

t_guen03
06-08-2014, 06:30 PM
Sounds familiar:

* https://www.opengl.org/discussion_boards/showthread.php/182639-Possible-NVidia-Driver-Bug-319-49

One workaround is to just ditch the PBO intermediary.

Yes, could be the same issue i have.

Could you explain what you mean with "ditch the PBO intermediary"?

Dark Photon
06-09-2014, 03:59 PM
Yes, could be the same issue i have.

Could you explain what you mean with "ditch the PBO intermediary"?


I have an PBO which stores the compressed data, which i want to use to update a 2D array texture.

Instead of doing this, update the 2D array texture from a CPU memory pointer (i.e. w/o a PIXEL_UNPACK buffer bound).

...that is, assuming the data originates on the CPU-side in the first place. If you're producing the compressed texture on the GPU side, then this doesn't help you.

Also, have you tried updating to the latest NVidia driver? The driver you're running is 6 mos old.

t_guen03
06-09-2014, 06:31 PM
Instead of doing this, update the 2D array texture from a CPU memory pointer (i.e. w/o a PIXEL_UNPACK buffer bound).

...that is, assuming the data originates on the CPU-side in the first place. If you're producing the compressed texture on the GPU side, then this doesn't help you.

Also, have you tried updating to the latest NVidia driver? The driver you're running is 6 mos old.

Ah now i see what you mean. If i don't find an solution for this problem, then i'll have to go with your solution, even if this means a lot of refactoring for me, without going further into detail.

I also thought about trying a new driver version, but i didn't had the time to try it yet. I'll update this thread as soon as i've more information.