Skip to content
This repository

Linux KMS/DRM based virtual Console Emulator

branch: master

uterm: drm: activate context before swapping

Lets be safe here and activate the context before performing the
buffer-swap. Drivers might be inconsistent and require this in case the
background process changed the DRM state.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
latest commit 3b6fb0f75f
David Herrmann authored
Octocat-spinner-32 docs build: link eloop statically October 29, 2013
Octocat-spinner-32 external build: link eloop statically October 29, 2013
Octocat-spinner-32 fblog Fix several typos February 11, 2013
Octocat-spinner-32 m4 build: allow kmscon to be cross-compiled September 12, 2013
Octocat-spinner-32 src uterm: drm: activate context before swapping November 04, 2013
Octocat-spinner-32 tests uterm: input: use shl_llog instead of shl_log November 03, 2013
Octocat-spinner-32 .gitignore uterm: input: add built-in keymap fallback November 03, 2013
Octocat-spinner-32 COPYING COPYING: add 'Swift Geek' January 13, 2013
Octocat-spinner-32 Makefile.am build: strip \r from shaders November 03, 2013
Octocat-spinner-32 NEWS docs: adjust NEWS file for kmscon-8 October 29, 2013
Octocat-spinner-32 README docs: update README links October 29, 2013
Octocat-spinner-32 autogen.sh build: add proper dependency checking to configure.ac October 23, 2012
Octocat-spinner-32 configure.ac build: mark binary data as read-only with objcopy November 03, 2013
README
= KMSCON =

Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS).
It is an attempt to replace the in-kernel VT implementation with a userspace
console. See kmscon(1) man-page for usage information.

Website:
  http://www.freedesktop.org/wiki/Software/kmscon

== Requirements ==

  Kmscon requires the following software:
    - libtsm: terminal emulator state machine
        http://www.freedesktop.org/wiki/Software/kmscon/libtsm/
    - libudev: providing input, video, etc. device hotplug support (>=v172)
        http://www.freedesktop.org/wiki/Software/systemd/
    - libxkbcommon: providing internationalized keyboard handling
        http://xkbcommon.org/
    - libdrm: graphics access to DRM/KMS subsystem
    - linux-headers: linux kernel headers for ABI definitions

  Everything else is optional:

    For video output at least one of the following is required:
      - fbdev: For framebuffer video output the kernel headers must be installed
               and located in the default include path.
      - DRM: For unaccelerated drm output the "libdrm" library must be installed
             and accessible via pkg-config.
      - OpenGLES2: For accelerated video output via OpenGLESv2 the following must
                   be installed: libdrm, libgbm, egl, glesv2 (i.e., mesa)

    For font handling the following is required:
      - 8x16: The 8x16 font is a static built-in font which does not require
              external dependencies.
      - unifont: Static font without external dependencies.
      - pango: drawing text with pango
               Pango requires: glib, pango, fontconfig, freetype2 and more

    For multi-seat support you need the following packages:
      - systemd: Actually only the systemd-logind daemon and library is required.

== Download ==

Released tarballs can be found at:
  http://www.freedesktop.org/software/kmscon/releases

== Install ==

  To compile the kmscon binary, run the standard autotools commands:
    $ test -f ./configure || NOCONFIGURE=1 ./autogen.sh
    $ ./configure
    $ make
    $ make install
  To compile the test applications, run:
    $ make check

  If you want only a very basic kmscon program without any major dependencies,
  use:
    $ ./configure --with-video=fbdev,drm2d --with-renderers= --with-fonts=unifont --disable-multi-seat --with-sessions=dummy,terminal
  However, you will loose a lot of functionality by dropping all dependencies.

  The following configure options are available. If build-time dependencies
  cannot be satisfied, an option is automatically turned off, except if you
  explicitly enable it via command line:
    --enable-multi-seat: This requires the systemd-logind library to provide
                         multi-seat support for kmscon. [default: on]
    --enable-debug: Enable debug mode/messages [default: on]
    --enable-optimizations: Enable code optimizations [default: on]

  Backends for several subsystems in kmscon can be selected with the following
  options (all of them take a comma-separated list of backend names):
    --with-video: Video backens. Available backends are:
       - fbdev: Linux fbdev video backend
       - drm2d: Linux DRM software-rendering backend
       - drm3d: Linux DRM hardware-rendering backend
       Default is: fbdev,drm2d,drm3d
    --with-fonts: Font renderers. Available backends are:
       - unifont: Static built-in non-scalable font (Unicode Unifont)
       - pango: Pango based scalable font renderer
       Default is: unifont,pango
       The 8x16 backend is always built-in.
    --with-renderers: Console rendering backends. Available are:
       - bbulk: Simple 2D software-renderer (bulk-mode)
       - gltex: OpenGLESv2 accelerated renderer
       - pixman: pixman based renderer
       Default is: bbulk,gltex
       The bblit backend is always built-in.
    --with-sessions: Built in sessions. Available sessions are:
       - dummy: Dummy fallback session
       - terminal: Terminal-emulator sessions

== Running ==

  To get usage information, run:
    $ ./kmscon --help
  You can then run kmscon with:
    $ ./kmscon [options]

  For debug output use "--debug". For verbose output use "--verbose".
  With "--xkb-layout=<lang>" you can switch the keyboard layout.
  See "man kmscon" / kmscon(1) for more information.

== License ==

  This software is licensed under the terms of an MIT-like license. Please see
  ./COPYING for further information.

== FAQ ==

  Please see: http://www.freedesktop.org/wiki/Software/kmscon

== Contact ==

  This software is maintained by:
    David Herrmann <dh.herrmann@gmail.com>
  If you have any questions, do not hesitate to contact one of the maintainers.
Something went wrong with that request. Please try again.