diff options
author | jhibbits <jhibbits@FreeBSD.org> | 2013-08-06 03:09:44 +0000 |
---|---|---|
committer | jhibbits <jhibbits@FreeBSD.org> | 2013-08-06 03:09:44 +0000 |
commit | 7ea290d1eb2fec36b2a7378f8e0ed0a34c81dd3b (patch) | |
tree | 310e8724dff7860c5e9308edcb1672d64588adf4 | |
parent | e280c38ab52aadf1da86439134cdd237e7181a1e (diff) | |
download | FreeBSD-src-7ea290d1eb2fec36b2a7378f8e0ed0a34c81dd3b.zip FreeBSD-src-7ea290d1eb2fec36b2a7378f8e0ed0a34c81dd3b.tar.gz |
Micro-optimize OFW syscons 8-bit blank.
MFC after: 1 week
-rw-r--r-- | sys/powerpc/ofw/ofw_syscons.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sys/powerpc/ofw/ofw_syscons.c b/sys/powerpc/ofw/ofw_syscons.c index 0820d73..84ba302 100644 --- a/sys/powerpc/ofw/ofw_syscons.c +++ b/sys/powerpc/ofw/ofw_syscons.c @@ -586,14 +586,22 @@ ofwfb_blank_display8(video_adapter_t *adp, int mode) { struct ofwfb_softc *sc; int i; - uint8_t *addr; + uint32_t *addr; + uint32_t color; + uint32_t end; sc = (struct ofwfb_softc *)adp; - addr = (uint8_t *) sc->sc_addr; + addr = (uint32_t *) sc->sc_addr; + end = (sc->sc_stride/4) * sc->sc_height; + + /* Splat 4 pixels at once. */ + color = (ofwfb_background(SC_NORM_ATTR) << 24) | + (ofwfb_background(SC_NORM_ATTR) << 16) | + (ofwfb_background(SC_NORM_ATTR) << 8) | + (ofwfb_background(SC_NORM_ATTR)); - /* Could be done a lot faster e.g. 32-bits, or Altivec'd */ - for (i = 0; i < sc->sc_stride*sc->sc_height; i++) - *(addr + i) = ofwfb_background(SC_NORM_ATTR); + for (i = 0; i < end; i++) + *(addr + i) = color; return (0); } |