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

Fullscreen resolution not scaling properly #491

Open
kahnakha opened this issue Dec 31, 2024 · 6 comments
Open

Fullscreen resolution not scaling properly #491

kahnakha opened this issue Dec 31, 2024 · 6 comments
Labels
bug Something isn't working

Comments

@kahnakha
Copy link

Moonlight Version

1.6.28

Device Type

webOS TV

Device Model

LG C4

Device OS

9.2.2

Host OS

Linux

Host Software

Sunshine

Host Setup

ROG Ally Z1E running latest BazziteOS as a Host system to stream on the TV

Bug Description

IMG_4776
IMG_4777

Resolution is not scaling up properly when we are using a lower then the streaming resolution.
For example, I set my streaming resolution to be 1920x1080p at 60fps, but if I set the game to any resolution that is lower then this, then the image is not scaling up on the fullscreen, I also tested this with SteamLink and the issue is not there, regardless of which resolution I stream to the TV, and which resolution I set in the game.
While using Moonlight on the WebOS however, this is not the case.
It seems like Moonlight is searching for the same resolution which is set to stream at, and every other resolution different then that, is not scaled up properly on the entire screen, as it can be seen from the 2 pictures that I took, the issue is there when the ingame resolution is lower then 1080p and set to Fullscreen, and then the issue is resolved when I switch to Windowed Fullscreen(borderless), but that's also because usually WIndowed mode is using the native resolution of the stream(or at least that's what I believe it's happening here)

Reproduction Steps

  1. Set the streaming resolution to for example 1920x1080
  2. Launch any game, and set the resolution to anything lower then that, and also Fullscreen.

Expected Behavior

To scale the image on the screen properly, regardless of ingame resolution, just like SteamLink does.

@kahnakha kahnakha added the bug Something isn't working label Dec 31, 2024
@kahnakha
Copy link
Author

kahnakha commented Jan 3, 2025

UPDATE:
So I did some experimentations, and there are some weird, weird findings.

I tested the same on my Moonlight client, which is installed on my MacOS system, and it does not seem to have this issue with the scaling.
However, I did found something very interesting while doing some additional testings on the TV version of the client.
When I launch a game, with the same sub 1080p resolution, on the same TV, same everything, EXCEPT for Steam in desktop mode, or big picture mode, the results are more then interesting.

Steam Big Picture mode: No problem with scaling on any ingame resolution.
Steam Desktop mode: No problem with scaling on any ingame resolution.
Steam SteamDeck(Bazzite) mode: All kinds of problems when playing anything lower then 1080p

This has also been addressed to the guys at Universal Blue and hopefully we will come up with something on that as well.
Now the interesting part is that this same SteamDeck interface from Bazzite is not having ANY issues scaling anything when I use SteamLink instead, so this is very very weird because from the testings that I've done, everything is pointing towards an issue on the OS level image scaling while using certain application scaling types, but then, when I use another application(SteamLink) this issue seems to be resolved, which is telling me that it's not exactly an OS issue.

Here's something even more weird.
In the SteamDeck interface control center(the menu on the right side of SteamDeck) there's an option to manually apply a custom scaling option, and by default it is set to something called "Linear", but if I move it past that point, it goes to another option called "Pixel" and then the issue with scaling is resolved, BUT it tanks the performance hard, so bad, that I'd rather switch it back to Linear, and increasing the resolution to 1080p.

For example, on a certain spot on a game, when using "Pixel" as a scaling method for a 900p resolution, I'm getting 40fps, while with "Linear" I'm solid 60fps, and on a 1080p Linear its 50fps, so yes, this scaling option goes out the window.

@kahnakha
Copy link
Author

kahnakha commented Jan 3, 2025

IMG_4783
UPDATE2:
Tested lower then 1080p resolution on an AppleTV box with the Moonlight version for it installed, and the issue is still there.
Tested on a different TV(brand, model, size, everything) the issue is still there.
Tested on an AndroidTV box, and the issue is still there on all TVs.
Tested with an iPhone version of the app and the issue is there.

It appears that the issue is only happening with Moonlight for TVs, and phones, regardless if it's on an The TV box is running Android, Apple, or even proprietary TV OSs(such as WebOS, Tizen, etc.).

Unfortunately I cannot test this with an Android phone(as I do not have one) to see if this issue persists there too.
-Screenshot attached from iPhone version of the app that shows the same scaling issue.

I manage to narrow it down to one specific scenario where the issue seems to occur, and that is when you launch a game from the Bazzites own interpretation of the SteamDeck interface(similar to standard Big Picture).

If I launch a game directly from Desktop mode, or Steams original Big Picture mode, then there is no issues with the scaling on any resolution.

Can somebody please try this on a host with a different OS then Bazzite?
Steps:
-Launch any game
-Set resolution to anything sub 1080p and on Fullscreen.

@mariotaku
Copy link
Owner

Steam Link has support for monitor/resolution change IIRC. While Moonlight doesn't support change of resolution.

@kahnakha
Copy link
Author

kahnakha commented Jan 3, 2025

Steam Link has support for monitor/resolution change IIRC. While Moonlight doesn't support change of resolution.

Hi @mariotaku and thank you for you brilliant work over this git.
However, the odd ball here is that this issue is not happening when launching from Desktop mode instead of SteamDeck mode, so I'm really not sure where the issue is.
Now, I'm not here to ask for extra convincing or anything, just trying to find where the root cause it, and to me(as a person who has no idea how all this works) it seems super odd because of the following fact.

-Same Game/Settings/Setup/TV

Test 1: Launch from Dekstop mode of Steam - no problem
Test 2: Launch from Big Picture mode of Steam - no problem
Test 3: Launch from Bazzites version of SteamDeck interface - problem.

So the question here is, if Moonlight does not support change of resolution, then why it's not having problems with that on 2 of the 3 tests?

If that was indeed the case(Moonlight doesn't support change of resolution) then shouldn't this affect all of the tests?

@mariotaku
Copy link
Owner

Maybe it's connected to the full screen mode of the game. If it's windowed full screen, then the actual resolution won't change. Did you try changing resolution in a full screen (not windowed full screen) game?

@kahnakha
Copy link
Author

kahnakha commented Jan 3, 2025

Yes, that is exactly where the issue shows up, on a fullscreen resolution, as the windowed resolution is locked by the OS and cannot be changed, but instead, whenever a windowed of any kind is selected, the native resolution of the host system is applied, thus the issue does not appear.
I also tested with few other games, and they are all behaving the same, experiencing the same issue when you do Fullscreen with lower resolution then the host native resolution.
For some reason it seems like Moonlight is looking for the native host resolution, but when you feed it with a lower then that, then it simply renders the game in that resolution on top of the native resolution while filling the difference in pixels with black bars or a stretched out textures as it can be seen in the attached screenshots.
So the question here is, why is Moonlight looking for a minimum of 1080p signal, even if I set the stream resolution to 720p, and then the game resolution to 720p as well, the result is still the same.
The image of the game resolution is rendered on top of the native host resolution.
It's super confusing, I understand that...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants