Reviewed-by: Jeremy Huddleston <jerem...@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 <jesserayadk...@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@lists.x.org: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel