OpenGL and Parallels Desktop 13

0
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someonePrint this pagePin on PinterestShare on TumblrBuffer this pageShare on RedditShare on StumbleUpon

Every Parallels Desktop® for Mac user wants their Windows applications to run as fast as possible. There are many factors that contribute to the overall speed of a Windows application running in a Parallels Desktop virtual machine: the speed of the processor in your Mac®, the speed of the hard disk or SSD in your Mac, the macOS® you’re running Parallels Desktop in, the Windows OS installed in your VM, the amount of RAM you have allocated to the running VM*, and many more.

For a Windows application that does lots of complex or 3D graphics, we can add two other factors: the performance of the graphics card in your Mac, and the Windows graphics library that the application uses—DirectX or OpenGL.

Many Windows CAD/CAM applications and Windows games use DirectX or OpenGL. In almost every major release of Parallels Desktop, we try to improve the support for these two libraries. In this blog post, I will focus on OpenGL.

OpenGL

First, a little background:

Open Graphics Library (OpenGL) is a cross-languagecross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.”

OpenGL is used “extensively in the fields of computer-aided design (CAD), virtual realityscientific visualization, information visualization, flight simulation, and video games.”

Wikipedia

Windows applications that use OpenGL include Adobe After Effects, Adobe Photoshop, Adobe Premiere Pro, Autodesk AutoCAD, Google SketchUp, and so many games that they can’t be listed here.

Setting Expectations

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 $3,000 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.

Success Stories

The hard work of the Parallels engineering team has resulted in a number of successes with Windows applications using OpenGL 3.2. In particular, the OpenGL 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 OpenGL applications that work well with Parallels Desktop 13.

glView – An OpenGL benchmarking application. See Video 1. Also check out the following section on OpenGL Versions so that you can better understand the results of the benchmarking shown at the end of the video.

Video 1

DIALux evo – The de-facto standard in the professional lighting design industry. See Video 2.

Video 2

Wolfenstein: The Old Blood – A very popular first-person shooter from Bethesda Softworks. Here is a shortened video of a Wolfenstein: The Old Blood game session, playing in Parallels Desktop 13 on a Mac. See Video 3. You can see the entire session at full resolution (1920 x 1080, 1.06GB) here.

Video 3

Here are some additional OpenGL applications that work well:

  • Rage (2011)
  • Wolfenstein: The New Order (2014)
  • Unigine Heaven and Valley Benchmark
  • Minecraft
  • CATIA
  • Solidworks
  • Northgard
  • Rhinoceros 5
  • Navisworks 2017
  • ARCHICAD 20
  • Solid Edge
  • The Quake series (Quake, Quake II, Enemy Territory: Quake Wars, and more.)

OpenGL Versions

You might be wondering about OpenGL versions. OpenGL has a more complex versioning than most other software standards. For example, it would be quite reasonable to think if an application requires OpenGL 3 and the OS supports OpenGL 4, then the application will work just fine. But for OpenGL, it is not so simple.

In addition, you might have noticed that macOS supports OpenGL 4.1, but Parallels Desktop 13 only support OpenGL 3.2. Why doesn’t Parallels support OpenGL 4.1 in Windows? To add to the confusion, even some OpenGL 3.x Windows applications don’t work in Parallel Desktop 13.

In OpenGL 3.0, many OpenGL 2 or earlier functions were marked as deprecated and then removed completely in OpenGL 3.1. At that time, an additional versioning dimension called “Core/Compatibility profile” was introduced to OpenGL. The Core profile made deprecated functions unavailable, while the Compatibility profile kept them working. In general, GPU vendors supported the Compatibility profile in their drivers for Windows so that more older applications would work. In contrast, Apple chose to support only the Core profile in macOS.

Imagine a developer who has some Windows application created using OpenGL 2.1. Then the developer wants to use some new function from OpenGL 3.x. Now the developer will have to rewrite a lot of legacy code to stop using deprecated functions that are not available anymore. Nobody wants to do it (or at least do it gradually). So here comes a solution: the Compatibility profile.

If you’re developing a new application/engine from scratch, you could start with the Core profile. If you’re improving an old one, Compatibility profile is a better choice. That’s the reason why almost all OpenGL applications for Windows use Compatibility profile.

The Parallels virtualized graphics rely on OpenGL in macOS to actually do the work on GPU. The VM basically mirrors API calls made in Windows to macOS calls. (The actual process is slightly more complicated.) Since OpenGL 3.x deprecated functions are not available in macOS, Parallels has nothing to map these older functions to in the macOS. As a consequence, Parallels Desktop uses the Core Profile.

At the moment, Parallels supports OpenGL 3.2 Core Profile, and for some (highly conservative) applications it can do OpenGL 3.2 Compatibility Profile.

Predicting the Performance of an OpenGL Application

Unfortunately, there is no easy way to predict whether a particular Windows OpenGL 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 of Parallels Desktop 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’re 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 doesn’t, you have not spent any money.

In addition, we have a forum thread where people add the OpenGL applications that they would like to see supported.

Please let us know in the comments about your experiences with the performance of Windows applications in Parallels Desktop 13.

Want to try OpenGL applications with Parallels Desktop 13? Download a free 14-day trial!

 

*Concerning RAM, more is not always better, as is commonly thought. When a customer allocates too much RAM to Windows, the Mac can be “starved” for memory, and then everything on the Mac struggles and runs slowly, including Mac applications and Windows applications running in Parallels Desktop.

Kurt has been a Mac developer since before the Mac came out. Today he is the Senior Product Manager at Parallels where he works on both Parallels Desktop for Mac and Parallels Access. Prior to Parallels, he was the Senior Mac Evangelist in the Macintosh Business Unit (MacBU) at Microsoft Corp. Kurt is the author of three books and has lectured internationally on object-oriented programming, UI design, and virtualization. Kurt is also a Microsoft Office for Mac and iOS Accredited Support Professional for 2014 and 2015. Outside of work, Kurt has been a fencer for many years, has four times been a member of the US team at the world championships, and has also been the coach of the US team.