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 */