All of my machines are Macs (Mac Pro, MacBook Pro, MacBook Air and Mac Mini (and Apple TV 2.0 too! :) ) but for my day-job, I develop .NET/WPF applications. Normally I just boot into Boot Camp and develop that way, which of course works great, but there are times when I need to simultaneously get to things on my Mac-side of the equation, so I've bought both VMware 3.1 and Parallels 6. Both work, however, even on my Mac Pro where I paid to upgrade to the better video cards (the NVidia 8600s I think vs. the stock ATI cards) the WPF performance bites!!

Now this confuses me since both boast that they support not only hardware-accelerated OpenGL 2.1, but also hardware-accelerated DirectX 9 (VMware even allegedly supports DirectX 10!) via their respective virtual drivers and both can run 3D games just fine, even in a window. But even the simple act of resizing a WPF window that has a tiled background results in some HIDEOUS repainting and resizing behaviors. It's damn near closer to what you'd expect over RDP let alone a software-only renderer (forget accelerated hardware completely!)

So... can anyone please tell me WTF WPF is doing differently? More importantly, how can I speed up the WPF performance? Should I switch to VirtualBox that also has support for DirectX? Or am I just gonna have to 'byte' the bullet (sorry... had to. So I like puns! Thank Jon Stewart!) and continue using Boot Camp?

  • 1
    Try using VirtualBox and see what the performance is like. Apr 1, 2011 at 4:37
  • 4
    WPF uses DirectX, as such it needs hardware acceleration for the best performance which VMs don't commonly support or virtualize.
    – BoltClock
    Apr 1, 2011 at 4:55
  • Anyway, just use Boot Camp. I've never been a big fan of virtualizing an OS in a different OS.
    – BoltClock
    Apr 1, 2011 at 4:57
  • I always have problems with WPF performance in virtual machines when trying to do fancy effects. And that is running dual core i7, 8gb memory and 120GB SSD using VirtualBox.
    – Dave White
    Apr 1, 2011 at 5:19
  • @BoltClock, As I said above, and as is heavily advertised by both VMware and Parallels, they do support DirectX. And if I were just going to use Boot Camp, I wouldn't have asked the question. As I said, I need to use OS X stuff at the same time. Apr 1, 2011 at 6:21

4 Answers 4


I know for a fact VMWare has certain extensions, or drivers, that you can install to increase performance; try those. As an extensive user of VMs myself, their performance can't match native speeds; just get used to it. I tried programming in VMs, then I got sick of it and got another computer, one for Windows, one for Linux.

  • I believe you're referring to the drivers for the VM. That's true of any modern VM. What I don't get is 3D apps run just fine using those drivers, but simple WPF apps perform extremely choppy. I'm starting to find it's more MS's horrible implementation of WPF rendering more so than the client or drivers its running on. The WPF Deep Dive article shows just what a mess it actually is. Jan 16, 2012 at 5:54
  • 1
    As much as I hate to say this, the best solution is to get a computer with windows on it. Otherwise, if you can RDP into your box at work, that would be another fantastic solution.
    – Alec
    Jan 16, 2012 at 13:42
  • RDP's performance is atrocious with WPF. And while it would be great to get another machine, I'm asking what's the best virtual solution (i.e. product and settings) since that's what I have to work with. Thanks though. Jan 16, 2012 at 15:07
  • Unfortunately, I think you're just gonna have to continue using Boot Camp
    – Alec
    Jan 19, 2012 at 15:40
  • Boot Camp isn't an option as I need to be booted into the Mac at the same time, hence the posting here about a VM. Thanks anyway. Jan 21, 2012 at 0:19

Try this !!

Install and play any one of the latest PC games (Call of duty, NFS, etc) on your VM, since almost all PC games makes use of DirectX. These games are the perfect test for your hardware and underlying software as-well.

If the game play experience was not good, then there should be some problem with VMWare/hardware. If not, then it might likely to be problem with WPF itself. I remember reading somewhere that WPF is having few known performance issue under Citrix environment. hence there is chance that the problem you are facing might be related to that as well.

  • @PrinceCoder, I don't have any PC-games that I can install since I'm not a gamer. BUT... this is an 8-core Mac Pro with 16GB of RAM and 2 higher-end NVidia cards (much better performance than the stock ATIs) and everything is (or was when I bought this 2 yrs back) top of the line. When I'm booted in Boot Camp, it's smooth as glass even on quad monitors. The Mac side too is smooth as glass... except for Windows running in a VM. I have the latest VMware and Parallels drivers to so I know it's not that either. Not sure what it is, but it seems I'm not alone in having this issue and it bites. Apr 1, 2011 at 17:37
  • 1
    @MarqueIV Some recent(ish) games, e.g. America's Army, are free.
    – Daniel Beck
    May 25, 2011 at 6:36

I think there's a fundamental misunderstanding of VM technology here. A VM can never completely pass through information to physical hardware without a layer in between. When you're 'running' DX applications, they're getting run on a virtual video card, that, if you're lucky is having its output accelerated by hardware(so direct X -> virtual video card -> opengl-> actual video card), or if you're unlucky, software emulated (in which case everything runs on the CPU, which, naturally dosen't excel at such tasks- else we wouldn't need graphics cards).

In short, your fancy hardware isn't doing anything with respect to what's in the VM.Dualbooting is really the only way to make use of your video cards.

  • Re: "In short, your fancy hardware isn't doing anything with respect to what's in the VM" -- If that were true (which it isn't as they explicitly tout hardware acceleration) then 3D games would fall flat on their face as a software-only implementation would completely choke them. Yet they play quite well, even in a window specifically because they are hardware accelerated. Again, it's just WPF that's causing performance issues. My guess is WPF is doing something different than just pure DX or else it should work. Apr 3, 2011 at 14:33
  • I think I found what the issue is... it seems WPF is still doing way too much related to the CPU so when virtualized, even though the 3D portions are passed to the accelerated hardware, the locking and syncing between the CPU and GPU, when virtualized, just kill performance. In short, doesn't look like there will ever be a solution until they 'fix' WPF. jeremiahmorrill.com/2011/02/14/… Jun 19, 2011 at 0:21

I've been a software developer for 27 years. (Yes, back when it was just text and color ascii characters...)

Today I'm a Sr. developer for Windows/Web/Mac, and do my primary coding on a MacBook pro (with two external monitors- DVI and USB).

While I do 95% of my WINDOWS coding (.NET) through Windows 7 on Fusion (VMWare). I still have a 100GB partition with BootCamp.

By BootCamp? You already know why, because you can't get full video performance through a VM/emulator.

Oh and BIG TIP --- Don't launch your Windows 7 BootCamp through Fusion, even though they say you can. Actually it'll foobar the Windows 7 license, and you'll be calling Microsoft to re-register (because it'll tell you it's an illegal copy of Windows...)

  • I use my Win7 64-bit Boot Camp partition with VMware or Parallels regularly without issue. Yes, you have to re-register Windows, but you only have to do that one time, and MS will activate it without issue. Also, while yes, you can't get full video performance in virtual, you can get a really decent framerate with DirectX 3D games so there is no reason something as simple as a scrolling list or a slide animation in WPF should bite the dirt so hard. That's just a poor implementation. May 23, 2012 at 19:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.