
Im trying to run an application which uses OpenGL ES (Kivy) on a Raspberry Pi, and direct the output to a secondary monitor (not the hdmi output). To my knowledge the only way to achieve this at the moment is to use rpi-fbcp (https://github.com/tasanakorn/rpi-fbcp) to take snapshots of the primary frame buffer (fb0) and copy them to frame buffer used by the secondary monitor (fb1).
At present I can run my Kivy app with output to an hdmi monitor and it works excellently. Fast and smooth. I can also use my secondary monitor with X outputing directly to fb1, and it works well. To me this suggests that Kivy is working correctly, and also my secondary monitor is working correctly.
Unfortunately when I try and put everything together I start running into problems. With rpi-fbcp mirroring fb0 onto fb1 I get a lag of nearly a second between screen updates on the hdmi monitor and the secondary monitor. This applies to both my Kivy app and an X desktop. As far as I can test it is independent of output resolution, my secondary monitor has a native resolution of 320x240 which I cant display on an hdmi monitor, but the lag is pretty much the same for larger resolutions (which fbcp scales to fit the smaller secondary monitor).
Now I am pretty sure that fbcp works properly for other situations, if everyone had to deal with this 1 second lag then no-one would be using it at all. Does anyone know what it is about my particular setup that could be causing these problems?