Windows – Preventing Windows 7 from automatically switching Aero off

aeroremote desktopwindows 7

I'm using UltraVNC to remote desktop onto a Windows 7 box (it allows you to keep Aero turned on whilst doing remote desktop, whereas Windows' RDP does not). However, for some reason this seems to cause Windows to think lots of memory is being used by Aero. After a while of being logged in, I usually get the following message:

enter image description here

Upon clicking on this popup, I get the following warning dialog (and the help dialog if I click on the help link at the bottom):

enter image description here

If I elect to keep the current color scheme, I will quite soon after get the following message:

enter image description here

And clicking on this produces the following help dialog:

enter image description here

I know Windows thinks it's doing me a favour here, and performance is quite slow when I'm in remote desktop and Aero is turned on. However, I specifically want to keep Aero on because I'm testing how some stuff looks with Aero turned on. Is there any way to tell Windows, "leave Aero on no matter what the performance hit"? Even a registry setting or something? I haven't found any way to stop Windows from turning Aero off automatically.

Best Answer

There is a good reason for this. Aero uses a lot of alpha blending, which needs hardware acceleration to be performant. Even without a dedicated graphics card, the onboard graphics can process the layers much much quicker. Unfortunately, what that means is that the screen buffer gets handed over to the graphics chip, and the OS never sees the final rendered frames. If they're just being sent to the monitor, that's fine, but Aero depends to a certain extent on hardware acceleration. When VNC tries to run with Aero, it will have to kill some of the hardware acceleration and force the CPU to do rendering, so it can capture the screen state. This unfortunately can force Aero out.

I work for RealVNC, and we use a mirror driver to help address this somewhat by grabbing the draw commands before they're sent to the chip for compositing, and hold our own buffer. I know that UltraVNC uses a mirror driver too in some way, but I've not looked into their implementation. You could try ours! I suspect if the performance is just too low, there might not be a way to force Windows to do compositing and blending on the CPU.

Related Question