Porting 3DMark to macOS With InstallAware’s Application Porting Toolkit

We’re something of hardware buffs at InstallAware. Testing all that the latest and greatest generations of PCs have to offer has been a consistent pastime in the history of the company. And what better benchmark to measure GPU performance than Futuremark’s (well, now UL’s) 3DMark series of products?

When we at Skunkworks started building InstallAware Multi Platform, we introduced Macs for the first time to the company coffers. The rest of the team were shocked to hear that Macs had no standard benchmark test like 3DMark! Surely this had to be a mistake?

“Nope,” we had to assure them, as their Skunkworks compatriots. This was no mistake. Macs just had no established 3D benchmark application like 3DMark. Some of us even reached out to UL directly (in an unofficial capacity, of course), in disbelief at this state of affairs, over the course of the years. Sadly, our worst fears were confirmed. Those were the breaks! Indeed, there was no 3DMark for macOS, and there were no plans for one either!

At one point, we had even created our own CPU benchmark at Skunkworks (that’s when we discovered reliable cross platform benchmarking turns out to be an extremely difficult undertaking) – but this was a far cry (pun intended!) from looking at pretty graphics rolling by on a bleeding edge device.

Enter InstallAware‘s Application Porting Toolkit. As of this writing, it’s hot off the press – and has been cause for much joy and celebration at our offices. One of the test case applications we validated our kit against was, of course, 3DMark! And now, we’re finally able to run 3D Mark on Macs. While, due to some issues with it as we’ve described below, 3DMark was not destined to become the showcase application featured in our Application Porting Toolkit Whitepaper; it yet earns a well-deserved spot on this blog – looking at how beautifully it does run on Macs, and how easy the porting process has been made, thanks to all the work we’ve done as Skunkworks on the Application Porting Toolkit.

If you’re as much of a hardware buff as many of us are here, please don’t hold back from replicating our results, directly on whatever Macs you have available on-hand. This post is laced with tips and tricks to reproduce our findings (not that many are needed, again thanks to the quality of the current kit). Here’s the hardware we used:

M4 “Airmax” 13′ Pale Blue MacBook Air – 32 GB RAM, 2 TB Storage, 10 Core CPU with 10 Core GPU (try to have at least 100 GB free disk space at start, all things considered)

As for the software:

InstallAware Studio Admin X17 (for high performance setup capture with PackageAware)

InstallAware 2025 Multi Platform 2.65 (for the Application Porting Toolkit)

UL 3DMark 2.32.8454 Professional Edition (for command line support)

Emphasis on command line support because, without it, the funny shell that the 3DMark folk are using nowadays won’t show properly on your Mac:

That solid, jet black is, I guess, the Wine (Windows compatibility layer) equivalent of TV static?

What’s funny is, the same 3DMark GUI does look much better inside a macOS 26 Tahoe VM, albeit with glitches:

That is, after you dismiss multiple popups that look like the below, which are going to be hidden behind the main window, mind you (tip!):

And sadly, macOS virtualization still leaves a lot to be desired on Apple Silicon – so the actual benchmarks themselves won’t run inside the Tahoe VM, no matter how good the shell looks.

Getting back to our required list of software downloads, either VMware or Parallels works for virtualization:

VMware Fusion Professional 13.6.4

or

Parallels Desktop 26.1.1 (57288)

Please feel free to go with either one (VMware is now totally free, as in beer; so that helps – although 3D performance inside Windows guests with VMware falls substantially behind Parallels, so we’ll be using Parallels to compare benchmark numbers with the host device later on (tip!) – and again, sadly, using VMware for macOS virtualization on Apple Silicon is kind of a non-starter, so we used Parallels for the virtualized Tahoe screenshots above, too).

We still love VMware, though 🙂

So, with all downloads completed; following in the footsteps of the venerable Application Porting Toolkit Whitepaper, we now execute the following steps:

  1. “Provision” (gotta love that word) a clean Windows 11 VM.
  2. Scan that VM with InstallAware Studio Admin X17‘s PackageAware to save a pre-install snapshot.
  3. Install 3DMark Professional inside of the Windows 11 VM.
  4. Update the PackageAware scan and save the post-install snapshot.
  5. Compare the two snapshots and create a portable project.
  6. TAR that folder up and move it to your host Mac, UNTAR it there. After that, please feel free to save the Windows 11 VM for future benchmark score comparisons (tip!), or to wipe it off the surface of the Earth at this stage (especially if you’re pressed for storage space).
  7. Run InstallAware 2025 Multi Platform‘s Application Porting Toolkit on your host Mac, importing the UNTAR’red setup.
  8. Build the imported setup, run it, and install it on your host Mac.

