Wowza, what a doozy, I think I finally got it. So after upgrading to the latest Spine unity version (3.6) and walking back on my commits (commit per commit with an android build per commit), I was able to identify the root cause.
I had manually inserted my code optimization I had suggested in the forums (back in august - Using Graphics.CopyTexture vs. Texture2D.ReadPixels) in regarding Graphics.CopyTexture - it saved GC calls for PMA textures. I kept this in this build to test my whole implementation (this optimization wasn't in 3.6 and looks like it is slated for 3.7) .
However, for non-PMA textures on Android (which we swapped to), it was causing the grey images. When I comment out this optimization, I no longer get grey images. The following is the code snippet:
if (SystemInfo.copyTextureSupport == UnityEngine.Rendering.CopyTextureSupport.None)
{
//High GC calls here
Color[] pixelBuffer = sourceTexture.GetPixels((int)r.x, (int)r.y, width, height);
output.SetPixels(pixelBuffer);
} else {
Graphics.CopyTexture(sourceTexture, 0, 0, (int)r.x, (int)r.y, width, height, output, 0, 0, 0, 0);
}
Github commit: [unity] Handle varying CopyTexture support.@b4db3b2
Not entirely sure what causes it, but it only happens on non-PMA textures, as the PMA textures we see the performance savings. But phew, glad to have caught this before it affected anyone else.