Hi tech@,
Nothing uses the rasops4 (4-bit color depth) functions anymore.
It seems unlikely that any future new platform will ever need them.
Should we remove them?
Comments? OK?
Index: sys/conf/files
===================================================================
RCS file: /cvs/src/sys/conf/files,v
retrieving revision 1.664
diff -u -p -r1.664 files
--- sys/conf/files 13 Jul 2018 09:25:22 -0000 1.664
+++ sys/conf/files 22 Jul 2018 10:29:36 -0000
@@ -41,7 +41,6 @@ attach midi at midibus
# raster operations attributes
define rasops1
-define rasops4
define rasops8
define rasops15
define rasops16
Index: sys/dev/rasops/files.rasops
===================================================================
RCS file: /cvs/src/sys/dev/rasops/files.rasops,v
retrieving revision 1.7
diff -u -p -r1.7 files.rasops
--- sys/dev/rasops/files.rasops 15 Dec 2016 19:18:41 -0000 1.7
+++ sys/dev/rasops/files.rasops 22 Jul 2018 10:29:36 -0000
@@ -3,14 +3,13 @@
# Note: `rasops_glue' is only here to force the header file's name
# hence it must be mentioned first (shudder...)
-file dev/rasops/rasops.c ((rasops_glue | rasops1 | rasops4 | rasops8 |
+file dev/rasops/rasops.c ((rasops_glue | rasops1 | rasops8 |
rasops15 | rasops16 | rasops24 | rasops32 |
rasops_bswap | rasops_rotation) &
wsdisplay) needs-flag
-file dev/rasops/rasops_masks.c wsdisplay & (rasops1 | rasops4)
+file dev/rasops/rasops_masks.c wsdisplay & rasops1
file dev/rasops/rasops1.c wsdisplay & rasops1
-file dev/rasops/rasops4.c wsdisplay & rasops4
file dev/rasops/rasops8.c wsdisplay & rasops8
file dev/rasops/rasops15.c wsdisplay & (rasops15 | rasops16)
file dev/rasops/rasops24.c wsdisplay & rasops24
Index: sys/dev/rasops/rasops.c
===================================================================
RCS file: /cvs/src/sys/dev/rasops/rasops.c,v
retrieving revision 1.54
diff -u -p -r1.54 rasops.c
--- sys/dev/rasops/rasops.c 3 May 2018 10:05:47 -0000 1.54
+++ sys/dev/rasops/rasops.c 22 Jul 2018 10:29:37 -0000
@@ -428,11 +428,6 @@ rasops_reconfig(struct rasops_info *ri,
rasops1_init(ri);
break;
#endif
-#if NRASOPS4 > 0
- case 4:
- rasops4_init(ri);
- break;
-#endif
#if NRASOPS8 > 0
case 8:
rasops8_init(ri);
@@ -785,8 +780,6 @@ rasops_init_devcmap(struct rasops_info *
int i;
#if NRASOPS15 > 0 || NRASOPS16 > 0 || NRASOPS24 > 0 || NRASOPS32 > 0
const u_char *p;
-#endif
-#if NRASOPS4 > 0 || NRASOPS15 > 0 || NRASOPS16 > 0 || NRASOPS24 > 0 ||
NRASOPS32 > 0
int c;
#endif
@@ -798,14 +791,6 @@ rasops_init_devcmap(struct rasops_info *
}
switch (ri->ri_depth) {
-#if NRASOPS4 > 0
- case 4:
- for (i = 0; i < 16; i++) {
- c = i | (i << 4);
- ri->ri_devcmap[i] = c | (c<<8) | (c<<16) | (c<<24);
- }
- return;
-#endif
#if NRASOPS8 > 0
case 8:
for (i = 0; i < 16; i++)
Index: sys/dev/rasops/rasops.h
===================================================================
RCS file: /cvs/src/sys/dev/rasops/rasops.h,v
retrieving revision 1.22
diff -u -p -r1.22 rasops.h
--- sys/dev/rasops/rasops.h 27 Apr 2018 21:36:12 -0000 1.22
+++ sys/dev/rasops/rasops.h 22 Jul 2018 10:29:37 -0000
@@ -159,7 +159,6 @@ struct rasops_info {
* the rasops code.
*/
void rasops1_init(struct rasops_info *);
-void rasops4_init(struct rasops_info *);
void rasops8_init(struct rasops_info *);
void rasops15_init(struct rasops_info *);
void rasops24_init(struct rasops_info *);
Index: sys/dev/rasops/rasops4.c
===================================================================
RCS file: sys/dev/rasops/rasops4.c
diff -N sys/dev/rasops/rasops4.c
--- sys/dev/rasops/rasops4.c 19 Dec 2014 22:44:59 -0000 1.11
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,479 +0,0 @@
-/* $OpenBSD: rasops4.c,v 1.11 2014/12/19 22:44:59 guenther Exp $ */
-/* $NetBSD: rasops4.c,v 1.4 2001/11/15 09:48:15 lukem Exp $ */
-
-/*-
- * Copyright (c) 1999 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Andrew Doran.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/time.h>
-#include <sys/endian.h>
-
-#include <dev/wscons/wsdisplayvar.h>
-#include <dev/wscons/wsconsio.h>
-#include <dev/rasops/rasops.h>
-#include <dev/rasops/rasops_masks.h>
-
-int rasops4_copycols(void *, int, int, int, int);
-int rasops4_erasecols(void *, int, int, int, long);
-int rasops4_do_cursor(struct rasops_info *);
-int rasops4_putchar(void *, int, int col, u_int, long);
-#ifndef RASOPS_SMALL
-int rasops4_putchar8(void *, int, int col, u_int, long);
-int rasops4_putchar12(void *, int, int col, u_int, long);
-int rasops4_putchar16(void *, int, int col, u_int, long);
-void rasops4_makestamp(struct rasops_info *, long);
-
-/*
- * 4x1 stamp for optimized character blitting
- */
-static u_int16_t stamp[16];
-static long stamp_attr;
-static int stamp_mutex; /* XXX see note in README */
-#endif
-
-/*
- * Initialize rasops_info struct for this colordepth.
- */
-void
-rasops4_init(struct rasops_info *ri)
-{
- rasops_masks_init();
-
- switch (ri->ri_font->fontwidth) {
-#ifndef RASOPS_SMALL
- case 8:
- ri->ri_ops.putchar = rasops4_putchar8;
- break;
- case 12:
- ri->ri_ops.putchar = rasops4_putchar12;
- break;
- case 16:
- ri->ri_ops.putchar = rasops4_putchar16;
- break;
-#endif /* !RASOPS_SMALL */
- default:
- panic("fontwidth not 8/12/16 or RASOPS_SMALL - fixme!");
- ri->ri_ops.putchar = rasops4_putchar;
- break;
- }
-
- if ((ri->ri_font->fontwidth & 1) != 0) {
- ri->ri_ops.erasecols = rasops4_erasecols;
- ri->ri_ops.copycols = rasops4_copycols;
- ri->ri_do_cursor = rasops4_do_cursor;
- }
-}
-
-#ifdef notyet
-/*
- * Paint a single character. This is the generic version, this is ugly.
- */
-int
-rasops4_putchar(void *cookie, int row, int col, u_int uc, long attr)
-{
- int height, width, fs, rs, fb, bg, fg, lmask, rmask;
- struct rasops_info *ri;
- int32_t *rp;
- u_char *fr;
-
- ri = (struct rasops_info *)cookie;
-
-#ifdef RASOPS_CLIPPING
- /* Catches 'row < 0' case too */
- if ((unsigned)row >= (unsigned)ri->ri_rows)
- return 0;
-
- if ((unsigned)col >= (unsigned)ri->ri_cols)
- return 0;
-#endif
-
- width = ri->ri_font->fontwidth << 1;
- height = ri->ri_font->fontheight;
- col *= width;
- rp = (int32_t *)(ri->ri_bits + row * ri->ri_yscale + ((col >> 3) & ~3));
- col = col & 31;
- rs = ri->ri_stride;
-
- bg = ri->ri_devcmap[(attr >> 16) & 0xf];
- fg = ri->ri_devcmap[(attr >> 24) & 0xf];
-
- /* If fg and bg match this becomes a space character */
- if (fg == bg || uc == ' ') {
- uc = (u_int)-1;
- fr = 0; /* shutup gcc */
- fs = 0; /* shutup gcc */
- } else {
- uc -= ri->ri_font->firstchar;
- fr = (u_char *)ri->ri_font->data + uc * ri->ri_fontscale;
- fs = ri->ri_font->stride;
- }
-
- /* Single word, one mask */
- if ((col + width) <= 32) {
- rmask = rasops_pmask[col][width];
- lmask = ~rmask;
-
- if (uc == (u_int)-1) {
- bg &= rmask;
-
- while (height--) {
- *rp = (*rp & lmask) | bg;
- DELTA(rp, rs, int32_t *);
- }
- } else {
- while (height--) {
- /* get bits, mask */
- /* compose sl */
- /* mask sl */
- /* put word */
- }
- }
-
- /* Do underline */
- if (attr & 1) {
- DELTA(rp, -(ri->ri_stride << 1), int32_t *);
- *rp = (*rp & lmask) | (fg & rmask);
- }
- } else {
- lmask = ~rasops_lmask[col];
- rmask = ~rasops_rmask[(col + width) & 31];
-
- if (uc == (u_int)-1) {
- bg = bg & ~lmask;
- width = bg & ~rmask;
-
- while (height--) {
- rp[0] = (rp[0] & lmask) | bg;
- rp[1] = (rp[1] & rmask) | width;
- DELTA(rp, rs, int32_t *);
- }
- } else {
- width = 32 - col;
-
- /* NOT fontbits if bg is white */
- while (height--) {
- fb = ~(fr[3] | (fr[2] << 8) |
- (fr[1] << 16) | (fr[0] << 24));
-
- rp[0] = (rp[0] & lmask)
- | MBE((u_int)fb >> col);
-
- rp[1] = (rp[1] & rmask)
- | (MBE((u_int)fb << width) & ~rmask);
-
- fr += fs;
- DELTA(rp, rs, int32_t *);
- }
- }
-
- /* Do underline */
- if (attr & 1) {
- DELTA(rp, -(ri->ri_stride << 1), int32_t *);
- rp[0] = (rp[0] & lmask) | (fg & ~lmask);
- rp[1] = (rp[1] & rmask) | (fg & ~rmask);
- }
- }
-
- return 0;
-}
-#endif
-
-/*
- * Put a single character. This is the generic version.
- */
-int
-rasops4_putchar(void *cookie, int row, int col, u_int uc, long attr)
-{
-
- /* XXX punt */
- return (EAGAIN);
-}
-
-#ifndef RASOPS_SMALL
-/*
- * Recompute the blitting stamp.
- */
-void
-rasops4_makestamp(struct rasops_info *ri, long attr)
-{
- int i, fg, bg;
-
- fg = ri->ri_devcmap[(attr >> 24) & 0xf] & 0xf;
- bg = ri->ri_devcmap[(attr >> 16) & 0xf] & 0xf;
- stamp_attr = attr;
-
- for (i = 0; i < 16; i++) {
-#if BYTE_ORDER == LITTLE_ENDIAN
- stamp[i] = (i & 1 ? fg : bg) << 8;
- stamp[i] |= (i & 2 ? fg : bg) << 12;
- stamp[i] |= (i & 4 ? fg : bg) << 0;
- stamp[i] |= (i & 8 ? fg : bg) << 4;
-#else
- stamp[i] = (i & 1 ? fg : bg) << 0;
- stamp[i] |= (i & 2 ? fg : bg) << 4;
- stamp[i] |= (i & 4 ? fg : bg) << 8;
- stamp[i] |= (i & 8 ? fg : bg) << 12;
-#endif
- }
-}
-
-/*
- * Put a single character. This is for 8-pixel wide fonts.
- */
-int
-rasops4_putchar8(void *cookie, int row, int col, u_int uc, long attr)
-{
- struct rasops_info *ri;
- int height, fs, rs;
- u_char *fr;
- u_int16_t *rp;
-
- /* Can't risk remaking the stamp if it's already in use */
- if (stamp_mutex++) {
- stamp_mutex--;
- return rasops4_putchar(cookie, row, col, uc, attr);
- }
-
- ri = (struct rasops_info *)cookie;
-
-#ifdef RASOPS_CLIPPING
- /* Catches 'row < 0' case too */
- if ((unsigned)row >= (unsigned)ri->ri_rows) {
- stamp_mutex--;
- return 0;
- }
-
- if ((unsigned)col >= (unsigned)ri->ri_cols) {
- stamp_mutex--;
- return 0;
- }
-#endif
-
- rp = (u_int16_t *)(ri->ri_bits + row * ri->ri_yscale + col *
ri->ri_xscale);
- height = ri->ri_font->fontheight;
- rs = ri->ri_stride / sizeof(*rp);
-
- /* Recompute stamp? */
- if (attr != stamp_attr)
- rasops4_makestamp(ri, attr);
-
- if (uc == ' ') {
- u_int16_t c = stamp[0];
- while (height--) {
- rp[0] = c;
- rp[1] = c;
- rp += rs;
- }
- } else {
- uc -= ri->ri_font->firstchar;
- fr = (u_char *)ri->ri_font->data + uc * ri->ri_fontscale;
- fs = ri->ri_font->stride;
-
- while (height--) {
- rp[0] = stamp[(*fr >> 4) & 0xf];
- rp[1] = stamp[*fr & 0xf];
- fr += fs;
- rp += rs;
- }
- }
-
- /* Do underline */
- if ((attr & 1) != 0) {
- rp -= (rs << 1);
- rp[0] = stamp[15];
- rp[1] = stamp[15];
- }
-
- stamp_mutex--;
-
- return 0;
-}
-
-/*
- * Put a single character. This is for 12-pixel wide fonts.
- */
-int
-rasops4_putchar12(void *cookie, int row, int col, u_int uc, long attr)
-{
- struct rasops_info *ri;
- int height, fs, rs;
- u_char *fr;
- u_int16_t *rp;
-
- /* Can't risk remaking the stamp if it's already in use */
- if (stamp_mutex++) {
- stamp_mutex--;
- return rasops4_putchar(cookie, row, col, uc, attr);
- }
-
- ri = (struct rasops_info *)cookie;
-
-#ifdef RASOPS_CLIPPING
- /* Catches 'row < 0' case too */
- if ((unsigned)row >= (unsigned)ri->ri_rows) {
- stamp_mutex--;
- return 0;
- }
-
- if ((unsigned)col >= (unsigned)ri->ri_cols) {
- stamp_mutex--;
- return 0;
- }
-#endif
-
- rp = (u_int16_t *)(ri->ri_bits + row * ri->ri_yscale + col *
ri->ri_xscale);
- height = ri->ri_font->fontheight;
- rs = ri->ri_stride / sizeof(*rp);
-
- /* Recompute stamp? */
- if (attr != stamp_attr)
- rasops4_makestamp(ri, attr);
-
- if (uc == ' ') {
- u_int16_t c = stamp[0];
- while (height--) {
- rp[0] = c;
- rp[1] = c;
- rp[2] = c;
- rp += rs;
- }
- } else {
- uc -= ri->ri_font->firstchar;
- fr = (u_char *)ri->ri_font->data + uc * ri->ri_fontscale;
- fs = ri->ri_font->stride;
-
- while (height--) {
- rp[0] = stamp[(fr[0] >> 4) & 0xf];
- rp[1] = stamp[fr[0] & 0xf];
- rp[2] = stamp[(fr[1] >> 4) & 0xf];
- fr += fs;
- rp += rs;
- }
- }
-
- /* Do underline */
- if ((attr & 1) != 0) {
- rp -= (rs << 1);
- rp[0] = stamp[15];
- rp[1] = stamp[15];
- rp[2] = stamp[15];
- }
-
- stamp_mutex--;
-
- return 0;
-}
-
-/*
- * Put a single character. This is for 16-pixel wide fonts.
- */
-int
-rasops4_putchar16(void *cookie, int row, int col, u_int uc, long attr)
-{
- struct rasops_info *ri;
- int height, fs, rs;
- u_char *fr;
- u_int16_t *rp;
-
- /* Can't risk remaking the stamp if it's already in use */
- if (stamp_mutex++) {
- stamp_mutex--;
- return rasops4_putchar(cookie, row, col, uc, attr);
- }
-
- ri = (struct rasops_info *)cookie;
-
-#ifdef RASOPS_CLIPPING
- /* Catches 'row < 0' case too */
- if ((unsigned)row >= (unsigned)ri->ri_rows) {
- stamp_mutex--;
- return 0;
- }
-
- if ((unsigned)col >= (unsigned)ri->ri_cols) {
- stamp_mutex--;
- return 0;
- }
-#endif
-
- rp = (u_int16_t *)(ri->ri_bits + row * ri->ri_yscale + col *
ri->ri_xscale);
- height = ri->ri_font->fontheight;
- rs = ri->ri_stride / sizeof(*rp);
-
- /* Recompute stamp? */
- if (attr != stamp_attr)
- rasops4_makestamp(ri, attr);
-
- if (uc == ' ') {
- u_int16_t c = stamp[0];
- while (height--) {
- rp[0] = c;
- rp[1] = c;
- rp[2] = c;
- rp[3] = c;
- rp += rs;
- }
- } else {
- uc -= ri->ri_font->firstchar;
- fr = (u_char *)ri->ri_font->data + uc * ri->ri_fontscale;
- fs = ri->ri_font->stride;
-
- while (height--) {
- rp[0] = stamp[(fr[0] >> 4) & 0xf];
- rp[1] = stamp[fr[0] & 0xf];
- rp[2] = stamp[(fr[1] >> 4) & 0xf];
- rp[3] = stamp[fr[1] & 0xf];
- fr += fs;
- rp += rs;
- }
- }
-
- /* Do underline */
- if ((attr & 1) != 0) {
- rp -= (rs << 1);
- rp[0] = stamp[15];
- rp[1] = stamp[15];
- rp[2] = stamp[15];
- rp[3] = stamp[15];
- }
-
- stamp_mutex--;
-
- return 0;
-}
-#endif /* !RASOPS_SMALL */
-
-/*
- * Grab routines common to depths where (bpp < 8)
- */
-#define NAME(ident) rasops4_##ident
-#define PIXEL_SHIFT 2
-
-#include <dev/rasops/rasops_bitops.h>