Replies: 0 comments 48 replies
-
I guess you could integrate QRes functionality, but then you have to do it differently on Linux and integrate xrandr for x11 or differently in Wayland depending on the compositors. E.g wlr-randr, gnome-randr etc. Then for Mac I have no idea. It's much easier to just provide good instructions on running third-party tools via detached commands to accomplish the same thing. |
Beta Was this translation helpful? Give feedback.
-
The problem is that then you have no control over the user friendliness of the tools. Guides can only help people to a degree when they're dealing with complex things. Sure, I'm only a front-end Web developer. But I'm still a developer. And yet that stuff is currently mostly over my head. Clear instructions in the docs could help. They could certainly get things to a level where I would be comfortable giving it another shot. But pathetic as I might be, I still very much think I'm way above the average gamer in terms of being comfortable with CLI stuff. So I'm not sure it's sufficient in the long term if Sunshine has ambitions of appealing to the general public eventually. Maybe the answer could be some sort of plugin structure. It could evolve further in the future, but the "plugins" could start as simply as a curated list of commands you can easily copy paste and add to your apps, with clear explanations of any parameters? Then maybe a step 2 in complexity could be a few spots in the interface where a plugin author could inject HTML/CSS/JS, plus a few hooks/events in the program itself where they could run commands, synchronously or asynchrously. Kinda WordPress like, I guess. With the resolution switching plugin, you'd be prompted to install one of the required resolution switching programs, kinda like peer dependencies in npm, and it'd give you an intuitive interface for it and a good, working default config. And then I guess step 3 would be a real full fledged framework/API/etc? That's just one idea though. Maybe there's something much better to do to solve that issue. Tbh, resolution switching arises from such a common use case it's kinda bewildering to me that it wasn't included with Nvidia's proprietary streaming stuff to begin with. They could've even integrated it with their driver-side DLSS-like upscaler for more wow factor. "4K gaming even on the 3050!" Or something. I don't know what exactly, but I hope there's a way to integrate it in a way that's as user friendly as possible. |
Beta Was this translation helpful? Give feedback.
-
In case it helps, this is what I have in Linux/X11 to switch resolution, scale and refresh rate for my TV on connect and then reset it ready for desktop use on exit. I guess QRes would be similar. I include 1440p both times because I have another profile that does 4k/60 and occasionally it doesn't switch back on exit |
Beta Was this translation helpful? Give feedback.
-
But doesn't it only change Desktop resolution, exclusive fullscreen Games would have a separated resolution? In my setup, host resolution always 1080 (both in-game and desktop), and when I'm on slow bandwidth internet, I would downscale stream to 720 (config on Moonlight), and it doesn't look really bad. |
Beta Was this translation helpful? Give feedback.
-
I have set up this with some of the recommended tools and playnite. The problem I have is how to automatically recognize the resolution requested by the moonlight client in order to pass it as a parameter to my do/undo scripts. If I can access this then I can share my strategy to automatic resolution changing. |
Beta Was this translation helpful? Give feedback.
-
There is a script developed by one of our contributors to automate resolution changing on Windows, listed in the nightly docs. https://docs.lizardbyte.dev/projects/sunshine/en/nightly/about/app_examples.html |
Beta Was this translation helpful? Give feedback.
-
I'm want to write a windows background service to handle the resolution changing for windows with an installer. Is there any better way than pulling from the logs to find out what resolution and refresh rate the client requested? Also is there any way to tell what process it is opening? I think could do this in C# and might even be able to pull it off on Linux as well. No promises. |
Beta Was this translation helpful? Give feedback.
-
It would be good if the documentation recommended something other than abandonware as a solution. Something written for the Win95 era doesn't strike me as a great example.. could break any time. Some slightly more modern alternatives if Sunshine doesn't want to build this in (which still feels like the right thing to do... ) : -https://github.com/gurnec/SetScreenResolution |
Beta Was this translation helpful? Give feedback.
-
P.S. if you want to ALSO change HDR state.. you can run Update: In case anyone finds this.. i used a combination of multires + nircmd to accomplish the task of toggling HDR and 1440/4k resolution like this: For some reason the nircmd resolution switch function worked fine by itself (e.g. It would be ideal if Sunshine had a "switch resolution" and "switch HDR state" on app launch... :). Built-in functionality would avoid all this struggle to find the magic combinations. |
Beta Was this translation helpful? Give feedback.
-
2019 is at least relatively recent . But anyways, my point is that it's hard to find a single tool to do the HDR + resolution changing, and when you try to chain commands together you get unreliable results based on, as far as I can tell, race conditions... where if the second command executes too quickly after the first, it doesn't work properly.. i'm not really quite sure how to fix that, since the command executes and completes immediately, but it does take the graphics driver and monitor a few seconds to re-handshake at a new resolution/setting. Since fundamentally sunshine already has lots of resolution-related settings associated with encoding, it would seem to be a natural extension to have native resolution/HDR API calls as part of the app launching to make this experience less error-prone and guess-and-check. Is it something that would be considered for implementation ? |
Beta Was this translation helpful? Give feedback.
-
I'm actually using this nirsoft tool -- MultiMonitorTool. It has the nice ability to save full configs, so I used the tool to save a "Default" config, and then my Do/Undo commands are:
seems to work well. To go a little fancier I'd probably make the "do" step save the current config for undo to load, instead of going back to the primary one and put the whole thing into a single .bat file for easier maintenance. I'd also probably use the tool to turn off my second monitor while streaming. The nice thing about this tool is that it can make a full config change in one go, so reduces race conditions etc problems. Parsec has "virtual displays" that it sets up just for streaming, so that your can have your actual monitor blanked. Would be nice to investigate something like this as well. However, I do agree with this:
A modern implementation for Windows using the CCD API wouldn't be too difficult. I believe it has to be CCD though in order to be able to set things like HDR color. |
Beta Was this translation helpful? Give feedback.
-
Is there any movement on this? I have a mixture of 16:10 and 16:9 devices so the ability to automatically change resolution based on the client requested resolution would be fantastic. |
Beta Was this translation helpful? Give feedback.
-
Interesting that this is still unsolved for Moonlight, GeForce Experience and Sunshine. Sticking to Steam Link for now. |
Beta Was this translation helpful? Give feedback.
-
The problem is a bit hard to solve manually
I know GameStream Launchpad and QRes exist, but while I used to use GameStream Launchpad with Playnite back when I used Nvidia's proprietary GameStream, and it worked fine, I ended up giving up on it with Sunshine.
I saw a few support threads, saying to use the .bat files as detached commands, or to put the .bat file's command itself into Sunshine and forgoing the .bat file altogether, but I haven't been able to get it to work at all. Granted, I'm pretty bad at this kind of stuff AND I didn't put hours and hours into it, but yeah. It's not been easy.
In the mean time, I've been manually switching my monitor between 4K for games and 1440p for work (because 4K on a 1440p monitor makes some text really ugly). It works, but it's a bit of a pain in the butt to sit down to play, notice the graphics are kinda off, realize I forgot to switch the resolution, have to close the game and Sunshine, get up, change the resolution, and start over.
My suggestion
It seems like the kind of thing that people would want to do often: stream from a PC whose monitor 1080p/1440p/ultrawide or whatever to their 4K TV.
So I think it'd be a really neat feature if we had a toggle in each app to automatically switch the host PC to the resolution the client asked to stream at, and then switch back once the connection is terminated.
I'd make the previously mentionned "Match requested resolution on host PC during stream" the default, but I don't see a reason why it couldn't be customized with specific resolutions. For instance, you could set up an app to open Playnite at 1080p and another one for 4K. You could choose on the client depending on how demanding the game you want to play is or whether you're currently streaming locally or over the Internet.
Beta Was this translation helpful? Give feedback.
All reactions