Just a clarification that the above uses the “Mode 3” workflow (tip!) as mentioned in the Application Porting Toolkit Whitepaper (using setup capture). If you naively attempted the “Mode 1” workflow (running the UL 3DMark setup directly), you’ll see Wine instantly chokes on the 3DMark installer – making it impossible for us to proceed:

So anyways, now you’re ready to start benchmarking! That wasn’t too bad, was it 😉

What’s interesting here is that not all of the benchmarks work – but most of the newest, DirectX 12 based benchmarks do (tip!).

This is to be expected, since the Apple folk have done a great job with their Game Porting Toolkit in translating DX12 instructions to native macOS calls with their custom patched instance of Wine – kudos!

Also a huge shout out to Gokhan Avkarogullari, who’s behind the GPU team at Apple. Clearly as the benchmarks are about to show, they’ve done a really great job here.

So what do we do next? Since the 3DMark GUI won’t run, let’s dive right into the command line. Open up a Terminal, and type (from any folder you like):

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=firestrike.3dmdef

Let’s decipher that command line. First off, the above example assumes that you created a custom Wine instance named “3dmark kpojluk repack” (tip!) as part of your Application Porting Toolkit flow. If you used the default instance of Wine instead (which also happens to be the default setting of the Application Porting Toolkit), just replace all instances of “3dmark kpojluk repack” found in the command lines we’re going to use with “wine” – while paying attention to retaining the preceding dot, which is part and parcel of the Wine instance path name. So the same command above with that default would look like:

“/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.wine/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=firestrike.3dmdef

And yes, in the default form above, we omitted the WINEPREFIX parameter altogether, as it’s not generally required when working with the default instance of Wine (tip!).

Oh one last important note – be sure to replace /Users/me with whatever your actual user folder name is on your Mac. You can see this by typing “pwd” as soon as you’ve brought Terminal up. It’ll show something like:

/Users/me

If your user folder was indeed called me.

Getting back on track here, as soon as you execute this command, 3DMark stars loading up – first you see a lot of Wine diagnostic text scroll by in your console, and then bingo!

Yes, that was our tear jerker moment here at InstallAware Skunkworks. Call us nerds all you want, we know we are.

Everything from that moment onwards runs nominally, as you would expect. When the run is done, you end up with a file like this:

/Users/me/Documents/3DMark/3DMark-FireStrike-5206-20251027030354.3dmark-result

Since this is the command line after all, you don’t get a nice GUI score. BUT, if you move this file (looks like it’s just a ZIP file after all) to a PC (or your Windows 11 VM provisioned above) with 3DMark installed, you can just double-click it, and view the actual score that was obtained during your run:

Now let’s compare this Fire Strike performance with Parallels itself running 3DMark, on the same M4 Airmax, albeit inside a Windows 11 VM:

Oh wow, will you look at that! We’ve outperformed Parallels by an easy 25%! Again, congrats Gokhan & co!

To be honest I wouldn’t have expected a DX11 benchmark to outperform Parallels GPU virtualization like this. Let’s take a look at some DX12 benchmarks next then, shall we?

Sad is that the “industry standard” Time Spy doesn’t run. But other DX12 benchmarks do! Picking something that we can again compare with Parallels’ performance, let’s go with Night Raid:

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=nightraid.3dmdef

Inside Parallels, with GPU virtualization:

On bare metal (pun intended!), with the Application Porting Toolkit:

That’s…not exactly what we were expecting after the immediate precedent, but the fact that Parallels displayed a black screen (instead of rendered graphics) might have had something to do with it having outperformed Metal on Wine here?

It’s actually pretty cool that we can run more advanced DX12 benchmarks with the Application Porting Toolkit, but NOT on Parallels. Anything that requires ray tracing, for example, is currently a no-go with Parallels. That would ordinarily leave us with Steel Nomad as the only other DX12 comparison point, but Parallels can’t seem to run that at all – not even as a black screen.

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=steelnomad_dx12.3dmdef

Here’s the Steel Nomad score we got with Wine/Metal via the Application Porting Toolkit:

So let’s now check out a few of the higher-end DX12 benchmarks that run through Metal/Wine with the Application Porting Toolkit only.

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=portroyal.3dmdef

Super respectable score at nearly 2,000! You can tell the ray tracing support in the M4 CPU is delivering the goods here.

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=speedway.3dmdef

The lowest score of the DX12 ray tracing bunch happens to be the currently most demanding 3DMark benchmark of all, not surprisingly.

We can even run Intel XeSS, and nVIDIA DLSS feature tests – clearly the Wine/Metal bridge supports those as well (although, no AMD feature sets seem to run successfully). Let’s continue our survey with some screenshots from those tests in action.

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=intelxessft.3dmdef

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=nvidiadlss.3dmdef

