Refactor GrCaps::renderTargetWritePixelsSupported to support for some GL workarounds

Make indirect path in writeSurfacePixels2 use a copy rather than a draw.

Fix issue in GrVkGpu where render target dirty region is not updated after copy-as-draw

Remove unnecessary resolve of MSAA RT in GrVkCopyManager.

Splits WritePixelsNonTexture_Gpu test into MSAA and non-MSAA variants. MSAA variant blacklisted
on Adreno because of:

Bug: skia:7663

~~~~~~AND~~~~~~~

Revert "Suppress CopySurface test on Nexus 7"

This reverts commit b42b6169d52408a1712c2740655300465cd6ff1e.

Bug: skia:7658
Change-Id: I8337d718efb41e266537744bbf5ff8b1545322a7
Reviewed-on: https://skia-review.googlesource.com/110700
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 5b3d664..c61a6c1 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -1054,10 +1054,7 @@
         return false;
     }
 
-    auto dstRTProxy = dstProxy->asRenderTargetProxy();
-    if (dstRTProxy &&
-        !fContext->caps()->renderTargetWritePixelsSupported(SkToBool(dstProxy->asTextureProxy()),
-                                                            dstRTProxy->numColorSamples())) {
+    if (!fContext->caps()->surfaceSupportsWritePixels(dstSurface)) {
         GrSurfaceDesc desc;
         desc.fConfig = dstProxy->config();
         desc.fWidth = width;
@@ -1078,14 +1075,7 @@
                                        srcColorSpace, buffer, rowBytes, pixelOpsFlags)) {
             return false;
         }
-        GrPaint paint;
-        paint.setAllowSRGBInputs(true);
-        paint.addColorTextureProcessor(std::move(tempProxy), SkMatrix::I());
-        paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
-        dst->asRenderTargetContext()->drawRect(GrNoClip(), std::move(paint), GrAA::kNo,
-                                               SkMatrix::MakeTrans(left, top),
-                                               SkRect::MakeIWH(width, height));
-        return true;
+        return dst->copy(tempProxy.get(), SkIRect::MakeWH(width, height), {left, top});
     }
 
     // TODO: Make GrSurfaceContext know its alpha type and pass src buffer's alpha type.