summaryrefslogtreecommitdiffstats
path: root/sys/dev/syscons/scvidctl.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2010-02-23 21:51:14 +0000
committerjkim <jkim@FreeBSD.org>2010-02-23 21:51:14 +0000
commit1f5a49bf177e6b9bf4e342108408c9a02dbe0b62 (patch)
tree74511fa17ee4c97f2b6b9f1addc7cdb3567f0034 /sys/dev/syscons/scvidctl.c
parentde16302b4022f077896ab72e017bb3194f077726 (diff)
downloadFreeBSD-src-1f5a49bf177e6b9bf4e342108408c9a02dbe0b62.zip
FreeBSD-src-1f5a49bf177e6b9bf4e342108408c9a02dbe0b62.tar.gz
Yet another attempt to make palette loading more safer:
- Add a separate palette data for 8-bit DAC mode when SC_PIXEL_MODE is set and fill it up with default gray-scale palette data for text. Now we don't have to set `hint.sc.0.vesa_mode' to get the default palette data. - Add a new adapter flag, V_ADP_DAC8 to track whether the controller is using 8-bit palette format and load correct palette when switching modes. - Set 8-bit DAC mode only for non-VGA compatible graphics mode.
Diffstat (limited to 'sys/dev/syscons/scvidctl.c')
-rw-r--r--sys/dev/syscons/scvidctl.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/dev/syscons/scvidctl.c b/sys/dev/syscons/scvidctl.c
index f973169..d4f1725 100644
--- a/sys/dev/syscons/scvidctl.c
+++ b/sys/dev/syscons/scvidctl.c
@@ -725,6 +725,11 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, struct thread *td)
#endif
#ifndef SC_NO_PALETTE_LOADING
+#ifdef SC_PIXEL_MODE
+ if ((adp->va_flags & V_ADP_DAC8) != 0)
+ vidd_load_palette(adp, scp->sc->palette2);
+ else
+#endif
vidd_load_palette(adp, scp->sc->palette);
#endif
@@ -782,7 +787,10 @@ sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, struct thread *td)
if (scp == scp->sc->cur_scp) {
set_mode(scp);
#ifndef SC_NO_PALETTE_LOADING
- vidd_load_palette(adp, scp->sc->palette);
+ if ((adp->va_flags & V_ADP_DAC8) != 0)
+ vidd_load_palette(adp, scp->sc->palette2);
+ else
+ vidd_load_palette(adp, scp->sc->palette);
#endif
}
sc_clear_screen(scp);
OpenPOWER on IntegriCloud