update dxhaltest with some new test, Thuse test are not 100% correct in all case...
authorMagnus Olsen <magnus@greatlord.com>
Sat, 12 May 2007 10:14:22 +0000 (10:14 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sat, 12 May 2007 10:14:22 +0000 (10:14 +0000)
svn path=/trunk/; revision=26718

rostests/dxtest/win32kdxtest/NtGdiDdCanCreateSurface.c [new file with mode: 0644]
rostests/dxtest/win32kdxtest/NtGdiDdCreateDirectDrawObject.c
rostests/dxtest/win32kdxtest/NtGdiDdGetScanLine.c [new file with mode: 0644]
rostests/dxtest/win32kdxtest/NtGdiDdQueryDirectDrawObject.c
rostests/dxtest/win32kdxtest/NtGdiDdWaitForVerticalBlank.c [new file with mode: 0644]
rostests/dxtest/win32kdxtest/dump.c
rostests/dxtest/win32kdxtest/main.c
rostests/dxtest/win32kdxtest/test.h
rostests/dxtest/win32kdxtest/win32kdxtest.rbuild

diff --git a/rostests/dxtest/win32kdxtest/NtGdiDdCanCreateSurface.c b/rostests/dxtest/win32kdxtest/NtGdiDdCanCreateSurface.c
new file mode 100644 (file)
index 0000000..1b11558
--- /dev/null
@@ -0,0 +1,44 @@
+\r
+#include <stdio.h>\r
+/* SDK/DDK/NDK Headers. */\r
+#include <windows.h>\r
+#include <wingdi.h>\r
+#include <winddi.h>\r
+#include <d3dnthal.h>\r
+#include <dll/directx/d3d8thk.h>\r
+#include "test.h"\r
+\r
+/*\r
+ * Test see if we can delete a DirectDrawObject from win32k\r
+ *\r
+ */\r
+void\r
+test_NtGdiDdCanCreateSurface(HANDLE hDirectDrawLocal)\r
+{\r
+    int fails=0;\r
+    BOOL retValue=FALSE;\r
+    DDHAL_CANCREATESURFACEDATA pCanCreateSurface;\r
+    DDSURFACEDESC2 desc;\r
+    \r
+    RtlZeroMemory(&pCanCreateSurface,sizeof(DDHAL_CANCREATESURFACEDATA));\r
+    RtlZeroMemory(&desc,sizeof(DDSURFACEDESC2));\r
+    \r
+    /* crash in windows 2000 */\r
+    retValue = OsThunkDdCanCreateSurface(NULL,NULL);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"1. NtGdiDdCanCreateSurface(NULL,NULL);\0");\r
+\r
+    retValue = OsThunkDdCanCreateSurface(hDirectDrawLocal,NULL);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"2. NtGdiDdCanCreateSurface(hDirectDrawLocal,NULL);\0");\r
+\r
+    retValue = OsThunkDdCanCreateSurface(hDirectDrawLocal,(PDD_CANCREATESURFACEDATA)&pCanCreateSurface);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"3. NtGdiDdCanCreateSurface(hDirectDrawLocal,pCanCreateSurface);\0");\r
+\r
+    pCanCreateSurface.lpDDSurfaceDesc = &desc;\r
+    desc.dwSize = sizeof(DDSURFACEDESC2);\r
+\r
+    retValue = OsThunkDdCanCreateSurface(hDirectDrawLocal,(PDD_CANCREATESURFACEDATA)&pCanCreateSurface);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"4. NtGdiDdCanCreateSurface(hDirectDrawLocal,pCanCreateSurface);\0");\r
+\r
+}\r
+\r
+\r
index fe0f43a..08f9e41 100644 (file)
@@ -19,6 +19,23 @@ test_NtGdiDdCreateDirectDrawObject()
     int fails=0;
     HDC hdc=CreateDCW(L"Display",NULL,NULL,NULL);
 
+    if (hdc == NULL)
+    {
+        printf("No hdc was created with Display, trying now with DISPLAY\n");
+        hdc=CreateDCW(L"DISPLAY",NULL,NULL,NULL);
+        if (hdc == NULL)
+        {
+            printf("No hdc was created with DISPLAY, trying now with NULL\n");
+            hdc=CreateDCW(NULL,NULL,NULL,NULL);
+        }
+    }
+
+    if (hdc == NULL)
+    {
+        printf("No hdc was created at all perpare all test will fail\n");
+        return NULL;
+    }
+
     printf("Start testing of NtGdiDdCreateDirectDrawObject\n");
     
     retValue = OsThunkDdCreateDirectDrawObject(NULL);
diff --git a/rostests/dxtest/win32kdxtest/NtGdiDdGetScanLine.c b/rostests/dxtest/win32kdxtest/NtGdiDdGetScanLine.c
new file mode 100644 (file)
index 0000000..d3ed876
--- /dev/null
@@ -0,0 +1,40 @@
+#include <stdio.h>\r
+/* SDK/DDK/NDK Headers. */\r
+#include <windows.h>\r
+#include <wingdi.h>\r
+#include <winddi.h>\r
+#include <d3dnthal.h>\r
+#include <dll/directx/d3d8thk.h>\r
+#include "test.h"\r
+\r
+/*\r
+ * Test see if we can delete a DirectDrawObject from win32k\r
+ *\r
+ */\r
+void\r
+test_NtGdiDdGetScanLine(HANDLE hDirectDrawLocal)\r
+{\r
+    int fails=0;\r
+    BOOL retValue=FALSE;\r
+    DD_GETSCANLINEDATA puGetScanLineData;\r
+\r
+    printf("Start testing of NtGdiDdGetScanLine\n");\r
+    RtlZeroMemory(&puGetScanLineData,sizeof(DD_GETSCANLINEDATA));\r
+    \r
+    retValue = OsThunkDdGetScanLine(NULL,NULL);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"1. NtGdiDdGetScanLine(NULL,NULL);\0");\r
+\r
+    retValue = OsThunkDdGetScanLine(hDirectDrawLocal,NULL);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"2. NtGdiDdGetScanLine(hDirectDrawLocal,NULL);\0");\r
+\r
+    puGetScanLineData.ddRVal = DDERR_GENERIC;\r
+    retValue = OsThunkDdGetScanLine(hDirectDrawLocal,&puGetScanLineData);\r
+    testing_eq(retValue,DDHAL_DRIVER_NOTHANDLED,fails,"3. NtGdiDdGetScanLine(hDirectDrawLocal,puGetScanLineData);\0");\r
+    testing_noteq(puGetScanLineData.ddRVal,DD_OK,fails,"4. NtGdiDdGetScanLine(hDirectDrawLocal,puGetScanLineData);\0");\r
+    testing_eq(puGetScanLineData.dwScanLine,0,fails,"4. NtGdiDdGetScanLine(hDirectDrawLocal,puGetScanLineData);\0");\r
+\r
+    \r
+    /* FIXME DDERR_VERTICALBLANKINPROGRESS test */\r
+\r
+    show_status(fails, "NtGdiDdGetScanLine\0");\r
+}
\ No newline at end of file
index 1c8b5e1..bc72101 100644 (file)
@@ -9,10 +9,28 @@
 
 extern BOOL dumping_on;
 
+/* my struct */
+struct
+{
+    DWORD pos;
+} *mytest;
+
 /*
  * Test see if we can setup DirectDrawObject 
  *
  */
+
+/* 
+ * ToDO 
+ * 1. add more testcase it is only some, but we do not test for all case 
+ *    that happen only some
+ *
+ * 2.Fixed the false alaret for drivers only support 2d dx interface 
+ *
+ * 3. fixed the dumping of d3d struct. 
+ *
+ */
 void
 test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal)
 {
@@ -36,10 +54,10 @@ test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal)
     D3DNTHAL_GLOBALDRIVERDATA D3dDriverData;
     DD_D3DBUFCALLBACKS D3dBufferCallbacks;
     DDSURFACEDESC2 D3dTextureFormats[100];
