2 * DirectDraw NT driver interface
5 #ifndef __DD_INCLUDED__
6 #define __DD_INCLUDED__
14 /* pointer to video memory */
15 typedef ULONG_PTR FLATPTR
;
17 // FIXME: These should have been defined in other header files!
18 typedef struct _DDVIDEOPORTCAPS
*LPDDVIDEOPORTCAPS
; /* should be in dvp.h */
19 typedef struct _DDVIDEOPORTDESC
*LPDDVIDEOPORTDESC
; /* should be in dvp.h */
20 typedef struct _DDVIDEOPORTBANDWIDTH
*LPDDVIDEOPORTBANDWIDTH
; /* should be in dvp.h */
21 typedef struct _DDVIDEOPORTCONNECT
*LPDDVIDEOPORTCONNECT
; /* should be in dvp.h */
22 typedef struct _DDVIDEOPORTINFO
*LPDDVIDEOPORTINFO
; /* should be in dvp.h */
23 typedef struct _DDKERNELCAPS
*LPDDKERNELCAPS
; /* should be in ddkernel.h */
24 typedef struct _VMEMHEAP
*LPVMEMHEAP
; /* should be in dmemmgr.h */
25 typedef struct _DD_VIDEOPORT_LOCAL
*PDD_VIDEOPORT_LOCAL
; /* should be defined here once we have dvp.h */
27 /************************************************************************/
28 /* Video memory info structures */
29 /************************************************************************/
47 } VIDEOMEMORY
, *PVIDEOMEMORY
;
49 #define VIDMEM_ISLINEAR (1<<0)
50 #define VIDMEM_ISRECTANGULAR (1<<1)
51 #define VIDMEM_ISHEAP (1<<2)
52 #define VIDMEM_ISNONLOCAL (1<<3)
53 #define VIDMEM_ISWC (1<<4)
54 #define VIDMEM_ISDISABLED (1<<5)
61 DWORD dwDisplayHeight
;
63 DDPIXELFORMAT ddpfDisplay
;
64 DWORD dwOffscreenAlign
;
71 typedef VIDEOMEMORYINFO
*LPVIDEOMEMORYINFO
;
73 /************************************************************************/
74 /* DDI representation of the DirectDraw object */
75 /************************************************************************/
80 ULONG_PTR dwReserved1
;
81 ULONG_PTR dwReserved2
;
82 LPDDVIDEOPORTCAPS lpDDVideoPortCaps
;
83 } DD_DIRECTDRAW_GLOBAL
, *PDD_DIRECTDRAW_GLOBAL
;
87 PDD_DIRECTDRAW_GLOBAL lpGbl
;
88 } DD_DIRECTDRAW_LOCAL
, *PDD_DIRECTDRAW_LOCAL
;
90 /************************************************************************/
91 /* DDI representation of the DirectDrawSurface object */
92 /************************************************************************/
104 PVIDEOMEMORY lpVidMemHeap
;
119 ULONG_PTR dwReserved1
;
120 DDPIXELFORMAT ddpfSurface
;
121 FLATPTR fpHeapOffset
;
122 HANDLE hCreatorProcess
;
123 } DD_SURFACE_GLOBAL
, *PDD_SURFACE_GLOBAL
;
128 PDD_VIDEOPORT_LOCAL lpVideoPort
;
129 DWORD dwOverlayFlags
;
131 DWORD dwSurfaceHandle
;
132 } DD_SURFACE_MORE
, *PDD_SURFACE_MORE
;
134 typedef struct _DD_ATTACHLIST
*PDD_ATTACHLIST
;
138 PDD_SURFACE_GLOBAL lpGbl
;
141 ULONG_PTR dwReserved1
;
144 DDCOLORKEY ddckCKSrcOverlay
;
145 DDCOLORKEY ddckCKSrcBlt
;
149 DDCOLORKEY ddckCKDestOverlay
;
150 DDCOLORKEY ddckCKDestBlt
;
152 PDD_SURFACE_MORE lpSurfMore
;
153 PDD_ATTACHLIST lpAttachList
;
154 PDD_ATTACHLIST lpAttachListFrom
;
156 } DD_SURFACE_LOCAL
, *PDD_SURFACE_LOCAL
;
158 #define DDRAWISURF_HASCKEYSRCBLT 0x00000800L
159 #define DDRAWISURF_HASPIXELFORMAT 0x00002000L
160 #define DDRAWISURF_HASOVERLAYDATA 0x00004000L
161 #define DDRAWISURF_FRONTBUFFER 0x04000000L
162 #define DDRAWISURF_BACKBUFFER 0x08000000L
163 #define DDRAWISURF_INVALID 0x10000000L
164 #define DDRAWISURF_DRIVERMANAGED 0x40000000L
166 typedef struct _DD_ATTACHLIST
168 PDD_ATTACHLIST lpLink
;
169 PDD_SURFACE_LOCAL lpAttached
;
174 PDD_SURFACE_LOCAL lpLcl
;
175 } DD_SURFACE_INT
, *PDD_SURFACE_INT
;
177 /************************************************************************/
178 /* DDI representation of the DirectDrawPalette object */
179 /************************************************************************/
184 } DD_PALETTE_GLOBAL
, *PDD_PALETTE_GLOBAL
;
186 /************************************************************************/
187 /* DDI representation of the DirectDrawVideo object */
188 /************************************************************************/
192 PDD_DIRECTDRAW_LOCAL lpDD
;
195 DWORD dwUncompHeight
;
196 DDPIXELFORMAT ddUncompPixelFormat
;
197 DWORD dwDriverReserved1
;
198 DWORD dwDriverReserved2
;
199 DWORD dwDriverReserved3
;
200 LPVOID lpDriverReserved1
;
201 LPVOID lpDriverReserved2
;
202 LPVOID lpDriverReserved3
;
203 } DD_MOTIONCOMP_LOCAL
, *PDD_MOTIONCOMP_LOCAL
;
205 /************************************************************************/
206 /* IDirectDrawSurface callbacks */
207 /************************************************************************/
211 PDD_DIRECTDRAW_GLOBAL lpDD
;
212 PDD_SURFACE_LOCAL lpDDSurface
;
220 } DD_LOCKDATA
, *PDD_LOCKDATA
;
221 typedef DWORD (STDCALL
*PDD_SURFCB_LOCK
)(PDD_LOCKDATA
);
225 PDD_DIRECTDRAW_GLOBAL lpDD
;
226 PDD_SURFACE_LOCAL lpDDSurface
;
229 } DD_UNLOCKDATA
, *PDD_UNLOCKDATA
;
230 typedef DWORD (STDCALL
*PDD_SURFCB_UNLOCK
)(PDD_UNLOCKDATA
);
232 #define DDABLT_SRCOVERDEST 0x00000001
233 #define DDBLT_AFLAGS 0x80000000
237 BYTE blue
, green
, red
, alpha
;
242 PDD_DIRECTDRAW_GLOBAL lpDD
;
243 PDD_SURFACE_LOCAL lpDDDestSurface
;
245 PDD_SURFACE_LOCAL lpDDSrcSurface
;
258 DDARGB ddargbScaleFactors
;
259 } DD_BLTDATA
, *PDD_BLTDATA
;
260 typedef DWORD (STDCALL
*PDD_SURFCB_BLT
)(PDD_BLTDATA
);
264 PDD_DIRECTDRAW_GLOBAL lpDD
;
265 PDD_SURFACE_LOCAL lpDDDestSurface
;
267 PDD_SURFACE_LOCAL lpDDSrcSurface
;
270 DDOVERLAYFX overlayFX
;
273 } DD_UPDATEOVERLAYDATA
, *PDD_UPDATEOVERLAYDATA
;
274 typedef DWORD (STDCALL
*PDD_SURFCB_UPDATEOVERLAY
)(PDD_UPDATEOVERLAYDATA
);
278 PDD_DIRECTDRAW_GLOBAL lpDD
;
279 PDD_SURFACE_LOCAL lpDDSrcSurface
;
280 PDD_SURFACE_LOCAL lpDDDestSurface
;
284 PVOID SetOverlayPosition
;
285 } DD_SETOVERLAYPOSITIONDATA
, *PDD_SETOVERLAYPOSITIONDATA
;
286 typedef DWORD (STDCALL
*PDD_SURFCB_SETOVERLAYPOSITION
)(PDD_SETOVERLAYPOSITIONDATA
);
290 PDD_DIRECTDRAW_GLOBAL lpDD
;
291 PDD_SURFACE_LOCAL lpDDSurface
;
292 PDD_PALETTE_GLOBAL lpDDPalette
;
296 } DD_SETPALETTEDATA
, *PDD_SETPALETTEDATA
;
297 typedef DWORD (STDCALL
*PDD_SURFCB_SETPALETTE
)(PDD_SETPALETTEDATA
);
301 PDD_DIRECTDRAW_GLOBAL lpDD
;
302 PDD_SURFACE_LOCAL lpSurfCurr
;
303 PDD_SURFACE_LOCAL lpSurfTarg
;
307 PDD_SURFACE_LOCAL lpSurfCurrLeft
;
308 PDD_SURFACE_LOCAL lpSurfTargLeft
;
309 } DD_FLIPDATA
, *PDD_FLIPDATA
;
310 typedef DWORD (STDCALL
*PDD_SURFCB_FLIP
)(PDD_FLIPDATA
);
314 PDD_DIRECTDRAW_GLOBAL lpDD
;
315 PDD_SURFACE_LOCAL lpDDSurface
;
317 PVOID DestroySurface
;
318 } DD_DESTROYSURFACEDATA
, *PDD_DESTROYSURFACEDATA
;
319 typedef DWORD (STDCALL
*PDD_SURFCB_DESTROYSURFACE
)(PDD_DESTROYSURFACEDATA
);
323 PDD_DIRECTDRAW_GLOBAL lpDD
;
324 PDD_SURFACE_LOCAL lpDDSurface
;
327 } DD_SETCLIPLISTDATA
, *PDD_SETCLIPLISTDATA
;
328 typedef DWORD (STDCALL
*PDD_SURFCB_SETCLIPLIST
)(PDD_SETCLIPLISTDATA
);
332 PDD_DIRECTDRAW_GLOBAL lpDD
;
333 PDD_SURFACE_LOCAL lpDDSurface
;
334 PDD_SURFACE_LOCAL lpSurfAttached
;
336 PVOID AddAttachedSurface
;
337 } DD_ADDATTACHEDSURFACEDATA
, *PDD_ADDATTACHEDSURFACEDATA
;
338 typedef DWORD (STDCALL
*PDD_SURFCB_ADDATTACHEDSURFACE
)(PDD_ADDATTACHEDSURFACEDATA
);
342 PDD_DIRECTDRAW_GLOBAL lpDD
;
343 PDD_SURFACE_LOCAL lpDDSurface
;
348 } DD_SETCOLORKEYDATA
, *PDD_SETCOLORKEYDATA
;
349 typedef DWORD (STDCALL
*PDD_SURFCB_SETCOLORKEY
)(PDD_SETCOLORKEYDATA
);
353 PDD_DIRECTDRAW_GLOBAL lpDD
;
354 PDD_SURFACE_LOCAL lpDDSurface
;
358 } DD_GETBLTSTATUSDATA
, *PDD_GETBLTSTATUSDATA
;
359 typedef DWORD (STDCALL
*PDD_SURFCB_GETBLTSTATUS
)(PDD_GETBLTSTATUSDATA
);
363 PDD_DIRECTDRAW_GLOBAL lpDD
;
364 PDD_SURFACE_LOCAL lpDDSurface
;
368 } DD_GETFLIPSTATUSDATA
, *PDD_GETFLIPSTATUSDATA
;
369 typedef DWORD (STDCALL
*PDD_SURFCB_GETFLIPSTATUS
)(PDD_GETFLIPSTATUSDATA
);
375 PDD_SURFCB_DESTROYSURFACE DestroySurface
;
376 PDD_SURFCB_FLIP Flip
;
377 PDD_SURFCB_SETCLIPLIST SetClipList
;
378 PDD_SURFCB_LOCK Lock
;
379 PDD_SURFCB_UNLOCK Unlock
;
381 PDD_SURFCB_SETCOLORKEY SetColorKey
;
382 PDD_SURFCB_ADDATTACHEDSURFACE AddAttachedSurface
;
383 PDD_SURFCB_GETBLTSTATUS GetBltStatus
;
384 PDD_SURFCB_GETFLIPSTATUS GetFlipStatus
;
385 PDD_SURFCB_UPDATEOVERLAY UpdateOverlay
;
386 PDD_SURFCB_SETOVERLAYPOSITION SetOverlayPosition
;
388 PDD_SURFCB_SETPALETTE SetPalette
;
389 } DD_SURFACECALLBACKS
, *PDD_SURFACECALLBACKS
;
393 DDHAL_SURFCB32_DESTROYSURFACE
= 1<<0,
394 DDHAL_SURFCB32_FLIP
= 1<<1,
395 DDHAL_SURFCB32_SETCLIPLIST
= 1<<2,
396 DDHAL_SURFCB32_LOCK
= 1<<3,
397 DDHAL_SURFCB32_UNLOCK
= 1<<4,
398 DDHAL_SURFCB32_BLT
= 1<<5,
399 DDHAL_SURFCB32_SETCOLORKEY
= 1<<6,
400 DDHAL_SURFCB32_ADDATTACHEDSURFACE
= 1<<7,
401 DDHAL_SURFCB32_GETBLTSTATUS
= 1<<8,
402 DDHAL_SURFCB32_GETFLIPSTATUS
= 1<<9,
403 DDHAL_SURFCB32_UPDATEOVERLAY
= 1<<10,
404 DDHAL_SURFCB32_SETOVERLAYPOSITION
= 1<<11,
405 DDHAL_SURFCB32_SETPALETTE
= 1<<13,
408 /************************************************************************/
409 /* IDirectDraw callbacks */
410 /************************************************************************/
414 PDD_DIRECTDRAW_GLOBAL lpDD
;
415 DDSURFACEDESC
*lpDDSurfaceDesc
;
416 PDD_SURFACE_LOCAL
*lplpSList
;
420 } DD_CREATESURFACEDATA
, *PDD_CREATESURFACEDATA
;
421 typedef DWORD (STDCALL
*PDD_CREATESURFACE
)(PDD_CREATESURFACEDATA
);
425 PDD_SURFACE_LOCAL lpDDSurface
;
430 } DD_DRVSETCOLORKEYDATA
, *PDD_DRVSETCOLORKEYDATA
;
431 typedef DWORD (STDCALL
*PDD_SETCOLORKEY
)(PDD_DRVSETCOLORKEYDATA
);
433 #define DDWAITVB_I_TESTVB 0x80000006
437 PDD_DIRECTDRAW_GLOBAL lpDD
;
442 PVOID WaitForVerticalBlank
;
443 } DD_WAITFORVERTICALBLANKDATA
, *PDD_WAITFORVERTICALBLANKDATA
;
444 typedef DWORD (STDCALL
*PDD_WAITFORVERTICALBLANK
)(PDD_WAITFORVERTICALBLANKDATA
);
448 PDD_DIRECTDRAW_GLOBAL lpDD
;
449 DDSURFACEDESC
*lpDDSurfaceDesc
;
450 DWORD bIsDifferentPixelFormat
;
452 PVOID CanCreateSurface
;
453 } DD_CANCREATESURFACEDATA
, *PDD_CANCREATESURFACEDATA
;
454 typedef DWORD (STDCALL
*PDD_CANCREATESURFACE
)(PDD_CANCREATESURFACEDATA
);
458 PDD_DIRECTDRAW_GLOBAL lpDD
;
459 PDD_PALETTE_GLOBAL lpDDPalette
;
460 LPPALETTEENTRY lpColorTable
;
464 } DD_CREATEPALETTEDATA
, *PDD_CREATEPALETTEDATA
;
465 typedef DWORD (STDCALL
*PDD_CREATEPALETTE
)(PDD_CREATEPALETTEDATA
);
469 PDD_DIRECTDRAW_GLOBAL lpDD
;
473 } DD_GETSCANLINEDATA
, *PDD_GETSCANLINEDATA
;
474 typedef DWORD (STDCALL
*PDD_GETSCANLINE
)(PDD_GETSCANLINEDATA
);
478 PDD_DIRECTDRAW_GLOBAL lpDD
;
483 } DD_MAPMEMORYDATA
, *PDD_MAPMEMORYDATA
;
484 typedef DWORD (STDCALL
*PDD_MAPMEMORY
)(PDD_MAPMEMORYDATA
);
491 PDD_CREATESURFACE CreateSurface
;
492 PDD_SETCOLORKEY SetColorKey
;
494 PDD_WAITFORVERTICALBLANK WaitForVerticalBlank
;
495 PDD_CANCREATESURFACE CanCreateSurface
;
496 PDD_CREATEPALETTE CreatePalette
;
497 PDD_GETSCANLINE GetScanLine
;
498 PDD_MAPMEMORY MapMemory
;
499 } DD_CALLBACKS
, *PDD_CALLBACKS
;
503 DDHAL_CB32_CREATESURFACE
= 1<<1,
504 DDHAL_CB32_SETCOLORKEY
= 1<<2,
505 DDHAL_CB32_WAITFORVERTICALBLANK
= 1<<4,
506 DDHAL_CB32_CANCREATESURFACE
= 1<<5,
507 DDHAL_CB32_CREATEPALETTE
= 1<<6,
508 DDHAL_CB32_GETSCANLINE
= 1<<7,
509 DDHAL_CB32_MAPMEMORY
= 1<<31,
514 PDD_DIRECTDRAW_GLOBAL lpDD
;
519 PVOID GetAvailDriverMemory
;
520 } DD_GETAVAILDRIVERMEMORYDATA
, *PDD_GETAVAILDRIVERMEMORYDATA
;
521 typedef DWORD (STDCALL
*PDD_GETAVAILDRIVERMEMORY
)(PDD_GETAVAILDRIVERMEMORYDATA
);
523 DEFINE_GUID(GUID_MiscellaneousCallbacks
, 0xEFD60CC0, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
529 PDD_GETAVAILDRIVERMEMORY GetAvailDriverMemory
;
530 } DD_MISCELLANEOUSCALLBACKS
, *PDD_MISCELLANEOUSCALLBACKS
;
534 DDHAL_MISCCB32_GETAVAILDRIVERMEMORY
= 1<<0,
537 typedef DWORD (STDCALL
*PDD_ALPHABLT
)(PDD_BLTDATA
);
542 PDD_DIRECTDRAW_LOCAL lpDDLcl
;
543 PDD_SURFACE_LOCAL lpDDSLcl
;
545 } DD_CREATESURFACEEXDATA
, *PDD_CREATESURFACEEXDATA
;
546 typedef DWORD (STDCALL
*PDD_CREATESURFACEEX
)(PDD_CREATESURFACEEXDATA
);
553 PDD_DIRECTDRAW_GLOBAL lpDD
;
554 DWORD_PTR dwhContext
;
559 } DD_GETDRIVERSTATEDATA
, *PDD_GETDRIVERSTATEDATA
;
560 typedef DWORD (STDCALL
*PDD_GETDRIVERSTATE
)(PDD_GETDRIVERSTATEDATA
);
565 PDD_DIRECTDRAW_LOCAL pDDLcl
;
567 } DD_DESTROYDDLOCALDATA
, *PDD_DESTROYDDLOCALDATA
;
568 typedef DWORD (STDCALL
*PDD_DESTROYDDLOCAL
)(PDD_DESTROYDDLOCALDATA
);
570 DEFINE_GUID(GUID_Miscellaneous2Callbacks
, 0x406B2F00, 0x3E5A, 0x11D1, 0xB6, 0x40, 0x00, 0xAA, 0x00, 0xA1, 0xF9, 0x6A);
576 PDD_ALPHABLT AlphaBlt
;
577 PDD_CREATESURFACEEX CreateSurfaceEx
;
578 PDD_GETDRIVERSTATE GetDriverState
;
579 PDD_DESTROYDDLOCAL DestroyDDLocal
;
580 } DD_MISCELLANEOUS2CALLBACKS
, *PDD_MISCELLANEOUS2CALLBACKS
;
584 DDHAL_MISC2CB32_ALPHABLT
= 1<<0,
585 DDHAL_MISC2CB32_CREATESURFACEEX
= 1<<1,
586 DDHAL_MISC2CB32_GETDRIVERSTATE
= 1<<2,
587 DDHAL_MISC2CB32_DESTROYDDLOCAL
= 1<<3,
592 PDD_DIRECTDRAW_GLOBAL lpDD
;
593 PDD_SURFACE_LOCAL lpDDSurface
;
595 PVOID FreeDriverMemory
;
596 } DD_FREEDRIVERMEMORYDATA
, *PDD_FREEDRIVERMEMORYDATA
;
597 typedef DWORD (STDCALL
*PDD_FREEDRIVERMEMORY
)(PDD_FREEDRIVERMEMORYDATA
);
601 PDD_DIRECTDRAW_GLOBAL lpDD
;
605 PVOID SetExclusiveMode
;
606 } DD_SETEXCLUSIVEMODEDATA
, *PDD_SETEXCLUSIVEMODEDATA
;
607 typedef DWORD (STDCALL
*PDD_SETEXCLUSIVEMODE
)(PDD_SETEXCLUSIVEMODEDATA
);
611 PDD_DIRECTDRAW_GLOBAL lpDD
;
615 PVOID FlipToGDISurface
;
616 } DD_FLIPTOGDISURFACEDATA
, *PDD_FLIPTOGDISURFACEDATA
;
617 typedef DWORD (STDCALL
*PDD_FLIPTOGDISURFACE
)(PDD_FLIPTOGDISURFACEDATA
);
619 DEFINE_GUID(GUID_NTCallbacks
, 0x6FE9ECDE, 0xDF89, 0x11D1, 0x9D, 0xB0, 0x00, 0x60, 0x08, 0x27, 0x71, 0xBA);
625 PDD_FREEDRIVERMEMORY FreeDriverMemory
;
626 PDD_SETEXCLUSIVEMODE SetExclusiveMode
;
627 PDD_FLIPTOGDISURFACE FlipToGDISurface
;
628 } DD_NTCALLBACKS
, *PDD_NTCALLBACKS
;
632 DDHAL_NTCB32_FREEDRIVERMEMORY
= 1<<0,
633 DDHAL_NTCB32_SETEXCLUSIVEMODE
= 1<<1,
634 DDHAL_NTCB32_FLIPTOGDISURFACE
= 1<<2,
637 /************************************************************************/
638 /* IDirectDrawPalette callbacks */
639 /************************************************************************/
643 PDD_DIRECTDRAW_GLOBAL lpDD
;
644 PDD_PALETTE_GLOBAL lpDDPalette
;
646 PVOID DestroyPalette
;
647 } DD_DESTROYPALETTEDATA
, *PDD_DESTROYPALETTEDATA
;
648 typedef DWORD (STDCALL
*PDD_PALCB_DESTROYPALETTE
)(PDD_DESTROYPALETTEDATA
);
652 PDD_DIRECTDRAW_GLOBAL lpDD
;
653 PDD_PALETTE_GLOBAL lpDDPalette
;
656 LPPALETTEENTRY lpEntries
;
659 } DD_SETENTRIESDATA
, *PDD_SETENTRIESDATA
;
660 typedef DWORD (STDCALL
*PDD_PALCB_SETENTRIES
)(PDD_SETENTRIESDATA
);
666 PDD_PALCB_DESTROYPALETTE DestroyPalette
;
667 PDD_PALCB_SETENTRIES SetEntries
;
668 } DD_PALETTECALLBACKS
, *PDD_PALETTECALLBACKS
;
672 DDHAL_PALCB32_DESTROYPALETTE
= 1<<0,
673 DDHAL_PALCB32_SETENTRIES
= 1<<1,
676 /************************************************************************/
677 /* IDirectDrawVideoport callbacks */
678 /************************************************************************/
682 PDD_DIRECTDRAW_LOCAL lpDD
;
683 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
685 PVOID CanCreateVideoPort
;
686 } DD_CANCREATEVPORTDATA
, *PDD_CANCREATEVPORTDATA
;
687 typedef DWORD (STDCALL
*PDD_VPORTCB_CANCREATEVIDEOPORT
)(PDD_CANCREATEVPORTDATA
);
691 PDD_DIRECTDRAW_LOCAL lpDD
;
692 LPDDVIDEOPORTDESC lpDDVideoPortDesc
;
693 PDD_VIDEOPORT_LOCAL lpVideoPort
;
695 PVOID CreateVideoPort
;
696 } DD_CREATEVPORTDATA
, *PDD_CREATEVPORTDATA
;
697 typedef DWORD (STDCALL
*PDD_VPORTCB_CREATEVIDEOPORT
)(PDD_CREATEVPORTDATA
);
701 PDD_DIRECTDRAW_LOCAL lpDD
;
702 PDD_VIDEOPORT_LOCAL lpVideoPort
;
703 PDD_SURFACE_LOCAL lpSurfCurr
;
704 PDD_SURFACE_LOCAL lpSurfTarg
;
707 } DD_FLIPVPORTDATA
, *PDD_FLIPVPORTDATA
;
708 typedef DWORD (STDCALL
*PDD_VPORTCB_FLIP
)(PDD_FLIPVPORTDATA
);
712 PDD_DIRECTDRAW_LOCAL lpDD
;
713 PDD_VIDEOPORT_LOCAL lpVideoPort
;
714 LPDDPIXELFORMAT lpddpfFormat
;
718 LPDDVIDEOPORTBANDWIDTH lpBandwidth
;
720 PVOID GetVideoPortBandwidth
;
721 } DD_GETVPORTBANDWIDTHDATA
, *PDD_GETVPORTBANDWIDTHDATA
;
722 typedef DWORD (STDCALL
*PDD_VPORTCB_GETBANDWIDTH
)(PDD_GETVPORTBANDWIDTHDATA
);
726 PDD_DIRECTDRAW_LOCAL lpDD
;
727 PDD_VIDEOPORT_LOCAL lpVideoPort
;
729 LPDDPIXELFORMAT lpddpfFormat
;
732 PVOID GetVideoPortInputFormats
;
733 } DD_GETVPORTINPUTFORMATDATA
, *PDD_GETVPORTINPUTFORMATDATA
;
734 typedef DWORD (STDCALL
*PDD_VPORTCB_GETINPUTFORMATS
)(PDD_GETVPORTINPUTFORMATDATA
);
738 PDD_DIRECTDRAW_LOCAL lpDD
;
739 PDD_VIDEOPORT_LOCAL lpVideoPort
;
741 LPDDPIXELFORMAT lpddpfInputFormat
;
742 LPDDPIXELFORMAT lpddpfOutputFormats
;
745 PVOID GetVideoPortInputFormats
;
746 } DD_GETVPORTOUTPUTFORMATDATA
, *PDD_GETVPORTOUTPUTFORMATDATA
;
747 typedef DWORD (STDCALL
*PDD_VPORTCB_GETOUTPUTFORMATS
)(PDD_GETVPORTOUTPUTFORMATDATA
);
751 PDD_DIRECTDRAW_LOCAL lpDD
;
752 PDD_VIDEOPORT_LOCAL lpVideoPort
;
755 PVOID GetVideoPortField
;
756 } DD_GETVPORTFIELDDATA
, *PDD_GETVPORTFIELDDATA
;
757 typedef DWORD (STDCALL
*PDD_VPORTCB_GETFIELD
)(PDD_GETVPORTFIELDDATA
);
761 PDD_DIRECTDRAW_LOCAL lpDD
;
762 PDD_VIDEOPORT_LOCAL lpVideoPort
;
765 PVOID GetVideoPortLine
;
766 } DD_GETVPORTLINEDATA
, *PDD_GETVPORTLINEDATA
;
767 typedef DWORD (STDCALL
*PDD_VPORTCB_GETLINE
)(PDD_GETVPORTLINEDATA
);
771 PDD_DIRECTDRAW_LOCAL lpDD
;
773 LPDDVIDEOPORTCONNECT lpConnect
;
776 PVOID GetVideoPortConnectInfo
;
777 } DD_GETVPORTCONNECTDATA
, *PDD_GETVPORTCONNECTDATA
;
778 typedef DWORD (STDCALL
*PDD_VPORTCB_GETVPORTCONNECT
)(PDD_GETVPORTCONNECTDATA
);
782 PDD_DIRECTDRAW_LOCAL lpDD
;
783 PDD_VIDEOPORT_LOCAL lpVideoPort
;
785 PVOID DestroyVideoPort
;
786 } DD_DESTROYVPORTDATA
, *PDD_DESTROYVPORTDATA
;
787 typedef DWORD (STDCALL
*PDD_VPORTCB_DESTROYVPORT
)(PDD_DESTROYVPORTDATA
);
791 PDD_DIRECTDRAW_LOCAL lpDD
;
794 PVOID GetVideoPortFlipStatus
;
795 } DD_GETVPORTFLIPSTATUSDATA
, *PDD_GETVPORTFLIPSTATUSDATA
;
796 typedef DWORD (STDCALL
*PDD_VPORTCB_GETFLIPSTATUS
)(PDD_GETVPORTFLIPSTATUSDATA
);
798 #define DDRAWI_VPORTSTART 1
799 #define DDRAWI_VPORTSTOP 2
800 #define DDRAWI_VPORTUPDATE 3
804 PDD_DIRECTDRAW_LOCAL lpDD
;
805 PDD_VIDEOPORT_LOCAL lpVideoPort
;
806 PDD_SURFACE_INT
*lplpDDSurface
;
807 PDD_SURFACE_INT
*lplpDDVBISurface
;
808 LPDDVIDEOPORTINFO lpVideoInfo
;
811 DWORD dwNumVBIAutoflip
;
813 PVOID UpdateVideoPort
;
814 } DD_UPDATEVPORTDATA
, *PDD_UPDATEVPORTDATA
;
815 typedef DWORD (STDCALL
*PDD_VPORTCB_UPDATE
)(PDD_UPDATEVPORTDATA
);
819 PDD_DIRECTDRAW_LOCAL lpDD
;
820 PDD_VIDEOPORT_LOCAL lpVideoPort
;
825 PVOID UpdateVideoPort
;
826 } DD_WAITFORVPORTSYNCDATA
, *PDD_WAITFORVPORTSYNCDATA
;
827 typedef DWORD (STDCALL
*PDD_VPORTCB_WAITFORSYNC
)(PDD_WAITFORVPORTSYNCDATA
);
831 PDD_DIRECTDRAW_LOCAL lpDD
;
832 PDD_VIDEOPORT_LOCAL lpVideoPort
;
835 PVOID GetVideoSignalStatus
;
836 } DD_GETVPORTSIGNALDATA
, *PDD_GETVPORTSIGNALDATA
;
837 typedef DWORD (STDCALL
*PDD_VPORTCB_GETSIGNALSTATUS
)(PDD_GETVPORTSIGNALDATA
);
839 #define DDRAWI_VPORTGETCOLOR 1
840 #define DDRAWI_VPORTSETCOLOR 2
844 PDD_DIRECTDRAW_LOCAL lpDD
;
845 PDD_VIDEOPORT_LOCAL lpVideoPort
;
847 LPDDCOLORCONTROL lpColorData
;
850 } DD_VPORTCOLORDATA
, *PDD_VPORTCOLORDATA
;
851 typedef DWORD (STDCALL
*PDD_VPORTCB_COLORCONTROL
)(PDD_VPORTCOLORDATA
);
853 DEFINE_GUID(GUID_VideoPortCallbacks
, 0xEFD60CC1, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
859 PDD_VPORTCB_CANCREATEVIDEOPORT CanCreateVideoPort
;
860 PDD_VPORTCB_CREATEVIDEOPORT CreateVideoPort
;
861 PDD_VPORTCB_FLIP FlipVideoPort
;
862 PDD_VPORTCB_GETBANDWIDTH GetVideoPortBandwidth
;
863 PDD_VPORTCB_GETINPUTFORMATS GetVideoPortInputFormats
;
864 PDD_VPORTCB_GETOUTPUTFORMATS GetVideoPortOutputFormats
;
866 PDD_VPORTCB_GETFIELD GetVideoPortField
;
867 PDD_VPORTCB_GETLINE GetVideoPortLine
;
868 PDD_VPORTCB_GETVPORTCONNECT GetVideoPortConnectInfo
;
869 PDD_VPORTCB_DESTROYVPORT DestroyVideoPort
;
870 PDD_VPORTCB_GETFLIPSTATUS GetVideoPortFlipStatus
;
871 PDD_VPORTCB_UPDATE UpdateVideoPort
;
872 PDD_VPORTCB_WAITFORSYNC WaitForVideoPortSync
;
873 PDD_VPORTCB_GETSIGNALSTATUS GetVideoSignalStatus
;
874 PDD_VPORTCB_COLORCONTROL ColorControl
;
875 } DD_VIDEOPORTCALLBACKS
, *PDD_VIDEOPORTCALLBACKS
;
879 DDHAL_VPORT32_CANCREATEVIDEOPORT
= 1<<0,
880 DDHAL_VPORT32_CREATEVIDEOPORT
= 1<<1,
881 DDHAL_VPORT32_FLIP
= 1<<2,
882 DDHAL_VPORT32_GETBANDWIDTH
= 1<<3,
883 DDHAL_VPORT32_GETINPUTFORMATS
= 1<<4,
884 DDHAL_VPORT32_GETOUTPUTFORMATS
= 1<<5,
885 DDHAL_VPORT32_GETFIELD
= 1<<7,
886 DDHAL_VPORT32_GETLINE
= 1<<8,
887 DDHAL_VPORT32_GETCONNECT
= 1<<9,
888 DDHAL_VPORT32_DESTROY
= 1<<10,
889 DDHAL_VPORT32_GETFLIPSTATUS
= 1<<11,
890 DDHAL_VPORT32_UPDATE
= 1<<12,
891 DDHAL_VPORT32_WAITFORSYNC
= 1<<13,
892 DDHAL_VPORT32_GETSIGNALSTATUS
= 1<<14,
893 DDHAL_VPORT32_COLORCONTROL
= 1<<15,
896 /************************************************************************/
897 /* IDirectDrawColorControl callbacks */
898 /************************************************************************/
900 #define DDRAWI_GETCOLOR 1
901 #define DDRAWI_SETCOLOR 2
905 PDD_DIRECTDRAW_GLOBAL lpDD
;
906 PDD_SURFACE_LOCAL lpDDSurface
;
907 LPDDCOLORCONTROL lpColorData
;
911 } DD_COLORCONTROLDATA
, *PDD_COLORCONTROLDATA
;
912 typedef DWORD (STDCALL
*PDD_COLORCB_COLORCONTROL
)(PDD_COLORCONTROLDATA
);
914 DEFINE_GUID(GUID_ColorControlCallbacks
, 0xEFD60CC2, 0x49E7, 0x11D0, 0x88, 0x9D, 0x00, 0xAA, 0x00, 0xBB, 0xB7, 0x6A);
920 PDD_COLORCB_COLORCONTROL ColorControl
;
921 } DD_COLORCONTROLCALLBACKS
, *PDD_COLORCONTROLCALLBACKS
;
925 DDHAL_COLOR_COLORCONTROL
= 1<<0,
928 /************************************************************************/
929 /* IDirectDrawVideo callbacks */
930 /************************************************************************/
934 PDD_DIRECTDRAW_LOCAL lpDD
;
938 } DD_GETMOCOMPGUIDSDATA
, *PDD_GETMOCOMPGUIDSDATA
;
939 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETGUIDS
)(PDD_GETMOCOMPGUIDSDATA
);
943 PDD_DIRECTDRAW_LOCAL lpDD
;
946 LPDDPIXELFORMAT lpFormats
;
948 } DD_GETMOCOMPFORMATSDATA
, *PDD_GETMOCOMPFORMATSDATA
;
949 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETFORMATS
)(PDD_GETMOCOMPFORMATSDATA
);
953 PDD_DIRECTDRAW_LOCAL lpDD
;
954 PDD_MOTIONCOMP_LOCAL lpMoComp
;
957 DWORD dwUncompHeight
;
958 DDPIXELFORMAT ddUncompPixelFormat
;
962 } DD_CREATEMOCOMPDATA
, *PDD_CREATEMOCOMPDATA
;
963 typedef DWORD (STDCALL
*PDD_MOCOMPCB_CREATE
)(PDD_CREATEMOCOMPDATA
);
968 DWORD dwNumCompBuffers
;
969 DWORD dwWidthToCreate
;
970 DWORD dwHeightToCreate
;
971 DWORD dwBytesToAllocate
;
973 DDPIXELFORMAT ddPixelFormat
;
974 } DDCOMPBUFFERINFO
, *PDDCOMPBUFFERINFO
;
978 PDD_DIRECTDRAW_LOCAL lpDD
;
982 DDPIXELFORMAT ddPixelFormat
;
983 DWORD dwNumTypesCompBuffs
;
984 PDDCOMPBUFFERINFO lpCompBuffInfo
;
986 } DD_GETMOCOMPCOMPBUFFDATA
, *PDD_GETMOCOMPCOMPBUFFDATA
;
987 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETCOMPBUFFINFO
)(PDD_GETMOCOMPCOMPBUFFDATA
);
991 PDD_DIRECTDRAW_LOCAL lpDD
;
995 DDPIXELFORMAT ddPixelFormat
;
996 DWORD dwScratchMemAlloc
;
998 } DD_GETINTERNALMOCOMPDATA
, *PDD_GETINTERNALMOCOMPDATA
;
999 typedef DWORD (STDCALL
*PDD_MOCOMPCB_GETINTERNALINFO
)(PDD_GETINTERNALMOCOMPDATA
);
1003 PDD_DIRECTDRAW_LOCAL lpDD
;
1004 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1005 PDD_SURFACE_LOCAL lpDestSurface
;
1006 DWORD dwInputDataSize
;
1008 DWORD dwOutputDataSize
;
1009 LPVOID lpOutputData
;
1011 } DD_BEGINMOCOMPFRAMEDATA
, *PDD_BEGINMOCOMPFRAMEDATA
;
1012 typedef DWORD (STDCALL
*PDD_MOCOMPCB_BEGINFRAME
)(PDD_BEGINMOCOMPFRAMEDATA
);
1016 PDD_DIRECTDRAW_LOCAL lpDD
;
1017 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1019 DWORD dwInputDataSize
;
1021 } DD_ENDMOCOMPFRAMEDATA
, *PDD_ENDMOCOMPFRAMEDATA
;
1022 typedef DWORD (STDCALL
*PDD_MOCOMPCB_ENDFRAME
)(PDD_ENDMOCOMPFRAMEDATA
);
1027 PDD_SURFACE_LOCAL lpCompSurface
;
1031 } DDMOCOMPBUFFERINFO
, *PDDMOCOMPBUFFERINFO
;
1035 PDD_DIRECTDRAW_LOCAL lpDD
;
1036 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1038 PDDMOCOMPBUFFERINFO lpBufferInfo
;
1041 DWORD dwInputDataSize
;
1042 LPVOID lpOutputData
;
1043 DWORD dwOutputDataSize
;
1045 } DD_RENDERMOCOMPDATA
, *PDD_RENDERMOCOMPDATA
;
1046 typedef DWORD (STDCALL
*PDD_MOCOMPCB_RENDER
)(PDD_RENDERMOCOMPDATA
);
1048 #define DDMCQUERY_READ 1
1052 PDD_DIRECTDRAW_LOCAL lpDD
;
1053 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1054 PDD_SURFACE_LOCAL lpSurface
;
1057 } DD_QUERYMOCOMPSTATUSDATA
, *PDD_QUERYMOCOMPSTATUSDATA
;
1058 typedef DWORD (STDCALL
*PDD_MOCOMPCB_QUERYSTATUS
)(PDD_QUERYMOCOMPSTATUSDATA
);
1062 PDD_DIRECTDRAW_LOCAL lpDD
;
1063 PDD_MOTIONCOMP_LOCAL lpMoComp
;
1065 } DD_DESTROYMOCOMPDATA
, *PDD_DESTROYMOCOMPDATA
;
1066 typedef DWORD (STDCALL
*PDD_MOCOMPCB_DESTROY
)(PDD_DESTROYMOCOMPDATA
);
1068 DEFINE_GUID(GUID_MotionCompCallbacks
, 0xB1122B40, 0x5DA5, 0x11D1, 0x8F, 0xCF, 0x00, 0xC0, 0x4F, 0xC2, 0x9B, 0x4E);
1074 PDD_MOCOMPCB_GETGUIDS GetMoCompGuids
;
1075 PDD_MOCOMPCB_GETFORMATS GetMoCompFormats
;
1076 PDD_MOCOMPCB_CREATE CreateMoComp
;
1077 PDD_MOCOMPCB_GETCOMPBUFFINFO GetMoCompBuffInfo
;
1078 PDD_MOCOMPCB_GETINTERNALINFO GetInternalMoCompInfo
;
1079 PDD_MOCOMPCB_BEGINFRAME BeginMoCompFrame
;
1080 PDD_MOCOMPCB_ENDFRAME EndMoCompFrame
;
1081 PDD_MOCOMPCB_RENDER RenderMoComp
;
1082 PDD_MOCOMPCB_QUERYSTATUS QueryMoCompStatus
;
1083 PDD_MOCOMPCB_DESTROY DestroyMoComp
;
1084 } DD_MOTIONCOMPCALLBACKS
;
1085 typedef DD_MOTIONCOMPCALLBACKS
*PDD_MOTIONCOMPCALLBACKS
;
1089 DDHAL_MOCOMP32_GETGUIDS
= 1<<0,
1090 DDHAL_MOCOMP32_GETFORMATS
= 1<<1,
1091 DDHAL_MOCOMP32_CREATE
= 1<<2,
1092 DDHAL_MOCOMP32_GETCOMPBUFFINFO
= 1<<3,
1093 DDHAL_MOCOMP32_GETINTERNALINFO
= 1<<4,
1094 DDHAL_MOCOMP32_BEGINFRAME
= 1<<5,
1095 DDHAL_MOCOMP32_ENDFRAME
= 1<<6,
1096 DDHAL_MOCOMP32_RENDER
= 1<<7,
1097 DDHAL_MOCOMP32_QUERYSTATUS
= 1<<8,
1098 DDHAL_MOCOMP32_DESTROY
= 1<<9,
1101 /************************************************************************/
1102 /* D3D buffer callbacks */
1103 /************************************************************************/
1109 PDD_CANCREATESURFACE CanCreateD3DBuffer
;
1110 PDD_CREATESURFACE CreateD3DBuffer
;
1111 PDD_SURFCB_DESTROYSURFACE DestroyD3DBuffer
;
1112 PDD_SURFCB_LOCK LockD3DBuffer
;
1113 PDD_SURFCB_UNLOCK UnlockD3DBuffer
;
1114 } DD_D3DBUFCALLBACKS
, *PDD_D3DBUFCALLBACKS
;
1116 /************************************************************************/
1117 /* DdGetDriverInfo callback */
1118 /************************************************************************/
1127 DWORD dwExpectedSize
;
1132 } DD_GETDRIVERINFODATA
, *PDD_GETDRIVERINFODATA
;
1133 typedef DWORD (STDCALL
*PDD_GETDRIVERINFO
)(PDD_GETDRIVERINFODATA
);
1135 /************************************************************************/
1136 /* Driver info structures */
1137 /************************************************************************/
1146 DWORD dwFXAlphaCaps
;
1149 DWORD dwAlphaBltConstBitDepths
;
1150 DWORD dwAlphaBltPixelBitDepths
;
1151 DWORD dwAlphaBltSurfaceBitDepths
;
1152 DWORD dwAlphaOverlayConstBitDepths
;
1153 DWORD dwAlphaOverlayPixelBitDepths
;
1154 DWORD dwAlphaOverlaySurfaceBitDepths
;
1155 DWORD dwZBufferBitDepths
;
1156 DWORD dwVidMemTotal
;
1158 DWORD dwMaxVisibleOverlays
;
1159 DWORD dwCurrVisibleOverlays
;
1160 DWORD dwNumFourCCCodes
;
1161 DWORD dwAlignBoundarySrc
;
1162 DWORD dwAlignSizeSrc
;
1163 DWORD dwAlignBoundaryDest
;
1164 DWORD dwAlignSizeDest
;
1165 DWORD dwAlignStrideAlign
;
1166 DWORD dwRops
[DD_ROP_SPACE
];
1168 DWORD dwMinOverlayStretch
;
1169 DWORD dwMaxOverlayStretch
;
1170 DWORD dwMinLiveVideoStretch
;
1171 DWORD dwMaxLiveVideoStretch
;
1172 DWORD dwMinHwCodecStretch
;
1173 DWORD dwMaxHwCodecStretch
;
1178 DWORD dwSVBCKeyCaps
;
1180 DWORD dwSVBRops
[DD_ROP_SPACE
];
1182 DWORD dwVSBCKeyCaps
;
1184 DWORD dwVSBRops
[DD_ROP_SPACE
];
1186 DWORD dwSSBCKeyCaps
;
1188 DWORD dwSSBRops
[DD_ROP_SPACE
];
1189 DWORD dwMaxVideoPorts
;
1190 DWORD dwCurrVideoPorts
;
1192 } DDNTCORECAPS
, *PDDNTCORECAPS
;
1197 VIDEOMEMORYINFO vmiData
;
1198 DDNTCORECAPS ddCaps
;
1199 PDD_GETDRIVERINFO GetDriverInfo
;
1201 PVOID lpD3DGlobalDriverData
;
1202 PVOID lpD3DHALCallbacks
;
1203 PDD_D3DBUFCALLBACKS lpD3DBufCallbacks
;
1204 } DD_HALINFO
, *PDD_HALINFO
;
1206 DEFINE_GUID(GUID_NonLocalVidMemCaps
, 0x86C4FA80, 0x8D84, 0x11D0, 0x94, 0xE8, 0x00, 0xC0, 0x4F, 0xC3, 0x41, 0x37);
1213 DWORD dwNLVBCKeyCaps
;
1215 DWORD dwNLVBRops
[DD_ROP_SPACE
];
1216 } DD_NONLOCALVIDMEMCAPS
, *PDD_NONLOCALVIDMEMCAPS
;
1218 DEFINE_GUID(GUID_DDMoreSurfaceCaps
, 0x3B8A0466, 0xF269, 0x11D1, 0x88, 0x0B, 0x00, 0xC0, 0x4F, 0xD9, 0x30, 0xC5);
1223 DDSCAPSEX ddsCapsMore
;
1226 DDSCAPSEX ddsCapsEx
;
1227 DDSCAPSEX ddsCapsExAlt
;
1228 } ddsExtendedHeapRestrictions
[1];
1229 } DD_MORESURFACECAPS
, *PDD_MORESURFACECAPS
;
1235 #endif /* __DD_INCLUDED__ */