Add a README describing libgfxinit and the build process
Change-Id: I5728095e224be428d319fac96942df5d6dd85304 Signed-off-by: Nico Huber <nico.huber@secunet.com> Reviewed-on: https://review.coreboot.org/18793 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
1d0abe468b
commit
fb4f8ce26a
|
@ -0,0 +1,91 @@
|
|||
libgfxinit
|
||||
==========
|
||||
|
||||
*libgfxinit* is a graphics initialization (aka modesetting) library
|
||||
for embedded environments. It currently supports only Intel hardware,
|
||||
more specifically the Intel Core processor line.
|
||||
|
||||
It can query and set up most kinds of displays based on their EDID
|
||||
information. You can, however, also specify particular mode lines.
|
||||
|
||||
*libgfxinit* is written in SPARK, an Ada subset with formal verifica-
|
||||
tion aspects. Absence of runtime errors can be proved automatically
|
||||
with SPARK GPL 2016.
|
||||
|
||||
|
||||
Building on Linux
|
||||
=================
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
For compilation, the GNAT Ada compiler is required. Usual package
|
||||
names in Linux distributions are `gcc-ada` and `gnat`.
|
||||
|
||||
Grab the Sources
|
||||
----------------
|
||||
|
||||
You'll need *libhwbase* and *libgfxinit*. Best is to clone the reposi-
|
||||
tories into a common parent directory (this way *libgfxinit* will know
|
||||
where to find *libhwbase*).
|
||||
|
||||
$ mkdir gfxfun && cd gfxfun
|
||||
$ git clone https://review.coreboot.org/p/libhwbase.git
|
||||
$ git clone https://review.coreboot.org/p/libgfxinit.git
|
||||
|
||||
Configure and Install libhwbase
|
||||
-------------------------------
|
||||
|
||||
Both libraries are currently configured by hand-written config files.
|
||||
You can either write your own `.config`, link one of the shipped files
|
||||
in `configs/`, e.g.:
|
||||
|
||||
$ ln -s configs/posix libhwbase/.config
|
||||
|
||||
or overwrite the config filename by specifying `cnf=<configfile>` on
|
||||
the make command line.
|
||||
|
||||
Let's install *libhwbase*. We'll need `configs/posix` to build regular
|
||||
Linux executables:
|
||||
|
||||
$ cd libhwbase
|
||||
$ make cnf=configs/posix install
|
||||
|
||||
By default this installs into a new subdirectory `dest`. You can however
|
||||
overwrite this decision by specifying `DESTDIR=`.
|
||||
|
||||
Build libgfxinit/`gfx_test`
|
||||
---------------------------
|
||||
|
||||
*libgfxinit* is configured and installed in the same manner as de-
|
||||
scribed above. You will have to select a configuration matching your
|
||||
hardware.
|
||||
|
||||
The makefile knows an additional target `gfx_test` to build a small
|
||||
Linux test application:
|
||||
|
||||
$ cd ../libgfxinit
|
||||
$ make cnf=configs/sandybridge gfx_test
|
||||
|
||||
The resulting binary is `build/gfx_test`.
|
||||
|
||||
|
||||
Testing libgfxinit on Linux
|
||||
===========================
|
||||
|
||||
In its current state `gfx_test` doesn't know how to set up a frame-
|
||||
buffer. It just assumes that enough memory is mapped. This is known
|
||||
to work well, after running the VBIOS but before the Linux driver
|
||||
*i915* took over (e.g. when booting with `nomodeset` in the kernel
|
||||
command line or with *i915* blacklisted). After running *i915* it
|
||||
only works by chance.
|
||||
|
||||
When running `gfx_test` (as root), it will ask for a single argument:
|
||||
The path to a sysfs PCI-device node, where it will find the graphics
|
||||
hardware. Usually this is PCI device 00:02.0:
|
||||
|
||||
$ sudo build/gfx_test /sys/devices/pci0000:00/0000:00:02.0/
|
||||
|
||||
If you chose the right config above, you should be presented with a
|
||||
nice test image. However, `gfx_test` is one-way only: The graphics
|
||||
hardware will stay in this state, until another driver takes over.
|
Loading…
Reference in New Issue