[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-i128: Changes to 'upstream-unstable'



 configure.ac      |    5 +-
 man/i128.man      |    2 
 src/i128IBMDAC.c  |   84 +------------------------------------
 src/i128_driver.c |  122 +++++-------------------------------------------------
 src/i128exa.c     |    6 ++
 5 files changed, 27 insertions(+), 192 deletions(-)

New commits:
commit 6a1eae8adf2bc8ba2c0e86e28d3b121a54aa8c3b
Author: Adam Jackson <ajax@redhat.com>
Date:   Thu Jul 2 11:16:59 2009 -0400

    i128 1.3.2

diff --git a/configure.ac b/configure.ac
index d5a7502..a671665 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-i128],
-        1.3.1,
+        1.3.2,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-i128)
 

commit b690e9f84e3c4504f3344185c6a8572805dd73d8
Author: Mark Kettenis <mark.kettenis@xs4all.nl>
Date:   Thu Jun 4 11:46:18 2009 -0600

    Fix endianness bugs in cursor realization code.
    
    The default cursor realization code seems to work just fine.  We just
    have to set the HARDWARE_CURSOR_NIBBLE_SWAPPED flag on big endian
    platforms.
    
    This isn't really surprising since these cards use fairly standard IBM
    or TI RAMDACs.
    
    Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr>

diff --git a/src/i128IBMDAC.c b/src/i128IBMDAC.c
index 1ad9f65..14acba9 100644
--- a/src/i128IBMDAC.c
+++ b/src/i128IBMDAC.c
@@ -43,8 +43,6 @@ static void I128IBMHideCursor(ScrnInfoPtr pScrn);
 static void I128IBMSetCursorPosition(ScrnInfoPtr pScrn, int x, int y);
 static void I128IBMSetCursorColors(ScrnInfoPtr pScrn, int bg, int fg);
 static void I128IBMLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *src);
-static unsigned char *I128IBMRealizeCursor(xf86CursorInfoPtr infoPtr,
-        CursorPtr pCurs);
 static Bool I128IBMUseHWCursor(ScreenPtr pScrn, CursorPtr pCurs);
 
 
@@ -73,86 +71,12 @@ I128IBMHWCursorInit(ScrnInfoPtr pScrn)
    infoPtr->Flags = HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
                     HARDWARE_CURSOR_AND_SOURCE_WITH_MASK |
                     HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1;
-   infoPtr->RealizeCursor = I128IBMRealizeCursor;
 
-   return(xf86InitCursor(pScreen, infoPtr));
-}
-
-
-/*
- * Convert the cursor from server-format to hardware-format.  The IBMRGB
- * has two planes, plane 0 selects cursor color 0 or 1 and plane 1
- * selects transparent or display cursor.  The bits of these planes
- * are packed together so that one byte has 4 pixels. The organization
- * looks like:
- *             Byte 0x000 - 0x00F    top scan line, left to right
- *                  0x010 - 0x01F
- *                    .       .
- *                  0x3F0 - 0x3FF    bottom scan line
- *
- *             Byte/bit map - D7D6,D5D4,D3D2,D1D0  four pixels, two planes each
- *             Pixel/bit map - P1P0  (plane 1) == 1 maps to cursor color
- *                                   (plane 1) == 0 maps to transparent
- *                                   (plane 0) maps to cursor colors 0 and 1
- */
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+   infoPtr->Flags |= HARDWARE_CURSOR_NIBBLE_SWAPPED;
+#endif
 
