I have a program that is getting caught being CPU bound by the glCopyTexImage2D instruction. this instruction is called several times, and each time it leads to huge drops in performance.
/* * This is the First major cpu bound call. This is a copy of a 256 pixel by 128 pixel depth image. * I did not expect this to take about 3000 Microseconds. */ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, 1072, 256, 128, 0); /* * The program ran for a while longer, and I needed to copy the actual * Frame-buffer of the program. This time it was an 960px by 1200px image. * This call took about 800 microseconds. */ glCopyTexImage2D(GL_TEXTURE_2D, 0, RGBA8, 0, 0, 960, 1200, 0); /* * Yet another case where I needed a copy of the depth buffer. * It took more than 5500 microseconds */ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, 0, 1920, 1200, 0);
I am wondering if there is any easy fix to clone the frame-buffer components to a texture without making a call to glCopyTexImage2D.