Malbec Get Malbec

Performance

We publish a number only after we have measured it, with the Mac, the test, the settings and the raw results next to it.

Overwatch

Malbec against CrossOver on one Mac, on the same day, with the same in-game settings. Everything here comes from the frame times of every map, which you can download, and every limit of the test is listed under it.

Overwatch, on one Mac: Malbec against CrossOver 26.2 with its D3DMetal setting.

  • 61%more frames per second155 against 96 FPS on average, on Malbec and CrossOver 26.2.
  • 8.5×higher 1% lows78 against 9 FPS over the slowest 1% of frames, on Malbec and CrossOver 26.2.
  • 0stutters over 50 ms per minuteAgainst 52 on CrossOver 26.2. A stutter here is a frame that took longer than 50 ms.

Measured on a MacBook Pro (M5 Max, 48 GB) with macOS 27.0, Overwatch, the Workshop benchmark map, 22 October 2026, n=5 maps on Malbec and 3 on CrossOver 26.2. In-game settings on both: fullscreen 2560×1600, the same graphics preset, DirectX 11, frame-rate limit 600. Malbec ran its Maglev engine (malbec-20261022.4) with the performance settings Malbec ships with. Each number is the median of a side’s maps. Both sides had played Overwatch earlier that day, so their shader caches weren’t empty; a first session with an empty cache wasn’t measured at these settings.

Four numbers from every map

Each bar is the median of a side’s maps; the line across it runs from its lowest map to its highest. Every bar starts at zero.

Average FPS Higher is better. Malbec: 61% more.

  • Malbec155 FPS5 maps, 138 to 159
  • CrossOver 26.2 (D3DMetal)96 FPS3 maps, 91 to 103

1% low Higher is better. Malbec: 8.5× higher.

  • Malbec78 FPS5 maps, 65 to 85
  • CrossOver 26.2 (D3DMetal)9 FPS3 maps, 9 to 11

Stutters over 50 ms Lower is better. Malbec: 0 in every map.

  • Malbec0 per minute5 maps, each 0
  • CrossOver 26.2 (D3DMetal)52 per minute3 maps, 49 to 78

Slowest frame Lower is better. Malbec: 11× shorter.

  • Malbec20 ms5 maps, 16 to 30
  • CrossOver 26.2 (D3DMetal)223 ms3 maps, 207 to 340

Against CrossOver 26.2 (D3DMetal): Malbec is ahead in all four, and in each the two sides’ ranges, from lowest map to highest, don’t overlap.

Being measured: CrossOver’s DXMT setting and CrossOver 26.3 (the current version).

Frame times, one map each

Each side’s median map by average FPS: Malbec’s map 1 of 5 (28 s) and CrossOver 26.2’s map 2 of 3 (43 s). Each column is the slowest frame in its tenth of a second, and both panels use the same scale. The dashed line is 50 ms, where we count a stutter.

Malbec Map 1 of 5. 4,379 frames over 28 s, median 6.3 ms, slowest 19.6 ms, 0 over 50 ms.

Frame times on Malbec, Overwatch, map 1 of 5 4,379 frames over 28 s, median 6.3 ms, slowest 19.6 ms, 0 over 50 ms. Each column is the slowest frame in its tenth of a second. The scale runs from 0 to 400 ms and from 0 to 50 seconds, the same for every panel.

CrossOver 26.2 (D3DMetal) Map 2 of 3. 4,132 frames over 43 s, median 8.9 ms, slowest 339.6 ms, 37 over 50 ms.

Frame times on CrossOver 26.2 (D3DMetal), Overwatch, map 2 of 3 4,132 frames over 43 s, median 8.9 ms, slowest 339.6 ms, 37 over 50 ms. Each column is the slowest frame in its tenth of a second. The scale runs from 0 to 400 ms and from 0 to 50 seconds, the same for every panel.
The slowest frame in every 5 seconds, as a table
The slowest frame in each 5 seconds of the maps in the chart.
Time in the mapMalbecCrossOver 26.2
0 to 5 s13.4 ms193.5 ms
5 to 10 s12.7 ms84.1 ms
10 to 15 s14.3 ms177.6 ms
15 to 20 s19.6 ms288.2 ms
20 to 25 s16.7 ms222.4 ms
25 to 30 s10.9 ms81.2 ms
30 to 35 s–137.5 ms
35 to 40 s–339.6 ms
40 to 45 s–76.6 ms