Noteworthy to observe here is that these feature tests realize far greater frames per second with their particular optimizations turned off (namely XeSS and DLSS), presumably because those optimizations aren’t available on Apple Silicon.

It is also possible to run GPU vendor agnostic feature tests.

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=apioverhead.3dmdef

The API overhead test produces a couple of black screens – feel free to Force Kill the wine64-preloader process when that happens, to chug things forward (tip!) – but does start rendering when DX12 enters the fray.

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=vrs.3dmdef

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=meshshaderft.3dmdef

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=directxraytracingft.3dmdef

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=samplerfeedbackft.3dmdef

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=pciexpress.3dmdef

Last but not least, we can even test DirectStorage! This test does implode the moment DirectStorage is activated though, leaving us with a generic disk I/O benchmark for macOS – totally worthwhile in its own right.

WINEPREFIX=”/Users/me/.3dmark kpojluk repack” “/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64” “/Users/me/.3dmark kpojluk repack/drive_c/Program Files/UL/3DMark/3DMarkCmd.exe” –definition=directstorageft.3dmdef

That’s about it for all the tests we ran on our last pass 🙂

Be sure to try this out on your own top-of-the-line (or not) Macs, and compare your findings amongst CPU/GPU and device hardware generations 😀

Careful though, the benchmarking bug might just bite you 😉

Contributed By: John Gaver

for InstallAware Skunkworks

NEW! InstallAware’s Application Porting Toolkit

Think Apple’s Game Porting Toolkit, but bigger:

o Run on not just macOS, but also GNU/Linux.
o Port not just games, but line of business apps.
o Zero coding/console required – 100% GUI, guided process.
o Your apps now run on GNU/Linux and macOS, without recompilation!

100% FREE for production use: Simply star our GitHub repository at www.github.com/installaware/iamp, and build it from sources!

Want to see how it’s done? Download our step-by-step guide: www.installaware.com/application-porting-toolkit.pdf

InstallAware Launches Project OS/3

What is Project OS/3 for Linux and macOS?

– A one-click wizard that takes as input any Windows setup, and outputs a Linux and macOS setup.
– This setup pre-installs Wine (graphically, without ever dumping your end-user to the command line).
– It then installs your application on your target instance of Wine, and wraps up creating app shortcuts.

So you basically have a point-and-click workflow to run all your Windows apps on Linux and macOS – today – without so much as a recompile.

How is this different from Wine, which already runs Windows apps on Linux and macOS?

A lot of compatibility problems in Wine arise during the setup process. InstallAware is uniquely equipped to solve this problem:

– InstallAwareStudio Admin X17’s PackageAware ingests your Windows setup into an InstallAware project.
– The Project OS/3 Wizard converts this project to InstallAwareMulti Platform, adding the Wine runtime.
– InstallAwareMulti Platform 2025’s native code setup engine directly injects your app into a Wine layer.

With the declining market share of Windows, now is the time to make your move to Linux and macOS!

InstallAware 2025 Sources Open

Courage is opening up your sources for the whole world to see!

As we continue to develop and support InstallAware 2025, you may now take a peek under the hood – and even take care of a pet peeve or two here or there; to say nothing of actually implementing things we haven’t even dreamed of yet at InstallAware Software.

You get to pick your platform – Linux, macOS, or Windows.

Building from our sources is remarkably straightforward, and we have a thorough readme to guide you every step of the way:


www.github.com/installaware/IAMP

You may compile for 7 different platforms from the same single unified sources:

– Linux x86_64 GTK2
– Linux aarch64 GTK2
– Linux x86_64 Qt5
– Linux aarch64 Qt5
– Apple Intel
– Apple Silicon
– Windows x86

Indeed, courage is hardly removing a headphone jack everybody needs.

Courage is exercising your freedom to self-publish your software, on your own terms, and on all platforms you want to seed!

Welcome to a brave new world!

InstallAware 2025 Shipping Friday

Ever wanted to run existing Windows apps on Linux and/or Mac without having to recompile them?

Easily tap brand new markets using advanced deployment technologies pioneered by InstallAware!

Our biggest update to InstallAware Multi Platform in two years is launching in just five days:

  • Directly recompile existing InstallAware setups as native code Linux and Mac installers in a single click.
  • Install any existing Windows setup, even and especially without its sources, on Linux and Mac – like how we helped Apple with their Game Porting Toolkit on Mac.
  • InstallAware 2025‘s native code setup engine runs without any dependencies on Apple Silicon, Apple Intel, Linux x86_64 and Linux aarch64 – both for GTK2 and Qt5 – so it easily deploys anything, everywhere.

Enjoy pure native code IDEs, debuggers, dialog designers, command line build and localization tools for Linux, or macOS, or Windows.

InstallAware Virtualization 10.0 Ships on Friday This Week

Ever wanted to run Desktop software without having to install it first?

