Perguntas sobre dispositivos KMS / DRM e linux / dev / fb *

3

Basicamente, o que eu quero fazer é permitir a maioria dos aplicativos gráficos padrão framebuffer (pelo menos, qualquer um que ofereça suporte ao dispositivo / dev / fb *, ou possa deduzir que a partir do framebuffer o VT é lançado de está usando) para operar em um monitor específico em um sistema de vários monitores. Isso é realmente trivial com fbcon supondo que você tem um sistema com várias placas gráficas ... Mas eu quero fazê-lo funcionar com cartões zaphod chefiados, o que não é possível (pelo menos até 3 dias de pesquisa pode dizer me) sem código personalizado. Quer dizer, pode ser possível para placas nvidia, eu não sei, mas radeondrmfb definitivamente só cria um framebuffer linux para a placa inteira, com todos os três monitores mostrando a mesma saída.

Então, a solução teórica a que cheguei é a seguinte: eu uso código semelhante ao encontrado aqui: link

Em seguida, implemente código que permita que o aplicativo de driver se apresente ao kernel como se fosse um dispositivo de framebuffer (Efetivamente é neste ponto, e eu suspeito que isso é realmente como o radeondrmfb opera, mas eu não analisei completamente o radeon_fb .c da fonte do kernel ainda, então estou supondo), enquanto implemento todas as funções padrão esperadas do framebuffer linux através do kms / drm.

Nesse ponto, o kernel grub / syslinux padrão arg fbcon = map: deve funcionar para colocar consoles framebuffer para números VT específicos em consoles específicos (por exemplo, se meu driver conseguir alocar / dev / fb1, / dev / fb2, e / dev / fb3, então fbcon = map: 123 deve fazer com que tty1 apareça no monitor associado a / dev / fb1, tty2 em / dev / fb2 e assim por diante). Nesse ponto, o lançamento dos aplicativos de framebuffer mais bem escritos, como o fbi, deve iniciá-los anexados ao framebuffer na instância fbcon que os chamou.

Nenhuma garantia, e aplicações de framebuffer mal escritas provavelmente pegarão / dev / fb0 e arruinarão seu dia (E eu suspeito que qualquer coisa usando o directfb causará coisas horríveis e horríveis acontecerem), mas em teoria isso deveria me dar a habilidade para ver 3 ttys simultaneamente sem X, ou operar 3 aplicações gráficas de framebuffer simultaneamente, nos meus 3 monitores todos passando pelo meu único cartão triplo.

Agora eu estou totalmente fora da minha profundidade aqui, e estou mergulhando no fundo do poço, efetivamente escrevendo um driver de dispositivo aqui ... Então, qualquer pessoa com experiência com esse tipo de coisa pode me dizer se minha hipótese é som, e / ou me dar algum conselho? Além de: "Você é louco, use X!" claro.

    
por GammaPaladin 17.08.2015 / 10:53

0 respostas