1 #ifndef __DDRAW_PRIVATE
2 #define __DDRAW_PRIVATE
4 /********* Includes *********/
14 /* this sturct are not longer in DDK
15 I did recrate it by looking diffent betwin DD_xx struct and _DDHAL strucrt
16 only diffent I found was the global pointer have been change from LPDDRAWI_DDRAWSURFACE_GBL
17 to DD_DIRECTDRAW_GLOBAL
20 typedef struct _DDHAL_MAPMEMORYDATA
22 LPDDRAWI_DDRAWSURFACE_GBL lpDD
;
27 } DDHAL_MAPMEMORYDATA
;
29 /* own macro to alloc memmory */
30 #define DxHeapMemAlloc(m) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, m)
31 #define DxHeapMemFree(p) HeapFree(GetProcessHeap(), 0, p);
32 /******** Main Object ********/
36 /* Setup the Vtbl COM table */
37 IDirectDraw7Vtbl
* lpVtbl
;
38 IDirectDraw4Vtbl
* lpVtbl_v4
;
39 IDirectDraw2Vtbl
* lpVtbl_v2
;
40 IDirectDrawVtbl
* lpVtbl_v1
;
42 /* The main struct that contain all info from the HAL and HEL */
44 DDRAWI_DIRECTDRAW_GBL mDDrawGlobal
;
45 DDRAWI_DIRECTDRAW_LCL mDDrawLocal
;
48 DDHAL_CALLBACKS mCallbacks
;
49 DDHAL_DDEXEBUFCALLBACKS mD3dBufferCallbacks
;
50 D3DHAL_CALLBACKS mD3dCallbacks
;
51 D3DHAL_GLOBALDRIVERDATA mD3dDriverData
;
54 DDHALMODEINFO
*mpModeInfos
;
63 DDSURFACEDESC
*mpTextures
;
70 DWORD cooperative_level
;
76 DWORD HELMemoryAvilable
;
78 /* internal counter */
82 DDHAL_CREATESURFACEDATA mDdCreateSurface
;
83 DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface
;
85 /* Primarey surface we must reach it from every where */
86 DDRAWI_DDRAWSURFACE_GBL mPrimaryGlobal
;
87 DDRAWI_DDRAWSURFACE_MORE mPrimaryMore
;
88 DDRAWI_DDRAWSURFACE_LCL mPrimaryLocal
;
89 DDRAWI_DDRAWSURFACE_LCL
*mpPrimaryLocals
[1];
90 DDRAWI_DDRAWCLIPPER_LCL mPrimaryClipperLocal
;
91 DDRAWI_DDRAWCLIPPER_GBL mPrimaryClipperGlobal
;
93 DDSURFACEDESC mddsdPrimary
;
97 /******** Surface Object ********/
101 DDRAWI_DDRAWSURFACE_LCL
*mpInUseSurfaceLocals
[1];
103 DDRAWI_DDRAWSURFACE_GBL mSurfGlobal
;
104 DDRAWI_DDRAWSURFACE_MORE mSurfMore
;
105 DDRAWI_DDRAWSURFACE_LCL mSurfLocal
;
106 DDRAWI_DDRAWSURFACE_LCL
*mpSurfLocals
[1];
107 DDRAWI_DDRAWCLIPPER_LCL mSurfClipperLocal
;
108 DDRAWI_DDRAWCLIPPER_GBL mSurfClipperGlobal
;
110 DDRAWI_DDRAWSURFACE_GBL mOverlayGlobal
;
111 DDRAWI_DDRAWSURFACE_LCL mOverlayLocal
[6];
112 DDRAWI_DDRAWSURFACE_LCL
*mpOverlayLocals
[6];
113 DDRAWI_DDRAWSURFACE_MORE mOverlayMore
[6];
115 DDSURFACEDESC mddsdOverlay
;
121 IDirectDrawSurface7Vtbl
* lpVtbl
;
122 IDirectDrawSurface3Vtbl
* lpVtbl_v3
;
124 IDirectDrawImpl
* Owner
;
126 DDRAWI_DDRAWSURFACE_GBL Global
;
127 DDRAWI_DDRAWSURFACE_MORE More
;
128 DDRAWI_DDRAWSURFACE_LCL Local
;
129 DDRAWI_DDRAWSURFACE_LCL
*pLocal
[2];
134 } IDirectDrawSurfaceImpl
;
140 /******** Clipper Object ********/
144 IDirectDrawClipperVtbl
* lpVtbl
;
147 IDirectDrawImpl
* owner
;
149 } IDirectDrawClipperImpl
;
151 /******** Palette Object ********/
155 IDirectDrawPaletteVtbl
* lpVtbl
;
158 IDirectDrawImpl
* owner
;
160 } IDirectDrawPaletteImpl
;
162 /*********** VTables ************/
164 extern IDirectDraw7Vtbl DirectDraw7_Vtable
;
165 extern IDirectDrawVtbl DDRAW_IDirectDraw_VTable
;
166 extern IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable
;
167 extern IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable
;
169 extern IDirectDrawSurface7Vtbl DirectDrawSurface7_Vtable
;
170 extern IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable
;
172 extern IDirectDrawPaletteVtbl DirectDrawPalette_Vtable
;
173 extern IDirectDrawClipperVtbl DirectDrawClipper_Vtable
;
174 extern IDirectDrawColorControlVtbl DirectDrawColorControl_Vtable
;
175 extern IDirectDrawGammaControlVtbl DirectDrawGammaControl_Vtable
;
177 /********* Prototypes **********/
179 HRESULT WINAPI
Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface
, LPDDSCAPS2 ddscaps
, LPDWORD total
, LPDWORD free
);
181 HRESULT
Hal_DirectDraw_Initialize (LPDIRECTDRAW7
);
182 HRESULT
Hal_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7
);
183 VOID
Hal_DirectDraw_Release (LPDIRECTDRAW7
);
184 HRESULT
Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7
, LPDDSCAPS2
, LPDWORD
, LPDWORD
);
185 HRESULT
Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7
, DWORD
, HANDLE
);
186 HRESULT
Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7
, LPDWORD
);
187 HRESULT
Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7
);
188 HRESULT
Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7
, DWORD
, DWORD
, DWORD
, DWORD
, DWORD
);
189 HRESULT
Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7
, LPRECT
, LPDIRECTDRAWSURFACE7
, LPRECT
, DWORD
, LPDDBLTFX
);
190 HRESULT
Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface
, LPRECT prect
, LPDDSURFACEDESC2 pDDSD
, DWORD flags
, HANDLE event
);
191 HRESULT
Hal_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface
, LPDIRECTDRAWSURFACE7 override
, DWORD dwFlags
);
192 HRESULT
Hal_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface
, DWORD dwFlags
, LPDDCOLORKEY pCKey
);
193 HRESULT
Hal_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface
, LPRECT pRect
);
194 HRESULT
Hal_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface
, DWORD dwFlags
);
195 HRESULT
Hal_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface
, DWORD dwFlags
);
197 HRESULT
Hel_DirectDraw_Initialize (LPDIRECTDRAW7
);
198 HRESULT
Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7
);
199 VOID
Hel_DirectDraw_Release (LPDIRECTDRAW7
);
200 HRESULT
Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7
, LPDDSCAPS2 ddsaps
, LPDWORD
, LPDWORD
);
201 HRESULT
Hel_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7
, DWORD
, HANDLE
);
202 HRESULT
Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7
, LPDWORD
);
203 HRESULT
Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7
);
204 HRESULT
Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7
, DWORD
, DWORD
,DWORD
, DWORD
, DWORD
);
205 HRESULT
Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7
, LPRECT
, LPDIRECTDRAWSURFACE7
, LPRECT
, DWORD
, LPDDBLTFX
);
206 HRESULT
Hel_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface
, LPRECT prect
, LPDDSURFACEDESC2 pDDSD
, DWORD flags
, HANDLE event
);
207 HRESULT
Hel_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface
, DWORD dwFlags
, LPDDCOLORKEY pCKey
);
208 HRESULT
Hel_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface
, LPRECT pRect
);
209 HRESULT
Hel_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface
, DWORD dwFlags
);
210 HRESULT
Hel_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface
, LPDIRECTDRAWSURFACE7 override
, DWORD dwFlags
);
211 HRESULT
Hel_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface
, DWORD dwFlags
);
214 DWORD CALLBACK
HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA pccsd
);
215 DWORD CALLBACK
HelDdCreateSurface(LPDDHAL_CREATESURFACEDATA lpCreateSurface
);
218 /* Setting for HEL should be move to ros special reg key ? */
220 /* setup how much graphic memory should hel be limit, set it now to 64MB */
221 #define HEL_GRAPHIC_MEMORY_MAX 67108864
223 /*********** Macros ***********/
226 static BOOL firstcall = TRUE; \
230 sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
231 OutputDebugStringA(buffer); \
234 return DDERR_UNSUPPORTED;
236 #define DX_STUB_str(x) \
237 static BOOL firstcall = TRUE; \
241 sprintf ( buffer, "Function %s %s (%s:%d)\n", __FUNCTION__,x,__FILE__,__LINE__ ); \
242 OutputDebugStringA(buffer); \
246 //#define DX_WINDBG_trace()
249 #define DX_WINDBG_trace() \
250 static BOOL firstcallx = TRUE; \
254 sprintf ( buffer, "Enter Function %s (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
255 OutputDebugStringA(buffer); \
260 #define DX_WINDBG_trace_res(width,height,bpp) \
261 static BOOL firstcallxx = TRUE; \
265 sprintf ( buffer, "Setmode have been req width=%d, height=%d bpp=%d\n",width,height,bpp); \
266 OutputDebugStringA(buffer); \
267 firstcallxx = FALSE; \
270 #endif /* __DDRAW_PRIVATE */