Como definir um modo de vídeo no linux com kms / drm?

11

Como posso definir o modo de vídeo no Linux como o modo de baixo nível? Tanto quanto eu sei a camada mais baixa no userspace seria solicitar o KMS via DRM. Isso está correto? E, em caso afirmativo, como conseguir um interruptor de modo e acessar a "memória de vídeo" associada?

    
por Caleb 04.04.2011 / 10:56

2 respostas

3

KMS - Configuração do Modo Kernel, para quem ainda não ouviu falar - é possível graças aos drivers de vídeo do modo kernel. Esses drivers de vídeo do modo kernel configuram uma exibição de framebuffer que, por padrão, é a resolução nativa do (s) monitor (es) conectado (s). Se houver mais de um monitor conectado, cada monitor receberá sua resolução nativa e o console virtual será restrito à largura e altura mínimas de ambos os monitores.

Como o uso do KMS resulta em um framebuffer, os itens de configuração do framebuffer devem funcionar. Não posso verificar isso no sistema em que estou atualmente, porque ele não possui um driver KMS. Mas eu estarei em um sistema mais tarde com o KMS e informarei a você.

Veja a documentação do kernel sobre os modos de configuração com o parâmetro video = boot para framebuffers . mais informações.

    
por 01.08.2011 / 04:19
2

Eu não tenho certeza se você realmente sabe o que está pedindo, caso contrário você teria formulado de uma maneira que seja responsável. ... Mas para fazer o meu melhor, respondendo sua pergunta.

Você quer definir um modo e extrair alguma 'memória de vídeo'? como o antigo dos modo X dias ?? Se é isso que você quer, você precisa programar com o Framebuffer. Com isso dito, seria muito melhor trabalhar com o DirectFB. O DirectFB é como uma camada muito fina, com aceleração, no Framebuffer. Seu nível baixo, e sinceramente, é tão baixo quanto você deveria razoavelmente querer ir escrevendo aplicativos. Você seria capaz de definir modos e ter controle em um estilo de nível mais baixo. Se você quer um controle de estilo direto e direto, você tem que escrever o Framebuffer raw, você basicamente faz o mmap de algum ram de vídeo. Se você acha que o Framebuffer tem um desempenho ruim, não posso me estressar o bastante, confira o DirectFB. Se alguém tiver um driver KMS carregado, seu Framebuffer será configurado via KMS / libdrm.

Agora, quanto ao libdrm, é uma biblioteca do userspace para trabalhar com o kernel DRM. Não é um Framebuffer, não é uma API de aplicativo, é uma biblioteca de dispositivos do sistema. Se você quiser criar um novo driver de dispositivo, o libdrm é o caminho absoluto a seguir. Por exemplo, libdrm-radeon. Linux não é DOS, a única maneira de se comunicar diretamente com o hardware é através do kernel. Todas as aplicações normais nunca enviam código diretamente para o hardware, ele deve ser lançado em algum lib / API / call. Existem projetos que adotaram a abordagem in-kernel, para fins acadêmicos / experimentais, como o FBUI.

Espero ter pelo menos apontado na direção certa, caso contrário, você deve comentar e também atualizar sua pergunta. Eu tenho seguido esta questão desde a sua concepção, que foi pelo menos duas migrações atrás e não mais próxima da resposta. Sem mais informações, Realmente não há mais nada que possa ser dito.

    
por 31.12.2011 / 06:44