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); }