-static unsigned char *
-I128IBMRealizeCursor(xf86CursorInfoPtr infoPtr, CursorPtr pCurs)
-{
-   register int i, j;
-   unsigned char *pServMsk;
-   unsigned char *pServSrc;
-   int   wsrc, h;
-   unsigned char *mem, *dst;
-
-   mem = (unsigned char *)xcalloc(1,1024);  /* 64x64x2 bits */
-   dst = mem;
-
-   if (!mem)
-      return NULL;
-
-   pServSrc = (unsigned char *)pCurs->bits->source;
-   pServMsk = (unsigned char *)pCurs->bits->mask;
-
-   h = pCurs->bits->height;
-   if (h > infoPtr->MaxHeight)
-      h = infoPtr->MaxHeight;
-
-   wsrc = PixmapBytePad(pCurs->bits->width, 1);	/* bytes per line */
-
-   for (i = 0; i < infoPtr->MaxHeight; i++,mem+=16) {
-      for (j = 0; j < infoPtr->MaxWidth / 8; j++) {
-	 register unsigned char mask, source;
-
-	 if (i < h && j < wsrc) {
-	    /*
-	     * mask byte ABCDEFGH and source byte 12345678 map to two byte
-	     * cursor data H8G7F6E5 D4C3B2A1
-	     */
-	    mask = *pServMsk++;
-	    source = *pServSrc++ & mask;
-
-	    /* map 1 byte source and mask into two byte cursor data */
-	    mem[j*2] =     ((mask&0x01) << 7) | ((source&0x01) << 6) |
-		           ((mask&0x02) << 4) | ((source&0x02) << 3) |
-		           ((mask&0x04) << 1) | (source&0x04)        |
-		           ((mask&0x08) >> 2) | ((source&0x08) >> 3) ;
-	    mem[(j*2)+1] = ((mask&0x10) << 3) | ((source&0x10) << 2) |
-		           (mask&0x20)        | ((source&0x20) >> 1) |
-		           ((mask&0x40) >> 3) | ((source&0x40) >> 4) |
-		           ((mask&0x80) >> 6) | ((source&0x80) >> 7) ;
-	 } else {
-	    mem[j*2]     = 0x00;
-	    mem[(j*2)+1] = 0x00;
-	 }
-      }
-      /*
-       * if we still have more bytes on this line (j < wsrc),
-       * we have to ignore the rest of the line.
-       */
-       while (j++ < wsrc) pServMsk++,pServSrc++;
-   }
-   return dst;
+   return(xf86InitCursor(pScreen, infoPtr));
 }
 
 

commit f42dd67d9372bf7f46cf8a35877e4ab8ac82d89b
Author: Adam Jackson <ajax@redhat.com>
Date:   Thu May 28 14:59:53 2009 -0400

    Remove useless loader symbol lists.

diff --git a/src/i128_driver.c b/src/i128_driver.c
index 0c80ce4..9de7527 100644
--- a/src/i128_driver.c
+++ b/src/i128_driver.c
@@ -166,87 +166,6 @@ _X_EXPORT XF86ModuleData i128ModuleData = { &i128VersRec, i128Setup, NULL };
 
 #endif
 
-
-/*
- * List of symbols from other modules that this module references.  This
- * list is used to tell the loader that it is OK for symbols here to be
- * unresolved providing that it hasn't been told that they haven't been
- * told that they are essential via a call to xf86LoaderReqSymbols() or
- * xf86LoaderReqSymLists().  The purpose is this is to avoid warnings about
- * unresolved symbols that are not required.  These are provided to the
- * LoaderRefSymLists() function in the module specific Setup() function.
- */
-
-static const char *vgahwSymbols[] = {
-    "vgaHWFreeHWRec",
-    "vgaHWGetHWRec",
-    "vgaHWGetIOBase",  
-    "vgaHWGetIndex",  
-    "vgaHWProtect",
-    "vgaHWRestore",
-    "vgaHWSave",
-    NULL
-};      
-
-static const char *fbSymbols[] = {
-    "fbScreenInit",
-    "fbPictureInit",
-    NULL
-};
-
-static const char *exaSymbols[] = {
-    "exaDriverAlloc",
-    "exaDriverInit",
-    "exaDriverFini",
-    "exaGetPixmapOffset",
-    NULL
-};
-
-static const char *xaaSymbols[] = {
-    "XAACreateInfoRec",
-    "XAADestroyInfoRec",
-    "XAAInit",
-    NULL
-};
-
-static const char *ramdacSymbols[] = {
-    "xf86CreateCursorInfoRec",
-    "xf86DestroyCursorInfoRec",
-    "xf86InitCursor",
-    NULL
-};
-
-static const char *ddcSymbols[] = {
-    "xf86DoEDID_DDC1",
-    "xf86DoEDID_DDC2",
-    "xf86PrintEDID",
-    "xf86SetDDCproperties",
-    NULL
-};
-
-static const char *i2cSymbols[] = {
-    "xf86CreateI2CBusRec",
-    "xf86I2CBusInit",
-    NULL
-};
-
-#ifdef XFree86LOADER
-/* XXX The vbe module isn't currently loaded. */
-static const char *vbeSymbols[] = {
-    "VBEInit",
-    "vbeDoEDID",
-    NULL
-};
-
-/* XXX The int10 module isn't currently loaded. */
-static const char *int10Symbols[] = {
-    "xf86InitInt10",
-    "xf86FreeInt10",
-    NULL
-};
-#endif
-
-
 #ifdef XFree86LOADER
 
 /* Mandatory
@@ -283,22 +202,6 @@ i128Setup(pointer module, pointer opts, int *errmaj, int *errmin)
 	 */
 
 	/*
-	 * Tell the loader about symbols from other modules that this module
-	 * might refer to.
-	 */
-	LoaderRefSymLists(fbSymbols,
-			  exaSymbols,
-			  xaaSymbols, 
-			  ramdacSymbols,
-			  ddcSymbols,
-			  ddcSymbols,
-			  i2cSymbols,
-			  vbeSymbols,
-			  int10Symbols,
-			  vgahwSymbols,
-			  NULL);
-
-	/*
 	 * The return value must be non-NULL on success even though there
 	 * is no TearDownProc.
 	 */
