Estou tentando fazer com que meu Banana Pi Pro alterne entre as resoluções de 1920x1080 e 1280x720 em uma tela HDMI. Ambas as resoluções funcionam bem se eu configurá-las em uEnv.txt
:
disp.screen0_output_mode=1280x720p60
or
disp.screen0_output_mode=1920x1080p60
É claro que alterar os scripts do gerenciador de inicialização requer uma reinicialização, o que é indesejável. No entanto, há uma maneira de alterar a resolução sem reiniciar: echo D:1280x720p-60>/sys/class/graphics/fb0/mode
altera efetivamente a resolução para 1280x720.
O problema é que o Xorg não está ciente dessa mudança e continua usando o framebuffer como um array 1920x1080, resultando em um efeito "zebra" (semelhante a isto ou isto ). Esse efeito pode ser parcialmente corrigido definindo uma resolução virtual com fbset
:
fbset -xres 1280 -yres 720 -vxres 1920 -vyres 1080
Agora obtenho uma imagem limpa, no entanto, apenas o canto superior esquerdo de 1280x720 da tela virtual de 1920x1080 é exibido fisicamente. Mais uma vez, o Xorg está errado na alteração de resolução que ocorreu, portanto, nenhum panorama está ativado e quaisquer controles de GUI gerados fora do canto superior esquerdo permanecem invisíveis.
Eu também tentei alterar a resolução via xrandr
, conforme descrito em esta resposta , mas parece que xrandr
não sabe como alterar a resolução no meu hardware e se recusa a definir o novo modo:
# xrandr --output default --mode 1280x720_60.00
xrandr: Failed to get size of gamma for output default
xrandr: Configure crtc 0 failed
Existe uma maneira de dizer ao Xorg que a resolução da tela mudou independentemente de quais erros xrandr
reportam ou sem usar xrandr
? Tudo o que precisa fazer é tratar o dispositivo framebuffer como um array de 1280x720 em vez de 1920x1080.
Eu rodei o Debian Wheezy (armhf port) com o Openbox / LXDE se isso importa.
Tags xorg xrandr hdmi framebuffer