-
Notifications
You must be signed in to change notification settings - Fork 1
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
Reimplement cuDeviceGetLuid to report proper LUIDs #8
Conversation
As a side note, dlssg snippet that ships with the game imports the following symbols from nvcuda:
but all I see in the logs are a few repeated cycles of
before the game ultimately hangs on a black screen with the only interesting thing logged around that time being
|
Nice.. I will look at this implementation of LUID. You could attempt to view the return codes from eg.
I suppose there are no other demo's that would use framegen like this currently.. I do have CyberPunk 2077 tho, but it might have other issues with this..
Could ofc indicate that the cudacontext is used to present some image, and the data is somewhat "incompatible". Anything interesting logged from dxvk or vkd3d? I would not think it actually has anything to do with resizing, but rather some image-data of sorts returned from this cudacontext that is iffy compared to what vulkan expects perhaps.... |
I'm not actually sure if anything there is erroring out, it looks closer to not matching the game's expectations… or it does match them but for some strange reason it performs this sequence multiple times. On another hand, from jp7677/dxvk-nvapi#234 (comment) maybe it isn't nvcuda's fault at all and my setup is just cursed… Maybe it would just work with another Wayland compositor, or Gamescope, or with X11 session.
Yes, it's logged as a warning and not a fatal error, the game should be able to just recreate the swapchain and continue, but something, possibly unrelated to nvcuda at all, fails so I just end up with a black screen.
Not really, the game doesn't call into them on its own, so vkd3d is completely unused and dxvk is used only indirectly from dxvk-nvapi, as far as I can tell. |
I might be misunderstanding you a bit maybe? I mean, if you even get a flicker of graphics it would be dxvk that would do that work. Just wondering how the cuda context ties together with d3d usage - Ie. dxvk/d3d gets some image data -> DLSS uses cuda to do some magic with that image data -> dxvk displays said image data as supposedly something viewable. And if the data (cuda context) that comes back from nvcuda is somewhat garbage or have a format not supported by vulkan it will break horribly. Might be similar to the issue with War Thunder where dxvk will crash when enabling DLSS - supposedly due to DLSS doing something that vulkan does not support. (Don't have the details other than "illegal and expected to fail") Thats why i was wondering if |
Not necessarily. I can literally disable all of Yeah okay, in this case Streamline does call into DXGI to enumerate adapters but the game never creates any D3D device.
There is no D3D usage here.
I doubt the game (or Streamline) is buggy enough to misuse NVX extensions like that.
War Thunder case sounds like a genuine game bug. Here, I have no idea what DLFG is trying to achieve, or why would it call into nvcuda instead of just using
The game never creates any D3D device so |
So.. its a vulkan game then? I did not know.. |
Yup. |
dfdc91b
to
58ce69d
Compare
I did the rename, and also changed the error code to more generic |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will sort things later 👍
@@ -3651,23 +3652,122 @@ CUresult WINAPI wine_cuDeviceGetUuid(CUuuid *uuid, CUdevice dev) | |||
else return CUDA_ERROR_INVALID_VALUE; | |||
} | |||
|
|||
/* code borrowed from Wine starts here */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably not overly important comment, but i would like these "non cu functions" to be moved up around
Line 85 in c89bb69
To somewhat make an attempt to keep the cu functions by themselves, and put these helper functions along with others :) But i will do some cleanup.. There is no lint'ing here as you clearly can see 🤣 🤣
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Feel free to move this around as you see fit 🙂
I don't have any preferences myself, I just dumped them here because that was the easiest thing to do 🙈
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Already did : 74a6c29
👍
I was debugging why DLSS Frame Generation was exploding Indiana Jones and the Great Circle (which was initially happening due to
unimplemented function nvcuda.dll.cuInit called in 64-bit code
) and after dropping nvcuda from this repo into Proton I ran into this, where the game was unable to match devices by LUID. Unfortunately, it appears to not be enough to make DLFG work, but still I decided to fix this along the way.