After calling, for example, glColorMask(true, false, false, true) on a Radeon 7000, the green and blue channels are being overwritten with black. That is, rather than the new fragments being [SRC_red, DEST_green, DEST_blue] like it should be, it ends up as [SRC_red, 0, 0]. The only glColorMask settings which appear to work correctly are (true, true, true, true) and (false, false, false, true).
(If it's important, I'm doing cheap colored stereo pairs by rendering the scene twice, once with the mask set to red and once with the mask set to cyan. This works correctly in software Mesa, but in hardware on the Radeon it fails.)