-
Notifications
You must be signed in to change notification settings - Fork 92
DirectDraw to Direct3D9 Conversion Status
Elisha Riedlinger edited this page Jan 18, 2025
·
20 revisions
For this page I will be talking about the status of the work to convert DirectX 1-7 to DirectX 9. This is a more technical discussion. For game compatibility check out this page here: Dd7to9 Compatibility
Note | --Status-- |
---|---|
The function is fully implemented. | Full |
The function is partially implemented. It may work in some circumstances but not all. | Partial |
The function is either not implemented at all or not enough to work correctly. | None |
Function | Notes | -Support- |
---|---|---|
Compact() | Not implemented in DirectDraw. | Full |
CreateClipper() | Full | |
CreatePalette() | Using Direct3D9 pixel shader for handling the palette colors. Does not support DDPCAPS_PRIMARYSURFACELEFT flag. |
Partial |
CreateSurface() | Does not support: CubeMaps, zPixels, BumpDUDV, BumpLuminance, Linear | Partial |
DuplicateSurface() | Full | |
EnumDisplayModes() | Full | |
EnumSurfaces() | Does not support: DDENUMSURFACES_DOESEXIST, DDENUMSURFACES_MATCH, DDENUMSURFACES_CANBECREATED | Partial |
FlipToGDISurface() | Does not properly flip to GDI surface. | Partial |
GetCaps() | Full | |
GetDisplayMode() | Full | |
GetFourCCCodes() | Full | |
GetGDISurface() | Does not properly get the GDI surface. | Partial |
GetMonitorFrequency() | Full | |
GetScanLine() | Full | |
GetVerticalBlankStatus() | Full | |
Initialize() | Full | |
RestoreDisplayMode() | Full | |
SetCooperativeLevel() | Full | |
SetDisplayMode() | Full | |
WaitForVerticalBlank() | Loops until vertical blink. | Full |
GetAvailableVidMem() | Does not always properly get the available memory in all cases. | Partial |
GetSurfaceFromDC() | Not implemented. | None |
RestoreAllSurfaces() | Full | |
TestCooperativeLevel() | Full | |
GetDeviceIdentifier() | Full | |
StartModeTest() | Not implemented. | None |
EvaluateMode() | Not implemented. | None |
Function | Notes | -Support- |
---|---|---|
AddAttachedSurface() | This function is emulated. Does not supporting adding MipMaps through this function. | Partial |
AddOverlayDirtyRect() | None | |
Blt() | Partially emulated. Does not support non-Windows raster operations, depth fill, zBuffer, alpha flags. | Partial |
BltBatch() | Same as Blt() | Partial |
BltFast() | Full | |
DeleteAttachedSurface() | Full | |
EnumAttachedSurfaces() | Full | |
EnumOverlayZOrders() | None | |
Flip() | This function is emulated. | Full |
GetAttachedSurface() | This function is emulated. | Full |
GetBltStatus() | Full | |
GetCaps() | Full | |
GetClipper() | Full | |
GetColorKey() | Full | |
GetDC() | Full | |
GetFlipStatus() | Full | |
GetOverlayPosition() | Partial | |
GetPalette() | Full | |
GetPixelFormat() | Full | |
GetSurfaceDesc() | Full | |
Initialize() | Full | |
IsLost() | Full | |
Lock() | May have issues with concurrent locks to the same surface | Partial |
ReleaseDC() | Full | |
Restore() | Full | |
SetClipper() | Clipper is being set, but does not do anything yet. | Partial |
SetColorKey() | Full | |
SetOverlayPosition() | Just stored the position value | Partial |
SetPalette() | Full | |
Unlock() | Full | |
UpdateOverlay() | Uses Blt to emulate this. Does not support DDOVER_AUTOFLIP, alpha flags, BOB, interleaving, scale factors, dirty rect or refreashing overlay | Partial |
UpdateOverlayDisplay() | None | |
UpdateOverlayZOrder() | None | |
GetDDInterface() | Full | |
PageLock() | Does nothing since it is not needed for Blt() in dxwrapper. |
None |
PageUnlock() | Does nothing since it is not needed for Blt() in dxwrapper. |
None |
SetSurfaceDesc() | Only supports DDSD_LPSURFACE flag. |
Partial |
SetPrivateData() | Private Data may be deleted prematurely in some cases. | Partial |
GetPrivateData() | Private Data may be deleted prematurely in some cases. | Partial |
FreePrivateData() | Full | |
GetUniquenessValue() | Full | |
ChangeUniquenessValue() | Full | |
SetPriority() | Priority can be set, but is not used. | Partial |
GetPriority() | Full | |
SetLOD() | LOD can be set, but is not used. | Partial |
GetLOD() | Not always getting the correct LOD | Partial |
Function | Notes | -Support- |
---|---|---|
GetClipList() | Ignores the RECT sent in. | Partial |
GetHWnd() | Full | |
Initialize() | Full | |
IsClipListChanged() | Emulated and does not report the true state of the cliplist. | Partial |
SetClipList() | ClipList can be set, but is not used. | Partial |
SetHWnd() | HWnd can be set, but is not fully used. | Partial |
Function | Notes | -Support- |
---|---|---|
GetCaps() | Full | |
GetEntries() | Full | |
Initialize() | Full | |
SetEntries() | Does not support DDPCAPS_PRIMARYSURFACELEFT or DDPCAPS_ALPHA | Partial |
Function | Notes | -Support- |
---|---|---|
GetColorControls() | Full | |
SetColorControls() | Color can be set, but is not used. | Partial |
Function | Notes | -Support- |
---|---|---|
GetGammaRamp() | Full | |
SetGammaRamp() | Using a shader for gamma support. | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
EnumDevices() | Full | |
CreateLight() | Full | |
CreateMaterial() | Full | |
CreateViewport() | Full | |
FindDevice() | Full | |
CreateDevice() | Does not properly handle the CLSID sent in to this function. | Partial |
CreateVertexBuffer() | Full | |
EnumZBufferFormats() | Does not properly handle IID_IDirect3DRampDevice. | Partial |
EvictManagedTextures() | Just returns OK, as texture eviction happens automatically in Direct3D9. | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
GetCaps() | Full | |
SwapTextureHandles() | This function is emulated. | Full |
CreateExecuteBuffer() | Full | |
GetStats() | None | |
Execute() | Does not support D3DOP_PROCESSVERTICES and D3DOP_SPAN. Partial support for D3DOP_SETSTATUS and D3DOP_BRANCHFORWARD | Partial |
AddViewport() | Full | |
DeleteViewport() | Full | |
NextViewport() | Full | |
Pick() | None | |
GetPickRecords() | None | |
EnumTextureFormats() | Full | |
CreateMatrix() | Full | |
SetMatrix() | Full | |
GetMatrix() | Full | |
DeleteMatrix() | Full | |
BeginScene() | Full | |
EndScene() | Full | |
GetDirect3D() | Full | |
SetCurrentViewport() | Full | |
GetCurrentViewport() | Full | |
SetRenderTarget() | Full | |
GetRenderTarget() | Full | |
Begin() | None | |
BeginIndexed() | None | |
Vertex() | None | |
Index() | None | |
End() | None | |
GetRenderState() | Full | |
SetRenderState() | Does not support D3DRENDERSTATE_FLUSHBATCH, D3DRENDERSTATE_COLORKEYBLENDENABLE, D3DRENDERSTATE_LINEPATTERN, D3DRENDERSTATE_ZVISIBLE, D3DRENDERSTATE_STIPPLE, D3DRENDERSTATE_EXTENTS, among others | Partial |
GetLightState() | Full | |
SetLightState() | Full | |
SetTransform() | Full | |
GetTransform() | Full | |
MultiplyTransform() | Full | |
DrawPrimitive() | Full | |
DrawIndexedPrimitive() | Full | |
SetClipStatus() | Just stored the status, does nothing with it. Does not support D3DCLIPSTATUS_EXTENTS2 or D3DCLIPSTATUS_EXTENTS3 | Partial |
GetClipStatus() | Full | |
DrawPrimitiveStrided() | None | |
DrawIndexedPrimitiveStrided() | None | |
DrawPrimitiveVB() | Full | |
DrawIndexedPrimitiveVB() | Full | |
ComputeSphereVisibility() | Just returns all visible | Partial |
GetTexture() | Full | |
SetTexture() | Full | |
GetTextureStageState() | Full | |
SetTextureStageState() | Does not support D3DTSS_SRGBTEXTURE, D3DTSS_ELEMENTINDEX, D3DTSS_DMAPOFFSET | Partial |
ValidateDevice() | Full | |
Clear() | Full | |
SetViewport() | Full | |
GetViewport() | Full | |
SetMaterial() | Full | |
GetMaterial() | Full | |
SetLight() | Full | |
GetLight() | Full | |
BeginStateBlock() | Full | |
EndStateBlock() | Full | |
PreLoad() | Just returns OK, as texture as there is no need to preload textures in Direct3D9. | Full |
ApplyStateBlock() | Full | |
CaptureStateBlock() | Full | |
DeleteStateBlock() | Full | |
CreateStateBlock() | Full | |
Load() | Full | |
LightEnable() | Full | |
GetLightEnable() | Full | |
SetClipPlane() | Full | |
GetClipPlane() | Full | |
GetInfo() | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
GetViewport() | Full | |
SetViewport() | 'Scale homogeneous' Not Implemented | Partial |
TransformVertices() | None | |
LightElements() | None | |
SetBackground() | Full | |
GetBackground() | Full | |
SetBackgroundDepth() | None | |
GetBackgroundDepth() | None | |
Clear() | Full | |
AddLight() | Full | |
DeleteLight() | Full | |
NextLight() | Full | |
GetViewport2() | Full | |
SetViewport2() | 'clip volume' Not Implemented | Partial |
SetBackgroundDepth2() | None | |
GetBackgroundDepth2() | None | |
Clear2() | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
GetHandle() | Full | |
PaletteChanged() | Just returns OK, as there is no need to notify a texture about the palette change as it happens automatically with the current implementation. | Full |
Load() | Full | |
Unload() | Just returns OK, as texture unloading happens automatically in Direct3D9. | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
SetMaterial() | RampSize Not Implemented | Partial |
GetMaterial() | Full | |
GetHandle() | Full | |
Reserve() | Full | |
Unreserve() | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
SetLight() | Full | |
GetLight() | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
Lock() | Full | |
Unlock() | Full | |
SetExecuteData() | Full | |
GetExecuteData() | Full | |
Validate() | Full | |
Optimize() | Full |
Function | Notes | -Support- |
---|---|---|
Lock() | Does not support DDLOCK_WRITEONLY | Partial |
Unlock() | Full | |
ProcessVertices() | Full | |
GetVertexBufferDesc() | Full | |
Optimize() | Just returns ok, as may not be needed for Direct3D9 | Full |
ProcessVerticesStrided() | None |