Re: [PATCH 00/10] fbcon,fonts: Refactor framebuffer console rotation

Helge Deller
2026-03-31T15:08:57Z

Hi Thomas,

On 3/27/26 13:49, Thomas Zimmermann wrote:
> Refactor the framebuffer console rotation into individual components
> for glyphs, fonts and the overall fbcon state. Right now this is mixed
> up in fbcon_rotate.{c,h}. Also build cursor rotation on top of the new
> interfaces.
>
> Start with an OOB fix in patch 1. If buffer allocation fails, fbcon
> currently uses a too-small glyph buffer for output. Avoid that.
>
> Patches 2 to 4 make a number of small improvements to the font library
> and its callers.
>
> Patches 5 to 8 refactor the font rotation. Fbcon rotation rotates each
> individual glphy in a font buffer and uses the rotated buffer's glyphs
> for output. The result looks like the console buffer has been rotated
> as a whole. Split this into helpers that rotate individual glyphs and
> a helper that rotates the font buffer of these. Then reimplement fbcon
> rotation on top. Document the public font helpers.
>
> Patch 9 rebuilds cursor rotation on top of the new glyph helpers. The
> fbcon cursor is itself a glyph that has to be rotated in sync with the
> font.
>
> Patch 10 moves the state of fbcon rotation into a single place and makes
> is a build-time conditional.
>
> Tested with fbcon under bochs on Qemu.
>
> Built upon the fbcon changes at [1].
>
> [1] https://lore.kernel.org/linux-fbdev/20260309141723.137364-1-tzimmermann@suse.de/

Thanks a lot for this cleanup work!

I've applied this series to the fbdev git tree.

Helge

> Thomas Zimmermann (10):
> fbcon: Avoid OOB font access if console rotation fails
> vt: Implement helpers for struct vc_font in source file
> lib/fonts: Provide helpers for calculating glyph pitch and size
> lib/fonts: Clean up Makefile
> lib/fonts: Implement glyph rotation
> lib/fonts: Refactor glyph-pattern helpers
> lib/fonts: Refactor glyph-rotation helpers
> lib/fonts: Implement font rotation
> fbcon: Fill cursor mask in helper function
> fbcon: Put font-rotation state into separate struct
>
> drivers/tty/vt/vt.c | 34 +++
> drivers/video/fbdev/core/bitblit.c | 35 +--
> drivers/video/fbdev/core/fbcon.c | 48 ++++-
> drivers/video/fbdev/core/fbcon.h | 14 +-
> drivers/video/fbdev/core/fbcon_ccw.c | 70 ++----
> drivers/video/fbdev/core/fbcon_cw.c | 70 ++----
> drivers/video/fbdev/core/fbcon_rotate.c | 88 ++------
> drivers/video/fbdev/core/fbcon_rotate.h | 71 ------
> drivers/video/fbdev/core/fbcon_ud.c | 67 ++----
> include/linux/console_struct.h | 30 +--
> include/linux/font.h | 51 +++++
> lib/fonts/Makefile | 36 ++--
> lib/fonts/font_rotate.c | 275 ++++++++++++++++++++++++
> lib/fonts/fonts.c | 2 +-
> 14 files changed, 525 insertions(+), 366 deletions(-)
> create mode 100644 lib/fonts/font_rotate.c
>