start implement DrvGetDirectDrawInfo it is not complete only around 1/3 is done

svn path=/trunk/; revision=23130
This commit is contained in:
Magnus Olsen 2006-07-17 22:14:58 +00:00
parent 2c59aa9330
commit 65316d9faa
4 changed files with 70 additions and 21 deletions

View file

@ -51,16 +51,17 @@ DrvEnableDirectDraw(
ppdev->ddpfDisplay.dwGBitMask = ppdev->GreenMask; ppdev->ddpfDisplay.dwGBitMask = ppdev->GreenMask;
ppdev->ddpfDisplay.dwBBitMask = ppdev->BlueMask; ppdev->ddpfDisplay.dwBBitMask = ppdev->BlueMask;
switch(ppdev->BitsPerPixel) ppdev->ddpfDisplay.dwRGBBitCount=ppdev->BitsPerPixel;
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
ppdev->ddpfDisplay.dwFlags = DDPF_RGB;
switch(ppdev->iDitherFormat)
{ {
case BMF_8BPP: case BMF_8BPP:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0; ppdev->ddpfDisplay.dwFlags |= DDPF_PALETTEINDEXED8;
ppdev->ddpfDisplay.dwRGBBitCount=8;
ppdev->ddpfDisplay.dwFlags = DDPF_RGB | DDPF_PALETTEINDEXED8;
break; break;
case BMF_16BPP: case BMF_16BPP:
ppdev->ddpfDisplay.dwRGBBitCount=16;
switch(ppdev->RedMask) switch(ppdev->RedMask)
{ {
case 0x7C00: case 0x7C00:
@ -68,28 +69,23 @@ DrvEnableDirectDraw(
break; break;
default: default:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0; break;
} }
break; break;
case BMF_24BPP: case BMF_24BPP:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
ppdev->ddpfDisplay.dwRGBBitCount=24;
break; break;
case BMF_32BPP: case BMF_32BPP:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0xff000000; ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0xff000000;
ppdev->ddpfDisplay.dwRGBBitCount=32;
break; break;
default: default:
/* FIXME unknown pixelformat */ /* FIXME unknown pixel bits */
ppdev->ddpfDisplay.dwRGBBitCount=0;
break; break;
} }
//InitDDHAL(ppdev);
if (pCallBacks !=NULL) if (pCallBacks !=NULL)
{ {
memset(pCallBacks,0,sizeof(DD_CALLBACKS)); memset(pCallBacks,0,sizeof(DD_CALLBACKS));
@ -138,6 +134,52 @@ DrvGetDirectDrawInfo(
OUT DWORD *pdwNumFourCCCodes, OUT DWORD *pdwNumFourCCCodes,
OUT DWORD *pdwFourCC) OUT DWORD *pdwFourCC)
{ {
return FALSE; PPDEV ppdev = (PPDEV)dhpdev;
/* rest some data */
*pdwNumFourCCCodes = 0;
*pdwNumHeaps = 0;
/*
check see if pvmList and pdwFourCC are second call
or frist. Secon call we fill in pHalInfo info
*/
if(!(pvmList && pdwFourCC))
{
/* Calc how much memmory is left on the video cards memmory */
pHalInfo->ddCaps.dwVidMemTotal = (ppdev->MemHeight - ppdev->ScreenHeight) * ppdev->ScreenDelta;
/* fill in some basic info that we need */
pHalInfo->vmiData.pvPrimary = ppdev->ScreenPtr;
pHalInfo->vmiData.fpPrimary = 0;
pHalInfo->vmiData.dwDisplayWidth = ppdev->ScreenWidth;
pHalInfo->vmiData.dwDisplayHeight = ppdev->ScreenHeight;
pHalInfo->vmiData.lDisplayPitch = ppdev->ScreenDelta;
pHalInfo->vmiData.ddpfDisplay.dwSize = sizeof(DDPIXELFORMAT);
pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_RGB;
pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount = ppdev->BitsPerPixel;
pHalInfo->vmiData.ddpfDisplay.dwRBitMask = ppdev->RedMask;
pHalInfo->vmiData.ddpfDisplay.dwGBitMask = ppdev->GreenMask;
pHalInfo->vmiData.ddpfDisplay.dwBBitMask = ppdev->BlueMask;
pHalInfo->vmiData.dwOffscreenAlign = 4;
pHalInfo->vmiData.dwZBufferAlign = 4;
pHalInfo->vmiData.dwTextureAlign = 4;
if ( ppdev->BitsPerPixel == 8 )
{
pHalInfo->vmiData.ddpfDisplay.dwFlags |= DDPF_PALETTEINDEXED8;
}
}
return TRUE;
} }

View file

@ -63,6 +63,8 @@ typedef struct _PDEV
#endif #endif
/* DirectX Support */ /* DirectX Support */
DWORD iDitherFormat;
ULONG MemHeight;
BOOL bDDInitialized; BOOL bDDInitialized;
DDPIXELFORMAT ddpfDisplay; DDPIXELFORMAT ddpfDisplay;
DDHALINFO dxHalInfo; DDHALINFO dxHalInfo;

View file

@ -191,6 +191,8 @@ IntInitScreenInfo(
ppdev->ScreenDelta = SelectedMode->ScreenStride; ppdev->ScreenDelta = SelectedMode->ScreenStride;
ppdev->BitsPerPixel = SelectedMode->BitsPerPlane * SelectedMode->NumberOfPlanes; ppdev->BitsPerPixel = SelectedMode->BitsPerPlane * SelectedMode->NumberOfPlanes;
ppdev->MemHeight = SelectedMode->VideoMemoryBitmapHeight;
ppdev->RedMask = SelectedMode->RedMask; ppdev->RedMask = SelectedMode->RedMask;
ppdev->GreenMask = SelectedMode->GreenMask; ppdev->GreenMask = SelectedMode->GreenMask;
ppdev->BlueMask = SelectedMode->BlueMask; ppdev->BlueMask = SelectedMode->BlueMask;

View file

@ -91,6 +91,8 @@ DrvEnableSurface(
return FALSE; return FALSE;
} }
ppdev->iDitherFormat = BitmapType;
ScreenSize.cx = ppdev->ScreenWidth; ScreenSize.cx = ppdev->ScreenWidth;
ScreenSize.cy = ppdev->ScreenHeight; ScreenSize.cy = ppdev->ScreenHeight;
@ -181,8 +183,9 @@ DrvAssertMode(
&ulTemp); &ulTemp);
if (ppdev->BitsPerPixel == 8) if (ppdev->BitsPerPixel == 8)
{ {
IntSetPalette(dhpdev, ppdev->PaletteEntries, 0, 256); IntSetPalette(dhpdev, ppdev->PaletteEntries, 0, 256);
} }
return Result; return Result;
} }