@@ -580,8 +483,6 @@ I128PreInit(ScrnInfoPtr pScrn, int flags)
     if (!xf86LoadSubModule(pScrn, "vgahw"))
         return FALSE;
     
-    xf86LoaderReqSymLists(vgahwSymbols, NULL);
-
     /*
      * Allocate a vgaHWRec
      */
@@ -874,9 +775,7 @@ I128PreInit(ScrnInfoPtr pScrn, int flags)
     /* Load DDC if we have the code to use it */
     /* This gives us DDC1 */
     if (pI128->ddc1Read || pI128->i2cInit) {
-        if (xf86LoadSubModule(pScrn, "ddc")) {
-          xf86LoaderReqSymLists(ddcSymbols, NULL);
-        } else {
+        if (!xf86LoadSubModule(pScrn, "ddc")) {
           /* ddc module not found, we can do without it */
           pI128->ddc1Read = NULL;
 
@@ -887,9 +786,7 @@ I128PreInit(ScrnInfoPtr pScrn, int flags)
     /* - DDC can use I2C bus */
     /* Load I2C if we have the code to use it */
     if (pI128->i2cInit) {
-      if ( xf86LoadSubModule(pScrn, "i2c") ) {
-        xf86LoaderReqSymLists(i2cSymbols,NULL);
-      } else {
+      if (!xf86LoadSubModule(pScrn, "i2c")) {
         /* i2c module not found, we can do without it */
         pI128->i2cInit = NULL;
         pI128->I2C = NULL;
@@ -1194,7 +1091,6 @@ I128PreInit(ScrnInfoPtr pScrn, int flags)
 	I128FreeRec(pScrn);
 	return FALSE;
     }
-    xf86LoaderReqSymLists(fbSymbols, NULL);
 
     /* Load the acceleration engine */
     if (!pI128->NoAccel) {
@@ -1211,12 +1107,12 @@ I128PreInit(ScrnInfoPtr pScrn, int flags)
 		LoaderErrorMsg(NULL, "exa", errmaj, errmin);
                 I128FreeRec(pScrn);
                 return FALSE;
-            } else xf86LoaderReqSymLists(exaSymbols, NULL);
+            }
         } else {
             if (!xf86LoadSubModule(pScrn, "xaa")) {
 	        I128FreeRec(pScrn);
 	        return FALSE;
-	    } else xf86LoaderReqSymLists(xaaSymbols, NULL);
+	    }
         }
     }
 
@@ -1226,7 +1122,6 @@ I128PreInit(ScrnInfoPtr pScrn, int flags)
 	    I128FreeRec(pScrn);
 	    return FALSE;
 	}
-	xf86LoaderReqSymLists(ramdacSymbols, NULL);
     }
 
     I128UnmapMem(pScrn);

commit cee4cdf061ca8e6376846c0eac2fc6d57711129e
Author: Mark Kettenis <mark.kettenis@xs4all.nl>
Date:   Mon May 4 21:54:30 2009 +0200

    Properly unmap things with libpciaccess.
    
    If the xf86-vide-i128 is compiled with XSERVER_LIBPCIACCESS, registers and
    frmaebuffer memory are mapped through libpciaccess.  However, I128UnmapMem
    tried to unmap things vy using xf86UnmapVidMem.  This failed because the memory
    wasn't registered (which only happens if you mapped the memory using
    xf86MapPciMem.
    
    Fixes bugzilla #20541
    
    Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr>

