History log of /freebsd-current/stand/common/gfx_fb.c
Revision Date Author Comments
# 6faf55c8 23-Feb-2024 Warner Losh <imp@FreeBSD.org>

loader: rename gfx_interp_md to gfx_interp_ref

We have the call to gfx_interp_ref to bring in the .o so that we get the
linker set item to add the language bindings at the right time. Where we
call it is not the right time... So the _ref name is better. Change it
before we have too many others like it.

Sponsored by: Netflix


# 9c8bf69a 15-Feb-2024 Warner Losh <imp@FreeBSD.org>

loader: Only create gfx 4th bindings when gfx is available

Only create the gfx bindings for 4th when it's compiled into the
loader. We do this with a linker set that only gets brought in to those
loaders that call gfx_framework_init. This calls gfx_interp_md() will
will drag in gfx_loader.c which will add to the linker set that
registers these bindings.

Sponsored by: Netflix
Reviewed by: kevans, jhb
Differential Revision: https://reviews.freebsd.org/D43904


# 18968b82 01-Feb-2024 Warner Losh <imp@FreeBSD.org>

loader: Move build_font_module to gfx_fb.c

The font module is part and parsel of the gfx_fb support. Move it to
gfx_fb.c where it can access the data it needs.

Sponsored by: Netflix


# 7c43148a 24-Nov-2023 Warner Losh <imp@FreeBSD.org>

stand: Automated cleanup of cdefs and other formatting

Apply the following automated changes to try to eliminate
no-longer-needed sys/cdefs.h includes as well as now-empty
blank lines in a row.

Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/
Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/
Remove /\n+#if.*\n#endif.*\n+/
Remove /^#if.*\n#endif.*\n/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/
Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/

Sponsored by: Netflix


# b3e76948 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# 798ea06f 16-Aug-2021 Elliott Mitchell <ehem+freebsd@m5p.com>

stand: Nuke double-semicolons

A distinct number of double-semicolons have ended up in FreeBSD. Take a
pass at getting rid of many of these harmless typos.

Reviewed by: emaste, imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/609
Differential Revision: https://reviews.freebsd.org/D31717


# b5e0a701 22-Dec-2021 Gordon Bergling <gbe@FreeBSD.org>

gfx_fb: Fix a typo in a source code comment

- s/decriptor/descriptor/

MFC after: 3 days


# 6102f43c 06-Dec-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: framebuffer should only be written into

Reading from Write Combining memory can be very-very slow. Try to use
shadow buffer to avoid such reads.

MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D33305


# 305ef653 04-Nov-2021 Warner Losh <imp@FreeBSD.org>

efi: switch boot_services_gone to boot_services_active

Turn the presence or absence of boot services into a positive bool (and
change its type to bool). Move declaration to efi.h in the global
variables section.

Sponsored by: Netflix

Reviewed by: tsoome, kib
Differential Revision: https://reviews.freebsd.org/D31814


# 4c7a3a70 02-Sep-2021 Toomas Soome <tsoome@FreeBSD.org>

loader.efi: fix console output after BS off

When Boot Services (BS) are switched off, we can not use BS
functions any more. Since drawn console does implement our own
Blt(), we can use it to draw the console.

However, SimpleTextOutput protocol based console output must be
blocked.

Tested by inserting printf() after ExitBootServices() call.

MFC after: 1 week


# e5a50b03 21-Aug-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: FB console does leave garbage on screen while scrolling

Scrolling screen will leave "trail" of chars from first column.
Apparently caused by cursor location mismanagement.
Make sure we do not [attempt to] set cursor out of the screen.

MFC after: 1 week


# 313724ba 30-May-2021 Colin Percival <cperciva@FreeBSD.org>

loader: Use tslog to instrument some functions

In my initial testing, these are the functions which showed up as
being worth instrumenting. More may be added later.

common/console.c: cons_probe
common/gfx_fb.c: read_list, insert_font, autoload_font
common/interp.c: interact
common/interp_lua.c: interp_init, interp_run
efi/libefi/efipart.c: efipart_readwrite
i386/libi386/biosdisk.c: bd_init, bd_open, bd_edd_io, bd_chs_io, bd_io
libsa/open.c: open
libsa/read.c: read
libsa/twiddle.c: twiddle

Note that profiling interp_run may be of questionable utility as it
may depend on user behaviour (e.g. pressing keys).

Reviewed by: kevans (earlier version)


# 5365af66 11-May-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: gfx_fb_drawrect should use GfxFbBltVideoFill

The gfx_fb_drawrect() is drawing rectangle by pixels, this can be very
slow on some systems. Use Blt() video fill primitive instead.

Testing done: Tested on mac mini 2012 where the issue was revealed

Reviewed by: yuripv
MFC after: 1 week


# d708f23e 05-Mar-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: cursor off should restore display content

When drawing cursor, we should store original display
content because there may be image data we would like to restore
when the cursor is removed.

PR: 254054
Reported by: Jose Luis Duran
MFC after: 3 days


# becaac39 20-Feb-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: use display pixel density for font autoselection

Calculate font size from 16 density independent pixels (dp) by using:
size = 16 * ppi/160 * display_factor

We are specifying font size 16dp, and assuming 1dp = 160ppi.
Also apply scaling factor 2 (display_factor).

MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D28849


# a26f7358 08-Feb-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: do not autoselect smaller font than 8x16 with high res display

The VT screen buffer size is calculated based on our default
built in (8x16) font.

With high-resolution display, we want to use at least 8x16 font,
or we will have large unused areas on screen.

MFC after: 1 week


# 96bef205 08-Feb-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: remove BORDER_PIXELS

BORDER_PIXELS is left over from picking up the source from illumos
port. Since FreeBSD VT does not use border in terminal size
calculation, there is no reason why should loader use it.

MFC after: 1 week


# 4bbfe4bf 13-Jan-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: comment on rgb_to_color_index()

Add small comment block about rgb_to_color_index().


# 1caed70c 17-Jan-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: update gfx module

Update from illumos review process.
Add more comments, drop memory buffer from blt functions.


# 3ddf7ead 16-Jan-2021 Toomas Soome <tsoome@FreeBSD.org>

loader.efi: Use Blt with gop as default

System with FB address 0x4000000000 does not draw, Blt() is doing fine.
I think, we can assume the Blt will usually work.


# 20fb2ea2 07-Jan-2021 Toomas Soome <tsoome@FreeBSD.org>

loader: really use bold font for vga text mode

8x16v turns out to be too thin and hard to read,
use bold font instead.


# 3630506b 20-Dec-2020 Toomas Soome <tsoome@FreeBSD.org>

loader: implement framebuffer console

Draw console on efi.
Add vbe framebuffer for BIOS loader (vbe off, vbe on, vbe list,
vbe set xxx).
autoload font (/boot/fonts) based on resolution and font size.
Add command loadfont (set font by file) and
variable screen.font (set font by size). Pass loaded font to kernel.

Export variables:
screen.height
screen.width
screen.depth

Add gfx primitives to draw the screen and put png image on the screen.
Rework menu draw to iterate list of consoles to enamble device specific
output.

Probably something else I forgot...

Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D27420