Skip to content

MetalSharp 1.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Nov 07:58
· 14 commits to main since this release
01d73e8

MetalSharp 1.1.0 runs two Wine runtimes from one app, on macOS 15 and later. Switch between the FEX and x86_64 runtimes from the header at any time; your games, saves and prefixes stay where they are. Everything that changed since 1.0.0 is below.

Please report anything that breaks in Issues, with the game, the graphics route, the runtime (FEX or x86_64) and your macOS version.

Important

Updated from 1.0.0 and the setup wizard opens when you switch to x86_64? Download fix-x86_64-setup-loop.sh from the assets below, run sh ~/Downloads/fix-x86_64-setup-loop.sh in Terminal, then quit and reopen MetalSharp. It only updates one version stamp on the x86_64 runtime's graphics files; your games, prefixes and settings aren't touched. The next update includes the fix.

Downloads

Build Starts on File
Arm64 FEX Native arm64 Wine, x86 games through FEX MetalSharp-1.1.0-arm64-FEX.dmg
x86_64 x86_64 Wine through Rosetta 2, with D3DMetal MetalSharp-1.1.0-arm64.dmg

Both are Developer ID signed and notarized, and either one can switch to the other runtime. On 1.0.0? The in-app updater brings you to 1.1.0 and keeps your library.

Requirements: macOS 15 or later on Apple silicon. On the FEX runtime, 32-bit x86 games still need macOS 26.4 or later. The x86_64 runtime needs Rosetta 2, which MetalSharp installs for you.

At a glance

  • Two runtimes, one app, with a FEX | x86_64 toggle in the header.
  • MetalSharp Wine 6.0 for both: 1.0.0 shipped 4.0, so FEX users get everything from 5.0 and 6.0.
  • macOS 15 and later for both builds. FEX needed macOS 26.4 before.
  • The x86_64 runtime is one signed app. No more runtime bundle downloads, and no Xcode tools.
  • DLSS on MetalFX and MetalFX upscaling on every graphics route.
  • A new library: a page per launcher, plus Rockstar and Battle.net support.
  • Your data can live on an external drive.

FEX runtime (Arm64)

MetalSharp Wine 4.0 → 6.0, by way of 5.0. Still a native arm64 Wine 11.20, with x86 code run by FEX.

Runs on macOS 15 and later

  • The FEX build now runs from macOS 15, not 26.4. 64-bit games run on macOS 15; 32-bit x86 games still need 26.4, where Apple provides the low 4 GB of memory they need.
  • Its bundled libraries (Unity Mono, SDL2/SDL3, FMOD, CSteamworks, libgdiplus, MetalSharp's host runtime) are built to load on macOS 15.

FEX runs x86 code more like a real x86 CPU

  • CPU flags are left the way Intel hardware and Rosetta 2 leave them after logic, shift, bit-scan and multiply instructions.
  • x87 floating-point state survives an exception.
  • Hardware breakpoints (debug registers) work.
  • Execute faults land on the exact byte, so copy protection that decrypts code as it runs works.
  • Code is re-translated when a program rewrites it through another mapping.
  • CPUID reports the TSC frequency and no hypervisor, matching what Windows reports.
  • A thread spinning in a tight loop can be suspended. Before, SuspendThread on it could hang.

Faster

  • Calls from native code back into x86 code (sort comparators, window procedures, callbacks) are faster.
  • Programs start faster from cold.

Steam and games on FEX

  • The Steam client starts the way Steam starts itself: no webhelper wrapper, no CEF switches and no DLL overrides, so its UI loads.
  • Microsoft's VC++ 2015–2022 runtime (ARM64) is put into every prefix and loaded ahead of Wine's own. Games whose launcher checks for it, like Subnautica 2, start. MetalSharp places the DLLs itself, because Microsoft's installer can't run under FEX.
  • BeamNG.drive runs its native ARM64 build directly, on every graphics route.
  • Hogwarts Legacy and Caves of Qud start directly; Hogwarts keeps Steam running for its Steam API.
  • EVE Online and Assassin's Creed Odyssey start like any other Steam game.
  • Ubisoft Connect starts the way the Battle.net client does.

x86_64 runtime

The x86_64 runtime is now MetalSharp-Wine-x86_64.app: one Developer ID signed, notarized app holding the whole runtime. It's an x86_64 Wine 11.17 (WineForge's port, with 59 MetalSharp patches) that runs under Rosetta 2.

Setup and updates

  • The x86_64 DMG carries the app, and setup installs it in one step. No runtime bundles are downloaded, and setup and migration no longer ask for them.
  • No Xcode Command Line Tools needed: its shims come prebuilt.
  • Rosetta 2 installs itself if it's missing, including after a macOS upgrade removes it.
  • Updates swap the Wine app in place. They no longer rerun setup, move your data out and back, or rebuild your prefixes.

What's inside

  • Every graphics route: D3DMetal, Mullion, VKD3D-Proton with DXVK, and WineMetalGL (details under Graphics).
  • Media playback: GStreamer 1.26.7 and FFmpeg 7.1.2, so Media Foundation video plays. The old x86_64 runtime had none that loaded.
  • 32-bit programs run on Wine's WoW64.

Games on x86_64

  • The Steam client starts as it does on FEX: plain client and Steam's own webhelpers, with each game's graphics route applied as Steam starts it.
  • Microsoft's VC++ 2015–2022 runtime (x64) loads ahead of Wine's, whose msvcp140 lacks parts games link against.
  • BeamNG.drive starts: the GS segment points at the thread block on every route but D3DMetal, so its memory allocator works. A game that ships CrashRpt next to Chromium no longer hangs waiting for its crash reporter.
  • God of War Ragnarök takes its Steam Deck path, since the PlayStation PC SDK otherwise quits under Wine.
  • Red Dead Redemption 2 runs its DirectX 12 renderer on VKD3D-Proton.

Switching between FEX and x86_64

  • A FEX | x86_64 toggle in the header switches the active runtime. Switching to one that isn't installed sets it up, from the app MetalSharp carries or downloaded from MetalSharp Wine's release.
  • Prefixes are shared, so a switch keeps your games, saves and settings.
  • The VC++ runtime follows you: every switch fits each prefix with Microsoft's VC++ runtime for that runtime, ARM64 on FEX and x64 on x86_64.
  • Uninstall one runtime (Uninstall FEX or Uninstall x86_64) without touching the other or your prefixes. Uninstall MetalSharp still removes everything.
  • Updates refresh both runtimes when both are installed.
  • Per-runtime shader caches: Settings shows each graphics route of the active runtime with its own Clear button.
  • Old DLLs cleaned up: graphics DLLs an older MetalSharp copied into game folders are removed before launch on both runtimes. A game's own DLLs stay.

Graphics

Every route, on both runtimes

Route APIs Version Runtimes
Mullion Direct3D 12, 11, 10 metalsharp-2.1-main f5dad40e FEX, x86_64
VKD3D-Proton-MacOS + DXVK Direct3D 12, plus 11 down to 8 VKD3D-Proton 5.3, DXVK 2.7.1 / DXVK-MacOS 3.1.1-macos.3 FEX, x86_64
D3DMetal Direct3D 12, 11 Game Porting Toolkit 4.0 beta 3, or 3.0 below macOS 27 x86_64
WineMetalGL OpenGL 1.0–4.6, GLES 3.7.0 → 3.9.0 FEX, x86_64

DLSS and MetalFX

  • DLSS on MetalFX in games that ship DLSS: Super Resolution, Ray Reconstruction (macOS 26+) and Frame Generation (macOS 27). It runs on every route, through each route's own NGX core; D3DMetal uses Apple's (Super Resolution only).
  • MetalFX upscaling on every route, set once in MetalSharp. It now covers DXVK, VKD3D-Proton (through vkd3d.conf and dxvk.conf) and OpenGL too.
  • A new 1.5x upscaling option, alongside 1.75x and 2x.

macOS 15 to 26

  • Below macOS 27, MetalSharp sets the routes up for your Mac's Metal version on both runtimes:
    • Mullion uses Metal 3.2 shaders.
    • VKD3D's Direct3D 9 uses shader model 3.
    • The x86_64 runtime's D3DMetal is Game Porting Toolkit 3.0's.
  • On macOS 27 and later, Mullion picks its own Metal version and D3DMetal is 4.0 beta 3's.

Mullion (4.0 shipped 8018c44)

  • Background pipeline compiles, so new effects hitch less.
  • Wider Direct3D 12 coverage: conservative rasterization, barycentrics, programmable sample positions, mesh shaders, stream output, sampler feedback and more.
  • Faster multithreaded encoding and native indirect dispatches.
  • Game fixes:
    • Hogwarts Legacy: typed views fixed, and ray tracing off by default.
    • Assassin's Creed Odyssey: UAV fixes.
    • Starfield: the black DLSS image is fixed.
    • Shared textures and fences work across processes.

