-
Notifications
You must be signed in to change notification settings - Fork 867
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[D3D9] The Void needs bits of IDirect3DShaderValidator9 implementation. #2045
Comments
Thanks for putting this here, I have a branch for this that I forgot about 🐸 |
Just curious, has there been any progress with this? |
Progress update on this issue? |
It'd be great if there was a proton version with that patch that's supposed to make the game work past the problematic area pre-applied. It's way complicated for me to patch it myself. |
Issue still happens with dxvk 2.2. @Joshua-Ashton could you share the name of the branch you had for this? |
https://github.com/doitsujin/dxvk/tree/d3d9-shader-val2 |
There are a few errors that are easy to work around with: Added "#include " to: ./src/dxvk/dxvk_buffer.h ./src/dxgi/dxgi_swapchain.cpp ./src/dxgi/dxgi_factory.cpp ./src/dxgi/dxgi_output.cpp ./src/dxgi/dxgi_main.cpp ./src/d3d10/d3d10_multithread.cpp Added "#include " to: ./src/d3d10/d3d10_reflection.h But then there's more complicated stuff like:
So I changed:
into (which might not be correct):
Which allowed me to build dxvk, unfortunately, the game still dies with this. |
I've debugged 'The Void' Steam game some time ago (which was crashing at certain locations both with dxvk and Wine's d3d9) and figured that is the first known game which requires some bits of real IDirect3DShaderValidator9 implementation to work (I've put some details and PoC Wine implementation which adds the necessary bits to https://bugs.winehq.org/show_bug.cgi?id=47229).
The game disassembles and assembles back some shaders (I have no idea why). Some shaders fail to assemble back due to: 'dcl_texcoord10_pp v10' (only 10 inputs are supported in ps_3_0 and this is the eleventh) which result in the crash as the game doesn't consider D3DXAssembleShader() failures. With (partially) working shader validator the problematic shaders get rejected at the earlier stage (IIRC shader compilation from HLSL) and the game handles that fine.
The PoC patch for Wine's d3d9 attached to the Wine bug is enough to make game work.
For testing with the game, here is a save file and reproduction instructions: ValveSoftware/Proton#4527. Also, here is the cheat sheet which explains how to open dev console and get to any location at once: https://forum.ice-pick.com/viewtopic.php?f=28&t=9044. Without that I would probably never get to a problematic spot.
Also, WRT game testing, it creates the compiled shader cache and once you have passed the problematic place successfully
the next run won't trigger problematic behaviour (e. g., if you first run on Windows without dxvk and then with dxvk you won't reproduce it until the cache is cleared). So it is better to delete users/Public/Documents/My\ Games/Void/Cache/* before each run.
The text was updated successfully, but these errors were encountered: