-
Notifications
You must be signed in to change notification settings - Fork 38
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
DXVK-NVAPI Broken in Dead Space Remake #126
Comments
I don’t think that dxvk-nvapi is the issue here, but something in your setup prevents dxvk from disabling the nvapi work around. You are seeing About Proton 8, I’m very sure that Proton 8 works just fine (at least the official Proton versions). The recently updated Experimental branch even ships current dxvk-nvapi |
My env has And in my dxvk.conf, I have:
So, for some reason DXVK will NOT create a log file. I just launched the game 6 times, with
I mean, it's universal. The bug might be somewhere in Proton/the Sniper runtime that isn't DXVK-NVAPI, but like I said:
I don't see how that could possibly indicate a configuration issue, when all non-Steam games (except Dead Space) work on Proton 8.X wine builds with the latest VKD3D-Protton/DXVK/DXVK-NVAPI master builds, and ALL Steam games work with Proton 7.X. Like how could simply switching a Proton version from the dropdown break DLSS, switching back to 7.x will fix it, and I can use the 8.x Proton build in Lutris to run another game and it'll work? I have wracked my brain for like a month trying to figure that out. Okay, so concerning Dead Space, there has to be some sort of hard-coded nvapiHack enabling within DXVK's code, because I just did the following:
This is in a prefix with a KNOWN working game, using the EXACT same |
Could you try Deathloop on Steam set to vanilla Proton 8 without any settings applied whatsoever? Thus no env vars, no launch options, no app-settings.py etc? Proton 8 enables nvapi by default for this game (https://github.com/ValveSoftware/Proton/blob/proton_8.0/proton#L1104) thus nothing is needed to enable dlss.
Sorry, I’m not that familiar with Lutris magic and when what settings gets applied. But yeah, something is definitely weird. |
WTF IS HAPPENING Sure enough, DLSS is available, and I even switched between Quality and Performance while looking at the fps counter to make sure it was actually working, it was. I guess I could try re-adding my envvars one-by-one to see what breaks it. Or if anything breaks it. With my luck it won't break again, because now Cyberpunk 2077 is broken. I launched CP2077, DLSS worked (you saw the log yourself, timestamped from this morning). I killed the game, and installed EA App into that wineprefix, and launching EA App did the |
REGRESSION! lol sorry, I'm excited. So, I found it. I haven't been able to bisect it or anything, cause that'll entail deleting prefixes and running But anyway, I added the first envvar, So, I switched to Proton Experimental, instead of vanilla 8.0-2. Sure enough, DLSS is now dead. Just to confirm, I added |
Does your Proton Experimental installation contains any modifications or is this vanilla Experimental? Like app-settings.py entries or updated components (dxvk) etc? |
Nope, I haven't touched a single thing. It's pure bleeding edge experimental. |
Experimental or Bleeding Edge? Those are two different versions. |
Well no, I'm using Proton Experimental, but I've opted into the bleeding edge branch of it. But that's not the problem, because it's been broken for well over a month, so it's not some bleeding edge update. But I'm starting the bisect right now, I'm starting with DXVK first, I checked out the commit used in Proton 8.0-2 and built it and I'm gonna see what that does and go from there. If you want, I can opt into the stable branch of Proton Experimental just to confirm that it's broken too, just so there aren't any unnecessary assumptions I might be making. Should I do that? |
Yes, let’s make sure first if there is a difference between Experimental and Experimental Beelding Edge. |
Yeah, I was already downloading the stable version right after I commented that, cause I figured you'd want me to confirm it. No difference, still broken. I'm copying the DXVK dlls into another 8.x build that I've confirmed to be broken to see what happens, if it's a DXVK issue this should fix it. After that I'll try DXVK-NVAPI. |
Leaving Experimental untouched and comparing Proton/DXVK/DXVK-NVAPI log files between Experimental and non-Experimental Proton might also reveal some hints. |
Okay, yeah I am leaving Experimental untouched, I just switched to a... Okay I stopped typing that cause I started the dxvk-nvapi bisection (installing the older dxvk didn't work). Sure enough: it works. Good commit starting at commit 80397ea. I can probably just go ahead and do the bisect since I have such a head start, if you want. |
Yeah sure :) all good as long as you do one thing at a time. |
Yeah, I thought about just trying to bisect it before even reporting (I think you may remember that usually I bisect stuff before I even come to you or Phillip or Hans-Kristian or anything), but at the time I thought all 8.x builds were bad which would mean I'd have to bisect forever, but now that I've found that it's for sure dxvk-nvapi, and it's for sure good at 80397ea, that's not too bad. I'm done with step 1, still bad, I have 3 steps left. |
Well whaddya know.... The culprit is:
commit hash d4b1371 I saw that in the commit history and I thought about just reverting that one, that completely explains why in Lutris games it coincides with the nvapi hack being reported. I'm assuming now I'm gonna have to frickin bisect DXVK to find out why the hell it's FORCING nvapiHack when I have it completely disabled in all possible ways. But yeah, I found the culprit. |
So, I did a fresh git clone and reverted only the bad commit, and compiled it, and placed the dlls in my Proton TKG build I've been using to bisect, and it does indeed work now. Only problem is, it doesn't fix Lutris. Likely because the way they do things requires nvapihack to be disabled or something. So I'll have to bisect DXVK too, if I even can, which I mean it obviously needs bisecting anyway, since the issue stems from both DXVK and DXVK-NVAPI. I will add that I've been compiling my own proton, dxvk, vkd3d, and dxvk-nvapi (and wine-nvml) builds for like 2 years at least (longer for some things), and nvapihack was NEVER forced before this all happened. |
If you are compiling DXVK anyway, the switch in code is here: https://github.com/doitsujin/dxvk/blob/master/src/dxgi/dxgi_options.cpp#L76 , you might set |
Yeah, what's even weirder is I've never even needed I'm globally enabling it in the source code now, I'll see what that does. |
So, Lutris is still failing, but I've found that it seems to be due to nvml failing to load. I have NO idea why it would be failing to load, all I did was run the included
|
Is |
The (as a side note, DXVK-NVAPI looks at the VendorId reported from DXVK (https://github.com/jp7677/dxvk-nvapi/blob/master/src/sysinfo/nvapi_adapter.cpp#L75), thus if you disable the nvapi hack, but still spoof AMD as a VendorId, DXVK-NVAPI still skips this GPU). |
I wonder why it's force enabling it then? I've used |
No, it is not needed and failing it to load really makes no difference to DLSS . Proton doesn't ship |
There is no need to set your vendor/device ID to your hardware, using |
Welp, looks like we have another bug, I replaced the nvml.dlls with the original ones in the wineprefix, and it's still not working:
It's picking up my GPU, nvapiHack is disabled, and yet it's not showing up in CP2077. Even though it showed up this morning. I'm using the bisected version of dxvk-nvapi and the modified version of DXVK (which is why the nvapiHack is disabled). dxvk-nvapi is loading, but it's not fully completing the process. This morning, I had a shitload of stuff in the log when launching CP2077:
|
Also, when I switch back to master for dxvk-nvapi, it still fails to load.
That's with the patched DXVK. And I've discovered that no dxgi.logs have been created in my CP2077 prefix since January (despite constant launching). 2.0-76 is the version in the last log. |
My guess is that Lutris is not using your just compiled DXVK version but another one. Thus for the game you are still running an AMD card. |
The logs show that it's reading my card.
It is in fact using my just-compiled DXVK. But it doesn't need to, the necessary patch is reverting the bad DXVK-NVAPI commit (and it's using the correct DXVK-NVAPI build too). Lutris symlinks your selected DXVK/DXVK-NVAPI/VKD3D dlls into the wineprefix, so a simple Plus, I just now launched Control Ultimate Edition, using the same exact DXVK build, the same exact DXVK-NVAPI build, and the same wine build, the only thing different is the wine prefix. And DLSS works. Control dxvk-nvapi.log:
When it reports an AMD GPU, the
But in the first log in this comment, you'll see that it does find my NV GPU, and it successfully loads, it just doesn't complete the process. |
Ah yeah, my bad, I had a wrong thought :) Startup in the logs is looking indeed good now. Could you play a bit with the settings in Cyberpunk? May be another AA settings, that got enabled somehow in the meantime, prevents you from enabling DLSS? |
Nope, FSR and XeSS are both disabled, and DLSS is grayed out. Before the breakage, I could enable whichever one I wanted and turning on DLSS would just turn the others off. Nothing was grayed out except frame gen |
So, Dead Space works now too. I switched over to the patched DXVK-NVAPI build and the patched DXVK (both were required), and DLSS has shown up for the first time ever in Dead Space. Before today, it never once showed up in the whole time I've owned it. Same prefix as CP2077, too. |
I have pretty fast internet, like 300Mbps, so I'm going to download a completely fresh install of CP2077 in a new wineprefix, and see what happens, because as you saw, it worked this morning even with full master everything, something has to have broken when I installed EA App into the prefix. If that doesn't work, I'll go from there. But it's pretty confirmed at this point, nvapiHack is force-enabled no matter what |
Do you still use your dxvk config in Lutris? |
Yeah, but it doesn't matter, I've tried both ways and it never makes a difference. It's not even needed now, because I hardcoded DXVK to disable nvapiHack. Plus DeadSpace is using the dxvk.conf, as is Control. Both work with DLSS using the same builds as CP2077. |
Ok. Still weird that you also need that dxvk-nvapi commit to be reverted, because that commit only adds a check for the reported vendor Id from dxvk. If dxvk reports nvidia, that check should just pass. |
Just to be sure, you really need a modified dxvk and a modified dxvk-nvapi? Only one of those is not sufficient? |
I just switched to master dxvk-nvapi and launched Dead Space, and sure enough it was broken:
Using the patched version fixes it. But to respond to this:
Not counting CP2077 since that's broken regardless right now, in Dead Space and in Control, I ONLY need the patched dxvk-nvapi. Without the patched dxvk, I still get the "Reporting AMD GPU" in the logs, but when the game launches, DXVK-NVAPI loads, and DLSS is available in the menu (before I patched DXVK-NVAPI, it never once showed me DLSS, the upscaling menu only showed TAA and FSR 2, now there are 3 options). I just tried Dead Space with ONLY the patched DXVK. DLSS doesn't work. Even though the nvapiHack IS disabled (I'm piping all these attempts to log files, the workaround doesn't show up unless I use an UN-patched DXVK). But DXVK-NVAPI still fails:
But if I switch to the patched dxvk-nvapi, DLSS does work, whether I used the patched DXVK or not. It always works. So there's obviously a bug in DXVK that's force-enabling the nvapiHack, but there is seemingly also a bug in dxvk-nvapi because unless I revert that bad commit, DLSS will not work no matter what I do. |
Oh wow, just seeing this now:
Your vendor and device IDs are reverted. |
Okay, so what the hell lmao. I hadn't edited that dxvk.conf in months, and I don't even remember the last time I edited the vendor id and device id, but this morning, even with the bad vendor id and device id, the nvapihack wasn't getting enabled in CP2077 and DLSS was working. I mean you saw it yourself in that very first CP2077 log I showed you. That was with an unmodified DXVK-NVAPI and an unmodified dxvk.conf. But now I have fixed it, and DLSS is working in CP2077, Dead Space, and Control, with DXVK master and DXVK-NVAPI master, but get this - in Dead Space, it's STILL reporting the nvapiHack being enabled, even after fixing the dxvk.conf file. game log:
dxvk-nvapi.log:
Like, wat? But anyway, I suppose that's more of a curiosity at this point, since DLSS is now working in the Lutris games now too. I'll go ahead and close this, and if I can figure out why nvapiHack is being force-enabled only for EA App I'll report it to Phillip. Thanks Jens. |
You are welcome! I’m glad that we could track this down. I would advise to remove those configuration option for the ID overrides, those are easily forgotten and can cause issues when you switch GPUs (e.g. Ada is detected by looking at the device ID) and, as you have seen, those are prone to errors :) |
You're totally right, I've just had it for years and so now I have about 70 games pointing to that file, because before there wasn't a I've also finally got DLSS working in Dying Light 2 (Steam), it along with Dead Space was the only game I couldn't get DLSS in on Proton 7 OR 8. Thanks again man |
So, every time I try to launch the Dead Space Remake through Lutris (EA App), the logs read
DXGI: NVApi Workaround enabled, reporting AMD GPU
, despite the fact that I have a dxvk.conf with the option set to false, I haveDXVK_ENABLE_NVAPI=1
set, and DLSS works in all my other Lutris games (CP2077 on GoG, Control Ult Edition on GoG, Rise of the Tomb Raider on EGS, Control standard edition on EGS, etc).Just to see what was going on, I launched CP2077 back to back with Dead Space, both with
DXVK_LOG_LEVEL=info DXVK_LOG_PATH=~/tmp
, and mydxvk-nvapi.log
file shows that initialization is failing:CP2077 Log:
Dead Space:
I've tried everything I can think of. It also doesn't work in ANY Proton 8.X games (regardless of 8.X version, whether official, experimental, TKG, or GE), but if I switch to ANY 7.X version, it works fine. But I believe that's a separate bug, because the
Reporting AMD GPU
doesn't show up, I'll get some logs tomorrow and either add them here or open a separate issue if the logs aren't the same.The text was updated successfully, but these errors were encountered: