Module Name:    src
Committed By:   rin
Date:           Wed Aug 14 00:51:11 UTC 2019

Modified Files:
        src/sys/dev/rasops: rasops.h rasops15.c rasops2.c rasops24.c rasops32.c
            rasops4.c rasops8.c rasops_putchar_width.h

Log Message:
When using stamp, drop attributions other than back and foreground
colors so that stamp is not updated unnecessarily.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/sys/dev/rasops/rasops.h
cvs rdiff -u -r1.38 -r1.39 src/sys/dev/rasops/rasops15.c
cvs rdiff -u -r1.32 -r1.33 src/sys/dev/rasops/rasops2.c
cvs rdiff -u -r1.49 -r1.50 src/sys/dev/rasops/rasops24.c
cvs rdiff -u -r1.45 -r1.46 src/sys/dev/rasops/rasops32.c
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/rasops/rasops4.c
cvs rdiff -u -r1.50 -r1.51 src/sys/dev/rasops/rasops8.c
cvs rdiff -u -r1.14 -r1.15 src/sys/dev/rasops/rasops_putchar_width.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/rasops/rasops.h
diff -u src/sys/dev/rasops/rasops.h:1.47 src/sys/dev/rasops/rasops.h:1.48
--- src/sys/dev/rasops/rasops.h:1.47	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops.h	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops.h,v 1.47 2019/08/10 01:24:17 rin Exp $ */
+/* 	$NetBSD: rasops.h,v 1.48 2019/08/14 00:51:10 rin Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -203,6 +203,9 @@ void	rasops32_init(struct rasops_info *)
 #define	ATTR_BG(ri, attr) ((ri)->ri_devcmap[((uint32_t)(attr) >> 16) & 0xf])
 #define	ATTR_FG(ri, attr) ((ri)->ri_devcmap[((uint32_t)(attr) >> 24) & 0xf])
 
+#define	ATTR_MASK_BG __BITS(16, 19)
+#define	ATTR_MASK_FG __BITS(24, 27)
+
 #define	DELTA(p, d, cast) ((p) = (cast)((uint8_t *)(p) + (d)))
 
 #define	FBOFFSET(ri, row, col)						\

Index: src/sys/dev/rasops/rasops15.c
diff -u src/sys/dev/rasops/rasops15.c:1.38 src/sys/dev/rasops/rasops15.c:1.39
--- src/sys/dev/rasops/rasops15.c:1.38	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops15.c	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops15.c,v 1.38 2019/08/10 01:24:17 rin Exp $	*/
+/* 	$NetBSD: rasops15.c,v 1.39 2019/08/14 00:51:10 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops15.c,v 1.38 2019/08/10 01:24:17 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops15.c,v 1.39 2019/08/14 00:51:10 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_rasops.h"
@@ -109,7 +109,7 @@ rasops15_init(struct rasops_info *ri)
 	}
 
 #ifndef RASOPS_SMALL
-	stamp_attr = 0;
+	stamp_attr = -1;
 	stamp_ri = NULL;
 #endif
 }

Index: src/sys/dev/rasops/rasops2.c
diff -u src/sys/dev/rasops/rasops2.c:1.32 src/sys/dev/rasops/rasops2.c:1.33
--- src/sys/dev/rasops/rasops2.c:1.32	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops2.c	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops2.c,v 1.32 2019/08/10 01:24:17 rin Exp $	*/
+/* 	$NetBSD: rasops2.c,v 1.33 2019/08/14 00:51:10 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops2.c,v 1.32 2019/08/10 01:24:17 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops2.c,v 1.33 2019/08/14 00:51:10 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_rasops.h"
@@ -111,7 +111,7 @@ rasops2_init(struct rasops_info *ri)
 	}
 
 #ifndef RASOPS_SMALL
-	stamp_attr = 0;
+	stamp_attr = -1;
 	stamp_ri = NULL;
 #endif
 }

Index: src/sys/dev/rasops/rasops24.c
diff -u src/sys/dev/rasops/rasops24.c:1.49 src/sys/dev/rasops/rasops24.c:1.50
--- src/sys/dev/rasops/rasops24.c:1.49	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops24.c	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops24.c,v 1.49 2019/08/10 01:24:17 rin Exp $	*/
+/* 	$NetBSD: rasops24.c,v 1.50 2019/08/14 00:51:10 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops24.c,v 1.49 2019/08/10 01:24:17 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops24.c,v 1.50 2019/08/14 00:51:10 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_rasops.h"
@@ -120,7 +120,7 @@ rasops24_init(struct rasops_info *ri)
 	}
 
 #ifndef RASOPS_SMALL
-	stamp_attr = 0;
+	stamp_attr = -1;
 	stamp_ri = NULL;
 #endif
 }

Index: src/sys/dev/rasops/rasops32.c
diff -u src/sys/dev/rasops/rasops32.c:1.45 src/sys/dev/rasops/rasops32.c:1.46
--- src/sys/dev/rasops/rasops32.c:1.45	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops32.c	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/*	 $NetBSD: rasops32.c,v 1.45 2019/08/10 01:24:17 rin Exp $	*/
+/*	 $NetBSD: rasops32.c,v 1.46 2019/08/14 00:51:10 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops32.c,v 1.45 2019/08/10 01:24:17 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops32.c,v 1.46 2019/08/14 00:51:10 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_rasops.h"
@@ -110,7 +110,7 @@ rasops32_init(struct rasops_info *ri)
 	}
 
 #ifndef RASOPS_SMALL
-	stamp_attr = 0;
+	stamp_attr = -1;
 	stamp_ri = NULL;
 #endif
 }

Index: src/sys/dev/rasops/rasops4.c
diff -u src/sys/dev/rasops/rasops4.c:1.27 src/sys/dev/rasops/rasops4.c:1.28
--- src/sys/dev/rasops/rasops4.c:1.27	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops4.c	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops4.c,v 1.27 2019/08/10 01:24:17 rin Exp $	*/
+/* 	$NetBSD: rasops4.c,v 1.28 2019/08/14 00:51:10 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops4.c,v 1.27 2019/08/10 01:24:17 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops4.c,v 1.28 2019/08/14 00:51:10 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_rasops.h"
@@ -105,7 +105,7 @@ rasops4_init(struct rasops_info *ri)
 	}
 
 #ifndef RASOPS_SMALL
-	stamp_attr = 0;
+	stamp_attr = -1;
 	stamp_ri = NULL;
 #endif
 }

Index: src/sys/dev/rasops/rasops8.c
diff -u src/sys/dev/rasops/rasops8.c:1.50 src/sys/dev/rasops/rasops8.c:1.51
--- src/sys/dev/rasops/rasops8.c:1.50	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops8.c	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops8.c,v 1.50 2019/08/10 01:24:17 rin Exp $	*/
+/* 	$NetBSD: rasops8.c,v 1.51 2019/08/14 00:51:10 rin Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops8.c,v 1.50 2019/08/10 01:24:17 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops8.c,v 1.51 2019/08/14 00:51:10 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_rasops.h"
@@ -108,7 +108,7 @@ rasops8_init(struct rasops_info *ri)
 	}
 
 #ifndef RASOPS_SMALL
-	stamp_attr = 0;
+	stamp_attr = -1;
 	stamp_ri = NULL;
 #endif
 }

Index: src/sys/dev/rasops/rasops_putchar_width.h
diff -u src/sys/dev/rasops/rasops_putchar_width.h:1.14 src/sys/dev/rasops/rasops_putchar_width.h:1.15
--- src/sys/dev/rasops/rasops_putchar_width.h:1.14	Sat Aug 10 01:24:17 2019
+++ src/sys/dev/rasops/rasops_putchar_width.h	Wed Aug 14 00:51:10 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: rasops_putchar_width.h,v 1.14 2019/08/10 01:24:17 rin Exp $ */
+/* $NetBSD: rasops_putchar_width.h,v 1.15 2019/08/14 00:51:10 rin Exp $ */
 
 /* NetBSD: rasops8.c,v 1.41 2019/07/25 03:02:44 rin Exp  */
 /*-
@@ -210,6 +210,7 @@ NAME(RASOPS_DEPTH, RASOPS_WIDTH)(void *c
 	struct wsdisplay_font *font = PICK_FONT(ri, uc);
 	int height;
 	uint8_t *fr;
+	bool do_ul;
 	STAMP_TYPE *rp, *hp;
 
 	hp = NULL; /* XXX GCC */
@@ -227,6 +228,13 @@ NAME(RASOPS_DEPTH, RASOPS_WIDTH)(void *c
 		return;
 #endif
 
+	/*
+	 * We don't care attributions other than back/foreground
+	 * colors when using stamp.
+	 */
+	do_ul = (attr & WSATTR_UNDERLINE) != 0;
+	attr &= (ATTR_MASK_BG | ATTR_MASK_FG);
+
 	/* Recompute stamp? */
 	if (attr != stamp_attr || __predict_false(ri != stamp_ri))
 		MAKESTAMP(RASOPS_DEPTH)(ri, attr);
@@ -260,7 +268,7 @@ NAME(RASOPS_DEPTH, RASOPS_WIDTH)(void *c
 	}
 
 	/* Do underline */
-	if ((attr & WSATTR_UNDERLINE) != 0) {
+	if (do_ul) {
 		DELTA(rp, - ri->ri_stride * ri->ri_ul.off, STAMP_TYPE *);
 		if (ri->ri_hwbits)
 			DELTA(hp, - ri->ri_stride * ri->ri_ul.off,

Reply via email to