0
\$\begingroup\$

These 2 lines (in C# using OpenTK) seem to cause 1 second lag every frame on a machine with a Geforce 9500 GT

GL.ClearBuffer(ClearBuffer.Color, 0, new float[] { 0, 0, 0, 0 }); // accum
GL.ClearBuffer(ClearBuffer.Color, 1, new float[] { 1, 0, 0, 0 }); // reveal (only red)

The framebuffer in question has 2 color attachments (Rgba16f and R16), and one depth attachement. The framebuffer status after setup indicates no problems.

This is also just one of 3 framebuffers that are cleared every frame - only this one turns the my game into a diashow. There is no such problem on any other card I've tested. Before clearing both color attachment are bound using

DrawBuffersEnum[] bufs = new DrawBuffersEnum[] { DrawBuffersEnum.ColorAttachment0, DrawBuffersEnum.ColorAttachment1 };
GL.DrawBuffers(2, bufs);

How could a very particular gfx card be so slow in clearing 2 color attachments? o.O

\$\endgroup\$
2
\$\begingroup\$

The problem was that I used ushorts in one of my VBOs to save a bit on memory, but seems to be very costly when doing lookups on certain AMD cards. After switching back to full integers the performance drop was gone.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.