I’ve successfully managed to get the dual display support for GL content. See this picture:
The Pi is connected to the left and top monitor and powers both of them. In this example the combined screen area is then 3840✕1080 (so 2✕ FullHD) and I load a 3840✕1080 JPEG and show that across both screens. The updated info-beamer pi version is available now.
Here’s how that works currently (subject to change in the future):
INFOBEAMER_DUAL_DISPLAY=1 ./info-beamer example
This instructs info-beamer pi to try to open two attached displays. It will use the preferred mode from the display connected to the HDMI0 port on the Pi (in the above case that’s 1920✕1080) and will try to find a matching mode (same width/height/refresh rate) for the display connected to HDMI1.
You can also manually specify modes using
INFOBEAMER_PRIMARY_MODE=xxx
INFOBEAMER_SECONDARY_MODE=xxx
with xxx being one of the modes listed in the info-beamer pi output.
You can freely place the secondary screen relative to the primary screen by using:
INFOBEAMER_SECONDARY_OFFSET_X=x
INFOBEAMER_SECONDARY_OFFSET_Y=y
with x/y being the pixel offset of the top left corner of the secondary screen relative to the top left corner of the primary screen. Having both values set to 0 (the default) effectively clones the output, so both show the same content. Setting INFOBEAMER_SECONDARY_OFFSET_X=1920 will place the second display right of the primary display. And so on.
It seems that right now the Pi4 software doesn’t allow hotplugging of displays. It sounds like the displays are only detected when the Pi boots. This might make reliable installations using dual displays difficult, if the screens are not guaranteed to be turned on when the Pi starts. If a screen is not detected at boot, info-beamer (and I’m pretty sure any other Pi based solution) won’t be able to detect the screen later once it gets turned on). As a result, I’m not yet sure how practical the dual screen mode will be. We’ll see.
Right now only GL content can be shown across dual screens. Videos of any kind won’t work as of now.