Open blueclouds8666 opened 3 years ago
After testing for a while different unofficial DirectX implementations for XP, i've reached some conclusions and also results regarding PCSX2 in DX11 mode:
Here you can see a screenshot running PCSX2 XP on DirectX 11 mode under XP with said library. The bios blue color is messed up indeed which is a funny glitch. Most games don't seem to suffer from this bug, i've only seen it happening on the bios.
I've tested 3 different games under my main machine (FX 8300, GTX 960). While compatibility seemed to be quite good for what it is, there's an important performance hit as a reason of the API conversion and wrapping.
I've measured around 20 ~ 50% of performance drop while using WineD3D for DX11 library and renderer in contrast with the OpenGL renderer. Maybe if Vulkan and DXVK could be made run under WinXP, the performance impact would be probably much lower. But nothing of that exists yet, or seems feasible to ever happen. For this reason and others, i've decided i'm not going to do further implementations or modifications into PCSX2 XP as this all can only be considered an experimental/testing feature, offering less than ideal performance and compatibility for stable releasing.
One of the games, Shadow of the Colossus, only showed a black screen while running with DX11 over WineD3D, making it unplayable. The other two ran without any noticable graphical glitch or anomaly. You coulnd't tell it was running a conversion wrapper in behind, leaving performance aside. More details about the benchmarks:
First of all, you should know any PCSX2 version should be compatible with this method regarding it works on XP, including those from many years ago! However, PCSX2 XP v1.6.0 does NOT work with this method because DirectX was stripped down from that release.
1. Set-up the desired PCSX2 version, including BIOS and essential settings. We recommend you use PCSX2 XP v1.5.0-dev, but you can as well use v1.4.0, v1.2.1 or even older
2. Now you need to download the WineD3D wrapper library that works with XP. I originally found it as a component of the XomPie project made by @tumagonx. Download the latest release from here.
3. The downloaded file is an installer. You can directly install XomPie and PCSX2's DX11 renderer will thereafter work without the need to change anything else. However i don't recommend you do that as it introduces bugs to other system software (New Moon/Mypal sometimes presents rendering issues and crashes). We can avoid that by doing the following.
4. Right click on xompie-0.6a.exe and extract it with 7-Zip. A folder with dozens of files will appear, but we only need 3: "d3d11.dll", "dxgi.dll" and "wined3d.dll". Copy those 3 files and paste them into the root directory of your PCSX2 installation, that is, the same location as pcsx2.exe.
If you now run PCSX2 and open the GSDx plugin settings, you'll now find a DirectX 11 renderer option, which can be used right away, as you would on Windows Vista+. The performance of DirectX 9 and/or OpenGL renderers shouldn't be affected while having WineD3D "installed" into the PCSX2 directory, nevertheless you can always remove those 3 libraries whenever you want.
PS: You might find interesting checking the XomPie project, which tries to extend WinXP software compatibility. Thanks for your efforts towards the Windows XP scene!
You may want to try the WineD3D files from BlackWingCat Extended Kernel (Windows 2000) or OneCoreAPI since those should be more recent.
Extended Kernel for 2000 is in some ways more compatible than OneCoreAPI (XP) and is also updated more often, although Extended Kernel is for 2000 the WineD3D files may work. I haven't bothered yet to test if PCSX2 works on Windows 2000 with Extended Kernel but if it works on vanilla XP then it should.
recently @andika207 mentioned about some unofficial ways to make DirectX 10 and 11 work under Windows XP, a feature i wasn't much aware of or informed. It turns out a russian group managed to port some of the DirectX components to said operating system, althought it seems to be experimental and far from perfect, i thought it could be a good idea to test it out with this project. there are currently several ways to make newer versions of DirectX run under XP:
This testing candidate feature will be first tested under the v1.5.0-dev Sep2018 version, located on the branch release-1.5.0. It seems code modification is needed in order to make GSDx detect the machine is indeed compatible with the DX11 renderer. Any code modifications will logically published on new branch. Also, I don't know what kind of performance and functionality to expect from this unofficial "patches", so if it doesn't mean any improvement in contrast with the other renderers, it might not be worth to invest much time on it.