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