I asked the same question before, but meanwhile I figured it’s only a problem on ATI hardware. Does anyone know how to get a decent readback/copy speed of the z-buffer on ATI hardware. I can achieve maximum 2MB/s :-(, even when I simply glCopyTexSubImage without reading back. Different z-buffer/texture formats don’t seem to change much. I use an X800XT board with Catalyst 4.10.
Did you renember to disable antialising ? I get a good copy when I disable, but a very poor one with antialising on.
I belive that is why some ATI demos use pixel programs to store the pixels depth in the alpha channel, so they dont have to mess with this copy.
Thanks for the reply, unfortunately I have antialiasing/multisampling always switched off anyway . Any other ideas? What’s the performance you have seen in your apps? ATI: 20-40MB/s is not that much to ask for, is it?
I havent made any specific tests with the speed of copying the depth.
All I can say is that I do a glCopyTexImage2D() With GL_DEPTH_COMPONENT as the source I copy from. I copy a screensized rectangle of about 1024x768, with no significant slowdown. My app is still running at 100+ fps, depending on the complexity of my other pixel shaders. If I enable altialising in the Catalyst control center, the fps drop to around 6-7.
If you are willing to share your code, I would be happy to test it on my system as well. (Radeon 9800 XT).