svn commit: r216067 - head/sys/dev/syscons

Jung-uk Kim jkim at FreeBSD.org
Mon Nov 29 22:19:19 UTC 2010


Author: jkim
Date: Mon Nov 29 22:19:19 2010
New Revision: 216067
URL: http://svn.freebsd.org/changeset/base/216067

Log:
  Honor font size for the video mode when default fonts are compiled in kernel
  and VESA mode is enabled from loader.

Modified:
  head/sys/dev/syscons/syscons.c

Modified: head/sys/dev/syscons/syscons.c
==============================================================================
--- head/sys/dev/syscons/syscons.c	Mon Nov 29 21:53:21 2010	(r216066)
+++ head/sys/dev/syscons/syscons.c	Mon Nov 29 22:19:19 2010	(r216067)
@@ -348,7 +348,9 @@ static void
 sc_set_vesa_mode(scr_stat *scp, sc_softc_t *sc, int unit)
 {
 	video_info_t info;
+	u_char *font;
 	int depth;
+	int font_size;
 	int i;
 	int vmode;
 
@@ -377,9 +379,37 @@ sc_set_vesa_mode(scr_stat *scp, sc_softc
 		vidd_get_info(sc->adp, vmode, &info);
 	}
 
+#if !defined(SC_NO_FONT_LOADING) && defined(SC_DFLT_FONT)
+	font_size = info.vi_cheight;
+#else
+	font_size = 16;
+#endif
+	if (font_size < 14)
+		font_size = 8;
+	else if (font_size >= 16)
+		font_size = 16;
+	else
+		font_size = 14;
 #ifndef SC_NO_FONT_LOADING
-	if ((sc->fonts_loaded & FONT_16) == 0)
-		return;
+	switch (font_size) {
+	case 8:
+		if ((sc->fonts_loaded & FONT_8) == 0)
+			return;
+		font = sc->font_8;
+		break;
+	case 14:
+		if ((sc->fonts_loaded & FONT_14) == 0)
+			return;
+		font = sc->font_14;
+		break;
+	case 16:
+		if ((sc->fonts_loaded & FONT_16) == 0)
+			return;
+		font = sc->font_16;
+		break;
+	}
+#else
+	font = NULL;
 #endif
 #ifdef DEV_SPLASH
 	if ((sc->flags & SC_SPLASH_SCRN) != 0)
@@ -398,16 +428,12 @@ sc_set_vesa_mode(scr_stat *scp, sc_softc
 	scp->xpixel = info.vi_width;
 	scp->ypixel = info.vi_height;
 	scp->xsize = scp->xpixel / 8;
-	scp->ysize = scp->ypixel / 16;
+	scp->ysize = scp->ypixel / font_size;
 	scp->xpos = 0;
 	scp->ypos = scp->ysize - 1;
 	scp->xoff = scp->yoff = 0;
-#ifndef SC_NO_FONT_LOADING
-	scp->font = sc->font_16;
-#else
-	scp->font = NULL;
-#endif
-	scp->font_size = 16;
+	scp->font = font;
+	scp->font_size = font_size;
 	scp->font_width = 8;
 	scp->start = scp->xsize * scp->ysize - 1;
 	scp->end = 0;


More information about the svn-src-all mailing list