-
Notifications
You must be signed in to change notification settings - Fork 905
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
Nvidia driver discussion #267
Comments
Well, the new compiler doesn't seem to be mature yet, don't use it for gaming with DXVK. Gathering some feedback might help them improve it though, and maybe uncover some new bugs in DXVK. As for Tessellation in Tomb Raider 2013 not working properly, that is a DXVK bug I think. @pdaniell-nv Could you keep an eye on this thread as well? |
Thanks for the heads up. I'll report back when I know more. |
@pdaniell-nv |
It should be noted that not all of the games @pingubot mentioned are well-tested and some of them have known issues. I think only Crysis 2 and Unigine Heaven are expected to work properly. |
I haven't played all the games from beginning to the end (i did that for crysis 2, also a few hours into crysis 3, for the rest it is really less than 1 hour per game), but the things i mentioned are the things that have changed between the new and the old nvidia driver spirv compiler. So it is just to show the differences. |
@doitsujin Are there any SPIR-V work arounds in place for our old compiler? If so, they probably need to be removed for the new compiler in 396.18 and beyond. |
@pdaniell-nv the only Nvidia-specific workaround in my compiler is adding an extra component to the coordinate vector for the With the exception of the aforementioned workaround, as well as GPUs which do not support the @pingubot What I'm trying to say is that you might simply be hitting undefined behaviour in some cases, which just happened to work for some reason with the old compiler. |
Ok, thanks. We're looking into the functionality and performance regressions described above. |
Using |
TW3:
|
As an opposite effect to bugs in other games/applications I can report Just Cause 3 runs without issues (except green color dominated) now. This is for wine-staging, game was launched from steam menu, no other settings touched. |
Tested Dark Souls 2 and Dark Souls 3 on this commit: adb1789. UPDATE: On the latest commit 8dfe708 color issues are gone (with new compiler). Or maybe it was just a glitch. On my GTX 970 with 396.18 driver, with 1440p resolution, wine 3.5, on low settings Dark Souls 3 is playable at 40-55 FPS. If i enable shadows in graphics settings (Off->Low) performance drops to 1-2 FPS. |
With new compiler Path of Exile crash while loading with: |
Want to add FEAR 3 to the list of affected games: Driver 396.18: New Compiler: 9 fps Disabling MSAA leads to: New Compiler: ~ 35fps Many thanks ! |
Want to add Skyrim SE to the list of affected games: New Compiler = 3.5 to 5 fps Settings have no influence at all on the bad performance of the New Compiler. |
I suggest using |
Thanks for all the reports posted here on our 396.18 driver. We have just released a new 396.18.02 beta driver on our Vulkan driver page here: https://developer.nvidia.com/vulkan-driver This should resolve some of the performance and corruption issues reported. As an added bonus this driver also increases the number of UBOs allowed per shader stage from 12 to 15 as discussed in issue #90. We look forward to hearing feedback on the new 396.18.02 driver. Thanks! |
Driver version: 396.18.02 This is what Overwatch via DXVK (b82ae16) looks like with: __GL_NextGenCompiler=0 So it seems like there is still some corruption going on. EDIT: fixed with commit 5eaacf7 |
Driver version: 396.18.02 This Unity engine demo seems to have issues with corruption as well: __GL_NextGenCompiler=1: __GL_NextGenCompiler=0: EDIT: fixed with commit 5eaacf7 |
Driver: 396.18.02 The performance issues on GTAV with __GL_NextGenCompiler=1 are fixed, but with the maximum settings, this line exists onscreen |
For the issue with the Unity engine demo that @varris1 reported, it appears the SPIR-V is invalid in at least one of the shaders. In one of them there is this:
In this example %o0 is actually a pointer to v4float and the OpVectorShuffle should have be used with vector types. So some kind of scalar/vector mixup going on. Actually the spir-v validator catches the OpLoad type mismatch above, but not the OpVectorShuffle issue. |
@pdaniell-nv what are the settings that generate the invalid shader? Just tested with Edit: Not getting any errors with the other presets either. |
I had a small issue after installing this in TW3 where hairworks didn't appear to be working but after manually wiping the shader cache the hair came back. Edit: This new dev driver definitely breaks hairworks. First run it renders correctly but upon reloading the shaders it doesn't: I didn't have this issue with 435.17, haven't tried 435.21 yet. Edit again: I've resolved the issue with |
We just released Vulkan Beta Driver Linux: 435.19.03 Fixes:
|
Tested the following with this new 435.19.03 driver: Run a few rounds of Unigine Valley - OK Result:
PID:1124 is nvidia-persistenced, 25970 is Unigine Heaven. Fiddling with these caches does sometimes produce these results, and did also with the new 435.19.03 driver. Now, one can argue that "there is no need to touch that", but the facts are that whenever something changes - be it wine, dxvk or driver version - the caches ARE being rebuilt, and imo these unexpected results seem to pop up out of the blue. I will keep testing more tho. And it might just aswell be 2 different bugs here, and that the 435.19.03 driver fixes memory allocations that the #1100 thread is about. Lets hope so :) Thanks for working on this problem! |
For: 435.19.03 Saints Row IV Saints Row: The Third Jotun: Valhalla Edition
Same as prev. driver versions. |
@pchome did you try deleting your Nvidia shader cache? Apparently some people are having issues that it doesn't always get invalidated properly after a driver update, although I'm not sure if there's anything to it. |
@doitsujin |
Shader dump and debug logs for Jotun: Valhalla Edition: Jotun.zip |
Happened to me several times in Mad Max (linux vulkan branch). So it's not DXVK issue. |
@pchome the fact that 2 completely different games have visually similar issues does not prove that it's not a DXVK issue. |
That's true. Let's say, it's very likely not DXVK issue. Because:
This thing is very random, very hard to "catch". I just can't spend the whole day in "apitrace" mode, hunting it. If there are other methods I can use to help with this, I'll happily use them. |
@pchome "native linux ports" often are not authentic native ports: They are usually derived from the Win32 code base by using wrappers similar or based off wine. You can see that from the console output of some native ports when comparing error messages to wine logs: They look exactly the same. This is also true for Feral ports: While they don't seem to use a simple EXE wrapper but instead a native compile output, they still use wrappers around the original code base which works much like DXVK or wine - with the difference being optimized exactly for the game. It may even share the same ideas and thus produce similar bugs to wine/DXVK. In fact, such bugs may actually be in Direct3D - and the game working around it will then see a bug in the port. Feral ports may have the benefit of instead wrapping the Direct3D calls, they may actually swap the graphics engine to a native Linux version, then apply their wrapper patches on top. This still may show similar bugs. BTW: I didn't see any graphical issues in the Mad Max port, neither with the OpenGL nor with the Vulkan beta. |
It appears nobody can reproduce this, could be setup (or hardware) problem. I do have some custom settings. In case it can help with the issue, here they are: xorg.conf.d/70-device.conf , "Device" section: # reduces window lag, default 0x3 (?)
Option "RegistryDwords" "OGL_MaxFramesAllowed=0x1"
# for >= 375.10 and ForceFullCompositionPipeline
Option "ForceCompositionPipeline" "true"
# fix CompositionPipeline GPU usage for >= 390.25
Option "UseNvKmsCompositionPipeline" "false" The first one was there for testing purposes, and forgotten. I'm not sure it changes anything, copy/pasted from internet. The other two are for Vsync OFF options. The last one was a "hot-fix", but I didn't checked if something changed since 390.x version. I have Vsync OFF everywhere (KWin compositor/Nvidia settings/game), also Flipping disabled in Nvidia settings. KWin compositor always ON, while I playing a game in windowed mode. Finally some Nvidia specific environment variables are set in export __GL_SHADER_DISK_CACHE_PATH=$XDG_CACHE_HOME/nv
export CUDA_CACHE_PATH=$XDG_CACHE_HOME/nvCUDA to move the In addition, |
@pchome These are a lot of settings, and some of those you seem to have for quite a long time. I can only tell you that I neither need nor use any of those. I've set kwin to always use vsync here because otherwise I'd see tearing in videos played on Youtube. For the rest of the window system it doesn't seem to matter what vsync mode kwin is using. Instead I allowed fullscreen windows to disable compositing, I think my Proton patch for that has been ported also to Lutris. Of course, this won't work properly if you force a composition pipeline through the driver. The driver will always force scaling and vsync in the last instance. I tried "ForceCompositionPipeline" once and I had bad performance effects due to this. I reverted that change. This setting does not work well if anything else tries vsync. I also allow flipping because in theory it allows higher performance: Swapping back buffers won't be a blitter operation then but just a page flip (the GPU doesn't have to copy video memory around). This only works properly with single monitor or when using clone mode. Otherwise the driver will force blitting anyways. I'm also not sure if it is wise to force a maximum frame count because some graphics stacks need at least 3 frames to work properly, especially if you're using a composition pipeline. Regarding your environment vars: The path vars should be safe tho I don't see a point in micromanaging this. Have you ever tried with reverting any of those Xorg settings to default? This combination of settings may actually make a difference for stability, I think. Also, on my machine, these are not needed for tear-free, stutter-free, and low-lag gaming. And I'm pretty confident that using "ForceCompositionPipeline" is the wrong flag to fix any of the tear/lag/stutter problems: That option is made for a different purpose, and some of its "positive" effects are just side-effects. |
Yes, I even tried to set up triple-buffering, and it works flawlessly, but for a very few games. I have two problems with this: weak hardware and ultra-wide monitor. For the first case, it's very hard to reach stable 60fps, and for the second, many games in my library are not designed for other then 16:9 monitor resolutions. So, this setup is ok for me, when I usually play games in 16:9 window, and I'm fine to loose 10-15fps (due to KWin compositor and a composition pipeline) to have stable ~30fps and similar behavior in most cases. In addition, I able to observe a game/system behavior via Conky monitors on left and right desktop sides. That's why I don't like if something trying to force full-screen mode and disable composition. |
There is a problem with shader creation with StarCitizen. There is a new SC update incoming and while we first saw some issues with the hairwork. This is, what the directory looks like: `[rawfox@operator CGCShaders]$ ll insgesamt 412 When we copy the already created shaders from a Windows installation of the game, everything under Linux is going ok, until the game creates new shaders were some are 20bytes/broken as well, so we (#LUG Linux Users Group at CIG) think, there is a problem with the shader creation under wine. We suspect missing functions in wine again and we are also hard at debugging atm, but im here now for more input, info's, just a salvage strategy. What would you say ? |
I noticed shadercache creation issues since 435.19.02 on the vulkan beta branch exclusively in both Witcher 3 (as reported above) and FO76. Swapping back to non developer branches gets rid of it, that said I haven't tested Star Citizen or later dev branches myself. |
Thanks for reply, but this happens on AMD users as well, so this is rather offtopic and while im really sorry about abusing this thread, i just cant find a better place as people here in this thread are specialized on such issues. Its a wine problem and doitsujin as well as daniell may have a good insight, how shaders are created under wine, so i hope to get some input here :) |
It turned out that just vcrun2017 was missing in the wine prefix. |
Witcher 3 with new driver 440.31 keeps stuttering. Do you have same experience ? I use Fedora 31 + drivers from rpmfusion repo. Game settings: DXVK 1.4.4, Esync ON, wine: lutris-nofshack-4.19 (other lutris default, no special options) |
Does the stutter go away after playing for a while/restarting the game? |
looks like its better in windowed borderless mode :) interesting |
@liam-middlebrook Edit: I fixed the issue in DadSchoorse/vkBasalt@8310fd6 |
@pdaniell-nv
|
@pchome Thanks for noticing and reported that issue. You have a sharp eye. Should be fixed in the next few minutes. |
@pdaniell-nv I am wondering something when it comes to nVidia's "driver branches" - as of now it is the "Current official release" and the "vulkan driver" branch. Does fixes from the "vulkan driver" branch get incorporated in the "official release", or are these somewhat more separate than that? As of now, the "official release" driver is 440.59, where as the "vulkan driver" is 440.58.02, and my understanding is that this is "branch" 59 and 58 respectively. Thus the "release driver" is of a newer "version" than the vulkan one, but from what i understand this is just because of "different branches"? Or have i misunderstood? So, if i have not misunderstood, am i right in thinking that "fixes" that happens in the same "branch" carry over, but not necessarily to the other branch? eg. If a fix for DXVK happens in 440.43.02 it will carry over to 440.48.01 and subsequently over to 440.58.01? But not necessarily over to the "release branch" of 440.59? I am aware that new bugs could be introduced, but atleast it would be easier to figure out, cos it seems as installing a newer "version" is not really the best bet when it comes to compatibility with vulkan/dxvk at times. I have had quite a few weird crashes with the 440.59 "release branch" that does not happen with the 440.43.02 driver. If you say that all "fixes" introduced in the 440.43.02 "vulkan driver branch" is incorporated in the 440.59 "release branch", it means it would be a new bug vs. if those two driver "branches" not really have the same code-base it is somewhat harder to compare between those branches. Hopefully you understand what i mean, and again sorry if this is too much off-topic. |
Driver 440.59, and the rest of the Linux 440.xx drivers, come from the core "r440" release branch. Driver 440.58.02, and the other 440.xx.yy drivers found in the Vulkan beta driver page, come from a side-branch off the main r440 release banch, let's call it vk440. That side-branch has special Vulkan integrations from our "main" development branch, to get those changes out to the public sooner. Those changes are usually "beta" quality and would introduce too much risk going directly to the r440 release branch. Those changes will eventually land in some future release branch. So, from your example, if a DXVK fix was integrated from main to vk440 and released in 440.43.02, then that same fix will also appear in later 440.xx.yy Vulkan beta drivers like 440.48.01 and 440.58.01. That fix may not land in the 440.xx general release drivers, like 440.59. The changelog should indicate what's new in each 440.xx general release driver. If you're a bleeding-edge Vulkan developer the 440.xx.yy Vulkan beta drivers might be a good choice to get the very latest features and fixes for use during development. If you see regressions between Vulkan beta releases, please let us know. For most people the 440.xx general release drivers are the best choice. Shipping products should only rely on the users having general release drivers. |
@pdaniell-nv There is nothing suspicious logged in the dxvk logs, nor in syslog (no XID errors). When using DXVK World of Warcraft just crashes with a Error 132, (without that being very telling of anything) but there is a difference when using vkd3d. When using vkd3d and D3D12, WoW will hang for 3-5 seconds, then continue. The WoW logs sais something about reinitializing the driver when that happens. I will check out the next vulkan driver when that gets posted and compare then, and if i still struggle i will delve more into trying to get some logging done. But it is a nut to crack, as it (as before) can crash 2 times in 30 minutes, or 0 times in 5 hours. From the changelog of the 440.58.02 driver:
I do alt-tab a bit when playing, as i usually have Chrome open on my second monitor... and i use a GNOME desktop.. so it could be related to something there. |
Closing due to old age. Please open a new issue when encountering bugs. |
Nvidia introduced new Vulkan SPIR-V compiler. Games using DXVK runs very slow with it (it can be disabled by using
__GL_NextGenCompiler
envvar).Comparision [3840x2160, new vs old, disabled by envvar]:
Moreover:
System information
The text was updated successfully, but these errors were encountered: