kmscon: add terminal emulator for KMS devices - #161
Merged
Merged
Conversation
State machine for a VT220 terminal emulator, with no rendering or input handling of its own. kmscon builds on it. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
A system without a framebuffer console has no text console at all. kmscon draws a terminal straight onto a DRM device, through OpenGL ES where the GPU allows and in software on the same device otherwise. Device access goes through libseat, so the seat owns the drm device and the vt rather than kmscon reaching for both itself. That needs seatd, which is a small daemon and already starts before this service. Built without the fbdev backend and with the built-in PC screen font, so it needs neither pango nor freetype. The service is off until enabled, so it does not take the display from whatever else is using it. Two patches are carried. The first keeps the unifont generator, a native helper linked against zlib for the build machine, out of a build that has the unifont backend disabled, which otherwise breaks cross compilation. The second stops an error loop: a render-only drm node answers NULL to drmModeGetResources, which the hotplug path treated as an error and returned from the poll handler, so kmscon wrote 776 error lines in eighty seconds on a board where the GPU enumerates before the display controller. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A system without a framebuffer console has no text console at all.
kmscondraws a terminal straight onto a DRM device, through OpenGL ES where the GPU allows and in software on the same device otherwise.Device access goes through libseat, so the seat owns the drm device and the vt rather than kmscon reaching for both itself. That needs seatd, which is a small daemon and already starts before this service. Built without the fbdev backend and with the built-in PC screen font, so it needs neither pango nor freetype. The service is off until enabled, so it does not take the display from whatever else is using it.
Two patches are carried. The first keeps the unifont generator, a native helper linked against zlib for the build machine, out of a build that has the unifont backend disabled, which otherwise breaks cross compilation. The second stops an error loop: a render-only drm node answers NULL to drmModeGetResources, which the hotplug path treated as an error and returned from the poll handler, so kmscon wrote 776 error lines in eighty seconds on a board where the GPU enumerates before the display controller.