- I want to know how Parallels Desktop© for Mac uses Mac video card resources.
- I have a Mac Pro with two video cards working via AMD Crossfire™ or NVIDIA SLI technology, can I use both cards in my virtual machine?
Working with One Discrete Graphic Card
Guest OSes in Parallels Desktop have no access to physical graphics cards present in a Mac. Instead, Parallels Display Adapter driver (which is part of Parallels Tools installation) interfaces with virtual hardware and provides 3D acceleration features. The actual acceleration is achieved by translating DirectX commands from the guest to OpenGL API on OS X side.
The main purpose of Crossfire (by ATI/AMD) and SLI (by NVIDIA) technologies is to unify pair of 3D accelerators in the sake of increased performance. That way applications keep using standard API (OpenGL or DirectX) and the driver splits tasks between two physical video cards. It is rather a simplicity, because some tasks may be split more efficiently than others. It is explained more precisely in specific guidelines for developers. However, the main point is still there – it is driver’s work to split tasks between video cards, as only driver can optimize input data for video cards, synchronize card’s work and only it has required data regarding technical specifications.
This is the reason why Mac OS X is not supporting Crossfire, nor the SLI. Not on modern Macs, nor the old ones. Why Mac OS X and not the driver? Because contrary to Windows, where drivers belong to vendors, in Mac OS X, drivers belong to Apple (even though developed in collaboration with vendors) and features are controlled by Apple as well. That, basically, means that Mac OS X and it’s drivers can be considered as the one, hence cannot be split. That is why Mac OS X applications consider two video cards working in tandem as two separate video cards. And it is up to these applications to somehow split tasks between two cards, or just use one instead.
In Parallels Desktop we use only one video card, the one main display is connected to (in new Mac Pro second video processor is “blind” by default, means it is only good for background calculations).
Since our video card is virtual and relatively high-level (we do not work with hardware directly, but via API or OpenGL instead), it is not possible to effectively split tasks between two video cards as we are not emulating SLI/Crossfire. In theory (just in theory!) we could map both video cards to guest OS and somehow allow applications to use it. But there is no practical need for that as there is very tiny amount of peculiar Windows applications that could utilize two cards (because it is much more complicated process than SLI/Crossfire).
Switching Between Integrated and Discrete Video Adapter
Switching between integrated and discrete video cards is pretty simple – the main thing is to send appropriate parameters when creating an OpenGL context (and react to switching events by recreating contexts), there is nothing else we do ‘manually’. Please note that this technology has no similarities with SLI/Crossfire whatsoever.
To switch between the adapters, go to virtual machine configuration window -> Options -> Optimization - Power
- For integrated graphics (CPU) set 'Longer battery life'
- For discrete video card set 'Better performance'