History log of /netbsd-current/sys/dev/rasops/rasops.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.128 15-May-2022 uwe

rasops: fix automagic box chars for stride > 1 on little endian

This makes DEC line drawing (acsc) work correctly for "iso" fonts of
large sizes, e.g. spleen16x32 on x86.


# 1.127 15-May-2022 uwe

rasops_mapchar: cosmetics, same object code.

Don't hide the important function call inside an if condition. Don't
reuse a variable, changing what it means in the middle of an
expression.


# 1.126 15-May-2022 uwe

rasops: make autogenerated box drawing chars actually used

Fix mapchar to use PICK_FONT() to match what putchar does. Otherwise
putchar will never get to see the glyph codes for the autogenerated
box drawing chars.


# 1.125 24-Dec-2021 jmcneill

wsfb: Prefer wide fonts when EDID data is available.

To give us a better chance of picking a readable font, prefer fonts that
will render at least 3mm wide instead of picking the font that will be
closest to that size.


# 1.124 04-Oct-2021 rin

rasops_reconfig: Do not abort even if font stride is not supported by
rasops_make_box_chars_*() functions; Stop using ri_optfont instead.

XXX
Add rasops_make_box_chars_24().


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
# 1.123 02-Jul-2020 rin

Remove pointless cast; dp is already uint32_t *.
No functional changes intended.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
# 1.122 10-Aug-2019 rin

Misc style clean up's.
- Introduce and use proper macros.
- Use not ambiguous variable names.
- Unify similar functions as possible as I can.
- G/C unused headers.
- Use #include <dev/rasops/foo.h> instead of "foo.h"
No particular functional changes intended.


# 1.121 10-Aug-2019 rin

Set 4-bpp devcmap in a similar manner to non-RGB case of 8-bpp.
No functional changes since this is not in use (4-bpp is monochrome).


# 1.120 09-Aug-2019 rin

Correctly check whether character is in font in rasops_mapchar().
Also, make sure that in putchar functions for completeness.


# 1.119 09-Aug-2019 rin

Fix color range overflow; we cannot make bright colors more brighter.


# 1.118 09-Aug-2019 rin

When legacy Apple 4-bpp color palette is used, make green dark so that
kernel messages are printed nicely on white background.


# 1.117 07-Aug-2019 rin

Scaling dimensions of underline by font height.

Currently,
- offset of underline is fixed to 1-row from bottom of characters, and
- height of underline is fixed to 1.

Both are good for standard 8x16 fonts. However, it is too thin for
larger fonts, especially when used on display of high resolution.

Also, 1-row offset of underline is ugly for small fonts, e.g.,
spleen5x8.

Therefore, adjust offset and height as,
- no changes for standard 16-height fonts.
- scaling by font height for larger fonts.
- set offset to zero for fonts of height smaller than 16.


# 1.116 07-Aug-2019 rin

If RI_CLEAR is set, do not forget to clear real framebuffer.


# 1.115 07-Aug-2019 rin

Stop allocating ri_buf and ri_stamp dynamically. As commented in
rasops.h, it is not safe to use kmem_alloc(9) in rasops_init();
rasops routines can be used for early putchar, which means that
UVM is not fully initialized.

Should fix a problem reported by macallan:
http://mail-index.netbsd.org/tech-kern/2019/08/02/msg025327.html

Instead of using ri_buf, inline function rasops_memcpy32() is
introduced to fill 32bit data efficiently.

Instead of using ri_stamp (per device stamp), stamp_ri is
introduced to distinguish for which device stamp is calculated.


# 1.114 07-Aug-2019 rin

Simplify rasops_do_cursor():

- Use static masks similar to that used in rasops_bitops.h,
rather than generating them on the fly.
- Use pointer for proper type to avoid unnecessary casts.


# 1.113 07-Aug-2019 rin

Fix a critical bug for rasops_copyrows() introduced in rev. 1.90:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.90

When src < dst, we have to copy backward.


# 1.112 07-Aug-2019 rin

Depth 2 is monochrome.

IMO, it is impossible to support ANSI colors on 2-bpp display; fore-
and background can be same value even if they are different colors
logically.


# 1.111 07-Aug-2019 rin

Fix black color-attribution for depths 2 and 4.


# 1.110 07-Aug-2019 rin

Simplify calculation for 12-byte alignment.
No functional changes.


# 1.109 07-Aug-2019 rin

Use _KERNEL_OPT.


# 1.108 02-Aug-2019 rin

Real fix for 24-bpp color:
- When centering screen, locate effective base address of framebuffer to
both word and 24-bit color boundary.
- Consistently convert ri_devcmap to ``big endian'' if not RI_BSWAP.

Also, fix possible bug for 15/16-bpp with RI_BSWAP (not tested).


# 1.107 02-Aug-2019 rin

Fix unaligned writes to buffer, that are introduced in 1.105:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.105


# 1.106 02-Aug-2019 rin

Oops, for rasops_copycols(), we cannot use memmove even if src == dst.
On the other hand, memmove is safe for rasops_copyrows().


# 1.105 31-Jul-2019 rin

Provide buffer capable of single-row pixels in order to make things simpler.

XXX
Bump kernel version for rasops_info later.


# 1.104 31-Jul-2019 rin

G/C ri_delta.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.103 31-Jul-2019 rin

Switch to per-device stamp, and retire stamp_mutex.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.102 31-Jul-2019 rin

Misc clean-up's:
- protect private stuff in rasops.h by _RASOPS_PRIVATE
- staticify rasops_copycols() and rasops_isgray[]
- G/C unused extern int cold


Revision tags: netbsd-9-base
# 1.101 30-Jul-2019 rin

branches: 1.101.2;
Try to improve performance when shadow framebuffer is present;
Use block copy from shadow fb to real fb, instead of repeating
the same operations to two fb's.


# 1.100 30-Jul-2019 rin

In rasops_copy{rows,cols}(), if src == dst, we have nothing to do.
Otherwise, we can use memcpy safely instead of memmove.


