Wie stelle ich einen Videomodus unter Linux mit kms / drm ein?

11

Wie kann ich den Videomodus unter Linux auf Low-Level-Weise einstellen? Soweit ich weiß, besteht die unterste Ebene im Benutzerbereich darin, KMS über DRM anzufordern. Ist das richtig? Und wenn ja, wie könnte ich einen Moduswechsel und Zugriff auf den zugehörigen "Videospeicher" erreichen?

Caleb
quelle
Was ist km? Bisher habe ich noch nichts von KSM oder Modusumschaltung gehört.
BЈовић
Ich meine mit KMS: Kernel-Mode-Setting Link .
Meinst du für den Framebuffer / die Konsole? Oder für X11 / Xorg?
Pinguin359
@ penguin359 Entweder. X und fb wenn möglich, solange ich die libdrm direkt benutzen kann ... (PS: vorzugsweise über C ++)
4
@litro was versuchst du zu erreichen? und in vielen Distributionen aktivieren sich km selbst, falls verfügbar und nicht ausgeschaltet.
Xenoterracide

Antworten:

3

KMS - Kernel-Modus-Einstellung für diejenigen, die noch nichts davon gehört haben - wird durch Videotreiber im Kernel-Modus ermöglicht. Diese Videotreiber im Kernelmodus konfigurieren eine Framebuffer-Anzeige, die standardmäßig die native Auflösung der angeschlossenen Monitore ist. Wenn mehr als ein Monitor angeschlossen ist, erhält jeder Monitor seine native Auflösung und die virtuelle Konsole ist auf die Mindestbreite und -höhe beider Monitore beschränkt.

Da die Verwendung von KMS in einem Bildpuffer resultiert, die Framebuffer - Konfigurationselemente sollten arbeiten. Ich kann dies auf dem System, auf dem ich mich gerade befinde, nicht überprüfen, da es keinen KMS-Treiber hat. Aber ich werde später mit KMS an einem System sein und Sie wissen lassen.

Weitere Informationen finden Sie in der Kerneldokumentation zum Einstellen von Modi mit dem Parameter video = boot up für Framebuffer .

Michael Trausch
quelle
2

Ich bin mir nicht sicher, ob Sie wirklich wissen, was Sie fragen, sonst hätten Sie es so formuliert, dass es verantwortungsbewusst ist. ... Aber um mein Bestes zu geben, um Ihre Frage zu beantworten.

Sie möchten einen Modus einstellen und einen 'Videospeicher' ausschalten? wie der alte Dos-Modus X Tage? Wenn Sie dies möchten, müssen Sie mit dem Framebuffer programmieren. Vor diesem Hintergrund wäre es viel besser, mit DirectFB zu arbeiten. DirectFB ist wie eine sehr dünne Schicht mit Beschleunigung auf dem Framebuffer. Es ist niedrig und ehrlich gesagt so niedrig, wie Sie es vernünftigerweise jemals schreiben möchten. Sie können Modi einstellen und die Steuerung in einem niedrigeren Stil durchführen. Wenn Sie eine direkte direkte Stilsteuerung wünschen, müssen Sie Framebuffer raw schreiben. Wenn Sie der Meinung sind, dass Framebuffer eine schlechte Leistung erbringt, kann ich nicht genug betonen. Schauen Sie sich DirectFB an. Wenn jemand einen KMS-Treiber geladen hat, wird sein Framebuffer über KMS / libdrm festgelegt.

Libdrm ist eine Userspace-Bibliothek für die Arbeit mit dem Kernel-DRM. Es ist kein Framebuffer, es ist keine Anwendungs-API, es ist eine Systemgerätebibliothek. Wenn Sie einen neuen Gerätetreiber erstellen möchten, ist libdrm der absolute Weg. Zum Beispiel libdrm-radeon. Linux ist kein DOS. Die einzige Möglichkeit, direkt mit der Hardware zu kommunizieren, ist der Kernel. Alle normalen Anwendungen senden niemals Code direkt an die Hardware, er muss in einer lib / API / call rausgeschmissen werden. Es gibt Projekte, die den In-Kernel-Ansatz für akademische / experimentelle Zwecke gewählt haben, wie z. B. FBUI.

Ich hoffe, ich hätte Sie zumindest in die richtige Richtung weisen können, wenn nicht, sollten Sie Ihre Frage kommentieren und auch aktualisieren. Ich bin dieser Frage seit ihrer Konzeption gefolgt, die vor mindestens zwei Migrationen stattfand und nicht näher zu beantworten war. Ohne weitere Informationen kann wirklich nichts mehr gesagt werden.

JM Becker
quelle