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.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:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
ppdev->ddpfDisplay.dwRGBBitCount=8;
ppdev->ddpfDisplay.dwFlags = DDPF_RGB | DDPF_PALETTEINDEXED8;
case BMF_8BPP:
ppdev->ddpfDisplay.dwFlags |= DDPF_PALETTEINDEXED8;
break;
case BMF_16BPP:
ppdev->ddpfDisplay.dwRGBBitCount=16;
case BMF_16BPP:
switch(ppdev->RedMask)
{
case 0x7C00:
@ -68,28 +69,23 @@ DrvEnableDirectDraw(
break;
default:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
break;
}
break;
case BMF_24BPP:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
ppdev->ddpfDisplay.dwRGBBitCount=24;
case BMF_24BPP:
break;
case BMF_32BPP:
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0xff000000;
ppdev->ddpfDisplay.dwRGBBitCount=32;
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0xff000000;
break;
default:
/* FIXME unknown pixelformat */
/* FIXME unknown pixel bits */
ppdev->ddpfDisplay.dwRGBBitCount=0;
break;
}
//InitDDHAL(ppdev);
if (pCallBacks !=NULL)
{
memset(pCallBacks,0,sizeof(DD_CALLBACKS));
@ -138,6 +134,52 @@ DrvGetDirectDrawInfo(
OUT DWORD *pdwNumFourCCCodes,
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
/* DirectX Support */
DWORD iDitherFormat;
ULONG MemHeight;
BOOL bDDInitialized;
DDPIXELFORMAT ddpfDisplay;
DDHALINFO dxHalInfo;

View file

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

View file

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