-    // DWORD NumHeaps = 0;
+    DWORD NumHeaps = 0;
     VIDEOMEMORY vmList;
-    // DWORD NumFourCC = 0;
-    //DWORD FourCC = 0;
+    DWORD NumFourCC = 0;
+    DWORD FourCC = 0;
 
     /* clear data */
     memset(&vmList,0,sizeof(VIDEOMEMORY));
@@ -202,7 +220,7 @@ test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal)
         /* FIXME dump puD3dCallbacks */
     }
 
-   /* testing  OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ....  */
+   /* testing  OsThunkDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, */
     printf("testing  DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, NULL, ....)\n");
 
     pHalInfo = &HalInfo;
@@ -247,5 +265,131 @@ test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal)
         /* FIXME dump puD3dDriverData */
     }
 
+/* testing  OsThunkDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, NULL, */
+    printf("testing  DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, NULL, ....)\n");
+
+    pHalInfo = &HalInfo;
+    pCallBackFlags = CallBackFlags;
+    puD3dCallbacks = &D3dCallbacks;
+    puD3dDriverData = &D3dDriverData;
+    puD3dBufferCallbacks = &D3dBufferCallbacks;
+
+    RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+    RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+    RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+    RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_CALLBACKS));
+
+    retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, 
+                                                pCallBackFlags, puD3dCallbacks, 
+                                                puD3dDriverData, puD3dBufferCallbacks, 
+                                                puD3dTextureFormats, puNumHeaps, 
+                                                puvmList, puNumFourCC,
+                                                puFourCC);
+
+    testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
+    testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
+    testing_eq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");    
+    testing_noteq(puD3dCallbacks->dwSize,sizeof(D3DNTHAL_CALLBACKS),fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
+
+    testing_noteq(puD3dDriverData->dwSize,sizeof(D3DNTHAL_GLOBALDRIVERDATA),fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dBufferCallbacks, NULL, ...);\0");
+
+    testing_noteq(puD3dTextureFormats,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal,  pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
+    testing_noteq(puNumFourCC,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
+    testing_noteq(puFourCC,NULL,fails,"8. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\0");
+    if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
+        (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
+    {
+        printf("9. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL, ...);\n");
+        fails++;
+    }
+
+    if (puD3dBufferCallbacks)
+    {
+        testing_noteq(puD3dBufferCallbacks->dwSize,sizeof(DD_D3DBUFCALLBACKS),fails,"11. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, NULL...);\0");
+    }
+
+    if (dumping_on == TRUE)
+    {
+        dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
+        dump_CallBackFlags(pCallBackFlags,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
+        /* FIXME dump puD3dCallbacks */
+        /* FIXME dump puD3dDriverData */
+        /* FIXME dump D3dBufferCallbacks */
+        
+    }
+
+/* testing  OsThunkDdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, puD3dTextureFormats, NULL, */
+    printf("testing  DdQueryDirectDrawObject( hDD, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, D3dBufferCallbacks, puD3dTextureFormats, NULL, ....)\n");
+
+    pHalInfo = &HalInfo;
+    pCallBackFlags = CallBackFlags;
+    puD3dCallbacks = &D3dCallbacks;
+    puD3dDriverData = &D3dDriverData;
+    puD3dBufferCallbacks = &D3dBufferCallbacks;
+
+    RtlZeroMemory(pHalInfo,sizeof(DD_HALINFO));
+    RtlZeroMemory(pCallBackFlags,sizeof(DWORD)*3);
+    RtlZeroMemory(puD3dCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+    //RtlZeroMemory(puD3dDriverData,sizeof(D3DNTHAL_CALLBACKS));
+    RtlZeroMemory(&D3dBufferCallbacks,sizeof(D3DNTHAL_CALLBACKS));
+
+    if (puD3dDriverData)
+    {
+        puD3dTextureFormats = malloc (puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
+        if (!puD3dTextureFormats)
+            printf("Waring Out of memory\n");
+
+        RtlZeroMemory(puD3dTextureFormats, puD3dDriverData->dwNumTextureFormats * sizeof(DDSURFACEDESC2));
+    }
+
+    retValue = OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, 
+                                                pCallBackFlags, puD3dCallbacks, 
+                                                puD3dDriverData, puD3dBufferCallbacks, 
+                                                puD3dTextureFormats, puNumHeaps, 
+                                                puvmList, puNumFourCC,
+                                                puFourCC);
+
+    testing_noteq(retValue,FALSE,fails,"1. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
+    testing_eq(pHalInfo,NULL,fails,"2. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
+    testing_eq(pCallBackFlags,NULL,fails,"3. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");    
+    testing_noteq(puD3dCallbacks->dwSize,sizeof(D3DNTHAL_CALLBACKS),fails,"4. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
+
+    testing_noteq(puD3dDriverData->dwSize,sizeof(D3DNTHAL_GLOBALDRIVERDATA),fails,"5. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
+
+    testing_noteq(puNumFourCC,NULL,fails,"6. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
+    testing_noteq(puFourCC,NULL,fails,"7. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\0");
+    if ((pHalInfo->dwSize != sizeof(DD_HALINFO)) &&
+        (pHalInfo->dwSize != sizeof(DD_HALINFO_V4)))
+    {
+        printf("8. if this show for NT 2000/XP/2003 ignore it, NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL, ...);\n");
+        fails++;
+    }
+
+    if (puD3dBufferCallbacks)
+    {
+        testing_noteq(puD3dBufferCallbacks->dwSize,sizeof(DD_D3DBUFCALLBACKS),fails,"9. NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, puD3dCallbacks, puD3dDriverData, puD3dBufferCallbacks, puD3dTextureFormats, NULL...);\0");
+    }
+
+    if (puD3dTextureFormats)
+    {
+        /* fixme test case for it */
+    }
+
+    if (dumping_on == TRUE)
+    {
+        dump_halinfo(pHalInfo,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
+        dump_CallBackFlags(pCallBackFlags,"NtGdiDdQueryDirectDrawObject(hDirectDrawLocal, pHalInfo, pCallBackFlags, NULL, ...)");
+        /* FIXME dump puD3dCallbacks */
+        /* FIXME dump puD3dDriverData */
+        /* FIXME dump D3dBufferCallbacks */
+        /* FIXME dump puD3dTextureFormats */
+    }
+
+
+
+
+
+    if (puD3dTextureFormats)
+        free (puD3dTextureFormats);
     show_status(fails, "NtGdiDdQueryDirectDrawObject\0");
 }
\ No newline at end of file
diff --git a/rostests/dxtest/win32kdxtest/NtGdiDdWaitForVerticalBlank.c b/rostests/dxtest/win32kdxtest/NtGdiDdWaitForVerticalBlank.c
new file mode 100644 (file)
index 0000000..345bd21
--- /dev/null
@@ -0,0 +1,44 @@
+#include <stdio.h>\r
+/* SDK/DDK/NDK Headers. */\r
+#include <windows.h>\r
+#include <wingdi.h>\r
+#include <winddi.h>\r
+#include <d3dnthal.h>\r
+#include <dll/directx/d3d8thk.h>\r
+#include "test.h"\r
+\r
+/*\r
+ * Test see if we can delete a DirectDrawObject from win32k\r
+ *\r
+ */\r
+void\r
+test_NtGdiDdWaitForVerticalBlank(HANDLE hDirectDrawLocal)\r
+{\r
+    int fails=0;\r
+    BOOL retValue=FALSE;\r
+    DDHAL_WAITFORVERTICALBLANKDATA pDdWaitForVerticalBlankData;\r
+    \r
+    RtlZeroMemory(&pDdWaitForVerticalBlankData,sizeof(DDHAL_WAITFORVERTICALBLANKDATA));\r
+\r
+    retValue = OsThunkDdWaitForVerticalBlank(NULL,NULL);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"1. NtGdiDdWaitForVerticalBlank(NULL,NULL);\0");\r
+\r
+    retValue = OsThunkDdWaitForVerticalBlank(hDirectDrawLocal,NULL);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"2. NtGdiDdWaitForVerticalBlank(hDirectDrawLocal,NULL);\0");\r
+\r
+    retValue = OsThunkDdWaitForVerticalBlank(hDirectDrawLocal,(PDD_WAITFORVERTICALBLANKDATA)&pDdWaitForVerticalBlankData);\r
+    testing_eq(retValue, DDHAL_DRIVER_HANDLED,fails,"3. NtGdiDdWaitForVerticalBlank(hDirectDrawLocal,NULL);\0");\r
+    testing_eq(pDdWaitForVerticalBlankData.ddRVal, DD_OK,fails,"4. NtGdiDdWaitForVerticalBlank(hDirectDrawLocal,NULL);\0");\r
+\r
+    RtlZeroMemory(&pDdWaitForVerticalBlankData,sizeof(DDHAL_WAITFORVERTICALBLANKDATA));\r
+    pDdWaitForVerticalBlankData.dwFlags = DDWAITVB_I_TESTVB;\r
+    retValue = OsThunkDdWaitForVerticalBlank(hDirectDrawLocal,(PDD_WAITFORVERTICALBLANKDATA)&pDdWaitForVerticalBlankData);\r
+\r
+    testing_eq(retValue, DDHAL_DRIVER_NOTHANDLED,fails,"5. NtGdiDdWaitForVerticalBlank(hDirectDrawLocal,NULL);\0");\r
+    testing_noteq(pDdWaitForVerticalBlankData.ddRVal, DD_OK,fails,"6. NtGdiDdWaitForVerticalBlank(hDirectDrawLocal,NULL);\0");\r
+\r
+    retValue = OsThunkDdWaitForVerticalBlank(hDirectDrawLocal,(PDD_WAITFORVERTICALBLANKDATA)&pDdWaitForVerticalBlankData);\r
+\r
+    show_status(fails, "NtGdiDdWaitForVerticalBlank\0");\r
+}\r
+\r
index d0d34c1..8e50ecf 100644 (file)
 
 #include "test.h"
 
+#define checkflag(dwflag,dwvalue,text) \
+        if (dwflag & dwvalue) \
+        { \
+            if (count!=0) \
+            { \
+                printf("| "); \
+            } \
+            dwflag = dwflag - dwvalue; \
+            printf("%s ",text); \
+            count++; \
+        }
+
+#define endcheckflag(dwflag,text) \
+    if (count==0) \
+        printf("0x%08lx\n",dwflag);\
+    else \
+        printf("\n");\
+    if (flag != 0) \
+        printf("undoc value in %s flags value %04lx\n",text,dwflag);
+
+
 
 void
 dump_CallBackFlags(DWORD *pCallBackFlags, char *text)
 {
-    UINT flag=pCallBackFlags[0];
-    INT count=0;
+    UINT flag;
+    INT count;
 
     printf("dumping the CallBackFlags from %s\n",text);
     printf("pCallBackFlags[0] : ");
-    if (flag & DDHAL_CB32_CANCREATESURFACE)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_CANCREATESURFACE;
-        printf("DDHAL_CB32_CANCREATESURFACE ");
-        count++;
-    }
-    if (flag & DDHAL_CB32_CREATEPALETTE)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_CREATEPALETTE;
-        printf("DDHAL_CB32_CREATEPALETTE ");
-        count++;
-    }
-    if (flag & DDHAL_CB32_CREATESURFACE)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_CREATESURFACE;
-        printf("DDHAL_CB32_CREATESURFACE ");
-        count++;
-    }
-    if (flag & DDHAL_CB32_GETSCANLINE)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_GETSCANLINE;
-        printf("DDHAL_CB32_GETSCANLINE ");
-        count++;
-    }
-    if (flag & DDHAL_CB32_MAPMEMORY)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_MAPMEMORY;
-        printf("DDHAL_CB32_MAPMEMORY ");
-        count++;
-    }
-    if (flag & DDHAL_CB32_SETCOLORKEY)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_SETCOLORKEY;
-        printf("DDHAL_CB32_SETCOLORKEY ");
-        count++;
-    }
-    if (flag & DDHAL_CB32_SETMODE)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_SETMODE;
-        printf("DDHAL_CB32_SETMODE ");
-        count++;
-    }
-    if (flag & DDHAL_CB32_WAITFORVERTICALBLANK)
-    {
-        if (count!=0)
-        {
-            printf("| ");
-        }
-        flag = flag - DDHAL_CB32_WAITFORVERTICALBLANK;
-        printf("DDHAL_CB32_WAITFORVERTICALBLANK ");
-        count++;
-    }
 
-    if (count==0)
-    {
-        printf("0x%04lx\n",pCallBackFlags[0]);
-    }
-    else
-    {
-        printf("\n");
-    }
+    flag=pCallBackFlags[0];
+    count=0;
+    checkflag(flag,DDHAL_CB32_CANCREATESURFACE,"DDHAL_CB32_CANCREATESURFACE");
+    checkflag(flag,DDHAL_CB32_CREATEPALETTE,"DDHAL_CB32_CREATEPALETTE");
+    checkflag(flag,DDHAL_CB32_CREATESURFACE,"DDHAL_CB32_CREATESURFACE");
+    checkflag(flag,DDHAL_CB32_GETSCANLINE,"DDHAL_CB32_GETSCANLINE");
+    checkflag(flag,DDHAL_CB32_MAPMEMORY,"DDHAL_CB32_MAPMEMORY");
+    checkflag(flag,DDHAL_CB32_SETCOLORKEY,"DDHAL_CB32_SETCOLORKEY");
+    checkflag(flag,DDHAL_CB32_SETMODE,"DDHAL_CB32_SETMODE");
+    checkflag(flag,DDHAL_CB32_WAITFORVERTICALBLANK,"DDHAL_CB32_WAITFORVERTICALBLANK");
+    endcheckflag(flag,"pCallBackFlags[0]");
 
+    /* SURFACE callback */
+    printf("pCallBackFlags[1] : ");
+    flag = pCallBackFlags[1];
+    count = 0;
+    checkflag(flag,DDHAL_SURFCB32_ADDATTACHEDSURFACE,"DDHAL_SURFCB32_ADDATTACHEDSURFACE");
+    checkflag(flag,DDHAL_SURFCB32_BLT,"DDHAL_SURFCB32_BLT");
+    checkflag(flag,DDHAL_SURFCB32_DESTROYSURFACE,"DDHAL_SURFCB32_DESTROYSURFACE");
+    checkflag(flag,DDHAL_SURFCB32_FLIP,"DDHAL_SURFCB32_FLIP");
+    checkflag(flag,DDHAL_SURFCB32_GETBLTSTATUS,"DDHAL_SURFCB32_GETBLTSTATUS");
+    checkflag(flag,DDHAL_SURFCB32_GETFLIPSTATUS,"DDHAL_SURFCB32_GETFLIPSTATUS");
+    checkflag(flag,DDHAL_SURFCB32_LOCK,"DDHAL_SURFCB32_LOCK");
+    checkflag(flag,DDHAL_SURFCB32_RESERVED4,"DDHAL_SURFCB32_RESERVED4");
+    checkflag(flag,DDHAL_SURFCB32_SETCLIPLIST,"DDHAL_SURFCB32_SETCLIPLIST");
+    checkflag(flag,DDHAL_SURFCB32_SETCOLORKEY,"DDHAL_SURFCB32_SETCOLORKEY");
+    checkflag(flag,DDHAL_SURFCB32_SETOVERLAYPOSITION,"DDHAL_SURFCB32_SETOVERLAYPOSITION");
+    checkflag(flag,DDHAL_SURFCB32_SETPALETTE,"DDHAL_SURFCB32_SETPALETTE");
+    checkflag(flag,DDHAL_SURFCB32_UNLOCK,"DDHAL_SURFCB32_UNLOCK");
+    checkflag(flag,DDHAL_SURFCB32_UPDATEOVERLAY,"DDHAL_SURFCB32_UPDATEOVERLAY");
+    endcheckflag(flag,"pCallBackFlags[1]");
 
-    if (flag != 0)
-    {
-        printf("undoc value in DD_CALLBACKS flags value %04lx\n",flag);
-    }
 
-    printf("pCallBackFlags[1] : 0x%04lx\n",pCallBackFlags[1]);
-    printf("pCallBackFlags[2] : 0x%04lx\n",pCallBackFlags[2]);
+    /* palleted */
+    printf("pCallBackFlags[2] : ");
+    flag = pCallBackFlags[2];
+    count = 0;
+    checkflag(flag,DDHAL_PALCB32_DESTROYPALETTE,"DDHAL_PALCB32_DESTROYPALETTE");
+    checkflag(flag,DDHAL_PALCB32_SETENTRIES,"DDHAL_PALCB32_SETENTRIES");
+    endcheckflag(flag,"pCallBackFlags[2]");
 }
 
 void
@@ -225,6 +189,9 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
     else if (pHalInfo->dwSize == sizeof(DD_HALINFO))
     {
         int t;
+        UINT flag;
+        INT count=0;
+        LPD3DNTHAL_GLOBALDRIVERDATA lpD3DGlobalDriverData = pHalInfo->lpD3DGlobalDriverData;
 
         printf("DD_HALINFO Version NT 2000/XP/2003 found \n");
         printf(" pHalInfo->dwSize                                  : 0x%08lx\n",(long)pHalInfo->dwSize);
@@ -253,10 +220,129 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
         printf(" pHalInfo->vmiData->pvPrimary                      : 0x%08lx\n",(long)pHalInfo->vmiData.pvPrimary);
 
         printf(" pHalInfo->ddCaps.dwSize                           : 0x%08lx\n",pHalInfo->ddCaps.dwSize);
-        printf(" pHalInfo->ddCaps.dwCaps                           : 0x%08lx\n",pHalInfo->ddCaps.dwCaps);
-        printf(" pHalInfo->ddCaps.dwCaps2                          : 0x%08lx\n",pHalInfo->ddCaps.dwCaps2);
-        printf(" pHalInfo->ddCaps.dwCKeyCaps                       : 0x%08lx\n",pHalInfo->ddCaps.dwCKeyCaps);
-        printf(" pHalInfo->ddCaps.dwFXCaps                         : 0x%08lx\n",pHalInfo->ddCaps.dwFXCaps);
+        printf(" 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");
+/* FIXME */
+//        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");
+
+        printf(" 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");
+/* FIXME */
+//        checkflag(flagDDCAPS2_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");
+
+        printf(" 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");
+
+        printf(" 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");
+
         printf(" pHalInfo->ddCaps.dwFXAlphaCaps                    : 0x%08lx\n",pHalInfo->ddCaps.dwFXAlphaCaps);
         printf(" pHalInfo->ddCaps.dwPalCaps                        : 0x%08lx\n",pHalInfo->ddCaps.dwPalCaps);
         printf(" pHalInfo->ddCaps.dwSVCaps                         : 0x%08lx\n",pHalInfo->ddCaps.dwSVCaps);
@@ -281,7 +367,41 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
         {
         printf(" pHalInfo->ddCaps.dwRops[0x%04x]                   : 0x%08lx\n",t,pHalInfo->ddCaps.dwRops[t]);
         }
-        printf(" pHalInfo->ddCaps.ddsCaps.dwCaps                   : 0x%08lx\n",pHalInfo->ddCaps.ddsCaps.dwCaps);
+        printf(" 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");
+
+
         printf(" pHalInfo->ddCaps.dwMinOverlayStretch              : 0x%08lx\n",pHalInfo->ddCaps.dwMinOverlayStretch);
         printf(" pHalInfo->ddCaps.dwMaxOverlayStretch              : 0x%08lx\n",pHalInfo->ddCaps.dwMaxOverlayStretch);
         printf(" pHalInfo->ddCaps.dwMinLiveVideoStretch            : 0x%08lx\n",pHalInfo->ddCaps.dwMinLiveVideoStretch);
@@ -313,10 +433,16 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
         printf(" pHalInfo->ddCaps.dwSSBRops[0x%04x]                : 0x%08lx\n",t,pHalInfo->ddCaps.dwSSBRops[t]);
         }
 
-
-
         printf(" pHalInfo->GetDriverInfo                           : 0x%08lx\n",(long)pHalInfo->GetDriverInfo);
-        printf(" pHalInfo->dwFlags                                 : 0x%08lx\n",(long)pHalInfo->dwFlags);
+        printf(" 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");
 
         printf(" pHalInfo->lpD3DGlobalDriverData                   : 0x%08lx\n",(long)pHalInfo->lpD3DGlobalDriverData);
         printf(" pHalInfo->lpD3DHALCallbacks                       : 0x%08lx\n",(long)pHalInfo->lpD3DHALCallbacks);
@@ -335,3 +461,5 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
     }
 }
 
