ReactX

From ReactOS Wiki
(Redirected from DirectX)
Jump to: navigation, search
This page is probably outdated

The information on this page might not be valid for the current state of ReactOS.
A Wiki Administrator should look at this page and decide or discuss what to do with it.


DirectX

Development Plan
How should we implement DirectX? There has been a long discussion on IRC about what is best. We will only use part of the DirectX code from Wine, not all.
We have taken the header files from Wine, and also some other DLLs that don't need a rewrite. Thanks to that we now have already very basic support for DirectX.

Can I run 3D Games that need DirectX ?
That question is hard to answer since we don't have any graphics support for DirectX in ReactOS yet.
Blight_ has done an amazing job in hunting down the Hardware Acceleration bug for Nvidia OpenGL. If you have an Nvidia graphics driver and your games support OpenGL as renderer then your game will probably work, but without any sound.
ReactOS has had software support for OpenGL 1.4 for a very long time now. This is also thanks to Blight_.

As for the status of the DirectX DLLs.
These are not all DirectX DLL files but they are the most used for apps and games.

d3d8
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.
Some parts are already done in Win32k.

d3d9
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.
Some parts are already done in Win32k.

d3d10
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3d10_1
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3d10core
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3d10_1core
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3d11
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3d12
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3dx8
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.
Some parts are already done in Win32k.

d3dx10
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3dx11
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
Creating a native version that talks to an UMD is a task that can be postponed in the future.

d3dxof
Not checked yet.

dxgi
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
A native version of DXGI can also help in the future for using the undocumented COM interfaces (such as IDXGIFactoryDWM) for implementing proper compatibility with Windows 7+ composition components.
It currently seems possible to also implement Wine D3D device to allow interoperability with wined3d and native DXGI, allowing ReactOS to run DirectX10+ accelerated components correctly (after Vulkan and WDDM are merged).
For more information on the interoperability, see the WDDM JIRA Ticket

An experimental module is currently being done for this.

ddeml
Not checked yet.

ddraw
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.
Some parts are already done in Win32k.

I am working on this.

devenum
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.
(Status 75% - from Wine website)

dinput
poll mouse and some other small change are ReactOS specific, these change working in windows and in wine, it give us bit more stable and we can run all DX9 example program.

Todo: load the driver so that it looks up by a GUID id and use that driver. Wine will never implement this for 100%, because they're using only one driver for keyboard, one for the mouse and one for the joystick.

No joystick support or 100% mouse support.
When ReactOS gets user hooks for keyboard and mouse, then we'll be on exactly the same level as Wine here.

dinput8
Same as Wine. No modifications were made in the source since it is linked against Wine.

dmband
Not checked yet.

dmcompos
Not checked yet.

dmime
Not checked yet.

dmloader
Not checked yet.

dmscript
Not checked yet.

dmstyle
Not checked yet.

dmsynth
Not checked yet.

dmusic
Not checked yet.

dmusic32
Not checked yet.

dplay
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.

dplayx
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.

dpnet
Not checked yet.

dpnhpast
Not checked yet.

dsound
My patch for dsound have been last commit to reactos
It is base on Wine Dsound
Change:
hardcode it to software mode
remove some wine-specific calls and make a wrapper for them
TODO:
Add HW acceleration

dswave
Not checked yet.

dxdiagn
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.
(Status from Wine website: 100%)

quartz
Not checked yet.

d3dcompiler'
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.
A native version would most likely be an off-tree fork of the Wine compiler, as HLSL shader parsing is already done.

wined3dcfg.cpl

Magnus Olsen
GreatLord

See Also