Youda008 / DoomRunner

Preset-oriented graphical launcher of various ported Doom engines (an alternative to ZDL)
GNU General Public License v3.0
203 stars 13 forks source link

[Feature Request] gamescope support #154

Open Setilla opened 3 months ago

Setilla commented 3 months ago

gamescope is frequently used for games run with Wine to force window behaviours, resolution upscaling, etc. But it also supports native applications, Reshade and by extension vkBasalt due to it using Vulkan.

I've found it useful for SDL (which won't recognize vkBasalt no matter what) games with retro graphics to make use of CRT filters; vkBasalt's environtment variables can already be passed with the feature from #117 . gamescope is a command that needs to be placed before the app it'll run on, however. A typical command goes like this (eg. Woof!): ENABLE_VKBASALT=1 VKBASALT_CONFIG_FILE=file.conf gamescope -f --force-grab-cursor -- woof -iwad "DOOM2.wad"

Currently we can't place anything before the engine command. I'm not sure how feasible it is to implement this since I've seen you mention DoomRunner has too keep its simplicity, but it may also be useful for Steam Deck users.

keenanweaver commented 3 months ago

If you don't mind a little weirdness, you can always just launch DoomRunner itself with Gamescope and the child processes/engines will also run in it: gamescope -w 2560 -h 1440 -f -- doomrunner

You'd want to edit the .desktop file/Steam entry/however you're launching DoomRunner to prefix gamescope on it.

Setilla commented 3 months ago

If you don't mind a little weirdness, you can always just launch DoomRunner itself with Gamescope and the child processes/engines will also run in it: gamescope -w 2560 -h 1440 -f -- doomrunner

You'd want to edit the .desktop file/Steam entry/however you're launching DoomRunner to prefix gamescope on it.

Yeah, it's either this or putting the whole prefix as a command line argument to the mods list and copying that and the final launch command manually. Both are less than ideal; launching DoomRunner in gamescope needs me to pass the environment variables I need, anyway, making the Environment tab pointless.

Setilla commented 3 months ago

I just figured out how to use Zink, the OpenGL>Vulkan translation layer. In case someone had the same problem as me, see this post by the dev: https://www.supergoodcode.com/preemptive/ Usage is as simple as setting MESA_LOADER_DRIVER_OVERRIDE=zink for the required sourceport (eg. making it a environment variable for the current "Woof!" preset). For NVIDIA users: https://wiki.archlinux.org/title/OpenGL#OpenGL_overVulkan(Zink)

I know SDL_RENDER_DRIVER exists to change the renderer but the output will be always OpenGL cause it's SDL, I guess. Sorry for the undue request. Someone with an actual Steam Deck would present better reasons to ask for this.