summaryrefslogtreecommitdiff
path: root/sys/dev/rasops
AgeCommit message (Collapse)Author
2019-11-04Pull up following revision(s) (requested by tsutsui in ticket #394):martin
sys/dev/rasops/rasops.h: revision 1.49 Fix "Alignment Fault 3" kernel failure of NetBSD/zaurus 8.1 GENERIC. structure in header files could be problematic. See my post in port-zaurus@ for details: https://mail-index.netbsd.org/port-zaurus/2019/10/31/msg000079.html Should be pulled up to netbsd-8 and netbsd-9.
2019-08-15Pull up following revision(s) (requested by rin in ticket #56):martin
sys/dev/rasops/rasops.c: revision 1.120 sys/dev/rasops/rasops.h: revision 1.40 sys/dev/rasops/rasops.c: revision 1.121 sys/dev/rasops/rasops.h: revision 1.41 sys/dev/rasops/rasops.c: revision 1.122 sys/dev/rasops/rasops.h: revision 1.42 sys/dev/rasops/rasops.h: revision 1.43 sys/dev/rasops/rasops.h: revision 1.44 sys/dev/rasops/rasops.h: revision 1.45 sys/dev/rasops/rasops.h: revision 1.46 sys/dev/rasops/rasops.h: revision 1.47 sys/dev/rasops/rasops.h: revision 1.48 sys/dev/rasops/rasops32.c: revision 1.40 sys/dev/rasops/rasops32.c: revision 1.41 sys/dev/rasops/rasops32.c: revision 1.42 sys/dev/rasops/rasops32.c: revision 1.43 sys/dev/rasops/rasops32.c: revision 1.44 sys/dev/rasops/rasops32.c: revision 1.45 sys/dev/rasops/rasops32.c: revision 1.46 sys/dev/rasops/rasops1-4_putchar.h: revision 1.1 sys/dev/rasops/rasops1-4_putchar.h: revision 1.2 sys/dev/rasops/rasops1-4_putchar.h: revision 1.3 sys/dev/rasops/rasops1_putchar_width.h: revision 1.3 sys/dev/rasops/rasops1_putchar_width.h: revision 1.4 sys/dev/rasops/rasops1_putchar_width.h: revision 1.5 sys/dev/rasops/rasops1_putchar_width.h: revision 1.6 sys/dev/rasops/README: revision 1.7 sys/dev/rasops/rasops_putchar_aa.h: revision 1.5 sys/dev/rasops/rasops_putchar_aa.h: revision 1.6 sys/dev/rasops/rasops8.c: revision 1.45 sys/dev/rasops/rasops8.c: revision 1.46 sys/dev/rasops/rasops8.c: revision 1.47 sys/dev/rasops/rasops24.c: revision 1.40 sys/dev/rasops/rasops8.c: revision 1.48 sys/dev/rasops/rasops24.c: revision 1.41 sys/dev/rasops/rasops8.c: revision 1.49 sys/dev/rasops/rasops24.c: revision 1.42 sys/dev/rasops/rasops24.c: revision 1.43 sys/dev/rasops/rasops24.c: revision 1.44 sys/dev/rasops/rasops_masks.c: revision 1.10 doc/CHANGES: revision 1.2566 sys/dev/rasops/rasops24.c: revision 1.45 doc/CHANGES: revision 1.2567 sys/dev/rasops/rasops24.c: revision 1.46 sys/dev/rasops/rasops24.c: revision 1.47 sys/dev/rasops/rasops24.c: revision 1.48 sys/dev/rasops/rasops24.c: revision 1.49 sys/dev/rasops/rasops_bitops.h: revision 1.19 sys/dev/rasops/rasops_putchar_aa.h: file removal sys/dev/wscons/wsdisplay_vcons.c: revision 1.40 sys/dev/rasops/rasops8.c: revision 1.50 sys/dev/rasops/rasops8.c: revision 1.51 sys/dev/rasops/rasops24.c: revision 1.50 sys/arch/luna68k/dev/omrasops.c: revision 1.21 sys/dev/rasops/rasops_bitops.h: revision 1.20 sys/dev/wsfb/genfb.c: revision 1.68 sys/dev/rasops/rasops_bitops.h: revision 1.21 sys/dev/wsfb/genfb.c: revision 1.69 sys/dev/rasops/rasops_putchar_width.h: revision 1.10 sys/dev/rasops/rasops_bitops.h: revision 1.22 sys/dev/rasops/rasops_putchar_width.h: revision 1.11 sys/dev/rasops/rasops_bitops.h: revision 1.23 sys/dev/rasops/rasops_putchar_width.h: revision 1.12 sys/dev/rasops/rasops_bitops.h: revision 1.24 sys/dev/rasops/rasops_putchar_width.h: revision 1.13 sys/dev/rasops/rasops_bitops.h: revision 1.25 sys/dev/rasops/rasops_putchar_width.h: revision 1.14 sys/dev/rasops/rasops_putchar_width.h: revision 1.15 sys/dev/rasops/rasops1.c: revision 1.32 sys/dev/rasops/rasops1.c: revision 1.33 sys/dev/rasops/rasops1.c: revision 1.34 sys/dev/rasops/rasops1.c: revision 1.35 sys/dev/rasops/rasops1.c: revision 1.36 sys/dev/rasops/rasops1.c: revision 1.37 sys/dev/rasops/rasops4.c: revision 1.21 sys/dev/rasops/rasops4.c: revision 1.22 sys/dev/rasops/rasops4.c: revision 1.23 sys/dev/rasops/rasops4.c: revision 1.24 sys/dev/rasops/rasops4.c: revision 1.25 sys/dev/rasops/rasops4.c: revision 1.26 sys/dev/rasops/rasops4.c: revision 1.27 sys/dev/rasops/rasops4.c: revision 1.28 sys/dev/wsfb/genfb.c: revision 1.70 sys/dev/rasops/rasops2.c: revision 1.27 sys/dev/rasops/rasops2.c: revision 1.28 share/man/man9/rasops.9: revision 1.18 sys/dev/rasops/rasops.c: revision 1.102 sys/dev/rasops/rasops2.c: revision 1.29 share/man/man9/rasops.9: revision 1.19 sys/dev/rasops/rasops.c: revision 1.103 sys/dev/rasops/rasops.c: revision 1.104 sys/dev/rasops/rasops.c: revision 1.105 sys/dev/rasops/rasops.c: revision 1.106 sys/dev/rasops/rasops.c: revision 1.107 sys/dev/rasops/rasops_putchar.h: revision 1.6 sys/dev/rasops/rasops.c: revision 1.108 sys/dev/rasops/rasops_putchar.h: revision 1.7 sys/dev/rasops/rasops.c: revision 1.109 sys/dev/rasops/rasops_putchar.h: revision 1.8 sys/dev/rasops/rasops2.c: revision 1.30 sys/dev/rasops/rasops2.c: revision 1.31 sys/dev/rasops/rasops15.c: revision 1.32 sys/dev/rasops/rasops2.c: revision 1.32 sys/dev/rasops/rasops15.c: revision 1.33 sys/dev/rasops/rasops2.c: revision 1.33 sys/dev/rasops/rasops15.c: revision 1.34 sys/dev/rasops/rasops15.c: revision 1.35 sys/dev/rasops/rasops15.c: revision 1.36 sys/dev/rasops/rasops.c: revision 1.110 sys/dev/rasops/rasops15.c: revision 1.37 sys/dev/rasops/rasops.c: revision 1.111 sys/dev/rasops/rasops15.c: revision 1.38 sys/dev/rasops/rasops.c: revision 1.112 sys/dev/rasops/rasops15.c: revision 1.39 sys/dev/rasops/rasops.c: revision 1.113 sys/dev/rasops/rasops.c: revision 1.114 sys/dev/rasops/rasops.c: revision 1.115 sys/dev/rasops/rasops_masks.h: revision 1.9 sys/dev/rasops/rasops.c: revision 1.116 sys/dev/rasops/rasops.c: revision 1.117 sys/dev/rasops/rasops.c: revision 1.118 sys/dev/rasops/rasops.c: revision 1.119 sys/dev/rasops/rasops.h: revision 1.39 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 Switch to per-device stamp, and retire stamp_mutex. Provide buffer capable of single-row pixels in order to make things simpler. Factor out copy-paste. No functional changes. When font is switched, not only putchar, but also other ri_ops can be changed by backend driver, e.g., see rasops1.c: https://nxr.netbsd.org/xref/src/sys/dev/rasops/rasops1.c#58 4 is 1 << 2, not 1 << 3... Fix erasecols and do_cursor for font width >= 32 bits. Also, some cosmetic clean-up's. Oops, for rasops_copycols(), we cannot use memmove even if src == dst. On the other hand, memmove is safe for rasops_copyrows(). 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 Support font width 32 on monochrome screen. Remove duplicate substitution. Style. No functional changes. Correct copy count. This affects ``left-to-right'' copy for region including word boundary. Fix a bug in shadow fb support for copycols on 1, 2, and 4bpp screen, which was introduced in 1.18: http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops_bitops.h#rev1.18 Add general putchar functions for 2 and 4bpp. Note that 1bpp continues to use its local version in rasops1.c, which is much faster and simpler. Cosmetic changes. No functional changes. Reflect reality. Notify size of shadow framebuffer if enabled. Fix unaligned word write's to buffer, introduced in rev 1.42: http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops24.c#rev1.42 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). Protect rasops_copy{rows,cols}() by _RASOPS_PRIVATE. Use _KERNEL_OPT. Simplify calculation for 12-byte alignment. No functional changes. Fix black color-attribution for depths 2 and 4. 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. 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. 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. Use "hp" instead of "hrp" consistently with other files. No functional changes. 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. Oops, revert an unintentional change for now. If RI_CLEAR is set, do not forget to clear real framebuffer. Modify struct rasops_info again (ride 9.99.4 bump). - remove ri_buf and friends. - remove ri_stamp and frieds. - introduce ri_ul, which will be used for scaling underline with font. Also add hack for ri_ul; adjust its size to obsoleted member, ri_delta, which was only used rasops routines internally. Now, size and offsets of all members of struct rasops_info become same with netbsd-9, -8, and -7, again. So we can safelly pull up fixes to any release branches! 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. Merge rasops_putchar_aa.h into rasops_putchar.h. Support scaling underline dimensions by font height. Separate general putchar for 1-4bpp from rasops_bitops: - Support anti-aliasing for 2bpp, which works perfectly! - Support scaling underline dimensions with font height. We support anti-aliasing for depth 2. Use switch appropriately. - Stop showing struct rasops_info; readers can read the header itself. - Correct description for optimized font widths. - Remove strange blank line. Try to improve formatting and naration. Make rasops_erase{rows,cols}() public again; hp300/diofb uses them. Pointed out by martin. When legacy Apple 4-bpp color palette is used, make green dark so that kernel messages are printed nicely on white background. Fix color range overflow; we cannot make bright colors more brighter. Correctly check whether character is in font in rasops_mapchar(). Also, make sure that in putchar functions for completeness. Fix bug introduced in rev. 1.69: http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/wsfb/genfb.c#rev1.69 is_bgr should be initialized to false. Otherwise, color becomes strange for depths 24 and 32 unless backend explicitly set "is_bgr" property. 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). 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. My work for rasops(9) was finished (hopefully). I will send pull-up request for netbsd-9, if there are no new failures reported within few days. Fix format in order not to confuse changes2html script. Minor improvements of wording for my entry. When using stamp, drop attributions other than back and foreground colors so that stamp is not updated unnecessarily.
2019-07-30Try to improve performance when shadow framebuffer is present;rin
Use block copy from shadow fb to real fb, instead of repeating the same operations to two fb's.
2019-07-30Support shadow framebuffer for 24bpp screen.rin
2019-07-30In rasops_copy{rows,cols}(), if src == dst, we have nothing to do.rin
Otherwise, we can use memcpy safely instead of memmove.
2019-07-30Fix catastrophe when ri_emustride != ri_stride in rasops_copyrows().rin
2019-07-30Treat highlighted and reversed text in the same manner to xterm.rin
2019-07-29Try to fix problem reported by ryoon:rin
http://mail-index.netbsd.org/source-changes-d/2019/07/29/msg011516.html There are apparent bugs for shadow framebuffer. Sorry for the breakage.
2019-07-29Hmmm, color was still strange for 24bpp on little endian machine,rin
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...
2019-07-29Simplify and tiny optimization.rin
2019-07-29Fix color on 24bpp screen for little endian.rin
2019-07-29Support anti-aliasing for depth 24.rin
2019-07-29Factor out putchar_aa functions into rasops_putchar_aa.h, which includesrin
the following fixes: - stop using memset to framebuffer for depth 8 - correctly support non-standard positions/lengths of RGB bits in pixel
2019-07-29Avoid undefined behavior when converting unaligned be32 data torin
host integer, found by kUBSan. Pointed out by msaitoh.
2019-07-29Convert rasops2.c and rasops4.c to use rasops_putchar_width.h.rin
Style.
2019-07-29Clean up for rasops1.c:rin
- dedup ugly copy-paste - rewrite to factorize width-optimized putchar functions - misc style
2019-07-29Fix missing underlines on mono screen.rin
Style.
2019-07-28Avoid memset to framebuffer.rin
XXX There still remains memset in rasops8.c, which will be removed soon when putchar_aa functions are factorized.
2019-07-28Cast attr to uint32_t before right shift to avoid undefined behavior.rin
Also, misc style/cosmetic changes for clarity.
2019-07-28Free kmem_alloc'd memory with kmem_freemartin
2019-07-28Simplify and style. No functional changes intended.rin
2019-07-28Redo fix in rev 1.2rin
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/rasops/rasops_putchar_width.h#rev1.2 in a correct way. For 24bpp framebuffer, we need to use ``stamp triplets'' even for fully blank or filled rows. Now, background-color for white space and underline are correctly drawn.
2019-07-28Fix factorization fallout; pointer for shadow framebuffer should berin
rolled back before drawing underline.
2019-07-28Fix corruption of background-colored white space and underline whenrin
font width is 8 or 16 on 2bpp screen.
2019-07-28Fix underline for anti-aliased fonts on 15/16 depth screen.rin
2019-07-26Put back byte-wise copy to stop using memcpy, whichrin
does not work for device memory on some platforms. Pointed out by Jared, many thanks!
2019-07-26Add genfb(4) driver for mac68k grfbus.rin
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!
2019-07-26Fix 4-bpp stamp for big endian.rin
2019-07-26Replace manually unrolled loops with memcpy/memmove or simple loops.rin
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.
2019-07-26Misc creen up for rasops.c:rin
- 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
2019-07-26XXXrin
Add hack so that colorbars(6) works for 24-bpp. The code before factorization did the same in a strange way.
2019-07-25Factor out putchar and width-optimized putchar functions intorin
rasops_putchar.h and rasops_putchar_width.h, respectively. XXX Possibly, we can do the same for putchar_aa functions. But it is currently missing for 24-bpp.
2019-07-25Add width-optimized putchar functions for 32-bpp, that work fine onrin
both little- and big-endian machines. WIP genfb(4) driver for mac68k becomes 1.5 times faster!
2019-07-25Provide and use FONT_GLYPH macro, tiny optimization version of WSFONT_GLYPH.rin
2019-07-25Misc cleen up:rin
- Make 32bit mask unsigned - DPRINTF --> __nothing ifndef DEBUG_RASOPS - "#ifdef DIAGNOSTIC if (x) panic(); #endif" --> KASSERT(!x); - KNF No functional changes intended.
2019-07-25Cosmetic changes. No functional changes.rin
2019-07-25Fix screen corruption with 16-width font on 8-bpp display.rin
2019-07-25For kUBSan, avoid undefined behaviors even if harmless.rin
No functional changes intended. Requested by uwe.
2019-07-24Oops, revert unintentional changes.rin
2019-07-24Well, masks do not have to be updated every time in loop.rin
Calculate them in advance even if it may be bogus.
2019-07-24Simplify logic and tiny clean-up.rin
2019-07-24Avoid shift-count overflow to fix strange cursor behaviors on amd64rin
when font width is odd.
2019-07-24Use unsigned integers for binary data storage.rin
No functional changes intended.
2019-07-24Adjust white space.rin
2019-07-24Style:rin
- u_char --> uint8_t - u_int*_t --> uint*_t No functional changes.
2019-07-21Fix cursor movement for ri_xscale = 1, e.g., fontwidth = 8 and bpp = 1.rin
2019-07-21Fix byte order of stamp for big endian so that width-optimizedrin
putchar functions work correctly.
2019-03-01Fix whitespace. (In the source code, not in the functionality.)jakllsch
2019-03-01Underline when the attribute say underline, not when it says to reverse.jakllsch
2019-03-01Reset 'height' before underlining in rasops32_putchar_aa().jakllsch
Prevents segfault when underlining whitespace in the upper left cell.