adding more dx test to w32knapi, convert from win32kdxtest tool
[reactos.git] / rostests / apitests / w32knapi / ntdd / NtGdiDdQueryDirectDrawObject.c
index 8e61ccd..d3e074b 100644 (file)
@@ -35,6 +35,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
        DWORD *puFourCC = NULL;\r
 \r
        DD_HALINFO HalInfo;\r
+       DD_HALINFO oldHalInfo;\r
        DWORD CallBackFlags[4];\r
        D3DNTHAL_CALLBACKS D3dCallbacks;\r
        D3DNTHAL_GLOBALDRIVERDATA D3dDriverData;\r
@@ -137,9 +138,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
                /* unsuse always 0 */\r
                RTEST(pHalInfo->vmiData.dwFlags == 0 );\r
 \r
-               /* fixme check the res */\r
-\r
-\r
+               /* Check the res */\r
                RTEST(pHalInfo->vmiData.dwDisplayWidth == devmode.dmPelsWidth );\r
                RTEST(pHalInfo->vmiData.dwDisplayHeight == devmode.dmPelsHeight ); \r
                /* FIXME \r
@@ -148,6 +147,9 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
                RTEST(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT) ); \r
                ASSERT1(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT));\r
 \r
+               /* Fail on 8bit screen deep */\r
+               RTEST(pHalInfo->vmiData.ddpfDisplay.dwFlags  == DDPF_RGB);\r
+\r
 \r
                /* No fourcc are use on primary screen */\r
                RTEST(pHalInfo->vmiData.ddpfDisplay.dwFourCC == 0 );\r
@@ -159,6 +161,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
                //RTEST(pHalInfo->vmiData.ddpfDisplay.dwRBitMask  ==  0 );\r
                //RTEST(pHalInfo->vmiData.ddpfDisplay.dwGBitMask ==  0 );\r
                //RTEST(pHalInfo->vmiData.ddpfDisplay.dwBBitMask == 0 );\r
+\r
                /* primary never set the alpha blend mask */\r
                RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask ==  0 );\r
 \r
@@ -170,9 +173,58 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
                // pHalInfo->vmiData->dwAlphaAlign                   : 0x00000000\r
 \r
                /* the primary display address */\r
-               RTEST(pHalInfo->vmiData.pvPrimary != 0x00000000 );\r
+               /* test see if it in kmode memory or not */\r
+               RTEST(pHalInfo->vmiData.pvPrimary != 0 );\r
+               \r
+               /* Test see if we got any hardware acclartions for 2d or 3d */\r
+               //RTEST(pHalInfo->ddCaps.dwSize == sizeof(DDCORECAPS));\r
+\r
+               /* Testing see if we got any hw support for \r
+                * This test can fail on video card that does not support 2d/overlay/3d \r
+                */\r
+               RTEST( pHalInfo->ddCaps.dwCaps != 0);\r
+               RTEST( pHalInfo->ddCaps.ddsCaps.dwCaps != 0);\r
+\r
+               /* if this fail we do not have a dx driver install acodring ms, some version of windows it\r
+                * is okay this fail and drv does then only support basic dx \r
+                */\r
+               RTEST( (pHalInfo->dwFlags & (DDHALINFO_GETDRIVERINFOSET | DDHALINFO_GETDRIVERINFO2)) != 0 );\r
+\r
+               if (pHalInfo->ddCaps.ddsCaps.dwCaps  & DDSCAPS_3DDEVICE )\r
+               {\r
+                       RTEST( pHalInfo->lpD3DGlobalDriverData != 0);\r
+                       RTEST( pHalInfo->lpD3DHALCallbacks != 0);\r
+                       RTEST( pHalInfo->lpD3DBufCallbacks != 0);\r
+               }\r
        }\r
 \r
+       /* FIXME DD_HALINFO_V4 test */\r
+\r
+    RtlCopyMemory(&oldHalInfo, &HalInfo, sizeof(DD_HALINFO));\r
+\r
+       pHalInfo = &HalInfo;\r
+       pCallBackFlags = CallBackFlags;\r
+       RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));\r
+       RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo, \r
+                                                                               pCallBackFlags, puD3dCallbacks, \r
+                                                                               puD3dDriverData, puD3dBufferCallbacks, \r
+                                                                               puD3dTextureFormats, puNumHeaps, \r
+                                                                               puvmList, puNumFourCC,\r
+                                                                               puFourCC)== FALSE);\r
+       RTEST(pHalInfo != NULL);\r
+       RTEST(pCallBackFlags != NULL);\r
+       RTEST(puD3dCallbacks == NULL);\r
+       RTEST(puD3dDriverData == NULL);\r
+       RTEST(puD3dBufferCallbacks == NULL);\r
+       RTEST(puD3dTextureFormats == NULL);\r
+       RTEST(puNumFourCC == NULL);\r
+       RTEST(puFourCC == NULL);\r
+       ASSERT1(pHalInfo != NULL);\r
+\r
+       /* We do not retesting DD_HALINFO, instead we compare it */\r
+       RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+\r
+\r
        /* Cleanup ReactX setup */\r
        DeleteDC(hdc);\r
        Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDraw);\r