1 #include "../w32knapi.h"
5 NtGdiDdQueryDirectDrawObject(
6 HANDLE hDirectDrawLocal
,
9 LPD3DNTHAL_CALLBACKS puD3dCallbacks
,
10 LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData
,
11 PDD_D3DBUFCALLBACKS puD3dBufferCallbacks
,
12 LPDDSURFACEDESC puD3dTextureFormats
,
14 VIDEOMEMORY
*puvmList
,
19 return (BOOL
)Syscall(L
"NtGdiDdQueryDirectDrawObject", 11, &hDirectDrawLocal
);
23 Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti
)
25 HANDLE hDirectDraw
= NULL
;
26 DD_HALINFO
*pHalInfo
= NULL
;
27 DWORD
*pCallBackFlags
= NULL
;
28 LPD3DNTHAL_CALLBACKS puD3dCallbacks
= NULL
;
29 LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData
= NULL
;
30 PDD_D3DBUFCALLBACKS puD3dBufferCallbacks
= NULL
;
31 LPDDSURFACEDESC puD3dTextureFormats
= NULL
;
32 DWORD
*puNumHeaps
= NULL
;
33 VIDEOMEMORY
*puvmList
= NULL
;
34 DWORD
*puNumFourCC
= NULL
;
35 DWORD
*puFourCC
= NULL
;
38 DWORD CallBackFlags
[4];
39 D3DNTHAL_CALLBACKS D3dCallbacks
;
40 D3DNTHAL_GLOBALDRIVERDATA D3dDriverData
;
41 DD_D3DBUFCALLBACKS D3dBufferCallbacks
;
42 DDSURFACEDESC2 D3dTextureFormats
[100];
45 //DWORD NumFourCC = 0;
52 memset(&vmList
,0,sizeof(VIDEOMEMORY
));
53 memset(&D3dTextureFormats
,0,sizeof(DDSURFACEDESC
));
54 memset(&D3dBufferCallbacks
,0,sizeof(DD_D3DBUFCALLBACKS
));
55 memset(&D3dDriverData
,0,sizeof(D3DNTHAL_GLOBALDRIVERDATA
));
56 memset(&D3dCallbacks
,0,sizeof(D3DNTHAL_CALLBACKS
));
57 memset(&HalInfo
,0,sizeof(DD_HALINFO
));
58 memset(CallBackFlags
,0,sizeof(DWORD
)*3);
62 /* Get currenet display mode */
63 EnumDisplaySettings(NULL
, ENUM_CURRENT_SETTINGS
, &devmode
);
65 hdc
= CreateDCW(L
"DISPLAY",NULL
,NULL
,NULL
);
68 hDirectDraw
= (HANDLE
) Syscall(L
"NtGdiDdCreateDirectDrawObject", 1, &hdc
);
69 ASSERT1(hDirectDraw
!= NULL
);
72 hDirectDraw
= (HANDLE
) Syscall(L
"NtGdiDdCreateDirectDrawObject", 1, &hdc
);
74 RTEST(NtGdiDdQueryDirectDrawObject( NULL
, pHalInfo
,
75 pCallBackFlags
, puD3dCallbacks
,
76 puD3dDriverData
, puD3dBufferCallbacks
,
77 puD3dTextureFormats
, puNumHeaps
,
78 puvmList
, puNumFourCC
,
81 RTEST(pHalInfo
== NULL
);
82 RTEST(pCallBackFlags
== NULL
);
83 RTEST(puD3dCallbacks
== NULL
);
84 RTEST(puD3dDriverData
== NULL
);
85 RTEST(puD3dBufferCallbacks
== NULL
);
86 RTEST(puD3dTextureFormats
== NULL
);
87 RTEST(puNumFourCC
== NULL
);
88 RTEST(puFourCC
== NULL
);
90 RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw
, pHalInfo
,
91 pCallBackFlags
, puD3dCallbacks
,
92 puD3dDriverData
, puD3dBufferCallbacks
,
93 puD3dTextureFormats
, puNumHeaps
,
94 puvmList
, puNumFourCC
,
97 RTEST(pHalInfo
== NULL
);
98 RTEST(pCallBackFlags
== NULL
);
99 RTEST(puD3dCallbacks
== NULL
);
100 RTEST(puD3dDriverData
== NULL
);
101 RTEST(puD3dBufferCallbacks
== NULL
);
102 RTEST(puD3dTextureFormats
== NULL
);
103 RTEST(puNumFourCC
== NULL
);
104 RTEST(puFourCC
== NULL
);
107 RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw
, pHalInfo
,
108 pCallBackFlags
, puD3dCallbacks
,
109 puD3dDriverData
, puD3dBufferCallbacks
,
110 puD3dTextureFormats
, puNumHeaps
,
111 puvmList
, puNumFourCC
,
113 RTEST(pHalInfo
!= NULL
);
114 RTEST(pCallBackFlags
== NULL
);
115 RTEST(puD3dCallbacks
== NULL
);
116 RTEST(puD3dDriverData
== NULL
);
117 RTEST(puD3dBufferCallbacks
== NULL
);
118 RTEST(puD3dTextureFormats
== NULL
);
119 RTEST(puNumFourCC
== NULL
);
120 RTEST(puFourCC
== NULL
);
121 ASSERT1(pHalInfo
!= NULL
);
123 if ((pHalInfo
->dwSize
!= sizeof(DD_HALINFO
)) &&
124 (pHalInfo
->dwSize
!= sizeof(DD_HALINFO_V4
)))
126 RTEST(pHalInfo
->dwSize
!= sizeof(DD_HALINFO
));
127 ASSERT1(pHalInfo
->dwSize
!= sizeof(DD_HALINFO
));
132 if (pHalInfo
->dwSize
== sizeof(DD_HALINFO
))
134 /*the offset, in bytes, to primary surface in the display memory */
135 RTEST(pHalInfo
->vmiData
.fpPrimary
!= 0 );
137 /* unsuse always 0 */
138 RTEST(pHalInfo
->vmiData
.dwFlags
== 0 );
140 /* fixme check the res */
143 RTEST(pHalInfo
->vmiData
.dwDisplayWidth
== devmode
.dmPelsWidth
);
144 RTEST(pHalInfo
->vmiData
.dwDisplayHeight
== devmode
.dmPelsHeight
);
146 RTEST(pHalInfo->vmiData.lDisplayPitch == 0x1700;
148 RTEST(pHalInfo
->vmiData
.ddpfDisplay
.dwSize
== sizeof(DDPIXELFORMAT
) );
149 ASSERT1(pHalInfo
->vmiData
.ddpfDisplay
.dwSize
== sizeof(DDPIXELFORMAT
));
152 /* No fourcc are use on primary screen */
153 RTEST(pHalInfo
->vmiData
.ddpfDisplay
.dwFourCC
== 0 );
155 /* Count RGB Bits 8/16/24/32 */
156 RTEST(pHalInfo
->vmiData
.ddpfDisplay
.dwRGBBitCount
== devmode
.dmBitsPerPel
);
159 //RTEST(pHalInfo->vmiData.ddpfDisplay.dwRBitMask == 0 );
160 //RTEST(pHalInfo->vmiData.ddpfDisplay.dwGBitMask == 0 );
161 //RTEST(pHalInfo->vmiData.ddpfDisplay.dwBBitMask == 0 );
162 /* primary never set the alpha blend mask */
163 RTEST(pHalInfo
->vmiData
.ddpfDisplay
.dwRGBAlphaBitMask
== 0 );
165 /* FIXME do not known how test follow thing, for it is diffent for each drv */
166 // pHalInfo->vmiData->dwOffscreenAlign : 0x00000100
167 // pHalInfo->vmiData->dwOverlayAlign : 0x00000010
168 // pHalInfo->vmiData->dwTextureAlign : 0x00000020
169 // pHalInfo->vmiData->dwZBufferAlign : 0x00001000
170 // pHalInfo->vmiData->dwAlphaAlign : 0x00000000
172 /* the primary display address */
173 RTEST(pHalInfo
->vmiData
.pvPrimary
!= 0x00000000 );
176 /* Cleanup ReactX setup */
178 Syscall(L
"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDraw
);
180 return APISTATUS_NORMAL
;