VKD3D-Proton-MacOS (4.5 → 5.3)

  • Shaders convert through Apple's Metal Shader Converter, so shader compiles are much faster.
  • MoltenVK compiles pipelines in the background, and its pipeline cache now hits instead of growing every launch.
  • Game fixes:
    • Minecraft Bedrock ray tracing, and Nanite meshes.
    • Forza Horizon 3 and Crimson Desert geometry.
    • Dragon's Dogma 2 launches, and a God of War Ragnarök shader no longer crashes the GPU.
    • Black 3D in some DXVK games.
  • MoltenVK compiles on the calling thread, so God of War Ragnarök's sixteen compile threads no longer stall.

WineMetalGL (3.7.0 → 3.9.0)

  • MetalFX upscaling and a frame-rate limit.
  • Jedi Academy and other Quake III engine games no longer crash at start.
  • Mewgenics no longer shows a white screen.

Wine display, window and mouse fixes (both runtimes)

  • More display modes are listed, and saved resolutions follow the main display (Unity, Unreal, ELDEN RING, The Witcher 3).
  • ELDEN RING stays out of native fullscreen.
  • Windows come to the front when shown.
  • Fullscreen games keep the cursor inside their window. Cmd+click locks or frees it.

Library and launchers

A page per launcher

  • A sliding sidebar lists Steam, Ubisoft, Battle.net, Rockstar, GOG, Epic and Windows Programs, with Logs at the bottom. Each page shows that launcher's games in the deck view.
  • A one-row header holds the logo, launcher button, search and theme. Hero art runs down behind the dock.
  • Rockstar Games Launcher and Battle.net support:
    • Install, start and stop each launcher, and launch its games on your graphics route.
    • Battle.net games start the way Battle.net's Play button does.
    • Steam copies of Rockstar games also show on the Rockstar page.

Installing and uninstalling

  • Choose a drive for each launcher's games: this Mac or an external drive, in a "MetalSharp Games" folder.
  • GOG and Epic setup walks through Create Prefix and Login on the page, then lists every owned game. Play installs a game with progress.
  • Uninstall a GOG or Epic game from its menu; only the game goes, and its saves stay.
  • Uninstall a launcher, optionally with its games folder.
  • Windows Programs has an Install Program button for .exe and .msi installers.

Art and per-game controls

  • Better art:
    • Battle.net uses its own key art, and GOG its database covers.
    • Ubisoft games take their cover and hero from Steam.
    • Portrait covers become proper wide heroes.
    • Any entry can take custom card and hero art.
  • Graphics picker and game settings on GOG, Epic and Windows Programs, offering the active runtime's routes. Game settings open as a centered overlay.
  • Library and Settings polish, with window size presets, by @MohamedElGhandour. Thank you!

Everything else

Your data and the app

  • Keep MetalSharp's data on an external drive (#747). The first launch asks where your data goes, and Settings → Data Location moves it later. Every file is checked before the original is removed.
  • Quitting MetalSharp ends its Wine processes (#750): Steam, games and wineserver no longer keep running after you quit.
  • In-game voice chat can use your microphone (#766). Thanks @renewrocha!

Updates

  • The updater keeps its own log (~/.metalsharp/logs/updater.log) and says which step it stopped at if something goes wrong (#767).
  • It runs as its own launchd job, so closing the old app can't cut it off mid-update.
  • Setup no longer opens by mistake while an update is still laying out the new runtime.

Fixes

  • GOG support installs with Python 3.10 or newer, and GOG stop and uninstall work with no game running.
  • Battle.net stays on C: (its browser crashes when run from an external drive) and is found wherever it was installed.
  • Clicking the sidebar or header no longer presses the button underneath, which could launch a game.

Removed

  • The console emulators: PCSX2, RPCS3, shadPS4 and SharpEmu.

Under the hood

  • CI moved to macOS 15 runners.
  • The release workflow builds the x86_64 DMG around MetalSharp Wine's signed x86_64 app and checks it with tools/dmg/verify-x86_64-dmg.sh.

What's Changed

  • fex: BeamNG.drive runs its ARM64 build, started directly by @aaf2tbz in #763
  • fix: declare microphone usage so in-game voice chat can record by @renewrocha in #766
  • feat: library polish with window presets, plus launcher pages, store backends and per-game controls by @aaf2tbz in #765
  • x86_64 runtime as one signed app: MetalSharp-Wine-x86_64.app by @aaf2tbz in #768

New Contributors

Contributors

Full Changelog: v1.0.0...v1.1.0