# 1.99 30-Jul-2019 rin

Fix catastrophe when ri_emustride != ri_stride in rasops_copyrows().


# 1.98 30-Jul-2019 rin

Treat highlighted and reversed text in the same manner to xterm.


# 1.97 29-Jul-2019 rin

Hmmm, color was still strange for 24bpp on little endian machine,
only when font width is 12.

We need to use different devcmap for that case, if we wish to share
codes for other depths/font widths as possible as we can.

XXX
What should we do for big endian? I have no big endian machines with
24bpp framebuffer...


# 1.96 29-Jul-2019 rin

Fix color on 24bpp screen for little endian.


# 1.95 29-Jul-2019 rin

Fix missing underlines on mono screen.
Style.


# 1.94 28-Jul-2019 rin

Cast attr to uint32_t before right shift to avoid undefined behavior.

Also, misc style/cosmetic changes for clarity.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.125 24-Dec-2021 jmcneill

wsfb: Prefer wide fonts when EDID data is available.

To give us a better chance of picking a readable font, prefer fonts that
will render at least 3mm wide instead of picking the font that will be
closest to that size.


# 1.124 04-Oct-2021 rin

rasops_reconfig: Do not abort even if font stride is not supported by
rasops_make_box_chars_*() functions; Stop using ri_optfont instead.

XXX
Add rasops_make_box_chars_24().


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
# 1.123 02-Jul-2020 rin

Remove pointless cast; dp is already uint32_t *.
No functional changes intended.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
# 1.122 10-Aug-2019 rin

Misc style clean up's.
- Introduce and use proper macros.
- Use not ambiguous variable names.
- Unify similar functions as possible as I can.
- G/C unused headers.
- Use #include <dev/rasops/foo.h> instead of "foo.h"
No particular functional changes intended.


# 1.121 10-Aug-2019 rin

Set 4-bpp devcmap in a similar manner to non-RGB case of 8-bpp.
No functional changes since this is not in use (4-bpp is monochrome).


# 1.120 09-Aug-2019 rin

Correctly check whether character is in font in rasops_mapchar().
Also, make sure that in putchar functions for completeness.


# 1.119 09-Aug-2019 rin

Fix color range overflow; we cannot make bright colors more brighter.


# 1.118 09-Aug-2019 rin

When legacy Apple 4-bpp color palette is used, make green dark so that
kernel messages are printed nicely on white background.


# 1.117 07-Aug-2019 rin

Scaling dimensions of underline by font height.

Currently,
- offset of underline is fixed to 1-row from bottom of characters, and
- height of underline is fixed to 1.

Both are good for standard 8x16 fonts. However, it is too thin for
larger fonts, especially when used on display of high resolution.

Also, 1-row offset of underline is ugly for small fonts, e.g.,
spleen5x8.

Therefore, adjust offset and height as,
- no changes for standard 16-height fonts.
- scaling by font height for larger fonts.
- set offset to zero for fonts of height smaller than 16.


# 1.116 07-Aug-2019 rin

If RI_CLEAR is set, do not forget to clear real framebuffer.


# 1.115 07-Aug-2019 rin

Stop allocating ri_buf and ri_stamp dynamically. As commented in
rasops.h, it is not safe to use kmem_alloc(9) in rasops_init();
rasops routines can be used for early putchar, which means that
UVM is not fully initialized.

Should fix a problem reported by macallan:
http://mail-index.netbsd.org/tech-kern/2019/08/02/msg025327.html

Instead of using ri_buf, inline function rasops_memcpy32() is
introduced to fill 32bit data efficiently.

Instead of using ri_stamp (per device stamp), stamp_ri is
introduced to distinguish for which device stamp is calculated.


# 1.114 07-Aug-2019 rin

Simplify rasops_do_cursor():

- Use static masks similar to that used in rasops_bitops.h,
rather than generating them on the fly.
- Use pointer for proper type to avoid unnecessary casts.


# 1.113 07-Aug-2019 rin

Fix a critical bug for rasops_copyrows() introduced in rev. 1.90:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.90

When src < dst, we have to copy backward.


# 1.112 07-Aug-2019 rin

Depth 2 is monochrome.

IMO, it is impossible to support ANSI colors on 2-bpp display; fore-
and background can be same value even if they are different colors
logically.


# 1.111 07-Aug-2019 rin

Fix black color-attribution for depths 2 and 4.


# 1.110 07-Aug-2019 rin

Simplify calculation for 12-byte alignment.
No functional changes.


# 1.109 07-Aug-2019 rin

Use _KERNEL_OPT.


# 1.108 02-Aug-2019 rin

Real fix for 24-bpp color:
- When centering screen, locate effective base address of framebuffer to
both word and 24-bit color boundary.
- Consistently convert ri_devcmap to ``big endian'' if not RI_BSWAP.

Also, fix possible bug for 15/16-bpp with RI_BSWAP (not tested).


# 1.107 02-Aug-2019 rin

Fix unaligned writes to buffer, that are introduced in 1.105:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.105


# 1.106 02-Aug-2019 rin

Oops, for rasops_copycols(), we cannot use memmove even if src == dst.
On the other hand, memmove is safe for rasops_copyrows().


# 1.105 31-Jul-2019 rin

Provide buffer capable of single-row pixels in order to make things simpler.

XXX
Bump kernel version for rasops_info later.


# 1.104 31-Jul-2019 rin

G/C ri_delta.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.103 31-Jul-2019 rin

Switch to per-device stamp, and retire stamp_mutex.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.102 31-Jul-2019 rin

Misc clean-up's:
- protect private stuff in rasops.h by _RASOPS_PRIVATE
- staticify rasops_copycols() and rasops_isgray[]
- G/C unused extern int cold


Revision tags: netbsd-9-base
# 1.101 30-Jul-2019 rin

branches: 1.101.2;
Try to improve performance when shadow framebuffer is present;
Use block copy from shadow fb to real fb, instead of repeating
the same operations to two fb's.


