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