For a Windows application that does lots of complex or 3D graphics, there are two popular Windows APIs used by the developers of these applications: DirectX or OpenGL. Together with the graphics card in your Mac, these APIs determine the performance of these applications in a Windows VM running in Parallels Desktop® for Mac.
Since so many Windows CAD/CAM applications and Windows games use DirectX or OpenGL, we try to improve support for these two APIs in almost every Parallels Desktop major release. I focused on OpenGL in an earlier blog post, and here I will focus on DirectX.
First a little background:
“Microsoft DirectX is a collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound, and so forth. The name DirectX was coined as a shorthand term for all of these APIs (the X standing in for the particular API names) and soon became the name of the collection. …
“Direct3D (the 3D graphics API within DirectX) is widely used in the development of video games for Microsoft Windows and the Xbox line of consoles. Direct3D is also used by other software applications for visualization and graphics tasks such as CAD/CAM engineering. As Direct3D is the most widely publicized component of DirectX, it is common to see the names “DirectX” and “Direct3D” used interchangeably.”
There is a fascinating book about the behind-the-scenes story of the development of DirectX: “Renegades of the Empire: How Three Software Warriors Started a Revolution Behind the Walls of Fortress Microsoft” (Michael Drummond, Crown Publishers, 1999). DirectX is widely credited with being the single most important reason that Windows became the dominate gaming platform (prior to consoles like Xbox and PlayStation).
You might be wondering about DirectX versions. While there have been versions from 1.0 (in 1995) to 12.0 (in 2015), the only versions really in use today are 10, 11, and 12. Typically, DirectX versions are tied to a particular Windows release. DirectX 10 was in Windows Vista (or later), DirectX 11 in Windows 7 (or later), and DirectX 12 in Windows 10. A game written with DirectX 10, for example, will usually run in a version of Windows later than Vista.
Here are some of the games for DirectX 10, Direct X 11, and Direct X 12:
Parallels Desktop and DirectX Versions
DirectX 10 is enabled by default in Parallels Desktop 13. (This includes DirectX 9 support, too.) There is a DirectX setting you want to use in the Configuration dialog for your VM, but this is primarily used for troubleshooting. (See figure 1.) As you can see, the DirectX versions supported are 9 and 10. There is no option for DirectX 11.
Why isn’t DirectX 11 supported in Parallels Desktop?
One of the mandatory DX11 features is called “compute shaders.” The name “shaders” usually refers to graphical functions that calculate the appropriate color and brightness for an image, but “compute shaders” are quite different. Compute shaders help the programmer to more easily take full advantage of the many processors on today’s graphics cards, primarily by broadening shader capabilities beyond pure graphics to more general calculations, which can be done on a graphics chip.
Parallels implements DirectX emulation by translating it to the equivalent OpenGL function, since OpenGL is implemented in the macOS®. Unfortunately, the version of OpenGL in the macOS does not have compute shaders. There is nothing for Parallels Desktop to map DirectX shaders to in the OpenGL framework in the macOS.
The macOS does support another style of compute shaders in the OpenCL framework. (Don’t let the similarity in the names “OpenGL” and “OpenCL” make you think they’re similar. They aren’t. In fact, they are competing “standards.”) Unfortunately, however, OpenCL on Mac isn’t as robust and doesn’t cooperate well with OpenGL.
Besides compute shaders, there are other features missing in OpenGL on macOS, which means there are additional “feature parity holes” with DirectX. There’s simply not enough functionality to translate DX11 to in the functions available in the macOS.
Apple® started pushing its own Metal API recently, which is universal for Mac computers. Only time will tell if Metal will give the Parallels Desktop programmers what they need to support DirectX 11. Stay tuned, but don’t get your hopes up for any major change in the near future.
I wish I could tell you that Parallels Desktop can magically turn your four-year-old MacBook Air® into a high-end PC gaming rig with a $3000, liquid-cooled graphics card, but that is never going to happen.
Parallels Desktop can enable your Mac to run most Windows applications, some games, and some CAD/CAM applications. But this comes at a cost. The more demanding applications you run in a VM, the more resources (CPUs and memory) that VM should be assigned—and the more powerful your Mac should be. The more graphics performance you expect, the more powerful the graphics card (or graphics processor GPU) in your Mac needs to be. Also keep in mind that graphics in Mac computers are predominantly integrated; only more expensive models sport discreet chips. Overall, Mac GPUs are low to middle range by Windows PC standards.
The hard work of the Parallels engineering team has resulted in a number of successes with Windows applications using DirectX. In particular, the DirectX work included in Parallels Desktop 13 resulted in some new applications running quite well in Parallels Desktop. Here are some videos of these successes, and a list of other DirectX applications that work well with Parallels Desktop 13.
Overwatch, a first-person shooter from Blizzard – Here is a short video of an Overwatch game session playing in Parallels Desktop 13 on a Mac. (See video 1.) There have also been other blog posts here about Overwatch.
Batman: Arkham Origins, an action adventure game from WB Games Montréal – Here is a shortened video of a Batman: Arkham Origins game session playing in Parallels Desktop 13 on a Mac. (See video 2.) You can see the entire session at full resolution (1920 x 1080, 954 MB) here.
Crysis 3, a first-person shooter from Crytek – Here is a shortened video of a Crysis 3 game session playing in Parallels Desktop 13 on a Mac. (See video 3.) The fact that Crysis 3 plays so well in Parallels Desktop 13 is a nice surprise, since Crysis 3 requires Direct X 11. Although Parallels Desktop 13 doesn’t support DX11, this particular game works. You can see the entire session at full resolution (1920 x 1080, 1.37 GB) here.
Predicting the Performance of a DirectX Application
Unfortunately, there is no easy way to predict whether a particular Windows DirectX game or application will work well in Parallels Desktop. If you are already a Parallels Desktop customer, just try it.
If you are not yet a Parallels Desktop customer, we have a trial version that you can download and install. You can also get Windows 10 installed in Parallels Desktop 13 at no charge. So try out the application or game you are interested in and see if it meets your performance needs. If it does, great! You can then purchase both Parallels Desktop and Windows to use that application. If it does not, you haven’t spent any money.
In addition, we have a forum thread where people add the DirectX applications that they would like to see supported.
I hope this blog post explains the DirectX support in Parallels Desktop 13. Please let us know in the comments about your experiences with the performance of Windows applications in Parallels Desktop 13.
Want to try DirectX applications with Parallels Desktop 13? Download a free 14-day trial!