# 1.100 30-Jul-2019 rin

In rasops_copy{rows,cols}(), if src == dst, we have nothing to do.
Otherwise, we can use memcpy safely instead of memmove.


# 1.99 30-Jul-2019 rin

Fix catastrophe when ri_emustride != ri_stride in rasops_copyrows().


# 1.98 30-Jul-2019 rin

Treat highlighted and reversed text in the same manner to xterm.


# 1.97 29-Jul-2019 rin

Hmmm, color was still strange for 24bpp on little endian machine,
only when font width is 12.

We need to use different devcmap for that case, if we wish to share
codes for other depths/font widths as possible as we can.

XXX
What should we do for big endian? I have no big endian machines with
24bpp framebuffer...


# 1.96 29-Jul-2019 rin

Fix color on 24bpp screen for little endian.


# 1.95 29-Jul-2019 rin

Fix missing underlines on mono screen.
Style.


# 1.94 28-Jul-2019 rin

Cast attr to uint32_t before right shift to avoid undefined behavior.

Also, misc style/cosmetic changes for clarity.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.124 04-Oct-2021 rin

rasops_reconfig: Do not abort even if font stride is not supported by
rasops_make_box_chars_*() functions; Stop using ri_optfont instead.

XXX
Add rasops_make_box_chars_24().


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
# 1.123 02-Jul-2020 rin

Remove pointless cast; dp is already uint32_t *.
No functional changes intended.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
# 1.122 10-Aug-2019 rin

Misc style clean up's.
- Introduce and use proper macros.
- Use not ambiguous variable names.
- Unify similar functions as possible as I can.
- G/C unused headers.
- Use #include <dev/rasops/foo.h> instead of "foo.h"
No particular functional changes intended.


# 1.121 10-Aug-2019 rin

Set 4-bpp devcmap in a similar manner to non-RGB case of 8-bpp.
No functional changes since this is not in use (4-bpp is monochrome).


# 1.120 09-Aug-2019 rin

Correctly check whether character is in font in rasops_mapchar().
Also, make sure that in putchar functions for completeness.


# 1.119 09-Aug-2019 rin

Fix color range overflow; we cannot make bright colors more brighter.


# 1.118 09-Aug-2019 rin

When legacy Apple 4-bpp color palette is used, make green dark so that
kernel messages are printed nicely on white background.


# 1.117 07-Aug-2019 rin

Scaling dimensions of underline by font height.

Currently,
- offset of underline is fixed to 1-row from bottom of characters, and
- height of underline is fixed to 1.

Both are good for standard 8x16 fonts. However, it is too thin for
larger fonts, especially when used on display of high resolution.

Also, 1-row offset of underline is ugly for small fonts, e.g.,
spleen5x8.

Therefore, adjust offset and height as,
- no changes for standard 16-height fonts.
- scaling by font height for larger fonts.
- set offset to zero for fonts of height smaller than 16.


# 1.116 07-Aug-2019 rin

If RI_CLEAR is set, do not forget to clear real framebuffer.


# 1.115 07-Aug-2019 rin

Stop allocating ri_buf and ri_stamp dynamically. As commented in
rasops.h, it is not safe to use kmem_alloc(9) in rasops_init();
rasops routines can be used for early putchar, which means that
UVM is not fully initialized.

Should fix a problem reported by macallan:
http://mail-index.netbsd.org/tech-kern/2019/08/02/msg025327.html

Instead of using ri_buf, inline function rasops_memcpy32() is
introduced to fill 32bit data efficiently.

Instead of using ri_stamp (per device stamp), stamp_ri is
introduced to distinguish for which device stamp is calculated.


# 1.114 07-Aug-2019 rin

Simplify rasops_do_cursor():

- Use static masks similar to that used in rasops_bitops.h,
rather than generating them on the fly.
- Use pointer for proper type to avoid unnecessary casts.


# 1.113 07-Aug-2019 rin

Fix a critical bug for rasops_copyrows() introduced in rev. 1.90:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.90

When src < dst, we have to copy backward.


# 1.112 07-Aug-2019 rin

Depth 2 is monochrome.

IMO, it is impossible to support ANSI colors on 2-bpp display; fore-
and background can be same value even if they are different colors
logically.


# 1.111 07-Aug-2019 rin

Fix black color-attribution for depths 2 and 4.


# 1.110 07-Aug-2019 rin

Simplify calculation for 12-byte alignment.
No functional changes.


# 1.109 07-Aug-2019 rin

Use _KERNEL_OPT.


# 1.108 02-Aug-2019 rin

Real fix for 24-bpp color:
- When centering screen, locate effective base address of framebuffer to
both word and 24-bit color boundary.
- Consistently convert ri_devcmap to ``big endian'' if not RI_BSWAP.

Also, fix possible bug for 15/16-bpp with RI_BSWAP (not tested).


# 1.107 02-Aug-2019 rin

Fix unaligned writes to buffer, that are introduced in 1.105:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.105


# 1.106 02-Aug-2019 rin

Oops, for rasops_copycols(), we cannot use memmove even if src == dst.
On the other hand, memmove is safe for rasops_copyrows().


# 1.105 31-Jul-2019 rin

Provide buffer capable of single-row pixels in order to make things simpler.

XXX
Bump kernel version for rasops_info later.


# 1.104 31-Jul-2019 rin

G/C ri_delta.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.103 31-Jul-2019 rin

Switch to per-device stamp, and retire stamp_mutex.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.102 31-Jul-2019 rin

Misc clean-up's:
- protect private stuff in rasops.h by _RASOPS_PRIVATE
- staticify rasops_copycols() and rasops_isgray[]
- G/C unused extern int cold


Revision tags: netbsd-9-base
# 1.101 30-Jul-2019 rin

branches: 1.101.2;
Try to improve performance when shadow framebuffer is present;
Use block copy from shadow fb to real fb, instead of repeating
the same operations to two fb's.


# 1.100 30-Jul-2019 rin

