[WIN32K]: Enable the alignment code and reduce the number of hacks, leaving only one for 1bpp top-down output (Freetype?) which doesn't seem to like when the lDelta is aligned to the correct bit-boundary. This should fix the crashes and graphic cltches recently introduced.

svn path=/trunk/; revision=46117
This commit is contained in:
Sir Richard 2010-03-11 21:41:19 +00:00
parent 718fb52625
commit 6cc3c9cd47

View file

@ -475,27 +475,27 @@ SURFMEM_bCreateDib(IN PDEVBITMAPINFO BitmapInfo,
switch (BitmapInfo->Format)
{
case BMF_1BPP:
//ScanLine = ((BitmapInfo->Width + 31) & ~31) / 8;
ScanLine = ((BitmapInfo->Width + 31) & ~31) >> 3;
break;
case BMF_4BPP:
//ScanLine = ((BitmapInfo->Width + 7) & ~7) / 2;
ScanLine = ((BitmapInfo->Width + 7) & ~7) >> 1;
break;
case BMF_8BPP:
//ScanLine = ((BitmapInfo->Width + 3) & ~3);
ScanLine = (BitmapInfo->Width + 3) & ~3;
break;
case BMF_16BPP:
//ScanLine = ((BitmapInfo->Width + 1) & ~1) * 2;
ScanLine = ((BitmapInfo->Width + 1) & ~1) << 1;
break;
case BMF_24BPP:
//ScanLine = ((BitmapInfo->Width * 3) + 3) & ~3;
ScanLine = ((BitmapInfo->Width * 3) + 3) & ~3;
break;
case BMF_32BPP:
// ScanLine = BitmapInfo->Width * 4;
ScanLine = BitmapInfo->Width << 2;
break;
case BMF_8RLE:
@ -510,8 +510,6 @@ SURFMEM_bCreateDib(IN PDEVBITMAPINFO BitmapInfo,
return NULL;
}
ScanLine = BitmapInfo->Width;
/* Does the device manage its own surface? */
if (!Bits)
{
@ -604,6 +602,9 @@ SURFMEM_bCreateDib(IN PDEVBITMAPINFO BitmapInfo,
/* For topdown, the base address starts with the bits */
pso->pvScan0 = pso->pvBits;
pso->lDelta = ScanLine;
/* Hack for FreeType/Font Rendering, cannot use the Aligned ScanLine */
if (BitmapInfo->Format == BMF_1BPP) pso->lDelta = BitmapInfo->Width / 8;
}
else
{
@ -669,7 +670,6 @@ EngCreateBitmap(IN SIZEL Size,
*/
if ((Bits) && (Width))
{
#if 0
switch (BitmapInfo.Format)
{
/* Do the conversion for each bit depth we support */
@ -692,9 +692,6 @@ EngCreateBitmap(IN SIZEL Size,
BitmapInfo.Width = Width / 4;
break;
}
#endif
BitmapInfo.Width = Width;
}
/* Now create the surface */