¿Cómo puedo configurar el modo de video en Linux en el nivel bajo? Hasta donde sé, la capa más baja en el espacio de usuario sería solicitar KMS a través de DRM. ¿Es esto correcto? Y si es así, ¿cómo podría lograr un cambio de modo y acceder a la "memoria de video" asociada?
12
Respuestas:
KMS (Configuración del modo kernel), para aquellos que no lo han escuchado, es posible gracias a los controladores de video en modo kernel. Estos controladores de video en modo kernel configuran una pantalla de framebuffer que, de manera predeterminada, es la resolución nativa de los monitores conectados. Si hay más de un monitor conectado, cada monitor obtendrá su resolución nativa y la consola virtual estará limitada al ancho y la altura mínimos de ambos monitores.
Debido a que el uso de KMS da como resultado un framebuffer, los elementos de configuración de framebuffer deberían funcionar. No puedo verificar esto en el sistema en el que estoy actualmente, porque no tiene un controlador KMS. Pero estaré en un sistema más tarde con KMS y te lo haré saber.
Consulte la documentación del kernel sobre los modos de configuración con el parámetro video = boot up para framebuffers para obtener más información.
fuente
No estoy seguro de que realmente sepa lo que está pidiendo, de lo contrario, lo habría expresado de manera responsable. ... Pero para hacerlo lo mejor posible, respondiendo a tu pregunta.
¿Desea establecer un modo y generar algo de 'memoria de video'? como el viejo modo dos días X ?? Si esto es lo que desea, debe programar con Framebuffer. Dicho esto, sería mucho mejor trabajar con DirectFB. DirectFB es como una capa muy delgada, con aceleración, en Framebuffer. Es de bajo nivel y, sinceramente, es tan bajo como razonablemente debería desear ir escribiendo aplicaciones. Podrías establecer modos y tener control en un estilo de nivel más bajo. Si desea un control de estilo directo y directo, debe escribir Framebuffer sin formato, básicamente debe asignar un poco de ram de video. Si cree que Framebuffer funciona mal, no puedo enfatizar lo suficiente, consulte DirectFB. Si alguien tiene un controlador KMS cargado, su Framebuffer se configura a través de KMS / libdrm.
Ahora, en cuanto a libdrm, es una lib de espacio de usuario para trabajar con el kernel DRM. No es un Framebuffer, no es una API de aplicación, es una biblioteca de dispositivos del sistema. Si desea crear un nuevo controlador de dispositivo, libdrm es la mejor opción. Por ejemplo, libdrm-radeon. Linux no es DOS, la única forma de comunicarse directamente con el hardware es a través del núcleo. Todas las aplicaciones normales nunca envían código directamente al hardware, debe ser procesado en alguna lib / API / call. Hay proyectos que han adoptado el enfoque en el núcleo, con fines académicos / experimentales, como FBUI.
Espero que al menos te haya señalado en la dirección correcta, si no, deberías comentar y también actualizar tu pregunta. He seguido esta pregunta desde su concepción, que fue hace al menos dos migraciones y no está más cerca de la respuesta. Sin más información, realmente no hay más que pueda decirse.
fuente