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) {