Skip to content

MetalFX: a 1.5x upscaling option - #754

Merged
aaf2tbz merged 8 commits into
mainfrom
metalfx-1-5x
Nov 2, 2026
Merged

aaf2tbz merged 8 commits into
mainfrom
metalfx-1-5x

Conversation

@aaf2tbz

@aaf2tbz aaf2tbz commented Nov 1, 2026

Copy link
Copy Markdown
Collaborator

Adds a 1.5x MetalFX option next to 1.75x and 2x. At 1.5x a game renders at two thirds of the display's size in each direction, for example 1280x720 on a 1920x1080 display, and MetalFX upscales it to the display. That keeps more detail than 1.75x or 2x, at a smaller performance gain.

Changes

  • Backend (metalfx.c): 1.5 is now a valid factor in all three checks: the saved state, /metalfx/toggle, and d3d11.metalSpatialUpscaleFactor read back from mullion.conf.
  • UI: the MetalFX choices offer 1.5x first in the game settings (ui.rs, ui_live.rs), Sharp (sharp_live.rs, sharp_preview.rs) and the process manager (process_manager.rs).
    • sharp_live.rs maps the choices by index, so 2x and Off moved from 1 and 2 to 2 and 3.
    • The preview's default index moved with them, so the default stays 2x.

How it works with MetalSharp Wine

MetalSharp Wine 0103 shows a game with MetalFX on the display divided by the factor, so it renders at the smaller size. Mullion then upscales to the display's resolution. Neither needs a change for a new factor: 1.5x on a 1920x1080 display gives exactly 1280x720.

Tests

  • make test and make VARIANT=fex test pass.
  • smoke.sh now turns MetalFX on at 1.5x and checks that the state and mullion.conf both say 1.5.
  • cargo check passes for app-gpui.

Avery Felts added 6 commits November 1, 2026 15:10
Besides 1.75x and 2x, MetalFX can upscale by 1.5x: a game renders at two thirds of the display's size in each
direction (1280x720 on a 1920x1080 display) and MetalFX upscales it to the display. The backend accepts and
keeps 1.5 (metalfx.c, and as d3d11.metalSpatialUpscaleFactor in mullion.conf), and the MetalFX choices in the
game settings, Sharp and the process manager offer 1.5x first; the preview's default stays 2x.
GitHub retires its macOS 14 runner images on November 2, 2026, and the C/C++/Obj-C and Metal jobs failed
before starting during a scheduled brownout. Those jobs, the main CI's and the MonoKickstart build move to
macos-15; nothing in them depends on macOS 14.
The fex build's VKD3D-Proton lane reads MetalFX from its own files: runtime/wine/etc/vkd3d.conf (VKD3D_CONFIG_FILE,
Direct3D 12) and dxvk.conf (DXVK_CONFIG_FILE, Direct3D 11 and earlier, and DXGI). MetalSharp writes the same
d3d11.metalSpatialUpscale lines there as in mullion.conf and keeps them in sync, and points the lane's games at
them. A factor line a file lacks goes at its top, where it applies to every program, not inside the last
[program.exe] section.
Avery Felts and others added 2 commits November 1, 2026 19:45
MetalFX: vkd3d.conf and dxvk.conf for the VKD3D-Proton and DXVK lanes
@aaf2tbz
aaf2tbz merged commit 4d66e4d into main Nov 2, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant