j
: Next unread message k
: Previous unread message j a
: Jump to all threads
j l
: Jump to MailingList overview
Author: mcayland Date: Sun Jun 9 14:25:27 2013 New Revision: 1150 URL: http://tracker.coreboot.org/trac/openbios/changeset/1150
Log: display.fs: optimise scrolling by copying/deleting multiple scanlines at once.
Change fb8-copy-line and fb8-clear-line so that they can operate on multiple lines at once, renaming to fb8-copy-lines and fb8-clear-lines respectively. Integrate these new functions into fb8-delete-lines so that they are used when scrolling the display.
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@ilande.co.uk
Modified: trunk/openbios-devel/forth/device/display.fs
Modified: trunk/openbios-devel/forth/device/display.fs ============================================================================== --- trunk/openbios-devel/forth/device/display.fs Sun Jun 9 14:25:25 2013 (r1149) +++ trunk/openbios-devel/forth/device/display.fs Sun Jun 9 14:25:27 2013 (r1150) @@ -175,17 +175,20 @@ window-left depth-bytes * + ;
-: fb8-copy-line ( from to -- ) - fb8-line2addr swap - fb8-line2addr swap - #columns char-width * depth-bytes * move +: fb8-copy-lines ( count from to -- ) + fb8-line2addr swap + fb8-line2addr swap + #columns char-width * depth-bytes * + 3 pick * move drop ;
-: fb8-clear-line ( line -- ) - fb8-line2addr - #columns char-width * depth-bytes * - background-color fill -\ 0 fill +: fb8-clear-lines ( count line -- ) + background-color 0 + 2 pick window-top + + #columns char-width * + 5 pick + fb8-fillrect + 2drop ;
: fb8-draw-character ( char -- ) @@ -269,20 +272,14 @@ : fb8-delete-lines ( n -- ) \ numcopy = ( #lines - ( line# + n )) * char-height #lines over line# + - char-height * - - ( numcopy ) 0 ?do - dup line# + char-height * i + - line# char-height * i + - fb8-copy-line - loop - - #lines over - char-height * - over char-height * - 0 ?do - dup i + fb8-clear-line - loop + over line# + char-height * + line# char-height * + fb8-copy-lines
- 2drop + #lines over - char-height * + dup #lines char-height * swap - swap + fb8-clear-lines + drop ;