In rasops_copy{rows,cols}(), if src == dst, we have nothing to do.
Otherwise, we can use memcpy safely instead of memmove.


# 1.99 30-Jul-2019 rin

Fix catastrophe when ri_emustride != ri_stride in rasops_copyrows().


# 1.98 30-Jul-2019 rin

Treat highlighted and reversed text in the same manner to xterm.


# 1.97 29-Jul-2019 rin

Hmmm, color was still strange for 24bpp on little endian machine,
only when font width is 12.

We need to use different devcmap for that case, if we wish to share
codes for other depths/font widths as possible as we can.

XXX
What should we do for big endian? I have no big endian machines with
24bpp framebuffer...


# 1.96 29-Jul-2019 rin

Fix color on 24bpp screen for little endian.


# 1.95 29-Jul-2019 rin

Fix missing underlines on mono screen.
Style.


# 1.94 28-Jul-2019 rin

Cast attr to uint32_t before right shift to avoid undefined behavior.

Also, misc style/cosmetic changes for clarity.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.123 02-Jul-2020 rin

Remove pointless cast; dp is already uint32_t *.
No functional changes intended.


Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
# 1.122 10-Aug-2019 rin

Misc style clean up's.
- Introduce and use proper macros.
- Use not ambiguous variable names.
- Unify similar functions as possible as I can.
- G/C unused headers.
- Use #include <dev/rasops/foo.h> instead of "foo.h"
No particular functional changes intended.


# 1.121 10-Aug-2019 rin

Set 4-bpp devcmap in a similar manner to non-RGB case of 8-bpp.
No functional changes since this is not in use (4-bpp is monochrome).


# 1.120 09-Aug-2019 rin

Correctly check whether character is in font in rasops_mapchar().
Also, make sure that in putchar functions for completeness.


# 1.119 09-Aug-2019 rin

Fix color range overflow; we cannot make bright colors more brighter.


# 1.118 09-Aug-2019 rin

When legacy Apple 4-bpp color palette is used, make green dark so that
kernel messages are printed nicely on white background.


# 1.117 07-Aug-2019 rin

Scaling dimensions of underline by font height.

Currently,
- offset of underline is fixed to 1-row from bottom of characters, and
- height of underline is fixed to 1.

Both are good for standard 8x16 fonts. However, it is too thin for
larger fonts, especially when used on display of high resolution.

Also, 1-row offset of underline is ugly for small fonts, e.g.,
spleen5x8.

Therefore, adjust offset and height as,
- no changes for standard 16-height fonts.
- scaling by font height for larger fonts.
- set offset to zero for fonts of height smaller than 16.


# 1.116 07-Aug-2019 rin

If RI_CLEAR is set, do not forget to clear real framebuffer.


# 1.115 07-Aug-2019 rin

Stop allocating ri_buf and ri_stamp dynamically. As commented in
rasops.h, it is not safe to use kmem_alloc(9) in rasops_init();
rasops routines can be used for early putchar, which means that
UVM is not fully initialized.

Should fix a problem reported by macallan:
http://mail-index.netbsd.org/tech-kern/2019/08/02/msg025327.html

Instead of using ri_buf, inline function rasops_memcpy32() is
introduced to fill 32bit data efficiently.

Instead of using ri_stamp (per device stamp), stamp_ri is
introduced to distinguish for which device stamp is calculated.


# 1.114 07-Aug-2019 rin

Simplify rasops_do_cursor():

- Use static masks similar to that used in rasops_bitops.h,
rather than generating them on the fly.
- Use pointer for proper type to avoid unnecessary casts.


# 1.113 07-Aug-2019 rin

Fix a critical bug for rasops_copyrows() introduced in rev. 1.90:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.90

When src < dst, we have to copy backward.


# 1.112 07-Aug-2019 rin

Depth 2 is monochrome.

IMO, it is impossible to support ANSI colors on 2-bpp display; fore-
and background can be same value even if they are different colors
logically.


# 1.111 07-Aug-2019 rin

Fix black color-attribution for depths 2 and 4.


# 1.110 07-Aug-2019 rin

Simplify calculation for 12-byte alignment.
No functional changes.


# 1.109 07-Aug-2019 rin

Use _KERNEL_OPT.


# 1.108 02-Aug-2019 rin

Real fix for 24-bpp color:
- When centering screen, locate effective base address of framebuffer to
both word and 24-bit color boundary.
- Consistently convert ri_devcmap to ``big endian'' if not RI_BSWAP.

Also, fix possible bug for 15/16-bpp with RI_BSWAP (not tested).


# 1.107 02-Aug-2019 rin

Fix unaligned writes to buffer, that are introduced in 1.105:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.105


# 1.106 02-Aug-2019 rin

Oops, for rasops_copycols(), we cannot use memmove even if src == dst.
On the other hand, memmove is safe for rasops_copyrows().


# 1.105 31-Jul-2019 rin

Provide buffer capable of single-row pixels in order to make things simpler.

XXX
Bump kernel version for rasops_info later.


# 1.104 31-Jul-2019 rin

G/C ri_delta.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.103 31-Jul-2019 rin

Switch to per-device stamp, and retire stamp_mutex.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.102 31-Jul-2019 rin

Misc clean-up's:
- protect private stuff in rasops.h by _RASOPS_PRIVATE
- staticify rasops_copycols() and rasops_isgray[]
- G/C unused extern int cold


Revision tags: netbsd-9-base
# 1.101 30-Jul-2019 rin

branches: 1.101.2;
Try to improve performance when shadow framebuffer is present;
Use block copy from shadow fb to real fb, instead of repeating
the same operations to two fb's.


# 1.100 30-Jul-2019 rin

In rasops_copy{rows,cols}(), if src == dst, we have nothing to do.
Otherwise, we can use memcpy safely instead of memmove.


# 1.99 30-Jul-2019 rin

Fix catastrophe when ri_emustride != ri_stride in rasops_copyrows().


# 1.98 30-Jul-2019 rin

Treat highlighted and reversed text in the same manner to xterm.


# 1.97 29-Jul-2019 rin

Hmmm, color was still strange for 24bpp on little endian machine,
only when font width is 12.

We need to use different devcmap for that case, if we wish to share
codes for other depths/font widths as possible as we can.

XXX
What should we do for big endian? I have no big endian machines with
24bpp framebuffer...


# 1.96 29-Jul-2019 rin

Fix color on 24bpp screen for little endian.


# 1.95 29-Jul-2019 rin

Fix missing underlines on mono screen.
Style.


# 1.94 28-Jul-2019 rin

Cast attr to uint32_t before right shift to avoid undefined behavior.

Also, misc style/cosmetic changes for clarity.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.122 10-Aug-2019 rin

Misc style clean up's.
- Introduce and use proper macros.
- Use not ambiguous variable names.
- Unify similar functions as possible as I can.
- G/C unused headers.
- Use #include <dev/rasops/foo.h> instead of "foo.h"
No particular functional changes intended.


# 1.121 10-Aug-2019 rin

Set 4-bpp devcmap in a similar manner to non-RGB case of 8-bpp.
No functional changes since this is not in use (4-bpp is monochrome).


# 1.120 09-Aug-2019 rin

Correctly check whether character is in font in rasops_mapchar().
Also, make sure that in putchar functions for completeness.


# 1.119 09-Aug-2019 rin

Fix color range overflow; we cannot make bright colors more brighter.


# 1.118 09-Aug-2019 rin

When legacy Apple 4-bpp color palette is used, make green dark so that
kernel messages are printed nicely on white background.


# 1.117 07-Aug-2019 rin

Scaling dimensions of underline by font height.

Currently,
- offset of underline is fixed to 1-row from bottom of characters, and
- height of underline is fixed to 1.

Both are good for standard 8x16 fonts. However, it is too thin for
larger fonts, especially when used on display of high resolution.

Also, 1-row offset of underline is ugly for small fonts, e.g.,
spleen5x8.

Therefore, adjust offset and height as,
- no changes for standard 16-height fonts.
- scaling by font height for larger fonts.
- set offset to zero for fonts of height smaller than 16.


# 1.116 07-Aug-2019 rin

If RI_CLEAR is set, do not forget to clear real framebuffer.


# 1.115 07-Aug-2019 rin

Stop allocating ri_buf and ri_stamp dynamically. As commented in
rasops.h, it is not safe to use kmem_alloc(9) in rasops_init();
rasops routines can be used for early putchar, which means that
UVM is not fully initialized.

Should fix a problem reported by macallan:
http://mail-index.netbsd.org/tech-kern/2019/08/02/msg025327.html

Instead of using ri_buf, inline function rasops_memcpy32() is
introduced to fill 32bit data efficiently.

Instead of using ri_stamp (per device stamp), stamp_ri is
introduced to distinguish for which device stamp is calculated.


# 1.114 07-Aug-2019 rin

Simplify rasops_do_cursor():

- Use static masks similar to that used in rasops_bitops.h,
rather than generating them on the fly.
- Use pointer for proper type to avoid unnecessary casts.


# 1.113 07-Aug-2019 rin

Fix a critical bug for rasops_copyrows() introduced in rev. 1.90:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.90

When src < dst, we have to copy backward.


# 1.112 07-Aug-2019 rin

Depth 2 is monochrome.

IMO, it is impossible to support ANSI colors on 2-bpp display; fore-
and background can be same value even if they are different colors
logically.


# 1.111 07-Aug-2019 rin

Fix black color-attribution for depths 2 and 4.


# 1.110 07-Aug-2019 rin

Simplify calculation for 12-byte alignment.
No functional changes.


# 1.109 07-Aug-2019 rin

Use _KERNEL_OPT.


# 1.108 02-Aug-2019 rin

Real fix for 24-bpp color:
- When centering screen, locate effective base address of framebuffer to
both word and 24-bit color boundary.
- Consistently convert ri_devcmap to ``big endian'' if not RI_BSWAP.

Also, fix possible bug for 15/16-bpp with RI_BSWAP (not tested).


# 1.107 02-Aug-2019 rin

Fix unaligned writes to buffer, that are introduced in 1.105:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops.c#rev1.105


# 1.106 02-Aug-2019 rin

Oops, for rasops_copycols(), we cannot use memmove even if src == dst.
On the other hand, memmove is safe for rasops_copyrows().


# 1.105 31-Jul-2019 rin

Provide buffer capable of single-row pixels in order to make things simpler.

XXX
Bump kernel version for rasops_info later.


# 1.104 31-Jul-2019 rin

G/C ri_delta.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.103 31-Jul-2019 rin

Switch to per-device stamp, and retire stamp_mutex.

XXX
Bump kernel version after other changes for struct rasops_info.


# 1.102 31-Jul-2019 rin

Misc clean-up's:
- protect private stuff in rasops.h by _RASOPS_PRIVATE
- staticify rasops_copycols() and rasops_isgray[]
- G/C unused extern int cold


Revision tags: netbsd-9-base
# 1.101 30-Jul-2019 rin

Try to improve performance when shadow framebuffer is present;
Use block copy from shadow fb to real fb, instead of repeating
the same operations to two fb's.


# 1.100 30-Jul-2019 rin

In rasops_copy{rows,cols}(), if src == dst, we have nothing to do.
Otherwise, we can use memcpy safely instead of memmove.


# 1.99 30-Jul-2019 rin

Fix catastrophe when ri_emustride != ri_stride in rasops_copyrows().


# 1.98 30-Jul-2019 rin

Treat highlighted and reversed text in the same manner to xterm.


# 1.97 29-Jul-2019 rin

Hmmm, color was still strange for 24bpp on little endian machine,
only when font width is 12.

We need to use different devcmap for that case, if we wish to share
codes for other depths/font widths as possible as we can.

XXX
What should we do for big endian? I have no big endian machines with
24bpp framebuffer...


