Difference between revisions of "ReactX"

From ReactOS Wiki
Jump to: navigation, search
m (Changelog)
m (spelling fix)
 
(4 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
'''DirectX'''
 
'''DirectX'''
  
'''Development Plan'''<br>
+
'''Development Plan'''<br />
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.<br>
+
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.<br />
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.<br>
+
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 ?''' <br>
+
'''Can I run 3D Games that need DirectX ?''' <br />
That question is hard to answer since we don't have any graphics support for DirectX in ReactOS yet.<br>
+
That question is hard to answer since we don't have any graphics support for DirectX in ReactOS yet.<br />
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.<br>
+
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.<br />
ReactOS has had software support for OpenGL 1.4 for a very long time now. This is also thanks to Blight_.<br>
+
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.<br>
+
As for the status of the DirectX DLLs.<br />
These are not all DirectX DLL files but they are the most used for apps and games.<br><br> 
+
These are not all DirectX DLL files but they are the most used for apps and games.
  
'''d3d8'''<br>
+
'''d3d8'''<br />
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br>  
+
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br />
Some parts are already done in Win32k.<br><br>
+
Some parts are already done in Win32k.
  
'''d3d9'''<br>
+
'''d3d9'''<br />
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br>  
+
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br />
Some parts are already done in Win32k.<br><br>
+
Some parts are already done in Win32k.
  
'''d3dx8'''<br>  
+
'''d3d10'''<br />
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br>  
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
Some parts are already done in Win32k.<br><br>
+
Creating a native version that talks to an UMD is a task that can be postponed in the future.
  
'''d3dxof'''<br>  
+
'''d3d10_1'''<br />
Not checked yet.<br><br>
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
 +
Creating a native version that talks to an UMD is a task that can be postponed in the future.
  
'''ddeml'''<br>  
+
'''d3d10core'''<br />
Not checked yet.<br><br>
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
 +
Creating a native version that talks to an UMD is a task that can be postponed in the future.
  
'''ddraw'''<br>
+
'''d3d10_1core'''<br />
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br>  
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
Some parts are already done in Win32k.<br><br>
+
Creating a native version that talks to an UMD is a task that can be postponed in the future.
I am working on this.<br><br>
 
 
'''devenum'''<br>
 
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.<br>
 
(Status 75% - from Wine website)<br><br>
 
  
'''dinput'''<br>  
+
'''d3d11'''<br />
poll mouse and some other small change are ReactOS specific,
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
these change working in windows and in wine, it give us bit more stable
+
Creating a native version that talks to an UMD is a task that can be postponed in the future.
and we can run all DX9 example program.<br><br>
 
  
Todo: load the driver so that it looks up by a GUID id and use that driver.
+
'''d3d12'''<br />
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.<br><br>
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
 +
Creating a native version that talks to an UMD is a task that can be postponed in the future.
  
No joystick support or 100% mouse support.<br>
+
'''d3dx8'''<br />
When ReactOS gets user hooks for keyboard and mouse, then we'll be on exactly the same level as Wine here.<br><br>
+
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br />
 +
Some parts are already done in Win32k.
  
'''dinput8'''<br>
+
'''d3dx10'''<br />
Same as Wine. No modifications were made in the source since it is linked against Wine.<br><br>
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
 +
Creating a native version that talks to an UMD is a task that can be postponed in the future.
  
'''dmband'''<br>
+
'''d3dx11'''<br />
Not checked yet.<br><br> 
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
 +
Creating a native version that talks to an UMD is a task that can be postponed in the future.
  
'''dmcompos'''<br>
+
'''d3dxof'''<br />
Not checked yet.<br><br>
+
Not checked yet.
  
'''dmime'''<br>
+
'''dxgi'''<br />
Not checked yet.<br><br>  
+
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
 +
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.<br />
 +
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).<br />
 +
For more information on the interoperability, see the [https://jira.reactos.org/browse/CORE-19126? WDDM JIRA Ticket]<br /><br />
 +
An experimental module is currently being done for this.
  
'''dmloader'''<br>
+
'''ddeml'''<br />
Not checked yet.<br><br>
+
Not checked yet.
  
'''dmscript'''<br>
+
'''ddraw'''<br />
Not checked yet.<br><br>  
+
We can't use Wine, so it needs to be rewritten to support hardware acceleration and software rendering.<br />
 +
Some parts are already done in Win32k.<br /><br />
 +
I am working on this.
  
'''dmstyle'''<br>
+
'''devenum'''<br />
Not checked yet.<br><br>
+
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.<br />
 +
(Status 75% - from Wine website)
  
'''dmsynth'''<br>
+
'''dinput'''<br />
Not checked yet.<br><br>
+
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.
  
'''dmusic'''<br>
+
Todo: load the driver so that it looks up by a GUID id and use that driver.
Not checked yet.<br><br>
+
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.
  
'''dmusic32'''<br>
+
No joystick support or 100% mouse support.<br />
Not checked yet.<br><br>
+
When ReactOS gets user hooks for keyboard and mouse, then we'll be on exactly the same level as Wine here.
  
'''dplay'''<br>
+
'''dinput8'''<br />
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.<br><br>
+
Same as Wine. No modifications were made in the source since it is linked against Wine.
  
'''dplayx'''<br>
+
'''dmband'''<br />
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.<br><br>
+
Not checked yet.
  
'''dpnet'''<br>
+
'''dmcompos'''<br />
Not checked yet.<br><br>
+
Not checked yet.
  
'''dpnhpast'''<br>
+
'''dmime'''<br />
Not checked yet.<br><br>
+
Not checked yet.
  
'''dsound'''<br>  
+
'''dmloader'''<br />
My patch for dsound have been last commit to reactos<br>
+
Not checked yet.
It is base on Wine Dsound<BR>
 
Change: <br>
 
hardcode it to software mode <br>
 
remove some wine-specific calls and make a wrapper for them<br>
 
TODO:<br>
 
Add HW acceleration<br>
 
<br>
 
  
'''dswave'''<br>  
+
'''dmscript'''<br />
Not checked yet.<br><br>
+
Not checked yet.
  
'''dxdiagn'''<br>  
+
'''dmstyle'''<br />
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.<br>
+
Not checked yet.
(Status from Wine website: 100%)<br><br>
 
  
'''quartz'''<br>
+
'''dmsynth'''<br />
Not checked yet.<br><br>
+
Not checked yet.
  
'''wined3dcfg.cpl'''
+
'''dmusic'''<br />
 +
Not checked yet.
  
<br><br>
+
'''dmusic32'''<br />
Magnus Olsen<br>
+
Not checked yet.
GreatLord
 
  
==Changelog==
+
'''dplay'''<br />
[[ChangeLog-0.2.5]]
+
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.
* Port over wine dinput / dinput8 to reactos (rewrite wine dinput from using gdi hooks for it is not support yet in reactos, it has a bug on mouse buffer. Some directx apps are working if it only need keyboard or mouse.) ([[Magnus Olsen]])
 
  
[[ChangeLog-0.2.6]]
+
'''dplayx'''<br />
* fix some bugs in GetDeviceData so it's working now.  
+
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.
  
* It's working now in Unreal Tournament
+
'''dpnet'''<br />
 +
Not checked yet.
  
* Bug fix from 0.2.6 RC1 was
+
'''dpnhpast'''<br />
1. The Y-axis are not longer choppy
+
Not checked yet.
  
2. The mouse does not have a delay at 50ms as Directx doc say.
+
'''dsound'''<br />
it makes it no longer choppy.
+
My patch for dsound have been last commit to reactos<br />
 +
It is base on Wine Dsound<br />
 +
Change: <br />
 +
hardcode it to software mode <br />
 +
remove some wine-specific calls and make a wrapper for them<br />
 +
TODO:<br />
 +
Add HW acceleration
  
3. Set right time stamp on the mouse buffer packet
+
'''dswave'''<br />
 +
Not checked yet.
  
4. Set calaction right value for event counter for GetDevice
+
'''dxdiagn'''<br />
50ms equal with one event counter.
+
Same level as Wine. No modifications were made in the source (if I remember correctly). It is in SVN.<br />
 +
(Status from Wine website: 100%)
  
* Now even more DirectX apps working.  
+
'''quartz'''<br />
 +
Not checked yet.
  
'''ReactX is a Win32 library'''
+
''d3dcompiler'''<br />
 +
Currently it will be imported from Wine, vkd3d is enough once ReactOS supports Vulkan/modern OpenGL.<br />
 +
A native version would most likely be an off-tree fork of the Wine compiler, as HLSL shader parsing is already done.
  
[[ChangeLog-0.2.7]]
+
'''wined3dcfg.cpl'''
* Reverted last previous sync with Wine and userhook&mdash;before we can sync with Wine, we need to rewrite the enumeration and registration of devices so that they work correctly in both ReactOS and Windows
 
* Added SVN rev. 15043 and userhooks only for the mouse&mdash;the mouse now works in tribles in windowed mode, but in full screen it is a bit choppy; however, this has not been tested in tribles on ReactOS with the new code
 
  
([[Magnus Olsen]]).
+
Magnus Olsen<br />
 
+
GreatLord
[[ChangeLog-0.2.8]]
+
== See Also ==
Some new stuff for directx, but the call are not in use yet. and it is not wort mentor, untill we can test the api, the change was implement some gdientr to gdi32.dll and some change to win32k. ([[Magnus Olsen]])
+
* [[OpenGL]]
 
 
[[ChangeLog-0.2.9]]
 
 
 
* Create new headers and clean up existing headers (nothing users will notice yet) ([[Magnus Olsen]])
 
* dplay and dplayx have been taken from wine with minor alterations. ([[Magnus Olsen]])
 
* Implement the following api's but not tested yet for directx hal in win32k : WaitForVerticalBlank, GetScanLine, FlipToGDISurface ([[Magnus Olsen]])
 
* Added d3d8thk.dll and dplay.dll to bootcd ([[Magnus Olsen]])
 
* Added dplayx.dll to bootcd  ([[Magnus Olsen]])
 
* Sync all code shared with Wine ([[Gé van Geldorp]])
 
  
==See Also==
+
[[Category:ReactOS Components]]
[[OpenGL]]
 
[[Category:ReactOS_Components]]
 

Latest revision as of 22:35, 20 November 2023

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