Module Name: src Committed By: macallan Date: Tue Oct 23 11:53:18 UTC 2012
Modified Files: src/sys/dev/sbus: agten.c Log Message: support anti-aliased fonts To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/dev/sbus/agten.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/sbus/agten.c diff -u src/sys/dev/sbus/agten.c:1.29 src/sys/dev/sbus/agten.c:1.30 --- src/sys/dev/sbus/agten.c:1.29 Sat Oct 20 13:52:11 2012 +++ src/sys/dev/sbus/agten.c Tue Oct 23 11:53:18 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: agten.c,v 1.29 2012/10/20 13:52:11 macallan Exp $ */ +/* $NetBSD: agten.c,v 1.30 2012/10/23 11:53:18 macallan Exp $ */ /*- * Copyright (c) 2007 Michael Lorenz @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: agten.c,v 1.29 2012/10/20 13:52:11 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: agten.c,v 1.30 2012/10/23 11:53:18 macallan Exp $"); /* * a driver for the Fujitsu AG-10e SBus framebuffer @@ -136,6 +136,7 @@ static int agten_getcmap(struct agten_s static int agten_putpalreg(struct agten_softc *, uint8_t, uint8_t, uint8_t, uint8_t); static void agten_init(struct agten_softc *); +static void agten_init_cmap(struct agten_softc *, struct rasops_info *); static void agten_gfx(struct agten_softc *); static void agten_set_video(struct agten_softc *, int); static int agten_get_video(struct agten_softc *); @@ -360,6 +361,7 @@ agten_attach(device_t parent, device_t d } /* Initialize the default color map. */ + agten_init_cmap(sc, ri); aa.console = console; aa.scrdata = &sc->sc_screenlist; @@ -434,6 +436,8 @@ agten_ioctl(void *v, void *vs, u_long cm sc->sc_mode = new_mode; if(new_mode == WSDISPLAYIO_MODE_EMUL) { agten_init(sc); + agten_init_cmap(sc, + &ms->scr_ri); vcons_redraw_screen(ms); } else { agten_gfx(sc); @@ -501,7 +505,7 @@ agten_init_screen(void *cookie, struct v ri->ri_width = sc->sc_width; ri->ri_height = sc->sc_height; ri->ri_stride = sc->sc_stride; - ri->ri_flg = RI_CENTER | RI_FULLCLEAR; + ri->ri_flg = RI_CENTER | RI_FULLCLEAR | RI_8BIT_IS_RGB | RI_ENABLE_ALPHA; ri->ri_bits = (char *)sc->sc_fb.fb_pixels; @@ -610,19 +614,10 @@ agten_putpalreg(struct agten_softc *sc, static void agten_init(struct agten_softc *sc) { - int i, j; + int i; uint32_t src, srcw; volatile uint32_t junk; - /* first we set up the colour map */ - j = 0; - for (i = 0; i < 256; i++) { - - agten_putpalreg(sc, i, rasops_cmap[j], rasops_cmap[j + 1], - rasops_cmap[j + 2]); - j += 3; - } - /* then we set up a linear LUT for 24bit colour */ agten_write_idx(sc, IBM561_CMAP_TABLE + 256); for (i = 0; i < 256; i++) { @@ -695,6 +690,21 @@ agten_init(struct agten_softc *sc) } static void +agten_init_cmap(struct agten_softc *sc, struct rasops_info *ri) +{ + int i, j; + uint8_t cmap[768]; + + rasops_get_cmap(ri, cmap, 768); + j = 0; + for (i = 0; i < 256; i++) { + + agten_putpalreg(sc, i, cmap[j], cmap[j + 1], cmap[j + 2]); + j += 3; + } +} + +static void agten_gfx(struct agten_softc *sc) { /* enable overlay transparency on colour 0x00 */