Hello,
We’re running a five large screen setup in the control room of the CMS experiment. The machine has two GTX-970 cards and we use Xinerama to merge the five screens into a common desktop (KDE on Fedora 21). One machine drives three 2560x1440 monitors and the second one one 2560x1440 and one 3840x2160.
With Xinerama enabled, we see a really slow performance of either rendering into FBOs or of glReadPixels when we extract images from FBOs to save them as pngs – compared to the same thing running on my desktop with TwinView on a single GTX 970 it runs about 8 times slower (0.25 Hz instead of 2 Hz). I’m being vague as the real setup is 9 time zones away and my test machine here at the university got stolen, sigh.
The refresh-screen part of the event-loop:
- loop over views, update scene and redraw, do not swap
- swap buffers on all views
- for each view
- render into FBO (typically smaller than screen size, pow 2 rounded (there was a bug in ATI drivers that made FBO rendering super slow otherwise))
- copy out image data
- run image creation in a separate thread
All GL windows reside fully on individual monitors.
Currently we use 343.36 as there were additional issues with 346.47: image captured on monitor0 of the first card gets consistently corrupted as shown in attachment [2].
I have observed another peculiarity in this setup: moving a mouse over the GL window while the event display application is running can sometimes result in a partial refresh of the GL window, as if part of the window would get clipped out.
I can prepare a tarball with the application, data, and instructions if you would be interested in giving it a spin.
Best,
Matevž
[1] NVIDIA bug report: http://uaf-2.t2.ucsd.edu/~matevz/tmp/nvidia-bug-report.log.gz
[2] Example of corrupted image: http://uaf-2.t2.ucsd.edu/~matevz/tmp/RhoPhi-corrupted.png