Module Name:    xsrc
Committed By:   tsutsui
Date:           Sat Jul 30 16:13:54 UTC 2022

Modified Files:
        xsrc/external/mit/xorg-server/dist/hw/xfree86/common: xf86.h
            xf86Globals.c xf86Helper.c xf86Init.c xf86Priv.h
        xsrc/external/mit/xorg-server/dist/hw/xfree86/doc: ddxDesign.xml
        xsrc/external/mit/xorg-server/dist/hw/xfree86/man: Xorg.man
        xsrc/external/mit/xorg-server/dist/hw/xfree86/vgahw: vgaHW.c

Log Message:
Restore -flipPixels option removed in upstream server-21.1-branch.

https://gitlab.freedesktop.org/xorg/xserver/-/commit/d1c00c859c6676fbb540420c9055788bc19cb18f
Note ScrnInfoRec structure in hw/xfree86/common/xf86str.h isn't reverted
because it isn't used by -flipPixels option so that we can keep ABI
compatibility among xf86-video-foo drivers.

This -flipPixels is mandatory at least by Xorg server users with
xf86-video-wsfb driver on NetBSD/mac68k and SE/30 mono screen
that has "black=1 and white=0" VRAM.

"go for it" by mrg@ on current-users@:
https://mail-index.netbsd.org/current-users/2022/07/24/msg042731.html


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86.h
cvs rdiff -u -r1.1.1.7 -r1.2 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Globals.c \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Priv.h
cvs rdiff -u -r1.6 -r1.7 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Helper.c
cvs rdiff -u -r1.1.1.10 -r1.2 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Init.c
cvs rdiff -u -r1.1.1.3 -r1.2 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/doc/ddxDesign.xml
cvs rdiff -u -r1.1.1.4 -r1.2 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/man/Xorg.man
cvs rdiff -u -r1.1.1.5 -r1.2 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/vgahw/vgaHW.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/xorg-server/dist/hw/xfree86/common/xf86.h
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86.h:1.5 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86.h:1.6
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86.h:1.5	Fri Jul 15 02:18:59 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86.h	Sat Jul 30 16:13:53 2022
@@ -79,6 +79,14 @@ extern _X_EXPORT Bool xf86DRI2Enabled(vo
 
 #define XF86SCRNINFO(p) xf86ScreenToScrn(p)
 
+#define XF86FLIP_PIXELS() \
+	do { \
+	    if (xf86GetFlipPixels()) { \
+		pScreen->whitePixel = (pScreen->whitePixel) ? 0 : 1; \
+		pScreen->blackPixel = (pScreen->blackPixel) ? 0 : 1; \
+	   } \
+	while (0)
+
 #define BOOLTOSTRING(b) ((b) ? "TRUE" : "FALSE")
 
 /* Compatibility functions for pre-input-thread drivers */
@@ -278,6 +286,8 @@ xf86GetWeight(void);
 extern _X_EXPORT Gamma
 xf86GetGamma(void);
 extern _X_EXPORT Bool
+xf86GetFlipPixels(void);
+extern _X_EXPORT Bool
 xf86ServerIsExiting(void);
 extern _X_EXPORT Bool
 xf86ServerIsResetting(void);

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Globals.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Globals.c:1.1.1.7 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Globals.c:1.2
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Globals.c:1.1.1.7	Fri Jul 15 02:12:51 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Globals.c	Sat Jul 30 16:13:53 2022
@@ -188,6 +188,7 @@ int xf86FbBpp = -1;
 int xf86Depth = -1;
 rgb xf86Weight = { 0, 0, 0 };
 
+Bool xf86FlipPixels = FALSE;
 Gamma xf86Gamma = { 0.0, 0.0, 0.0 };
 
 Bool xf86AllowMouseOpenFail = FALSE;
Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Priv.h
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Priv.h:1.1.1.7 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Priv.h:1.2
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Priv.h:1.1.1.7	Fri Jul 15 02:12:51 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Priv.h	Sat Jul 30 16:13:53 2022
@@ -69,6 +69,7 @@ extern _X_EXPORT char *xf86KeyboardName;
 extern _X_EXPORT int xf86FbBpp;
 extern _X_EXPORT int xf86Depth;
 extern _X_EXPORT rgb xf86Weight;
+extern _X_EXPORT Bool xf86FlipPixels;
 extern _X_EXPORT Gamma xf86Gamma;
 
 /* Other parameters */

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Helper.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Helper.c:1.6 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Helper.c:1.7
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Helper.c:1.6	Fri Jul 15 02:18:59 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Helper.c	Sat Jul 30 16:13:53 2022
@@ -952,8 +952,14 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int
 void
 xf86SetBlackWhitePixels(ScreenPtr pScreen)
 {
-    pScreen->whitePixel = 1;
-    pScreen->blackPixel = 0;
+    if (xf86FlipPixels) {
+        pScreen->whitePixel = 0;
+        pScreen->blackPixel = 1;
+    }
+    else {
+        pScreen->whitePixel = 1;
+        pScreen->blackPixel = 0;
+    }
 }
 
 /*
@@ -1405,6 +1411,12 @@ xf86GetGamma(void)
 }
 
 Bool
+xf86GetFlipPixels(void)
+{
+    return xf86FlipPixels;
+}
+
+Bool
 xf86ServerIsExiting(void)
 {
     return (dispatchException & DE_TERMINATE) == DE_TERMINATE;

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Init.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Init.c:1.1.1.10 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Init.c:1.2
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Init.c:1.1.1.10	Fri Jul 15 02:12:51 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Init.c	Sat Jul 30 16:13:53 2022
@@ -954,6 +954,10 @@ ddxProcessArgument(int argc, char **argv
         xf86ConfigDir = argv[i + 1];
         return 2;
     }
+    if (!strcmp(argv[i], "-flipPixels")) {
+        xf86FlipPixels = TRUE;
+        return 1;
+    }
 #ifdef XF86VIDMODE
     if (!strcmp(argv[i], "-disableVidMode")) {
         xf86VidModeDisabled = TRUE;
@@ -1233,6 +1237,7 @@ ddxUseMsg(void)
     ErrorF
         ("-pointer name          specify the core pointer InputDevice name\n");
     ErrorF("-nosilk                disable Silken Mouse\n");
+    ErrorF("-flipPixels            swap default black/white Pixel values\n");
 #ifdef XF86VIDMODE
     ErrorF("-disableVidMode        disable mode adjustments with xvidtune\n");
     ErrorF

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/doc/ddxDesign.xml
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/doc/ddxDesign.xml:1.1.1.3 xsrc/external/mit/xorg-server/dist/hw/xfree86/doc/ddxDesign.xml:1.2
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/doc/ddxDesign.xml:1.1.1.3	Fri Jul 15 02:12:52 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/doc/ddxDesign.xml	Sat Jul 30 16:13:53 2022
@@ -1833,6 +1833,7 @@ Some of them are:
     xf86Depth                 -depth from the command line
     xf86Weight                -weight from the command line
     xf86Gamma                 -{r,g,b,}gamma from the command line
+    xf86FlipPixels            -flippixels from the command line
     xf86ProbeOnly             -probeonly from the command line
     defaultColorVisualClass   -cc from the command line
 	</literallayout>
@@ -1893,6 +1894,17 @@ functions:
 
 	</para></blockquote>
 
+      <blockquote><para>
+	  <programlisting>
+    Bool xf86GetFlipPixels();
+	  </programlisting>
+	  <blockquote><para>
+      Returns <constant>TRUE</constant> if <option>-flippixels</option> is
+      present on the command line, and <constant>FALSE</constant> otherwise.
+	    </para></blockquote>
+
+	</para></blockquote>
+
     </sect2>
 
     <sect2>
@@ -6004,6 +6016,19 @@ strongly encouraged to improve the consi
 
       <blockquote><para>
 	  <programlisting>
+    void xf86SetBlackWhitePixels(ScrnInfoPtr pScrn);
+	  </programlisting>
+	  <blockquote><para>
+      This functions sets the <structfield>blackPixel</structfield> and
+      <structfield>whitePixel</structfield> fields of the <structname>ScrnInfoRec</structname>
+      according to whether or not the <option>-flipPixels</option> command
+      line options is present.
+	    </para>
+
+	  </blockquote></para></blockquote>
+
+      <blockquote><para>
+	  <programlisting>
     const char *xf86GetVisualName(int visual);
 	  </programlisting>
 	  <blockquote><para>

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/man/Xorg.man
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/man/Xorg.man:1.1.1.4 xsrc/external/mit/xorg-server/dist/hw/xfree86/man/Xorg.man:1.2
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/man/Xorg.man:1.1.1.4	Fri Jul 15 02:12:52 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/man/Xorg.man	Sat Jul 30 16:13:53 2022
@@ -171,6 +171,9 @@ bpp framebuffer rather than the (possibl
 (or vice versa).  Legal values are 1, 8, 16, 24, 32.  Not all drivers
 support all values.
 .TP 8
+.B \-flipPixels
+Swap the default values for the black and white pixels.
+.TP 8
 .BI \-gamma " value"
 Set the gamma correction.
 .I value

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/vgahw/vgaHW.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/vgahw/vgaHW.c:1.1.1.5 xsrc/external/mit/xorg-server/dist/hw/xfree86/vgahw/vgaHW.c:1.2
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/vgahw/vgaHW.c:1.1.1.5	Fri Jul 15 02:12:51 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/vgahw/vgaHW.c	Sat Jul 30 16:13:54 2022
@@ -1314,8 +1314,10 @@ vgaHWInit(ScrnInfoPtr scrninfp, DisplayM
     if (depth == 1) {
         /* Initialise the Mono map according to which bit-plane gets used */
 
+        Bool flipPixels = xf86GetFlipPixels();
+
         for (i = 0; i < 16; i++)
-            if ((i & (1 << BIT_PLANE)) != 0)
+            if (((i & (1 << BIT_PLANE)) != 0) != flipPixels)
                 regp->Attribute[i] = WHITE_VALUE;
             else
                 regp->Attribute[i] = BLACK_VALUE;

Reply via email to