Reland "Use saveLayer-determined CT in SkGpuDevice::onCreateDevice"

This reverts commit 80c1f093cd0e1deb43312aab736294b1b8218aff.

Updated make_layer_info to avoid swizzling when the previous layer
was either version of 8888. Fixes all of the ANGLE MSAA failures.

Change-Id: Iedd410988882f3dce05bb5ec18bcd84363e3591a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243041
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 968a95d..48c9f62 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1047,7 +1047,9 @@
 
 static SkImageInfo make_layer_info(const SkImageInfo& prev, int w, int h, const SkPaint* paint) {
     SkColorType ct = prev.colorType();
-    if (prev.bytesPerPixel() <= 4) {
+    if (prev.bytesPerPixel() <= 4 &&
+        prev.colorType() != kRGBA_8888_SkColorType &&
+        prev.colorType() != kBGRA_8888_SkColorType) {
         // "Upgrade" A8, G8, 565, 4444, 1010102, 101010x, and 888x to 8888,
         // ensuring plenty of alpha bits for the layer, perhaps losing some color bits in return.
         ct = kN32_SkColorType;