Easily create portable applications with the convenience and advanced technology of InstallAware!

Our first update to InstallAware Virtualization in over 4 years, version 10.0 is fully compatible with Windows 11 24H2:

– Directly build existing InstallAware setups as portable applications in a single click.

– Convert any existing legacy installer, even if you don’t have its sources, to an InstallAware Virtualization project using PackageAware for Virtualization.

Effortless in virtualization also reads InstallAware – just as it does in setups ;)

All licenses include 1 year of maintenance for free major version upgrades throughout your term.

InstallAware X17 Shipping Friday This Week

The time is now!

o Azure Trusted Signing: Sail through security. Confers EV-grade trust. No build breaking dongles (or extensive verifications) required. Maximize your reach and adoption.

o Code Signing Hooks: Inject your custom command lines into the build process any time a signing event would normally occur. Future-proof against any new vendors and standards.

o .NET 9.0.0, 8.0.11, 7.0.20, 6.0.36: All the latest runtimes for your setups. Thoroughly tested scripts on all platforms. Better integration reduces your customer support costs.

o 30% Faster Compression: Your builds are now accelerated with large memory page technology. Spend less time waiting and more time getting results.

o aarch64 Binary Compression: Realize smaller setups with designer algorithms made for new Snapdragon binaries. Save bandwidth, keep users happy with more successful downloads.

o Windows 24H2 Features/Server 2025 Roles: Prep your platforms with ease. Our configuration UI replicates Windows’s own interface, down to the minutest component dependencies.

o 4 GB Compression Dictionary: Enjoy data-deduplication grade space savings across tens of gigabytes of raw data. Save money on hosting costs, land intact on more desktops.

New! InstallAware X17 Coming

Here’s our biggest update to our flagship product in years – coming on December 20th, 2024:

o Azure Trusted Signing grants your packages instant EV-grade trust – without the hassles of a physical dongle, and with the convenience of a DUNS based verification.

o Code Signing Hooks future-proof your process for any future standard and/or vendor – tapping your custom command lines any time a code signing event would normally occur.

o Brand-New Compression Engine with a 4 GB dictionary, and aarch64 executable code filters to improve compressibility.

o 30% Faster Compression even for single core (non-parallelizable workloads); plus native AMD64 and aarch64 processes that run on bare-metal, completely eliminating emulation slowdowns.

o Windows 11 24H2 and Windows Server 2025 support, including fully updated Windows Features and Server Roles definitions for point-and-click host platform configurations.

o Fresh .NET 9.0.0, 8.0.11, 7.0.20, 6.0.36 runtimes, and also a Visual C++ 2015-2024 runtime refresh.

o Get/Set Clipboard, Get File Date/Time, Get/Set Memory Pages commands. New ScrollBox dialog control. Docker and Wine support in the setup engine.

Celebrating Two Decades Together

Convenience is a rare commodity these days.

– Macs inconvenience you with no installer at all: You can’t repair, update, or automatically uninstall your apps.

– Microsoft inconveniences you with having to learn at least three full development stacks just to build MSIX packages!

– Linux inconveniences you with a plethora of incompatible package managers and their package conflicts that can kill your OS.

Our slogan 20 years ago was “Windows Installer without Rocket Science“, because it was literally harder to build your setup than it was to build your app.

20 years later it’s only gotten worse!

– Nobody wants you to be able to directly distribute your own apps, shoehorning you into one proprietary app store or another; where they can yank your apps from under you any second.

– Everybody seems to agree that software installation must be made as complicated as possible, with extensive learning and testing required before even an elementary package may be deployed.

Only InstallAware helps you:

o Retain 100% control over your distribution and sales process, integrating your licesing into your installation workflow any way you like (including technologies such as blockchain activations).

o Ensure 100% success during deployment, thanks to Native Code Setup Engines which run without any dependencies on Windows, macOS (Apple Silicon & Intel), and Linux (GTK2, Qt5, and Console/Text Mode only).

o Secure 100% of your bits to be sourced from your main setup payload, ordinary web servers, private networks, or even decentralized (BitTorrent) – whilst giving you complete freedom in choosing what goes where.

o Author 100% of your setups using an intuitive, human readable, runtime-decision-making setup script – which gets compiled into three operating systems, three CPU architectures, and a growing number of package formats.

o Shrink 100% of your data using both the fastest and the most effective data compression technology available – from a parallel build engine using all your CPU cores, to single-core acceleration of non-parallelizable workloads.

o Update 100% of your apps, delivering tightly optimized binary-differential-patches (or full version upgrades) that are targeted by your business logic/product edition/language; with an update client that is written in InstallAware itself.

InstallAware has been called “the convenience of obviousness” by one of our favorite clients. Reward yourself with this simplicity today.