Every map

Every map we counted, numbered in the order played. Average FPS is the frames the HUD counted over the time between its lines; the other numbers come from the frame times it listed, one CSV file per map.
SetupMapSecondsAverage FPS1% low FPSStutters over 50 ms per minuteSlowest frame (ms)Frame times
Malbec1 (in the chart)28155.077.10.019.6CSV, Malbec, map 1
Malbec241159.577.80.029.4CSV, Malbec, map 2
Malbec342137.764.90.030.4CSV, Malbec, map 3
Malbec446156.584.60.016.7CSV, Malbec, map 4
Malbec546143.781.60.015.9CSV, Malbec, map 5
CrossOver 26.2 (D3DMetal)143103.411.148.9223.5CSV, CrossOver 26.2 (D3DMetal), map 1
CrossOver 26.2 (D3DMetal)2 (in the chart)4396.08.951.6339.6CSV, CrossOver 26.2 (D3DMetal), map 2
CrossOver 26.2 (D3DMetal)34491.29.277.8206.9CSV, CrossOver 26.2 (D3DMetal), map 3
  • Where the time went: the GPU was the limit (its time was at least 80% of the frame’s) in this share of frames per map: Malbec in 91 to 96% and CrossOver 26.2 in 3 to 16%. In the other frames something else held the frame up, often the CPU side.

Raw data: every map’s numbers (JSON) and each map’s frame times (the CSV links above), described here.

How we measured it

Both sides’ frame times went through the same steps: the same counting and the same rules for what counts as a stutter. How each side’s maps were cut is under The scene.

How we measured Overwatch

  • One Mac, one day: a MacBook Pro with M5 Max and 48 GB of memory, on macOS 27.0, in the tester’s own macOS account.
  • The scene: Overwatch’s Workshop benchmark map, which plays Overwatch’s maps in a random order. Malbec’s maps were cut at the tester’s key presses at the start and the end of each map. CrossOver’s maps were cut at the loading screens between maps, because the key presses weren’t recorded in its session. Only the frames in between count. Because the order is random, the two sides didn’t play the same maps.
  • The settings: the same in the game on both sides: fullscreen 2560×1600, the same graphics preset (set by the tester on both; its name wasn’t recorded), DirectX 11 and a frame-rate limit of 600, set by hand before measuring.
  • Malbec ran with the engine settings it ships with. CrossOver 26.2 was set to D3DMetal, one of its settings for DirectX 11. CrossOver can also pick a setting per game by itself; which one it picks for Overwatch we haven’t checked yet.
  • Shaders: Malbec played after an earlier session that day. CrossOver played its second session; its first, right after an Overwatch update, built shaders at a lower preset in a borderless window and on other maps, so some shader building in its second session can’t be ruled out.
  • Left out: the sessions that didn’t match these settings: Malbec’s two sessions with its performance settings off, one of them the day’s first, and CrossOver’s first session, right after an Overwatch update, at a lower preset in a borderless window. We don’t publish their numbers on this page.
  • Frame times come from the Metal Performance HUD built into macOS, which logs the time of every frame about once a second. Average FPS is the frames the HUD counted over the time between its log lines. The 1% low is the frame rate over the slowest 1% of frames. A stutter is a frame that took longer than 50 ms. The slowest frame is the longest single frame of a map.
  • Order: each side’s maps were played in one block, not alternated the way our benchmark runs are. That is why every number comes with each side’s lowest and highest map, and why we write no difference wherever the two overlap.
  • The picture: with Malbec’s engine settings on, the tester saw no missing textures, flicker or pop-in.
  • Not measured yet: CrossOver’s DXMT setting and CrossOver 26.3, the current version, which is newer than the one we measured (both being measured); the setting CrossOver picks for Overwatch by itself; and a first session with an empty shader cache at these settings, on either side.

