2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: Native driver enumate of dxeng implementation
5 * FILE: subsys/win32k/ntddraw/dxeng.c
6 * PROGRAMER: Magnus olsen (magnus@greatlord.com)
8 * 15/10-2007 Magnus Olsen
16 ULONG gcEngFuncs
= DXENG_INDEX_DxEngLoadImage
+ 1;
20 {DXENG_INDEX_DxEngNUIsTermSrv
, (PFN
)DxEngNUIsTermSrv
},
21 {DXENG_INDEX_DxEngScreenAccessCheck
, (PFN
)DxEngScreenAccessCheck
},
22 {DXENG_INDEX_DxEngRedrawDesktop
, (PFN
)DxEngRedrawDesktop
},
23 {DXENG_INDEX_DxEngDispUniq
, (PFN
)DxEngDispUniq
},
24 {DXENG_INDEX_DxEngIncDispUniq
, (PFN
)DxEngIncDispUniq
},
25 {DXENG_INDEX_DxEngVisRgnUniq
, (PFN
)DxEngVisRgnUniq
},
26 {DXENG_INDEX_DxEngLockShareSem
, (PFN
)DxEngLockShareSem
},
27 {DXENG_INDEX_DxEngUnlockShareSem
, (PFN
)DxEngUnlockShareSem
},
28 {DXENG_INDEX_DxEngEnumerateHdev
, (PFN
)DxEngEnumerateHdev
},
29 {DXENG_INDEX_DxEngLockHdev
, (PFN
)DxEngLockHdev
},
30 {DXENG_INDEX_DxEngUnlockHdev
, (PFN
)DxEngUnlockHdev
},
31 {DXENG_INDEX_DxEngIsHdevLockedByCurrentThread
, (PFN
)DxEngIsHdevLockedByCurrentThread
},
32 {DXENG_INDEX_DxEngReferenceHdev
, (PFN
)DxEngReferenceHdev
},
33 {DXENG_INDEX_DxEngUnreferenceHdev
, (PFN
)DxEngUnreferenceHdev
},
34 {DXENG_INDEX_DxEngGetDeviceGammaRamp
, (PFN
)DxEngGetDeviceGammaRamp
},
35 {DXENG_INDEX_DxEngSetDeviceGammaRamp
, (PFN
)DxEngSetDeviceGammaRamp
},
36 {DXENG_INDEX_DxEngSpTearDownSprites
, (PFN
)DxEngSpTearDownSprites
},
37 {DXENG_INDEX_DxEngSpUnTearDownSprites
, (PFN
)DxEngSpUnTearDownSprites
},
38 {DXENG_INDEX_DxEngSpSpritesVisible
, (PFN
)DxEngSpSpritesVisible
},
39 {DXENG_INDEX_DxEngGetHdevData
, (PFN
)DxEngGetHdevData
},
40 {DXENG_INDEX_DxEngSetHdevData
, (PFN
)DxEngSetHdevData
},
41 {DXENG_INDEX_DxEngCreateMemoryDC
, (PFN
)DxEngCreateMemoryDC
},
42 {DXENG_INDEX_DxEngGetDesktopDC
, (PFN
)DxEngGetDesktopDC
},
43 {DXENG_INDEX_DxEngDeleteDC
, (PFN
)DxEngDeleteDC
},
44 {DXENG_INDEX_DxEngCleanDC
, (PFN
)DxEngCleanDC
},
45 {DXENG_INDEX_DxEngSetDCOwner
, (PFN
)DxEngSetDCOwner
},
46 {DXENG_INDEX_DxEngLockDC
, (PFN
)DxEngLockDC
},
47 {DXENG_INDEX_DxEngUnlockDC
, (PFN
)DxEngUnlockDC
},
48 {DXENG_INDEX_DxEngSetDCState
, (PFN
)DxEngGetDCState
},
49 {DXENG_INDEX_DxEngGetDCState
, (PFN
)DxEngGetDCState
},
50 {DXENG_INDEX_DxEngSelectBitmap
, (PFN
)DxEngSelectBitmap
},
51 {DXENG_INDEX_DxEngSetBitmapOwner
, (PFN
)DxEngSetBitmapOwner
},
52 {DXENG_INDEX_DxEngDeleteSurface
, (PFN
)DxEngDeleteSurface
},
53 {DXENG_INDEX_DxEngGetSurfaceData
, (PFN
)DxEngGetSurfaceData
},
54 {DXENG_INDEX_DxEngAltLockSurface
, (PFN
)DxEngAltLockSurface
},
55 {DXENG_INDEX_DxEngUploadPaletteEntryToSurface
, (PFN
)DxEngUploadPaletteEntryToSurface
},
56 {DXENG_INDEX_DxEngMarkSurfaceAsDirectDraw
, (PFN
)DxEngMarkSurfaceAsDirectDraw
},
57 {DXENG_INDEX_DxEngSelectPaletteToSurface
, (PFN
)DxEngSelectPaletteToSurface
},
58 {DXENG_INDEX_DxEngSyncPaletteTableWithDevice
, (PFN
)DxEngSyncPaletteTableWithDevice
},
59 {DXENG_INDEX_DxEngSetPaletteState
, (PFN
)DxEngSetPaletteState
},
60 {DXENG_INDEX_DxEngGetRedirectionBitmap
, (PFN
)DxEngGetRedirectionBitmap
},
61 {DXENG_INDEX_DxEngLoadImage
, (PFN
)DxEngLoadImage
}
64 /************************************************************************/
65 /* DxEngNUIsTermSrv */
66 /************************************************************************/
68 /* Notes : Check see if termal server got a connections or not */
72 /* FIXME ReactOS does not suport terminal server yet, we can not check if we got a connections or not */
77 /************************************************************************/
78 /* DxEngRedrawDesktop */
79 /************************************************************************/
81 /* Notes : it always return TRUE, and it update whole the screen (redaw current desktop) */
85 /* FIXME add redraw code */
91 /************************************************************************/
93 /************************************************************************/
95 /* Notes : return the DisplayUniqVisrgn counter from gdishare memory */
99 return GdiHandleTable
->flDeviceUniq
;
102 ULONG gulVisRgnUniqueness
; // Inc count everytime client region is updated.
104 /************************************************************************/
105 /* DxEngVisRgnUniq */
106 /************************************************************************/
107 /* Notes : return the VisRgnUniq counter for win32k */
111 return gulVisRgnUniqueness
;
114 /************************************************************************/
115 /* DxEngEnumerateHdev */
116 /************************************************************************/
117 /* Enumate all drivers in win32k */
119 DxEngEnumerateHdev(HDEV
*hdev
)
121 /* FIXME Enumate all drivers in win32k */
127 * @name DxEngGetDeviceGammaRamp
130 * The function DxEngSetDeviceGammaRamp Set Gamma ramp from from dxg.sys
135 * @param PGAMMARAMP Ramp
136 * to fill in our gama ramp
139 * This return FALSE or TRUE, FALSE for fail, TRUE for success
142 * ReactOS does not loop it, only set the gamma once.
146 DxEngGetDeviceGammaRamp(HDEV hPDev
, PGAMMARAMP Ramp
)
148 return IntGetDeviceGammaRamp(hPDev
, Ramp
);
156 * The function DxEngLockDC lock a hdc from dxg.sys
159 * The handle we need want lock
162 * This api return PDC or NULL depns if it sussess lock the hdc or not
171 return DC_LockDc(hDC
);
176 * @name DxEngUnlockDC
179 * The function DxEngUnlockDC Unlock a pDC (hdc) from dxg.sys
182 * The handle we need unlock
185 * This api always return TRUE if it sussess or not
192 DxEngUnlockDC(PDC pDC
)
199 /************************************************************************/
200 /* DxEngCreateMemoryDC */
201 /************************************************************************/
202 DWORD
DxEngCreateMemoryDC(DWORD x1
)
208 /************************************************************************/
209 /* DxEngScreenAccessCheck */
210 /************************************************************************/
211 DWORD
DxEngScreenAccessCheck()
217 /************************************************************************/
218 /* DxEngLockShareSem */
219 /************************************************************************/
220 DWORD
DxEngLockShareSem()
226 /************************************************************************/
227 /* DxEngUnlockShareSem */
228 /************************************************************************/
229 DWORD
DxEngUnlockShareSem()
235 /************************************************************************/
237 /************************************************************************/
238 DWORD
DxEngLockHdev(DWORD x1
)
244 /************************************************************************/
245 /* DxEngUnlockHdev */
246 /************************************************************************/
247 DWORD
DxEngUnlockHdev(DWORD x1
)
253 /************************************************************************/
254 /* DxEngReferenceHdev */
255 /************************************************************************/
256 DWORD
DxEngReferenceHdev(DWORD x1
)
262 /************************************************************************/
263 /* DxEngIsHdevLockedByCurrentThread */
264 /************************************************************************/
265 DWORD
DxEngIsHdevLockedByCurrentThread(DWORD x1
)
272 /************************************************************************/
273 /* DxEngUnreferenceHdev */
274 /************************************************************************/
275 DWORD
DxEngUnreferenceHdev(DWORD x1
)
283 * @name DxEngSetDeviceGammaRamp
286 * The function DxEngSetDeviceGammaRamp Set Gamma ramp from from dxg.sys
291 * @param PGAMMARAMP Ramp
292 * to set in our gama ramp
295 * Info on this are avail at request. at moment ReactOS does not
296 * does not use it. and problare never need it.
299 * This return FALSE or TRUE, FALSE for fail, TRUE for success
302 * ReactOS does not loop it, only set the gamma once.
306 DxEngSetDeviceGammaRamp(HDEV hPDev
, PGAMMARAMP Ramp
, BOOL Test
)
308 return IntSetDeviceGammaRamp(hPDev
, Ramp
, Test
);
311 /************************************************************************/
312 /* DxEngSpTearDownSprites */
313 /************************************************************************/
314 DWORD
DxEngSpTearDownSprites(DWORD x1
, DWORD x2
, DWORD x3
)
320 /************************************************************************/
321 /* DxEngSpUnTearDownSprites */
322 /************************************************************************/
323 DWORD
DxEngSpUnTearDownSprites(DWORD x1
, DWORD x2
, DWORD x3
)
329 /************************************************************************/
330 /* DxEngSpSpritesVisible */
331 /************************************************************************/
332 DWORD
DxEngSpSpritesVisible(DWORD x1
)
338 /************************************************************************/
339 /* DxEngGetHdevData */
340 /************************************************************************/
342 DxEngGetHdevData(PEDD_DIRECTDRAW_GLOBAL pEDDgpl
,
349 /************************************************************************/
350 /* DxEngSetHdevData */
351 /************************************************************************/
352 DWORD
DxEngSetHdevData(DWORD x1
, DWORD x2
, DWORD x3
)
358 /************************************************************************/
359 /* DxEngGetDesktopDC */
360 /************************************************************************/
361 DWORD
DxEngGetDesktopDC(DWORD x1
, DWORD x2
, DWORD x3
)
367 /************************************************************************/
369 /************************************************************************/
370 DWORD
DxEngDeleteDC(DWORD x1
, DWORD x2
)
376 /************************************************************************/
378 /************************************************************************/
379 DWORD
DxEngCleanDC(DWORD x1
)
385 /************************************************************************/
386 /* DxEngSetDCOwner */
387 /************************************************************************/
388 DWORD
DxEngSetDCOwner(DWORD x1
, DWORD x2
)
394 /************************************************************************/
395 /* DxEngSetDCState */
396 /************************************************************************/
397 DWORD
DxEngSetDCState(DWORD x1
, DWORD x2
, DWORD x3
)
403 /************************************************************************/
404 /* DxEngGetDCState */
405 /************************************************************************/
407 DxEngGetDCState(HDC hDC
,
410 PEDD_DIRECTDRAW_GLOBAL pEDDgpl
= NULL
;
411 PDC pDC
= DC_LockDc(hDC
);
424 PGDIDEVICE GDIDevice
= (PGDIDEVICE
)pDC
->pPDev
;
425 pEDDgpl
= GDIDevice
->pEDDgpl
;
427 return (DWORD
)pEDDgpl
;
438 /************************************************************************/
439 /* DxEngSelectBitmap */
440 /************************************************************************/
441 DWORD
DxEngSelectBitmap(DWORD x1
, DWORD x2
)
447 /************************************************************************/
448 /* DxEngSetBitmapOwner */
449 /************************************************************************/
450 DWORD
DxEngSetBitmapOwner(DWORD x1
, DWORD x2
)
456 /************************************************************************/
457 /* DxEngDeleteSurface */
458 /************************************************************************/
459 DWORD
DxEngDeleteSurface(DWORD x1
)
465 /************************************************************************/
466 /* DxEngGetSurfaceData */
467 /************************************************************************/
468 DWORD
DxEngGetSurfaceData(DWORD x1
, DWORD x2
)
474 /************************************************************************/
475 /* DxEngAltLockSurface */
476 /************************************************************************/
477 DWORD
DxEngAltLockSurface(DWORD x1
)
483 /************************************************************************/
484 /* DxEngUploadPaletteEntryToSurface */
485 /************************************************************************/
486 DWORD
DxEngUploadPaletteEntryToSurface(DWORD x1
, DWORD x2
,DWORD x3
, DWORD x4
)
492 /************************************************************************/
493 /* DxEngMarkSurfaceAsDirectDraw */
494 /************************************************************************/
495 DWORD
DxEngMarkSurfaceAsDirectDraw(DWORD x1
, DWORD x2
)
501 /************************************************************************/
502 /* DxEngSelectPaletteToSurface */
503 /************************************************************************/
504 DWORD
DxEngSelectPaletteToSurface(DWORD x1
, DWORD x2
)
510 /************************************************************************/
511 /* DxEngSyncPaletteTableWithDevice */
512 /************************************************************************/
513 DWORD
DxEngSyncPaletteTableWithDevice(DWORD x1
, DWORD x2
)
519 /************************************************************************/
520 /* DxEngSetPaletteState */
521 /************************************************************************/
522 DWORD
DxEngSetPaletteState(DWORD x1
, DWORD x2
, DWORD x3
)
528 /************************************************************************/
529 /* DxEngGetRedirectionBitmap */
530 /************************************************************************/
531 DWORD
DxEngGetRedirectionBitmap(DWORD x1
)
537 /************************************************************************/
539 /************************************************************************/
540 DWORD
DxEngLoadImage(DWORD x1
,DWORD x2
)
546 /************************************************************************/
547 /* DxEngIncDispUniq */
548 /************************************************************************/
549 DWORD
DxEngIncDispUniq()