genode/repos/libports/src/drivers/framebuffer/vesa
Norman Feske c81af531a3 Turn framebuffer drivers into capture clients
This patch replaces the use of the "Framebuffer" session interface by
the new "Capture" session interface in all framebuffer drivers. Thanks
to this change, those drivers have become mere clients of the nitpicker
GUI server now, and are no longer critical for the liveliness of the GUI
server.

The patch touches the following areas:

- The actual driver components. The new versions of all drivers have
  been tested on the respective hardware. Generally, the drivers
  have become simpler.

- The drivers_interactive packages for various boards. The drivers
  subsystem no longer provides a "Framebuffer" service but needs a
  valid route to the "Capture" service provided by nitpicker.

- The driver manager of Sculpt OS.

- This patch changes the role of the test-framebuffer component from a
  framebuffer client to a capture server so that drivers (capture clients)
  can be directly connected to the test component without the nitpicker
  server.

- Framebuffer driver no longer support the unbuffered mode.

- The fb_bench.run script is no longer very meaningful because it
  interplays solely with nitpicker, not with the driver directly.

- All run scripts for graphical scenarios and the related depot
  archives got adapted to the change.

Fixes #3813
2020-07-13 11:33:15 +02:00
..
include Adjust file headers to refer to the AGPLv3 2017-02-28 12:59:29 +01:00
framebuffer.cc libports: avoid using deprecated APIs 2019-01-30 13:49:55 +01:00
hw_emul.cc Streamline exception types 2017-05-31 13:16:07 +02:00
ifx86emu.cc libports: avoid using deprecated APIs 2019-01-30 13:49:55 +01:00
main.cc Turn framebuffer drivers into capture clients 2020-07-13 11:33:15 +02:00
README Change pixel format to 32 bits per pixel 2020-06-29 14:22:29 +02:00
target.mk os: name fb_drv unambigously (ref #2190) 2019-05-16 13:11:01 +02:00

This driver for x86 VBE 2.0 flat framebuffers was implemented by Sebastian
Sumpf.


Config arguments
~~~~~~~~~~~~~~~~

By default, the driver sets up a resolution of 1024x768 at 16 bit color
depth. This behaviour can be overridden by supplying the following
arguments via Genode's config mechanism:

! <config width="1024"
!         height="768"
!         depth="16"
!         buffered="no" />

The 'depth' attribute is specified in bits per pixel. If setting the
'buffered' attribute to 'yes', the VESA driver hands out a plain
memory buffer to its client and flushes the pixels to the physical
frame buffer each time, 'refresh' is called by the client. Buffered
output should be used if the client tends to read from the frame
buffer (i.e., the client performs output with alpha channel).

Note that only VESA modes but no arbitrary combination of values are
supported. To find out which graphics modes exist on your platform,
you might use the 'vbeprobe' command of the GRUB boot loader. Also,
the driver will print a list of supported modes if the specified
values are invalid.

As an alternative to letting the VESA driver set up a screen mode, the
driver is able to reuse an already initialized mode, which becomes useful
if the VESA mode is already initialized by the boot loader. If the screen
is initialized that way, the 'preinit' attribute of the 'config' node can
be set to '"yes"' to prevent the driver from changing the mode. This way,
the driver will just query the current mode and make the already
initialized framebuffer available to its client.

:Supported modes:

  '640x480', '800x600', '1024x786', '1280x1024' at 32 bits per pixel.