Repository navigation
Donkey Kong Bananza's iPhone launcher starts on the settings it was tested with: the game's upscaler drawn by MetalFX, Metal 4 pipelines on - #1217
Closed
oliverames wants to merge 1 commit into
Conversation
oliverames
force-pushed
the
dkb-launcher-defaults
branch
3 times, most recently
from
November 10, 2026 03:15
0300f9b to
d739252
Compare
1 of 3 tasks
…ested with: the game's upscaler drawn by MetalFX and Metal 4 pipelines on The launcher showed the game's own upscaler and Metal 4 pipelines off for Donkey Kong Bananza on iOS (Docked, Standard upscaling and no frame buffering were already the defaults), while every iPhone run of mine used docked, DM_UPSCALER=metalfx and DM_PSO_MTL4=1. The profile now sets pso_mtl4 on, which also makes an IPA pack the pipeline archive made offline, as for any profile with it (the pulling libraries are in every iOS build since PR seedds#1758, whatever the key says). DM_UPSCALER had no profile key: its default was fixed at game in settings.tsv. A new upscaler_default key (game or metalfx, game without it) sets the iOS launcher's default through DM_GAME_UPSCALER_DEFAULT|game; the Mac's default stays game, as no Mac run chose MetalFX, and the host without the launcher, a saved choice, DM_UPSCALER and env.txt are unchanged. Donkey Kong Bananza sets metalfx. Checked: test_settings (the iOS and Mac defaults of all five settings), test_game_profile (the key and its rejection), the launcher settings, docs and env switch tests, and the 145 tool, iOS and CPU-only gfx test files, none failing (skips are tests without dotnet or spirv-val). Not run: the game, an IPA build, an iPhone. The note lists what the phone logs show and what they do not: sustained 30 fps and the fur's shimmer are open. Rebased onto main 6d9edb0 on Nov 9: test_settings (4), test_game_profile (4), test_launcher_settings (17), test_env_switches and test_docs (6) pass again; the 145-file loop was not rerun.
oliverames
force-pushed
the
dkb-launcher-defaults
branch
from
November 10, 2026 14:04
d739252 to
38aa971
Compare
Contributor
Author
|
Closing this. Which launcher settings a game starts on is your call, and the evidence here is one subjective comparison on two iPhones. It also conflicts with main again now that |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
On an iPhone the launcher shows Donkey Kong Bananza with the game's own upscaler and Metal 4 pipelines off, while every iPhone run of mine used docked,
DM_UPSCALER=metalfxandDM_PSO_MTL4=1; main's note also records a community run on the defaults (issue #1183,7ffa63cca). This changes the launcher's defaults for this game to match, and nothing else.@seedds: this is a default for a Switch 2 game running on iPhone, and whether a game ships a non-default launcher setting is your call. It changes what the launcher shows first and what Reset to tested defaults sets. It does not remove the choice: a saved choice,
DM_UPSCALERandDocuments/env.txtstill win, and a start without the launcher keeps the host's own default. It is not a fix for anything: sustained warm performance and the fur's shimmer are not established (below). If you would rather keep the game's upscaler as the default,pso_mtl4 onandupscaler_defaultare independent lines ingame.tsvand either can be dropped.Before and after (the iOS launcher, no saved choice)
Read with
dm/games/settings.pyfor040074A01BF12000,GFXAPI=nvn,SETTINGS_PLATFORM=ios, before and after the change:DM_OPMODE11op_mode,consoleis the default of every game (unchanged)DM_UPSCALERgamemetalfxupscaler_default metalfxDM_PRESENT_UPSCALEoff(Standard)off(Standard)settings.tsv(unchanged)DM_PSO_MTL401pso_mtl4 onDM_PRESENT_SNAP00present_snap,offis the default (unchanged)So two values change. On the Mac settings window nothing changes: Metal 4 pipelines are already on for every game there, and its Game's upscaler default stays
game(output of the same script forSETTINGS_PLATFORM=mac:DM_UPSCALER=game,DM_PSO_MTL4=1).The profile key
DM_UPSCALERhad no profile key: its default was the literalgameindm/games/settings.tsv. The smallest generic key isupscaler_default(game, the default, ormetalfx):game.pyvalidates it and writesDM_GAME_UPSCALER_DEFAULTinto the profile header, and theDM_UPSCALERrow's default becomesDM_GAME_UPSCALER_DEFAULT|game(the existing<ios>|<mac>form, asDM_GAME_PSO_MTL4|1does), so only the iOS launcher follows it. No host code changed: the macro is read bysettings.pyonly. The other four settings needed no key (see the table). The key is a row indm/games/README.md.One consequence of
pso_mtl4 on, fromdm/ios/tools/build_ipa.shandscripts/build_ipa_from_nsp.py: an IPA built for this game now builds the pipeline archive made offline forg18p(A19 / A19 Pro, thepso_gpudefault), as for any profile withpso_mtl4 on. The pulling libraries (_bp) are in every iOS build since #1758, whatever the key says, so they're no longer part of this change. I did not build an IPA.Checked
Python 3.14 venv outside the repo (
lz4,capstone>=5,<6,fonttools, and.github/requirements/lint.txt),DM_GAME=040074A01BF12000, on macOS, at head984af1e4onorigin/main777a5f6c. On Nov 9 I rebased onto main6d9edb07(headd739252a, one commit) and ran the five tests named below again; what changed is marked "After the rebase":Tests:
python3 dm/games/settings.pyequivalent (settings.build) before and after: the table above.dm/tools/tests/test_settings.py(3 tests; the new one asserts all five defaults on iOS and Mac),test_game_profile.py(8; the new one checks the key's header macro, its default and its rejection),test_launcher_settings.py(16),test_docs.py(11, links and anchors),test_env_switches.py(1).test_settings.py4,test_game_profile.py4,test_launcher_settings.py17,test_docs.py6 andtest_env_switches.py1, since main's own tests have changed. The 145-file loop below was not run again.dm/tools/tests,dm/ios/tests,dm/gfx/testsran, none failed. Ten of them report skips (test_astral_fps,test_image_atomic_bounds,test_txq_type,test_dmsh_ampere_alu,test_dmsh_ampere_mem,test_dmsh_border,test_dmsh_control_flow,test_dmsh_geometry,test_pso_archive,test_transform_feedback): tests that needdotnetorspirv-val, which this Mac run lacked. Skipped is not passed.python3 dm/tools/docs_symptoms.py,docs_patches.py,docs_gallery.py: no diff.python3 dm/tools/lint_python.py --against origin/main: 389 findings, 389 in the baseline, 0 new. After the rebase: 339 findings, 336 in the baseline, 3 new, all three indm/gfx/tools/dmsh_build.pyon main and none from this change. Main has since fixed those three (3ade2f2ef).game.py header 040074A01BF12000writesDM_GAME_PSO_MTL4 1andDM_GAME_UPSCALER_DEFAULT "metalfx", and the header compiles (clang -fsyntax-only) with both.Games run, with title ID and version: Donkey Kong Bananza, title ID
040074A01BF12000, version not stated. The phone runs are listed below and are from earlier local builds, not from this head.Devices and OS: iPhone 17 Pro Max and iPhone Duo as listed below; iOS version not stated; macOS version not stated (Python checks ran on macOS).
scripts/regress.py check --games: not run, because no host, shader or tool code changed (see Not verified).Measurements and runs behind the defaults:
All local, kept by the author, under
anygame/logs/dkb-sharpness-2026-11-03/andanygame/WORKLOG.md(not in this repository). The measurements come from local builds that carried changes not onmain.DM_UPSCALER=metalfx+DM_PSO_MTL4=1: MetalFX 1676x943 -> 2304x1296border-summary.json(upscaler: size at frame 4847 ... 1676x943 -> 2304x1296),current-metalfx-log.txt215a6d278114build: six complete 300-frame windows (frames 9600-11400) at 33.34 ms on-screen p99, 0 dropped, thermal 0, footprint 5119-5129 MiBborder-summary.json,border-final-memstat.tsvborder-restored-summary.json, PR #1204's textborder-handheld-summary.jsoncamera-constants/ab/(logA-final.txt,logB-final.txt), WORKLOG "upscaler A/B on the Duo"The game note (
dm/games/040074A01BF12000/README.md, new "iPhone launcher defaults" section) states the same before/after and limits. It does not link PR #1204's section, so the two PRs merge in any order; both touch that README in different places.Not verified:
main, or of this head. The phone numbers above are from earlier local builds, at different thermal states, so they are not a controlled comparison.pso_mtl4 onbuild path for this game (theg18parchive) is read from the scripts, not run here.make -C dm/gfx/testsGPU tests andregress.pywere not run: no host, shader or tool code changed.lint-c) is red for reasons unrelated to this change: lint-c passes on main again: the JIT request table, DM_PROGRAMS, the web page's scheme handler and the Vulkan occlusion query no longer reach NULL (baseline 241 to 240) #1207 was closed on Nov 5, and the cause now isdm/gfx/tests/t_pso_archive.m(open PR t_pso_archive's cold-quit marker write is nil-safe: lint-c's clang-tidy ratchet is green on main again #2080).Front ends
None: no front end has to act on this.
Docs
docs/reference/<subsystem>.mdentry, andpython3 dm/tools/docs_symptoms.pywas run (the symptom index)dmsh_chain.py --headerwas run anddm/gfx/nvn/dmsh_chain.his part of the change. Not applicable: no chain tool changed