The solution, if you can call it that, seems to be to disable the discrete card completely. I was constantly getting these errors, and then wound up following these instructions:
http://apple.stackexchange.com/questions/128180/how-to-disable-discrete-graphics -card-and-use-only-integrated-graphics-macbook-p
As a result, I now can't play games on the OSX side, but haven't had any issues for a month. Previously I had to wrap it in a towel and overheat it almost half the time I went to wake it up..
For those who think this is a hardware issue, I offer the following observations:
- This only happens on Yosemite, not Windows, even when playing GPU-heavy games and switching back to Aero.
- Temperature seems to have zero effect on frequency of occurrence, though deliberate overheating can be used to force the discrete card to be turned off, and to allow the system to start. Hardware problems with GPUs would normally exhibit some kind of temperature relationship.
- In this case the glitch causes overheating, but is not affected by it. During the fault, the CPU/GPU fan goes nuts and the system heats up a lot. The only software condition I can imagine to cause this is a hung loop of some kind.
So why does replacing the logic board work? Probably because this also involves changing the version and firmware of the GPUs. As a side note, it also seems pretty evident that the problem is not with the discrete card. It's probably the integrated card driver that has the flaw; note that this issue occurs on both ATI and nVidia systems, and in both cases the artifacting -- when it occurs -- is identical. The only shared features between those two cases is the OS and Intel HD card and driver. Perhaps someone with more time than me could swap in the Intel driver from Mavericks... just a guess.
gfxcardstatus doesn't help solve the problem, but it did help me get a sense of exactly how frequently the OS changes from card to card. Triggers include:
- Any Java application.
- Flash on web pages (you can disable hardware acceleration in Flash to prevent this). In fact, the graphics card switches each time you alt-tab into the browser and hit a flash-enabled page.
- WebGL pages.
- Some native apps that aren't written well (Coda 2 and Transmit used the 3D GPU, but this has been recently resolved)
It's really remarkable, too, how much of an effect this has on the battery. My laptop can run for a noticeably longer period of time now that the discrete card is disabled.