2 * PROJECT: ReactOS Win32 Subsystem
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: subsystems/win32/win32k/ntddraw/dxeng.c
5 * PURPOSE: Implementation of DxEng functions
6 * PROGRAMMERS: Magnus Olsen (magnus@greatlord.com)
12 HSEMAPHORE ghsemShareDevLock
= NULL
;
14 ULONG gcEngFuncs
= DXENG_INDEX_DxEngLoadImage
+ 1;
18 {DXENG_INDEX_DxEngNUIsTermSrv
, (PFN
)DxEngNUIsTermSrv
},
19 {DXENG_INDEX_DxEngScreenAccessCheck
, (PFN
)DxEngScreenAccessCheck
},
20 {DXENG_INDEX_DxEngRedrawDesktop
, (PFN
)DxEngRedrawDesktop
},
21 {DXENG_INDEX_DxEngDispUniq
, (PFN
)DxEngDispUniq
},
22 {DXENG_INDEX_DxEngIncDispUniq
, (PFN
)DxEngIncDispUniq
},
23 {DXENG_INDEX_DxEngVisRgnUniq
, (PFN
)DxEngVisRgnUniq
},
24 {DXENG_INDEX_DxEngLockShareSem
, (PFN
)DxEngLockShareSem
},
25 {DXENG_INDEX_DxEngUnlockShareSem
, (PFN
)DxEngUnlockShareSem
},
26 {DXENG_INDEX_DxEngEnumerateHdev
, (PFN
)DxEngEnumerateHdev
},
27 {DXENG_INDEX_DxEngLockHdev
, (PFN
)DxEngLockHdev
},
28 {DXENG_INDEX_DxEngUnlockHdev
, (PFN
)DxEngUnlockHdev
},
29 {DXENG_INDEX_DxEngIsHdevLockedByCurrentThread
, (PFN
)DxEngIsHdevLockedByCurrentThread
},
30 {DXENG_INDEX_DxEngReferenceHdev
, (PFN
)DxEngReferenceHdev
},
31 {DXENG_INDEX_DxEngUnreferenceHdev
, (PFN
)DxEngUnreferenceHdev
},
32 {DXENG_INDEX_DxEngGetDeviceGammaRamp
, (PFN
)DxEngGetDeviceGammaRamp
},
33 {DXENG_INDEX_DxEngSetDeviceGammaRamp
, (PFN
)DxEngSetDeviceGammaRamp
},
34 {DXENG_INDEX_DxEngSpTearDownSprites
, (PFN
)DxEngSpTearDownSprites
},
35 {DXENG_INDEX_DxEngSpUnTearDownSprites
, (PFN
)DxEngSpUnTearDownSprites
},
36 {DXENG_INDEX_DxEngSpSpritesVisible
, (PFN
)DxEngSpSpritesVisible
},
37 {DXENG_INDEX_DxEngGetHdevData
, (PFN
)DxEngGetHdevData
},
38 {DXENG_INDEX_DxEngSetHdevData
, (PFN
)DxEngSetHdevData
},
39 {DXENG_INDEX_DxEngCreateMemoryDC
, (PFN
)DxEngCreateMemoryDC
},
40 {DXENG_INDEX_DxEngGetDesktopDC
, (PFN
)DxEngGetDesktopDC
},
41 {DXENG_INDEX_DxEngDeleteDC
, (PFN
)DxEngDeleteDC
},
42 {DXENG_INDEX_DxEngCleanDC
, (PFN
)DxEngCleanDC
},
43 {DXENG_INDEX_DxEngSetDCOwner
, (PFN
)DxEngSetDCOwner
},
44 {DXENG_INDEX_DxEngLockDC
, (PFN
)DxEngLockDC
},
45 {DXENG_INDEX_DxEngUnlockDC
, (PFN
)DxEngUnlockDC
},
46 {DXENG_INDEX_DxEngSetDCState
, (PFN
)DxEngSetDCState
},
47 {DXENG_INDEX_DxEngGetDCState
, (PFN
)DxEngGetDCState
},
48 {DXENG_INDEX_DxEngSelectBitmap
, (PFN
)DxEngSelectBitmap
},
49 {DXENG_INDEX_DxEngSetBitmapOwner
, (PFN
)DxEngSetBitmapOwner
},
50 {DXENG_INDEX_DxEngDeleteSurface
, (PFN
)DxEngDeleteSurface
},
51 {DXENG_INDEX_DxEngGetSurfaceData
, (PFN
)DxEngGetSurfaceData
},
52 {DXENG_INDEX_DxEngAltLockSurface
, (PFN
)DxEngAltLockSurface
},
53 {DXENG_INDEX_DxEngUploadPaletteEntryToSurface
, (PFN
)DxEngUploadPaletteEntryToSurface
},
54 {DXENG_INDEX_DxEngMarkSurfaceAsDirectDraw
, (PFN
)DxEngMarkSurfaceAsDirectDraw
},
55 {DXENG_INDEX_DxEngSelectPaletteToSurface
, (PFN
)DxEngSelectPaletteToSurface
},
56 {DXENG_INDEX_DxEngSyncPaletteTableWithDevice
, (PFN
)DxEngSyncPaletteTableWithDevice
},
57 {DXENG_INDEX_DxEngSetPaletteState
, (PFN
)DxEngSetPaletteState
},
58 {DXENG_INDEX_DxEngGetRedirectionBitmap
, (PFN
)DxEngGetRedirectionBitmap
},
59 {DXENG_INDEX_DxEngLoadImage
, (PFN
)DxEngLoadImage
}
67 * The function DxEngDispUniq returns the DisplayUniqVisrgn counter value from GDI shared memory
70 * Returns the DisplayUniqVisrgn counter value from GDI shared memory
80 DPRINT1("ReactX Calling : DxEngDispUniq\n");
81 return GdiHandleTable
->flDeviceUniq
;
85 * @name DxEngGetDeviceGammaRamp
88 * The function DxEngGetDeviceGammaRamp gets the gamma ramp to dxg.sys.
93 * @param PGAMMARAMP Ramp
94 * Pointer to store the gamma ramp value in.
97 *Returns TRUE for success, FALSE for failure
105 DxEngGetDeviceGammaRamp(HDEV hPDev
, PGAMMARAMP Ramp
)
107 DPRINT1("ReactX Calling : DxEngGetDeviceGammaRamp\n");
108 return IntGetDeviceGammaRamp(hPDev
, Ramp
);
116 * The function DxEngLockDC locks a hdc from dxg.sys
119 * The handle we want to lock
122 * Returns PDC if lock succeeded or NULL if it failed.
132 DPRINT1("ReactX Calling : DxEngLockDC\n");
133 return DC_LockDc(hDC
);
138 * @name DxEngUnlockDC
141 * The function DxEngUnlockDC unlocks a pDC (hdc) from dxg.sys.
144 * The handle we want to unlock.
147 * This function returns TRUE no matter what.
155 DxEngUnlockDC(PDC pDC
)
157 DPRINT1("ReactX Calling : DxEngUnlockDC\n");
163 * @name DxEngLockShareSem
166 * The function DxEngLockShareSem locks a struct of type ghsemShareDevLock that can be shared.
169 * This function returns TRUE for success and FALSE for failure.
170 * FALSE must mean the struct has already been locked.
173 * It is being used in various ntuser* functions and ntgdi*
174 * ReactOS specific: It is not in use yet?
181 DPRINT1("ReactX Calling : DxEngLockShareSem\n");
182 if(!ghsemShareDevLock
) ghsemShareDevLock
= EngCreateSemaphore(); // Hax, should be in dllmain.c
183 IntGdiAcquireSemaphore(ghsemShareDevLock
);
188 * @name DxEngUnlockShareSem
191 * The function DxEngUnlockShareSem unlocks the struct of type ghsemShareDevLock.
194 * This function returns TRUE no matter what.
197 * ReactOS specific: It is not in use yet?
202 DxEngUnlockShareSem()
204 DPRINT1("ReactX Calling : DxEngUnlockShareSem\n");
205 IntGdiReleaseSemaphore(ghsemShareDevLock
);
210 * @name DxEngSetDeviceGammaRamp
213 * The function DxEngSetDeviceGammaRamp sets gamma ramp from dxg.sys
218 * @param PGAMMARAMP Ramp
219 * Value to change gamma ramp to.
222 * Whether gamma should be tested. TRUE to test, FALSE to not test.
225 *Returns TRUE for success, FALSE for failure.
233 DxEngSetDeviceGammaRamp(HDEV hPDev
, PGAMMARAMP Ramp
, BOOL Test
)
235 DPRINT1("ReactX Calling : DxEngSetDeviceGammaRamp\n");
236 return IntSetDeviceGammaRamp(hPDev
, Ramp
, Test
);
240 * @name DxEngGetHdevData
243 * The function DxEngGetHdevData retrieves a value from the HDEV
248 * @param DXEGSHDEVDATA Type
249 * The following typs are supported
251 * DxEGShDevData_Surface Retrieve pointer to Surface handle.
252 * DxEGShDevData_hSpooler See if the device is a spooler driver.
253 * DxEGShDevData_DitherFmt Retrieve the device iDitherFormat
254 * DxEGShDevData_FxCaps Retrieve the device flGraphicsCaps
255 * DxEGShDevData_FxCaps2 Retrieve the device flGraphicsCaps2
256 * DxEGShDevData_DrvFuncs Retrieve the device DriverFunctions function table
257 * DxEGShDevData_dhpdev Retrieve the device hPDev, the real DHPDEV
258 * DxEGShDevData_eddg Retrieve the device pEDDgpl
259 * DxEGShDevData_dd_nCount Retrieve the device DxDd_nCount
260 * DxEGShDevData_dd_flags Retrieve the device DxDd_Flags
261 * DxEGShDevData_disable See if the device pdev is disabled
262 * DxEGShDevData_metadev See if the device pdev is a meta device
263 * DxEGShDevData_display See if the device is the primary display driver
264 * DxEGShDevData_Parent Retrieve the ppdevParent
265 * DxEGShDevData_OpenRefs Retrieve the pdevOpenRefs counter
266 * DxEGShDevData_palette See if the device RC_PALETTE is set
267 * DxEGShDevData_ldev ATM we do not support the Loader Device driver structure
268 * DxEGShDevData_GDev Retrieve the device pGraphicsDevice
269 * DxEGShDevData_clonedev Retrieve the device PDEV_CLONE_DEVICE flag is set or not
272 * Returns the data we requested
275 * ReactOS specific: Implementation is incomplete, I do not save the value into the hdev yet.
280 DxEngGetHdevData(HDEV hDev
,
283 DWORD_PTR retVal
= 0;
284 PPDEVOBJ PDev
= (PPDEVOBJ
)hDev
;
286 DPRINT1("ReactX Calling : DxEngGetHdevData DXEGSHDEVDATA : %ld\n", Type
);
289 DPRINT1("HDEV hDev %08lx\n", hDev
);
294 case DxEGShDevData_Surface
:
295 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_Surface\n");
296 retVal
= (DWORD_PTR
) PDev
->pSurface
; // ptr to Surface handle.
298 case DxEGShDevData_hSpooler
:
299 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_hSpooler\n");
300 retVal
= 0;//(DWORD_PTR) PDev->hSpooler; // If the device is a spooler driver.
302 case DxEGShDevData_DitherFmt
:
303 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_DitherFmt\n");
304 retVal
= (DWORD_PTR
) PDev
->devinfo
.iDitherFormat
;
306 case DxEGShDevData_FxCaps
:
307 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_FxCaps\n");
308 retVal
= (DWORD_PTR
) PDev
->devinfo
.flGraphicsCaps
;
310 case DxEGShDevData_FxCaps2
:
311 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_FxCaps2\n");
312 retVal
= (DWORD_PTR
) PDev
->devinfo
.flGraphicsCaps2
;
314 case DxEGShDevData_DrvFuncs
:
315 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_DrvFuncs\n");
316 retVal
= (DWORD_PTR
) &PDev
->DriverFunctions
;
318 case DxEGShDevData_dhpdev
:
319 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dhpdev\n");
320 retVal
= (DWORD_PTR
) PDev
->dhpdev
; // DHPDEV
322 case DxEGShDevData_eddg
:
323 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_eddg\n");
324 retVal
= (DWORD_PTR
) PDev
->pEDDgpl
;
326 case DxEGShDevData_dd_nCount
:
327 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dd_nCount\n");
328 retVal
= (DWORD_PTR
) PDev
->DxDd_nCount
;
330 case DxEGShDevData_dd_flags
:
331 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dd_flags\n");
332 retVal
= (DWORD_PTR
) PDev
->DxDd_Flags
;
334 case DxEGShDevData_disable
:
335 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_disable\n");
336 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_DISABLED
;
338 case DxEGShDevData_metadev
:
339 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_metadev\n");
340 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_META_DEVICE
;
342 case DxEGShDevData_display
:
343 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_display\n");
344 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_DISPLAY
;
346 case DxEGShDevData_Parent
:
347 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_Parent\n");
348 retVal
= (DWORD_PTR
) PDev
->ppdevParent
;
350 case DxEGShDevData_OpenRefs
:
351 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_OpenRefs\n");
352 retVal
= (DWORD_PTR
) PDev
->cPdevOpenRefs
!= 0;
354 case DxEGShDevData_palette
:
355 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_palette\n");
356 retVal
= (DWORD_PTR
) PDev
->gdiinfo
.flRaster
& RC_PALETTE
;
358 case DxEGShDevData_ldev
:
359 DPRINT1("DxEGShDevData_ldev not supported yet\n");
360 // ATM we do not support the Loader Device driver structure.
361 // retVal = (DWORD) PDev->pldev;
363 case DxEGShDevData_GDev
:
364 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_GDev\n");
365 retVal
= (DWORD_PTR
) PDev
->pGraphicsDevice
; // P"GRAPHICS_DEVICE"
367 case DxEGShDevData_clonedev
:
368 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_clonedev\n");
369 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_CLONE_DEVICE
;
377 DPRINT1("return value %08lx\n", retVal
);
385 * @name DxEngSetHdevData
388 * The function DxEngSetHdevData sets a value in hdev
393 * @param DXEGSHDEVDATA Type
394 * Supports only DxEGShDevData_dd_nCount. It is an internal counter on how many times hdev has been locked and unlocked
397 * The value to be saved to hdev's internal counter.
400 * Returns TRUE for success, FALSE for failure
408 DxEngSetHdevData(HDEV hDev
,
412 BOOLEAN retVal
= FALSE
; // Default, no set.
414 DPRINT1("ReactX Calling : DxEngSetHdevData DXEGSHDEVDATA : %ld\n", Type
);
416 if ( Type
== DxEGShDevData_dd_nCount
)
418 ((PPDEVOBJ
)hDev
)->DxDd_nCount
= Data
;
419 retVal
= TRUE
; // Set
425 * @name DxEngGetDCState
428 * The function DxEngGetDCState is capable of returning three
429 * DC states depending on what value is passed in its second parameter:
430 * 1. If the DC is full screen
431 * 2. Get Complexity of visible region
432 * 3. Get Driver hdev, which is ppdev
438 * value 1 = Is DC fullscreen
439 * value 2 = Get Complexity of visible region.
440 * value 3 = Get Driver hdev, which is a ppdev.
443 * Return one of the type values
446 * We do not have type 2 implemented yet
451 DxEngGetDCState(HDC hDC
,
454 PDC pDC
= DC_LockDc(hDC
);
455 DWORD_PTR retVal
= 0;
457 DPRINT1("ReactX Calling : DxEngGetDCState type : %ld\n", type
);
464 retVal
= (DWORD_PTR
) pDC
->fs
& DC_FLAG_FULLSCREEN
;
471 /* Return the HDEV of this DC. */
472 retVal
= (DWORD_PTR
) pDC
->ppdev
;
476 /* if a valid type is not found, zero is returned */
477 DPRINT1("Warning did not find type %d\n",type
);
487 * @name DxEngIncDispUniq
490 * The function DxEngIncDispUniq increments the DisplayUniqVisrgn counter from GDI shared memory.
493 * This function returns TRUE no matter what.
503 DPRINT1("ReactX Calling : DxEngIncDispUniq \n");
505 InterlockedIncrement((LONG
*)&GdiHandleTable
->flDeviceUniq
);
510 * @name DxEngLockHdev
513 * The function DxEngLockHdev lock the internal PDEV
516 * it is a pointer to win32k internal pdev struct known as PPDEVOBJ
519 * This function returns TRUE no matter what.
527 DxEngLockHdev(HDEV hDev
)
529 PPDEVOBJ ppdev
= (PPDEVOBJ
)hDev
;
532 DPRINT1("ReactX Calling : DxEngLockHdev \n");
534 DPRINT1("hDev : 0x%08lx\n",hDev
);
536 Resource
= ppdev
->hsemDevLock
;
540 KeEnterCriticalRegion();
541 ExAcquireResourceExclusiveLite( Resource
, TRUE
); // Lock monitor.
547 * @name DxEngUnlockHdev
550 * The function DxEngUnlockHdev unlock the internal PDEV
553 * it is a pointer to win32k internal pdev struct known as PPDEVOBJ
556 * This function returns TRUE no matter what.
564 DxEngUnlockHdev(HDEV hDev
)
566 PPDEVOBJ ppdev
= (PPDEVOBJ
)hDev
;
567 PERESOURCE Resource
= ppdev
->hsemDevLock
;
569 DPRINT1("ReactX Calling : DxEngUnlockHdev \n");
573 ExReleaseResourceLite( Resource
);
574 KeLeaveCriticalRegion();
580 /************************************************************************/
581 /* DxEngReferenceHdev */
582 /************************************************************************/
585 DxEngReferenceHdev(HDEV hDev
)
587 IntGdiReferencePdev((PPDEVOBJ
) hDev
);
588 /* ALWAYS return true */
592 /************************************************************************/
593 /* DxEngNUIsTermSrv */
594 /************************************************************************/
596 /* Notes : Check see if termal server got a connections or not */
601 /* FIXME ReactOS does not suport terminal server yet, we can not check if we got a connections or not */
606 /************************************************************************/
607 /* DxEngRedrawDesktop */
608 /************************************************************************/
610 /* Notes : it always returns TRUE, and it updates whole screen
611 (redraws current desktop) */
621 ULONG gulVisRgnUniqueness
; // Increase count everytime client region is updated.
623 /************************************************************************/
624 /* DxEngVisRgnUniq */
625 /************************************************************************/
626 /* Notes : returns the VisRgnUniq counter for win32k */
631 DPRINT1("ReactX Calling : DxEngVisRgnUniq \n");
633 return gulVisRgnUniqueness
;
636 /************************************************************************/
637 /* DxEngEnumerateHdev */
638 /************************************************************************/
639 /* Enumerate all drivers in win32k */
642 DxEngEnumerateHdev(HDEV
*hdev
)
644 /* FIXME Enumerate all drivers in win32k */
649 /************************************************************************/
650 /* DxEngCreateMemoryDC */
651 /************************************************************************/
654 DxEngCreateMemoryDC(HDEV hDev
)
656 return IntGdiCreateDisplayDC(hDev
, DC_TYPE_MEMORY
, FALSE
);
659 /************************************************************************/
660 /* DxEngScreenAccessCheck */
661 /************************************************************************/
662 DWORD APIENTRY
DxEngScreenAccessCheck()
666 /* we cheating here and tell dxg.sys it have always premitions to access the screen */
670 /************************************************************************/
671 /* DxEngIsHdevLockedByCurrentThread */
672 /************************************************************************/
675 DxEngIsHdevLockedByCurrentThread(HDEV hDev
)
676 { // base on EngIsSemaphoreOwnedByCurrentThread w/o the Ex call.
677 PERESOURCE pSem
= ((PPDEVOBJ
)hDev
)->hsemDevLock
;
678 return pSem
->OwnerEntry
.OwnerThread
== (ERESOURCE_THREAD
)PsGetCurrentThread();
682 /************************************************************************/
683 /* DxEngUnreferenceHdev */
684 /************************************************************************/
687 DxEngUnreferenceHdev(HDEV hDev
)
689 IntGdiUnreferencePdev((PPDEVOBJ
) hDev
, 0);
690 return TRUE
; // Always true.
693 /************************************************************************/
694 /* DxEngGetDesktopDC */
695 /************************************************************************/
698 DxEngGetDesktopDC(ULONG DcType
, BOOL EmptyDC
, BOOL ValidatehWnd
)
700 return UserGetDesktopDC(DcType
, EmptyDC
, ValidatehWnd
);
703 /************************************************************************/
705 /************************************************************************/
708 DxEngDeleteDC(HDC hdc
, BOOL Force
)
710 return IntGdiDeleteDC(hdc
, Force
);
713 /************************************************************************/
715 /************************************************************************/
718 DxEngCleanDC(HDC hdc
)
720 return IntGdiCleanDC(hdc
);
723 /************************************************************************/
724 /* DxEngSetDCOwner */
725 /************************************************************************/
726 BOOL APIENTRY
DxEngSetDCOwner(HGDIOBJ hObject
, DWORD OwnerMask
)
728 DPRINT1("ReactX Calling : DxEngSetDCOwner \n");
730 return IntGdiSetDCOwnerEx( hObject
, OwnerMask
, FALSE
);
733 /************************************************************************/
734 /* DxEngSetDCState */
735 /************************************************************************/
738 DxEngSetDCState(HDC hDC
, DWORD SetType
, DWORD Set
)
741 PDC pDC
= DC_LockDc(hDC
);
748 pDC
->fs
|= DC_FLAG_FULLSCREEN
;
750 pDC
->fs
&= ~DC_FLAG_FULLSCREEN
;
754 return Ret
; // Everything else returns FALSE.
759 /************************************************************************/
760 /* DxEngSelectBitmap */
761 /************************************************************************/
762 DWORD APIENTRY
DxEngSelectBitmap(DWORD x1
, DWORD x2
)
768 /************************************************************************/
769 /* DxEngSetBitmapOwner */
770 /************************************************************************/
771 DWORD APIENTRY
DxEngSetBitmapOwner(DWORD x1
, DWORD x2
)
777 /************************************************************************/
778 /* DxEngDeleteSurface */
779 /************************************************************************/
780 DWORD APIENTRY
DxEngDeleteSurface(DWORD x1
)
786 /************************************************************************/
787 /* DxEngGetSurfaceData */
788 /************************************************************************/
789 DWORD APIENTRY
DxEngGetSurfaceData(DWORD x1
, DWORD x2
)
795 /************************************************************************/
796 /* DxEngAltLockSurface */
797 /************************************************************************/
798 DWORD APIENTRY
DxEngAltLockSurface(DWORD x1
)
804 /************************************************************************/
805 /* DxEngUploadPaletteEntryToSurface */
806 /************************************************************************/
807 DWORD APIENTRY
DxEngUploadPaletteEntryToSurface(DWORD x1
, DWORD x2
,DWORD x3
, DWORD x4
)
813 /************************************************************************/
814 /* DxEngMarkSurfaceAsDirectDraw */
815 /************************************************************************/
816 DWORD APIENTRY
DxEngMarkSurfaceAsDirectDraw(DWORD x1
, DWORD x2
)
822 /************************************************************************/
823 /* DxEngSelectPaletteToSurface */
824 /************************************************************************/
825 DWORD APIENTRY
DxEngSelectPaletteToSurface(DWORD x1
, DWORD x2
)
831 /************************************************************************/
832 /* DxEngSyncPaletteTableWithDevice */
833 /************************************************************************/
834 DWORD APIENTRY
DxEngSyncPaletteTableWithDevice(DWORD x1
, DWORD x2
)
840 /************************************************************************/
841 /* DxEngSetPaletteState */
842 /************************************************************************/
843 DWORD APIENTRY
DxEngSetPaletteState(DWORD x1
, DWORD x2
, DWORD x3
)
849 /************************************************************************/
850 /* DxEngGetRedirectionBitmap */
851 /************************************************************************/
854 DxEngGetRedirectionBitmap(DWORD x1
)
856 return FALSE
; // Normal return.
859 /************************************************************************/
861 /************************************************************************/
862 DWORD APIENTRY
DxEngLoadImage(DWORD x1
,DWORD x2
)
868 /************************************************************************/
869 /* DxEngSpTearDownSprites */
870 /************************************************************************/
871 DWORD APIENTRY
DxEngSpTearDownSprites(DWORD x1
, DWORD x2
, DWORD x3
)
877 /************************************************************************/
878 /* DxEngSpUnTearDownSprites */
879 /************************************************************************/
880 DWORD APIENTRY
DxEngSpUnTearDownSprites(DWORD x1
, DWORD x2
, DWORD x3
)
886 /************************************************************************/
887 /* DxEngSpSpritesVisible */
888 /************************************************************************/
889 DWORD APIENTRY
DxEngSpSpritesVisible(DWORD x1
)