# 1.96 29-Jul-2019 rin

Fix color on 24bpp screen for little endian.


# 1.95 29-Jul-2019 rin

Fix missing underlines on mono screen.
Style.


# 1.94 28-Jul-2019 rin

Cast attr to uint32_t before right shift to avoid undefined behavior.

Also, misc style/cosmetic changes for clarity.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.97 29-Jul-2019 rin

Hmmm, color was still strange for 24bpp on little endian machine,
only when font width is 12.

We need to use different devcmap for that case, if we wish to share
codes for other depths/font widths as possible as we can.

XXX
What should we do for big endian? I have no big endian machines with
24bpp framebuffer...


# 1.96 29-Jul-2019 rin

Fix color on 24bpp screen for little endian.


# 1.95 29-Jul-2019 rin

Fix missing underlines on mono screen.
Style.


# 1.94 28-Jul-2019 rin

Cast attr to uint32_t before right shift to avoid undefined behavior.

Also, misc style/cosmetic changes for clarity.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.95 29-Jul-2019 rin

Fix missing underlines on mono screen.
Style.


# 1.94 28-Jul-2019 rin

Cast attr to uint32_t before right shift to avoid undefined behavior.

Also, misc style/cosmetic changes for clarity.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.93 28-Jul-2019 martin

Free kmem_alloc'd memory with kmem_free


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.92 26-Jul-2019 rin

Put back byte-wise copy to stop using memcpy, which
does not work for device memory on some platforms.

Pointed out by Jared, many thanks!


# 1.91 26-Jul-2019 rin

Add genfb(4) driver for mac68k grfbus.
1, 2, 4, 8, 15, and 32 color-depths are supported.

ANSI colors on console are functional for depth >= 4.

Graphic applications based on wsfb API should work, provided
they can correctly handle fbi_fboffset and your color depth.

wsfb driver of Xorg 1.20 and mlterm-fb (framebuffer version of
x11/mlterm) work fine for depth == 1 || depth >= 8.

For depth == 8 (256 colors), graphic applications require
colormap callback, which is currently supported for some
internal graphic adapters, and only Civic (found on Quadra
AV series) was tested. Register definition and its usage are
taken from Linux. You can easily support other adapters if
Linux supports that.

Have fun, and any problem reports are welcomed!


# 1.90 26-Jul-2019 rin

Replace manually unrolled loops with memcpy/memmove or simple loops.
Modern compilers are smart enough; there's no measurable changes in
performance even on MC68040 with optimization level -Os.

Also, convert loop of byte-wise copy into memset.


# 1.89 26-Jul-2019 rin

Misc creen up for rasops.c:

- sort headers
- return error value instead of panic
- use uintptr_t for cast pointer to integer
- use macros appropriately
- use __func__
- some consistency check ifndef DEBUG
- try to avoid undefined behaviors related to shift
- convert malloc/free to kmem_alloc/kmem_free
- convert MIN to uimin
- style


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.88 25-Jul-2019 rin

Misc cleen up:
- Make 32bit mask unsigned
- DPRINTF --> __nothing ifndef DEBUG_RASOPS
- "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x);
- KNF

No functional changes intended.


# 1.87 25-Jul-2019 rin

For kUBSan, avoid undefined behaviors even if harmless.
No functional changes intended.

Requested by uwe.


# 1.86 24-Jul-2019 rin

Oops, revert unintentional changes.


# 1.85 24-Jul-2019 rin

Well, masks do not have to be updated every time in loop.
Calculate them in advance even if it may be bogus.


# 1.84 24-Jul-2019 rin

Simplify logic and tiny clean-up.


# 1.83 24-Jul-2019 rin

Avoid shift-count overflow to fix strange cursor behaviors on amd64
when font width is odd.


# 1.82 24-Jul-2019 rin

Use unsigned integers for binary data storage.
No functional changes intended.


# 1.81 24-Jul-2019 rin

Style:
- u_char --> uint8_t
- u_int*_t --> uint*_t

No functional changes.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.80 21-Jul-2019 rin

Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.


Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8; 1.77.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


Revision tags: isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
# 1.79 04-Dec-2018 mlelstv

rasops reused wscons attribute bits for internal control.
- make upper 4 attribute bits available for such use
- use wscons flag names instead of literal constants.


# 1.78 29-Nov-2018 macallan

rasops_do_cursor():
- simplify & sanitize the unaligned case
- use only 32bit accesses
... no longer crash with odd sized fonts in 8bit


Revision tags: pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 jdolecek-ncqfixes-base pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
# 1.77 01-Jun-2017 chs

branches: 1.77.8;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.2; 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.77 01-Jun-2017 chs

remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.


Revision tags: prg-localcount2-base3
# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

branches: 1.75.2;
add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


# 1.76 12-May-2017 macallan

rasops_reconfig(): don't clear flags we won't set here


Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.


Revision tags: prg-localcount2-base pgoyette-localcount-20170426
# 1.75 22-Apr-2017 macallan

add RI_PREFER_ALPHA flag, for drivers that can draw such fonts by hardware


Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
# 1.74 23-Feb-2017 nonaka

reset ri->ri_hwbits too if RI_CFGDONE is set.

prevent ri->ri_hwbits from moving to center every time rasops_reconfig() is
called when RI_CENTER is set.


Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
# 1.73 18-Apr-2015 mlelstv

branches: 1.73.2; 1.73.4;
add "best match" algorithm to wsfont and use this instead of a private
function in rasops.


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.72 18-Aug-2014 riastradh

branches: 1.72.2;
Don't leak f on failure. Noted by maxv@.

Compile-tested only, with zaurus.


Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
# 1.71 19-Apr-2012 macallan

branches: 1.71.14;
add another convenience function:
rasops_get_cmap() which returns either the ANSI map or an R3G3B2 map,
depending on the rasops_info handed to it so drivers don't have to
duplicate this particular code snippet


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
# 1.70 11-Jan-2012 macallan

