freebsd-skq/lib
bde 5d04e0e4d3 Use a shadow buffer and never read from the frame buffer. Remove large slow
code for reading from the frame buffer.

Reading from the frame buffer is usually much slower than writing to
the frame buffer.  Typically 10 to 100 times slower.  It old modes,
it takes many more PIOs, and in newer modes with no PIOs writes are
often write-combined while reads remain uncached.

Reading from the frame buffer is not very common, so this change doesn't
give speedups of 10 to 100 times.  My main test case is a floodfill()
function that reads about as many pixels as it writes.  The speedups
are typically a factor of 2 to 4.

Duplicating writes to the shadow buffer is slower when no reads from the
frame buffer are done, but reads are often done for the pixels under the
mouse cursor, and doing these reads from the shadow buffer more than
compensates for the overhead of writing the shadow buffer in at least the
slower modes.  Management of the mouse cursor also becomes simpler.

The shadow buffer doesn't take any extra memory, except twice as much
in old 4-plane modes.  A buffer for holding a copy of the frame buffer
was allocated up front for use in the screen switching signal handler.
This wasn't changed when the handler was made async-signal safe.  Use
the same buffer the shadow (but make it twice as large in the 4-plane
modes), and remove large special code for writing it as well as large
special code for reading ut.  It used to have a rawer format in the
4-plane modes.  Now it has a bitmap format which takes twice as much
memory but can be written almost as fast without special code.

