glReadPixels Win7 GTX690

I’m getting very bad performance with glReadPixels.

When using glReadPixels on a 1920x1080 buffer I only get 30fps.

I’m using the latest driver. My driver settings are all default. I’ve tried turning SLI on and off in the driver. I’m using PBOs. I’ve tried using multiple PBOs and multiple render targets to ensure no blocking happens but nothing seems to change the performance.

I’ve also tried several other programs and they all give me the same results. Even the NVIDIA SDK Sample “PBO Texture Performance” only gives me 53fps with the default window size using a static image and PBO asynchronous for the readback. I got someone else to test the same on their machine with a 650 Ti Boost and they got 600fps in Windows 8.1.

I’ve also tried using FRAPS to capture games using OpenGL and can’t get any higher than about 25fps with these. I tried the game Starbound with both OpenGL and DirectX using FRAPS. With DirectX I can record at 56fps, with OpenGL I can only record at 20fps. Without recording in Starbound I get ~250fps in DirectX, and ~500fps with OpenGL.

Check the PCI-Express link width. Sounds like less than 16 lanes are used, constraining readback bandwidth.

My BIOS shows that the card is running native x16, but for some reason GPU-Z shows one chip running at x8 and the other at x1. The one running at x1 appears to be the primary chip. I ran the CUDA bandwidthTest app on each chip and the x8 chip is running ~6500Mb/s whereas the other is running ~700Mb/s.

For some reason the 8x chip also shows up as 16x when I start my PC, then goes down to 8x shortly after. Also, if I turn SLI off, the x8 chip goes up to x16. I can get the x1 chip to go up to x16 if I disable it in device manager and restart my PC.

I guess this is a hardware issue now rather than an OpenGL issue. Thanks for your input.