freebsd-skq/sys
Colin Percival ee97b2336a Speed up vt(4) by keeping a record of the most recently drawn character and
the foreground and background colours.  In bitblt_text functions, compare
values to this cache and don't re-draw the characters if they haven't changed.
When invalidating the display, clear this cache in order to force characters
to be redrawn; also force full redraws between suspend/resume pairs since odd
artifacts can otherwise result.

When scrolling the display (which is where most time is spent within the vt
driver) this yields a significant performance improvement if most lines are
less than the width of the terminal, since this avoids re-drawing blanks on
top of blanks.

(Note that "re-drawing" here includes writing to the VGA text mode buffer; on
virtualized systems this can be extremely slow since it triggers a glyph
being rendered onto a 640x480 screen).

On a c5.4xlarge EC2 instance (with emulated text mode VGA) this cuts the time
spent in vt(4) during the kernel boot from 1200 ms to 700ms; on my laptop
(with a 3200x1800 display) the corresponding time is reduced from 970 ms down
to 155 ms.

Reviewed by:	imp, cem
Approved by:	re (gjb)
Relnotes:	Significant speedup in vt(4) and the system boot generally.
Differential Revision:	https://reviews.freebsd.org/D16723
2018-08-25 16:14:56 +00:00
..
amd64 Unify amd64 and i386 vmspace0 pmap activation. 2018-08-25 15:21:28 +00:00
arm Revert drm2 removal. 2018-08-24 00:02:00 +00:00
arm64 a10_timer: Update the driver so we can use it on other SoC 2018-08-23 18:46:05 +00:00
bsm
cam Make NVMe compatible with the original API 2018-08-22 04:29:24 +00:00
cddl Unblock speculative prefetcher also on pool creation. 2018-08-24 01:59:25 +00:00
compat Eliminate kmem_malloc()'s unused arena parameter. (The arena parameter 2018-08-21 16:43:46 +00:00
conf Update head from ALPHA2 to ALPHA3 as part of the 12.0-RELEASE 2018-08-24 00:25:25 +00:00
contrib Revert drm2 removal. 2018-08-24 00:02:00 +00:00
crypto Update userland arc4random() with OpenBSD's Chacha20 based arc4random(). 2018-08-19 17:40:50 +00:00
ddb add an option for ddb ps command to print process arguments 2018-08-09 11:21:31 +00:00
dev Speed up vt(4) by keeping a record of the most recently drawn character and 2018-08-25 16:14:56 +00:00
dts arm64: Add DTS overlays for A64 2018-08-24 15:00:36 +00:00
fs FUSE extattrs: fix issue when neither uio nor size were not passed to VOP_* (cosmetic only). 2018-08-21 18:50:29 +00:00
gdb
geom OpenCrypto: Convert sessions to opaque handles instead of integers 2018-07-18 00:56:25 +00:00
gnu dts: Import DTS for arm64 2018-08-23 13:21:01 +00:00
i386 Remove dead code in i386 cpu_throw(). 2018-08-25 15:31:23 +00:00
isa Back out r338035 until Warner is finished churning GSoC PNP patches 2018-08-19 00:46:22 +00:00
kern Add a new device flag: DF_ATTACHED_ONCE 2018-08-23 05:06:16 +00:00
kgssapi OpenCrypto: Convert sessions to opaque handles instead of integers 2018-07-18 00:56:25 +00:00
libkern Sync strlcpy with userland version, again 2018-06-21 17:35:13 +00:00
mips Prepare the kernel linker to handle PC-relative ifunc relocations. 2018-08-22 20:44:30 +00:00
modules arm64: Add DTS overlays for A64 2018-08-24 15:00:36 +00:00
net Unbreak VLANs after r337943. 2018-08-24 21:48:13 +00:00
net80211 Fix misspellings of transmitter/transmitted 2018-08-10 20:37:32 +00:00
netgraph Remove extra M_ZERO from NG_MKRESPONSE() argument. 2018-08-20 14:35:54 +00:00
netinet Fix a shadowed variable warning. 2018-08-24 10:50:19 +00:00
netinet6 Unbreak RSS builds after r338257. Folding both RSS blocks together 2018-08-24 21:49:21 +00:00
netipsec Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
netpfil Extended pf(4) ioctl interface and pfctl(8) to allow bandwidths of 2018-08-22 19:38:48 +00:00
netsmb Make timespecadd(3) and friends public 2018-07-30 15:46:40 +00:00
nfs Switch RIB and RADIX_NODE_HEAD lock from rwlock(9) to rmlock(9). 2018-06-16 08:26:23 +00:00
nfsclient
nfsserver
nlm
ofed Only NULL check the VNET pointer when VIMAGE is enabled in ibcore. 2018-07-31 11:23:44 +00:00
opencrypto cryptosoft: Reduce generality of supported algorithm composition 2018-08-17 04:40:01 +00:00
powerpc Prepare the kernel linker to handle PC-relative ifunc relocations. 2018-08-22 20:44:30 +00:00
riscv Prepare the kernel linker to handle PC-relative ifunc relocations. 2018-08-22 20:44:30 +00:00
rpc Set SO_SNDTIMEO in the client side krpc when CLSET_TIMEOUT is done. 2018-07-20 12:03:16 +00:00
security Require that MAC label buffers be able to store a non-empty string. 2018-08-01 03:46:07 +00:00
sparc64 Prepare the kernel linker to handle PC-relative ifunc relocations. 2018-08-22 20:44:30 +00:00
sys Revert drm2 removal. 2018-08-24 00:02:00 +00:00
teken teken: Fix sequences header which was crossing the 80-col boundary 2018-05-29 08:41:44 +00:00
tests epoch_test: fix compile 2018-07-15 00:31:17 +00:00
tools make_dtb: Always add root directory in the include path 2018-08-23 13:23:21 +00:00
ufs Proper spelling of consolidation. 2018-08-23 22:35:14 +00:00
vm Either "free" or "allocated" is misleading here, since an item 2018-08-24 18:47:50 +00:00
x86 Unify amd64 and i386 vmspace0 pmap activation. 2018-08-25 15:21:28 +00:00
xdr
xen xen: add missing file from r336474 2018-07-19 10:14:52 +00:00
Makefile