Details
-
Task
-
Resolution: Fixed
-
Major
-
None
Description
Several d3dkmt APIs are missing in ReactOS:
D3DKMTSetVidPnSourceOwner
D3DKMTQueryVideoMemoryInfo
D3DKMTOpenAdapterFromGdiDisplayName
D3DKMTDestroyDevice
D3DKMTCreateDevice
D3DKMTCloseAdapter
These APIs are an interesting case,
In windows Vista/7 most of these APIs don't do anything unless a WDDM driver is active.
In windows most of these are syscalls that just read into the special interface between DxgKrnl <-> Win32k. But in WINE these are implemented directly in win32u.
So what will ReactOS do?
I believe the sane approach that will provide the foundation to WDDM is to do what BasicRenderer.sys's task is in Windows 8+.
We'll implement all of the KMT APIs BasicRenderer implements inside win32k itself, this will allow us to still use wine in an accelerated fashion even on XPDM drivers. This is very much what WINE does too, but more interestingly the outcome of this is almost exactly how windows 8+ acts.
1) If the DxgKrnl interface is NULL, Fall back to basic renderer
2) If the DxgKrnl Interface is valid Invoke the Driver associated with the d3dkmt handle.
3) If the DxgKrnl Interface is NULL and BasicRenderer doesn't exist than we cannot start the OS. (This is impossible on ROS since the BasicRenderer is built into win32k.)
This replicates the behaviors of windows 8 while retaining backwards compatibility with XPDM and allowing a non intrusive step forward with our WINE code.