Benchmarks

Unigine Heaven and Superposition, Malbec and CrossOver on the same Mac, the same day. Everything here comes from the results file, and a setup with fewer than three counted runs shows no number.

Being measured.

We’re measuring Malbec against CrossOver 26 in Unigine Heaven 4.0 and Unigine Superposition 1.1 on a MacBook Pro (M5 Max), and each result will come with its settings, at least three runs and the raw data. How we measure

The tests

Both are free benchmarks from Unigine that run a fixed camera path and stop by themselves, so a run needs no clicks and every setup sees the same frames.

Two benchmarks: one 32-bit, one 64-bit

Unigine Heaven 4.0, 32-bit

The file Unigine serves today, checked against its SHA-256 before every install. This build of Heaven is 32-bit only, so every setup runs its 32-bit DirectX 11 path, the one older games take.

  • Settings: DirectX 11, Ultra, tessellation Normal, anti-aliasing off, 1920×1080 in a window, sound off.
  • One run: Heaven’s whole camera path, 26 scenes and about 262 seconds, started and stopped by Heaven itself with the switches the Phoronix Test Suite uses. Heaven reports the average frame rate of the run.
  • Compared with: CrossOver’s DXMT setting. CrossOver’s D3DMetal setting can’t run this 32-bit program: CrossOver falls back to Wine’s own renderer, so that comparison would measure something else.

Unigine Superposition 1.1, 64-bit

Also the file Unigine serves today, checked against its SHA-256. It is 64-bit, so it runs through every setup’s 64-bit DirectX 11 path, the one most catalog games take.

  • Settings: Unigine’s 1080p High preset (shaders High, textures Medium, depth of field and motion blur on) in a 1920×1080 window, sound off.
  • One run: the camera path once, about 177 seconds. Superposition reports a score and its average, lowest and highest frame rate.
  • Compared with: both of CrossOver’s settings, D3DMetal and DXMT.

Superposition only runs while it is the app in front, so each run brings it to the front the same way for every setup. A run that loses the front is marked and doesn’t count.

Method

Every benchmark number on this page is measured the way this section describes, by the same scripts for every setup. Overwatch was played by hand; how we measured it is with its results.

How every benchmark run is done

  • The same Mac on the same day, plugged in, with Low Power Mode off, nothing else running and nothing covering the window.
  • Each setup gets one warm-up run that doesn’t count, so the counted runs start with their shaders already built. Then at least three counted runs, each in a fresh Wine session.
  • Runs happen in a separate macOS account kept for measuring. Shader caches live per account, so one setup’s caches can’t help or hurt another’s, and nobody’s own games are touched.
  • When setups are measured again, their order alternates. A setup whose runs spread more than 3% is run again.
  • Malbec runs each test the way it runs a game you add. CrossOver runs it in a bottle set up the way CrossOver sets up bottles, with the same screen resolution.

What we report

  • The median of the counted runs, and the slowest and quickest run beside it.
  • No difference when two setups’ medians are closer than the larger spread of their runs.
  • For games, with the Metal Performance HUD built into macOS: the average frame rate, the 1% low (the frame rate over the slowest 1% of frames), stutters per minute (frames that take longer than 50 ms) and the slowest frame, for every map or run, with each side’s median.
  • Every published number carries the Mac and its chip, its memory, the macOS version, the test and its settings, the engine version, at least three runs, the date and a link to the raw results. A number missing any of these isn’t published.

How we compare

We measure CrossOver ourselves, on the same Mac and day, and name its version and the setting it ran with. CrossOver runs DirectX 12 games and far more Windows apps than Malbec; we say so wherever we compare.

Raw data

Every result links the runs it comes from. The results file is data/bench.json. Overwatch’s maps are in data/perf/overwatch-2026-10-22.json, with every map’s frame times as a CSV file, all described here.