Module Name: src Committed By: macallan Date: Thu Apr 19 08:46:17 UTC 2012
Modified Files: src/sys/dev/wscons: wsdisplay_glyphcache.c wsdisplay_glyphcachevar.h Log Message: no need to convert cell number to coordinates every time we draw a glyph from cache - just stick the coordinates directly into the map To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/dev/wscons/wsdisplay_glyphcache.c \ src/sys/dev/wscons/wsdisplay_glyphcachevar.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/wscons/wsdisplay_glyphcache.c diff -u src/sys/dev/wscons/wsdisplay_glyphcache.c:1.1 src/sys/dev/wscons/wsdisplay_glyphcache.c:1.2 --- src/sys/dev/wscons/wsdisplay_glyphcache.c:1.1 Thu Feb 16 17:29:21 2012 +++ src/sys/dev/wscons/wsdisplay_glyphcache.c Thu Apr 19 08:46:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: wsdisplay_glyphcache.c,v 1.1 2012/02/16 17:29:21 macallan Exp $ */ +/* $NetBSD: wsdisplay_glyphcache.c,v 1.2 2012/04/19 08:46:17 macallan Exp $ */ /* * Copyright (c) 2012 Michael Lorenz @@ -82,10 +82,10 @@ glyphcache_add(glyphcache *gc, int c, in if (gc->gc_usedcells >= gc->gc_numcells) return ENOMEM; cell = atomic_add_int_nv(&gc->gc_usedcells, 1) - 1; - gc->gc_map[c] = cell; cy = gc->gc_firstline + (cell / gc->gc_cellsperline) * gc->gc_cellheight; cx = (cell % gc->gc_cellsperline) * gc->gc_cellwidth; + gc->gc_map[c] = (cx << 16) | cy; gc->gc_bitblt(gc->gc_blitcookie, x, y, cx, cy, gc->gc_cellwidth, gc->gc_cellheight, gc->gc_rop); return 0; @@ -109,9 +109,8 @@ glyphcache_try(glyphcache *gc, int c, in cell = gc->gc_map[c]; if (cell == -1) return GC_ADD; - cy = gc->gc_firstline + - (cell / gc->gc_cellsperline) * gc->gc_cellheight; - cx = (cell % gc->gc_cellsperline) * gc->gc_cellwidth; + cy = cell & 0xffff; + cx = (cell >> 16) & 0xffff; gc->gc_bitblt(gc->gc_blitcookie, cx, cy, x, y, gc->gc_cellwidth, gc->gc_cellheight, gc->gc_rop); return GC_OK; Index: src/sys/dev/wscons/wsdisplay_glyphcachevar.h diff -u src/sys/dev/wscons/wsdisplay_glyphcachevar.h:1.1 src/sys/dev/wscons/wsdisplay_glyphcachevar.h:1.2 --- src/sys/dev/wscons/wsdisplay_glyphcachevar.h:1.1 Thu Feb 16 17:29:21 2012 +++ src/sys/dev/wscons/wsdisplay_glyphcachevar.h Thu Apr 19 08:46:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: wsdisplay_glyphcachevar.h,v 1.1 2012/02/16 17:29:21 macallan Exp $ */ +/* $NetBSD: wsdisplay_glyphcachevar.h,v 1.2 2012/04/19 08:46:17 macallan Exp $ */ /* * Copyright (c) 2012 Michael Lorenz @@ -34,7 +34,7 @@ typedef struct _glyphcache { /* mapping char codes to cache cells */ volatile unsigned int gc_usedcells; int gc_numcells; - int gc_map[256]; + uint32_t gc_map[256]; /* geometry */ int gc_cellwidth; int gc_cellheight;