update the dump output, so it list more flags with names.
authorMagnus Olsen <magnus@greatlord.com>
Sun, 13 Apr 2008 08:50:20 +0000 (08:50 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sun, 13 Apr 2008 08:50:20 +0000 (08:50 +0000)
it also let me found undocumented flags more easy.

svn path=/trunk/; revision=32938

rostests/dxtest/win32kdxtest/dump.c

index f914b09..7ff14ce 100644 (file)
@@ -349,7 +349,16 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
 
         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);
+
+        printf(" 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");
+
         printf(" pHalInfo->ddCaps.dwAlphaBltConstBitDepths         : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaBltConstBitDepths);
         printf(" pHalInfo->ddCaps.dwAlphaBltPixelBitDepths         : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaBltPixelBitDepths);
         printf(" pHalInfo->ddCaps.dwAlphaBltSurfaceBitDepths       : 0x%08lx\n",pHalInfo->ddCaps.dwAlphaBltSurfaceBitDepths);
@@ -405,7 +414,6 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
         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);
@@ -415,14 +423,88 @@ dump_halinfo(DD_HALINFO *pHalInfo, char *text)
         printf(" pHalInfo->ddCaps.dwReserved1                      : 0x%08lx\n",pHalInfo->ddCaps.dwReserved1);
         printf(" pHalInfo->ddCaps.dwReserved2                      : 0x%08lx\n",pHalInfo->ddCaps.dwReserved2);
         printf(" pHalInfo->ddCaps.dwReserved3                      : 0x%08lx\n",pHalInfo->ddCaps.dwReserved3);
-        printf(" pHalInfo->ddCaps.dwSVBCaps                        : 0x%08lx\n",pHalInfo->ddCaps.dwSVBCaps);
+        
+        printf(" 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");
+
         printf(" pHalInfo->ddCaps.dwSVBCKeyCaps                    : 0x%08lx\n",pHalInfo->ddCaps.dwSVBCKeyCaps);
         printf(" pHalInfo->ddCaps.dwSVBFXCaps                      : 0x%08lx\n",pHalInfo->ddCaps.dwSVBFXCaps);
         for (t=0;t<DD_ROP_SPACE;t++)
         {
         printf(" pHalInfo->ddCaps.dwSVBRops[0x%04x]                : 0x%08lx\n",t,pHalInfo->ddCaps.dwSVBRops[t]);
         }
-        printf(" pHalInfo->ddCaps.dwVSBCaps                        : 0x%08lx\n",pHalInfo->ddCaps.dwVSBCaps);
+
+        printf(" 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");
+
         printf(" pHalInfo->ddCaps.dwVSBCKeyCaps                    : 0x%08lx\n",pHalInfo->ddCaps.dwVSBCKeyCaps);
         printf(" pHalInfo->ddCaps.dwVSBFXCaps                      : 0x%08lx\n",pHalInfo->ddCaps.dwVSBFXCaps);
         for (t=0;t<DD_ROP_SPACE;t++)
@@ -659,15 +741,156 @@ dump_D3dDriverData(D3DNTHAL_GLOBALDRIVERDATA *puD3dDriverData, char *text)
                 checkflag(flag,D3DPRASTERCAPS_ZTEST,"D3DPRASTERCAPS_ZTEST");               
                 endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwRasterCaps"); 
 
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwZCmpCaps                 : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwZCmpCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwSrcBlendCaps             : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwSrcBlendCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwDestBlendCaps            : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwDestBlendCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwAlphaCmpCaps             : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwAlphaCmpCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwShadeCaps                : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwShadeCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureCaps              : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwTextureCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureFilterCaps        : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwTextureFilterCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureBlendCaps         : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwTextureBlendCaps);
-                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureAddressCaps       : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwTextureAddressCaps);
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwZCmpCaps                 : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwZCmpCaps;
+                checkflag(flag,D3DPCMPCAPS_ALWAYS,"D3DPCMPCAPS_ALWAYS");
+                checkflag(flag,D3DPCMPCAPS_EQUAL,"D3DPCMPCAPS_EQUAL");
+                checkflag(flag,D3DPCMPCAPS_GREATER,"D3DPCMPCAPS_GREATER");
+                checkflag(flag,D3DPCMPCAPS_GREATEREQUAL,"D3DPCMPCAPS_GREATEREQUAL");
+                checkflag(flag,D3DPCMPCAPS_LESS,"D3DPCMPCAPS_LESS");
+                checkflag(flag,D3DPCMPCAPS_LESSEQUAL,"D3DPCMPCAPS_LESSEQUAL");
+                checkflag(flag,D3DPCMPCAPS_NEVER,"D3DPCMPCAPS_NEVER");
+                checkflag(flag,D3DPCMPCAPS_NOTEQUAL,"D3DPCMPCAPS_NOTEQUAL");               
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwZCmpCaps "); 
+                               
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwSrcBlendCaps             : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwSrcBlendCaps;
+                checkflag(flag,D3DPBLENDCAPS_BOTHINVSRCALPHA,"D3DPBLENDCAPS_BOTHINVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_BOTHSRCALPHA,"D3DPBLENDCAPS_BOTHSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTALPHA,"D3DPBLENDCAPS_DESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTCOLOR,"D3DPBLENDCAPS_DESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTALPHA,"D3DPBLENDCAPS_INVDESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTCOLOR,"D3DPBLENDCAPS_INVDESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCALPHA,"D3DPBLENDCAPS_INVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCCOLOR,"D3DPBLENDCAPS_INVSRCCOLOR");   
+                checkflag(flag,D3DPBLENDCAPS_ONE,"D3DPBLENDCAPS_ONE");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHA,"D3DPBLENDCAPS_SRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHASAT,"D3DPBLENDCAPS_SRCALPHASAT");
+                checkflag(flag,D3DPBLENDCAPS_SRCCOLOR,"D3DPBLENDCAPS_SRCCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_ZERO,"D3DPBLENDCAPS_ZERO");            
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwSrcBlendCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwDestBlendCaps            : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwDestBlendCaps;
+                checkflag(flag,D3DPBLENDCAPS_BOTHINVSRCALPHA,"D3DPBLENDCAPS_BOTHINVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_BOTHSRCALPHA,"D3DPBLENDCAPS_BOTHSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTALPHA,"D3DPBLENDCAPS_DESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTCOLOR,"D3DPBLENDCAPS_DESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTALPHA,"D3DPBLENDCAPS_INVDESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTCOLOR,"D3DPBLENDCAPS_INVDESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCALPHA,"D3DPBLENDCAPS_INVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCCOLOR,"D3DPBLENDCAPS_INVSRCCOLOR");   
+                checkflag(flag,D3DPBLENDCAPS_ONE,"D3DPBLENDCAPS_ONE");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHA,"D3DPBLENDCAPS_SRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHASAT,"D3DPBLENDCAPS_SRCALPHASAT");
+                checkflag(flag,D3DPBLENDCAPS_SRCCOLOR,"D3DPBLENDCAPS_SRCCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_ZERO,"D3DPBLENDCAPS_ZERO");            
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwDestBlendCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwAlphaCmpCaps             : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwAlphaCmpCaps;
+                checkflag(flag,D3DPCMPCAPS_ALWAYS,"D3DPCMPCAPS_ALWAYS");
+                checkflag(flag,D3DPCMPCAPS_EQUAL,"D3DPCMPCAPS_EQUAL");
+                checkflag(flag,D3DPCMPCAPS_GREATER,"D3DPCMPCAPS_GREATER");
+                checkflag(flag,D3DPCMPCAPS_GREATEREQUAL,"D3DPCMPCAPS_GREATEREQUAL");
+                checkflag(flag,D3DPCMPCAPS_LESS,"D3DPCMPCAPS_LESS");
+                checkflag(flag,D3DPCMPCAPS_LESSEQUAL,"D3DPCMPCAPS_LESSEQUAL");
+                checkflag(flag,D3DPCMPCAPS_NEVER,"D3DPCMPCAPS_NEVER");
+                checkflag(flag,D3DPCMPCAPS_NOTEQUAL,"D3DPCMPCAPS_NOTEQUAL");               
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwAlphaCmpCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwShadeCaps                : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwShadeCaps;
+                checkflag(flag,D3DPSHADECAPS_ALPHAFLATBLEND,"D3DPSHADECAPS_ALPHAFLATBLEND");
+                checkflag(flag,D3DPSHADECAPS_ALPHAFLATSTIPPLED,"D3DPSHADECAPS_ALPHAFLATSTIPPLED");
+                checkflag(flag,D3DPSHADECAPS_ALPHAGOURAUDBLEND,"D3DPSHADECAPS_ALPHAGOURAUDBLEND");
+                checkflag(flag,D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED,"D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED");
+                checkflag(flag,D3DPSHADECAPS_ALPHAPHONGBLEND,"D3DPSHADECAPS_ALPHAPHONGBLEND");
+                checkflag(flag,D3DPSHADECAPS_ALPHAPHONGSTIPPLED,"D3DPSHADECAPS_ALPHAPHONGSTIPPLED");
+                checkflag(flag,D3DPSHADECAPS_COLORFLATMONO,"D3DPSHADECAPS_COLORFLATMONO");
+                checkflag(flag,D3DPSHADECAPS_COLORFLATRGB,"D3DPSHADECAPS_COLORFLATRGB");       
+                checkflag(flag,D3DPSHADECAPS_COLORGOURAUDMONO,"D3DPSHADECAPS_COLORGOURAUDMONO");
+                checkflag(flag,D3DPSHADECAPS_COLORGOURAUDRGB,"D3DPSHADECAPS_COLORGOURAUDRGB");
+                checkflag(flag,D3DPSHADECAPS_COLORPHONGMONO,"D3DPSHADECAPS_COLORPHONGMONO");
+                checkflag(flag,D3DPSHADECAPS_COLORPHONGRGB,"D3DPSHADECAPS_COLORPHONGRGB");
+                checkflag(flag,D3DPSHADECAPS_FOGFLAT,"D3DPSHADECAPS_FOGFLAT");
+                checkflag(flag,D3DPSHADECAPS_FOGGOURAUD,"D3DPSHADECAPS_FOGGOURAUD");
+                checkflag(flag,D3DPSHADECAPS_FOGPHONG,"D3DPSHADECAPS_FOGPHONG");
+                checkflag(flag,D3DPSHADECAPS_SPECULARFLATMONO,"D3DPSHADECAPS_SPECULARFLATMONO"); 
+                checkflag(flag,D3DPSHADECAPS_SPECULARFLATRGB,"D3DPSHADECAPS_SPECULARFLATRGB"); 
+                checkflag(flag,D3DPSHADECAPS_SPECULARGOURAUDMONO,"D3DPSHADECAPS_SPECULARGOURAUDMONO");
+                checkflag(flag,D3DPSHADECAPS_SPECULARGOURAUDRGB,"D3DPSHADECAPS_SPECULARGOURAUDRGB");
+                checkflag(flag,D3DPSHADECAPS_SPECULARPHONGMONO,"D3DPSHADECAPS_SPECULARPHONGMONO"); 
+                checkflag(flag,D3DPSHADECAPS_SPECULARPHONGRGB,"D3DPSHADECAPS_SPECULARPHONGRGB"); 
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwShadeCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureCaps              : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwTextureCaps;
+                checkflag(flag,D3DPTEXTURECAPS_ALPHA,"D3DPTEXTURECAPS_ALPHA");
+                checkflag(flag,D3DPTEXTURECAPS_ALPHAPALETTE,"D3DPTEXTURECAPS_ALPHAPALETTE");
+                checkflag(flag,D3DPTEXTURECAPS_BORDER,"D3DPTEXTURECAPS_BORDER");
+                checkflag(flag,D3DPTEXTURECAPS_COLORKEYBLEND,"D3DPTEXTURECAPS_COLORKEYBLEND");
+                checkflag(flag,D3DPTEXTURECAPS_CUBEMAP,"D3DPTEXTURECAPS_CUBEMAP");
+                checkflag(flag,D3DPTEXTURECAPS_PERSPECTIVE,"D3DPTEXTURECAPS_PERSPECTIVE");
+                checkflag(flag,D3DPTEXTURECAPS_POW2,"D3DPTEXTURECAPS_POW2");
+                checkflag(flag,D3DPTEXTURECAPS_PROJECTED,"D3DPTEXTURECAPS_PROJECTED");       
+                checkflag(flag,D3DPTEXTURECAPS_NONPOW2CONDITIONAL,"D3DPTEXTURECAPS_NONPOW2CONDITIONAL");
+                checkflag(flag,D3DPTEXTURECAPS_SQUAREONLY,"D3DPTEXTURECAPS_SQUAREONLY");
+                // not in ddk or dxsdk but it is in msdn checkflag(flag,D3DPTEXTURECAPS_TEXREPEATNOTSCALESBYSIZE,"D3DPTEXTURECAPS_TEXREPEATNOTSCALESBYSIZE");
+                // not in ddk or dxsdk but it is in msdn checkflag(flag,D3DPTEXTURECAPS_TEXTURETRANSFORM,"D3DPTEXTURECAPS_TEXTURETRANSFORM");
+                checkflag(flag,D3DPTEXTURECAPS_TRANSPARENCY,"D3DPTEXTURECAPS_TRANSPARENCY");
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwTextureCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureFilterCaps        : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwTextureFilterCaps;
+                checkflag(flag,D3DPTFILTERCAPS_LINEAR,"D3DPTFILTERCAPS_LINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_LINEARMIPLINEAR,"D3DPTFILTERCAPS_LINEARMIPLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_LINEARMIPNEAREST,"D3DPTFILTERCAPS_LINEARMIPNEAREST");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFAFLATCUBIC,"D3DPTFILTERCAPS_MAGFAFLATCUBIC");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFANISOTROPIC,"D3DPTFILTERCAPS_MAGFANISOTROPIC");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC,"D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFLINEAR,"D3DPTFILTERCAPS_MAGFLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFPOINT,"D3DPTFILTERCAPS_MAGFPOINT");       
+                checkflag(flag,D3DPTFILTERCAPS_MINFANISOTROPIC,"D3DPTFILTERCAPS_MINFANISOTROPIC");
+                checkflag(flag,D3DPTFILTERCAPS_MINFLINEAR,"D3DPTFILTERCAPS_MINFLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MINFPOINT,"D3DPTFILTERCAPS_MINFPOINT");
+                checkflag(flag,D3DPTFILTERCAPS_MIPFLINEAR,"D3DPTFILTERCAPS_MIPFLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MIPFPOINT,"D3DPTFILTERCAPS_MIPFPOINT");
+                checkflag(flag,D3DPTFILTERCAPS_MIPLINEAR,"D3DPTFILTERCAPS_MIPLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MIPNEAREST,"D3DPTFILTERCAPS_MIPNEAREST");
+                checkflag(flag,D3DPTFILTERCAPS_NEAREST,"D3DPTFILTERCAPS_NEAREST");
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwTextureFilterCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureBlendCaps         : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwTextureBlendCaps;
+                checkflag(flag,D3DPTBLENDCAPS_ADD,"D3DPTBLENDCAPS_ADD");
+                checkflag(flag,D3DPTBLENDCAPS_COPY,"D3DPTBLENDCAPS_COPY");
+                checkflag(flag,D3DPTBLENDCAPS_DECAL,"D3DPTBLENDCAPS_DECAL");
+                checkflag(flag,D3DPTBLENDCAPS_DECALALPHA,"D3DPTBLENDCAPS_DECALALPHA");
+                checkflag(flag,D3DPTBLENDCAPS_DECALMASK,"D3DPTBLENDCAPS_DECALMASK");
+                checkflag(flag,D3DPTBLENDCAPS_MODULATE,"D3DPTBLENDCAPS_MODULATE");
+                checkflag(flag,D3DPTBLENDCAPS_MODULATEALPHA,"D3DPTBLENDCAPS_MODULATEALPHA");
+                checkflag(flag,D3DPTBLENDCAPS_MODULATEMASK,"D3DPTBLENDCAPS_MODULATEMASK");       
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwTextureBlendCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwTextureAddressCaps       : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcLineCaps.dwTextureAddressCaps;
+                checkflag(flag,D3DPTADDRESSCAPS_BORDER,"D3DPTADDRESSCAPS_BORDER");
+                checkflag(flag,D3DPTADDRESSCAPS_CLAMP,"D3DPTADDRESSCAPS_CLAMP");
+                checkflag(flag,D3DPTADDRESSCAPS_INDEPENDENTUV,"D3DPTADDRESSCAPS_INDEPENDENTUV");
+                checkflag(flag,D3DPTADDRESSCAPS_MIRROR,"D3DPTADDRESSCAPS_MIRROR");
+                checkflag(flag,D3DPTADDRESSCAPS_WRAP,"D3DPTADDRESSCAPS_WRAP");                                
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcLineCaps.dwTextureAddressCaps "); 
+
                 printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwStippleWidth             : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwStippleWidth);
                 printf(" puD3dDriverData->hwCaps.dpcLineCaps.dwStippleHeight            : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcLineCaps.dwStippleHeight);
             }
@@ -679,17 +902,195 @@ dump_D3dDriverData(D3DNTHAL_GLOBALDRIVERDATA *puD3dDriverData, char *text)
             if (puD3dDriverData->hwCaps.dpcTriCaps.dwSize == sizeof(D3DPRIMCAPS))
             {
                 printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwSize                      : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwSize);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwMiscCaps                  : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwMiscCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwRasterCaps                : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwRasterCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwZCmpCaps                  : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwZCmpCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwSrcBlendCaps              : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwSrcBlendCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwDestBlendCaps             : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwDestBlendCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwAlphaCmpCaps              : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwAlphaCmpCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwShadeCaps                 : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwShadeCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureCaps               : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwTextureCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureFilterCaps         : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwTextureFilterCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureBlendCaps          : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwTextureBlendCaps);
-                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureAddressCaps        : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwTextureAddressCaps);
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwMiscCaps                  : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwMiscCaps;
+                checkflag(flag,D3DPMISCCAPS_CONFORMANT,"D3DPMISCCAPS_CONFORMANT");
+                checkflag(flag,D3DPMISCCAPS_CULLCCW,"D3DPMISCCAPS_CULLCCW");
+                checkflag(flag,D3DPMISCCAPS_CULLCW,"D3DPMISCCAPS_CULLCW");
+                checkflag(flag,D3DPMISCCAPS_CULLNONE,"D3DPMISCCAPS_CULLNONE");
+                checkflag(flag,D3DPMISCCAPS_LINEPATTERNREP,"D3DPMISCCAPS_LINEPATTERNREP");
+                checkflag(flag,D3DPMISCCAPS_MASKPLANES,"D3DPMISCCAPS_MASKPLANES");
+                checkflag(flag,D3DPMISCCAPS_MASKZ,"D3DPMISCCAPS_MASKZ");
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwMiscCaps"); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwRasterCaps                : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwRasterCaps;
+                checkflag(flag,D3DPRASTERCAPS_ANISOTROPY,"D3DPRASTERCAPS_ANISOTROPY");
+                checkflag(flag,D3DPRASTERCAPS_ANTIALIASEDGES,"D3DPRASTERCAPS_ANTIALIASEDGES");
+                checkflag(flag,D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT,"D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT");
+                checkflag(flag,D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT,"D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT");
+                checkflag(flag,D3DPRASTERCAPS_DITHER,"D3DPRASTERCAPS_DITHER");
+                checkflag(flag,D3DPRASTERCAPS_FOGRANGE,"D3DPRASTERCAPS_FOGRANGE");
+                checkflag(flag,D3DPRASTERCAPS_FOGTABLE,"D3DPRASTERCAPS_FOGTABLE");
+                checkflag(flag,D3DPRASTERCAPS_FOGVERTEX,"D3DPRASTERCAPS_FOGVERTEX");
+                checkflag(flag,D3DPRASTERCAPS_PAT,"D3DPRASTERCAPS_PAT");
+                checkflag(flag,D3DPRASTERCAPS_ROP2,"D3DPRASTERCAPS_ROP2");
+                checkflag(flag,D3DPRASTERCAPS_STIPPLE,"D3DPRASTERCAPS_STIPPLE");
+                checkflag(flag,D3DPRASTERCAPS_SUBPIXEL,"D3DPRASTERCAPS_SUBPIXEL");
+                checkflag(flag,D3DPRASTERCAPS_SUBPIXELX,"D3DPRASTERCAPS_SUBPIXELX");
+                checkflag(flag,D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT,"D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT");
+                checkflag(flag,D3DPRASTERCAPS_WBUFFER,"D3DPRASTERCAPS_WBUFFER");
+                checkflag(flag,D3DPRASTERCAPS_WFOG,"D3DPRASTERCAPS_WFOG");
+                checkflag(flag,D3DPRASTERCAPS_XOR,"D3DPRASTERCAPS_XOR");
+                checkflag(flag,D3DPRASTERCAPS_ZBIAS,"D3DPRASTERCAPS_ZBIAS");
+                checkflag(flag,D3DPRASTERCAPS_ZBUFFERLESSHSR,"D3DPRASTERCAPS_ZBUFFERLESSHSR");
+                checkflag(flag,D3DPRASTERCAPS_ZFOG,"D3DPRASTERCAPS_ZFOG");
+                checkflag(flag,D3DPRASTERCAPS_ZTEST,"D3DPRASTERCAPS_ZTEST");               
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwRasterCaps"); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwZCmpCaps                  : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwZCmpCaps;
+                checkflag(flag,D3DPCMPCAPS_ALWAYS,"D3DPCMPCAPS_ALWAYS");
+                checkflag(flag,D3DPCMPCAPS_EQUAL,"D3DPCMPCAPS_EQUAL");
+                checkflag(flag,D3DPCMPCAPS_GREATER,"D3DPCMPCAPS_GREATER");
+                checkflag(flag,D3DPCMPCAPS_GREATEREQUAL,"D3DPCMPCAPS_GREATEREQUAL");
+                checkflag(flag,D3DPCMPCAPS_LESS,"D3DPCMPCAPS_LESS");
+                checkflag(flag,D3DPCMPCAPS_LESSEQUAL,"D3DPCMPCAPS_LESSEQUAL");
+                checkflag(flag,D3DPCMPCAPS_NEVER,"D3DPCMPCAPS_NEVER");
+                checkflag(flag,D3DPCMPCAPS_NOTEQUAL,"D3DPCMPCAPS_NOTEQUAL");               
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwZCmpCaps "); 
+                               
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwSrcBlendCaps              : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwSrcBlendCaps;
+                checkflag(flag,D3DPBLENDCAPS_BOTHINVSRCALPHA,"D3DPBLENDCAPS_BOTHINVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_BOTHSRCALPHA,"D3DPBLENDCAPS_BOTHSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTALPHA,"D3DPBLENDCAPS_DESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTCOLOR,"D3DPBLENDCAPS_DESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTALPHA,"D3DPBLENDCAPS_INVDESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTCOLOR,"D3DPBLENDCAPS_INVDESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCALPHA,"D3DPBLENDCAPS_INVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCCOLOR,"D3DPBLENDCAPS_INVSRCCOLOR");   
+                checkflag(flag,D3DPBLENDCAPS_ONE,"D3DPBLENDCAPS_ONE");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHA,"D3DPBLENDCAPS_SRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHASAT,"D3DPBLENDCAPS_SRCALPHASAT");
+                checkflag(flag,D3DPBLENDCAPS_SRCCOLOR,"D3DPBLENDCAPS_SRCCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_ZERO,"D3DPBLENDCAPS_ZERO");            
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwSrcBlendCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwDestBlendCaps             : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwDestBlendCaps;
+                checkflag(flag,D3DPBLENDCAPS_BOTHINVSRCALPHA,"D3DPBLENDCAPS_BOTHINVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_BOTHSRCALPHA,"D3DPBLENDCAPS_BOTHSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTALPHA,"D3DPBLENDCAPS_DESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_DESTCOLOR,"D3DPBLENDCAPS_DESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTALPHA,"D3DPBLENDCAPS_INVDESTALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVDESTCOLOR,"D3DPBLENDCAPS_INVDESTCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCALPHA,"D3DPBLENDCAPS_INVSRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_INVSRCCOLOR,"D3DPBLENDCAPS_INVSRCCOLOR");   
+                checkflag(flag,D3DPBLENDCAPS_ONE,"D3DPBLENDCAPS_ONE");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHA,"D3DPBLENDCAPS_SRCALPHA");
+                checkflag(flag,D3DPBLENDCAPS_SRCALPHASAT,"D3DPBLENDCAPS_SRCALPHASAT");
+                checkflag(flag,D3DPBLENDCAPS_SRCCOLOR,"D3DPBLENDCAPS_SRCCOLOR");
+                checkflag(flag,D3DPBLENDCAPS_ZERO,"D3DPBLENDCAPS_ZERO");            
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwDestBlendCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwAlphaCmpCaps              : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwAlphaCmpCaps;
+                checkflag(flag,D3DPCMPCAPS_ALWAYS,"D3DPCMPCAPS_ALWAYS");
+                checkflag(flag,D3DPCMPCAPS_EQUAL,"D3DPCMPCAPS_EQUAL");
+                checkflag(flag,D3DPCMPCAPS_GREATER,"D3DPCMPCAPS_GREATER");
+                checkflag(flag,D3DPCMPCAPS_GREATEREQUAL,"D3DPCMPCAPS_GREATEREQUAL");
+                checkflag(flag,D3DPCMPCAPS_LESS,"D3DPCMPCAPS_LESS");
+                checkflag(flag,D3DPCMPCAPS_LESSEQUAL,"D3DPCMPCAPS_LESSEQUAL");
+                checkflag(flag,D3DPCMPCAPS_NEVER,"D3DPCMPCAPS_NEVER");
+                checkflag(flag,D3DPCMPCAPS_NOTEQUAL,"D3DPCMPCAPS_NOTEQUAL");               
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwAlphaCmpCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwShadeCaps                 : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwShadeCaps;
+                checkflag(flag,D3DPSHADECAPS_ALPHAFLATBLEND,"D3DPSHADECAPS_ALPHAFLATBLEND");
+                checkflag(flag,D3DPSHADECAPS_ALPHAFLATSTIPPLED,"D3DPSHADECAPS_ALPHAFLATSTIPPLED");
+                checkflag(flag,D3DPSHADECAPS_ALPHAGOURAUDBLEND,"D3DPSHADECAPS_ALPHAGOURAUDBLEND");
+                checkflag(flag,D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED,"D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED");
+                checkflag(flag,D3DPSHADECAPS_ALPHAPHONGBLEND,"D3DPSHADECAPS_ALPHAPHONGBLEND");
+                checkflag(flag,D3DPSHADECAPS_ALPHAPHONGSTIPPLED,"D3DPSHADECAPS_ALPHAPHONGSTIPPLED");
+                checkflag(flag,D3DPSHADECAPS_COLORFLATMONO,"D3DPSHADECAPS_COLORFLATMONO");
+                checkflag(flag,D3DPSHADECAPS_COLORFLATRGB,"D3DPSHADECAPS_COLORFLATRGB");       
+                checkflag(flag,D3DPSHADECAPS_COLORGOURAUDMONO,"D3DPSHADECAPS_COLORGOURAUDMONO");
+                checkflag(flag,D3DPSHADECAPS_COLORGOURAUDRGB,"D3DPSHADECAPS_COLORGOURAUDRGB");
+                checkflag(flag,D3DPSHADECAPS_COLORPHONGMONO,"D3DPSHADECAPS_COLORPHONGMONO");
+                checkflag(flag,D3DPSHADECAPS_COLORPHONGRGB,"D3DPSHADECAPS_COLORPHONGRGB");
+                checkflag(flag,D3DPSHADECAPS_FOGFLAT,"D3DPSHADECAPS_FOGFLAT");
+                checkflag(flag,D3DPSHADECAPS_FOGGOURAUD,"D3DPSHADECAPS_FOGGOURAUD");
+                checkflag(flag,D3DPSHADECAPS_FOGPHONG,"D3DPSHADECAPS_FOGPHONG");
+                checkflag(flag,D3DPSHADECAPS_SPECULARFLATMONO,"D3DPSHADECAPS_SPECULARFLATMONO"); 
+                checkflag(flag,D3DPSHADECAPS_SPECULARFLATRGB,"D3DPSHADECAPS_SPECULARFLATRGB"); 
+                checkflag(flag,D3DPSHADECAPS_SPECULARGOURAUDMONO,"D3DPSHADECAPS_SPECULARGOURAUDMONO");
+                checkflag(flag,D3DPSHADECAPS_SPECULARGOURAUDRGB,"D3DPSHADECAPS_SPECULARGOURAUDRGB");
+                checkflag(flag,D3DPSHADECAPS_SPECULARPHONGMONO,"D3DPSHADECAPS_SPECULARPHONGMONO"); 
+                checkflag(flag,D3DPSHADECAPS_SPECULARPHONGRGB,"D3DPSHADECAPS_SPECULARPHONGRGB"); 
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwShadeCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureCaps              : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwTextureCaps;
+                checkflag(flag,D3DPTEXTURECAPS_ALPHA,"D3DPTEXTURECAPS_ALPHA");
+                checkflag(flag,D3DPTEXTURECAPS_ALPHAPALETTE,"D3DPTEXTURECAPS_ALPHAPALETTE");
+                checkflag(flag,D3DPTEXTURECAPS_BORDER,"D3DPTEXTURECAPS_BORDER");
+                checkflag(flag,D3DPTEXTURECAPS_COLORKEYBLEND,"D3DPTEXTURECAPS_COLORKEYBLEND");
+                checkflag(flag,D3DPTEXTURECAPS_CUBEMAP,"D3DPTEXTURECAPS_CUBEMAP");
+                checkflag(flag,D3DPTEXTURECAPS_PERSPECTIVE,"D3DPTEXTURECAPS_PERSPECTIVE");
+                checkflag(flag,D3DPTEXTURECAPS_POW2,"D3DPTEXTURECAPS_POW2");
+                checkflag(flag,D3DPTEXTURECAPS_PROJECTED,"D3DPTEXTURECAPS_PROJECTED");       
+                checkflag(flag,D3DPTEXTURECAPS_NONPOW2CONDITIONAL,"D3DPTEXTURECAPS_NONPOW2CONDITIONAL");
+                checkflag(flag,D3DPTEXTURECAPS_SQUAREONLY,"D3DPTEXTURECAPS_SQUAREONLY");
+                //not in ddk or dxsdk but it is in msdn  checkflag(flag,D3DPTEXTURECAPS_TEXREPEATNOTSCALESBYSIZE,"D3DPTEXTURECAPS_TEXREPEATNOTSCALESBYSIZE");
+                //not in ddk or dxsdk but it is in msdn  checkflag(flag,D3DPTEXTURECAPS_TEXTURETRANSFORM,"D3DPTEXTURECAPS_TEXTURETRANSFORM");
+                checkflag(flag,D3DPTEXTURECAPS_TRANSPARENCY,"D3DPTEXTURECAPS_TRANSPARENCY");
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwTextureCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureFilterCaps         : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwTextureFilterCaps;
+                checkflag(flag,D3DPTFILTERCAPS_LINEAR,"D3DPTFILTERCAPS_LINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_LINEARMIPLINEAR,"D3DPTFILTERCAPS_LINEARMIPLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_LINEARMIPNEAREST,"D3DPTFILTERCAPS_LINEARMIPNEAREST");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFAFLATCUBIC,"D3DPTFILTERCAPS_MAGFAFLATCUBIC");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFANISOTROPIC,"D3DPTFILTERCAPS_MAGFANISOTROPIC");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC,"D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFLINEAR,"D3DPTFILTERCAPS_MAGFLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MAGFPOINT,"D3DPTFILTERCAPS_MAGFPOINT");       
+                checkflag(flag,D3DPTFILTERCAPS_MINFANISOTROPIC,"D3DPTFILTERCAPS_MINFANISOTROPIC");
+                checkflag(flag,D3DPTFILTERCAPS_MINFLINEAR,"D3DPTFILTERCAPS_MINFLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MINFPOINT,"D3DPTFILTERCAPS_MINFPOINT");
+                checkflag(flag,D3DPTFILTERCAPS_MIPFLINEAR,"D3DPTFILTERCAPS_MIPFLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MIPFPOINT,"D3DPTFILTERCAPS_MIPFPOINT");
+                checkflag(flag,D3DPTFILTERCAPS_MIPLINEAR,"D3DPTFILTERCAPS_MIPLINEAR");
+                checkflag(flag,D3DPTFILTERCAPS_MIPNEAREST,"D3DPTFILTERCAPS_MIPNEAREST");
+                checkflag(flag,D3DPTFILTERCAPS_NEAREST,"D3DPTFILTERCAPS_NEAREST");
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwTextureFilterCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureBlendCaps          : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwTextureBlendCaps;
+                checkflag(flag,D3DPTBLENDCAPS_ADD,"D3DPTBLENDCAPS_ADD");
+                checkflag(flag,D3DPTBLENDCAPS_COPY,"D3DPTBLENDCAPS_COPY");
+                checkflag(flag,D3DPTBLENDCAPS_DECAL,"D3DPTBLENDCAPS_DECAL");
+                checkflag(flag,D3DPTBLENDCAPS_DECALALPHA,"D3DPTBLENDCAPS_DECALALPHA");
+                checkflag(flag,D3DPTBLENDCAPS_DECALMASK,"D3DPTBLENDCAPS_DECALMASK");
+                checkflag(flag,D3DPTBLENDCAPS_MODULATE,"D3DPTBLENDCAPS_MODULATE");
+                checkflag(flag,D3DPTBLENDCAPS_MODULATEALPHA,"D3DPTBLENDCAPS_MODULATEALPHA");
+                checkflag(flag,D3DPTBLENDCAPS_MODULATEMASK,"D3DPTBLENDCAPS_MODULATEMASK");       
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwTextureBlendCaps "); 
+
+                printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwTextureAddressCaps        : ");
+                count = 0;
+                flag = puD3dDriverData->hwCaps.dpcTriCaps.dwTextureAddressCaps;
+                checkflag(flag,D3DPTADDRESSCAPS_BORDER,"D3DPTADDRESSCAPS_BORDER");
+                checkflag(flag,D3DPTADDRESSCAPS_CLAMP,"D3DPTADDRESSCAPS_CLAMP");
+                checkflag(flag,D3DPTADDRESSCAPS_INDEPENDENTUV,"D3DPTADDRESSCAPS_INDEPENDENTUV");
+                checkflag(flag,D3DPTADDRESSCAPS_MIRROR,"D3DPTADDRESSCAPS_MIRROR");
+                checkflag(flag,D3DPTADDRESSCAPS_WRAP,"D3DPTADDRESSCAPS_WRAP");                                
+                endcheckflag(flag,"puD3dDriverData->hwCaps.dpcTriCaps.dwTextureAddressCaps "); 
+
                 printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwStippleWidth              : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwStippleWidth);
                 printf(" puD3dDriverData->hwCaps.dpcTriCaps.dwStippleHeight             : 0x%08lx\n",(long)puD3dDriverData->hwCaps.dpcTriCaps.dwStippleHeight);
             }