From cd73d524b9fd98cf243ec807ed39000e3126f9de Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sat, 26 Apr 2008 17:27:35 +0000 Subject: [PATCH] Add : started port in intEnableDriver from reactos 0.3.2 and rename it to intEnableReactXDriver. it is the part activate the graphic card directx support. Add : more debug data for ReactX it is need it to fill all edd_ struct right, allot of the debug functions will go away after we got up stable interface. BugFix : EDD_DIRECTDRAW_LOCAL the struct did miss one member. svn path=/trunk/; revision=33152 --- .../reactos/drivers/directx/directxint.h | 3 +- .../win32/win32k/include/intddraw.h | 22 + .../subsystems/win32/win32k/ntddraw/ddraw.c | 663 +++++++++++++++++- 3 files changed, 670 insertions(+), 18 deletions(-) diff --git a/reactos/include/reactos/drivers/directx/directxint.h b/reactos/include/reactos/drivers/directx/directxint.h index 1921c32d60a..7c3fa9c7bd1 100644 --- a/reactos/include/reactos/drivers/directx/directxint.h +++ b/reactos/include/reactos/drivers/directx/directxint.h @@ -13,7 +13,8 @@ typedef struct _EDD_DIRECTDRAW_LOCAL // DD_BASEOBJECT pobj; /* 0x10 */ struct _EDD_DIRECTDRAW_GLOBAL * peDirectDrawGlobal; // verify it match windows xp -/* 0x1C */ struct _EDD_SURFACE * peSurface_DdList; +/* 0x14 */ struct _EDD_SURFACE * peSurface_DdList; +/* 0x18 */ ULONG unk_018; /* 0x1C */ ULONG unk_01c; /* 0x20 */ ULONG unk_020; /* 0x24 */ struct _EDD_DIRECTDRAW_GLOBAL * peDirectDrawGlobal2; // verify it match windows xp diff --git a/reactos/subsystems/win32/win32k/include/intddraw.h b/reactos/subsystems/win32/win32k/include/intddraw.h index 77c3c8e34c7..c31ecd7e899 100644 --- a/reactos/subsystems/win32/win32k/include/intddraw.h +++ b/reactos/subsystems/win32/win32k/include/intddraw.h @@ -8,6 +8,7 @@ #include /* From ddraw.c */ +BOOL intEnableReactXDriver(PEDD_DIRECTDRAW_GLOBAL pEddgbl, PDC pDC); extern DRVFN gpDxFuncs[]; typedef BOOL (NTAPI* PGD_DDSETGAMMARAMP)(HANDLE, HDC, LPVOID); @@ -125,5 +126,26 @@ BOOL FASTCALL IntSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL); /* Debug function oly for win32k dx */ void dump_edd_directdraw_global(EDD_DIRECTDRAW_GLOBAL *pEddgbl); void dump_edd_directdraw_local(PEDD_DIRECTDRAW_LOCAL pEddlcl); +void dump_halinfo(DD_HALINFO *pHalInfo); + +#define checkflag(dwflag,dwvalue,text) \ + if (dwflag & dwvalue) \ + { \ + if (count!=0) \ + { \ + DPRINT1("| "); \ + } \ + dwflag = (ULONG)dwflag - (ULONG)dwvalue; \ + DPRINT1("%s ",text); \ + count++; \ + } + +#define endcheckflag(dwflag,text) \ + if (count==0) \ + DPRINT1("0x%08lx\n", (ULONG) dwflag);\ + else \ + DPRINT1("\n");\ + if (flag != 0) \ + DPRINT1("undoc value in %s flags value %08lx\n",text, (ULONG) dwflag); #endif /* _INT_W32k_DDRAW */ diff --git a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c index 58bb98d2160..9b3c3b941e8 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c +++ b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c @@ -26,6 +26,177 @@ ULONG gdwDirectDrawContext; EDD_DIRECTDRAW_GLOBAL edd_DdirectDraw_Global; +/************************************************************************/ +/* DirectX graphic/video driver enable start here */ +/************************************************************************/ +BOOL +intEnableReactXDriver(PEDD_DIRECTDRAW_GLOBAL pEddgbl, PDC pDC) +{ + PGDIDEVICE pDev = (PGDIDEVICE)pDC->pPDev; + BOOLEAN success = FALSE; + //DD_HALINFO HalInfo; + + + // ddHalInfo.dwSize = sizeof(DD_HALINFO); + // VIDEOMEMORYINFO vmiData; + // DDNTCORECAPS ddCaps; + // PDD_GETDRIVERINFO GetDriverInfo; + // DWORD dwFlags; + // PVOID lpD3DGlobalDriverData; + // PVOID lpD3DHALCallbacks; + // PDD_D3DBUFCALLBACKS lpD3DBufCallbacks; + + /*clean up some of the cache entry */ + RtlZeroMemory(pEddgbl,sizeof(EDD_DIRECTDRAW_GLOBAL)); + + /* setup hdev for edd_DdirectDraw_Global xp */ + edd_DdirectDraw_Global.hDev = pDC->pPDev; + //edd_DdirectDraw_Global.dhpdev = (PVOID)pDC->PDev; + + + /* setup EDD_DIRECTDRAW_GLOBAL for pDev xp */ + pDev->pEDDgpl = pEddgbl; + +// pEddgbl->GetDriverInfo = pDC->DriverFunctions.GetDirectDrawInfo; + + + /* test see if drv got a dx interface or not */ + if ( ( pDev->DriverFunctions.DisableDirectDraw == NULL) || + ( pDev->DriverFunctions.EnableDirectDraw == NULL)) + { + DPRINT1("Waring : DisableDirectDraw and EnableDirectDraw are NULL, no dx driver \n"); + return FALSE; + } + + /* Get DirectDraw infomations form the driver + * DDK say pvmList, pdwFourCC is always NULL in frist call here + * but we get back how many pvmList it whant we should alloc, same + * with pdwFourCC. + */ + + if (pDev->DriverFunctions.GetDirectDrawInfo) + { + // DPRINT1("if u are using vmware driver and see this msg, please repot this\n"); + DPRINT1("at DrvGetDirectDrawInfo \n"); + success = pDev->DriverFunctions.GetDirectDrawInfo( pDC->PDev, + &pEddgbl->ddHalInfo, + &pEddgbl->dwNumHeaps, + NULL, + &pEddgbl->dwNumFourCC, + NULL); + if (!success) + { + DPRINT1("DrvGetDirectDrawInfo frist call fail\n"); + return FALSE; + } + DPRINT1(" DrvGetDirectDrawInfo OK\n"); + + // /* The driver are not respnose to alloc the memory for pvmList + // * but it is win32k responsible todo, Windows 9x it is gdi32.dll + // */ + // if (pDirectDraw->dwNumHeaps != 0) + // { + // DPRINT1("Setup pvmList\n"); + // pDirectDraw->pvmList = (PVIDEOMEMORY) ExAllocatePoolWithTag(PagedPool, pDirectDraw->dwNumHeaps * sizeof(VIDEOMEMORY), TAG_DXPVMLIST); + // if (pDirectDraw->pvmList == NULL) + // { + // DPRINT1("pvmList memmery alloc fail\n"); + // return FALSE; + // } + // } + + // /* The driver are not respnose to alloc the memory for pdwFourCC + // * but it is win32k responsible todo, Windows 9x it is gdi32.dll + // */ + + // if (pDirectDraw->dwNumFourCC != 0) + // { + // DPRINT1("Setup pdwFourCC\n"); + // pDirectDraw->pdwFourCC = (LPDWORD) ExAllocatePoolWithTag(PagedPool, pDirectDraw->dwNumFourCC * sizeof(DWORD), TAG_DXFOURCC); + + // if (pDirectDraw->pdwFourCC == NULL) + // { + // DPRINT1("pdwFourCC memmery alloc fail\n"); + // return FALSE; + // } + // } + // success = pDirectDraw->DrvGetDirectDrawInfo( pDirectDraw->Global.dhpdev, + // &HalInfo, + // &pDirectDraw->dwNumHeaps, + // pDirectDraw->pvmList, + // &pDirectDraw->dwNumFourCC, + // pDirectDraw->pdwFourCC); + // if (!success) + // { + // DPRINT1("DrvGetDirectDrawInfo second call fail\n"); + // GDIOBJ_UnlockObjByPtr(DdHandleTable, pDirectDraw); + // return FALSE; + // } + + + // /* We need now convert the DD_HALINFO we got, it can be NT4 driver we + // * loading ReactOS supporting NT4 and higher to be loading.so we make + // * the HALInfo compatible here so we can easy pass it to gdi32.dll + // * without converting it later + // */ + + // if ((HalInfo.dwSize != sizeof(DD_HALINFO)) && + // (HalInfo.dwSize != sizeof(DD_HALINFO_V4))) + // { + // DPRINT1(" Fail not vaild driver DD_HALINFO struct found\n"); + // GDIOBJ_UnlockObjByPtr(DdHandleTable, pDirectDraw); + // return FALSE; + // } + + // if (HalInfo.dwSize != sizeof(DD_HALINFO)) + // { + // if (HalInfo.dwSize == sizeof(DD_HALINFO_V4)) + // { + // /* NT4 Compatible */ + // DPRINT1("Got DD_HALINFO_V4 sturct we convert it to DD_HALINFO \n"); + // HalInfo.dwSize = sizeof(DD_HALINFO); + // HalInfo.lpD3DGlobalDriverData = NULL; + // HalInfo.lpD3DHALCallbacks = NULL; + // HalInfo.lpD3DBufCallbacks = NULL; + // } + // else + // { + // /* Unknown version found */ + // DPRINT1(" Fail : did not get DD_HALINFO size \n"); + // GDIOBJ_UnlockObjByPtr(DdHandleTable, pDirectDraw); + // return FALSE; + // } + // } + // /* Copy it to user mode pointer the data */ + // RtlCopyMemory(&pDirectDraw->Hal, &HalInfo, sizeof(DD_HALINFO)); + } + + //DPRINT1("Trying EnableDirectDraw the driver\n"); + + //success = pDirectDraw->EnableDirectDraw( pDirectDraw->Global.dhpdev, + // &pDirectDraw->DD, + // &pDirectDraw->Surf, + // &pDirectDraw->Pal); + + //if (!success) + //{ + // DPRINT1("EnableDirectDraw call fail\n"); + // GDIOBJ_UnlockObjByPtr(DdHandleTable, pDirectDraw); + // return FALSE; + //} + + // hack for now + //RtlZeroMemory(&pEddgbl->ddHalInfo,sizeof(DD_HALINFO)); + dump_edd_directdraw_global(pEddgbl); + dump_halinfo(&pEddgbl->ddHalInfo); + pEddgbl->dwNumHeaps = 0; + pEddgbl->dwNumFourCC = 0; + return TRUE; +} + +/************************************************************************/ +/* DirectX graphic/video driver enable ends here */ +/************************************************************************/ /************************************************************************/ /* DirectX graphic/video driver loading and cleanup start here */ @@ -142,7 +313,6 @@ NtGdiDdCreateDirectDrawObject(HDC hdc) NTSTATUS Status; PEPROCESS Proc = NULL; PDC pDC; - HANDLE DxHandle; if (hdc == NULL) { @@ -150,15 +320,6 @@ NtGdiDdCreateDirectDrawObject(HDC hdc) return 0; } - /* FIXME get the process data */ - /* FIXME this code should be add where the driver being load */ - Status = DxDdStartupDxGraphics(0,NULL,0,NULL,NULL, Proc); - if (!NT_SUCCESS(Status)) - { - DPRINT1("Warning : Failed to create the directx interface\n"); - return 0; - } - /* FIXME this code should be add where the driver being load */ pDC = DC_LockDc(hdc); if (pDC == NULL) @@ -166,15 +327,26 @@ NtGdiDdCreateDirectDrawObject(HDC hdc) DPRINT1("Warning : Failed to lock hdc\n"); return 0; } - /* FIXME This should be alloc for each drv and use it from each drv, not global for whole win32k */ - ((PGDIDEVICE)pDC->pPDev)->pEDDgpl = &edd_DdirectDraw_Global; - RtlZeroMemory(&edd_DdirectDraw_Global,sizeof(EDD_DIRECTDRAW_GLOBAL)); - /* setup hdev for edd_DdirectDraw_Global xp */ - edd_DdirectDraw_Global.hDev = (PVOID)pDC->pPDev; + /* FIXME This should be alloc for each drv and use it from each drv, not global for whole win32k */ + if (intEnableReactXDriver(&edd_DdirectDraw_Global, pDC) == FALSE) + { + DC_UnlockDc(pDC); + DPRINT1("Warning : Failed to start the directx interface from the graphic driver\n"); + return DDHAL_DRIVER_NOTHANDLED; + } DC_UnlockDc(pDC); + /* FIXME get the process data */ + /* FIXME this code should be add where the driver being load */ + Status = DxDdStartupDxGraphics(0,NULL,0,NULL,NULL, Proc); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Warning : Failed to create the directx interface\n"); + return 0; + } + /* get the pfnDdCreateDirectDrawObject after we load the drv */ pfnDdCreateDirectDrawObject = (PGD_DDCREATEDIRECTDRAWOBJECT)gpDxFuncs[DXG_INDEX_DxDdCreateDirectDrawObject].pfn; @@ -185,9 +357,8 @@ NtGdiDdCreateDirectDrawObject(HDC hdc) } DPRINT1("Calling dxg.sys DdCreateDirectDrawObject\n"); - DxHandle = pfnDdCreateDirectDrawObject(hdc); - return DxHandle; + return pfnDdCreateDirectDrawObject(hdc); } /*++ @@ -899,6 +1070,7 @@ void dump_edd_directdraw_local(PEDD_DIRECTDRAW_LOCAL pEddlcl) DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->pobj : 0x%08lx\n",(((DWORD)&pEddlcl->pobj) - (DWORD)pEddlcl), pEddlcl->pobj); DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->peDirectDrawGlobal : 0x%08lx\n",(((DWORD)&pEddlcl->peDirectDrawGlobal) - (DWORD)pEddlcl), pEddlcl->peDirectDrawGlobal); DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->peSurface_DdList : 0x%08lx\n",(((DWORD)&pEddlcl->peSurface_DdList) - (DWORD)pEddlcl), pEddlcl->peSurface_DdList); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->unk_018 : 0x%08lx\n",(((DWORD)&pEddlcl->unk_018) - (DWORD)pEddlcl), pEddlcl->unk_018); DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->unk_01c : 0x%08lx\n",(((DWORD)&pEddlcl->unk_01c) - (DWORD)pEddlcl), pEddlcl->unk_01c); DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->unk_020 : 0x%08lx\n",(((DWORD)&pEddlcl->unk_020) - (DWORD)pEddlcl), pEddlcl->unk_020); DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->peDirectDrawGlobal2 : 0x%08lx\n",(((DWORD)&pEddlcl->peDirectDrawGlobal2) - (DWORD)pEddlcl), pEddlcl->peDirectDrawGlobal2); @@ -916,4 +1088,461 @@ void dump_edd_directdraw_local(PEDD_DIRECTDRAW_LOCAL pEddlcl) DPRINT1("0x%08lx PEDD_DIRECTDRAW_LOCAL->unk_050 : 0x%08lx\n",(((DWORD)&pEddlcl->unk_050) - (DWORD)pEddlcl), pEddlcl->unk_050); } +void +dump_halinfo(DD_HALINFO *pHalInfo) +{ + if (pHalInfo->dwSize == sizeof(DD_HALINFO_V4)) + { + DD_HALINFO_V4 *pHalInfo4 = (DD_HALINFO_V4 *) pHalInfo; + int t; + + DPRINT1("DD_HALINFO Version NT4 found \n"); + DPRINT1(" pHalInfo4->dwSize : 0x%08lx\n",(long)pHalInfo4->dwSize); + DPRINT1(" pHalInfo4->vmiData->fpPrimary : 0x%08lx\n",(long)pHalInfo4->vmiData.fpPrimary); + DPRINT1(" pHalInfo4->vmiData->dwFlags : 0x%08lx\n",(long)pHalInfo4->vmiData.dwFlags); + DPRINT1(" pHalInfo4->vmiData->dwDisplayWidth : 0x%08lx\n",(long)pHalInfo4->vmiData.dwDisplayWidth); + DPRINT1(" pHalInfo4->vmiData->dwDisplayHeight : 0x%08lx\n",(long)pHalInfo4->vmiData.dwDisplayHeight); + DPRINT1(" pHalInfo4->vmiData->lDisplayPitch : 0x%08lx\n",(long)pHalInfo4->vmiData.lDisplayPitch); + + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwSize : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwSize); + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwFlags : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwFlags); + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwFourCC : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwFourCC); + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwRGBBitCount : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwRGBBitCount); + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwRBitMask : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwRBitMask); + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwGBitMask : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwGBitMask); + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwBBitMask : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwBBitMask); + DPRINT1(" pHalInfo4->vmiData->ddpfDisplay.dwRGBAlphaBitMask : 0x%08lx\n",(long)pHalInfo4->vmiData.ddpfDisplay.dwRGBAlphaBitMask); + + DPRINT1(" pHalInfo4->vmiData->dwOffscreenAlign : 0x%08lx\n",(long)pHalInfo4->vmiData.dwOffscreenAlign); + DPRINT1(" pHalInfo4->vmiData->dwOverlayAlign : 0x%08lx\n",(long)pHalInfo4->vmiData.dwOverlayAlign); + DPRINT1(" pHalInfo4->vmiData->dwTextureAlign : 0x%08lx\n",(long)pHalInfo4->vmiData.dwTextureAlign); + DPRINT1(" pHalInfo4->vmiData->dwZBufferAlign : 0x%08lx\n",(long)pHalInfo4->vmiData.dwZBufferAlign); + DPRINT1(" pHalInfo4->vmiData->dwAlphaAlign : 0x%08lx\n",(long)pHalInfo4->vmiData.dwAlphaAlign); + DPRINT1(" pHalInfo4->vmiData->pvPrimary : 0x%08lx\n",(long)pHalInfo4->vmiData.pvPrimary); + + DPRINT1(" pHalInfo4->ddCaps.dwSize : 0x%08lx\n",pHalInfo4->ddCaps.dwSize); + DPRINT1(" pHalInfo4->ddCaps.dwCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwCaps); + DPRINT1(" pHalInfo4->ddCaps.dwCaps2 : 0x%08lx\n",pHalInfo4->ddCaps.dwCaps2); + DPRINT1(" pHalInfo4->ddCaps.dwCKeyCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwCKeyCaps); + DPRINT1(" pHalInfo4->ddCaps.dwFXCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwFXCaps); + DPRINT1(" pHalInfo4->ddCaps.dwFXAlphaCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwFXAlphaCaps); + DPRINT1(" pHalInfo4->ddCaps.dwPalCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwPalCaps); + DPRINT1(" pHalInfo4->ddCaps.dwSVCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwSVCaps); + DPRINT1(" pHalInfo4->ddCaps.dwAlphaBltConstBitDepths : 0x%08lx\n",pHalInfo4->ddCaps.dwAlphaBltConstBitDepths); + DPRINT1(" pHalInfo4->ddCaps.dwAlphaBltPixelBitDepths : 0x%08lx\n",pHalInfo4->ddCaps.dwAlphaBltPixelBitDepths); + DPRINT1(" pHalInfo4->ddCaps.dwAlphaBltSurfaceBitDepths : 0x%08lx\n",pHalInfo4->ddCaps.dwAlphaBltSurfaceBitDepths); + DPRINT1(" pHalInfo4->ddCaps.dwAlphaOverlayConstBitDepths : 0x%08lx\n",pHalInfo4->ddCaps.dwAlphaOverlayConstBitDepths); + DPRINT1(" pHalInfo4->ddCaps.dwAlphaOverlayPixelBitDepths : 0x%08lx\n",pHalInfo4->ddCaps.dwAlphaOverlayPixelBitDepths); + DPRINT1(" pHalInfo4->ddCaps.dwAlphaOverlaySurfaceBitDepths : 0x%08lx\n",pHalInfo4->ddCaps.dwAlphaOverlaySurfaceBitDepths); + DPRINT1(" pHalInfo4->ddCaps.dwZBufferBitDepths : 0x%08lx\n",pHalInfo4->ddCaps.dwZBufferBitDepths); + DPRINT1(" pHalInfo4->ddCaps.dwVidMemTotal : 0x%08lx\n",pHalInfo4->ddCaps.dwVidMemTotal); + DPRINT1(" pHalInfo4->ddCaps.dwVidMemFree : 0x%08lx\n",pHalInfo4->ddCaps.dwVidMemFree); + DPRINT1(" pHalInfo4->ddCaps.dwMaxVisibleOverlays : 0x%08lx\n",pHalInfo4->ddCaps.dwMaxVisibleOverlays); + DPRINT1(" pHalInfo4->ddCaps.dwCurrVisibleOverlays : 0x%08lx\n",pHalInfo4->ddCaps.dwCurrVisibleOverlays); + DPRINT1(" pHalInfo4->ddCaps.dwNumFourCCCodes : 0x%08lx\n",pHalInfo4->ddCaps.dwNumFourCCCodes); + DPRINT1(" pHalInfo4->ddCaps.dwAlignBoundarySrc : 0x%08lx\n",pHalInfo4->ddCaps.dwAlignBoundarySrc); + DPRINT1(" pHalInfo4->ddCaps.dwAlignSizeSrc : 0x%08lx\n",pHalInfo4->ddCaps.dwAlignSizeSrc); + DPRINT1(" pHalInfo4->ddCaps.dwAlignBoundaryDes : 0x%08lx\n",pHalInfo4->ddCaps.dwAlignBoundaryDest); + DPRINT1(" pHalInfo4->ddCaps.dwAlignSizeDest : 0x%08lx\n",pHalInfo4->ddCaps.dwAlignSizeDest); + DPRINT1(" pHalInfo4->ddCaps.dwAlignStrideAlign : 0x%08lx\n",pHalInfo4->ddCaps.dwAlignStrideAlign); + for (t=0;tddCaps.dwRops[0x%04x] : 0x%08lx\n",t,pHalInfo4->ddCaps.dwRops[t]); + } + DPRINT1(" pHalInfo4->ddCaps.ddsCaps.dwCaps : 0x%08lx\n",pHalInfo4->ddCaps.ddsCaps.dwCaps); + DPRINT1(" pHalInfo4->ddCaps.dwMinOverlayStretch : 0x%08lx\n",pHalInfo4->ddCaps.dwMinOverlayStretch); + DPRINT1(" pHalInfo4->ddCaps.dwMaxOverlayStretch : 0x%08lx\n",pHalInfo4->ddCaps.dwMaxOverlayStretch); + DPRINT1(" pHalInfo4->ddCaps.dwMinLiveVideoStretch : 0x%08lx\n",pHalInfo4->ddCaps.dwMinLiveVideoStretch); + DPRINT1(" pHalInfo4->ddCaps.dwMaxLiveVideoStretch : 0x%08lx\n",pHalInfo4->ddCaps.dwMaxLiveVideoStretch); + DPRINT1(" pHalInfo4->ddCaps.dwMinHwCodecStretch : 0x%08lx\n",pHalInfo4->ddCaps.dwMinHwCodecStretch); + DPRINT1(" pHalInfo4->ddCaps.dwMaxHwCodecStretch : 0x%08lx\n",pHalInfo4->ddCaps.dwMaxHwCodecStretch); + DPRINT1(" pHalInfo4->ddCaps.dwReserved1 : 0x%08lx\n",pHalInfo4->ddCaps.dwReserved1); + DPRINT1(" pHalInfo4->ddCaps.dwReserved2 : 0x%08lx\n",pHalInfo4->ddCaps.dwReserved2); + DPRINT1(" pHalInfo4->ddCaps.dwReserved3 : 0x%08lx\n",pHalInfo4->ddCaps.dwReserved3); + DPRINT1(" pHalInfo4->ddCaps.dwSVBCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwSVBCaps); + DPRINT1(" pHalInfo4->ddCaps.dwSVBCKeyCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwSVBCKeyCaps); + DPRINT1(" pHalInfo4->ddCaps.dwSVBFXCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwSVBFXCaps); + for (t=0;tddCaps.dwSVBRops[0x%04x] : 0x%08lx\n",t,pHalInfo4->ddCaps.dwSVBRops[t]); + } + DPRINT1(" pHalInfo4->ddCaps.dwVSBCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwVSBCaps); + DPRINT1(" pHalInfo4->ddCaps.dwVSBCKeyCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwVSBCKeyCaps); + DPRINT1(" pHalInfo4->ddCaps.dwVSBFXCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwVSBFXCaps); + for (t=0;tddCaps.dwVSBRops[0x%04x] : 0x%08lx\n",t,pHalInfo4->ddCaps.dwVSBRops[t]); + } + DPRINT1(" pHalInfo4->ddCaps.dwSSBCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwSSBCaps); + DPRINT1(" pHalInfo4->ddCaps.dwSSBCKeyCa : 0x%08lx\n",pHalInfo4->ddCaps.dwSSBCKeyCaps); + DPRINT1(" pHalInfo4->ddCaps.dwSSBFXCaps : 0x%08lx\n",pHalInfo4->ddCaps.dwSSBFXCaps); + for (t=0;tddCaps.dwSSBRops[0x%04x] : 0x%08lx\n",t,pHalInfo4->ddCaps.dwSSBRops[t]); + } + + DPRINT1(" pHalInfo4->ddCaps.dwMaxVideoPorts : 0x%08lx\n",pHalInfo4->ddCaps.dwMaxVideoPorts); + DPRINT1(" pHalInfo4->ddCaps.dwCurrVideoPorts : 0x%08lx\n",pHalInfo4->ddCaps.dwCurrVideoPorts); + DPRINT1(" pHalInfo4->ddCaps.dwSVBCaps2 : 0x%08lx\n",pHalInfo4->ddCaps.dwSVBCaps2); + + + DPRINT1(" pHalInfo4->GetDriverInfo : 0x%08lx\n",(long)pHalInfo4->GetDriverInfo); + DPRINT1(" pHalInfo4->dwFlags : 0x%08lx\n",(long)pHalInfo4->dwFlags); + + } + else if (pHalInfo->dwSize == sizeof(DD_HALINFO)) + { + int t; + UINT flag; + INT count=0; + + DPRINT1("DD_HALINFO Version NT 2000/XP/2003 found \n"); + DPRINT1(" pHalInfo->dwSize : 0x%08lx\n",(long)pHalInfo->dwSize); + + DPRINT1(" pHalInfo->vmiData->fpPrimary : 0x%08lx\n",(long)pHalInfo->vmiData.fpPrimary); + DPRINT1(" pHalInfo->vmiData->dwFlags : 0x%08lx\n",(long)pHalInfo->vmiData.dwFlags); + DPRINT1(" pHalInfo->vmiData->dwDisplayWidth : 0x%08lx\n",(long)pHalInfo->vmiData.dwDisplayWidth); + DPRINT1(" pHalInfo->vmiData->dwDisplayHeight : 0x%08lx\n",(long)pHalInfo->vmiData.dwDisplayHeight); + DPRINT1(" pHalInfo->vmiData->lDisplayPitch : 0x%08lx\n",(long)pHalInfo->vmiData.lDisplayPitch); + + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwSize : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwSize); + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwFlags : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwFlags); + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwFourCC : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwFourCC); + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwRGBBitCount : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount); + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwRBitMask : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwRBitMask); + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwGBitMask : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwGBitMask); + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwBBitMask : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwBBitMask); + DPRINT1(" pHalInfo->vmiData->ddpfDisplay.dwRGBAlphaBitMask : 0x%08lx\n",(long)pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask); + + + DPRINT1(" pHalInfo->vmiData->dwOffscreenAlign : 0x%08lx\n",(long)pHalInfo->vmiData.dwOffscreenAlign); + DPRINT1(" pHalInfo->vmiData->dwOverlayAlign : 0x%08lx\n",(long)pHalInfo->vmiData.dwOverlayAlign); + DPRINT1(" pHalInfo->vmiData->dwTextureAlign : 0x%08lx\n",(long)pHalInfo->vmiData.dwTextureAlign); + DPRINT1(" pHalInfo->vmiData->dwZBufferAlign : 0x%08lx\n",(long)pHalInfo->vmiData.dwZBufferAlign); + DPRINT1(" pHalInfo->vmiData->dwAlphaAlign : 0x%08lx\n",(long)pHalInfo->vmiData.dwAlphaAlign); + DPRINT1(" pHalInfo->vmiData->pvPrimary : 0x%08lx\n",(long)pHalInfo->vmiData.pvPrimary); + + DPRINT1(" pHalInfo->ddCaps.dwSize : 0x%08lx\n",pHalInfo->ddCaps.dwSize); + DPRINT1(" pHalInfo->ddCaps.dwCaps : "); + flag = pHalInfo->ddCaps.dwCaps; + count = 0; + checkflag(flag,DDCAPS_3D,"DDCAPS_3D"); + checkflag(flag,DDCAPS_ALIGNBOUNDARYDEST,"DDCAPS_ALIGNBOUNDARYDEST"); + checkflag(flag,DDCAPS_ALIGNBOUNDARYSRC,"DDCAPS_ALIGNBOUNDARYSRC"); + checkflag(flag,DDCAPS_ALIGNSIZEDEST,"DDCAPS_ALIGNSIZEDEST"); + checkflag(flag,DDCAPS_ALIGNSIZESRC,"DDCAPS_ALIGNSIZESRC"); + checkflag(flag,DDCAPS_ALIGNSTRIDE,"DDCAPS_ALIGNSTRIDE"); + checkflag(flag,DDCAPS_ALPHA,"DDCAPS_ALPHA"); + checkflag(flag,DDCAPS_BANKSWITCHED,"DDCAPS_BANKSWITCHED"); + checkflag(flag,DDCAPS_BLT,"DDCAPS_BLT"); + checkflag(flag,DDCAPS_BLTCOLORFILL,"DDCAPS_BLTCOLORFILL"); + checkflag(flag,DDCAPS_BLTDEPTHFILL,"DDCAPS_BLTDEPTHFILL"); + checkflag(flag,DDCAPS_BLTFOURCC,"DDCAPS_BLTFOURCC"); + checkflag(flag,DDCAPS_BLTQUEUE,"DDCAPS_BLTQUEUE"); + checkflag(flag,DDCAPS_BLTSTRETCH,"DDCAPS_BLTSTRETCH"); + checkflag(flag,DDCAPS_CANBLTSYSMEM,"DDCAPS_CANBLTSYSMEM"); + checkflag(flag,DDCAPS_CANCLIP,"DDCAPS_CANCLIP"); + checkflag(flag,DDCAPS_CANCLIPSTRETCHED,"DDCAPS_CANCLIPSTRETCHED"); + checkflag(flag,DDCAPS_COLORKEY,"DDCAPS_COLORKEY"); + checkflag(flag,DDCAPS_COLORKEYHWASSIST,"DDCAPS_COLORKEYHWASSIST"); + checkflag(flag,DDCAPS_GDI,"DDCAPS_GDI"); + checkflag(flag,DDCAPS_NOHARDWARE,"DDCAPS_NOHARDWARE"); + checkflag(flag,DDCAPS_OVERLAY,"DDCAPS_OVERLAY"); + checkflag(flag,DDCAPS_OVERLAYCANTCLIP,"DDCAPS_OVERLAYCANTCLIP"); + checkflag(flag,DDCAPS_OVERLAYFOURCC,"DDCAPS_OVERLAYFOURCC"); + checkflag(flag,DDCAPS_OVERLAYSTRETCH,"DDCAPS_OVERLAYSTRETCH"); + checkflag(flag,DDCAPS_PALETTE,"DDCAPS_PALETTE"); + checkflag(flag,DDCAPS_PALETTEVSYNC,"DDCAPS_PALETTEVSYNC"); + checkflag(flag,DDCAPS_READSCANLINE,"DDCAPS_READSCANLINE"); + checkflag(flag,DDCAPS_STEREOVIEW,"DDCAPS_STEREOVIEW"); + checkflag(flag,DDCAPS_VBI,"DDCAPS_VBI"); + checkflag(flag,DDCAPS_ZBLTS,"DDCAPS_ZBLTS"); + checkflag(flag,DDCAPS_ZOVERLAYS,"DDCAPS_ZOVERLAYS"); + endcheckflag(flag,"pHalInfo->ddCaps.dwCaps"); + + DPRINT1(" pHalInfo->ddCaps.dwCaps2 : "); + flag = pHalInfo->ddCaps.dwCaps2; + count = 0; + checkflag(flag,DDCAPS2_AUTOFLIPOVERLAY,"DDCAPS2_AUTOFLIPOVERLAY"); + checkflag(flag,DDCAPS2_CANAUTOGENMIPMAP,"DDCAPS2_CANAUTOGENMIPMAP"); + checkflag(flag,DDCAPS2_CANBOBHARDWARE,"DDCAPS2_CANBOBHARDWARE"); + checkflag(flag,DDCAPS2_CANBOBINTERLEAVED,"DDCAPS2_CANBOBINTERLEAVED"); + checkflag(flag,DDCAPS2_CANBOBNONINTERLEAVED,"DDCAPS2_CANBOBNONINTERLEAVED"); + checkflag(flag,DDCAPS2_CANCALIBRATEGAMMA,"DDCAPS2_CANCALIBRATEGAMMA"); + checkflag(flag,DDCAPS2_CANDROPZ16BIT,"DDCAPS2_CANDROPZ16BIT"); + checkflag(flag,DDCAPS2_CANFLIPODDEVEN,"DDCAPS2_CANFLIPODDEVEN"); + checkflag(flag,DDCAPS2_CANMANAGERESOURCE,"DDCAPS2_CANMANAGERESOURCE"); + checkflag(flag,DDCAPS2_CANMANAGETEXTURE,"DDCAPS2_CANMANAGETEXTURE"); + + checkflag(flag,DDCAPS2_CANRENDERWINDOWED,"DDCAPS2_CANRENDERWINDOWED"); + checkflag(flag,DDCAPS2_CERTIFIED,"DDCAPS2_CERTIFIED"); + checkflag(flag,DDCAPS2_COLORCONTROLOVERLAY,"DDCAPS2_COLORCONTROLOVERLAY"); + checkflag(flag,DDCAPS2_COLORCONTROLPRIMARY,"DDCAPS2_COLORCONTROLPRIMARY"); + checkflag(flag,DDCAPS2_COPYFOURCC,"DDCAPS2_COPYFOURCC"); + checkflag(flag,DDCAPS2_FLIPINTERVAL,"DDCAPS2_FLIPINTERVAL"); + checkflag(flag,DDCAPS2_FLIPNOVSYNC,"DDCAPS2_FLIPNOVSYNC"); + checkflag(flag,DDCAPS2_NO2DDURING3DSCENE,"DDCAPS2_NO2DDURING3DSCENE"); + checkflag(flag,DDCAPS2_NONLOCALVIDMEM,"DDCAPS2_NONLOCALVIDMEM"); + checkflag(flag,DDCAPS2_NONLOCALVIDMEMCAPS,"DDCAPS2_NONLOCALVIDMEMCAPS"); + checkflag(flag,DDCAPS2_NOPAGELOCKREQUIRED,"DDCAPS2_NOPAGELOCKREQUIRED"); + checkflag(flag,DDCAPS2_PRIMARYGAMMA,"DDCAPS2_PRIMARYGAMMA"); + checkflag(flag,DDCAPS2_VIDEOPORT,"DDCAPS2_VIDEOPORT"); + checkflag(flag,DDCAPS2_WIDESURFACES,"DDCAPS2_WIDESURFACES"); + endcheckflag(flag,"pHalInfo->ddCaps.dwCaps2"); + + DPRINT1(" pHalInfo->ddCaps.dwCKeyCaps : "); + flag = pHalInfo->ddCaps.dwCKeyCaps; + count = 0; + checkflag(flag,DDCKEYCAPS_DESTBLT,"DDCKEYCAPS_DESTBLT"); + checkflag(flag,DDCKEYCAPS_DESTBLTCLRSPACE,"DDCKEYCAPS_DESTBLTCLRSPACE"); + checkflag(flag,DDCKEYCAPS_DESTBLTCLRSPACEYUV,"DDCKEYCAPS_DESTBLTCLRSPACEYUV"); + checkflag(flag,DDCKEYCAPS_DESTBLTYUV,"DDCKEYCAPS_DESTBLTYUV"); + checkflag(flag,DDCKEYCAPS_DESTOVERLAY,"DDCKEYCAPS_DESTOVERLAY"); + checkflag(flag,DDCKEYCAPS_DESTOVERLAYCLRSPACE,"DDCKEYCAPS_DESTOVERLAYCLRSPACE"); + checkflag(flag,DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV,"DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV"); + checkflag(flag,DDCKEYCAPS_DESTOVERLAYONEACTIVE,"DDCKEYCAPS_DESTOVERLAYONEACTIVE"); + checkflag(flag,DDCKEYCAPS_DESTOVERLAYYUV,"DDCKEYCAPS_DESTOVERLAYYUV"); + checkflag(flag,DDCKEYCAPS_NOCOSTOVERLAY,"DDCKEYCAPS_NOCOSTOVERLAY"); + checkflag(flag,DDCKEYCAPS_SRCBLT,"DDCKEYCAPS_SRCBLT"); + checkflag(flag,DDCKEYCAPS_SRCBLTCLRSPACE,"DDCKEYCAPS_SRCBLTCLRSPACE"); + checkflag(flag,DDCKEYCAPS_SRCBLTCLRSPACEYUV,"DDCKEYCAPS_SRCBLTCLRSPACEYUV"); + checkflag(flag,DDCKEYCAPS_SRCBLTYUV,"DDCKEYCAPS_SRCBLTYUV"); + checkflag(flag,DDCKEYCAPS_SRCOVERLAY,"DDCKEYCAPS_SRCOVERLAY"); + checkflag(flag,DDCKEYCAPS_SRCOVERLAYCLRSPACE,"DDCKEYCAPS_SRCOVERLAYCLRSPACE"); + checkflag(flag,DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV,"DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV"); + checkflag(flag,DDCKEYCAPS_SRCOVERLAYONEACTIVE,"DDCKEYCAPS_SRCOVERLAYONEACTIVE"); + checkflag(flag,DDCKEYCAPS_SRCOVERLAYYUV,"DDCKEYCAPS_SRCOVERLAYYUV"); + endcheckflag(flag,"pHalInfo->ddCaps.dwCKeyCaps"); + + DPRINT1(" pHalInfo->ddCaps.dwFXCaps : "); + flag = pHalInfo->ddCaps.dwFXCaps; + count = 0; + checkflag(flag,DDFXCAPS_BLTARITHSTRETCHY,"DDFXCAPS_BLTARITHSTRETCHY"); + checkflag(flag,DDFXCAPS_BLTARITHSTRETCHYN,"DDFXCAPS_BLTARITHSTRETCHYN"); + checkflag(flag,DDFXCAPS_BLTMIRRORLEFTRIGHT,"DDFXCAPS_BLTMIRRORLEFTRIGHT"); + checkflag(flag,DDFXCAPS_BLTMIRRORUPDOWN,"DDFXCAPS_BLTMIRRORUPDOWN"); + checkflag(flag,DDFXCAPS_BLTROTATION,"DDFXCAPS_BLTROTATION"); + checkflag(flag,DDFXCAPS_BLTROTATION90,"DDFXCAPS_BLTROTATION90"); + checkflag(flag,DDFXCAPS_BLTSHRINKX,"DDFXCAPS_BLTSHRINKX"); + checkflag(flag,DDFXCAPS_BLTSHRINKXN,"DDFXCAPS_BLTSHRINKXN"); + checkflag(flag,DDFXCAPS_BLTSHRINKY,"DDFXCAPS_BLTSHRINKY"); + checkflag(flag,DDFXCAPS_BLTSHRINKYN,"DDFXCAPS_BLTSHRINKYN"); + checkflag(flag,DDFXCAPS_BLTSTRETCHX,"DDFXCAPS_BLTSTRETCHX"); + checkflag(flag,DDFXCAPS_BLTSTRETCHXN,"DDFXCAPS_BLTSTRETCHXN"); + checkflag(flag,DDFXCAPS_BLTSTRETCHY,"DDFXCAPS_BLTSTRETCHY"); + checkflag(flag,DDFXCAPS_BLTSTRETCHYN,"DDFXCAPS_BLTSTRETCHYN"); + checkflag(flag,DDFXCAPS_OVERLAYARITHSTRETCHY,"DDFXCAPS_OVERLAYARITHSTRETCHY"); + checkflag(flag,DDFXCAPS_OVERLAYARITHSTRETCHYN,"DDFXCAPS_OVERLAYARITHSTRETCHYN"); + checkflag(flag,DDFXCAPS_OVERLAYMIRRORLEFTRIGHT,"DDFXCAPS_OVERLAYMIRRORLEFTRIGHT"); + checkflag(flag,DDFXCAPS_OVERLAYMIRRORUPDOWN,"DDFXCAPS_OVERLAYMIRRORUPDOWN"); + checkflag(flag,DDFXCAPS_OVERLAYSHRINKX,"DDFXCAPS_OVERLAYSHRINKX"); + checkflag(flag,DDFXCAPS_OVERLAYSHRINKXN,"DDFXCAPS_OVERLAYSHRINKXN"); + checkflag(flag,DDFXCAPS_OVERLAYSHRINKY,"DDFXCAPS_OVERLAYSHRINKY"); + checkflag(flag,DDFXCAPS_OVERLAYSHRINKYN,"DDFXCAPS_OVERLAYSHRINKYN"); + checkflag(flag,DDFXCAPS_OVERLAYSTRETCHX,"DDFXCAPS_OVERLAYSTRETCHX"); + checkflag(flag,DDFXCAPS_OVERLAYSTRETCHX,"DDFXCAPS_OVERLAYSTRETCHX"); + checkflag(flag,DDFXCAPS_OVERLAYSTRETCHY,"DDFXCAPS_OVERLAYSTRETCHY"); + checkflag(flag,DDFXCAPS_OVERLAYSTRETCHYN,"DDFXCAPS_OVERLAYSTRETCHYN"); + endcheckflag(flag,"pHalInfo->ddCaps.dwFXCaps"); + + DPRINT1(" pHalInfo->ddCaps.dwFXAlphaCaps : 0x%08lx\n",pHalInfo->ddCaps.dwFXAlphaCaps); + DPRINT1(" pHalInfo->ddCaps.dwPalCaps : 0x%08lx\n",pHalInfo->ddCaps.dwPalCaps); + + DPRINT1(" pHalInfo->ddCaps.dwSVCaps : "); + flag = pHalInfo->ddCaps.dwSVCaps; + count = 0; + checkflag(flag,DDSVCAPS_ENIGMA,"DDSVCAPS_ENIGMA"); + checkflag(flag,DDSVCAPS_FLICKER,"DDSVCAPS_FLICKER"); + checkflag(flag,DDSVCAPS_REDBLUE,"DDSVCAPS_REDBLUE"); + checkflag(flag,DDSVCAPS_SPLIT,"DDSVCAPS_SPLIT"); + endcheckflag(flag,"pHalInfo->ddCaps.dwSVCaps"); + + DPRINT1(" pHalInfo->ddCaps.dwAlphaBltConstBitDepths : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaBltConstBitDepths); + DPRINT1(" pHalInfo->ddCaps.dwAlphaBltPixelBitDepths : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaBltPixelBitDepths); + DPRINT1(" pHalInfo->ddCaps.dwAlphaBltSurfaceBitDepths : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaBltSurfaceBitDepths); + DPRINT1(" pHalInfo->ddCaps.dwAlphaOverlayConstBitDepths : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaOverlayConstBitDepths); + DPRINT1(" pHalInfo->ddCaps.dwAlphaOverlayPixelBitDepths : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaOverlayPixelBitDepths); + DPRINT1(" pHalInfo->ddCaps.dwAlphaOverlaySurfaceBitDepths : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaOverlaySurfaceBitDepths); + DPRINT1(" pHalInfo->ddCaps.dwZBufferBitDepths : 0x%08lx\n",pHalInfo->ddCaps.dwZBufferBitDepths); + DPRINT1(" pHalInfo->ddCaps.dwVidMemTotal : 0x%08lx\n",pHalInfo->ddCaps.dwVidMemTotal); + DPRINT1(" pHalInfo->ddCaps.dwVidMemFree : 0x%08lx\n",pHalInfo->ddCaps.dwVidMemFree); + DPRINT1(" pHalInfo->ddCaps.dwMaxVisibleOverlays : 0x%08lx\n",pHalInfo->ddCaps.dwMaxVisibleOverlays); + DPRINT1(" pHalInfo->ddCaps.dwCurrVisibleOverlays : 0x%08lx\n",pHalInfo->ddCaps.dwCurrVisibleOverlays); + DPRINT1(" pHalInfo->ddCaps.dwNumFourCCCodes : 0x%08lx\n",pHalInfo->ddCaps.dwNumFourCCCodes); + DPRINT1(" pHalInfo->ddCaps.dwAlignBoundarySrc : 0x%08lx\n",pHalInfo->ddCaps.dwAlignBoundarySrc); + DPRINT1(" pHalInfo->ddCaps.dwAlignSizeSrc : 0x%08lx\n",pHalInfo->ddCaps.dwAlignSizeSrc); + DPRINT1(" pHalInfo->ddCaps.dwAlignBoundaryDes : 0x%08lx\n",pHalInfo->ddCaps.dwAlignBoundaryDest); + DPRINT1(" pHalInfo->ddCaps.dwAlignSizeDest : 0x%08lx\n",pHalInfo->ddCaps.dwAlignSizeDest); + DPRINT1(" pHalInfo->ddCaps.dwAlignStrideAlign : 0x%08lx\n",pHalInfo->ddCaps.dwAlignStrideAlign); + for (t=0;tddCaps.dwRops[0x%04x] : 0x%08lx\n",t,pHalInfo->ddCaps.dwRops[t]); + } + DPRINT1(" pHalInfo->ddCaps.ddsCaps.dwCaps : "); + flag = pHalInfo->ddCaps.ddsCaps.dwCaps; + count = 0; + checkflag(flag,DDSCAPS_3DDEVICE,"DDSCAPS_3DDEVICE"); + checkflag(flag,DDSCAPS_ALLOCONLOAD,"DDSCAPS_ALLOCONLOAD"); + checkflag(flag,DDSCAPS_ALPHA,"DDSCAPS_ALPHA"); + checkflag(flag,DDSCAPS_BACKBUFFER,"DDSCAPS_BACKBUFFER"); + checkflag(flag,DDSCAPS_COMPLEX,"DDSCAPS_COMPLEX"); + checkflag(flag,DDSCAPS_EXECUTEBUFFER,"DDSCAPS_EXECUTEBUFFER"); + checkflag(flag,DDSCAPS_FLIP,"DDSCAPS_FLIP"); + checkflag(flag,DDSCAPS_FRONTBUFFER,"DDSCAPS_FRONTBUFFER"); + checkflag(flag,DDSCAPS_HWCODEC,"DDSCAPS_HWCODEC"); + checkflag(flag,DDSCAPS_LIVEVIDEO,"DDSCAPS_LIVEVIDEO"); + checkflag(flag,DDSCAPS_LOCALVIDMEM,"DDSCAPS_LOCALVIDMEM"); + checkflag(flag,DDSCAPS_MIPMAP,"DDSCAPS_MIPMAP"); + checkflag(flag,DDSCAPS_MODEX,"DDSCAPS_MODEX"); + checkflag(flag,DDSCAPS_NONLOCALVIDMEM,"DDSCAPS_NONLOCALVIDMEM"); + checkflag(flag,DDSCAPS_OFFSCREENPLAIN,"DDSCAPS_OFFSCREENPLAIN"); + checkflag(flag,DDSCAPS_OVERLAY,"DDSCAPS_OVERLAY"); + checkflag(flag,DDSCAPS_OPTIMIZED,"DDSCAPS_OPTIMIZED"); + checkflag(flag,DDSCAPS_OWNDC,"DDSCAPS_OWNDC"); + checkflag(flag,DDSCAPS_PALETTE,"DDSCAPS_PALETTE"); + checkflag(flag,DDSCAPS_PRIMARYSURFACE,"DDSCAPS_PRIMARYSURFACE"); + checkflag(flag,DDSCAPS_PRIMARYSURFACELEFT,"DDSCAPS_PRIMARYSURFACELEFT"); + checkflag(flag,DDSCAPS_STANDARDVGAMODE,"DDSCAPS_STANDARDVGAMODE"); + checkflag(flag,DDSCAPS_SYSTEMMEMORY,"DDSCAPS_SYSTEMMEMORY"); + checkflag(flag,DDSCAPS_TEXTURE,"DDSCAPS_TEXTURE"); + checkflag(flag,DDSCAPS_VIDEOMEMORY,"DDSCAPS_VIDEOMEMORY"); + checkflag(flag,DDSCAPS_VIDEOPORT,"DDSCAPS_VIDEOPORT"); + checkflag(flag,DDSCAPS_VISIBLE,"DDSCAPS_VISIBLE"); + checkflag(flag,DDSCAPS_WRITEONLY,"DDSCAPS_WRITEONLY"); + checkflag(flag,DDSCAPS_ZBUFFER,"DDSCAPS_ZBUFFER"); + endcheckflag(flag,"pHalInfo->ddCaps.ddsCaps.dwCaps"); + + DPRINT1(" pHalInfo->ddCaps.dwMinOverlayStretch : 0x%08lx\n",pHalInfo->ddCaps.dwMinOverlayStretch); + DPRINT1(" pHalInfo->ddCaps.dwMaxOverlayStretch : 0x%08lx\n",pHalInfo->ddCaps.dwMaxOverlayStretch); + DPRINT1(" pHalInfo->ddCaps.dwMinLiveVideoStretch : 0x%08lx\n",pHalInfo->ddCaps.dwMinLiveVideoStretch); + DPRINT1(" pHalInfo->ddCaps.dwMaxLiveVideoStretch : 0x%08lx\n",pHalInfo->ddCaps.dwMaxLiveVideoStretch); + DPRINT1(" pHalInfo->ddCaps.dwMinHwCodecStretch : 0x%08lx\n",pHalInfo->ddCaps.dwMinHwCodecStretch); + DPRINT1(" pHalInfo->ddCaps.dwMaxHwCodecStretch : 0x%08lx\n",pHalInfo->ddCaps.dwMaxHwCodecStretch); + DPRINT1(" pHalInfo->ddCaps.dwReserved1 : 0x%08lx\n",pHalInfo->ddCaps.dwReserved1); + DPRINT1(" pHalInfo->ddCaps.dwReserved2 : 0x%08lx\n",pHalInfo->ddCaps.dwReserved2); + DPRINT1(" pHalInfo->ddCaps.dwReserved3 : 0x%08lx\n",pHalInfo->ddCaps.dwReserved3); + + DPRINT1(" pHalInfo->ddCaps.dwSVBCaps : "); + flag = pHalInfo->ddCaps.dwSVBCaps; + count = 0; + checkflag(flag,DDCAPS_3D,"DDCAPS_3D"); + checkflag(flag,DDCAPS_ALIGNBOUNDARYDEST,"DDCAPS_ALIGNBOUNDARYDEST"); + checkflag(flag,DDCAPS_ALIGNBOUNDARYSRC,"DDCAPS_ALIGNBOUNDARYSRC"); + checkflag(flag,DDCAPS_ALIGNSIZEDEST,"DDCAPS_ALIGNSIZEDEST"); + checkflag(flag,DDCAPS_ALIGNSIZESRC,"DDCAPS_ALIGNSIZESRC"); + checkflag(flag,DDCAPS_ALIGNSTRIDE,"DDCAPS_ALIGNSTRIDE"); + checkflag(flag,DDCAPS_ALPHA,"DDCAPS_ALPHA"); + checkflag(flag,DDCAPS_BANKSWITCHED,"DDCAPS_BANKSWITCHED"); + checkflag(flag,DDCAPS_BLT,"DDCAPS_BLT"); + checkflag(flag,DDCAPS_BLTCOLORFILL,"DDCAPS_BLTCOLORFILL"); + checkflag(flag,DDCAPS_BLTDEPTHFILL,"DDCAPS_BLTDEPTHFILL"); + checkflag(flag,DDCAPS_BLTFOURCC,"DDCAPS_BLTFOURCC"); + checkflag(flag,DDCAPS_BLTQUEUE,"DDCAPS_BLTQUEUE"); + checkflag(flag,DDCAPS_BLTSTRETCH,"DDCAPS_BLTSTRETCH"); + checkflag(flag,DDCAPS_CANBLTSYSMEM,"DDCAPS_CANBLTSYSMEM"); + checkflag(flag,DDCAPS_CANCLIP,"DDCAPS_CANCLIP"); + checkflag(flag,DDCAPS_CANCLIPSTRETCHED,"DDCAPS_CANCLIPSTRETCHED"); + checkflag(flag,DDCAPS_COLORKEY,"DDCAPS_COLORKEY"); + checkflag(flag,DDCAPS_COLORKEYHWASSIST,"DDCAPS_COLORKEYHWASSIST"); + checkflag(flag,DDCAPS_GDI,"DDCAPS_GDI"); + checkflag(flag,DDCAPS_NOHARDWARE,"DDCAPS_NOHARDWARE"); + checkflag(flag,DDCAPS_OVERLAY,"DDCAPS_OVERLAY"); + checkflag(flag,DDCAPS_OVERLAYCANTCLIP,"DDCAPS_OVERLAYCANTCLIP"); + checkflag(flag,DDCAPS_OVERLAYFOURCC,"DDCAPS_OVERLAYFOURCC"); + checkflag(flag,DDCAPS_OVERLAYSTRETCH,"DDCAPS_OVERLAYSTRETCH"); + checkflag(flag,DDCAPS_PALETTE,"DDCAPS_PALETTE"); + checkflag(flag,DDCAPS_PALETTEVSYNC,"DDCAPS_PALETTEVSYNC"); + checkflag(flag,DDCAPS_READSCANLINE,"DDCAPS_READSCANLINE"); + checkflag(flag,DDCAPS_STEREOVIEW,"DDCAPS_STEREOVIEW"); + checkflag(flag,DDCAPS_VBI,"DDCAPS_VBI"); + checkflag(flag,DDCAPS_ZBLTS,"DDCAPS_ZBLTS"); + checkflag(flag,DDCAPS_ZOVERLAYS,"DDCAPS_ZOVERLAYS"); + endcheckflag(flag,"pHalInfo->ddCaps.dwSVBCaps"); + + DPRINT1(" pHalInfo->ddCaps.dwSVBCKeyCaps : 0x%08lx\n",pHalInfo->ddCaps.dwSVBCKeyCaps); + DPRINT1(" pHalInfo->ddCaps.dwSVBFXCaps : 0x%08lx\n",pHalInfo->ddCaps.dwSVBFXCaps); + for (t=0;tddCaps.dwSVBRops[0x%04x] : 0x%08lx\n",t,pHalInfo->ddCaps.dwSVBRops[t]); + } + + DPRINT1(" pHalInfo->ddCaps.dwVSBCaps : "); + flag = pHalInfo->ddCaps.dwVSBCaps; + count = 0; + checkflag(flag,DDCAPS_3D,"DDCAPS_3D"); + checkflag(flag,DDCAPS_ALIGNBOUNDARYDEST,"DDCAPS_ALIGNBOUNDARYDEST"); + checkflag(flag,DDCAPS_ALIGNBOUNDARYSRC,"DDCAPS_ALIGNBOUNDARYSRC"); + checkflag(flag,DDCAPS_ALIGNSIZEDEST,"DDCAPS_ALIGNSIZEDEST"); + checkflag(flag,DDCAPS_ALIGNSIZESRC,"DDCAPS_ALIGNSIZESRC"); + checkflag(flag,DDCAPS_ALIGNSTRIDE,"DDCAPS_ALIGNSTRIDE"); + checkflag(flag,DDCAPS_ALPHA,"DDCAPS_ALPHA"); + checkflag(flag,DDCAPS_BANKSWITCHED,"DDCAPS_BANKSWITCHED"); + checkflag(flag,DDCAPS_BLT,"DDCAPS_BLT"); + checkflag(flag,DDCAPS_BLTCOLORFILL,"DDCAPS_BLTCOLORFILL"); + checkflag(flag,DDCAPS_BLTDEPTHFILL,"DDCAPS_BLTDEPTHFILL"); + checkflag(flag,DDCAPS_BLTFOURCC,"DDCAPS_BLTFOURCC"); + checkflag(flag,DDCAPS_BLTQUEUE,"DDCAPS_BLTQUEUE"); + checkflag(flag,DDCAPS_BLTSTRETCH,"DDCAPS_BLTSTRETCH"); + checkflag(flag,DDCAPS_CANBLTSYSMEM,"DDCAPS_CANBLTSYSMEM"); + checkflag(flag,DDCAPS_CANCLIP,"DDCAPS_CANCLIP"); + checkflag(flag,DDCAPS_CANCLIPSTRETCHED,"DDCAPS_CANCLIPSTRETCHED"); + checkflag(flag,DDCAPS_COLORKEY,"DDCAPS_COLORKEY"); + checkflag(flag,DDCAPS_COLORKEYHWASSIST,"DDCAPS_COLORKEYHWASSIST"); + checkflag(flag,DDCAPS_GDI,"DDCAPS_GDI"); + checkflag(flag,DDCAPS_NOHARDWARE,"DDCAPS_NOHARDWARE"); + checkflag(flag,DDCAPS_OVERLAY,"DDCAPS_OVERLAY"); + checkflag(flag,DDCAPS_OVERLAYCANTCLIP,"DDCAPS_OVERLAYCANTCLIP"); + checkflag(flag,DDCAPS_OVERLAYFOURCC,"DDCAPS_OVERLAYFOURCC"); + checkflag(flag,DDCAPS_OVERLAYSTRETCH,"DDCAPS_OVERLAYSTRETCH"); + checkflag(flag,DDCAPS_PALETTE,"DDCAPS_PALETTE"); + checkflag(flag,DDCAPS_PALETTEVSYNC,"DDCAPS_PALETTEVSYNC"); + checkflag(flag,DDCAPS_READSCANLINE,"DDCAPS_READSCANLINE"); + checkflag(flag,DDCAPS_STEREOVIEW,"DDCAPS_STEREOVIEW"); + checkflag(flag,DDCAPS_VBI,"DDCAPS_VBI"); + checkflag(flag,DDCAPS_ZBLTS,"DDCAPS_ZBLTS"); + checkflag(flag,DDCAPS_ZOVERLAYS,"DDCAPS_ZOVERLAYS"); + endcheckflag(flag,"pHalInfo->ddCaps.dwVSBCaps"); + + DPRINT1(" pHalInfo->ddCaps.dwVSBCKeyCaps : 0x%08lx\n",pHalInfo->ddCaps.dwVSBCKeyCaps); + DPRINT1(" pHalInfo->ddCaps.dwVSBFXCaps : 0x%08lx\n",pHalInfo->ddCaps.dwVSBFXCaps); + for (t=0;tddCaps.dwVSBRops[0x%04x] : 0x%08lx\n",t,pHalInfo->ddCaps.dwVSBRops[t]); + } + DPRINT1(" pHalInfo->ddCaps.dwSSBCaps : 0x%08lx\n",pHalInfo->ddCaps.dwSSBCaps); + DPRINT1(" pHalInfo->ddCaps.dwSSBCKeyCa : 0x%08lx\n",pHalInfo->ddCaps.dwSSBCKeyCaps); + DPRINT1(" pHalInfo->ddCaps.dwSSBFXCaps : 0x%08lx\n",pHalInfo->ddCaps.dwSSBFXCaps); + for (t=0;tddCaps.dwSSBRops[0x%04x] : 0x%08lx\n",t,pHalInfo->ddCaps.dwSSBRops[t]); + } + + DPRINT1(" pHalInfo->GetDriverInfo : 0x%08lx\n",(long)pHalInfo->GetDriverInfo); + DPRINT1(" pHalInfo->dwFlags : "); + + flag = pHalInfo->dwFlags; + count = 0; + checkflag(flag,DDHALINFO_ISPRIMARYDISPLAY,"DDHALINFO_ISPRIMARYDISPLAY"); + checkflag(flag,DDHALINFO_MODEXILLEGAL,"DDHALINFO_MODEXILLEGAL"); + checkflag(flag,DDHALINFO_GETDRIVERINFOSET,"DDHALINFO_GETDRIVERINFOSET"); + checkflag(flag,DDHALINFO_GETDRIVERINFO2,"DDHALINFO_GETDRIVERINFO2"); + endcheckflag(flag,"pHalInfo->dwFlags"); + + DPRINT1(" pHalInfo->lpD3DGlobalDriverData : 0x%08lx\n",(long)pHalInfo->lpD3DGlobalDriverData); + DPRINT1(" pHalInfo->lpD3DHALCallbacks : 0x%08lx\n",(long)pHalInfo->lpD3DHALCallbacks); + DPRINT1(" pHalInfo->lpD3DBufCallbacks : 0x%08lx\n",(long)pHalInfo->lpD3DBufCallbacks); + } + else + { + if (pHalInfo->dwSize !=0) + { + DPRINT1("unkonwn dwSize DD_HALINFO : the size found is 0x%08lx\n",pHalInfo->dwSize); + } + else + { + DPRINT1("none pHalInfo from the driver 0x%08lx\n",pHalInfo->dwSize); + } + } +} + /* EOF */