svn commit: r367431 - head/sys/dev/vt/hw/efifb

Toomas Soome tsoome at FreeBSD.org
Fri Nov 6 21:27:55 UTC 2020


Author: tsoome
Date: Fri Nov  6 21:27:54 2020
New Revision: 367431
URL: https://svnweb.freebsd.org/changeset/base/367431

Log:
  efifb: vt_generate_cons_palette() takes max color, not mask
  
  vt_generate_cons_palette() does take max values of RGB component colours, not
  mask. Also we need to set info->fb_cmsize, or vt_fb_init() will re-initialize
  the info->fb_cmap.

Modified:
  head/sys/dev/vt/hw/efifb/efifb.c

Modified: head/sys/dev/vt/hw/efifb/efifb.c
==============================================================================
--- head/sys/dev/vt/hw/efifb/efifb.c	Fri Nov  6 19:27:27 2020	(r367430)
+++ head/sys/dev/vt/hw/efifb/efifb.c	Fri Nov  6 21:27:54 2020	(r367431)
@@ -102,6 +102,7 @@ vt_efifb_init(struct vt_device *vd)
 	struct fb_info	*info;
 	struct efi_fb	*efifb;
 	caddr_t		kmdp;
+	int		roff, goff, boff;
 
 	info = vd->vd_softc;
 	if (info == NULL)
@@ -126,10 +127,14 @@ vt_efifb_init(struct vt_device *vd)
 	/* Stride in bytes, not pixels */
 	info->fb_stride = efifb->fb_stride * (info->fb_bpp / NBBY);
 
+	roff = ffs(efifb->fb_mask_red) - 1;
+	goff = ffs(efifb->fb_mask_green) - 1;
+	boff = ffs(efifb->fb_mask_blue) - 1;
 	vt_generate_cons_palette(info->fb_cmap, COLOR_FORMAT_RGB,
-	    efifb->fb_mask_red, ffs(efifb->fb_mask_red) - 1,
-	    efifb->fb_mask_green, ffs(efifb->fb_mask_green) - 1,
-	    efifb->fb_mask_blue, ffs(efifb->fb_mask_blue) - 1);
+	    efifb->fb_mask_red >> roff, roff,
+	    efifb->fb_mask_green >> goff, goff,
+	    efifb->fb_mask_blue >> boff, boff);
+	info->fb_cmsize = NCOLORS;
 
 	info->fb_size = info->fb_height * info->fb_stride;
 	info->fb_pbase = efifb->fb_addr;


More information about the svn-src-all mailing list