Revert "Revert "Disable GL buffer mapping on TSAN/Mac.""

This reverts commit 4e7cdd5a0052aa76bed6f80ec325be19e09e6ab1.

Bug: skia:7058
Change-Id: I3b92c35835cf7a8c04e9218194bf293b790413e0
Reviewed-on: https://skia-review.googlesource.com/57222
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrResourceProvider.cpp b/src/gpu/GrResourceProvider.cpp
index d50bb01..d68a5e6 100644
--- a/src/gpu/GrResourceProvider.cpp
+++ b/src/gpu/GrResourceProvider.cpp
@@ -330,13 +330,17 @@
     size_t bufferSize = patternSize * reps * sizeof(uint16_t);
 
     // This is typically used in GrMeshDrawOps, so we assume kNoPendingIO.
-    GrBuffer* buffer = this->createBuffer(bufferSize, kIndex_GrBufferType, kStatic_GrAccessPattern,
-                                          kNoPendingIO_Flag);
+    sk_sp<GrBuffer> buffer(this->createBuffer(bufferSize, kIndex_GrBufferType,
+                                              kStatic_GrAccessPattern, kNoPendingIO_Flag));
     if (!buffer) {
         return nullptr;
     }
-
-    SkAutoTArray<uint16_t> data(reps * patternSize);
+    uint16_t* data = (uint16_t*) buffer->map();
+    SkAutoTArray<uint16_t> temp;
+    if (!data) {
+        temp.reset(reps * patternSize);
+        data = temp.get();
+    }
     for (int i = 0; i < reps; ++i) {
         int baseIdx = i * patternSize;
         uint16_t baseVert = (uint16_t)(i * vertCount);
@@ -344,14 +348,15 @@
             data[baseIdx+j] = baseVert + pattern[j];
         }
     }
-
-    if (!buffer->updateData(data.get(), bufferSize)) {
-        buffer->unref();
-        return nullptr;
+    if (temp.get()) {
+        if (!buffer->updateData(data, bufferSize)) {
+            return nullptr;
+        }
+    } else {
+        buffer->unmap();
     }
-
-    this->assignUniqueKeyToResource(key, buffer);
-    return buffer;
+    this->assignUniqueKeyToResource(key, buffer.get());
+    return buffer.release();
 }
 
 static constexpr int kMaxQuads = 1 << 12;  // max possible: (1 << 14) - 1;