ports for mac, ios, android, linux, windows

R=djsollen@google.com

Review URL: https://codereview.chromium.org/19787006

git-svn-id: http://skia.googlecode.com/svn/trunk@10239 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/skpdiff/SkDifferentPixelsMetric_opencl.cpp b/experimental/skpdiff/SkDifferentPixelsMetric_opencl.cpp
index 61fb638..f2a02c1 100644
--- a/experimental/skpdiff/SkDifferentPixelsMetric_opencl.cpp
+++ b/experimental/skpdiff/SkDifferentPixelsMetric_opencl.cpp
@@ -22,7 +22,6 @@
     "    int2 coord = (int2)(get_global_id(0), get_global_id(1));               \n"
     "    uint4 baselinePixel = read_imageui(baseline, gInSampler, coord);       \n"
     "    uint4 testPixel = read_imageui(test, gInSampler, coord);               \n"
-    "    int4 pixelCompare = baselinePixel == testPixel;                        \n"
     "    if (baselinePixel.x != testPixel.x ||                                  \n"
     "        baselinePixel.y != testPixel.y ||                                  \n"
     "        baselinePixel.z != testPixel.z ||                                  \n"
@@ -120,9 +119,12 @@
     diff->result *= (double)diff->numDiffPixels;
     diff->result = (1.0 - diff->result);
 
-    diff->poi = SkNEW_ARRAY(SkIPoint, diff->numDiffPixels);
-    clEnqueueReadBuffer(fCommandQueue, diff->poiBuffer, CL_TRUE, 0,
+    // Reading a buffer of size zero can cause issues on some (Mac) OpenCL platforms.
+    if (diff->numDiffPixels > 0) {
+        diff->poi = SkNEW_ARRAY(SkIPoint, diff->numDiffPixels);
+        clEnqueueReadBuffer(fCommandQueue, diff->poiBuffer, CL_TRUE, 0,
                         sizeof(SkIPoint) * diff->numDiffPixels, diff->poi, 0, NULL, NULL);
+    }
 
     // Release all the buffers created
     clReleaseMemObject(diff->poiBuffer);