Module Name: src Committed By: macallan Date: Wed Oct 28 04:25:13 UTC 2009
Modified Files: src/sys/dev/pci: pm2fb.c pm2reg.h Log Message: fix occasionally wrong colours in rectangle fills To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/dev/pci/pm2fb.c src/sys/dev/pci/pm2reg.h 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/pci/pm2fb.c diff -u src/sys/dev/pci/pm2fb.c:1.1 src/sys/dev/pci/pm2fb.c:1.2 --- src/sys/dev/pci/pm2fb.c:1.1 Wed Oct 28 02:10:27 2009 +++ src/sys/dev/pci/pm2fb.c Wed Oct 28 04:25:13 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pm2fb.c,v 1.1 2009/10/28 02:10:27 macallan Exp $ */ +/* $NetBSD: pm2fb.c,v 1.2 2009/10/28 04:25:13 macallan Exp $ */ /* * Copyright (c) 2009 Michael Lorenz @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pm2fb.c,v 1.1 2009/10/28 02:10:27 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pm2fb.c,v 1.2 2009/10/28 04:25:13 macallan Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -600,16 +600,18 @@ { pm2fb_wait(sc, 6); + bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_DDA_MODE, + 0); bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_CONFIG, PM2RECFG_WRITE_EN); - bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_CONST_COLOUR, + bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_BLOCK_COLOUR, colour); bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_RECT_START, (y << 16) | x); bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_RECT_SIZE, (he << 16) | wi); bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_RENDER, - PM2RE_RECTANGLE); + PM2RE_RECTANGLE | PM2RE_INC_X | PM2RE_INC_Y | PM2RE_FASTFILL); pm2fb_flush_engine(sc); } @@ -620,14 +622,14 @@ { uint32_t dir = 0; - pm2fb_wait(sc, 5); - if (yd <= ys) { dir |= PM2RE_INC_Y; } if (xd <= xs) { dir |= PM2RE_INC_X; } + pm2fb_wait(sc, 6); + bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_DDA_MODE, 0); bus_space_write_4(sc->sc_memt, sc->sc_regh, PM2_RE_CONFIG, PM2RECFG_READ_SRC | PM2RECFG_WRITE_EN | PM2RECFG_ROP_EN | (rop << 6)); Index: src/sys/dev/pci/pm2reg.h diff -u src/sys/dev/pci/pm2reg.h:1.1 src/sys/dev/pci/pm2reg.h:1.2 --- src/sys/dev/pci/pm2reg.h:1.1 Wed Oct 28 02:10:27 2009 +++ src/sys/dev/pci/pm2reg.h Wed Oct 28 04:25:13 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: pm2reg.h,v 1.1 2009/10/28 02:10:27 macallan Exp $ */ +/* $NetBSD: pm2reg.h,v 1.2 2009/10/28 04:25:13 macallan Exp $ */ /* * Copyright (c) 2009 Michael Lorenz @@ -130,4 +130,8 @@ #define PM2_RE_SYNC 0x00008c40 #define PM2_RE_FILTER_MODE 0x00008c00 #define PM2FLT_PASS_SYNC 0x00000400 +#define PM2_RE_DDA_MODE 0x000087e0 +#define PM2DDA_ENABLE 0x00000001 +#define PM2DDA_GORAUD 0x00000002 /* flat otherwise */ +#define PM2_RE_BLOCK_COLOUR 0x00008ac8 #endif /* PM2_REG_H */