ValveSoftware / ValveSoftware/Proton

expand scope of integer scaling

Open
#3,600 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Feature Request
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).

  1. 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.

  2. 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.