branches: 1.70.2; 1.70.6; 1.70.8;
make rasops_init()'s font selection code a bit less boneheaded by:
- actually trying to pick a font which gets as close as possible to the
requested terminal size
- accepting 0,0 as 'use system default' which can be changed by
options RASOPS_DEFAULT_WIDTH=100
options RASOPS_DEFAULT_HEIGHT=30
default is 80x25
- putting alpha and bitmap fonts in the same list and making wsfont_find()
aware of wether we support alpha fonts or not
- if supported, prefer alpha fonts over otherwise equally suitable bitmap
fonts


# 1.69 04-Jan-2012 macallan

rasops8 expects the colour value replicated in every byte in devcmap[], so
fix that for r3g3b2


# 1.68 28-Dec-2011 macallan

add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


# 1.67 22-Dec-2011 macallan

support anti-aliased fonts ( as in, pre-rendered alpha maps ), for now only
in rasops32 although adding support in 15, 16 and 24 would be trivial.
Enabled only if the driver explicitly requests it by setting the
RI_ENABLE_ALPHA flag.


Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base
# 1.66 21-Jul-2010 tsutsui

branches: 1.66.8; 1.66.12;
Fix typo in comment.


# 1.65 13-Jun-2010 tsutsui

Put underline properly (not upperline) on CCW screen.
Tested on hpcarm WS003SH.


# 1.64 06-May-2010 macallan

Introduce a new flag for rasops_info to keep rasops_reconfig() from trying
to allocate memory. Use this when calling rasops_reconfig() before it is safe
to call kmem_alloc().


# 1.63 04-May-2010 macallan

autogenerate box drawing characters for fonts that don't have them, put them
into an alternate font pointed at by the recently added mappings in wsfont,
adapt all putchar() methods except the rotated ones to use them
XXX no attempt has been made to make this work with rotation


Revision tags: uebayasi-xip-base1
# 1.62 17-Apr-2010 nonaka

Added Sharp W-ZERO3 series support.


Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base
# 1.61 21-Jan-2010 macallan

branches: 1.61.2; 1.61.4;
make RI_CENTER and RI_FULLCLEAR work with a shadow framebuffer


Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
# 1.60 14-Mar-2009 dsl

ANSIfy another 1261 function definitions.
The only ones left in sys are beyond by sed script!
(or in sys/dist or sys/external)
Mostly they have function pointer parameters.


# 1.59 14-Mar-2009 dsl

Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.58 28-Apr-2008 martin

branches: 1.58.8; 1.58.14;
Remove clause 3 and 4 from TNF licenses


Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
# 1.57 09-Dec-2007 jmcneill

branches: 1.57.10; 1.57.12; 1.57.14;
Merge jmcneill-pm branch.


Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
# 1.56 28-Jul-2007 mjf

branches: 1.56.4; 1.56.6; 1.56.14; 1.56.16; 1.56.18;
Implement bounds checking in some places in display driver code to avoid
the possibility of a local user panic.


Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase newlock2-base
# 1.55 02-Feb-2007 ober

branches: 1.55.6; 1.55.14;
Updates to allow Zaurus screen to rotate 90 degrees to a usable state with the keyboard. Patch from peter@ copied from OpenBSD. Feedback and OK from matt@


Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
# 1.54 16-Nov-2006 christos

branches: 1.54.2; 1.54.4;
__unused removal on arguments; approved by core.


Revision tags: yamt-splraiseipl-base2
# 1.53 12-Oct-2006 christos

- sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386


Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
# 1.52 27-Feb-2006 jmcneill

branches: 1.52.14; 1.52.16;
Fixup a performance problem in rasops_copyrows that I introduced during
the shadowfb merge.


# 1.51 18-Feb-2006 jmcneill

Add shadow framebuffer support.


# 1.50 29-Jan-2006 dsl

branches: 1.50.2; 1.50.4;
Make almost everything #include <sys/bswap.h> instead of <machine/bswap.h>
The bswap.h and endian.h files are all rather incestuous, but I want to
get the constant folding stuff into one place - sys/bswap.h


# 1.49 11-Dec-2005 christos

branches: 1.49.2;
merge ktrace-lwp.


Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
# 1.48 02-May-2005 macallan

branches: 1.48.2;
fixed tab width and formatting


# 1.47 01-May-2005 macallan

made rasops_allocattr_color() respect WS_DEFAULT_FG and WS_DEFAULT_BG instead of using white on black


Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
# 1.46 27-Feb-2005 perry

branches: 1.46.2;
nuke trailing whitespace


Revision tags: yamt-km-base2
# 1.45 04-Feb-2005 perry

de-__P


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.44 08-Nov-2003 uwe

branches: 1.44.2; 1.44.6; 1.44.8; 1.44.10; 1.44.12;
For the rasops-drawn cursor the fg/bg indices are bit inverted, so
provide complimentary colors in the upper 16 entries.


# 1.43 03-May-2003 uwe

branches: 1.43.2;
In rasops_copycols change bcopy to memmove. In that particular place
the src and dst are very likely to overlap, so using bcopy causes
garbage to be displayed


Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
# 1.42 27-Sep-2002 provos

remove trailing \n in panic(). approved perry.


Revision tags: gehenna-devsw-base
# 1.41 04-Jul-2002 junyoung

Rename rasops_alloc_cattr and rasops_alloc_mattr to
rasops_allocattr_color and rasops_allocattr_mono, respectively.


# 1.40 04-Jul-2002 junyoung

alloc_attr -> allocattr

Approved by Matthias Drochner.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base
# 1.39 13-Mar-2002 ad

branches: 1.39.4;
Reorganise the wsfont stuff slightly so that multiple display adapters
with different bit/byte order requirements can co-exist happily.


Revision tags: newlock-base ifpoll-base
# 1.38 15-Nov-2001 lukem

don't need <sys/types.h> when including <sys/param.h>


Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2
# 1.37 18-Sep-2001 wiz

Give initiali[sz]e all the "i"s it deserves.


