Fix BGRA/RGBA readback conversions on mac

Reading back from a BGRA framebuffer as RGBA or vis-versa is slow on mac. On my early 2013 MBP, we see a 40% regression when using
the discrete GPU or a 13% regression on integrated.

This change adds a workaround which causes Mac to use the existing Mesa path and prefer readback from the same format as the
framebuffer.

BUG=581311
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1786813002

Review URL: https://codereview.chromium.org/1786813002
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index dfcde60..4088535 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -51,6 +51,7 @@
     fRGBA8888PixelsOpsAreSlow = false;
     fPartialFBOReadIsSlow = false;
     fMipMapLevelAndLodControlSupport = false;
+    fRGBAToBGRAReadbackConversionsAreSlow = false;
 
     fBlitFramebufferSupport = kNone_BlitFramebufferSupport;
 
@@ -253,6 +254,16 @@
     fPartialFBOReadIsSlow = isANGLE;
 #endif
 
+    bool isMESA = kMesa_GrGLDriver == ctxInfo.driver();
+    bool isMAC = false;
+#ifdef SK_BUILD_FOR_MAC
+    isMAC = true;
+#endif
+
+    // Both mesa and mac have reduced performance if reading back an RGBA framebuffer as BGRA or
+    // vis-versa.
+    fRGBAToBGRAReadbackConversionsAreSlow = isMESA || isMAC;
+
     /**************************************************************************
     * GrShaderCaps fields
     **************************************************************************/
@@ -1077,6 +1088,8 @@
     r.appendf("Bind uniform location support: %s\n", (fBindUniformLocationSupport ? "YES" : "NO"));
     r.appendf("Rectangle texture support: %s\n", (fRectangleTextureSupport? "YES" : "NO"));
     r.appendf("Texture swizzle support: %s\n", (fTextureSwizzleSupport ? "YES" : "NO"));
+    r.appendf("BGRA to RGBA readback conversions are slow: %s\n", 
+              (fRGBAToBGRAReadbackConversionsAreSlow ? "YES" : "NO"));
 
     r.append("Configs\n-------\n");
     for (int i = 0; i < kGrPixelConfigCnt; ++i) {