Generalize kludge in fbdev that normalizes pixel formats to something that
Render can handle
This commit is contained in:
parent
562474091a
commit
99fb2eb76d
|
@ -21,7 +21,7 @@
|
||||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c,v 1.21 2001/06/16 05:53:05 keithp Exp $ */
|
/* $XFree86: xc/programs/Xserver/hw/kdrive/fbdev/fbdev.c,v 1.22 2001/06/21 00:58:51 keithp Exp $ */
|
||||||
|
|
||||||
#include "fbdev.h"
|
#include "fbdev.h"
|
||||||
|
|
||||||
|
@ -86,6 +86,23 @@ fbdevCardInit (KdCardInfo *card)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define FBDEV_KLUDGE_FORMAT
|
||||||
|
#ifdef FBDEV_KLUDGE_FORMAT
|
||||||
|
static Pixel
|
||||||
|
fbdevMakeContig (Pixel orig, Pixel others)
|
||||||
|
{
|
||||||
|
Pixel low;
|
||||||
|
|
||||||
|
low = lowbit (orig) >> 1;
|
||||||
|
while (low && (others & low) == 0)
|
||||||
|
{
|
||||||
|
orig |= low;
|
||||||
|
low >>= 1;
|
||||||
|
}
|
||||||
|
return orig;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
fbdevScreenInitialize (KdScreenInfo *screen, FbdevScrPriv *scrpriv)
|
fbdevScreenInitialize (KdScreenInfo *screen, FbdevScrPriv *scrpriv)
|
||||||
{
|
{
|
||||||
|
@ -141,11 +158,24 @@ fbdevScreenInitialize (KdScreenInfo *screen, FbdevScrPriv *scrpriv)
|
||||||
screen->fb[0].redMask = Mask (priv->var.red.offset, priv->var.red.length);
|
screen->fb[0].redMask = Mask (priv->var.red.offset, priv->var.red.length);
|
||||||
screen->fb[0].greenMask = Mask (priv->var.green.offset, priv->var.green.length);
|
screen->fb[0].greenMask = Mask (priv->var.green.offset, priv->var.green.length);
|
||||||
screen->fb[0].blueMask = Mask (priv->var.blue.offset, priv->var.blue.length);
|
screen->fb[0].blueMask = Mask (priv->var.blue.offset, priv->var.blue.length);
|
||||||
#ifdef ITSY
|
#ifdef FBDEV_KLUDGE_FORMAT
|
||||||
screen->fb[0].redMask = 0xf800;
|
/*
|
||||||
screen->fb[0].greenMask = 0x07e0;
|
* This is a kludge so that Render will work -- fill in the gaps
|
||||||
screen->fb[0].blueMask = 0x001f;
|
* in the pixel
|
||||||
#endif
|
*/
|
||||||
|
screen->fb[0].redMask = fbdevMakeContig (screen->fb[0].redMask,
|
||||||
|
screen->fb[0].greenMask|
|
||||||
|
screen->fb[0].blueMask);
|
||||||
|
|
||||||
|
screen->fb[0].greenMask = fbdevMakeContig (screen->fb[0].greenMask,
|
||||||
|
screen->fb[0].redMask|
|
||||||
|
screen->fb[0].blueMask);
|
||||||
|
|
||||||
|
screen->fb[0].blueMask = fbdevMakeContig (screen->fb[0].blueMask,
|
||||||
|
screen->fb[0].redMask|
|
||||||
|
screen->fb[0].greenMask);
|
||||||
|
|
||||||
|
#endif
|
||||||
allbits = screen->fb[0].redMask | screen->fb[0].greenMask | screen->fb[0].blueMask;
|
allbits = screen->fb[0].redMask | screen->fb[0].greenMask | screen->fb[0].blueMask;
|
||||||
depth = 32;
|
depth = 32;
|
||||||
while (depth && !(allbits & (1 << (depth - 1))))
|
while (depth && !(allbits & (1 << (depth - 1))))
|
||||||
|
|
Loading…
Reference in New Issue