Add an opt-in native scene base scale #578

Closed
oscarrc91 wants to merge 5 commits from fix/native-scene-base-scale into main
oscarrc91 commented 2026-11-08 12:43:25 +00:00 (Migrated from github.com)

Fixed Resolution 100% can still produce a 2048x1152 scene from a 2560x1440 base because graphics mode 1 has a separate 0.8 base multiplier on each axis. Add the default-off HOS_SCENE_NATIVE=1 experiment to replace that one entry with 1.0 and request the engine's original resource-refresh path.

This is an experimental, opt-in quality option, separate from FSR in #577. It relates to #68 and addresses a different layer from the stale fixed-scale cache in #329.

Dependency: deterministic fixed 1440p currently also needs #329 (HOS_FIX_RES=1), or an equivalent upstream correction. This branch changes the base table; it does not fix the separately cached scale. A comparison run without #329 confirmed the table edits but still rendered 1920x1080 into 2560x1440. Its implementation is not duplicated here. Please coordinate these changes before merging; FSR itself is not required for the base-scale option.

Scope

  • Patch the configuration-update function in the user's locally lifted code after verifying the complete stock (1.0, 0.8, 2/3) table in each of the two profiles.
  • Change only mode 1's scale. Preserve the selected mode and run the original assignment, dirty flags and callbacks once when the table changes. Unknown/already-patched tables stay untouched.
  • Fail before any write on unexpected/duplicate translated-code layouts. Add a game-free compiled fixture, optional local generated-code verification, CI wiring and documentation.
  • Do not force a display size, antialiasing, texture filters or frame-generation settings. No lifted game source is committed.

Validation

  • Gameplay verified on 2026-11-08: isolated integration with #577 and the existing #329 commit on upstream 3f5b0aa (source fingerprint 9882ef6b). Windows, RX 9070 XT, driver 32.0.32015.7029, Ryzen 7 7800X3D; Kokiri Forest near Saria, fixed Resolution 100%, 16:9, handheld/ultrawide and frame generation off.
  • Both base-table edits executed. The native network report shows 2560x1440 input/output, and FSR 4.1.2 completed at least 2,520 dispatches guarded by matching color/depth/output dimensions. No FSR SDK error, dispatch failure or device-lost entry appeared in the captured log. The player approved the image and stability.
  • Compiled checks pass for the disabled path, both profiles, complete-table guards, all three modes, one-time refresh, normal later transitions, idempotence and atomic rejection of duplicate/unexpected layouts. The same checks also pass against mode-selection/notification blocks from the local owned v131072 lift. The text-speed regression passes.
  • Updated to upstream ddba87c: resolved the host-global declaration conflict while retaining the new upstream occlusion option. The merged Windows host passes a syntax compilation, and native-scale/text-speed regressions pass. These later upstream changes have not had another gameplay run.

The #329 author/commit is preserved in private integration history and is not included in this PR's diff. GitHub Actions for the fork contribution awaits maintainer approval; local results do not imply upstream CI has passed.

Rendering 2560x1440 instead of 2048x1152 adds 56.25% more pixels and increases GPU/memory work. The verified combination's 19 gameplay presentation samples had a median of 52.2 FPS (47.4-54.8), with frame generation off. This is not a controlled before/after benchmark of this hook alone.

Remaining checks

Exercise menu/area/mode transitions, resolution percentages, handheld/ultrawide and other hardware. A table-patched log alone does not establish actual scene dimensions. The #329 proposal documents unresolved lower-percentage issues; the verified setup targets fixed 100% only. Keep the feature off by default and coordinate with #68/#329 before extending the scope.

AI assistance: OpenAI Codex; recorded in commit trailers. No game data, lifted sources, saves, caches or binaries are included.

Fixed Resolution 100% can still produce a 2048x1152 scene from a 2560x1440 base because graphics mode 1 has a separate **0.8 base multiplier on each axis**. Add the default-off `HOS_SCENE_NATIVE=1` experiment to replace that one entry with 1.0 and request the engine's original resource-refresh path. This is an **experimental, opt-in quality option**, separate from FSR in #577. It relates to #68 and addresses a different layer from the stale fixed-scale cache in #329. **Dependency:** deterministic fixed 1440p currently also needs #329 (`HOS_FIX_RES=1`), or an equivalent upstream correction. This branch changes the base table; it does not fix the separately cached scale. A comparison run without #329 confirmed the table edits but still rendered 1920x1080 into 2560x1440. Its implementation is not duplicated here. Please coordinate these changes before merging; FSR itself is not required for the base-scale option. ### Scope - Patch the configuration-update function in the user's locally lifted code after verifying the complete stock (1.0, 0.8, 2/3) table in each of the two profiles. - Change only mode 1's scale. Preserve the selected mode and run the original assignment, dirty flags and callbacks once when the table changes. Unknown/already-patched tables stay untouched. - Fail before any write on unexpected/duplicate translated-code layouts. Add a game-free compiled fixture, optional local generated-code verification, CI wiring and documentation. - Do not force a display size, antialiasing, texture filters or frame-generation settings. No lifted game source is committed. ### Validation - **Gameplay verified on 2026-11-08:** isolated integration with #577 and the existing #329 commit on upstream `3f5b0aa` (source fingerprint `9882ef6b`). Windows, RX 9070 XT, driver 32.0.32015.7029, Ryzen 7 7800X3D; Kokiri Forest near Saria, fixed Resolution 100%, 16:9, handheld/ultrawide and frame generation off. - Both base-table edits executed. The native network report shows **2560x1440 input/output**, and FSR 4.1.2 completed at least **2,520 dispatches** guarded by matching color/depth/output dimensions. No FSR SDK error, dispatch failure or device-lost entry appeared in the captured log. The player approved the image and stability. - Compiled checks pass for the disabled path, both profiles, complete-table guards, all three modes, one-time refresh, normal later transitions, idempotence and atomic rejection of duplicate/unexpected layouts. The same checks also pass against mode-selection/notification blocks from the local owned v131072 lift. The text-speed regression passes. - **Updated to upstream `ddba87c`:** resolved the host-global declaration conflict while retaining the new upstream occlusion option. The merged Windows host passes a syntax compilation, and native-scale/text-speed regressions pass. These later upstream changes have not had another gameplay run. The #329 author/commit is preserved in private integration history and is not included in this PR's diff. GitHub Actions for the fork contribution awaits maintainer approval; local results do not imply upstream CI has passed. Rendering 2560x1440 instead of 2048x1152 adds 56.25% more pixels and increases GPU/memory work. The verified combination's 19 gameplay presentation samples had a median of 52.2 FPS (47.4-54.8), with frame generation off. This is not a controlled before/after benchmark of this hook alone. ### Remaining checks Exercise menu/area/mode transitions, resolution percentages, handheld/ultrawide and other hardware. A table-patched log alone does not establish actual scene dimensions. The #329 proposal documents unresolved lower-percentage issues; the verified setup targets fixed 100% only. Keep the feature off by default and coordinate with #68/#329 before extending the scope. AI assistance: OpenAI Codex; recorded in commit trailers. No game data, lifted sources, saves, caches or binaries are included.
NotRexed commented 2026-11-09 05:29:48 +00:00 (Migrated from github.com)

Thank you! #849 (merged) now sets the graphics scale to x1 for a chosen output, which covers the 0.8 base multiplier this changed, so I'm closing it as superseded. If current main still renders below the output at 100%, please open a new PR on top of it.

Thank you! #849 (merged) now sets the graphics scale to x1 for a chosen output, which covers the 0.8 base multiplier this changed, so I'm closing it as superseded. If current main still renders below the output at 100%, please open a new PR on top of it.
Commenting is not possible because the repository is archived.
No description provided.