Module Name: src Committed By: rin Date: Sat Jul 9 13:37:13 UTC 2022
Modified Files: src/sys/dev/wsfb: genfb.c Log Message: Fix GENFB_GLYPHCACHE with shadow fb. To generate a diff of this commit: cvs rdiff -u -r1.86 -r1.87 src/sys/dev/wsfb/genfb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/wsfb/genfb.c diff -u src/sys/dev/wsfb/genfb.c:1.86 src/sys/dev/wsfb/genfb.c:1.87 --- src/sys/dev/wsfb/genfb.c:1.86 Mon Mar 28 11:21:40 2022 +++ src/sys/dev/wsfb/genfb.c Sat Jul 9 13:37:12 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: genfb.c,v 1.86 2022/03/28 11:21:40 mlelstv Exp $ */ +/* $NetBSD: genfb.c,v 1.87 2022/07/09 13:37:12 rin Exp $ */ /*- * Copyright (c) 2007 Michael Lorenz @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: genfb.c,v 1.86 2022/03/28 11:21:40 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: genfb.c,v 1.87 2022/07/09 13:37:12 rin Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1004,7 +1004,7 @@ genfb_putchar(void *cookie, int row, int struct rasops_info *ri = cookie; struct vcons_screen *scr = ri->ri_hw; struct genfb_softc *sc = scr->scr_cookie; - uint8_t *src, *dst; + uint8_t *src, *dst, *hwdst; gc_bucket *b; int i, idx, bi, cell; @@ -1084,6 +1084,16 @@ genfb_putchar(void *cookie, int row, int src += ri->ri_xscale; dst += ri->ri_stride; } + if (ri->ri_hwbits) { + src = sc->sc_cache + cell * sc->sc_cache_ri.ri_yscale; + hwdst = ri->ri_hwbits + + row * ri->ri_yscale + col * ri->ri_xscale; + for (i = 0; i < ri->ri_font->fontheight; i++) { + memcpy(hwdst, src, ri->ri_xscale); + src += ri->ri_xscale; + hwdst += ri->ri_stride; + } + } b->gb_lastread = time_uptime; return; nope: