adding more dx test to w32knapi, convert from win32kdxtest tool
authorMagnus Olsen <magnus@greatlord.com>
Sat, 11 Aug 2007 14:35:44 +0000 (14:35 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sat, 11 Aug 2007 14:35:44 +0000 (14:35 +0000)
svn path=/trunk/; revision=28288

rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c

index 4d88b4b..8e61ccd 100644 (file)
@@ -44,6 +44,9 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
        VIDEOMEMORY vmList;\r
        //DWORD NumFourCC = 0;\r
        //DWORD FourCC = 0;\r
+       DEVMODE devmode;\r
+       HDC hdc;\r
+\r
 \r
        /* clear data */\r
        memset(&vmList,0,sizeof(VIDEOMEMORY));\r
@@ -54,7 +57,12 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
        memset(&HalInfo,0,sizeof(DD_HALINFO));\r
        memset(CallBackFlags,0,sizeof(DWORD)*3);\r
 \r
-       HDC hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);\r
+\r
+\r
+       /* Get currenet display mode */\r
+       EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);\r
+\r
+       hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);\r
        ASSERT1(hdc != NULL);\r
 \r
        hDirectDraw = (HANDLE) Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);\r
@@ -112,6 +120,59 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
        RTEST(puFourCC == NULL);\r
        ASSERT1(pHalInfo != NULL);\r
 \r
+       if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&\r
+               (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))\r
+       {\r
+               RTEST(pHalInfo->dwSize != sizeof(DD_HALINFO));\r
+               ASSERT1(pHalInfo->dwSize != sizeof(DD_HALINFO));\r
+       }\r
+\r
+\r
+\r
+       if (pHalInfo->dwSize == sizeof(DD_HALINFO))\r
+       {\r
+               /*the offset, in bytes, to primary surface in the display memory  */\r
+               RTEST(pHalInfo->vmiData.fpPrimary != 0 );\r
+\r
+               /* unsuse always 0 */\r
+               RTEST(pHalInfo->vmiData.dwFlags == 0 );\r
+\r
+               /* fixme check the res */\r
+\r
+\r
+               RTEST(pHalInfo->vmiData.dwDisplayWidth == devmode.dmPelsWidth );\r
+               RTEST(pHalInfo->vmiData.dwDisplayHeight == devmode.dmPelsHeight ); \r
+               /* FIXME \r
+                       RTEST(pHalInfo->vmiData.lDisplayPitch == 0x1700;\r
+               */\r
+               RTEST(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT) ); \r
+               ASSERT1(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT));\r
+\r
+\r
+               /* No fourcc are use on primary screen */\r
+               RTEST(pHalInfo->vmiData.ddpfDisplay.dwFourCC == 0 );\r
+\r
+               /* Count RGB Bits 8/16/24/32 */\r
+               RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount == devmode.dmBitsPerPel );\r
+\r
+               /* FIXME RGB mask */\r
+               //RTEST(pHalInfo->vmiData.ddpfDisplay.dwRBitMask  ==  0 );\r
+               //RTEST(pHalInfo->vmiData.ddpfDisplay.dwGBitMask ==  0 );\r
+               //RTEST(pHalInfo->vmiData.ddpfDisplay.dwBBitMask == 0 );\r
+               /* primary never set the alpha blend mask */\r
+               RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask ==  0 );\r
+\r
+               /* FIXME do not known how test follow thing, for it is diffent for each drv */\r
+               // pHalInfo->vmiData->dwOffscreenAlign               : 0x00000100\r
+               // pHalInfo->vmiData->dwOverlayAlign                 : 0x00000010\r
+               // pHalInfo->vmiData->dwTextureAlign                 : 0x00000020\r
+               // pHalInfo->vmiData->dwZBufferAlign                 : 0x00001000\r
+               // pHalInfo->vmiData->dwAlphaAlign                   : 0x00000000\r
+\r
+               /* the primary display address */\r
+               RTEST(pHalInfo->vmiData.pvPrimary != 0x00000000 );\r
+       }\r
+\r
        /* Cleanup ReactX setup */\r
        DeleteDC(hdc);\r
        Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDraw);\r