fix(runtime): a new install draws the game's 2560x1440, not its reduced 2048x1152 #292
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!292
Loading…
Reference in a new issue
No description provided.
Delete branch "Amateurwizrd/Longshot:fix/default-output-2560x1440"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
A new install draws the game at 2048x1152, 80% of the 2560x1440 picture the game itself draws docked. Nobody chose that size: the game was told a reduced graphics scale by accident, and the result was then named "the game's own".
What changed
hos_output_default()inhost/hos_wide_size.hnow gives 2560x1440 when no Output resolution is chosen, or the main screen's own size where that has fewer pixels (the rule it had, with 2560x1440 in place of 2048x1152). A screen that is not known, or of no size the game takes, gets 2560x1440 too.output_mode()inhost/nn_applet.ctakes that size for a new install, soGetCurrentGraphicsScaleanswers tier 0 by default. Its comments say what the tier is. The log line names the case:oe: output resolution 2560x1440 (none chosen: the game's).menu_init()ingpu/vk/vk_menu.cpptakes the same default, so the host and the menu still agree with no restart.output_res=2048x1152(and the oldoutput_res=0) still asks for tier 1 and draws 2048x1152. The menu still offers it, now marked "(reduced)" (was "(game's)", which read as the default), with the hint "The game's own reduced size, 80% of its 2560x1440: lighter on the GPU." in all 13 translations. An options file that already holds anoutput_res=line is read as before, so existing installs do not change. The handheld profile is untouched.README.md,docs/graphics-and-controls.mdanddocs/development.md(theoutput_resrow), and that a screen with fewer pixels than 2560x1440 starts at its own shape on purpose (below).recomplauncher.json's Output resolution default is 2560x1440, as the game's (was 2048x1152).tests/test_output_resolution.pycovers the new default (the rule's cases, a new install on the host and the menu side, the handheld profile, and 2048x1152 asked for byHOS_OUTPUT_RES). Its expected menu labels say "(reduced)".What the tier is, from how the console's library and the game behave (no game code is in this PR):
nn::oe::GetCurrentGraphicsScalereturns a whole number inw0, not a float. The library asks the system for its graphics scaling parameter, which is 10, 20 or 30, and returns 0, 1 or 2 for it. At start the game callsGetOperationMode,GetPerformanceMode,GetCurrentFocusStateandGetCurrentGraphicsScaleone after the other and keeps the four answers side by side; it reads the scale again when notification message 300 arrives, and sizes its frame by it: x1, x0.8 or x0.667 of its 2560x1440 display size. Longshot's stand-in set only the float register, sow0still held the answer of the call before it,GetCurrentFocusState's 1 (in focus), and the game drew 2048x1152.e706b9ddthen kept 1 as the default on purpose ("x0.8 as before").nxnative found the same thing in other Switch 2 games and in this one, and changed its answer to tier 0 in both modes: https://github.com/seedds/nxnative/pull/1304. Its testers measured Ocarina of Time at 2048x1152 with tier 1 and 2560x1440 with tier 0. Its maintainer's caveat applies here too: that the tier is the share of the GPU the system leaves the game is read from the games' code, and which tier a real console reports in which mode has not been measured on hardware.
Flags and settings
output_res(the menu's Output resolution), no line in the options filerecomplauncher.json's Output resolution defaultNo new switch.
HOS_OUTPUT_RES=2048x1152or the menu's 2048x1152 gives the old picture.Measurements
main:
fbd42024(2026-11-13)this PR: fix/default-output-2560x1440 @ b8542e6b
Hardware: RTX 5070 Ti 16 GB, driver 621.01, Ryzen 7 7800X3D, 32 GB, Windows 11 Pro 26200
Scene: Kokiri Forest (child) and Hyrule Field (child), standing still. No Output resolution chosen on either side, 2560x1440 window on a 3840x2160 screen, Quality preset Custom, Render resolution 75%, the game's own upscaler, Lanczos window filter, frame generation off, no frame rate cap
Method: 60 s per run after 15 s of settling, 3 runs each per scene, alternated (main, this PR, main, this PR, main, this PR). Frame times from PresentMon 2.6's capture of
longshot.exe; fps is frames over their time, 1% low the same over the slowest hundredth of the frames. GPU time is the median of the log'svk: GPU timelines over the same minute. The log's ownfps over the last 5.0 slines agree with PresentMon to 0.2 fps. The head adds only thedocs/tested-configurations.mdrows to the measured commitHow to reproduce: build
mainand this branch into two game folders that share one set of shader caches (here: a copy of main's folder built again withmake_game.py --update). Before each run remove theoutput_res=line fromlongshot_options.ini. Start withHOS_WINDOW_SIZE=1707x960(2560x1440 at 150% scaling),HOS_FPS_MAX=1000,RX_VK_FRAMEGEN=0,HOS_AUDIO=0andHOS_CONTROLset, load a save standing in the scene, then over the control bridgeoption_set quality_preset 0andoption_set resolution 2, wait 15 s and measure 60 sfbd42024tests/test_output_resolution.pywith this PR's casesGPU time rises by 0.3 to 0.4 ms a frame in every run. The frame time follows in Hyrule Field (+0.09 ms median, +0.40 ms p99); in Kokiri Forest the difference is smaller than the spread between main's own runs (12.05 to 12.48 ms). The cost on this PC is small because the CPU limits the frame here (GPU time 6 to 7 ms of a 10 to 12 ms frame). A slower GPU pays more for the same 56%.
main moved several times while this was measured. A first round of the same 12 runs (main @
9f64464bagainst this change on it, 4b7f5f4a) gave the same picture: Kokiri Forest 11.74 against 11.96 ms, Hyrule Field 9.72 against 9.85 ms, GPU time +0.2 to +0.3 ms. The table above is the second round. The branch has since been rebased onto main9fccd0fd: the change isc312ae2dthere, the same patch as the measured b8542e6b, and the head1896790eadds the review's follow-up (the 2048x1152 label and hint,recomplauncher.json's default, comments and docs), which changes no size drawn. Not measured again: the commits in between do not touch the Output resolution, both sides get them alike, and what the table measures is the cost of 56% more pixels, which the two rounds put at the same 0.3 to 0.4 ms of GPU time.main @
fbd42024, a new install (Kokiri Forest, run 2):this PR @ b8542e6b, a new install (Kokiri Forest, run 2):
this PR @ b8542e6b with
output_res=2048x1152in the options file (the old picture, still there):tests/test_output_resolution.pyas this PR has it, run on main @fbd42024(the temporary folder's path shortened):and on this PR:
Testing
Tested: on Windows 11, RTX 5070 Ti (621.01), Ryzen 7 7800X3D.
output_res=2048x1152. Each side loaded both saves and stood for 75 s. No device lost, no crash, about the same draws a frame on both sides, and the log's sizes are the ones in the table.f516654c(on main514591a3), built and started once with no Output resolution chosen:longshot v3.0.0-rc.3-27-gf516654c,oe: output resolution 2560x1440 (none chosen: the game's),nvn: window crop 0,0 2560x1440, Kokiri Forest at 12.22 ms median over 20 s (81.4 fps). No device lost.python -I -B tests/run_all.pywith llvm-mingw 20261104, on the previous head (f516654con main514591a3): 493 passed, 7 failed, 33 skipped, and the same counts with the same 7 failures on main @514591a3:nx2/test_nup_paths.py,tests/test_check_third_party.py,tests/test_gpu_hang_watch.py,tests/test_menu_i18n.py,tests/test_portable_builder_home.py,tests/test_portable_builder_startup.py,tests/test_release.py.tests/test_menu_i18n.pyreadsgpu/vk/vk_menu.cppand fails on both sides over the same text, the "Testing tools: ..." hint in the pt_BR table, which this PR does not touch; none of the other six reads the changed code. On the measured base the counts were 490 / 6 / 33 on both sides (the same list withouttests/test_menu_i18n.py). The 33 skips are Linux-only checks and checks that need spirv-val or another tool this PC lacks.host/nn_applet.candgpu/vk/vk_menu.cppcompile to objects forx86_64-linux-gnuwithnx2/build.py's Linux flags and tools.lock's sysroot (llvm-mingw's clang as a cross compiler, on Windows). Not linked, not run.Not tested: the head
1896790e(main9fccd0fd+ this change + the review follow-up): not built, not run in the game andtests/run_all.pynot run on it; the 2048x1152 row's new "(reduced)" mark and hint, and their 13 translations, have not been seen in the game. A Linux build and run. AMD and Intel GPUs. A GPU slow enough for the larger picture to cost real frame rate, and what Auto (this PC) does there. A first start with no options file at all (the runs kept the file and removed only itsoutput_res=line). A screen with fewer pixels than 2560x1440: 1080p and the Steam Deck take the same path as before, and the sizes in between (2560x1080, 2256x1504) take a new one that only the unit test ran. DLSS and FSR at the new default (this build has neither). The handheld profile in the game (unchanged code; covered by the unit test).Needs other testers:
1896790e, runtests/run_all.py, start a new install once, and screenshot the Output resolution row stepped to 2048x1152, expecting2048x1152 (reduced)and the hint "The game's own reduced size, 80% of its 2560x1440: lighter on the GPU." A screen of 2560x1080 or 2256x1504, if anyone has one: a new install should log(none chosen: the screen's, smaller than the game's 2560x1440)and the menu show that size "(native)". (request to open)output_res=line). On a screen of 2560x1440 or more, expectingoe: output resolution 2560x1440 (none chosen: the game's)andnvn: window crop 0,0 2560x1440in the log; on a smaller screen, expecting the screen's own size with(none chosen: the screen's, smaller than the game's 2560x1440). Either way the menu's Output resolution shows that size with no restart question, and Kokiri Forest loads and plays (T-A2R9)Screenshots
Kokiri Forest, the same save and spot, a new install's Output resolution on both, the FPS counter at Breakdown, the game's window alone (2560x1440). Taken in runs of their own, not in the measured ones.
fbd420242048x1152 (game's),75% (1536x864)2560x1440,75% (1920x1080)The four pictures are in the first comment on this pull request:
main_menu.png,pr_menu.png,main_window.png,pr_window.png. Since then the 2048x1152 choice reads2048x1152 (reduced)(was2048x1152 (game's), as inmain_menu.png); no screenshot of that yet.Risk and rollback
A new install on a screen of 2560x1440 or more draws 56% more pixels than before (the 3D goes from 1536x864 to 1920x1080 at the game's own 75%). On a slow GPU that costs frame rate; Auto (this PC), the first start's preset, lowers the Render resolution when frames are missed. Screens between 2048x1152 and 2560x1440 in pixels (2560x1080, 2256x1504) now start at their own size and shape, a path only the unit test covered here. That is intended: it is the rule main already had for screens below 2048x1152 (a Steam Deck's 1280x800, 1920x1200 start at their own size and shape), it draws pixel for pixel, and the shape is the monitor's, which the Aspect ratio row's default gave the old 2048x1152 too (widened to 2728x1152 on 21:9, narrowed to 1728x1152 on 3:2); choosing 16:9 on the Aspect ratio row still takes a 16:9 size. To get the old picture: choose 2048x1152 in the menu, or set
output_res=2048x1152. Reverting the commit restores the old default.VRAM on 4 to 6 GB cards was not measured (only a 16 GB card here). An estimate from the render-target sizes: the game's render targets follow the output's pixels, and the pool it ships for them is 305 MB at 2560x1440; Longshot reserves 512 MB for both sizes (
hos_rt_pool_size's floor), so the reservation does not change, and what the targets use in it grows by at most about 110 MB (305 MB x (1 - 0.64)), plus about 10 to 30 MB for Longshot's own output-sized images. What DLSS or FSR keep at the output's size grows too, by an amount not estimated here. Minimum (4GB) and Low (6GB) chosen on the row use the handheld profile (1536x864) and do not change; Auto (this PC), the first start's preset, keeps the docked profile at its tier's Render resolution (50% on Minimum, 75% on Low), so a 4 to 6 GB card on a 1440p or larger screen does take the new size. The VRAM budget rows are unchanged.Reviewer notes
options_versionstep) is left out on purpose: it would also move players who chose 2048x1152.recomplauncher.json's default is now 2560x1440, so the two defaults do not drift. A launcher default is one size on every screen: if RecompLauncher writes it before the first start, a Steam Deck there draws 2560x1440 (it drew 2048x1152 before, also larger than its screen).kLangsstays. The bug report's line (pipeline_share.houtput_text, "the game's own") is left as it is.HOS_GRAPHICS_SCALEstill sets only the float the game does not read.Issues
None filed for this.
Checklist
For everyone
type(scope): description).main.python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above). Not run on the head1896790e: the author's run was onf516654c; CI's run or a local one on this head is needed.third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
Assisted-by:/Co-Authored-By:trailers.docs/tested-configurations.mdfor each measured run.mainand passing here. Added, failing on main and passing atf516654c; not run on1896790e.tests/that reads changed source updated in this PR, not weakened.f516654c(Windows; Linux compile only); the head1896790eis not built yet.The screenshots for the description: Kokiri Forest, the same save and spot, a new install's Output resolution on both, the FPS counter at Breakdown, the game's 2560x1440 window alone. Taken in runs of their own, not in the measured ones.
main @
fbd42024, the Insert menu: Output resolution2048x1152 (game's), Render resolution75% (1536x864).this PR @ b8542e6b, the Insert menu: Output resolution
2560x1440, Render resolution75% (1920x1080).main @
fbd42024in play: a 2048x1152 picture scaled up to the window.this PR @ b8542e6b in play: 2560x1440, pixel for pixel.
WIP: fix(runtime): a new install draws the game's 2560x1440, not its reduced 2048x1152to fix(runtime): a new install draws the game's 2560x1440, not its reduced 2048x1152Review of 292 at
f516654c. I read the code only; I didn't build or run anything.v3.0.0: yes, once it is rebased. It is small, it keeps existing installs as they are, and it is measured with a before/after and screenshots. The tier explanation for
GetCurrentGraphicsScaleis a description of behaviour with nxnative cited, not game code, so the licence box holds.Must change before merge:
main25ee6a83. Since514591a3,mainhas changedREADME.md's menu table,docs/development.md's options-file table andvk_menu.cpp(menu_initamong them, via #103 and #136). So "Rebased on currentmain" is false right now. Please rebase, and say in the comment why the numbers still hold (pr statusalso warns that it was measured onfbd42024). The CI run at the head was still queued when I looked.Checked and fine:
hos_output_defaultnow returnsvoid. Both callers (nn_applet.coutput_mode,vk_menu.cppmenu_init) and the test were updated, and no other caller is left.HOS_OUTPUT_RESare unchanged.output_res=.Suggestions / questions (not blocking):
recomplauncher.json's Output resolution default is still2048x1152. A RecompLauncher install therefore keeps the old picture. Worth a follow-up issue so the two defaults don't drift.@ -385,3 +385,3 @@| Graphics | Quality preset | Custom, Minimum (4GB), Low (6GB), Balanced (8GB), High (12GB), Ultra (16GB+), Auto (this PC) | Auto (this PC) on a first start; Custom in an options file from before it || | Aspect ratio | The shapes your screen's resolutions have, narrowest first (5:4, 4:3, 16:10, 16:9, 21:9, 32:9, ...), your monitor's own marked "(monitor's)" (after a restart) | Your monitor's || | Output resolution | The Aspect ratio's sizes: your screen's resolutions and the common ones (1440p, 4K, 5K at 16:9; 1920x1200, 2560x1600 at 16:10; 3440x1440 at 21:9; ...), and 2048x1152 (the game's own) at 16:9; your screen's own size is marked "(native)" (after a restart) | 2048x1152, or your screen's size where it is smaller (a Steam Deck's 1280x800, a 1080p monitor); Auto (this PC) leaves it as it is || | Output resolution | The Aspect ratio's sizes: your screen's resolutions and the common ones (1440p, 4K, 5K at 16:9; 1920x1200, 2560x1600 at 16:10; 3440x1440 at 21:9; ...), and 2048x1152 (the game's own reduced size, 80% of its 2560x1440) at 16:9; your screen's own size is marked "(native)" (after a restart) | 2560x1440, the game's own picture, or your screen's size where it is smaller (a Steam Deck's 1280x800, a 1080p monitor); Auto (this PC) leaves it as it is |This conflicts with
mainnow: #136 and #103 changed this table. Please rebase. Therecomplauncher.jsondefault (output_res: 2048x1152) will then be the only place that still says the old size.@ -25,3 +26,1 @@if ((uint64_t)sw * sh >= 2048ULL * 1152 || !hos_output_size_valid(sw, sh)) return 0;*w = sw, *h = sh;return 1;if ((uint64_t)sw * sh < 2560ULL * 1440 && hos_output_size_valid(sw, sh)) *w = sw, *h = sh;Screens with fewer pixels than 2560x1440 but more than 2048x1152 now take their own size: 2560x1080 (21:9), 2256x1504 (3:2), 2560x1200. Those sizes are off 16:9, so
hos_output_own_shapenow sets the picture's shape from the default, where before it came from 2048x1152 widened by the Aspect ratio row. That is probably the better result, but it's a new path for ultrawide and 3:2 laptop screens that only the unit test has covered. Worth a line in the T-A2R9 request, or a run on one of those sizes.f516654ce11896790ef0Rebased onto main
9fccd0fdand answered the review (#292 (comment)). The head is now1896790e. Nothing was built, tested or run for this push.Rebase. The branch is linear on
9fccd0fd:c312ae2d(the change, was9c4d7a7e),83d00991(the tested-configurations rows, wasf516654c) and1896790e(the follow-up below).README.md,docs/development.mdandvk_menu.cppwith no conflict: main's edits from #103 and #136 sit next to this PR's lines, not on them.docs/tested-configurations.md, where main had added rows at the top of the same table. I kept both sides: this PR's two rows first, then main's.b8542e6b) is unchanged inc312ae2d. The commits main gained sincefbd42024don't touch the Output resolution and apply to both sides alike. The follow-up changes no size the game draws.Review points.
main" box is ticked with the template's wording.hos_rt_pool_size's floor), so the reservation doesn't change.host/hos_wide_size.h,README.md,docs/graphics-and-controls.md,docs/development.mdand the description.recomplauncher.jsonis the RecompLauncher manifest that ships inside both builders (docs/releases.md). Itsoutput_resdefault is now2560x1440. Risk says that if RecompLauncher writes its defaults before the first start, a Steam Deck there gets 2560x1440; it got 2048x1152 before. I didn't check whether it does.(reduced), not(game's), which meant "the game's own size" and so read as the default. Its hint is now "The game's own reduced size, 80% of its 2560x1440: lighter on the GPU."gpu/vk/menu_i18n.hreplace the two texts one for one, in sorted order, so thekLangscounts are unchanged. The new translations are machine-made, like the rest.tests/test_output_resolution.py's expected labels are updated to match.Boxes. Unticked until someone builds and runs
1896790e, each with the reason beside it:run_all.py, the game-free test, the host build, and the screenshot of the new(reduced)mark.This change needs a run. The
(reduced)label and hint show on screen and haven't been seen in the game. That run,tests/run_all.pyon this head (or CI's), and a screenshot are listed under Needs other testers.Re-review of the head
1896790e, after our earlier review (#292 (comment)) and its follow-up (#292 (comment)). I read the code only and ran nothing: no build, no tests, no checkers.Verdict: the code is right and I found no bug. What's left is the runs. The only For everyone box still unticked is
run_all.pyon this head. CONTRIBUTING says a PR in that state stays WIP, and the description check fails on it, so I'm not approving yet. This review replaces our request for changes.Rebase
c312ae2dand83d00991add and remove exactly the same lines as9c4d7a7eandf516654cdid. Their diffs are against9fccd0fd, so none of main's changes is reverted.docs/tested-configurations.mdonly gains this PR's two rows. Main's rows are still there.eca9b12a(#216, #191, #190). Those commits touch other parts ofdocs/development.mdanddocs/tested-configurations.md, and Forgejo still reports the PR as mergeable. It doesn't need another rebase.1896790emenu_i18n.huses" (reduced)"and"The game's own reduced size, 80% of its 2560x1440: lighter on the GPU.", and both are exactly the strings invk_menu.cpp(tx_output_res,hn_output_res). Nothing ingpu/,host/ornx2/still uses" (game's)"or"The game's own size.", so taking those keys out of the tables is right."Native (the game's)"is a different key and still used.vk_menu_i18n.cpptable()builds anunordered_map.tests/test_menu_i18n.pystill checks it, though, and every table is in order." (reduced)"sits between" (not connected)"and" and ", and the hint sits between "…own pace…" and "…own shape.".kLangscount says (pt-BR 531 … zh-Hant 539). No key appears twice. All 13 contain both new keys and neither old one.%in the hint is safe. In "80% of" and in translations like "80 % de" / "80% dos", the%isn't read as a conversion:vk_menu_i18n.cppconversion()and the test's regex don't accept a space after%. Hints aren't used as printf formats either; "80% suits" is already in the menu." (reduced)"keeps the leading space and has no trailing space. The adjectives agree with the word "resolution" in each language (reduzida, reducida, réduite, reduziert, ridotta, verkleind, zmniejszona, уменьшенное, 縮小, 축소, 缩小/縮小), and the hints read naturally.tests/test_output_resolution.py: all 18 case rows and the twotx_output_res(0)assertions (2728x1152, 4096x1152) now expect(reduced), and nothing left in the file expects(game's).hos_output_size()returns 2560x1440 either way, sohos_rt_pool_size()reserves 512 MB for both sizes. 305 MB × (1 − 0.64) ≈ 110 MB is an upper bound for targets that scale with pixel count. Each RGBA8 image grows by about 5.3 MB, so 10 to 30 MB is roughly 2 to 6 of Longshot's own images.hos_output_default()uses the screen's own size when it is valid and has fewer pixels than 2560x1440. That covers 2560x1080 and 2256x1504, and before this change it already covered 1280x800 and 1920x1200 (2,304,000 px is less than 2048x1152's 2,359,296). An invalidoutput_res=line still gives the reduced 2048x1152, and the README's "anything else uses the game's reduced 2048x1152" says so correctly.recomplauncher.json. This file ships in both builders (scripts/builder_package.py,scripts/linux/appimage.sh). Nothing in this repo reads thedefaultsfield. RecompLauncher's schema (https://recomplauncher.com/schema/recomplauncher.json) describessettings[].defaultsas "The game's own values for keys the file doesn't have yet". So it describes what the game does; RecompLauncher doesn't write it. Changing it can't change what a Steam Deck or an existing install draws, because the game still decides when the line is missing and an existing file already has the line. The only effect is which choice RecompLauncher shows as selected. That is now right on screens of 2560x1440 and up. On a Deck it's still wrong (2560x1440 shown, 1280x800 drawn), as 2048x1152 was before. See the inline comment.CI on
1896790e: nothing compiled it. Inci.yml, the Python source checks and the SPIR-V fixtures only run onworkflow_dispatch, so on this PR they were skipped. The checks that ran passed: the title, actionlint and the third-party notes. "PR description" fails because of the unticked boxes.Still to do before it can merge
python -I -B tests/run_all.pyon1896790e, run locally or through a manual CI dispatch.test_menu_i18n.pyandtest_output_resolution.pymatter most. Then tick that box, the game-free test box and the host build box.2048x1152 (reduced)and its hint. That settles the Screenshots box. The test request for this is still listed as "to open".defaults, so the "if it writes its defaults" risk for a Steam Deck doesn't arise. What's left is a launcher showing the wrong choice on small screens.Once 1 and 2 are done and
pr status 292passes, this can be approved as it is.@ -267,3 +267,3 @@],"defaults": {"output_res": "2048x1152""output_res": "2560x1440"Right change, and it's safer than the Risk section says. RecompLauncher's schema (https://recomplauncher.com/schema/recomplauncher.json) describes
settings[].defaultsas "The game's own values for keys the file doesn't have yet". So RecompLauncher uses this value to pick which choice to show as selected whilelongshot_options.inihas nooutput_res=line. It doesn't write it. A Steam Deck or an existing install still draws what the game decides (hos_output_default, or the line already in the file). The only thing that's off is the display: on a screen smaller than 2560x1440 the launcher shows 2560x1440 selected while the game draws the screen's own size. Before this change it showed 2048x1152 there, also wrong. The "if RecompLauncher writes its defaults before the first start" sentence in Flags and settings and Reviewer notes can say that instead.Superseded by #292 (comment): the rebase and the follow-up answer every point; no code change is needed, only the run of run_all.py, a build and the (reduced) screenshot remain.
Rebased again onto current
main(a4c77174). Seven PRs had merged since, among them #324, #189 and #269. The three commits are now8853a536,a0161645and7578caa2, and the first two are still yours.Only
docs/tested-configurations.mdconflicted:mainhad added rows at the top of the table, where this PR adds its two. I kept both, with this PR's rows first andmain's right after, as in the last rebase. Each commit's added and removed lines are the same as before the rebase. No tests or builds were run on this PC.1896790ef07578caa2ae