Como informar o Xorg sobre uma resolução que eu já defini?

1

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.

    
por Dmitry Grigoryev 17.09.2015 / 11:32

0 respostas