From www.williamfeely.info
API
ddraw.dll functions
| Function
|
Implemented
|
Notes
|
| DirectDrawCreate
|
Partial
|
Only supports primary display
|
| DirectDrawCreateEx
|
Partial
|
Same as DirectDrawCreate
|
| DirectDrawCreateClipper
|
Yes
|
|
| DirectDrawEnumerateA
|
Partial
|
|
| DirectDrawEnumerateW
|
Partial
|
|
| DirectDrawEnumerateExA
|
Partial
|
|
| DirectDrawEnumerateExW
|
Partial
|
Supports other DirectDrawEnumerate functions
Only returns Primary Display Driver
|
| DllCanUnloadNow
|
No
|
Returns S_FALSE
|
| DllGetClassObject
|
Partial
|
Class Factory not yet written
|
IClassFactory functions
| Function
|
Implemented
|
Notes
|
| AddRef
|
Yes
|
|
| CreateInstance
|
Yes
|
|
| LockServer
|
Yes
|
|
| QueryInterface
|
Yes
|
|
| Release
|
Yes
|
|
IDirectDraw7 functions
| Function
|
Implemented
|
Notes
|
| Compact
|
N/A
|
Not implemented in `real` DirectDraw.
|
| CreteClipper
|
Yes
|
|
| CreatePalette
|
Partial
|
Currently only creates 256-color palettes
|
| CreateSurface
|
Partial
|
See other tables
|
| DuplicateSurface
|
No
|
|
| EnumDisplayModes
|
Yes
|
Enhanced with extra modes and color depths
|
| EnumSurfaces
|
No
|
|
| EvaluateMode
|
No
|
|
| FlipToGDISurface
|
Broken
|
Currently crashes program
|
| GetAvailableVidMem
|
No
|
|
| GetCaps
|
Yes
|
See caps tables
|
| GetDeviceIdentifier
|
Partial
|
Creates `dummy` identifier
|
| GetDisplayMode
|
Yes
|
|
| GetFourCCCodes
|
No
|
|
| GetGDISurface
|
No
|
|
| GetMonitorFrequency
|
Partial
|
Only supports primary display
|
| GetScanLine
|
No
|
|
| GetSurfaceFromDC
|
No
|
|
| GetVerticalBlankStatus
|
No
|
|
| Initialize
|
Yes
|
|
| RestoreAllSurfaces
|
No
|
|
| RestoreDisplayMode
|
Broken
|
Has no effect under certain circumstances
|
| SetCooperativeLevel
|
Partial
|
Does not support null HWND
|
| SetDisplayMode
|
Yes
|
Enhanced with extra modes and color depths
|
| StartModeTest
|
No
|
|
| TestCooperativeLevel
|
No
|
|
| WaitForVerticalBlank
|
Partial
|
Timing not correct
|
IDirectDrawClipper functions
| Function
|
Implemented
|
Notes
|
| GetClipList
|
No
|
|
| GetHWnd
|
Yes
|
|
| Initialize
|
Yes
|
|
| IsClipListChanged
|
No
|
|
| SetClipList
|
No
|
|
| SetHWnd
|
Yes
|
|
IDirectDrawColorControl functions
Not yet implemented
IDirectDrawGammaControl functions
Not yet implemented
IDirectDrawPalette functions
| Function
|
Implemented
|
Notes
|
| GetCaps
|
Yes
|
|
| GetEntries
|
Yes
|
|
| Initialize
|
Yes
|
Always returns DDERR_ALREADYINITIALIZED
|
| SetEntries
|
Yes
|
|
IDirectDrawSurface functions
| Function
|
Implemented
|
Notes
|
| AddAttachedSurface
|
Partial
|
Can only attach one Z buffer.
|
| AddOverlayDirtyRect
|
No
|
|
| Blt
|
Partial
|
Does not support DDBLTFX
|
| BltBatch
|
No
|
Unimplemented in Microsoft DDraw
|
| BltFast
|
Yes
|
Wrapper for Blt function
|
| ChangeUniquenessValue
|
No
|
|
| DeleteAttachedSurface
|
Partial
|
Can only attach one Z buffer.
|
| EnumAttachedSurfaces
|
No
|
|
| EnumOverlayZOrders
|
No
|
|
| Flip
|
Partial
|
No vsync support
|
| FreePrivateData
|
No
|
|
| GetAttachedSurface
|
Partial
|
Gets backbuffer or zbuffer only.
|
| GetBltStatus
|
No
|
|
| GetCaps
|
Yes
|
|
| GetClipper
|
No
|
|
| GetColorKey
|
Yes
|
|
| GetDC
|
Partial
|
Currently slow
|
| GetDDInterface
|
No
|
|
| GetFlipStatus
|
No
|
|
| GetLOD
|
No
|
|
| GetOverlayPosition
|
No
|
|
| GetPalette
|
Yes
|
|
| GetPixelFormat
|
Yes
|
|
| GetPriority
|
No
|
|
| GetPrivateData
|
No
|
|
| GetSurfaceDesc
|
Yes
|
|
| GetUniquenessValue
|
No
|
|
| Initialize
|
Yes
|
Always returns DDERR_ALREADYINITIALIZED
|
| IsLost
|
No
|
|
| Lock
|
Partial
|
Does not support rects
|
| PageLock
|
Yes
|
Only increments an internal counter
|
| PageUnlock
|
Yes
|
Only decrements an internal counter
|
| ReleaseDC
|
No
|
Currently inefficient
|
| Restore
|
Partial
|
Fails if surface is lost
|
| SetClipper
|
Partial
|
Currently has no effect
|
| SetColorKey
|
Yes
|
|
| SetLOD
|
No
|
|
| SetOverlayPosition
|
No
|
|
| SetPalette
|
Yes
|
|
| SetPriority
|
No
|
|
| SetPrivateData
|
No
|
|
| SetSurfaceDesc
|
No
|
|
| Unlock
|
No
|
Does not support rects
|
| UpdateOverlay
|
No
|
|
| UpdateOverlayDisplay
|
No
|
Not implemented in Microsoft DDraw
|
| UpdateOverlayZOrder
|
No
|
|
IDDVideoPortContainer functions
Not yet implemented
IDirectDrawVideoPort functions
Not yet implemented
IDirect3D functions
| Function
|
Implemented
|
Notes
|
| CreateDevice
|
Yes
|
|
| CreateVertexBuffer
|
No
|
|
| EnumDevices
|
No
|
|
| EnumZBufferFormats
|
Partial
|
Formats not yet validated
|
| EvictManagedTextures
|
No
|
|
IDirect3DDevice functions
| Function
|
Implemented
|
Notes
|
| ApplyStateBlock
|
No
|
|
| BeginScene
|
No
|
|
| BeginStateBlock
|
No
|
|
| CaptureStateBlock
|
No
|
|
| CreateStateBlock
|
No
|
|
| Clear
|
No
|
|
| ComputeSphereVisibility
|
No
|
|
| DeleteStateBlock
|
No
|
|
| DrawIndexedPrimitive
|
No
|
|
| DrawIndexedPrimitiveStrided
|
No
|
|
| DrawIndexedPrimitiveVB
|
No
|
|
| DrawPrimitive
|
No
|
|
| DrawPrimitiveStrided
|
No
|
|
| DrawPrimitiveVB
|
No
|
|
| EndScene
|
No
|
|
| EndStateBlock
|
No
|
|
| EnumTextureFormats
|
No
|
|
| GetCaps
|
No
|
|
| GetClipPlane
|
No
|
|
| GetClipStatus
|
No
|
|
| GetDirect3D
|
Yes
|
|
| GetInfo
|
No
|
|
| GetLight
|
No
|
|
| GetLightEnable
|
No
|
|
| GetMaterial
|
Yes
|
|
| GetRenderState
|
Yes
|
|
| GetRenderTarget
|
No
|
|
| GetStateData
|
No
|
Not in system D3D
|
| GetTexture
|
No
|
|
| GetTexureStageState
|
No
|
|
| GetTransform
|
No
|
|
| GetViewport
|
Yes
|
|
| LightEnable
|
No
|
|
| Load
|
No
|
|
| MultiplyTransform
|
No
|
|
| PreLoad
|
No
|
|
| SetClipPlane
|
No
|
|
| SetClipStatus
|
No
|
|
| SetLight
|
No
|
|
| SetMaterial
|
Yes
|
|
| SetRenderState
|
Partial
|
Only supports some states.
|
| SetRenderTarget
|
No
|
|
| SetStateData
|
No
|
Not in system D3D
|
| SetTexture
|
No
|
|
| SetTextureStageState
|
No
|
|
| SetTransform
|
No
|
|
| SetViewport
|
Partial
|
Doesn't validate parameters
|
| ValidateDevice
|
No
|
|
IDirect3DExecuteBuffer functions
Not yet implemented
IDirect3DLight functions
Not yet implemented
IDirect3DMaterial functions
Not yet implemented
IDirect3DTexture functions
Not yet implemented
IDirect3DVertexBuffer functions
Not yet implemented
IDirect3DViewport functions
Not yet implemented
Capabilites
DDCAPS
| Member
|
Implemented
|
Notes
|
| dwSize
|
Yes
|
|
| dwCaps
|
Partial
|
|
| dwCaps2
|
Partial
|
|
| dwCKeyCaps
|
Partial
|
|
| dwFXCaps
|
Partial
|
|
| dwFXAlphaCaps
|
No
|
|
| dwPalCaps
|
Partial
|
|
| dwSVCaps
|
No
|
|
| dwAlphaBltConstBitDepths
|
No
|
|
| dwAlphaBltPixelBitDepths
|
No
|
|
| dwAlphaBltSurfaceBitDepths
|
No
|
|
| dwAlphaOverlayConstBitDepths
|
No
|
|
| dwAlphaOverlayPixelBitDepths
|
No
|
|
| dwAlphaOverlaySurfaceBitDepths
|
No
|
|
| dwZBufferBitDepths
|
No
|
|
| dwVidMemTotal
|
No
|
|
| dwVidMemTotal
|
No
|
|
| dwMaxVisibleOverlays
|
0
|
|
| dwCurrVisibleOverlays
|
No
|
|
| dwNumFourCCCodes
|
0
|
|
| dwAlignBoundarySrc
|
No
|
|
| dwAlignSizeSrc
|
No
|
|
| dwAlignBoundaryDest
|
No
|
|
| dwAlignSizeDest
|
No
|
|
| dwAlignStrideAlign
|
No
|
|
| dwRops[DD_ROP_SPACE]
|
No
|
|
| ddsOldCaps
|
Partial
|
|
| dwMinOverlayStretch
|
No
|
|
| dwMaxOverlayStretch
|
No
|
|
| dwMinLiveVideoStretch
|
No
|
|
| dwMaxLiveVideoStretch
|
No
|
|
| dwMinHwCodecStretch
|
No
|
|
| dwMaxHwCodecStretch
|
No
|
|
| dwReserved1
|
N/A
|
placeholder
|
| dwReserved2
|
N/A
|
placeholder
|
| dwReserved3
|
N/A
|
placeholder
|
| dwSVBCaps
|
No
|
|
| dwSVBCKeyCaps
|
No
|
|
| dwSVBFXCaps
|
No
|
|
| dwSVBRops[DD_ROP_SPACE]
|
No
|
|
| dwVSBCaps
|
No
|
|
| dwVSBCKeyCaps
|
No
|
|
| dwVSBFXCaps
|
No
|
|
| dwVSBRops[DD_ROP_SPACE]
|
No
|
|
| dwSSBCaps
|
No
|
|
| dwSSBCKeyCaps
|
No
|
|
| dwSSBFXCaps
|
No
|
|
| dwSSBRops[DD_ROP_SPACE]
|
No
|
|
| dwMaxVideoPorts
|
0
|
|
| dwCurrVideoPorts
|
0
|
|
| dwSVBCaps2
|
No
|
|
| dwNLVBCaps
|
No
|
|
| dwNLVBCaps2
|
No
|
|
| dwNLVBCKeyCaps
|
No
|
|
| dwNLVBFXCaps
|
No
|
|
| dwNLVBRops[DD_ROP_SPACE]
|
No
|
|
| ddsCaps
|
Partial
|
|
DDCAPS.dwCaps
| Bit
|
Set
|
Notes
|
| DDCAPS_3D
|
No
|
|
| DDCAPS_ALIGNBOUNDARYDEST
|
No
|
|
| DDCAPS_ALIGNBOUNDARYSRC
|
No
|
|
| DDCAPS_ALIGNSIZEDEST
|
No
|
|
| DDCAPS_ALIGNSIZESRC
|
No
|
|
| DDCAPS_ALIGNSTRIDE
|
No
|
|
| DDCAPS_ALPHA
|
No
|
|
| DDCAPS_BANKSWITCHED
|
No
|
|
| DDCAPS_BLT
|
Partial
|
Blt() is not yet complete.
|
| DDCAPS_BLTCOLORFILL
|
Yes
|
|
| DDCAPS_BLTDEPTHFILL
|
No
|
|
| DDCAPS_BLTFOURCC
|
No
|
|
| DDCAPS_BLTQUEUE
|
No
|
|
| DDCAPS_BLTSTRETCH
|
Yes
|
|
| DDCAPS_CANBLTSYSMEM
|
Yes
|
Irrelevent in DXGL's architecture.
|
| DDCAPS_CANCLIP
|
No
|
|
| DDCAPS_CANCLIPSTRETCHED
|
No
|
|
| DDCAPS_COLORKEY
|
Yes
|
|
| DDCAPS_COLORKEYHWASSIST
|
No
|
|
| DDCAPS_GDI
|
Partial
|
Can create DC's
|
| DDCAPS_NOHARDWARE
|
No
|
|
| DDCAPS_OVERLAY
|
No
|
|
| DDCAPS_OVERLAYCANTCLIP
|
No
|
|
| DDCAPS_OVERLAYFOURCC
|
No
|
|
| DDCAPS_OVERLAYSTRETCH
|
No
|
|
| DDCAPS_PALETTE
|
Yes
|
|
| DDCAPS_PALETTEVSYNC
|
No
|
|
| DDCAPS_READSCANLINE
|
No
|
|
| DDCAPS_VBI
|
No
|
|
| DDCAPS_ZBLTS
|
No
|
|
| DDCAPS_ZOVERLAYS
|
No
|
|
DDCAPS.dwCaps2
| Bit
|
Set
|
Notes
|
| DDCAPS2_AUTOFLIPOVERLAY
|
No
|
|
| DDCAPS2_CANBOBHARDWARE
|
No
|
|
| DDCAPS2_CANBOBINTERLEAVED
|
No
|
|
| DDCAPS2_CANBOBNONINTERLEAVED
|
No
|
|
| DDCAPS2_CANCALIBRATEGAMMA
|
No
|
|
| DDCAPS2_CANDROPZ16BIT
|
No
|
|
| DDCAPS2_CANFLIPODDEVEN
|
No
|
|
| DDCAPS2_CANMANAGETEXTURE
|
No
|
|
| DDCAPS2_CANRENDERWINDOWED
|
Yes
|
|
| DDCAPS2_CERTIFIED
|
No
|
|
| DDCAPS2_COLORCONTROLPRIMARY
|
No
|
|
| DDCAPS2_COLORCONTROLOVERLAY
|
No
|
|
| DDCAPS2_COPYFOURCC
|
No
|
|
| DDCAPS2_FLIPINTERVAL
|
Yes
|
|
| DDCAPS2_FLIPNOVSYNC
|
Yes
|
|
| DDCAPS2_NO2DDURING3DSCENE
|
No
|
|
| DDCAPS2_NONLOCALVIDMEM
|
No
|
|
| DDCAPS2_NONLOCALVIDMEMCAPS
|
No
|
|
| DDCAPS2_NOPAGELOCKREQUIRED
|
Yes
|
|
| DDCAPS2_PRIMARYGAMMA
|
No
|
|
| DDCAPS2_STEREO
|
No
|
|
| DDCAPS2_TEXMANINNONLOCALVIDMEM
|
No
|
|
| DDCAPS2_VIDEOPORT
|
No
|
|
| DDCAPS2_WIDESURFACES
|
Yes
|
|
DDCAPS.dwCKeyCaps
| Bit
|
Set
|
Notes
|
| DDCKEYCAPS_DESTBLT
|
No
|
|
| DDCKEYCAPS_DESTBLTCLRSPACE
|
No
|
|
| DDCKEYCAPS_DESTBLTCLRSPACEYUV
|
No
|
|
| DDCKEYCAPS_DESTBLTYUV
|
No
|
|
| DDCKEYCAPS_DESTOVERLAY
|
No
|
|
| DDCKEYCAPS_DESTOVERLAYCLRSPACE
|
No
|
|
| DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV
|
No
|
|
| DDCKEYCAPS_DESTOVERLAYONEACTIVE
|
No
|
|
| DDCKEYCAPS_DESTOVERLAYYUV
|
No
|
|
| DDCKEYCAPS_NOCOSTOVERLAY
|
No
|
|
| DDCKEYCAPS_SRCBLT
|
Yes
|
|
| DDCKEYCAPS_SRCBLTCLRSPACE
|
No
|
|
| DDCKEYCAPS_SRCBLTCLRSPACEYUV
|
No
|
|
| DDCKEYCAPS_SRCBLTYUV
|
No
|
|
| DDCKEYCAPS_SRCOVERLAY
|
No
|
|
| DDCKEYCAPS_SRCOVERLAYCLRSPACE
|
No
|
|
| DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV
|
No
|
|
| DDCKEYCAPS_SRCOVERLAYONEACTIVE
|
No
|
|
| DDCKEYCAPS_SRCOVERLAYYUV
|
No
|
|
DDCAPS.dwFXCaps
| Bit
|
Set
|
Notes
|
| DDFXCAPS_BLTALPHA
|
No
|
|
| DDFXCAPS_BLTARITHSTRETCHY
|
No
|
|
| DDFXCAPS_BLTARITHSTRETCHYN
|
No
|
|
| DDFXCAPS_BLTFILTER
|
No
|
|
| DDFXCAPS_BLTMIRRORLEFTRIGHT
|
No
|
|
| DDFXCAPS_BLTMIRRORUPDOWN
|
No
|
|
| DDFXCAPS_BLTROTATION
|
No
|
|
| DDFXCAPS_BLTROTATION90
|
No
|
|
| DDFXCAPS_BLTSHRINKX
|
Yes
|
|
| DDFXCAPS_BLTSHRINKXN
|
No
|
|
| DDFXCAPS_BLTSHRINKY
|
Yes
|
|
| DDFXCAPS_BLTSHRINKYN
|
No
|
|
| DDFXCAPS_BLTSTRETCHX
|
Yes
|
|
| DDFXCAPS_BLTSTRETCHXN
|
No
|
|
| DDFXCAPS_BLTSTRETCHY
|
Yes
|
|
| DDFXCAPS_BLTSTRETCHYN
|
No
|
|
| DDFXCAPS_BLTTRANSFORM
|
No
|
|
| DDFXCAPS_OVERLAYFILTER
|
No
|
|
| DDFXCAPS_OVERLAYMIRRORLEFTRIGHT
|
No
|
|
| DDFXCAPS_OVERLAYMIRRORUPDOWN
|
No
|
|
| DDFXCAPS_OVERLAYSHRINKX
|
No
|
|
| DDFXCAPS_OVERLAYSHRINKXN
|
No
|
|
| DDFXCAPS_OVERLAYSHRINKY
|
No
|
|
| DDFXCAPS_OVERLAYSHRINKYN
|
No
|
|
| DDFXCAPS_OVERLAYSTRETCHX
|
No
|
|
| DDFXCAPS_OVERLAYSTRETCHXN
|
No
|
|
| DDFXCAPS_OVERLAYSTRETCHY
|
No
|
|
| DDFXCAPS_OVERLAYSTRETCHYN
|
No
|
|
| DDFXCAPS_OVERLAYTRANSFORM
|
No
|
|
DDCAPS.dwFXAlphaCaps
| Bit
|
Set
|
Notes
|
| DDFXALPHACAPS_BLTALPHAEDGEBLEND
|
No
|
|
| DDFXALPHACAPS_BLTALPHAPIXELS
|
No
|
|
| DDFXALPHACAPS_BLTALPHAPIXELSNEG
|
No
|
|
| DDFXALPHACAPS_BLTALPHASURFACES
|
No
|
|
| DDFXALPHACAPS_BLTALPHASURFACESNEG
|
No
|
|
| DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND
|
No
|
|
| DDFXALPHACAPS_OVERLAYALPHAPIXELS
|
No
|
|
| DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG
|
No
|
|
| DDFXALPHACAPS_OVERLAYALPHASURFACES
|
No
|
|
| DDFXALPHACAPS_OVERLAYALPHASURFACESNEG
|
No
|
|
DDCAPS.dwPalCaps
| Bit
|
Set
|
Notes
|
| DDPCAPS_1BIT
|
No
|
|
| DDPCAPS_2BIT
|
No
|
|
| DDPCAPS_4BIT
|
No
|
|
| DDPCAPS_8BIT
|
Yes
|
|
| DDPCAPS_8BITENTRIES
|
No
|
|
| DDPCAPS_ALPHA
|
No
|
|
| DDPCAPS_ALLOW256
|
No
|
|
| DDPCAPS_PRIMARYSURFACE
|
Yes
|
|
| DDPCAPS_PRIMARYSURFACELEFT
|
No
|
|
| DDPCAPS_VSYNC
|
No
|
|
DDSCAPS2
| Member
|
Implemented
|
Notes
|
| dwCaps
|
Partial
|
|
| dwCaps2
|
No
|
|
| dwCaps3
|
N/A
|
|
| dwCaps4
|
N/A
|
|
DDSCAPS2.dwCaps
| Bit
|
Set
|
Notes
|
| DDSCAPS_3D
|
N/A
|
Unused
|
| DDSCAPS_3DDEVICE
|
No
|
|
| DDSCAPS_ALLOCONLOAD
|
N/A
|
|
| DDSCAPS_ALPHA
|
No
|
|
| DDSCAPS_BACKBUFFER
|
Yes
|
|
| DDSCAPS_COMPLEX
|
Partial
|
Only supports flipped surfaces
|
| DDSCAPS_FLIP
|
Yes
|
|
| DDSCAPS_FRONTBUFFER
|
Yes
|
|
| DDSCAPS_HWCODEC
|
No
|
|
| DDSCAPS_LIVEVIDEO
|
No
|
|
| DDSCAPS_LOCALVIDMEM
|
No
|
|
| DDSCAPS_MIPMAP
|
No
|
|
| DDSCAPS_MODEX
|
No
|
Bit is ignored
|
| DDSCAPS_NONLOCALVIDMEM
|
No
|
|
| DDSCAPS_OFFSCREENPLAIN
|
Yes
|
|
| DDSCAPS_OPTIMIZED
|
N/A
|
|
| DDSCAPS_OVERLAY
|
No
|
|
| DDSCAPS_OWNDC
|
No
|
|
| DDSCAPS_PALETTE
|
Partial
|
Only supports 256 color palettes.
|
| DDSCAPS_PRIMARYSURFACE
|
Yes
|
|
| DDSCAPS_STANDARDVGAMODE
|
No
|
Bit is ignored.
|
| DDSCAPS_SYSTEMMEMORY
|
Yes
|
Makes memory allocation occur at creation instead of first locking
|
| DDSCAPS_TEXTURE
|
No
|
|
| DDSCAPS_VIDEOMEMORY
|
Yes
|
Copied to system memory when locked.
|
| DDSCAPS_VIDEOPORT
|
No
|
|
| DDSCAPS_VISIBLE
|
No
|
|
| DDSCAPS_WRITEONLY
|
No
|
|
| DDSCAPS_ZBUFFER
|
No
|
|