Zunächst gibt es grundsätzlich zwei Arten von klassischen Framebuffer-Treibern:
- Generische Hardware- und Firmware-Treiber (z. B. vga, vesafb / uvesafb, efifb)
- Hardwarespezifische Treiber (zB rivafb, atyfb)
Die klassischen Framebuffer-Treiber verfügten alle über grundlegende Unterstützung für Modi, zeigten jedoch kaum Unterstützung für Hardwarebeschleunigung.
Beim klassischen X-Design war dies kein wirkliches Problem: Um eine 2D-Beschleunigung zu erhalten, wurde der X-Server als Root ausgeführt und konnte direkt auf die Hardware zugreifen. Grundsätzlich wurde der Framebuffer-Treiber komplett umgangen. Für 3D (und 2D-Unterstützung auf neueren Karten) würde es auch einen Kernel-DRM-Treiber verwenden, der den Zugriff und den verwalteten Videospeicher vermittelt.
In diesem Setup wurden zwei Modi festgelegt: sowohl im Kernel-Framebuffer-Treiber als auch im Userspace-X-Server. Diese Vervielfältigung von Code (und gelegentliche Kämpfe zwischen Treibern, z. B. auf VT-Switch) war nicht ideal.
Darüber hinaus gab es im Kernel zwei separate Treiber für dieselbe Hardware: den Framebuffer-Treiber und den DRM-Treiber. In einigen Fällen (z. B. vor km) können Sie das eine oder andere laden, jedoch nicht beide gleichzeitig.
KMS war die Lösung für diese Probleme. Es:
- Führt den hardwarespezifischen Framebuffer-Treiber und den DRM-Treiber des Kernels zu einem einzigen Treiber zusammen.
- Bietet eine Schnittstelle, über die der X-Server die Einstellung des Modus steuern kann, sodass der X-Server nicht direkt auf die Hardware zugreifen muss. (In der Tat benötigt der X-Server mit KMS keine Root-Berechtigungen mehr.)
Einige interessante Hinweise: Die Migration auf das heutige KMS begann tatsächlich um 2004; Siehe Jon Smirls E-Mail zur Konsolenarchitektur .
Um Ihre spezifischeren Fragen zu beantworten:
- Die Geschwindigkeit wird im Allgemeinen nicht schlechter sein als einer der nicht beschleunigten allgemeinen Treiber (z. B. VGA, vesafb), aber die KMS-Framebuffer-Textkonsole wurde eher für die Bequemlichkeit und den Notfall als für die Geschwindigkeit entwickelt, und die Konsole ist bei einigen Treibern nicht vollständig beschleunigt. Umbrochene lange Zeilen sind zum Beispiel auf Intel-Karten ziemlich schlecht.
- Anwendungen, die für die Verwendung der alten Framebuffer-Schnittstellen entwickelt wurden, funktionieren weiterhin auf einem KMS-Framebuffer.