+
+
index 487bc81..f8fffa1 100644 (file)
@@ -38,6 +38,12 @@ int main(int argc, char **argv)
 
     test_NtGdiDdQueryDirectDrawObject(hDirectDrawLocal);
 
+    test_NtGdiDdGetScanLine(hDirectDrawLocal);
+
+    test_NtGdiDdWaitForVerticalBlank(hDirectDrawLocal);
+
+    test_NtGdiDdCanCreateSurface(hDirectDrawLocal);
+
     test_NtGdiDdDeleteDirectDrawObject(hDirectDrawLocal);
     return 0;
 }
index aeae537..14d5356 100644 (file)
@@ -3,17 +3,16 @@
 HANDLE test_NtGdiDdCreateDirectDrawObject();
 void test_NtGdiDdDeleteDirectDrawObject(HANDLE hDirectDrawLocal);
 void test_NtGdiDdQueryDirectDrawObject( HANDLE hDirectDrawLocal);
+void test_NtGdiDdGetScanLine(HANDLE hDirectDrawLocal);
+void test_NtGdiDdWaitForVerticalBlank(HANDLE hDirectDrawLocal);
+void test_NtGdiDdCanCreateSurface(HANDLE hDirectDrawLocal);
+
 
 void dump_halinfo(DD_HALINFO *pHalInfo, char *text);
 void dump_CallBackFlags(DWORD *pCallBackFlags, char *text);
 
 
 
-
-
-
-
-
 #define testing_eq(input,value,counter,text) \
         if (input == value) \
         { \
index b923d19..c3977c4 100644 (file)
@@ -12,5 +12,8 @@
        <file>NtGdiDdCreateDirectDrawObject.c</file>
        <file>NtGdiDdDeleteDirectDrawObject.c</file>
        <file>NtGdiDdQueryDirectDrawObject.c</file>
+       <file>NtGdiDdGetScanLine.c</file>
+       <file>NtGdiDdWaitForVerticalBlank.c</file>
+       <file>NtGdiDdCanCreateSurface.c</file>
        <file>dump.c</file>     
 </module>
\ No newline at end of file