[PATCH] fb: Remove fbcmap.c (bug 5436)
Jeremy Huddleston
jeremyhu at apple.com
Mon Oct 25 14:02:40 PDT 2010
Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
On Oct 15, 2010, at 15:08, Jesse Adkins wrote:
> This is obsolete since a240c039c47c0be22ea5e100692307b26d938747.
> Updated fb.h to mention that the functions come from fbcmap_mi.c now.
> Dropped fbcmap.c from the makefile.
>
> Signed-off-by: Jesse Adkins <jesserayadkins at gmail.com>
> ---
> fb/Makefile.am | 2 +-
> fb/fb.h | 2 +-
> fb/fbcmap.c | 586 --------------------------------------------------------
> 3 files changed, 2 insertions(+), 588 deletions(-)
> delete mode 100644 fb/fbcmap.c
>
> diff --git a/fb/Makefile.am b/fb/Makefile.am
> index 2f3073d..f9f34c4 100644
> --- a/fb/Makefile.am
> +++ b/fb/Makefile.am
> @@ -55,4 +55,4 @@ libfb_la_SOURCES = \
>
> libwfb_la_SOURCES = $(libfb_la_SOURCES)
>
> -EXTRA_DIST = fbcmap.c fbcmap_mi.c
> +EXTRA_DIST = fbcmap_mi.c
> diff --git a/fb/fb.h b/fb/fb.h
> index c290ebf..021a940 100644
> --- a/fb/fb.h
> +++ b/fb/fb.h
> @@ -1262,7 +1262,7 @@ fbBltPlane (FbBits *src,
> Pixel planeMask);
>
> /*
> - * fbcmap.c
> + * fbcmap_mi.c
> */
> extern _X_EXPORT int
> fbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps);
> diff --git a/fb/fbcmap.c b/fb/fbcmap.c
> deleted file mode 100644
> index 3251a4c..0000000
> --- a/fb/fbcmap.c
> +++ /dev/null
> @@ -1,586 +0,0 @@
> -/*
> - * Copyright © 1987 Sun Microsystems, Inc. All rights reserved.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice (including the next
> - * paragraph) shall be included in all copies or substantial portions of the
> - * Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> - * DEALINGS IN THE SOFTWARE.
> - */
> -
> -#ifdef HAVE_DIX_CONFIG_H
> -#include <dix-config.h>
> -#endif
> -
> -#include <X11/X.h>
> -#include <X11/Xproto.h>
> -#include "scrnintstr.h"
> -#include "colormapst.h"
> -#include "resource.h"
> -#include "fb.h"
> -
> -#ifdef XFree86Server
> -#error "You should be compiling fbcmap_mi.c instead of fbcmap.c!"
> -#endif
> -
> -static DevPrivateKeyRec cmapScrPrivateKeyRec;
> -#define cmapScrPrivateKey (&cmapScrPrivateKeyRec)
> -
> -#define GetInstalledColormap(s) ((ColormapPtr) dixLookupPrivate(&(s)->devPrivates, cmapScrPrivateKey))
> -#define SetInstalledColormap(s,c) (dixSetPrivate(&(s)->devPrivates, cmapScrPrivateKey, c))
> -
> -int
> -fbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
> -{
> - /* By the time we are processing requests, we can guarantee that there
> - * is always a colormap installed */
> - *pmaps = GetInstalledColormap(pScreen)->mid;
> - return 1;
> -}
> -
> -
> -void
> -fbInstallColormap(ColormapPtr pmap)
> -{
> - ColormapPtr oldpmap = GetInstalledColormap(pmap->pScreen);
> -
> - if(pmap != oldpmap)
> - {
> - /* Uninstall pInstalledMap. No hardware changes required, just
> - * notify all interested parties. */
> - if(oldpmap != (ColormapPtr)None)
> - WalkTree(pmap->pScreen, TellLostMap, (char *)&oldpmap->mid);
> - /* Install pmap */
> - SetInstalledColormap(pmap->pScreen, pmap);
> - WalkTree(pmap->pScreen, TellGainedMap, (char *)&pmap->mid);
> - }
> -}
> -
> -void
> -fbUninstallColormap(ColormapPtr pmap)
> -{
> - ColormapPtr curpmap = GetInstalledColormap(pmap->pScreen);
> -
> - if(pmap == curpmap)
> - {
> - if (pmap->mid != pmap->pScreen->defColormap)
> - {
> - dixLookupResourceByType((pointer *)&curpmap,
> - pmap->pScreen->defColormap,
> - RT_COLORMAP,
> - serverClient, DixInstallAccess);
> - (*pmap->pScreen->InstallColormap)(curpmap);
> - }
> - }
> -}
> -
> -void
> -fbResolveColor(unsigned short *pred,
> - unsigned short *pgreen,
> - unsigned short *pblue,
> - VisualPtr pVisual)
> -{
> - int shift = 16 - pVisual->bitsPerRGBValue;
> - unsigned lim = (1 << pVisual->bitsPerRGBValue) - 1;
> -
> - if ((pVisual->class | DynamicClass) == GrayScale)
> - {
> - /* rescale to gray then rgb bits */
> - *pred = (30L * *pred + 59L * *pgreen + 11L * *pblue) / 100;
> - *pblue = *pgreen = *pred = ((*pred >> shift) * 65535) / lim;
> - }
> - else
> - {
> - /* rescale to rgb bits */
> - *pred = ((*pred >> shift) * 65535) / lim;
> - *pgreen = ((*pgreen >> shift) * 65535) / lim;
> - *pblue = ((*pblue >> shift) * 65535) / lim;
> - }
> -}
> -
> -Bool
> -fbInitializeColormap(ColormapPtr pmap)
> -{
> - register unsigned i;
> - register VisualPtr pVisual;
> - unsigned lim, maxent, shift;
> -
> - pVisual = pmap->pVisual;
> - lim = (1 << pVisual->bitsPerRGBValue) - 1;
> - shift = 16 - pVisual->bitsPerRGBValue;
> - maxent = pVisual->ColormapEntries - 1;
> - if (pVisual->class == TrueColor)
> - {
> - unsigned limr, limg, limb;
> -
> - limr = pVisual->redMask >> pVisual->offsetRed;
> - limg = pVisual->greenMask >> pVisual->offsetGreen;
> - limb = pVisual->blueMask >> pVisual->offsetBlue;
> - for(i = 0; i <= maxent; i++)
> - {
> - /* rescale to [0..65535] then rgb bits */
> - pmap->red[i].co.local.red =
> - ((((i * 65535) / limr) >> shift) * 65535) / lim;
> - pmap->green[i].co.local.green =
> - ((((i * 65535) / limg) >> shift) * 65535) / lim;
> - pmap->blue[i].co.local.blue =
> - ((((i * 65535) / limb) >> shift) * 65535) / lim;
> - }
> - }
> - else if (pVisual->class == StaticColor)
> - {
> - unsigned n;
> - unsigned r, g, b;
> - unsigned red, green, blue;
> -
> - for (n = 0; n*n*n < pVisual->ColormapEntries; n++)
> - ;
> - n--;
> - i = 0;
> - for (r = 0; r < n; r++)
> - {
> - red = (((r * 65535 / (n - 1)) >> shift) * 65535) / lim;
> - for (g = 0; g < n; g++)
> - {
> - green = (((g * 65535 / (n - 1)) >> shift) * 65535) / lim;
> - for (b = 0; b < n; b++)
> - {
> - blue = (((b * 65535 / (n - 1)) >> shift) * 65535) / lim;
> - pmap->red[i].co.local.red = red;
> - pmap->red[i].co.local.green = green;
> - pmap->red[i].co.local.blue = blue;
> - i++;
> - }
> - }
> - }
> - n = pVisual->ColormapEntries - i;
> - for (r = 0; r < n; r++)
> - {
> - red = (((r * 65535 / (n - 1)) >> shift) * 65535) / lim;
> - pmap->red[i].co.local.red = red;
> - pmap->red[i].co.local.green = red;
> - pmap->red[i].co.local.blue = red;
> - i++;
> - }
> - }
> - else if (pVisual->class == StaticGray)
> - {
> - for(i = 0; i <= maxent; i++)
> - {
> - /* rescale to [0..65535] then rgb bits */
> - pmap->red[i].co.local.red = ((((i * 65535) / maxent) >> shift)
> - * 65535) / lim;
> - pmap->red[i].co.local.green = pmap->red[i].co.local.red;
> - pmap->red[i].co.local.blue = pmap->red[i].co.local.red;
> - }
> - }
> - return TRUE;
> -}
> -
> -/* When simulating DirectColor on PseudoColor hardware, multiple
> - entries of the colormap must be updated
> - */
> -
> -#define AddElement(mask) { \
> - pixel = red | green | blue; \
> - for (i = 0; i < nresult; i++) \
> - if (outdefs[i].pixel == pixel) \
> - break; \
> - if (i == nresult) \
> - { \
> - nresult++; \
> - outdefs[i].pixel = pixel; \
> - outdefs[i].flags = 0; \
> - } \
> - outdefs[i].flags |= (mask); \
> - outdefs[i].red = pmap->red[red >> pVisual->offsetRed].co.local.red; \
> - outdefs[i].green = pmap->green[green >> pVisual->offsetGreen].co.local.green; \
> - outdefs[i].blue = pmap->blue[blue >> pVisual->offsetBlue].co.local.blue; \
> -}
> -
> -int
> -fbExpandDirectColors (ColormapPtr pmap,
> - int ndef,
> - xColorItem *indefs,
> - xColorItem *outdefs)
> -{
> - register int red, green, blue;
> - int maxred, maxgreen, maxblue;
> - int stepred, stepgreen, stepblue;
> - VisualPtr pVisual;
> - register int pixel;
> - register int nresult;
> - register int i;
> -
> - pVisual = pmap->pVisual;
> -
> - stepred = 1 << pVisual->offsetRed;
> - stepgreen = 1 << pVisual->offsetGreen;
> - stepblue = 1 << pVisual->offsetBlue;
> - maxred = pVisual->redMask;
> - maxgreen = pVisual->greenMask;
> - maxblue = pVisual->blueMask;
> - nresult = 0;
> - for (;ndef--; indefs++)
> - {
> - if (indefs->flags & DoRed)
> - {
> - red = indefs->pixel & pVisual->redMask;
> - for (green = 0; green <= maxgreen; green += stepgreen)
> - {
> - for (blue = 0; blue <= maxblue; blue += stepblue)
> - {
> - AddElement (DoRed)
> - }
> - }
> - }
> - if (indefs->flags & DoGreen)
> - {
> - green = indefs->pixel & pVisual->greenMask;
> - for (red = 0; red <= maxred; red += stepred)
> - {
> - for (blue = 0; blue <= maxblue; blue += stepblue)
> - {
> - AddElement (DoGreen)
> - }
> - }
> - }
> - if (indefs->flags & DoBlue)
> - {
> - blue = indefs->pixel & pVisual->blueMask;
> - for (red = 0; red <= maxred; red += stepred)
> - {
> - for (green = 0; green <= maxgreen; green += stepgreen)
> - {
> - AddElement (DoBlue)
> - }
> - }
> - }
> - }
> - return nresult;
> -}
> -
> -Bool
> -fbCreateDefColormap(ScreenPtr pScreen)
> -{
> - unsigned short zero = 0, ones = 0xFFFF;
> - VisualPtr pVisual;
> - ColormapPtr cmap;
> - Pixel wp, bp;
> -
> - for (pVisual = pScreen->visuals;
> - pVisual->vid != pScreen->rootVisual;
> - pVisual++)
> - ;
> -
> - if (CreateColormap(pScreen->defColormap, pScreen, pVisual, &cmap,
> - (pVisual->class & DynamicClass) ? AllocNone : AllocAll,
> - 0)
> - != Success)
> - return FALSE;
> - wp = pScreen->whitePixel;
> - bp = pScreen->blackPixel;
> - if ((AllocColor(cmap, &ones, &ones, &ones, &wp, 0) !=
> - Success) ||
> - (AllocColor(cmap, &zero, &zero, &zero, &bp, 0) !=
> - Success))
> - return FALSE;
> - pScreen->whitePixel = wp;
> - pScreen->blackPixel = bp;
> - (*pScreen->InstallColormap)(cmap);
> - return TRUE;
> -}
> -
> -extern int defaultColorVisualClass;
> -
> -#define _RZ(d) ((d + 2) / 3)
> -#define _RS(d) 0
> -#define _RM(d) ((1 << _RZ(d)) - 1)
> -#define _GZ(d) ((d - _RZ(d) + 1) / 2)
> -#define _GS(d) _RZ(d)
> -#define _GM(d) (((1 << _GZ(d)) - 1) << _GS(d))
> -#define _BZ(d) (d - _RZ(d) - _GZ(d))
> -#define _BS(d) (_RZ(d) + _GZ(d))
> -#define _BM(d) (((1 << _BZ(d)) - 1) << _BS(d))
> -#define _CE(d) (1 << _RZ(d))
> -
> -#define MAX_PSEUDO_DEPTH 10 /* largest DAC size I know */
> -
> -#define StaticGrayMask (1 << StaticGray)
> -#define GrayScaleMask (1 << GrayScale)
> -#define StaticColorMask (1 << StaticColor)
> -#define PseudoColorMask (1 << PseudoColor)
> -#define TrueColorMask (1 << TrueColor)
> -#define DirectColorMask (1 << DirectColor)
> -
> -#define ALL_VISUALS (StaticGrayMask|\
> - GrayScaleMask|\
> - StaticColorMask|\
> - PseudoColorMask|\
> - TrueColorMask|\
> - DirectColorMask)
> -
> -#define LARGE_VISUALS (TrueColorMask|\
> - DirectColorMask)
> -
> -typedef struct _fbVisuals {
> - struct _fbVisuals *next;
> - int depth;
> - int bitsPerRGB;
> - int visuals;
> - int count;
> - Pixel redMask, greenMask, blueMask;
> -} fbVisualsRec, *fbVisualsPtr;
> -
> -static const int fbVisualPriority[] = {
> - PseudoColor, DirectColor, GrayScale, StaticColor, TrueColor, StaticGray
> -};
> -
> -#define NUM_PRIORITY 6
> -
> -static fbVisualsPtr fbVisuals;
> -
> -static int
> -popCount (int i)
> -{
> - int count;
> -
> - count = (i >> 1) & 033333333333;
> - count = i - count - ((count >> 1) & 033333333333);
> - count = (((count + (count >> 3)) & 030707070707) % 077); /* HAKMEM 169 */
> - return count;
> -}
> -
> -/*
> - * Distance to least significant one bit
> - */
> -static int
> -maskShift (Pixel p)
> -{
> - int s;
> -
> - if (!p) return 0;
> - s = 0;
> - while (!(p & 1))
> - {
> - s++;
> - p >>= 1;
> - }
> - return s;
> -}
> -
> -Bool
> -fbSetVisualTypesAndMasks (int depth, int visuals, int bitsPerRGB,
> - Pixel redMask, Pixel greenMask, Pixel blueMask)
> -{
> - fbVisualsPtr new, *prev, v;
> -
> - new = (fbVisualsPtr) malloc(sizeof *new);
> - if (!new)
> - return FALSE;
> - if (!redMask || !greenMask || !blueMask)
> - {
> - redMask = _RM(depth);
> - greenMask = _GM(depth);
> - blueMask = _BM(depth);
> - }
> - new->next = 0;
> - new->depth = depth;
> - new->visuals = visuals;
> - new->bitsPerRGB = bitsPerRGB;
> - new->redMask = redMask;
> - new->greenMask = greenMask;
> - new->blueMask = blueMask;
> - new->count = popCount (visuals);
> - for (prev = &fbVisuals; (v = *prev); prev = &v->next);
> - *prev = new;
> - return TRUE;
> -}
> -
> -Bool
> -fbHasVisualTypes (int depth)
> -{
> - fbVisualsPtr v;
> -
> - for (v = fbVisuals; v; v = v->next)
> - if (v->depth == depth)
> - return TRUE;
> - return FALSE;
> -}
> -
> -Bool
> -fbSetVisualTypes (int depth, int visuals, int bitsPerRGB)
> -{
> - return fbSetVisualTypesAndMasks (depth, visuals, bitsPerRGB,
> - _RM(depth), _GM(depth), _BM(depth));
> -}
> -
> -/*
> - * Given a list of formats for a screen, create a list
> - * of visuals and depths for the screen which coorespond to
> - * the set which can be used with this version of fb.
> - */
> -
> -Bool
> -fbInitVisuals (VisualPtr *visualp,
> - DepthPtr *depthp,
> - int *nvisualp,
> - int *ndepthp,
> - int *rootDepthp,
> - VisualID *defaultVisp,
> - unsigned long sizes,
> - int bitsPerRGB)
> -{
> - int i, j = 0, k;
> - VisualPtr visual;
> - DepthPtr depth;
> - VisualID *vid;
> - int d, b;
> - int f;
> - int ndepth, nvisual;
> - int nvtype;
> - int vtype;
> - fbVisualsPtr visuals, nextVisuals;
> -
> - /* none specified, we'll guess from pixmap formats */
> - if (!fbVisuals)
> - {
> - for (f = 0; f < screenInfo.numPixmapFormats; f++)
> - {
> - d = screenInfo.formats[f].depth;
> - b = screenInfo.formats[f].bitsPerPixel;
> - if (sizes & (1 << (b - 1)))
> - {
> - if (d > MAX_PSEUDO_DEPTH)
> - vtype = LARGE_VISUALS;
> - else if (d == 1)
> - vtype = StaticGrayMask;
> - else
> - vtype = ALL_VISUALS;
> - }
> - else
> - vtype = 0;
> - if (!fbSetVisualTypes (d, vtype, bitsPerRGB))
> - return FALSE;
> - }
> - }
> - nvisual = 0;
> - ndepth = 0;
> - for (visuals = fbVisuals; visuals; visuals = nextVisuals)
> - {
> - nextVisuals = visuals->next;
> - ndepth++;
> - nvisual += visuals->count;
> - }
> - depth = (DepthPtr) malloc(ndepth * sizeof (DepthRec));
> - visual = (VisualPtr) malloc(nvisual * sizeof (VisualRec));
> - if (!depth || !visual)
> - {
> - free(depth);
> - free(visual);
> - return FALSE;
> - }
> - *depthp = depth;
> - *visualp = visual;
> - *ndepthp = ndepth;
> - *nvisualp = nvisual;
> - for (visuals = fbVisuals; visuals; visuals = nextVisuals)
> - {
> - nextVisuals = visuals->next;
> - d = visuals->depth;
> - vtype = visuals->visuals;
> - nvtype = visuals->count;
> - vid = NULL;
> - if (nvtype)
> - {
> - vid = (VisualID *) malloc(nvtype * sizeof (VisualID));
> - if (!vid)
> - return FALSE;
> - }
> - depth->depth = d;
> - depth->numVids = nvtype;
> - depth->vids = vid;
> - depth++;
> - for (i = 0; i < NUM_PRIORITY; i++) {
> - if (! (vtype & (1 << fbVisualPriority[i])))
> - continue;
> - visual->class = fbVisualPriority[i];
> - visual->bitsPerRGBValue = visuals->bitsPerRGB;
> - visual->ColormapEntries = 1 << d;
> - visual->nplanes = d;
> - visual->vid = *vid = FakeClientID (0);
> - switch (visual->class) {
> - case PseudoColor:
> - case GrayScale:
> - case StaticGray:
> - case StaticColor:
> - visual->redMask = 0;
> - visual->greenMask = 0;
> - visual->blueMask = 0;
> - visual->offsetRed = 0;
> - visual->offsetGreen = 0;
> - visual->offsetBlue = 0;
> - break;
> - case DirectColor:
> - case TrueColor:
> - visual->ColormapEntries = _CE(d);
> - visual->redMask = visuals->redMask;
> - visual->greenMask = visuals->greenMask;
> - visual->blueMask = visuals->blueMask;
> - visual->offsetRed = maskShift (visuals->redMask);
> - visual->offsetGreen = maskShift (visuals->greenMask);
> - visual->offsetBlue = maskShift (visuals->blueMask);
> - }
> - vid++;
> - visual++;
> - }
> - free(visuals);
> - }
> - fbVisuals = NULL;
> - visual = *visualp;
> - depth = *depthp;
> - for (i = 0; i < ndepth; i++)
> - {
> - if (*rootDepthp && *rootDepthp != depth[i].depth)
> - continue;
> - for (j = 0; j < depth[i].numVids; j++)
> - {
> - for (k = 0; k < nvisual; k++)
> - if (visual[k].vid == depth[i].vids[j])
> - break;
> - if (k == nvisual)
> - continue;
> - if (defaultColorVisualClass < 0 ||
> - visual[k].class == defaultColorVisualClass)
> - break;
> - }
> - if (j != depth[i].numVids)
> - break;
> - }
> - if (i == ndepth) {
> - for (i = 0; i < ndepth; i++)
> - {
> - if (depth[i].numVids)
> - break;
> - }
> - if (i == ndepth)
> - return FALSE;
> - j = 0;
> - }
> - *rootDepthp = depth[i].depth;
> - *defaultVisp = depth[i].vids[j];
> - return TRUE;
> -}
> --
> 1.7.1
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list