Skip to content
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

[Feature Request]Automatic OptiScaler installation like SpecialK and ReShade #1188

Open
BuyMyMojo opened this issue Oct 20, 2024 · 3 comments
Labels
enhancement New feature or request help wanted Features/Bug Fixes that welcome contributions

Comments

@BuyMyMojo
Copy link

System Information

  • SteamTinkerLaunch version: v14.0.20240904-1
  • Distribution: Nobara 40

Feature Description

OptiScaler support in the same fashion as SpecialK or ReShade.

OptiScaler is a pretty universal Upscaling replacer mod and in the pre-release versions it can also add Frame Generation.
It is simple enough to install and explains to users the usual env variable needed in order to have it work on Linux.

I believe having this as a mod inside tinker launcher could be beneficial for Steam Deck users wanting extra performance and/or battery life in a much less manual way.

It has other supported names for it's .dll which can be found here

@BuyMyMojo BuyMyMojo added the enhancement New feature or request label Oct 20, 2024
@sonic2kk
Copy link
Owner

sonic2kk commented Oct 20, 2024

Support for Steam Deck is not planned to continue, Linux Gaming is more than and better outside of SteamOS. If this works outside of SteamOS, and the Linux support is first-class and is NOT specific or heavily geared towards SteamOS, I'm not opposed to having it in SteamTinkerLaunch. Again, so long as SteamOS is not the primary target, and Linux is supported more broadly than just that one distribution.

Please provide more details about how this should be installed if you are able. You mentioned an environmental variable, would it be enough to expect users to install this from i.e. their distribution repositories and just have a toggle on the Game Menu to enable this variable? Or is it in the vein of SpecialK and ReShade where it uses a DLL, and if so, where should this DLL go?

If this has first-class Linux Desktop support with no expectation of SteamOS being the "default", and is not a pain in the ass to manage installation of, this could be added. Though personally I'm not very interested in this right now, so someone else could add it. I'll add a "Help Wanted" label once I'm sure this is feasible to add.

@BuyMyMojo
Copy link
Author

BuyMyMojo commented Oct 20, 2024

SteamOS mention was all me, just where I thought this would also be useful. it doesn't mention SteamOS or the deck on the page at all, it is just a general mod that isn't Linux specific but has Linux support mentioned.

This mod adds a couple dll files into the executable path of the game; amd_fidelityfx_dx12.dll amd_fidelityfx_vk.dll libxess.dll nvngx.dll along with a config file nvngx.ini

nvngx.dll is the main mod file here and they currently recommend renaming it to another one of their supported names (Such as dxgi.dll or winmm.dll) and loading it that way for more support. when using it as dxgi you need the classic WINEDLLOVERRIDES=dxgi=n,b

@sonic2kk
Copy link
Owner

SteamOS mention was all me, just where I thought this would also be useful. it doesn't mention SteamOS or the deck on the page at all, it is just a general mod that isn't Linux specific but has Linux support mentioned.

That sounds fine to implement then. Thanks for clarifying.


We could download these files and set the WINEDLLOVERRIDES. We already do this in some places so there is precedent. We can append it to the WINEDLLOVERRIDES environment variable like we do for I believe ReShade and SpecialK, so as not to interrupt any other DLL overrides set by the user. It also sounds like no prefix meddling is needed which is a relief.

As for the file naming, this is reminiscent of ReShade in particular, where you need to name the DLL to match the rendering backend.

With Wine, is there any case for using winmm.dll as the name, or any other name? If not, SteamTinkerLaunch could probably just name it as dxgi.dll by default when extracting it. We can control the extract path with the same ALTEXEPATH that we use for SpecialK and ReShade.

if dxgi.dll already exists, we could fall back to winmm.dll (not sure how we would handle both existing), since it sounds like both are equivalent.

If other DLL names could be used, we could default to dxgi.dll, or we could have it default to "auto".

I still have some questions, mainly pertaining to Linux usage specifically:

  • Is there any support for native Linux games that would not require the use of DLLs?
  • Are all files extracted into the game EXE path, but only nvngx is renamed? The nv in the name worries me.
  • How does this tool know which upscaler to use? If this is defined in the INI file, perhaps SteamTinkerLaunch could expose a dropdown to either select an upscaler from a set list, or to enter a custom one?
    • The dropdown could list "FidelityFX DX12", "FidelityFX Vulkan", "Intel XeSS", but could allow the user to also enter a custom one, like how we do for the ReShade DLL name.
    • We could edit the section of the INI file that defines the backend with sed, I think we have a function that can do this mainly aimed at SpecialK INI but is probably portable or easily modified to support any INI if you give it a path.

I think overall this is probably feasible to implement, these are just a couple of implementation details I'd like to iron out. I'd like to emphasise again that I don't have immediate plans to implement this personally (I have been very demotivated by the Linux gaming landscape and gaming and computing landscape as a whole, and have not had as much interest in the hobby for a while) the community is welcome to contribute. I think ironing out these details is good even if it probably won't be me (at least anytime soon) adding this because it will allow the discussion here to serve as a reference. When I write features having as much laid out in the issue as possible really helps, there were some very long-running ReShade improvement issues that were very useful in getting a big overhaul done a while back.


Note for whoever implements this:

  • We can use a similar text file to track the DLLs that SteamTinkerLaunch installed that we use for ReShade.
  • ReShade can use dxgi.dll as a potential DLL name. We'll need to check how DLL naming conflicts would be handled when used with a tool like this (ReShade has some DLL name conflict checks, but afaik not with other things installed by SteamTinkerLaunch).

@sonic2kk sonic2kk added the help wanted Features/Bug Fixes that welcome contributions label Oct 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Features/Bug Fixes that welcome contributions
Projects
None yet
Development

No branches or pull requests

2 participants