Module Name:    xsrc
Committed By:   macallan
Date:           Thu Dec  2 22:32:36 UTC 2021

Modified Files:
        xsrc/external/mit/xf86-video-suncg14/dist/src: cg14_driver.c

Log Message:
support 8 bit colour
no acceleration yet, the code is riddled with 32bit per pixel assumptions


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 \
    xsrc/external/mit/xf86-video-suncg14/dist/src/cg14_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-suncg14/dist/src/cg14_driver.c
diff -u xsrc/external/mit/xf86-video-suncg14/dist/src/cg14_driver.c:1.17 xsrc/external/mit/xf86-video-suncg14/dist/src/cg14_driver.c:1.18
--- xsrc/external/mit/xf86-video-suncg14/dist/src/cg14_driver.c:1.17	Wed Dec  1 17:47:11 2021
+++ xsrc/external/mit/xf86-video-suncg14/dist/src/cg14_driver.c	Thu Dec  2 22:32:35 2021
@@ -370,6 +370,7 @@ CG14PreInit(ScrnInfoPtr pScrn, int flags
     switch (pScrn->depth) {
 	case 32:
 	case 24:
+	case 8:
 	    /* OK */
 	    break;
 	default:
@@ -593,9 +594,11 @@ CG14ScreenInit(SCREEN_INIT_ARGS_DECL)
      */
     miClearVisualTypes();
 
-    /* Setup the visuals we support. */
+    /* Set the bits per RGB for 8bpp mode */
+    pScrn->rgbBits = 8;
 
-    if (!miSetVisualTypes(pScrn->depth, TrueColorMask,
+    /* Setup the visuals we support. */
+    if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth),
 			  pScrn->rgbBits, pScrn->defaultVisual))
 	return FALSE;
 
@@ -617,6 +620,7 @@ CG14ScreenInit(SCREEN_INIT_ARGS_DECL)
      */
 
     CG14InitCplane24(pScrn);
+
     ret = fbScreenInit(pScreen, pCg14->use_shadow ? pCg14->shadow : pCg14->fb,
     		       pScrn->virtualX,
 		       pScrn->virtualY, pScrn->xDpi, pScrn->yDpi,
@@ -683,6 +687,9 @@ CG14ScreenInit(SCREEN_INIT_ARGS_DECL)
     if (!miCreateDefColormap(pScreen))
 	return FALSE;
 
+    if(!xf86SbusHandleColormaps(pScreen, pCg14->psdp))
+	return FALSE;
+
     pCg14->CloseScreen = pScreen->CloseScreen;
     pScreen->CloseScreen = CG14CloseScreen;
     pScreen->SaveScreen = CG14SaveScreen;
@@ -774,8 +781,7 @@ CG14CloseScreen(CLOSE_SCREEN_ARGS_DECL)
 
     pScrn->vtSema = FALSE;
     CG14ExitCplane24 (pScrn);
-    xf86UnmapSbusMem(pCg14->psdp, pCg14->fb,
-		     (pCg14->psdp->width * pCg14->psdp->height * 4));
+    xf86UnmapSbusMem(pCg14->psdp, pCg14->fb, pCg14->memsize);
     xf86UnmapSbusMem(pCg14->psdp, pCg14->x32,
 		     (pCg14->psdp->width * pCg14->psdp->height));
     xf86UnmapSbusMem(pCg14->psdp, pCg14->xlut, 4096);
@@ -864,9 +870,12 @@ CG14InitCplane24(ScrnInfoPtr pScrn)
   int size, bpp;
               
   size = pScrn->virtualX * pScrn->virtualY;
-  bpp = 32;
+  if (pScrn->bitsPerPixel > 8) {
+  	bpp = 32;
+  } else
+  	bpp = 8;
   ioctl (pCg14->psdp->fd, CG14_SET_PIXELMODE, &bpp);
-  memset (pCg14->fb, 0, size * 4);
+  memset (pCg14->fb, 0, size * (bpp >> 3));
   memset (pCg14->x32, 0, size);
   memset (pCg14->xlut, 0, 0x200);
 }                                                  

Reply via email to