VIDBUFs that are not the whole frame buffer were never supported, and the
change depends on this.  Check for invalid VIDBUFs in some places and do
nothing.  The removed code did something not so good.
2019-04-21 16:17:35 +00:00
..
atf Add requiered programs (cc and c++) for some lib/atf regression tests 2019-04-04 20:34:17 +00:00
clang Add option to build LLVM RISC-V target 2019-04-07 18:24:26 +00:00
csu Create crtsavres.o for powerpc builds 2019-01-12 21:29:54 +00:00
geom Implement automatic online expansion of GELI providers - if the underlying 2019-04-03 23:57:37 +00:00
googletest Import proof-of-concept for handling GTEST_SKIP() in Environment::SetUp 2019-04-01 18:07:48 +00:00
lib80211 Move regdomain.xml to lib/lib80211/ 2018-09-19 09:29:06 +00:00
libalias Move libalias.conf to lib/libalias/libalias/ 2018-09-18 20:54:37 +00:00
libarchive MFV r345495: 2019-03-25 11:49:57 +00:00
libauditd Disable -Wcast-align in libbsm and libauditd 2018-07-28 20:04:39 +00:00
libbe libbe(3): use libzfs name validation for datasets/snapshot names 2019-04-10 14:00:03 +00:00
libbearssl Add libbearssl 2019-02-26 05:59:22 +00:00
libbegemot
libblacklist
libblocksruntime
libbluetooth Move all bluetooth related config files out of etc 2018-08-21 19:28:53 +00:00
libbsdstat
libbsm Disable -Wcast-align in libbsm and libauditd 2018-07-28 20:04:39 +00:00
libbsnmp Add IPv6 transport for bsnmp. 2019-04-02 12:50:01 +00:00
libbz2
libc Revert r346410 and r346411 2019-04-19 22:08:17 +00:00
libc_nonshared
libc++ Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
libc++experimental Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
libc++fs Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
libcalendar
libcam Make cam_error_print() decode NVMe commands. 2019-04-02 19:37:52 +00:00
libcapsicum List caph_limit_stream() in the synopsis. 2019-01-21 20:56:29 +00:00
libcasper [casper] fix compilation when casper is disabled. 2019-04-17 16:58:38 +00:00
libclang_rt Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
libcom_err
libcompat ftime appeared in 7th Edition Unix to replace gtime. 2018-10-28 02:58:15 +00:00
libcompiler_rt The routines defined in comparedf2 and comparesf2 are defined in libc 2018-02-02 05:04:43 +00:00
libcrypt libcrypt: There is no need to clear message digest context after they 2018-07-20 07:16:28 +00:00
libcuse Implement flag for telling cuse(3) clients if the peer is running in 32-bit 2019-04-18 19:04:07 +00:00
libcxxrt Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
libdevctl Implement devctl(8) command 'reset', using DEV_RESET /dev/devctl2 ioctl. 2019-04-05 19:32:26 +00:00
libdevdctl zfsd: Allow zfsd to work on any type of GEOM provider 2018-02-14 23:52:39 +00:00
libdevinfo Update to device enumeration protocol 2 2018-05-31 02:58:03 +00:00
libdevstat
libdl Add libdl to clibs package 2018-03-29 19:43:29 +00:00
libdpv Fix comparison between pointer and char literal 2018-06-16 20:00:41 +00:00
libdwarf
libedit libedit: Avoid out of bounds read in 'bind' command 2019-01-16 21:59:18 +00:00
libefivar Merge ^/head r343712 through r343806. 2019-02-05 19:50:46 +00:00
libelf Update to ELF Tool Chain r3668 2019-01-10 14:35:23 +00:00
libelftc Update to ELF Tool Chain r3668 2019-01-10 14:35:23 +00:00
libevent
libexecinfo
libexpat Update expat to 2.2.6 2018-11-04 16:08:59 +00:00
libfetch When deciding whether to send the complete URL or just the document part, 2018-11-27 16:23:17 +00:00
libfigpar Slightly improve previous commit that silenced a Clang Scan warning. 2019-01-26 22:24:15 +00:00
libgcc_eh Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
libgcc_s Fix build by escaping a line break. 2018-01-31 21:41:42 +00:00
libgeom
libgpio
libgssapi
libiconv_modules libiconv: correct undefined behavior. 2018-07-08 23:22:04 +00:00
libifconfig Make libifconfig INTERNALLIB 2019-02-25 18:22:20 +00:00
libipsec Update pfkey_open() function to set socket's write buffer size to 2018-03-11 19:26:34 +00:00
libipt Add new shared library -- libipt. 2018-03-21 14:37:04 +00:00
libjail Rename fuse(4) to fusefs(4) 2019-03-20 21:48:43 +00:00
libkiconv
libkvm Drop "All rights reserved" from my copyright statements. 2019-03-06 22:11:45 +00:00
libldns Add libssl to libldns for DANE. 2018-10-12 05:27:58 +00:00
liblzma Enable use of Capsicum sandbox when there is only one 2019-01-09 05:30:46 +00:00
libmagic Don't use CCACHE for linking. 2018-06-27 19:29:15 +00:00
libmd r338270 had the side effect of no longer installing libmd.so into /lib. 2018-08-26 17:05:43 +00:00
libmemstat With r343051 UMA switched from atomic counts to counter(9) and now kernel 2019-02-18 21:27:13 +00:00
libmilter
libmp Make libmp(3) buildable. 2018-09-19 07:05:31 +00:00
libmt Add IBM TS1160 density codes to libmt and the mt(1) man page. 2019-03-04 14:30:37 +00:00
libnandfs
libnetbsd Make timespecadd(3) and friends public 2018-07-30 15:46:40 +00:00
libnetgraph
libngatm
libnv libnv: extend the tests 2019-04-15 03:32:01 +00:00
libomp Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
libopenbsd Allow bootstrapping libopenbsd on Linux 2018-12-05 10:58:02 +00:00
libopencsd Add new shared library -- libopencsd. 2018-04-04 14:31:56 +00:00
libopie Move opieaccess to lib/libopie/ 2018-09-20 09:26:10 +00:00
libpam Really fix pam install. Don't commit late at night or you make simple mistakes. 2018-09-13 16:14:33 +00:00
libpathconv
libpcap Remove redundant header file from source list in libpcap. 2018-05-30 08:24:57 +00:00
libpe
libpjdlog Revert 335888 ("Ensure va_list is declared by including stdarg.h.") 2018-07-03 15:48:34 +00:00
libpmc Fix warnings with lib/libpmc 2019-04-14 00:06:49 +00:00
libpmcstat pmc(3)/hwpmc(4): update supported Intel processors to rely fully on the 2018-05-26 19:29:19 +00:00
libproc Detach from the child process before completing the test. 2018-07-27 20:34:15 +00:00
libprocstat Bump SPECNAMELEN to MAXNAMLEN. 2019-01-27 00:46:06 +00:00
libradius Make libradius(3) buildable. 2018-09-19 07:06:20 +00:00
libregex libregex: Mark gnuext test as an expected fail 2018-01-29 14:00:33 +00:00
librpcsec_gss
librpcsvc
librss
librt
librtld_db
libsbuf
libsdp Add support for Audio Sink and Audio Source profiles to sdpd(8). 2019-01-30 09:44:54 +00:00
libsecureboot Always report file with incorrect hash. 2019-04-09 22:20:11 +00:00
libsm
libsmb Move nsmb.conf to lib/libsmb/ 2018-09-20 09:31:27 +00:00
libsmdb
libsmutil
libsqlite3 Disable FTS3, FTS4, and RTREE in bundled and private sqlite3. 2019-01-12 17:56:23 +00:00
libstdbuf
libstdthreads
libsysdecode Drop "All rights reserved" from my copyright statements. 2019-03-06 22:11:45 +00:00
libtacplus
libtelnet
libthr Do not access mutex memory after unlock. 2019-04-12 17:27:19 +00:00
libthread_db Implement pt_fpreg_to_ucontext(), pt_ucontext_to_fpreg(). 2018-08-02 12:24:34 +00:00
libucl
libufs Continuing efforts to provide hardening of FFS. This change adds a 2018-12-11 22:14:37 +00:00
libugidfw Allow jail names (not just IDs) to be specified for: cpuset(1), ipfw(8), 2018-07-03 23:47:20 +00:00
libulog
libunbound Update Makefile for 1.8.0, apologies for the breakage. 2018-10-10 08:19:11 +00:00
libusb Fix typos in libusb. 2019-03-05 14:47:15 +00:00
libusbhid
libutil Use funlinkat in pidfile to ensure we are removing the right file. 2019-04-06 11:24:43 +00:00
libveriexec This library allows for user space applications to check file descriptors 2018-06-20 00:55:18 +00:00
libvgl Use a shadow buffer and never read from the frame buffer. Remove large slow 2019-04-21 16:17:35 +00:00
libvmmapi bhyve: Use MAP_GUARD when mapping guest memory ranges. 2018-09-06 20:29:40 +00:00
libwrap Move hosts.allow to lib/libwrap/ 2018-09-22 13:17:30 +00:00
libxo Import libxo-1.0.2 2019-04-03 21:55:39 +00:00
liby liby: rewrite yyerror.h 2018-06-17 18:05:27 +00:00
libypclnt
libz Add zdopen(3) to complement zopen(3). 2018-12-06 20:03:06 +00:00
libzstd Update to Zstandard 1.3.8 2018-12-29 21:18:01 +00:00
msun Replace calls to sin(x) and cos(x) with a single call to sincos(). 2019-02-10 08:46:07 +00:00
ncurses Fix ncurses fallback.c build with a strict build shell 2018-10-23 06:31:31 +00:00
ofed Standardize -std=c++* as CXXSTD` 2019-03-29 18:45:27 +00:00
tests
Makefile Enable building libomp.so for 32-bit x86. This is done by selectively 2019-03-18 21:04:28 +00:00
Makefile.inc