DD_HALINFO HalInfo;\r
DD_HALINFO oldHalInfo;\r
DWORD CallBackFlags[4];\r
+\r
D3DNTHAL_CALLBACKS D3dCallbacks;\r
+ D3DNTHAL_CALLBACKS oldD3dCallbacks;\r
+\r
D3DNTHAL_GLOBALDRIVERDATA D3dDriverData;\r
+ D3DNTHAL_GLOBALDRIVERDATA oldD3dDriverData;\r
+\r
DD_D3DBUFCALLBACKS D3dBufferCallbacks;\r
+ DD_D3DBUFCALLBACKS oldD3dBufferCallbacks;\r
+\r
DDSURFACEDESC2 D3dTextureFormats[100];\r
- //DWORD NumHeaps = 0;\r
+ DWORD NumHeaps = 0;\r
VIDEOMEMORY vmList;\r
//DWORD NumFourCC = 0;\r
//DWORD FourCC = 0;\r
DEVMODE devmode;\r
HDC hdc;\r
\r
+ DWORD dwTextureCounter = 0;\r
+ DDSURFACEDESC *myDesc = NULL;\r
+\r
/* clear data */\r
memset(&vmList,0,sizeof(VIDEOMEMORY));\r
memset(&D3dTextureFormats,0,sizeof(DDSURFACEDESC));\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
+ /* some graphic card like sis 760 GX, Nvida GF7900GS does not set any offset at all */\r
+ // RTEST(pHalInfo->vmiData.fpPrimary != 0 );\r
\r
/* unsuse always 0 */\r
RTEST(pHalInfo->vmiData.dwFlags == 0 );\r
// pHalInfo->vmiData->dwAlphaAlign \r
\r
/* the primary display address */\r
-\r
- /* test see if it in kmode memory or not, t */\r
- RTEST(pHalInfo->vmiData.pvPrimary != 0 );\r
RTEST( ( (DWORD)pHalInfo->vmiData.pvPrimary & (~0x80000000)) != 0 );\r
\r
/* test see if we got back the pvmList here \r
/* Test see if we got any hardware acclartions for 2d or 3d, this always fill in \r
* that mean we found a bugi drv and dx does not work on this drv \r
*/\r
+\r
+ /* the SIS 760 GX will never fill it in, it is a bugi drv */\r
RTEST(pHalInfo->ddCaps.dwSize == sizeof(DDCORECAPS));\r
\r
/* Testing see if we got any hw support for\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
+ /* This flags is obsolete and should not be used by the driver */ \r
+ RTEST( pHalInfo->ddCaps.dwFXAlphaCaps == 0);\r
+ \r
+\r
+ /* basic dx 2 is found if this flags not set\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
*/\r
- RTEST( (pHalInfo->dwFlags & (DDHALINFO_GETDRIVERINFOSET | DDHALINFO_GETDRIVERINFO2)) != 0 );\r
-\r
- if (pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE )\r
+ if (pHalInfo->dwFlags != 0)\r
{\r
- /* it is store in kmode so we check if it kmode address or not */\r
- RTEST( ( (DWORD)pHalInfo->lpD3DGlobalDriverData & (~0x80000000)) != 0 );\r
- RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );\r
- RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );\r
+ RTEST( (pHalInfo->dwFlags & (DDHALINFO_GETDRIVERINFOSET | DDHALINFO_GETDRIVERINFO2)) != 0 );\r
+ RTEST( ( (DWORD)pHalInfo->GetDriverInfo & 0x80000000) != 0 );\r
+ ASSERT( ((DWORD)pHalInfo->GetDriverInfo & 0x80000000) != 0 );\r
}\r
+\r
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/\r
+ \r
+\r
+ /* the pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE will be ignore, only way detect it proper follow code,\r
+ * this will be fill in of all drv, it is not only for 3d stuff, this always fill by win32k.sys or dxg.sys depns \r
+ * if it windows 2000 or windows xp/2003\r
+ *\r
+ * point to kmode direcly to the win32k.sys, win32k.sys is kmode and it is kmode address we getting back\r
+ */\r
+ RTEST( ( (DWORD)pHalInfo->lpD3DGlobalDriverData & (~0x80000000)) != 0 );\r
+ RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );\r
+ RTEST( ( (DWORD)pHalInfo->lpD3DHALCallbacks & (~0x80000000)) != 0 );\r
}\r
\r
/* Backup DD_HALINFO so we do not need resting it */\r
*/\r
RTEST(puD3dCallbacks->dwSize == sizeof(D3DNTHAL_CALLBACKS));\r
\r
+ /* Nivda like GF7900GS will not follow ms design rule here, \r
+ * ContextDestroyAll must alwyas be NULL for it is not longer inuse in windows 2000 and higher\r
+ */\r
+ RTEST(puD3dCallbacks->ContextDestroyAll == NULL);\r
+\r
+ /* Nivda like GF7900GS will not follow ms design rule here, \r
+ * SceneCapture must alwyas be NULL for it is not longer inuse in windows 2000 and higher\r
+ */\r
+ RTEST(puD3dCallbacks->SceneCapture == NULL);\r
+ RTEST(puD3dCallbacks->dwReserved10 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved11 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved22 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved23 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved == 0);\r
+ RTEST(puD3dCallbacks->TextureCreate == NULL);\r
+ RTEST(puD3dCallbacks->TextureDestroy == NULL);\r
+ RTEST(puD3dCallbacks->TextureSwap == NULL);\r
+ RTEST(puD3dCallbacks->TextureGetSurf == NULL);\r
+ RTEST(puD3dCallbacks->dwReserved12 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved13 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved14 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved15 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved16 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved17 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved18 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved19 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved20 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved21 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved24 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved0 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved1 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved2 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved3 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved4 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved5 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved6 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved7 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved8 == 0);\r
+ RTEST(puD3dCallbacks->dwReserved9 == 0);\r
+\r
+ /* how detect puD3dCallbacks->ContextCreate and puD3dCallbacks->ContextDestroy shall be set for bugi drv like nivda ? */\r
+ /* pointer direcly to the graphic drv, it is kmode pointer */\r
+ // RTEST( ( (DWORD)puD3dCallbacks->ContextCreate & (~0x80000000)) != 0 );\r
+ // RTEST( ( (DWORD)puD3dCallbacks->ContextDestroy & (~0x80000000)) != 0 );\r
+\r
RTEST(puD3dDriverData == NULL);\r
RTEST(puD3dBufferCallbacks == NULL);\r
RTEST(puD3dTextureFormats == NULL);\r
RTEST(pCallBackFlags[1] != 0);\r
RTEST(pCallBackFlags[2] == 0);\r
\r
-/* Next Start 4 */\r
+ /* Backup D3DNTHAL_CALLBACKS so we do not need resting it */\r
+ RtlCopyMemory(&oldD3dCallbacks, &D3dCallbacks, sizeof(D3DNTHAL_CALLBACKS));\r
+\r
+\r
+/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, */\r
pHalInfo = &HalInfo;\r
pCallBackFlags = CallBackFlags;\r
puD3dCallbacks = &D3dCallbacks;\r
puvmList, puNumFourCC,\r
puFourCC)== FALSE);\r
RTEST(pHalInfo != NULL);\r
+ ASSERT(pHalInfo != NULL);\r
+\r
RTEST(pCallBackFlags != NULL);\r
+ ASSERT(pCallBackFlags != NULL);\r
\r
- if (pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE )\r
- {\r
- RTEST(puD3dCallbacks != NULL);\r
- RTEST(puD3dDriverData != NULL);\r
- }\r
+ RTEST(puD3dCallbacks != NULL);\r
+ ASSERT(puD3dCallbacks != NULL);\r
+\r
+ RTEST(puD3dDriverData != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
\r
RTEST(puD3dBufferCallbacks == NULL);\r
RTEST(puD3dTextureFormats == NULL);\r
RTEST(puFourCC == NULL);\r
RTEST(puNumHeaps == NULL);\r
RTEST(puvmList == NULL);\r
- ASSERT(pHalInfo != NULL);\r
\r
- /* We do not retesting DD_HALINFO, instead we compare it */\r
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ /* We retesting pCallBackFlags */ \r
RTEST(pCallBackFlags[0] != 0);\r
RTEST(pCallBackFlags[1] != 0);\r
-\r
- /* NT4 this will fail */\r
RTEST(pCallBackFlags[2] == 0);\r
\r
-/* Next Start 5 */\r
+ /* We do not retesting instead we compare it */\r
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);\r
+\r
+ /* start test of puD3dDriverData */\r
+ \r
+ RTEST(puD3dDriverData->dwSize == sizeof(D3DNTHAL_GLOBALDRIVERDATA));\r
+ RTEST(puD3dDriverData->hwCaps.dwSize == sizeof(D3DNTHALDEVICEDESC_V1));\r
+ RTEST(puD3dDriverData->hwCaps.dtcTransformCaps.dwSize == sizeof(D3DTRANSFORMCAPS));\r
+ RTEST(puD3dDriverData->hwCaps.dlcLightingCaps.dwSize == sizeof(D3DLIGHTINGCAPS)); \r
+ RTEST(puD3dDriverData->hwCaps.dpcLineCaps.dwSize == sizeof(D3DPRIMCAPS));\r
+ RTEST(puD3dDriverData->hwCaps.dpcTriCaps.dwSize == sizeof(D3DPRIMCAPS));\r
+ RTEST(puD3dDriverData->hwCaps.dwMaxBufferSize == 0);\r
+ RTEST(puD3dDriverData->hwCaps.dwMaxVertexCount == 0); \r
+\r
+ /* Backup D3DHAL_GLOBALDRIVERDATA so we do not need resting it */\r
+ RtlCopyMemory(&oldD3dDriverData, &D3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA));\r
+\r
+/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, */\r
pHalInfo = &HalInfo;\r
pCallBackFlags = CallBackFlags;\r
puD3dCallbacks = &D3dCallbacks;\r
RTEST(puD3dBufferCallbacks != NULL);\r
}\r
\r
+ RTEST(pHalInfo != NULL);\r
+ ASSERT(pHalInfo != NULL);\r
+\r
+ RTEST(pCallBackFlags != NULL);\r
+ ASSERT(pCallBackFlags != NULL);\r
+\r
+ RTEST(puD3dCallbacks != NULL);\r
+ ASSERT(puD3dCallbacks != NULL);\r
+\r
+ RTEST(puD3dDriverData != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
+\r
+ RTEST(puD3dBufferCallbacks != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
\r
RTEST(puD3dTextureFormats == NULL);\r
RTEST(puNumFourCC == NULL);\r
RTEST(puFourCC == NULL);\r
RTEST(puNumHeaps == NULL);\r
RTEST(puvmList == NULL);\r
- ASSERT(pHalInfo != NULL);\r
\r
- /* We do not retesting DD_HALINFO, instead we compare it */\r
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ /* We retesting the flags */ \r
RTEST(pCallBackFlags[0] != 0);\r
RTEST(pCallBackFlags[1] != 0);\r
-\r
- /* NT4 this will fail */\r
RTEST(pCallBackFlags[2] == 0);\r
\r
-/* Next Start 6 */\r
+ /* We do not retesting instead we compare it */\r
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);\r
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);\r
+\r
+ /* start test of puD3dBufferCallbacks */\r
+ RTEST(puD3dBufferCallbacks->dwSize == sizeof(DD_D3DBUFCALLBACKS));\r
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_CANCREATED3DBUF)\r
+ {\r
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/\r
+ RTEST( ( (DWORD)puD3dBufferCallbacks->CanCreateD3DBuffer & (~0x80000000)) != 0 );\r
+ }\r
+ else\r
+ {\r
+ RTEST( puD3dBufferCallbacks->CanCreateD3DBuffer == NULL);\r
+ }\r
+\r
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_CREATED3DBUF)\r
+ {\r
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/\r
+ RTEST( ( (DWORD)puD3dBufferCallbacks->CreateD3DBuffer & (~0x80000000)) != 0 );\r
+ }\r
+ else\r
+ {\r
+ RTEST( puD3dBufferCallbacks->CreateD3DBuffer == NULL);\r
+ }\r
+\r
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_DESTROYD3DBUF)\r
+ {\r
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/\r
+ RTEST( ( (DWORD)puD3dBufferCallbacks->DestroyD3DBuffer & (~0x80000000)) != 0 );\r
+ }\r
+ else\r
+ {\r
+ RTEST( puD3dBufferCallbacks->DestroyD3DBuffer == NULL);\r
+ }\r
+\r
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_LOCKD3DBUF)\r
+ {\r
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/\r
+ RTEST( ( (DWORD)puD3dBufferCallbacks->LockD3DBuffer & (~0x80000000)) != 0 );\r
+ }\r
+ else\r
+ {\r
+ RTEST( puD3dBufferCallbacks->LockD3DBuffer == NULL);\r
+ }\r
+\r
+ if (puD3dBufferCallbacks->dwFlags & DDHAL_D3DBUFCB32_UNLOCKD3DBUF)\r
+ {\r
+ /* point to kmode direcly to the graphic drv, the drv is kmode and it is kmode address we getting back*/\r
+ RTEST( ( (DWORD)puD3dBufferCallbacks->UnlockD3DBuffer & (~0x80000000)) != 0 );\r
+ }\r
+ else\r
+ {\r
+ RTEST( puD3dBufferCallbacks->UnlockD3DBuffer == NULL);\r
+ }\r
+\r
+ /* Backup DD_D3DBUFCALLBACKS so we do not need resting it */\r
+ RtlCopyMemory(&oldD3dBufferCallbacks, &D3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS));\r
+\r
+\r
+/* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, */ \r
pHalInfo = &HalInfo;\r
pCallBackFlags = CallBackFlags;\r
puD3dCallbacks = &D3dCallbacks;\r
puD3dDriverData = &D3dDriverData;\r
puD3dBufferCallbacks = &D3dBufferCallbacks;\r
- \r
+\r
+ /* It is forbein to return a DDSURFACEDESC2 it should always be DDSURFACEDESC\r
+ This is only for detected bad drivers that does not follow the rules, if they\r
+ does not follow tthe rules, not everthing being copy then in gdi32.dll\r
+ gdi32.dll always assume it is DDSURFACEDESC size\r
+ */\r
+ if (puD3dDriverData->dwNumTextureFormats != 0)\r
+ {\r
+ puD3dTextureFormats = malloc (puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));\r
+ }\r
+\r
RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));\r
RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);\r
RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));\r
puD3dTextureFormats, puNumHeaps,\r
puvmList, puNumFourCC,\r
puFourCC)== FALSE);\r
+\r
RTEST(pHalInfo != NULL);\r
+ ASSERT(pHalInfo != NULL);\r
+\r
RTEST(pCallBackFlags != NULL);\r
+ ASSERT(pCallBackFlags != NULL);\r
\r
- if (pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE )\r
- {\r
- RTEST(puD3dCallbacks != NULL);\r
- RTEST(puD3dDriverData != NULL);\r
- RTEST(puD3dBufferCallbacks != NULL);\r
- }\r
+ RTEST(puD3dCallbacks != NULL);\r
+ ASSERT(puD3dCallbacks != NULL);\r
\r
- RTEST(puD3dTextureFormats == NULL);\r
+ RTEST(puD3dDriverData != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
+\r
+ RTEST(puD3dBufferCallbacks != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
+\r
+ RTEST(puD3dTextureFormats != NULL);\r
+ ASSERT(puD3dTextureFormats != NULL);\r
+ \r
RTEST(puNumFourCC == NULL);\r
RTEST(puFourCC == NULL);\r
RTEST(puNumHeaps == NULL);\r
RTEST(puvmList == NULL);\r
- ASSERT(pHalInfo != NULL);\r
\r
- /* We do not retesting DD_HALINFO, instead we compare it */\r
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ /* We retesting the flags */ \r
RTEST(pCallBackFlags[0] != 0);\r
RTEST(pCallBackFlags[1] != 0);\r
-\r
- /* NT4 this will fail */\r
RTEST(pCallBackFlags[2] == 0);\r
\r
-/* Next Start 7 */\r
+ /* We do not retesting instead we compare it */\r
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);\r
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);\r
+ RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);\r
+\r
+ /* start test of dwNumTextureFormats */ \r
+ if (puD3dDriverData->dwNumTextureFormats != 0)\r
+ {\r
+ myDesc = puD3dTextureFormats;\r
+ for (dwTextureCounter=0;dwTextureCounter<puD3dDriverData->dwNumTextureFormats;dwTextureCounter++)\r
+ {\r
+ RTEST(myDesc->dwSize == sizeof(DDSURFACEDESC))\r
+ ASSERT(myDesc->dwSize == sizeof(DDSURFACEDESC));\r
+\r
+ RTEST( (myDesc->dwFlags & (~(DDSD_CAPS|DDSD_PIXELFORMAT))) == 0);\r
+ RTEST(myDesc->dwHeight == 0);\r
+ RTEST(myDesc->dwWidth == 0);\r
+ RTEST(myDesc->dwLinearSize == 0);\r
+ RTEST(myDesc->dwBackBufferCount == 0);\r
+ RTEST(myDesc->dwZBufferBitDepth == 0);\r
+ RTEST(myDesc->dwAlphaBitDepth == 0);\r
+ RTEST(myDesc->dwReserved == 0);\r
+ RTEST(myDesc->lpSurface == 0);\r
+ RTEST(myDesc->ddckCKDestOverlay.dwColorSpaceLowValue == 0);\r
+ RTEST(myDesc->ddckCKDestOverlay.dwColorSpaceHighValue == 0);\r
+ RTEST(myDesc->ddckCKDestBlt.dwColorSpaceLowValue == 0);\r
+ RTEST(myDesc->ddckCKDestBlt.dwColorSpaceHighValue == 0);\r
+ RTEST(myDesc->ddckCKSrcOverlay.dwColorSpaceLowValue == 0);\r
+ RTEST(myDesc->ddckCKSrcOverlay.dwColorSpaceHighValue == 0);\r
+ RTEST(myDesc->ddckCKSrcBlt.dwColorSpaceLowValue == 0);\r
+ RTEST(myDesc->ddckCKSrcBlt.dwColorSpaceHighValue == 0); \r
+ RTEST(myDesc->ddpfPixelFormat.dwSize == sizeof(DDPIXELFORMAT));\r
+ RTEST(myDesc->ddpfPixelFormat.dwFlags != 0);\r
+ if (myDesc->ddpfPixelFormat.dwFlags & DDPF_FOURCC)\r
+ {\r
+ RTEST(myDesc->ddpfPixelFormat.dwFourCC != 0);\r
+ }\r
+ RTEST(myDesc->ddsCaps.dwCaps == DDSCAPS_TEXTURE);\r
+\r
+ myDesc = (DDSURFACEDESC *) (((DWORD) myDesc) + sizeof(DDSURFACEDESC));\r
+ }\r
+ }\r
+ \r
+\r
+ /* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, NULL, */ \r
pHalInfo = &HalInfo;\r
pCallBackFlags = CallBackFlags;\r
puD3dCallbacks = &D3dCallbacks;\r
puD3dDriverData = &D3dDriverData;\r
puD3dBufferCallbacks = &D3dBufferCallbacks;\r
-\r
- /* It is forbein to return a DDSURFACEDESC2 it should always be DDSURFACEDESC\r
- This is only for detected bad drivers that does not follow the rules, if they\r
- does not follow tthe rules, not everthing being copy then in gdi32.dll\r
- gdi32.dll always assume it is DDSURFACEDESC size\r
- */\r
+ puNumHeaps = &NumHeaps;\r
+ \r
if (puD3dDriverData->dwNumTextureFormats != 0)\r
{\r
- puD3dTextureFormats = malloc (puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));\r
- }\r
-\r
+ RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));\r
+ } \r
RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));\r
RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);\r
RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));\r
puD3dTextureFormats, puNumHeaps,\r
puvmList, puNumFourCC,\r
puFourCC)== FALSE);\r
+\r
RTEST(pHalInfo != NULL);\r
+ ASSERT(pHalInfo != NULL);\r
+\r
RTEST(pCallBackFlags != NULL);\r
+ ASSERT(pCallBackFlags != NULL);\r
+\r
+ RTEST(puD3dCallbacks != NULL);\r
+ ASSERT(puD3dCallbacks != NULL);\r
+\r
+ RTEST(puD3dDriverData != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
\r
- if (pHalInfo->ddCaps.ddsCaps.dwCaps & DDSCAPS_3DDEVICE )\r
- {\r
- RTEST(puD3dCallbacks != NULL);\r
- RTEST(puD3dDriverData != NULL);\r
RTEST(puD3dBufferCallbacks != NULL);\r
- if (puD3dDriverData->dwNumTextureFormats != 0)\r
- {\r
- /* FIXME add a better test for texture */\r
- RTEST(puD3dTextureFormats != NULL);\r
- }\r
- }\r
+ ASSERT(puD3dDriverData != NULL);\r
+\r
+ RTEST(puD3dTextureFormats != NULL);\r
+ ASSERT(puD3dTextureFormats != NULL);\r
+ \r
+ RTEST(puNumHeaps != NULL);\r
+ ASSERT(puNumHeaps != NULL);\r
+ RTEST(NumHeaps == 0);\r
\r
RTEST(puNumFourCC == NULL);\r
RTEST(puFourCC == NULL);\r
- RTEST(puNumHeaps == NULL);\r
+ \r
RTEST(puvmList == NULL);\r
- ASSERT(pHalInfo != NULL);\r
\r
- /* We do not retesting DD_HALINFO, instead we compare it */\r
- RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ /* We retesting the flags */ \r
RTEST(pCallBackFlags[0] != 0);\r
RTEST(pCallBackFlags[1] != 0);\r
-\r
- /* NT4 this will fail */\r
RTEST(pCallBackFlags[2] == 0);\r
\r
+ /* We do not retesting instead we compare it */\r
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);\r
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);\r
+ RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);\r
+ /* we skip resting texture */\r
+\r
\r
+ /* testing NtGdiDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, puNumHeaps, puvmList, NULL, */ \r
+ pHalInfo = &HalInfo;\r
+ pCallBackFlags = CallBackFlags;\r
+ puD3dCallbacks = &D3dCallbacks;\r
+ puD3dDriverData = &D3dDriverData;\r
+ puD3dBufferCallbacks = &D3dBufferCallbacks;\r
+ puNumHeaps = &NumHeaps;\r
+ puvmList = &vmList;\r
+ \r
+ if (puD3dDriverData->dwNumTextureFormats != 0)\r
+ {\r
+ RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));\r
+ } \r
+ RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));\r
+ RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);\r
+ RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));\r
+ RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_GLOBALDRIVERDATA));\r
+ RtlZeroMemory(&D3dBufferCallbacks,sizeof(DD_D3DBUFCALLBACKS));\r
+\r
+ RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,\r
+ pCallBackFlags, puD3dCallbacks,\r
+ puD3dDriverData, puD3dBufferCallbacks,\r
+ puD3dTextureFormats, puNumHeaps,\r
+ puvmList, puNumFourCC,\r
+ puFourCC)== FALSE);\r
+\r
+ RTEST(pHalInfo != NULL);\r
+ ASSERT(pHalInfo != NULL);\r
+\r
+ RTEST(pCallBackFlags != NULL);\r
+ ASSERT(pCallBackFlags != NULL);\r
+\r
+ RTEST(puD3dCallbacks != NULL);\r
+ ASSERT(puD3dCallbacks != NULL);\r
+\r
+ RTEST(puD3dDriverData != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
+\r
+ RTEST(puD3dBufferCallbacks != NULL);\r
+ ASSERT(puD3dDriverData != NULL);\r
+\r
+ RTEST(puD3dTextureFormats != NULL);\r
+ ASSERT(puD3dTextureFormats != NULL);\r
+ \r
+ RTEST(puNumHeaps != NULL);\r
+ ASSERT(puNumHeaps != NULL);\r
+ RTEST(NumHeaps == 0);\r
+\r
+ RTEST(puvmList != NULL); \r
+\r
+ RTEST(puNumFourCC == NULL);\r
+ RTEST(puFourCC == NULL);\r
+ \r
+ \r
+\r
+ /* We retesting the flags */ \r
+ RTEST(pCallBackFlags[0] != 0);\r
+ RTEST(pCallBackFlags[1] != 0);\r
+ RTEST(pCallBackFlags[2] == 0);\r
+\r
+ /* We do not retesting instead we compare it */\r
+ RTEST(memcmp(&oldHalInfo, pHalInfo, sizeof(DD_HALINFO)) == 0);\r
+ RTEST(memcmp(&oldD3dCallbacks, puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS)) == 0);\r
+ RTEST(memcmp(&oldD3dDriverData, puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA)) == 0);\r
+ RTEST(memcmp(&oldD3dBufferCallbacks, puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS)) == 0);\r
+ /* we skip resting texture */\r
\r
/* Todo\r
- * adding test for\r
- * puD3dCallbacks\r
- * puD3dDriverData\r
- * puD3dBufferCallbacks\r
+ * adding test for \r
* puNumFourCC\r
* puFourCC\r
- * puNumHeaps\r
- * puvmList\r
*/\r
\r
/* Cleanup ReactX setup */\r