Module Name: xsrc Committed By: tsutsui Date: Sat Sep 10 19:23:03 UTC 2022
Modified Files: xsrc/external/mit/xf86-video-wsfb/dist/src: wsfb.h wsfb_driver.c Log Message: wsfb: reduce diffs from upstream. Mostly pulled/merged from the following upstream changes: - Fix for dlopen() -based module loader. https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/b77092858a178aa169ed4c1c7fe733d5cd355702 - Remove useless loader symbol lists. https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/bce9fd21483fbeddc84672a1ef01fdd9b58c88ed - Add compat-api.h for compatibility with xserver 1.13 https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/586b722fb17b3eb0ab776c170ee21e6a66fc7f22 - Use own thunk functions instead of shadow*Weak https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/fa9aabe95a65c4dd12008e16ad66d5c773a7993a - Remove obsolete #ifdef HAVE_XF1BPP and #ifdef HAVE_XF4BPP blocks, https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/16ac29883cb80053fb0b973166a3f664cae1fa44 - Remove unused variables https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/1c1bf30b612933a3303d414c75671c9a05ec450a - Suppress a bunch of compiler warnings for using constant strings https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/1ff2e87ea1c19d1417b11886d940e205be376d78 - Replace LoaderGetOS with ifdef https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/8069c6970c731c38e105f5dddd5ce83ba88b0773 - Fix spelling/wording issues https://gitlab.freedesktop.org/xorg/driver/xf86-video-wsfb/-/commit/27c2d76404c7b440a6662446b189fa257c4cebfc With minor adjustments: - sync order of members in private struct WsfbRec - add more const to avoid warning - add newlines properly to xf86Msg() messages No particular objection on tech-x11@: https://mail-index.netbsd.org/tech-x11/2022/06/thread1.html#002311 To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb.h cvs rdiff -u -r1.45 -r1.46 \ 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.h diff -u xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb.h:1.9 xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb.h:1.10 --- xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb.h:1.9 Tue Aug 30 15:05:21 2022 +++ xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb.h Sat Sep 10 19:23:03 2022 @@ -65,12 +65,12 @@ typedef struct { int fd; /* file descriptor of open device */ struct wsdisplayio_fbinfo fbi; - int rotate; unsigned char* fbstart; unsigned char* fbmem; size_t fbmem_len; - void * shadow; + int rotate; Bool shadowFB; + void * shadow; Bool HWCursor; Bool useSwap32; #ifdef HAVE_SHADOW_AFB 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.45 xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c:1.46 --- xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c:1.45 Tue Aug 30 15:09:51 2022 +++ xsrc/external/mit/xf86-video-wsfb/dist/src/wsfb_driver.c Sat Sep 10 19:23:03 2022 @@ -52,7 +52,6 @@ /* All drivers need this. */ #include "xf86.h" #include "xf86_OSproc.h" -#include "xf86_OSlib.h" #include "mipointer.h" #include "micmap.h" @@ -75,10 +74,6 @@ #include "wsfb.h" -/* #include "wsconsio.h" */ - -#include <sys/mman.h> - #ifdef X_PRIVSEP extern int priv_open_device(const char *); #else @@ -91,12 +86,6 @@ extern int priv_open_device(const char * #define WSFB_DEFAULT_DEV "/dev/ttyC0" #endif -#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) > 6 -#define xf86LoaderReqSymLists(...) do {} while (0) -#define LoaderRefSymLists(...) do {} while (0) -#define xf86LoaderReqSymbols(...) do {} while (0) -#endif - #define DEBUG 0 #if DEBUG @@ -165,13 +154,13 @@ enum { WSFB_ROTATE_NONE = 0, */ static int pix24bpp = 0; -#define WSFB_VERSION 4000 +#define WSFB_VERSION 4000 #define WSFB_NAME "wsfb" #define WSFB_DRIVER_NAME "wsfb" _X_EXPORT DriverRec WSFB = { WSFB_VERSION, - WSFB_DRIVER_NAME, + (char *)WSFB_DRIVER_NAME, WsfbIdentify, WsfbProbe, WsfbAvailableOptions, @@ -201,34 +190,6 @@ static const OptionInfoRec WsfbOptions[] { -1, NULL, OPTV_NONE, {0}, FALSE} }; -#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) <= 6 -/* Symbols needed from other modules */ -static const char *fbSymbols[] = { - "fbPictureInit", - "fbScreenInit", - NULL -}; -static const char *shadowSymbols[] = { - "shadowAdd", - "shadowSetup", - "shadowUpdatePacked", - "shadowUpdatePackedWeak", - "shadowUpdateRotatePacked", - "shadowUpdateRotatePackedWeak", -#ifdef HAVE_SHADOW_AFB - "shadowUpdateAfb8", -#endif - NULL -}; - -static const char *ramdacSymbols[] = { - "xf86CreateCursorInfoRec", - "xf86DestroyCursorInfoRec", - "xf86InitCursor", - NULL -}; -#endif - static XF86ModuleVersionInfo WsfbVersRec = { "wsfb", MODULEVENDORSTRING, @@ -251,19 +212,13 @@ WsfbSetup(pointer module, pointer opts, { static Bool setupDone = FALSE; -#if !(defined __NetBSD__ || defined __OpenBSD__) - /* Check that we're being loaded on a OpenBSD or NetBSD system. */ - if (errmaj) - *errmaj = LDR_BADOS; - if (errmin) - *errmin = 0; +#if !defined(__OpenBSD__) && !defined(__NetBSD__) return NULL; #endif + if (!setupDone) { setupDone = TRUE; xf86AddDriver(&WSFB, module, HaveDriverFuncs); - LoaderRefSymLists(fbSymbols, shadowSymbols, ramdacSymbols, - NULL); return (pointer)1; } else { if (errmaj != NULL) @@ -360,7 +315,7 @@ static Bool WsfbProbe(DriverPtr drv, int flags) { int i, fd, entity; - GDevPtr *devSections; + GDevPtr *devSections; int numDevSections; const char *dev; Bool foundScreen = FALSE; @@ -375,13 +330,6 @@ WsfbProbe(DriverPtr drv, int flags) &devSections)) <= 0) return FALSE; - /* Do not attach if the modesetting driver is active */ - if (fbSlotClaimed == TRUE) { - DriverPtr fbSlotDrv = xf86GetEntityInfo(0)->driver; - if (strcmp(fbSlotDrv->driverName, "modesetting") == 0) - return FALSE; - } - for (i = 0; i < numDevSections; i++) { ScrnInfoPtr pScrn = NULL; @@ -393,8 +341,8 @@ WsfbProbe(DriverPtr drv, int flags) if (pScrn != NULL) { foundScreen = TRUE; pScrn->driverVersion = WSFB_VERSION; - pScrn->driverName = WSFB_DRIVER_NAME; - pScrn->name = WSFB_NAME; + pScrn->driverName = (char *)WSFB_DRIVER_NAME; + pScrn->name = (char *)WSFB_NAME; pScrn->Probe = WsfbProbe; pScrn->PreInit = WsfbPreInit; pScrn->ScreenInit = WsfbScreenInit; @@ -420,9 +368,8 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags { WsfbPtr fPtr; int default_depth, bitsperpixel, wstype; - const char *dev, *s; - char *mod = NULL; - const char *reqSym = NULL; + const char *dev; + const char *s; Gamma zeros = {0.0, 0.0, 0.0}; DisplayModePtr mode; MessageType from; @@ -772,7 +719,7 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags pScrn->progClock = TRUE; pScrn->rgbBits = (pScrn->depth >= 8) ? 8 : pScrn->depth; - pScrn->chipset = "wsfb"; + pScrn->chipset = (char *)"wsfb"; pScrn->videoRam = fPtr->fbi.fbi_fbsize; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Vidmem: %dk\n", @@ -782,7 +729,7 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags mode = (DisplayModePtr)malloc(sizeof(DisplayModeRec)); mode->prev = mode; mode->next = mode; - mode->name = "wsfb current mode"; + mode->name = (char *)"wsfb current mode"; mode->status = MODE_OK; mode->type = M_T_BUILTIN; mode->Clock = 0; @@ -820,15 +767,6 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags xf86DrvMsg(pScrn->scrnIndex, from, "Using %s cursor\n", fPtr->HWCursor ? "HW" : "SW"); - /* Load bpp-specific modules. */ - switch(pScrn->bitsPerPixel) { - case 1: - case 4: - default: - mod = "fb"; - break; - } - /* Load shadow if needed. */ if (fPtr->shadowFB) { @@ -839,8 +777,7 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags return FALSE; } } - - if (mod && xf86LoadSubModule(pScrn, mod) == NULL) { + if (xf86LoadSubModule(pScrn, "fb") == NULL) { WsfbFreeRec(pScrn); return FALSE; } @@ -850,21 +787,26 @@ WsfbPreInit(ScrnInfoPtr pScrn, int flags return FALSE; } - if (mod) { - if (reqSym) { - xf86LoaderReqSymbols(reqSym, NULL); - } else { - xf86LoaderReqSymLists(fbSymbols, NULL); - } - } TRACE_EXIT("PreInit"); return TRUE; } +static void +wsfbUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) +{ + shadowUpdateRotatePacked(pScreen, pBuf); +} + +static void +wsfbUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) +{ + shadowUpdatePacked(pScreen, pBuf); +} + static Bool WsfbCreateScreenResources(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); WsfbPtr fPtr = WSFBPTR(pScrn); PixmapPtr pPixmap; Bool ret; @@ -884,7 +826,7 @@ WsfbCreateScreenResources(ScreenPtr pScr } else if (fPtr->useSwap32) { shadowproc = WsfbShadowUpdateSwap32; } else if (fPtr->rotate) { - shadowproc = shadowUpdateRotatePacked; + shadowproc = wsfbUpdateRotatePacked; } else #ifdef HAVE_SHADOW_AFB if (fPtr->planarAfb) { @@ -893,7 +835,7 @@ WsfbCreateScreenResources(ScreenPtr pScr } else #endif { - shadowproc = shadowUpdatePacked; + shadowproc = wsfbUpdatePacked; } if (!shadowAdd(pScreen, pPixmap, shadowproc, @@ -907,7 +849,7 @@ WsfbCreateScreenResources(ScreenPtr pScr static Bool WsfbShadowInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); WsfbPtr fPtr = WSFBPTR(pScrn); if (!shadowSetup(pScreen)) @@ -921,7 +863,7 @@ WsfbShadowInit(ScreenPtr pScreen) static Bool WsfbScreenInit(SCREEN_INIT_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); WsfbPtr fPtr = WSFBPTR(pScrn); VisualPtr visual; int ret, flags, ncolors; @@ -959,7 +901,6 @@ WsfbScreenInit(SCREEN_INIT_ARGS_DECL) case 15: case 16: if (fPtr->fbi.fbi_stride == fPtr->fbi.fbi_width) { - xf86Msg(X_ERROR, "Bogus stride == width in 16bit colour\n"); len = fPtr->fbi.fbi_width * fPtr->fbi.fbi_height * sizeof(short); } else { len = fPtr->fbi.fbi_stride * fPtr->fbi.fbi_height; @@ -967,7 +908,6 @@ WsfbScreenInit(SCREEN_INIT_ARGS_DECL) break; case 24: if (fPtr->fbi.fbi_stride == fPtr->fbi.fbi_width) { - xf86Msg(X_ERROR, "Bogus stride == width in 24bit colour\n"); len = fPtr->fbi.fbi_width * fPtr->fbi.fbi_height * 3; } else { len = fPtr->fbi.fbi_stride * fPtr->fbi.fbi_height; @@ -975,7 +915,6 @@ WsfbScreenInit(SCREEN_INIT_ARGS_DECL) break; case 32: if (fPtr->fbi.fbi_stride == fPtr->fbi.fbi_width) { - xf86Msg(X_ERROR, "Bogus stride == width in 32bit colour\n"); len = fPtr->fbi.fbi_width * fPtr->fbi.fbi_height * sizeof(int); } else { len = fPtr->fbi.fbi_stride * fPtr->fbi.fbi_height; @@ -1153,8 +1092,8 @@ WsfbScreenInit(SCREEN_INIT_ARGS_DECL) "disabling DGA\n"); #endif if (fPtr->rotate) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Enabling Driver Rotation, " - "disabling RandR\n"); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Enabling Driver Rotation, " "disabling RandR\n"); #if 0 xf86DisableRandR(); #endif @@ -1193,7 +1132,6 @@ WsfbScreenInit(SCREEN_INIT_ARGS_DECL) /* On StaticGray visuals, fake a 256 entries colormap. */ if (ncolors == 0) ncolors = 256; - if(!xf86HandleColormaps(pScreen, ncolors, 8, WsfbLoadPalette, NULL, flags)) return FALSE; @@ -1294,13 +1232,9 @@ static void * WsfbWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, CARD32 *size, void *closure) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); WsfbPtr fPtr = WSFBPTR(pScrn); - /* - * XXX - * This should never happen. Is it really necessary? - */ if (fPtr->fbi.fbi_stride) *size = fPtr->fbi.fbi_stride; else { @@ -1321,7 +1255,7 @@ static void * WsfbWindowAfb(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, CARD32 *size, void *closure) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); WsfbPtr fPtr = WSFBPTR(pScrn); /* size is offset from start of bitplane to next bitplane */ @@ -1431,6 +1365,10 @@ WsfbLeaveVT(VT_FUNC_ARGS_DECL) static Bool WsfbSwitchMode(SWITCH_MODE_ARGS_DECL) { +#if DEBUG + SCRN_INFO_PTR(arg); +#endif + TRACE_ENTER("SwitchMode"); /* Nothing else to do. */ return TRUE; @@ -1439,6 +1377,10 @@ WsfbSwitchMode(SWITCH_MODE_ARGS_DECL) static int WsfbValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags) { +#if DEBUG + SCRN_INFO_PTR(arg); +#endif + TRACE_ENTER("ValidMode"); return MODE_OK; } @@ -1474,7 +1416,7 @@ WsfbLoadPalette(ScrnInfoPtr pScrn, int n } else { /* * Change all colors in 2 ioctls - * and limit the data to be transfered. + * and limit the data to be transferred. */ for (i = 0; i < numColors; i++) { if (indices[i] < indexMin) @@ -1506,7 +1448,7 @@ WsfbLoadPalette(ScrnInfoPtr pScrn, int n static Bool WsfbSaveScreen(ScreenPtr pScreen, int mode) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); WsfbPtr fPtr = WSFBPTR(pScrn); int state; @@ -1517,7 +1459,7 @@ WsfbSaveScreen(ScreenPtr pScreen, int mo if (mode != SCREEN_SAVER_FORCER) { state = xf86IsUnblank(mode)?WSDISPLAYIO_VIDEO_ON: - WSDISPLAYIO_VIDEO_OFF; + WSDISPLAYIO_VIDEO_OFF; ioctl(fPtr->fd, WSDISPLAYIO_SVIDEO, &state); } @@ -1606,7 +1548,6 @@ static Bool WsfbDGASetMode(ScrnInfoPtr pScrn, DGAModePtr pDGAMode) { DisplayModePtr pMode; - int scrnIdx = pScrn->pScreen->myNum; int frameX0, frameY0; if (pDGAMode) {