ValveSoftware / ValveSoftware/Proton
expand scope of integer scaling
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 32.8k
- Forks
- 1.6k
- PR merge metrics
- PR metrics pending
Description
Feature Request
I confirm:
- that I haven't found another request for this feature.
- that I have checked whether there are updates for my system available that
contain this feature already.
Description
If I understand correctly, integer scaling is currently only applied when a game requests a fixed fullscreen resolution (that's low enough to fit into the desktop's at least twice in each direction, of course).
-
I think it'd also make sense windowed, as in, make the game think it's running at, for example, 800x600 fullscreen, but actually render it at 1600x1200 in a window.
-
Lot's of games are designed for a particular (low) resolution, but will not switch to that when run on a display with a higher one, but instead "helpfully" scale their fixed-resolution assets to fit, likely as not resulting in a blurry mess. When different aspect ratios come into the picture, all bets are off ...
One part of this, how to make a game think it's running on a particular resolution display, is already solved via WINE's virtual desktop feature. What's missing is functionality to (integer-)scale that virtual desktop to a higher resolution.
Justification
AFAIK, a lot of the current fullscreen hackery is Proton-only, and the feature seems like it would primarily benefit games, so Proton seemed like a good place to start. If it can be upstreamed, all the better!
Risks
Everything to do with fullscreen, (virtual) resolution-switching, and the like has the potential to break stuff in horrendous ways. OTOH, activating integer scaling at all currently requires setting an environment variable, and setting up a virtual desktop requires running winecfg in the prefix, so it shouldn't impact a vanilla Proton setup at all.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by examining Proton's existing fullscreen integer-scaling behavior and Wine's virtual desktop setup, including the environment-variable and winecfg configuration mentioned in the issue. Define how integer scaling should work for a virtual desktop in a window and for games that choose higher display resolutions, then verify that existing fullscreen and vanilla-Proton behavior remains unaffected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics, desktop-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100