Stefan Dösinger wrote:

I want to create fraps for linux. Using XShmGetImage() and friends is
too slow. So my first
approach was to create a fullscreen opengl app and do glReadPixels().
But this performs
very badly when there are two opengl applications running at the same
time (fps drops from

Now what are my options besides modifying the wine source?
Do you mean the thing described at www.fraps.com?
exactly that thing :)

AnandTech has created a similar program (http://www.anandtech.com/linux/showdoc.aspx?i=2218). They've used the same approach as me, and for run-time linking, they modify the binary (which I don't
want to do right now, too complicated ATM).

It's certainly interesting, and hooking calls makes sense. There's for sure a point in it. However there may still be problems:

* There are some closed source games for Linux which load the library at run time. Your approach will fail here, just as it does with Wine. I don't know which games are affected, but I have read about this when searching for a workaround for the slow mouse pointer problem with fglrx.

* The fglrx driver: glReadPixels, glWritePixels, glTexImage2D and friends are _terribly_ slow with this driver( 1 fps when accessing the back buffer). Just follow the Direct3D discussions or search the archives, this problem has been discussed before, and it will come up again(At least when my DX7 patches are ready). Your glReadPixels approach won't work for radeon cards. I don't know a fix / workaround. If you have one, I'd really be glad!

I have a nVidia 7800 GTX on a PCI-Express bus, and with a simple glReadPixels(), I can get ~700MB/s (makes ~140 fps at 5MB/frame, 1280x1024 RGBA). Is there another function which can be used for readback? I don't know any other OpenGL function that could be used for this. Is there any other?

What about asynchronous glReadPixels using PBOs, does this perform better on ATI cards? The nvidia SDK (for windows only) has a performance test application that can be used to measure the different
readback techniques.

tom



Reply via email to