Author: jhibbits
Date: Wed Jan 29 15:50:01 2014
New Revision: 261269
URL: http://svnweb.freebsd.org/changeset/base/261269

Log:
  Micro-optimize 8-bit blanking.  This is the same as in ofw_syscons.
  
  Reviewed by:  ray
  MFC after:    1 week

Modified:
  head/sys/dev/vt/hw/ofwfb/ofwfb.c   (contents, props changed)

Modified: head/sys/dev/vt/hw/ofwfb/ofwfb.c
==============================================================================
--- head/sys/dev/vt/hw/ofwfb/ofwfb.c    Wed Jan 29 14:56:48 2014        
(r261268)
+++ head/sys/dev/vt/hw/ofwfb/ofwfb.c    Wed Jan 29 15:50:01 2014        
(r261269)
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: user/ed/newcons/sys/dev/vt/hw/ofwfb/ofwfb.c 219888 
2011-03-22 21:31:31Z ed $");
+__FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -78,17 +78,19 @@ static void
 ofwfb_blank(struct vt_device *vd, term_color_t color)
 {
        struct ofwfb_softc *sc = vd->vd_softc;
-       u_int ofs;
+       u_int ofs, size;
        uint32_t c;
 
+       size = sc->sc_stride * vd->vd_height;
        switch (sc->sc_depth) {
        case 8:
-               for (ofs = 0; ofs < sc->sc_stride*vd->vd_height; ofs++)
-                       *(uint8_t *)(sc->sc_addr + ofs) = color;
+               c = (color << 24) | (color << 16) | (color << 8) | color;
+               for (ofs = 0; ofs < size/4; ofs++)
+                       *(uint32_t *)(sc->sc_addr + 4*ofs) = c;
                break;
        case 32:
                c = sc->sc_colormap[color];
-               for (ofs = 0; ofs < sc->sc_stride*vd->vd_height; ofs++)
+               for (ofs = 0; ofs < size; ofs++)
                        *(uint32_t *)(sc->sc_addr + 4*ofs) = c;
                break;
        default:
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to