diff --git a/src/i128_driver.c b/src/i128_driver.c
index 72a69e7..0c80ce4 100644
--- a/src/i128_driver.c
+++ b/src/i128_driver.c
@@ -1442,12 +1442,21 @@ I128UnmapMem(ScrnInfoPtr pScrn)
     /*
      * Unmap IO registers to virtual address space
      */ 
+#ifndef XSERVER_LIBPCIACCESS
     xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pI128->mem.mw0_ad,
 	pI128->MemorySize*1024);
+#else
+    pci_device_unmap_range(pI128->PciInfo, pI128->mem.mw0_ad,
+	pI128->MemorySize*1024);
+#endif
     pI128->mem.mw0_ad = NULL;
     pI128->MemoryPtr = NULL;
 
+#ifndef XSERVER_LIBPCIACCESS
     xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pI128->mem.rbase_g, 64*1024);
+#else
+    pci_device_unmap_range(pI128->PciInfo, pI128->mem.rbase_g, 64*1024);
+#endif
     pI128->mem.rbase_g = NULL;
     pI128->mem.rbase_w = NULL;
     pI128->mem.rbase_a = NULL;

commit 8bd4dc99bbaa8bf8c6649dc25fc75859e16e35ec
Author: Thomas Jaeger <ThJaeger@gmail.com>
Date:   Fri Jan 30 16:25:07 2009 -0500

    CheckComposite: Add a few checks
    
    It looks like the driver doesn't support any form of repeating and only
    nearest-neighbor interpolation.

diff --git a/src/i128exa.c b/src/i128exa.c
index 84452a8..f4e831f 100644
--- a/src/i128exa.c
+++ b/src/i128exa.c
@@ -476,11 +476,15 @@ i128CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
     if (pMaskPicture) return FALSE;
 
     /* when transforms added, be sure to check for linear/nearest */
-    /* if (pSrcPicture->transform) return FALSE; */
+    if (pSrcPicture->transform && pSrcPicture->filter != PictFilterNearest)
+        return FALSE;
 
     /* no support for external alpha */
     if (pSrcPicture->alphaMap || pDstPicture->alphaMap) return FALSE;
 
+    /* driver currently doesn't support repeating */
+    if (pSrcPicture->repeat) return FALSE;
+
     pI128->source = i128MapSourceFormat(pSrcPicture->format);
     if (!pI128->source)
         return FALSE;

commit 8936b17d83c6fa2b67c447ae3cac5159d8d84649
Author: Chris Ball <cjb@laptop.org>
Date:   Tue Feb 24 13:00:05 2009 -0500

    Build fix for EXA 3
    
    EXA in xserver head now requires us to pass -DEXA_DRIVER_KNOWN_MAJOR=3.
    
    Signed-off-by: Chris Ball <cjb@laptop.org>

diff --git a/configure.ac b/configure.ac
index 6002fc5..d5a7502 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,6 +73,9 @@ if test "x$XSERVER_LIBPCIACCESS" = xyes; then
 fi
 AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
 
+# Required by exa.h
+AC_DEFINE(EXA_DRIVER_KNOWN_MAJOR, 3, [Major version of EXA we can handle])
+
 # Checks for header files.
 AC_HEADER_STDC
 

commit 4fcee9dd9075b28474ae5b248a9edc0789f55b05
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date:   Fri Jan 9 16:28:55 2009 -0800

    Remove xorgconfig & xorgcfg from See Also list in man page

diff --git a/man/i128.man b/man/i128.man
index 9ecf548..920d2ab 100644
--- a/man/i128.man
+++ b/man/i128.man
@@ -65,6 +65,6 @@ Default: false.
 This turns on verbose debug information from the driver.
 Default: off.
 .SH "SEE ALSO"
-__xservername__(1), __xconfigfile__(__filemansuffix__), xorgconfig(1), Xserver(1), X(__miscmansuffix__)
+__xservername__(1), __xconfigfile__(__filemansuffix__), Xserver(1), X(__miscmansuffix__)
 .SH AUTHORS
 Authors include: Robin Cutshaw (driver), Galen Brooks (flatpanel support).


Reply to: