feat(menu): sections on the Graphics tab #2177

Merged
pmwork-personal merged 7 commits from feat/menu-sections into main 2026-11-11 22:48:04 +00:00
pmwork-personal commented 2026-11-11 06:08:52 +00:00 (Migrated from github.com)

The Graphics tab is one list of 24 settings, with the window, HDR, upscaling, frame generation and GPU options mixed
together, and about ten more are on their way in open PRs. This puts its rows under section titles, so the upscaler, frame
generation or HDR can be found without scrolling the whole list. It is the first step of a menu organization laid out below
for discussion.

What changed

  • The Graphics rows in six sections, under heading rows like the Debug tab's Developer (a gold title, never selected,
    nothing to click):
    • Quality preset (first: it sets rows in every section)
    • Resolution and upscaling: Output resolution, Profile, Upscaler, DLSS model, Render resolution, Sharpness
    • Frame generation and latency: Frame generation, Frame pacing, Game frame rate cap, NVIDIA Reflex, AMD Anti-Lag 2
    • Screen: Fullscreen, V-Sync, Window scaling filter, Aspect ratio (#2119), Ultrawide menus
    • HDR: HDR, HDR paper white, HDR peak brightness, HDR contrast (#2342), HDR tone mapper (#2481)
    • Detail: Anisotropic filtering
    • GPU and memory: GPU device, VRAM budget (#1859), Mesh shaders (Robust buffers is on Debug ▸ Developer since #2042)
  • Moves only: every row's definition is unchanged, word for word; no row is renamed and no value or saved key changes, so
    options files carry over, and #1864's tables (keyed by the English text) still find every row. They need the six
    headings.
  • No new drawing or input code: the menu already draws heading rows on any tab, and the keys, the pad and the mouse step
    over them.
  • readme.md: a sentence on the sections, and the option table in the new order. (Ultrawide menus and Mesh shaders have
    no line yet; #2105 adds them.) The Frame generation by row from #2118 gets its line in the table here too: main's
    readme has none yet. So do #1859's VRAM budget (under GPU and memory) and #2342's HDR contrast (under HDR).
  • tests/test_upscaler_rows.py: its order list follows the picture's path (output, upscaler, render size, sharpening,
    then the frame rows, then the window). New tests/test_menu_sections.py: the Graphics sections and which rows they hold,
    and on every tab no section that row_shown could leave empty (a title over nothing on a GPU without Reflex, say).

The plan this is step 1 of (for discussion)

Each tab answers one question; a section groups the rows you set together; a row that depends on another follows it; vendor
rows sit beside their counterpart and hide where they can't run (no vendor sections, so nothing is left empty on AMD); rows
to touch only when something is wrong go last; moves only, no renames.

Tab Holds Sections
Game (was Gameplay; first, where the menu opens) how the game behaves and reads, and Restart and Quit, as a pause menu flat; Restart and Quit last
Graphics how the picture is made, and what it costs Quality preset · Resolution and upscaling · Frame generation and latency · Detail · GPU and memory
Display (new) how it gets to your screen, and what is drawn over it Screen · HDR · Overlays (FPS counter, Menu size, from Game)
Audio sound out and in + Microphone (from Game: it picks the input device)
Controls how you play Camera · Controller · Buttons (optional)
Debug tools and developer switches Robust buffers in Developer (#2042, merged)

Next PRs, one topic each: (2) a Display tab, taking the Screen and HDR sections over whole and adding Overlays; (3) the
Gameplay tab titled Game, first in the strip, where the menu opens; (4) Microphone to Audio; (5) optional, sections on
Controls. If a sixth tab is a no, this PR stands on its own.

Open questions:

  1. A sixth tab (Display)?
  2. V-Sync on Display (the PC convention) or with frame generation (it changes with it)?
  3. Sharpness with the upscaling rows (where players look for it) or with the window filter (where it runs)?
  4. DLSS 5 (#1590) and #1834's Neural rows as a page opened from a Graphics row, like Motion, rather than a seventh tab?
Where open PRs' rows would go
  • Resolution and upscaling: Sharpening method (#1979), DLSS 5 page (#1590), Native 3D resolution (#2017)
  • Frame generation and latency: Frame generation by (#2118, merged: in this section now), Frame generation method (#1834)
  • Detail: Shadow resolution (#1892), Screen filter and Filter strength (#1488)
  • GPU and memory: Texture streaming cache (#2017), Refresh memory (#888); VRAM budget (#1859, merged) is in this section now
  • Game (was Gameplay): Game language and Menu language (#1864), Skip title screen (#1560), Amiibo (#1521)
  • Controls: Camera speed (#1945)
  • #2042 (merged) moved Robust buffers to Debug ▸ Developer.
  • #2105: its readme check would read the heading rows as rows; it needs to skip {TAB_..., "...", nullptr, 0, 0, 0, ..., true} headings, or this PR adds that if it lands first.

Whichever PR lands second moves one row on rebase; happy to do it for anyone.

Testing

  • tests/run_all.py on Windows 11 (llvm-mingw clang, 8 at once) after merging main at 2dfe9011 (with #2119's Aspect ratio, #2481's HDR tone mapper, #2118's Frame generation by,
    #2342's HDR contrast and #1859's VRAM budget): 422 passed, 33 skipped, 2 failed, both outside this PR:
    test_vram_budget_row.py (fails the same on main's own sources here) and test_portable_builder_startup.py (its
    dotnet publish needs packages this PC does not have). A build of the branch compiles. All 81 of main's rows keep
    main's definitions word for word; the only additions are the six headings.
    test_menu_sections.py fails on main as it stands (no sections) and passes here; a layout with a section of Reflex and
    Anti-Lag 2 alone fails it.
  • A build of this branch (Windows 11, RTX 5090), headless with scripted menu keys at Small, Medium and Large: 12 Downs
    from the Quality preset land on V-Sync and 13 Ups come back past it to the last row, so every heading is stepped over
    both ways and Up from the first row wraps to the last; the help box always shows the selected row (at the first head,
    when Robust buffers was the last row). Again at this head (25feb162, after #2042, #1859 and #2119): Up from the Quality preset
    wraps to Mesh shaders, the last row now, under VRAM budget (the bottom screenshot).

Not tested: in a window with a pad, the mouse wheel and a click just under a heading (the headless runs drive
the keys); values kept across a restart (no row's saved key changes); AMD and Intel (their rows hide through row_shown as before; the new check makes sure no section can end up
empty), Linux.

Screenshots

The Graphics tab at 1920x1080, Medium menu size: the top, then scrolled with the keys to V-Sync and to the last row
(the selection steps over every heading; Up from the first row wraps to the last row). The bottom one is retaken at this
head (25feb162, a 16:9 picture: HOS_ASPECT=1.7778, as on a 16:9 monitor); the others are from the first head (634ef656).

Graphics tab, top: Quality preset, then Resolution and upscaling and Frame generation and latency

Graphics tab, middle: Frame generation and latency, then Screen, V-Sync selected

Graphics tab, bottom: Screen with Aspect ratio, HDR, Detail, then GPU and memory with GPU device, VRAM budget and Mesh shaders, Mesh shaders selected

Small and Large:

Graphics tab at Small menu size

Graphics tab at Large menu size

Taken from headless runs of this branch (HOS_HEADLESS=1, RX_VK_SHOT_MENU=1, the keys from RX_VK_MENU_SCRIPT), RTX
5090. Headless, the list never scrolls on main either: menu_record_image leaves ease_step at 0, so the build behind
the scrolled shots had one more line there (ease_step = 1.0f, hence "-dirty" in the first head's build label), not part of
this PR.
The windowed menu eases as before.

🤖 Generated with Claude Code

The Graphics tab is one list of 24 settings, with the window, HDR, upscaling, frame generation and GPU options mixed together, and about ten more are on their way in open PRs. This puts its rows under section titles, so the upscaler, frame generation or HDR can be found without scrolling the whole list. It is the first step of a menu organization laid out below for discussion. **What changed** - The Graphics rows in six sections, under heading rows like the Debug tab's Developer (a gold title, never selected, nothing to click): - Quality preset (first: it sets rows in every section) - **Resolution and upscaling:** Output resolution, Profile, Upscaler, DLSS model, Render resolution, Sharpness - **Frame generation and latency:** Frame generation, Frame pacing, Game frame rate cap, NVIDIA Reflex, AMD Anti-Lag 2 - **Screen:** Fullscreen, V-Sync, Window scaling filter, Aspect ratio (#2119), Ultrawide menus - **HDR:** HDR, HDR paper white, HDR peak brightness, HDR contrast (#2342), HDR tone mapper (#2481) - **Detail:** Anisotropic filtering - **GPU and memory:** GPU device, VRAM budget (#1859), Mesh shaders (Robust buffers is on Debug ▸ Developer since #2042) - Moves only: every row's definition is unchanged, word for word; no row is renamed and no value or saved key changes, so options files carry over, and #1864's tables (keyed by the English text) still find every row. They need the six headings. - No new drawing or input code: the menu already draws heading rows on any tab, and the keys, the pad and the mouse step over them. - `readme.md`: a sentence on the sections, and the option table in the new order. (Ultrawide menus and Mesh shaders have no line yet; #2105 adds them.) The **Frame generation by** row from #2118 gets its line in the table here too: main's readme has none yet. So do #1859's **VRAM budget** (under GPU and memory) and #2342's **HDR contrast** (under HDR). - `tests/test_upscaler_rows.py`: its order list follows the picture's path (output, upscaler, render size, sharpening, then the frame rows, then the window). New `tests/test_menu_sections.py`: the Graphics sections and which rows they hold, and on every tab no section that `row_shown` could leave empty (a title over nothing on a GPU without Reflex, say). **The plan this is step 1 of (for discussion)** Each tab answers one question; a section groups the rows you set together; a row that depends on another follows it; vendor rows sit beside their counterpart and hide where they can't run (no vendor sections, so nothing is left empty on AMD); rows to touch only when something is wrong go last; moves only, no renames. | Tab | Holds | Sections | |---|---|---| | **Game** (was Gameplay; first, where the menu opens) | how the game behaves and reads, and Restart and Quit, as a pause menu | flat; Restart and Quit last | | Graphics | how the picture is made, and what it costs | Quality preset · Resolution and upscaling · Frame generation and latency · Detail · GPU and memory | | **Display** (new) | how it gets to your screen, and what is drawn over it | Screen · HDR · Overlays (FPS counter, Menu size, from Game) | | Audio | sound out and in | + Microphone (from Game: it picks the input device) | | Controls | how you play | Camera · Controller · Buttons (optional) | | Debug | tools and developer switches | Robust buffers in Developer (#2042, merged) | Next PRs, one topic each: (2) a Display tab, taking the Screen and HDR sections over whole and adding Overlays; (3) the Gameplay tab titled Game, first in the strip, where the menu opens; (4) Microphone to Audio; (5) optional, sections on Controls. If a sixth tab is a no, this PR stands on its own. Open questions: 1. A sixth tab (Display)? 2. V-Sync on Display (the PC convention) or with frame generation (it changes with it)? 3. Sharpness with the upscaling rows (where players look for it) or with the window filter (where it runs)? 4. DLSS 5 (#1590) and #1834's Neural rows as a page opened from a Graphics row, like Motion, rather than a seventh tab? <details><summary>Where open PRs' rows would go</summary> - Resolution and upscaling: Sharpening method (#1979), DLSS 5 page (#1590), Native 3D resolution (#2017) - Frame generation and latency: Frame generation by (#2118, merged: in this section now), Frame generation method (#1834) - Detail: Shadow resolution (#1892), Screen filter and Filter strength (#1488) - GPU and memory: Texture streaming cache (#2017), Refresh memory (#888); VRAM budget (#1859, merged) is in this section now - Game (was Gameplay): Game language and Menu language (#1864), Skip title screen (#1560), Amiibo (#1521) - Controls: Camera speed (#1945) - #2042 (merged) moved Robust buffers to Debug ▸ Developer. - #2105: its readme check would read the heading rows as rows; it needs to skip `{TAB_..., "...", nullptr, 0, 0, 0, ..., true}` headings, or this PR adds that if it lands first. Whichever PR lands second moves one row on rebase; happy to do it for anyone. </details> **Testing** - `tests/run_all.py` on Windows 11 (llvm-mingw clang, 8 at once) after merging main at 2dfe9011 (with #2119's Aspect ratio, #2481's HDR tone mapper, #2118's Frame generation by, #2342's HDR contrast and #1859's VRAM budget): 422 passed, 33 skipped, 2 failed, both outside this PR: `test_vram_budget_row.py` (fails the same on main's own sources here) and `test_portable_builder_startup.py` (its `dotnet publish` needs packages this PC does not have). A build of the branch compiles. All 81 of main's rows keep main's definitions word for word; the only additions are the six headings. `test_menu_sections.py` fails on main as it stands (no sections) and passes here; a layout with a section of Reflex and Anti-Lag 2 alone fails it. - A build of this branch (Windows 11, RTX 5090), headless with scripted menu keys at Small, Medium and Large: 12 Downs from the Quality preset land on V-Sync and 13 Ups come back past it to the last row, so every heading is stepped over both ways and Up from the first row wraps to the last; the help box always shows the selected row (at the first head, when Robust buffers was the last row). Again at this head (25feb162, after #2042, #1859 and #2119): Up from the Quality preset wraps to Mesh shaders, the last row now, under VRAM budget (the bottom screenshot). **Not tested**: in a window with a pad, the mouse wheel and a click just under a heading (the headless runs drive the keys); values kept across a restart (no row's saved key changes); AMD and Intel (their rows hide through `row_shown` as before; the new check makes sure no section can end up empty), Linux. **Screenshots** The Graphics tab at 1920x1080, Medium menu size: the top, then scrolled with the keys to V-Sync and to the last row (the selection steps over every heading; Up from the first row wraps to the last row). The bottom one is retaken at this head (25feb162, a 16:9 picture: `HOS_ASPECT=1.7778`, as on a 16:9 monitor); the others are from the first head (634ef656). ![Graphics tab, top: Quality preset, then Resolution and upscaling and Frame generation and latency](https://raw.githubusercontent.com/pmwork-personal/Hookshot-pr/pr-screenshots/menu-sections/graphics-sections-medium-1.webp) ![Graphics tab, middle: Frame generation and latency, then Screen, V-Sync selected](https://raw.githubusercontent.com/pmwork-personal/Hookshot-pr/pr-screenshots/menu-sections/graphics-sections-medium-2.webp) ![Graphics tab, bottom: Screen with Aspect ratio, HDR, Detail, then GPU and memory with GPU device, VRAM budget and Mesh shaders, Mesh shaders selected](https://raw.githubusercontent.com/pmwork-personal/Hookshot-pr/pr-screenshots/menu-sections/graphics-sections-medium-3c.webp) Small and Large: ![Graphics tab at Small menu size](https://raw.githubusercontent.com/pmwork-personal/Hookshot-pr/pr-screenshots/menu-sections/graphics-sections-small.webp) ![Graphics tab at Large menu size](https://raw.githubusercontent.com/pmwork-personal/Hookshot-pr/pr-screenshots/menu-sections/graphics-sections-large.webp) _Taken from headless runs of this branch (`HOS_HEADLESS=1`, `RX_VK_SHOT_MENU=1`, the keys from `RX_VK_MENU_SCRIPT`), RTX 5090. Headless, the list never scrolls on main either: `menu_record_image` leaves `ease_step` at 0, so the build behind the scrolled shots had one more line there (`ease_step = 1.0f`, hence "-dirty" in the first head's build label), not part of this PR. The windowed menu eases as before._ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Joey-Magnus (Migrated from github.com) reviewed 2026-11-11 20:07:14 +00:00
Joey-Magnus (Migrated from github.com) left a comment

Nice, careful change. I checked that it really is move-only: every row's definition is unchanged, and the six headings use the same heading form as the Debug tab's Developer row. Here's what I verified at this head:

  • Saved options: heading rows have value == nullptr. save(), the loader and ini_key all skip value-less rows, so the heading titled "HDR" never collides with the HDR row's hdr key. No row's key changes.
  • Mouse: draw_options hits continue for a heading before hits.add (gpu/vk/vk_menu.cpp:2081-2085), so a heading has no hit area. A click can't land on one, which matters because the kRow click path treats any value-less row as Enter. The keys step over headings both ways (heading_at, lines 3654-3667).
  • Control bridge: bridge_row already excludes headings, so option_get/option_set don't list them.
  • Tests: I ran all 52 checks that read vk_menu.cpp on Linux, including the new test_menu_sections.py and the updated test_upscaler_rows.py. All pass (two dotnet-only checks skipped). The rule that no section may consist only of rows row_shown can hide is a good guard for AMD and Intel.

What needs doing:

should fix — conflict with main: gpu/vk/vk_menu.cpp conflicts because #1859 has since added a VRAM budget row to Graphics. Your plan puts it under GPU and memory. Please add it to GRAPHICS in tests/test_menu_sections.py too, so the check pins where it goes, and give it a readme line in that section (main's readme doesn't list it yet either).

minor — description and screenshots are stale: the description lists Robust buffers under GPU and memory, the key test says "13 Ups come back past it to Robust buffers", and the third screenshot shows it as Graphics' last row. #2042 has since moved it to Debug ▸ Developer, and this head correctly has only GPU device and Mesh shaders there (plus VRAM budget after the rebase). Please retake the bottom screenshot after the rebase so reviewers see what will actually ship.

minor (pre-existing, optional): the readme table has no HDR contrast row on main or here. Since this PR rewrites that part of the table, it would be easy to add one under HDR. Fine to leave it for another PR.

On your open questions, my view only: keeping the sections on Graphics until a Display tab is agreed seems right, and this PR stands on its own either way.

Nice, careful change. I checked that it really is move-only: every row's definition is unchanged, and the six headings use the same `heading` form as the Debug tab's Developer row. Here's what I verified at this head: - **Saved options:** heading rows have `value == nullptr`. `save()`, the loader and `ini_key` all skip value-less rows, so the heading titled "HDR" never collides with the HDR row's `hdr` key. No row's key changes. - **Mouse:** `draw_options` hits `continue` for a heading before `hits.add` (`gpu/vk/vk_menu.cpp:2081-2085`), so a heading has no hit area. A click can't land on one, which matters because the `kRow` click path treats any value-less row as Enter. The keys step over headings both ways (`heading_at`, lines 3654-3667). - **Control bridge:** `bridge_row` already excludes headings, so `option_get`/`option_set` don't list them. - **Tests:** I ran all 52 checks that read `vk_menu.cpp` on Linux, including the new `test_menu_sections.py` and the updated `test_upscaler_rows.py`. All pass (two dotnet-only checks skipped). The rule that no section may consist only of rows `row_shown` can hide is a good guard for AMD and Intel. What needs doing: **should fix — conflict with main:** `gpu/vk/vk_menu.cpp` conflicts because #1859 has since added a **VRAM budget** row to Graphics. Your plan puts it under GPU and memory. Please add it to `GRAPHICS` in `tests/test_menu_sections.py` too, so the check pins where it goes, and give it a readme line in that section (main's readme doesn't list it yet either). **minor — description and screenshots are stale:** the description lists **Robust buffers** under GPU and memory, the key test says "13 Ups come back past it to Robust buffers", and the third screenshot shows it as Graphics' last row. #2042 has since moved it to Debug ▸ Developer, and this head correctly has only GPU device and Mesh shaders there (plus VRAM budget after the rebase). Please retake the bottom screenshot after the rebase so reviewers see what will actually ship. **minor (pre-existing, optional):** the readme table has no **HDR contrast** row on main or here. Since this PR rewrites that part of the table, it would be easy to add one under HDR. Fine to leave it for another PR. On your open questions, my view only: keeping the sections on Graphics until a Display tab is agreed seems right, and this PR stands on its own either way.
Joey-Magnus (Migrated from github.com) reviewed 2026-11-11 21:23:31 +00:00
Joey-Magnus (Migrated from github.com) left a comment

Rows are only moved. Headings have no value, so save, load, the control bridge and mouse hits skip them, and test_menu_sections, test_upscaler_rows, test_vram_budget_row and test_menu_keys pass merged into main. VRAM budget sits under GPU and memory as asked.

Before merge: the description and the third screenshot still show Robust buffers as Graphics' last row, but it moved to Debug in #2042.

Order with your other PRs: this one first, then #2178 and #2179 on top. #2119 renames the Ultrawide row this PR places by name, so #2119 should rebase onto this one.

Rows are only moved. Headings have no value, so save, load, the control bridge and mouse hits skip them, and `test_menu_sections`, `test_upscaler_rows`, `test_vram_budget_row` and `test_menu_keys` pass merged into main. VRAM budget sits under GPU and memory as asked. Before merge: the description and the third screenshot still show Robust buffers as Graphics' last row, but it moved to Debug in #2042. Order with your other PRs: this one first, then #2178 and #2179 on top. #2119 renames the Ultrawide row this PR places by name, so #2119 should rebase onto this one.
hckrman101 (Migrated from github.com) reviewed 2026-11-11 22:18:50 +00:00
hckrman101 (Migrated from github.com) left a comment

Checked at d5634d11. Joey-Magnus's reviews already cover the move-only check, saved keys, mouse hits and the control bridge; I agree and won't repeat them. His two earlier asks are done: VRAM budget sits under GPU and memory and is in GRAPHICS in the test, and the description and bottom screenshot no longer show Robust buffers.

Should fix: the PR conflicts with main again (GitHub shows it as not mergeable). Main has since added an HDR tone mapper row (opts.hdr_tonemap, after HDR contrast, shown only with HDR on Native) and a readme line for it, in the same hunks this PR moves. It belongs in the HDR section, after HDR contrast. Please rebase and:

  • put the row there in vk_menu.cpp;
  • add "HDR tone mapper" to the HDR list in GRAPHICS in tests/test_menu_sections.py, so the check pins it (it is hidden by row_shown unless HDR is Native, which is fine: HDR itself is always shown, so the section is never left empty);
  • carry its readme table line into the HDR group.

Minor: readme. The option table still has no line for VRAM budget (Joey asked for it, and it is a row this PR places) or for HDR contrast, and Mesh shaders has none either (the description says #2105 adds that one). Since the table is rewritten in this PR, adding VRAM budget and HDR contrast under their sections would be cheap; fine to leave if you'd rather not.

CI: only the Conventional Commit title check is reported at this head (pending), so no test has run on it. Joey ran test_menu_sections and test_upscaler_rows merged into main earlier; after the rebase they need running again with the new row.

Nothing else found: the sections follow the plan in the description, and the open questions about a Display tab are for the maintainer, so I'm not weighing in on those. Once the rebase is done this looks good to me.

Checked at d5634d11. Joey-Magnus's reviews already cover the move-only check, saved keys, mouse hits and the control bridge; I agree and won't repeat them. His two earlier asks are done: VRAM budget sits under GPU and memory and is in `GRAPHICS` in the test, and the description and bottom screenshot no longer show Robust buffers. **Should fix: the PR conflicts with main again** (GitHub shows it as not mergeable). Main has since added an **HDR tone mapper** row (`opts.hdr_tonemap`, after HDR contrast, shown only with HDR on Native) and a readme line for it, in the same hunks this PR moves. It belongs in the HDR section, after HDR contrast. Please rebase and: - put the row there in `vk_menu.cpp`; - add "HDR tone mapper" to the HDR list in `GRAPHICS` in `tests/test_menu_sections.py`, so the check pins it (it is hidden by `row_shown` unless HDR is Native, which is fine: HDR itself is always shown, so the section is never left empty); - carry its readme table line into the HDR group. **Minor: readme.** The option table still has no line for **VRAM budget** (Joey asked for it, and it is a row this PR places) or for **HDR contrast**, and Mesh shaders has none either (the description says #2105 adds that one). Since the table is rewritten in this PR, adding VRAM budget and HDR contrast under their sections would be cheap; fine to leave if you'd rather not. **CI:** only the Conventional Commit title check is reported at this head (pending), so no test has run on it. Joey ran `test_menu_sections` and `test_upscaler_rows` merged into main earlier; after the rebase they need running again with the new row. Nothing else found: the sections follow the plan in the description, and the open questions about a Display tab are for the maintainer, so I'm not weighing in on those. Once the rebase is done this looks good to me.
pmwork-personal commented 2026-11-11 22:21:54 +00:00 (Migrated from github.com)

Thanks. At 5714b346:

  • Readme: VRAM budget has its line under GPU and memory (the row's own steps; 2.2 GB only from the Minimum preset), and HDR contrast its line under HDR.
  • Description and screenshot: the bottom screenshot is retaken at this head (GPU device, VRAM budget, Mesh shaders, with Mesh shaders the last row), and the description no longer lists Robust buffers under GPU and memory. The top and middle shots are from the first head, as the description notes.
Thanks. At 5714b346: - **Readme:** VRAM budget has its line under GPU and memory (the row's own steps; 2.2 GB only from the Minimum preset), and HDR contrast its line under HDR. - **Description and screenshot:** the bottom screenshot is retaken at this head (GPU device, VRAM budget, Mesh shaders, with Mesh shaders the last row), and the description no longer lists Robust buffers under GPU and memory. The top and middle shots are from the first head, as the description notes.
pmwork-personal commented 2026-11-11 22:44:30 +00:00 (Migrated from github.com)

#2119 landed first, so I merged main into this (25feb162): the Screen section now has main's Aspect ratio row word for word, and #2481's HDR tone mapper is last in the HDR section. All 81 of main's rows keep main's definitions; the only additions are the six headings. test_menu_sections.py now also pins Profile, Aspect ratio, Ultrawide menus and HDR tone mapper in their sections. The bottom screenshot is retaken at this head, with Aspect ratio in Screen.

#2119 landed first, so I merged main into this (25feb162): the Screen section now has main's Aspect ratio row word for word, and #2481's HDR tone mapper is last in the HDR section. All 81 of main's rows keep main's definitions; the only additions are the six headings. `test_menu_sections.py` now also pins Profile, Aspect ratio, Ultrawide menus and HDR tone mapper in their sections. The bottom screenshot is retaken at this head, with Aspect ratio in Screen.
hckrman101 (Migrated from github.com) approved these changes 2026-11-11 22:47:23 +00:00
hckrman101 (Migrated from github.com) left a comment

Re-checked at 25feb162. Everything from my last review is done:

  • Rebase / HDR tone mapper: the merge of main is clean (GitHub shows it mergeable). HDR tone mapper is last in the HDR section, with its help text unchanged, and test_menu_sections.py pins it there, plus Profile, Aspect ratio and Ultrawide menus.
  • Nothing dropped: I compared the rows table with main's: the same rows, each with its original definition and help text; the only additions are the six heading rows. Main's Aspect ratio rename (#2119) is kept, and the new order has Profile with the output rows and Reflex / Anti-Lag with frame generation, as the description says.
  • Readme: the table follows the menu's sections row for row, and now has VRAM budget and HDR contrast (and the tone mapper line from main, in the HDR group). Mesh shaders and Ultrawide menus have no line, as the description says #2105 adds those.
  • test_upscaler_rows.py's order list matches the new row order.

CI: the checks were all still pending when I looked, so no result yet; worth a glance before merging. Joey-Magnus's earlier asks (Robust buffers in the description) were done before this.

The Display tab questions stay with the maintainer. Good to go from my side.

Re-checked at 25feb162. Everything from my last review is done: - **Rebase / HDR tone mapper:** the merge of main is clean (GitHub shows it mergeable). HDR tone mapper is last in the HDR section, with its help text unchanged, and `test_menu_sections.py` pins it there, plus Profile, Aspect ratio and Ultrawide menus. - **Nothing dropped:** I compared the rows table with main's: the same rows, each with its original definition and help text; the only additions are the six heading rows. Main's Aspect ratio rename (#2119) is kept, and the new order has Profile with the output rows and Reflex / Anti-Lag with frame generation, as the description says. - **Readme:** the table follows the menu's sections row for row, and now has VRAM budget and HDR contrast (and the tone mapper line from main, in the HDR group). Mesh shaders and Ultrawide menus have no line, as the description says #2105 adds those. - `test_upscaler_rows.py`'s order list matches the new row order. **CI:** the checks were all still pending when I looked, so no result yet; worth a glance before merging. Joey-Magnus's earlier asks (Robust buffers in the description) were done before this. The Display tab questions stay with the maintainer. Good to go from my side.
Commenting is not possible because the repository is archived.
No description provided.