HGL
exotic-emerald

DXVK-NVAPI

As requested from gituhub I've moved my messages here from the issure. Game log is attached
56 Replies
flat-fuchsia
flat-fuchsiaβ€’3y ago
I would manually copy nvngx.dll and _nvngx.dll to the system32 folder in your prefix that should get DLSS working
exotic-emerald
exotic-emeraldOPβ€’3y ago
Yup that did the trick copied /lib64/nvidia/wine/* into sys32 of the prefix and it now works on your latest branch Without any other tinkering
flat-fuchsia
flat-fuchsiaβ€’3y ago
so this makes implementing DXVK-NVAPI with DLSS into heroic impossible πŸ’€
exotic-emerald
exotic-emeraldOPβ€’3y ago
Is it a permissions thing?
flat-fuchsia
flat-fuchsiaβ€’3y ago
no to find the path it might not be /lib64/nvidia/wine on some distros
exotic-emerald
exotic-emeraldOPβ€’3y ago
Ah yeah of course
flat-fuchsia
flat-fuchsiaβ€’3y ago
we need to load a .so file run a function in it to get the path close it and then copy the dlls and then do that registry key thing it says to do except I think that you can't do that with electron + TS you need a helper binary of some sort can probably write one in C or meme language (the one involving crabs)
exotic-emerald
exotic-emeraldOPβ€’3y ago
Looking through the repo does https://wiki.mozilla.org/JSctypes ctypes.open("user32.dll") maybe fulfill the same function as CDLL?
flat-fuchsia
flat-fuchsiaβ€’3y ago
yeah I think that works the question is how do I implement it in the code and is it the best path we can take and I don't think that API exists anymore
exotic-emerald
exotic-emeraldOPβ€’3y ago
I am honestly unsure, those are all great questions. But if the purpose is to mimic how lutris does it, i think that JS interface is molded after the save python interface Lutris is using quote
js-ctypes is a foreign-function library for Mozilla’s privileged JavaScript. It provides C-compatible data types and allows JS code to call functions in shared libraries (dll, so, dylib) and implement callback functions. The interface and implementation are modeled on the Python ctypes module.
That kinda raises the question how V8's implementation is though
flat-fuchsia
flat-fuchsiaβ€’3y ago
I feel like this is the type of thing electron/chromium won't support because it's super easy to gain access to the host system
exotic-emerald
exotic-emeraldOPβ€’3y ago
Yeah was about to say. Seems super insecure to leave open on electron
flat-fuchsia
flat-fuchsiaβ€’3y ago
so helper binary it is I will write it in rust because I have been wanting to learn it for a while now and I am tired of makefiles :p
exotic-emerald
exotic-emeraldOPβ€’3y ago
Can very heartily recommend the language πŸ‘ It's my language of choice, and there's a good reason why it's the most loved language on stack overflow. Word of caution though, it's got a steep learning curve
flat-fuchsia
flat-fuchsiaβ€’3y ago
I am fluent in C so meme language shouldn't be that hard for a simple < 30 line program
exotic-emerald
exotic-emeraldOPβ€’3y ago
For this cause only you don't really need to learn the language that well. If you're fluent in C and familiar with RAII, it should be quite easy for this use case
flat-fuchsia
flat-fuchsiaβ€’3y ago
@Kalavin sorry for the ping
flat-fuchsia
flat-fuchsiaβ€’3y ago
GitHub
GitHub - Etaash-mathamsetty/nvngx-finder: finds the path to a nvngx...
finds the path to a nvngx.dll. Contribute to Etaash-mathamsetty/nvngx-finder development by creating an account on GitHub.
flat-fuchsia
flat-fuchsiaβ€’3y ago
if it returns a path nvngx.dll should be located in path_returned/nvidia/wine/ the code is probably really cringe but it's the best I could muster with libc
exotic-emerald
exotic-emeraldOPβ€’3y ago
Seems to work as expected on a system where nvngx is located in /usr/lib/nvidia/wine Path returned is /usr/lib which is correct @OOOOOF123 Sorry for the ping back
like-gold
like-goldβ€’3y ago
looks good
flat-fuchsia
flat-fuchsiaβ€’3y ago
CI up and running @Kalavin hello it's me again could you try the latest commit it should automatically copy nvngx.dll just remove it from your prefix could you also open regedit in the prefix and make sure FullPath is present in HKEY_LOCAL_MACHINE\\SOFTWARE\\NVIDIA Corporation\\Global\\NGXCore and that it has C:\windows\system32 set as the value
exotic-emerald
exotic-emeraldOPβ€’3y ago
Sure, just give me a couple of minutes Deleted _nvngx.dll and nvngx.dll from prefix manually, then unticked the install dxvk-nvapi option in the launcher. ticked it again, and both nvngx and _nvngx were present in the correct location in the prefix. Also opened regedit in the prefix and the path you choose had the FullPath key set to C:\windows\system32. So everything seems in order. Will try to delete the prefix and go at everything from scratch in a bit to see if it just works which it very much should, but just to double check of no unsuspected behaviour Fully deleted the existing prefix i had. Then made a fully fresh one, just ticking install DXVK/DXVK-NVAPI/VKD3D, and it just works now. Well done πŸ˜„ There's a small suggestion i have for the rust binary though. I noticed that it's 9.42M in size in the repo. I suspect that you're building the binary in debug mode. Might want to build in release mode to get it down to ~3.2M. The big savings is release mode with
[profile.release]
strip = true
[profile.release]
strip = true
in the Cargo.toml file which will get the binary down to ~324k You can minimize the binary quite a bit more but i don't think shaving ~100k more is worth the trouble
flat-fuchsia
flat-fuchsiaβ€’3y ago
I did cargo build --release and it's still that big πŸ’€ Stripping the binary is important though and I will add that
exotic-emerald
exotic-emeraldOPβ€’3y ago
Try adding the profile.release lines in the cargo.toml file and build with release again
[package]
name = "nvngx_finder"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
libc = "0.2.140"

[profile.release]
strip = true
[package]
name = "nvngx_finder"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
libc = "0.2.140"

[profile.release]
strip = true
flat-fuchsia
flat-fuchsiaβ€’3y ago
Yeah that's what I just did On my phone :Eyes_shaking:
exotic-emerald
exotic-emeraldOPβ€’3y ago
Are you building on your phone?
flat-fuchsia
flat-fuchsiaβ€’3y ago
I could :Eyes_shaking: But I'm gonna use CI instead Yeah it's 318 kb now Thanks
exotic-emerald
exotic-emeraldOPβ€’3y ago
great πŸ™‚ What problem did you have that made you decide that it was to complex to continue? Was it making rust into a nodejs library that you had trouble with?
flat-fuchsia
flat-fuchsiaβ€’3y ago
no favio said so it's a feature that's too low level and people won't understand what it does and not many people can make use of it heroic's settings are already too complicated according to him and he wants to make them more simple and not more complicated basically even if I figured out how the node library would work, it's still not getting merged
exotic-emerald
exotic-emeraldOPβ€’3y ago
Ah i see, that's too bad. Guess i'm sticking with Lutris. Thanks for exploring getting it the setting made
flat-fuchsia
flat-fuchsiaβ€’3y ago
yeah he said to use lutris for more complex stuff like this but I hate lutris and in fact I don't even have it installed because of how buggy it is so I am kind of stuck 😦 and I don't want to use bottles because of flatpak
exotic-emerald
exotic-emeraldOPβ€’3y ago
Understandable, there's no real "best option" right now on linux It all depends on what you're trying to do, and what compromises you are willing to accept
flat-fuchsia
flat-fuchsiaβ€’3y ago
heroic is the best option for me rn somehow
like-gold
like-goldβ€’3y ago
proton has it built in, and Wine-GE users with Nvidia RTX GPU are niche of a niche
flat-fuchsia
flat-fuchsiaβ€’3y ago
yeah ur best bet is proton
exotic-emerald
exotic-emeraldOPβ€’3y ago
Guess i'm niche of niche. Isn't using proton with anything other than steam heavily discourage tho? So would it not be any RTX user in general?
like-gold
like-goldβ€’3y ago
it is and Lutris added support for it lately I think that's not a case that much anymore unless it's ran in correct runtime it should be fine
exotic-emerald
exotic-emeraldOPβ€’3y ago
for proton? I thought they removed supported for it a while back
like-gold
like-goldβ€’3y ago
yeah and they added it back recently "because it works better than wine in some cases"
flat-fuchsia
flat-fuchsiaβ€’3y ago
over the summer im probably gonna make a project called brotron that's basically proton but meant to work outside steam
like-gold
like-goldβ€’3y ago
I was thinking about it with workarounds built in for some games :Eyes_shaking:
exotic-emerald
exotic-emeraldOPβ€’3y ago
Oh compleatly overloked that change. Havn't touched a game in a while so i didn't know. Good to know
flat-fuchsia
flat-fuchsiaβ€’3y ago
it would have a built in IPC bridge for discord as well (using this https://github.com/openglfreak/winestreamproxy) which is the best solution that litterally 0.0 people know about
quickest-silver
quickest-silverβ€’3y ago
Why is that a niche? I have the same setup That's a shame, this would be a nice feature.
like-gold
like-goldβ€’3y ago
it's too much stuff for that small feature check #βš”-development for Flavio's explanation
fair-rose
fair-roseβ€’3y ago
I have also a rxt card πŸ˜„ But i understand that we need less settings but not less features. So enabling everything (dxvk/vkd3d/nvapi) with one toggle is best solution Aslong as all three option don't interrupt each other
flat-fuchsia
flat-fuchsiaβ€’3y ago
At this point just remove all the toggles and just auto install it on every prefix heroic creates πŸ’€ Not a horrible idea actually Just need to find a way to update the dxvk/vkd3d/dxvk-nvapi automatically Big brain idea, store the hashes of the dlls when they are updated
like-gold
like-goldβ€’3y ago
what if you don't want DXVK :Eyes_shaking:
flat-fuchsia
flat-fuchsiaβ€’3y ago
Dll overrides Or winecfg Then when launching the games Compare the hashes Would have to be a cheapo simple hash Like md5 or smth SHA could be fine too
fair-rose
fair-roseβ€’3y ago
We still need to disable the option for opengl games Still need one toggle to disable it for opengl games
flat-fuchsia
flat-fuchsiaβ€’3y ago
Why? opengl will use opengl ?? It might waste some time installing but that's it
fair-rose
fair-roseβ€’3y ago
There are games like wonder boy that crashes if dxvk is enabled But runs fine without it So we need the toggle trust me But we don't need to seperate vkd3d/dxvk i would say
like-gold
like-goldβ€’3y ago
those are cases where wined3d shines
flat-fuchsia
flat-fuchsiaβ€’3y ago
Wined3d is dog poop on wine-ge on upstream it's way better
eastern-cyan
eastern-cyanβ€’3y ago
:Eyes_shaking: Which one of them Actually off topic

Did you find this page helpful?