svn commit: r205982 - stable/8/sys/dev/syscons

Jung-uk Kim jkim at FreeBSD.org
Wed Mar 31 15:39:47 UTC 2010


Author: jkim
Date: Wed Mar 31 15:39:46 2010
New Revision: 205982
URL: http://svn.freebsd.org/changeset/base/205982

Log:
  MFC:	r205550, r205605, r205865
  
  Sync. pixel mode support for syscons(4) with HEAD.
  
  - Separate 24-bit pixel draw from 32-bit case.  Although it is slower, we do
  not want to write a useless zero to inaccessible memory region.
  - We only want the dummy palette for direct color mode.

Modified:
  stable/8/sys/dev/syscons/scvgarndr.c
  stable/8/sys/dev/syscons/scvidctl.c
  stable/8/sys/dev/syscons/syscons.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/dev/syscons/scvgarndr.c
==============================================================================
--- stable/8/sys/dev/syscons/scvgarndr.c	Wed Mar 31 15:32:36 2010	(r205981)
+++ stable/8/sys/dev/syscons/scvgarndr.c	Wed Mar 31 15:39:46 2010	(r205982)
@@ -181,9 +181,17 @@ static u_short mouse_or_mask[16] = {
 #define	vga_drawpxl(pos, color)						\
 	switch (scp->sc->adp->va_info.vi_depth) {			\
 		case 32:						\
-		case 24:						\
 			writel(pos, vga_palette32[color]);		\
 			break;						\
+		case 24:						\
+			if (((pos) & 1) == 0) {				\
+				writew(pos, vga_palette32[color]);	\
+				writeb(pos + 2, vga_palette32[color] >> 16);\
+			} else {					\
+				writeb(pos, vga_palette32[color]);	\
+				writew(pos + 1, vga_palette32[color] >> 8);\
+			}						\
+			break;						\
 		case 16:						\
 			if (scp->sc->adp->va_info.vi_pixel_fsizes[1] == 5)\
 				writew(pos, vga_palette15[color]);	\

Modified: stable/8/sys/dev/syscons/scvidctl.c
==============================================================================
--- stable/8/sys/dev/syscons/scvidctl.c	Wed Mar 31 15:32:36 2010	(r205981)
+++ stable/8/sys/dev/syscons/scvidctl.c	Wed Mar 31 15:39:46 2010	(r205982)
@@ -741,7 +741,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd,
 
 #ifndef SC_NO_PALETTE_LOADING
 #ifdef SC_PIXEL_MODE
-	    if ((adp->va_flags & V_ADP_DAC8) != 0)
+	    if (adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
 		vidd_load_palette(adp, scp->sc->palette2);
 	    else
 #endif
@@ -802,7 +802,7 @@ sc_vid_ioctl(struct tty *tp, u_long cmd,
 	    if (scp == scp->sc->cur_scp) {
 		set_mode(scp);
 #ifndef SC_NO_PALETTE_LOADING
-		if ((adp->va_flags & V_ADP_DAC8) != 0)
+		if (adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
 		    vidd_load_palette(adp, scp->sc->palette2);
 		else
 		    vidd_load_palette(adp, scp->sc->palette);

Modified: stable/8/sys/dev/syscons/syscons.c
==============================================================================
--- stable/8/sys/dev/syscons/syscons.c	Wed Mar 31 15:32:36 2010	(r205981)
+++ stable/8/sys/dev/syscons/syscons.c	Wed Mar 31 15:39:46 2010	(r205982)
@@ -2127,7 +2127,7 @@ restore_scrn_saver_mode(scr_stat *scp, i
     if (set_mode(scp) == 0) {
 #ifndef SC_NO_PALETTE_LOADING
 #ifdef SC_PIXEL_MODE
-	if ((scp->sc->adp->va_flags & V_ADP_DAC8) != 0)
+	if (scp->sc->adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
 	    vidd_load_palette(scp->sc->adp, scp->sc->palette2);
 	else
 #endif
@@ -2536,7 +2536,7 @@ exchange_scr(sc_softc_t *sc)
 #ifndef SC_NO_PALETTE_LOADING
     if (ISGRAPHSC(sc->old_scp)) {
 #ifdef SC_PIXEL_MODE
-	if ((sc->adp->va_flags & V_ADP_DAC8) != 0)
+	if (sc->adp->va_info.vi_mem_model == V_INFO_MM_DIRECT)
 	    vidd_load_palette(sc->adp, sc->palette2);
 	else
 #endif


More information about the svn-src-stable mailing list