Revision tags: post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
# 1.36 12-Feb-2001 nathanw

branches: 1.36.2; 1.36.4; 1.36.6;
Correct the ri_xorigin calculation for the RI_CENTER case again.

Original calculation (bits += (ri_stride - ri_emustride) / 2) was
incorrect because stride may be wider than visible width.

Fix in 1.33 (bits += (ri_width - ri_emustride) / 2) was incorrect
because units do not match; "bits" and "ri_emustride" are in bytes,
but "width" is in pels. Works by accident for 8bpp displays.

Change to bits += ((ri_width * bpp / 8) - ri_emustride) / 2
to correctly account for visible width and bpp.


# 1.35 02-Feb-2001 marcus

Now does character remapping depending on font encoding.


# 1.34 21-Jan-2001 takemura

Rasops supports 4bit depth.


# 1.33 19-Dec-2000 nisimura

Fix an error in xoffset calculation. Revealed in the case when
ri_width is less than ri_stride and screen is layouted RI_CENTERed.


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.32 13-Jun-2000 ad

Use my proper name.


# 1.31 12-Jun-2000 sommerfeld

Let this build on LP64 if DEBUG is defined.


Revision tags: minoura-xpg4dl-base
# 1.30 12-Apr-2000 pk

branches: 1.30.2;
* Spell shift counts in decimal and masks in hex
* Optimize numerous array references
* Cleanup whitespace turds


# 1.29 05-Apr-2000 nathanw

Advance index into rasops_cmap for each color, not per triplet.
This makes highlighing and color possible on truecolor displays.


# 1.28 04-Apr-2000 nathanw

Fix computation of ri_xorigin in RI_CENTER case; convery from bytes to
pixels, not from bytes to bytes^2/pixel.


# 1.27 14-Mar-2000 nisimura

Resolve LP64 issues.


Revision tags: chs-ubc2-newbase
# 1.26 06-Jan-2000 shin

replace WSFONT_L2R by WSDISPLAY_FONTORDER_L2R to compile again.


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.25 16-Dec-1999 ad

Dispatch another nit.


# 1.24 04-Dec-1999 drochner

-use the right namespace for screen capabilities
-make attribute decomposing a bit more friendly if the caller doesn't
care about underlines


# 1.23 02-Dec-1999 drochner

-initialize the colormap completely at compile time, to allow drivers
to use it early
-now we can declare it "const" (as "rasops_isgray[]", while we are here)
-don't use the fg/bg colors in ...alloc_attr() if the WSATTR_WSCOLORS
flag was not given - use reasonable defaults instead
-add an opaque "ri_hw" member to "rasops_info", for driver use


Revision tags: fvdl-softdep-base
# 1.22 06-Nov-1999 enami

Possible typo.


# 1.21 05-Nov-1999 ad

In rasops_do_cursor(), don't pull the mask from ri_devcmap[], just use ~0.
Needed to make cursor DTRT on NetBSD/hpcmips - from takemura.


Revision tags: comdex-fall-1999-base
# 1.20 23-Oct-1999 ad

- New option (RASOPS_SMALL) for the tight-fisted.
- Don't use int32_t/u_int32_t unless we must.
- Remove C++ single line comment delimeters that crept in.
- Remove defs pertaining to byte granularity 'ragged-edge' bitmasks.
- Move all declarations of per-depth initialization functions to rasops.h.
- Other minor cleanup.


# 1.19 04-Oct-1999 ad

branches: 1.19.2; 1.19.4; 1.19.6;
Use proper mask when RI_FORCEMONO is set and XORing cursor.


# 1.18 17-Sep-1999 ad

- Collapse forward and reverse cases in rasops_copyrows() into one
- Pull in opt_rasops.h so we know if clipping is enabled
- Some KNF


# 1.17 17-Sep-1999 ad

Clean up attribute allocation some more.


# 1.16 26-Aug-1999 thorpej

Small consistency nit.


# 1.15 26-Aug-1999 thorpej

Make monochrome attribte allocation a bit more obvious.


# 1.14 25-Aug-1999 ad

When clearing the entire display, point to the start of the framebuffer,
not start of console output. Also, do not advance by ri_delta every row.


# 1.13 24-Aug-1999 ad

- Change the semantics of rasops_init slightly
- Re-name rasops_setfont to rasops_reconfig
- Add some new run-time 'features'
- Bring all run-time 'features' under control of rasops_info::ri_flg
- Some cosmetic changes


Revision tags: chs-ubc2-base
# 1.12 21-Jul-1999 ad

- Style nits
- Kill some of the dainbramage in variable-depth copycols()


# 1.11 15-Jun-1999 ad

branches: 1.11.2;
- Don't even try to emulate WSATTR_HILIT on mono displays
- WSATTR_REVERSE is a capability of both mono/color


# 1.10 15-Jun-1999 ad

Fix stupid alignment bug. The 'slop' stuff is due for replacement with masks
RSN per the README.


# 1.9 18-May-1999 ad

Assign ownership & copyright to TNF. There is probably a procedure for this
that I am unaware of. Also some KNF.


# 1.8 15-May-1999 ad

Add diagnostic measures to check for missing font.


# 1.7 15-May-1999 ad

wsfont cookies <= 0 are invalid, not just those < 0.


# 1.6 09-May-1999 ad

In rasops_erasecols(), try word aligned case before halfword aligned.


# 1.5 29-Apr-1999 ad

Add cookie for wsfont to rasops_info.


# 1.4 26-Apr-1999 ad

Innumerable fixes and improvements. README contains list of remaining bugs
that need to be squashed.


# 1.3 13-Apr-1999 ad

Code cleanup. Add ri_bswap member to 'struct rasops_info' to indicate that
framebuffer endianness differs from CPU (for 15,16,32-bit displays).


# 1.2 13-Apr-1999 ad

Fixed licensing due to a foobar on my behalf.


# 1.1 13-Apr-1999 ad

Initial import of 'rasops', the new raster operations set for wscons/rcons.