Module Name: xsrc Committed By: tsutsui Date: Tue Aug 30 15:09:51 UTC 2022
Modified Files: xsrc/external/mit/xf86-video-wsfb/dist/src: wsfb_driver.c Log Message: wsfb: add 8bpp planar support for LUNA using amiga's Afb. Reviewed on tech-x11@: https://mail-index.netbsd.org/tech-x11/2022/08/23/msg002311.html Confirmed on my LUNA-II with 8bpp board. To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 \ xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c diff -u xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c:1.44 xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c:1.45 --- xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c:1.44 Tue Aug 30 15:08:49 2022 +++ xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c Tue Aug 30 15:09:51 2022 @@ -568,17 +568,31 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags #if defined(__NetBSD__) && defined(WSDISPLAY_TYPE_LUNA) if (wstype == WSDISPLAY_TYPE_LUNA) { /* - * XXX * LUNA's color framebuffers support 4bpp or 8bpp * but they have multiple 1bpp VRAM planes like ancient VGA. - * For now, Xorg server supports only the first one plane - * as 1bpp monochrome server. - * - * Note OpenBSD/luna88k workarounds this by switching depth - * and palette settings by WSDISPLAYIO_SETGFXMODE ioctl. */ - default_depth = 1; - bitsperpixel = 1; +#ifdef HAVE_SHADOW_AFB + if (bitsperpixel == 8) { + /* + * For 8bpp one, we can use the bitplane ops with + * shadow update proc as amiga. + */ + fPtr->planarAfb = TRUE; + } else +#endif + { + /* + * For 4bpp one (or there is no planar support), + * just use only the first one plane + * as 1bpp monochrome server. + * + * Note OpenBSD/luna88k workarounds this by + * switching depth and palette settings by + * WSDISPLAYIO_SETGFXMODE ioctl. + */ + default_depth = 1; + bitsperpixel = 1; + } } #endif #ifdef WSDISPLAY_TYPE_AMIGACC @@ -1187,7 +1201,11 @@ WsfbScreenInit(SCREEN_INIT_ARGS_DECL) #if defined(__NetBSD__) && defined(WSDISPLAY_TYPE_LUNA) if (wstype == WSDISPLAY_TYPE_LUNA) { ncolors = fPtr->fbi.fbi_subtype.fbi_cmapinfo.cmap_entries; - if (ncolors > 0) { + if (ncolors > 0 +#ifdef HAVE_SHADOW_AFB + && !fPtr->planarAfb +#endif + ) { /* * Override palette to use 4bpp/8bpp framebuffers as * monochrome server by using only the first plane.