We don't do gamma correction for any guest OS, Windows included.
Hm, this would imply that Windows on Fusion looks "washed out" (too little contrast). Is this true? If it isn't, there must be a gamma adjustment
somewhere in the chain of layers between Windows and the Mac OS X display driver.
This behaviour is the same as if you were to run Boot
Camp, or if you were to plug an Apple monitor into a
white-box machine running Openstep. In either case,
you'd have to configure your operating system's gamma
to match that of your actual display device.
I'm by no means an expert on this, but I don't think this is correct.
AFAIK gamma is
not a property of the physical display, but rather of the operating system (specifically, its display drivers). Otherwise, there would be "Mac monitors" and "PC monitors" which just isn't the case. Take any monitor, connect it to a Mac, and images created for gamma 1.8 will look correct. Take the same monitor, connect it to a PC, and images created for gamma 2.2 will look correct.
Therefore, the behavior is
not the same as if I was to run Boot Camp, because with Boot Camp, the physical display is directly addressed by the Windows display driver. If Windows runs in Fusion, the Windows display driver actually communicates with the virtual machine which communicates with Mac OS X which communicates with the Mac OS X display driver which addresses the physical display. If Windows still looks correct (identical to Windows running in Boot Camp) although in Mac OS X, System Preferences > Displays > Color is calibrated to use gamma 1.8 (the default), then somewhere in this chain there
must be an adjustment of the Windows gamma to the Mac gamma.
A simple proof that the virtual machine has to deal with the gamma of the host OS (and does not bypass it) is that if you change the gamma of the host OS, the colors of the guest OS inside the virtual machine are affected correspondingly. Specifically, if I start OPENSTEP in Fusion and then in Mac OS X, go to System Preferences > Displays > Color > Calibrate... and change gamma from 1.8 to 1.4, OPENSTEP (which uses 1.8) looks correct (whereas Mac OS X looks washed out, of course). So clearly, Fusion adds a gamma of 0.4 to the gamma of Mac OS X for the guest OS. This is a reasonable default since Mac OS X defaults to 1.8 while most (if not all) guest OSes you officially support will default to 2.2.
However, things will not always be this way. There might be guest OSes which use 1.8 (such as OPENSTEP), and some users might use Mac OS X with 2.2 (e.g. web developers who want to see images displayed with the Windows gamma). In both cases, Fusion's hard-coded addition of a 0.4 gamma will fail. So there really should be a gamma calibration for the virtual display.
It would certainly be possible for us to provide an
optional gamma adjustment, but I suspect the vast
majority of users wouldn't want us touching the value
of the pixels coming out of their VMs.
Problem is, obviously they
aretouched now.
Any gamma
correction applied at the virtualization level would
be lossy, since we have to deal with 8-bit colors on
the input and the output side.
I just tried to demonstrate that a conversion already takes place currently, so the situation could probably only get better. Also, I'm not sure the conversion would necessarily have to be lossy. I don't know how you interact with the Mac OS X graphics system, but if you could use ColorSync, you could probably just tell Mac OS X which gamma to use for the visual data you deliver, instead of doing any conversion yourself.
One possible approach would be for us to add support
to VMware Tools for passing through color profiles
from the host's monitor to the guest. This would let
the guest do its own (more accurate) color
management, and it would allow the guest to
automatically switch color profiles when the VM is
moved between different hosts or different monitors.
Apart from the fact that this wouldn't help for cases like OPENSTEP (you don't provide VMWare Tools for OPENSTEP, and OPENSTEP has no color management), I would think that this is possibly unnecessarily complicated. If possible, it should be simpler to just let ColorSync (in the case of Fusion) do the work of adapting the data from the virtual machine (that, depending on a virtual machine setting, come with 1.8 or 2.2) to the gamma Mac OS X uses.